// example usage: // // api_req({"ui_function":"manage_card.find", "api_function":"CardInfo", "data":[ ["action","search"],["mag_token","370000000007015"]]}) // function api_req(ctx) { var xhr; xhr = new XMLHttpRequest(); if (!xhr) { return false; } var param_val = []; for (var idx=0; idx 0) { return s.split(" ")[0]; } return s; } function _create_pass_row(dat) { var pass_table = document.getElementById("ui.manage_card.list_passes"); var _cb = ""; while (pass_table.firstChild) { pass_table.removeChild(pass_table.lastChild); } var row = document.createElement("div"); row.classList.add("row"); row.classList.add("rowpop"); row.classList.add("row-shade"); var fields_width = [1,1,1,1,2,2,2,2]; //var fields = ["x", "Type", "Original", "Remain", "Exp.", "Issued", "First Used", "Last Used"]; var fields = ['', "Type", "Original", "Remain", "Exp.", "Issued", "First Used", "Last Used"]; for (var idx=0; idx= 0) { pass_type = "NRide"; pass_orig = pass_data["nrides_orig"]; pass_remain = pass_data["nrides_remain"]; pass_exp = ""; } else if (pass_rule.search(/NDAY/) >= 0) { pass_type = "NDay"; pass_orig = pass_data["nday_orig"]; pass_remain = ""; pass_exp = pass_data["nday_expiration"]; } else { pass_type = "Other"; } var pass_firstused = ""; var pass_lastused = ""; if ( (typeof pass_data["firstused"] !== "undefined") && (pass_data["firstused"]) ) { pass_firstused = pass_data["firstused"]; } if ( (typeof pass_data["lastused"] !== "undefined") && (pass_data["lastused"]) ) { pass_lastused = pass_data["lastused"]; } row = document.createElement("div"); row.classList.add("row"); row.classList.add("rowpop"); if ((idx%2)==1) { row.classList.add("row-shade"); } //var cell = document.createElement("div"); //cell.innerHTML = "x"; var cell = document.createElement("input"); cell.setAttribute('type', 'checkbox'); cell.setAttribute('value', ''); cell.setAttribute('id', "ui.manage_card.cb_" + idx + "_pass"); cell.classList.add("col-" + fields_width[0]); row.appendChild(cell); //cell.classList.add("col-" + fields_width[0]); //row.appendChild(cell); cell = document.createElement("div"); cell.innerHTML = pass_type; cell.classList.add("col-" + fields_width[1]); row.appendChild(cell); cell = document.createElement("div"); cell.innerHTML = pass_orig; cell.classList.add("col-" + fields_width[2]); row.appendChild(cell); cell = document.createElement("div"); cell.innerHTML = pass_remain; cell.classList.add("col-" + fields_width[3]); row.appendChild(cell); cell = document.createElement("div"); //cell.innerHTML = pass_exp; cell.innerHTML = _date_only(pass_exp); cell.classList.add("col-" + fields_width[4]); row.appendChild(cell); cell = document.createElement("div"); //cell.innerHTML = pass_data["issued"]; cell.innerHTML = _date_only(pass_data["issued"]); cell.classList.add("col-" + fields_width[5]); row.appendChild(cell); cell = document.createElement("div"); //cell.innerHTML = pass_firstused; cell.innerHTML = _date_only(pass_firstused); cell.classList.add("col-" + fields_width[6]); row.appendChild(cell); cell = document.createElement("div"); cell.innerHTML = pass_lastused; cell.classList.add("col-" + fields_width[7]); row.appendChild(cell); cell = document.createElement("div"); cell.innerHTML = passid; cell.setAttribute('id', "ui.manage_card.row_" + idx + "_pass"); cell.style.display = "none"; row.appendChild(cell); pass_table.appendChild(row); } } function manage_card_find_fill(data) { var fields = [ "logical_card_id", "group", "mag_token", "rfid_token"]; var user_fields = [ "userid", "username", "first_name", "last_name", "email", "phone", "address", "city", "state", "zip", "group" ]; console.log("manage_card_find_fill:", data); for (var idx=0; idx" + cardid + ""; cell.classList.add("col-4"); row.appendChild(cell); cell = document.createElement("div"); cell.innerHTML = "" + magid + ""; cell.classList.add("col-4"); row.appendChild(cell); cell = document.createElement("div"); cell.innerHTML = "" + rfid + ""; cell.classList.add("col-4"); row.appendChild(cell); card_table.appendChild(row); console.log("card", idx, card_data[idx]["logical_card_id"], card_data[idx]["mag_token"], card_data[idx]["rfid_token"] ); } } window.history.replaceState({}, document.title, "/manage_user"); } // -------------------------------------- // -------------------------------------- // -------------------------------------- // -------------------------------------- // -------------------------------------- function add_card_block() { var pass = [ "none", "nride", "nday", "other" ]; var mag_token = _get_input_field("ui.add_card_block.mag_token"); var rfid_pfx = _get_input_field("ui.add_card_block.rfid_prefix"); var rfid_val = _get_input_field("ui.add_card_block.rfid_value"); var group_id = _get_select_id("ui.add_card_block.group"); var count = _get_input_field("ui.add_card_block.count") var rfid_token = ""; if (rfid_pfx && (rfid_pfx.length > 0) && rfid_val && (rfid_val.length > 0)) { rfid_token = "26:" + rfid_pfx + ":" + rfid_val; } if ((mag_token.length==0) && (rfid_token.length==0)) { update_message("ui.add_card_block.message", "error", "Please provide Magstripe or RFID"); return; } if (count == "") { update_message("ui.add_card_block.message", "error", "Count must be positive"); return; } update_message("ui.add_card_block.message", "success", ""); var dat = { "api_function":"AddCardBlock", "ui_function":"add_card_block.add", "data": [ ["group_id",group_id], ["count",count] ] }; if (mag_token.length > 0) { if (mag_token.split(":").length == 1) { mag_token = "2:" + mag_token; } dat.data.push(["mag_token", mag_token]); } if (rfid_token.length > 0) { if (rfid_token.split(":").length < 2) { rfid_token = "26:" + rfid_token; } dat.data.push(["rfid_token", rfid_token]); } var pass_kind = "none"; for (var ii=0; ii 0) { nday = pass_nday_other; } dat.data.push(["pass_class" , 'NDAY']); dat.data.push(["pass_rule", rule]); dat.data.push(["pass_nday_orig", nday]); } else if (pass_kind === "nride") { var pass_nride_type = _get_select("ui.add_card_block.pass_nride_type"); var pass_nride_region = _get_select("ui.add_card_block.pass_nride_region"); var pass_nride_quantity = _get_input_field("ui.add_card_block.pass_nride_quantity"); var pass_nride_other = _get_input_field("ui.add_card_block.pass_nride_other"); var rule = 'TEST-ORG-NRIDE'; var nride = pass_nride_quantity; if (pass_nride_other && pass_nride_other.length > 0) { nride = pass_nride_other; } dat.data.push(["pass_class", 'NRIDE']); dat.data.push(["pass_rule", rule]); dat.data.push(["pass_nrides_orig", nride]); dat.data.push(["pass_nrides_remain", nride]); } console.log("add_card_block: sending", dat); api_req(dat); } // -------------------------------------- // -------------------------------------- // -------------------------------------- // -------------------------------------- // -------------------------------------- function recycle_card() { var fields = [ "mag_token", "rfid_token_a", "rfid_token_b", "pass_nride_other", "pass_nday_other" ]; var pass = [ "none", "nride", "nday", "other" ]; var h_in = {}; for (var idx=0; idx 0)) { h_in[field] = val; } } var rfid_prefx = "26"; if (("rfid_token_a" in h_in) && ("rfid_token_b" in h_in)) { h_in["rfid_token"] = rfid_prefix + ":" + h_in["rfid_token_a"] + ":" + h_in["rfid_token_b"]; } var pass_kind = "none"; for (var ii=0; ii>>", dat); api_req(dat); } function recycle_card_radio(radio_button) { var _rid = ["pass_none", "pass_nride", "pass_nday", "pass_other"]; for (var ii=0; ii<_rid.length; ii++) { var ele = document.getElementById("ui.recycle_card." + _rid[ii]); ele.checked = false; } if (radio_button === "none") { var ele = document.getElementById("ui.recycle_card.pass_none"); ele.checked = true; } else if (radio_button === "nride") { var ele = document.getElementById("ui.recycle_card.pass_nride"); ele.checked = true; } else if (radio_button === "nday") { var ele = document.getElementById("ui.recycle_card.pass_nday"); ele.checked = true; } else if (radio_button === "other") { var ele = document.getElementById("ui.recycle_card.pass_other"); ele.checked = true; } } // -------------------------------------- // -------------------------------------- // -------------------------------------- // -------------------------------------- // -------------------------------------- function reissue_card() { var fields = [ "source_magstripe", "source_rfid_a", "source_rfid_b", "dest_magstripe", "dest_rfid_a", "dest_rfid_b" ]; var data = []; for (var idx=0; idx 0) { data.push([ field, val ]); } } console.log("REISSUE (not implemented):", data); var dat = { "api_function":"Reissue", "ui_function":"reissue.update", "data": [ ["source_logical_card_id",cardid], ["source_mag_token","..."], ["source_rfid_token","..."], ["source_group","..."], ["destination_mag_token","..."], ["destination_rfid_token","..."] ["destination_group","..."] ]}; //api_req(dat); } function reissue_card_fill(card_data) { if (typeof card_data === "undefined") { return; } if ( (!("cards" in card_data)) || (card_data.cards.length==0)) { return; } var card = card_data.cards[0]; if ("mag_token" in card) { _fill_input_field("ui.reissue_card.source_magstripe", card["mag_token"]); } if ("rfid_token" in card) { var tok = card["rfid_token"].split(":"); var rfid_a = "", rfid_b = ""; if (tok.length >= 3) { rfid_a = tok[1]; rfid_b = tok[2]; } _fill_input_field("ui.reissue_card.source_rfid_a", rfid_a); _fill_input_field("ui.reissue_card.source_rfid_b", rfid_b); } if ("group" in card) { } } // -------------------------------------- // -------------------------------------- // -------------------------------------- // -------------------------------------- // -------------------------------------- function ui_search(search_type) { var txt = _get_input_field( "ui.search." + search_type); console.log(">>>", search_type, txt); var dat = { "api_function":"Search", "ui_function":"ui_search.update", "data": [ ["search_type", search_type], ["search_string", txt] ]}; api_req(dat); } function ui_search_fill(data) { } // -------------------------------------- // -------------------------------------- // -------------------------------------- // -------------------------------------- // -------------------------------------- function manage_card_redirect_manage_user() { var userid = _get_input_field("ui.manage_card.userid"); _redirect( "manage_user?" + "action=get&userid=" + userid); } function manage_card_reissue() { var cardid = _get_input_field("ui.manage_card.logical_card_id"); _redirect( "reissue_card?" + "action=get&logical_card_id=" + cardid); } function manage_card_add_pass(pass_type) { //var cardid = _get_input_field("ui.manage_card.logical_card_id"); console.log("manage_card_add_pass:", cardid, pass_type); var dat = { "api_function":"Pass", "ui_function":"manage_card.update", "data": [ ["logical_card_id",cardid], ["nrides_orig", 3], ["nrides_remain", 2], ["nday_orig", 5], ["rule", "ORIG-NRIDE"] ]}; api_req(dat); } function manage_card_add_pass_nride() { var cardid = _get_input_field("ui.manage_card.logical_card_id"); var nrides_orig = _get_input_field("ui.manage_card.pass_nride_other"); if (nrides_orig.length == 0) { nrides_orig = _get_select("ui.manage_card.pass_nride_orig"); } var rule = "ORG"; rule += "-" + _get_select("ui.manage_card.pass_nride_type"); rule += "-" + _get_select("ui.manage_card.pass_nride_region"); var api_data = { "api_function":"Pass", "ui_function":"manage_card.update", "data" : [ ["action","add"], ["logical_card_id" , cardid], ["nrides_orig" , nrides_orig], ["nrides_remain" , nrides_orig], ["rule" , rule] ] }; //DEBUG console.log(">>nride++", api_data); api_req(api_data); } function manage_card_add_pass_nday() { var cardid = _get_input_field("ui.manage_card.logical_card_id"); var nday_orig = _get_input_field("ui.manage_card.pass_nday_other"); if (nday_orig.length == 0) { nday_orig = _get_select("ui.manage_card.pass_nday_orig"); } var rule = "ORG"; rule += "-" + _get_select("ui.manage_card.pass_nday_type"); rule += "-" + _get_select("ui.manage_card.pass_nday_region"); var api_data = { "api_function":"Pass", "ui_function":"manage_card.update", "data" : [ ["action","add"], ["logical_card_id" , cardid], ["nday_orig" , nday_orig], ["rule" , rule] ] }; //DEBUG console.log(">>nday++", api_data); api_req(api_data); } function manage_card_add_pass_other() { var cardid = _get_input_field("ui.manage_card.logical_card_id"); var ui_ele = document.getElementById("ui.manage_card.pass_other"); var rule = ui_ele.options[ui_ele.selectedIndex].id; var api_data = { "api_function":"Pass", "ui_function":"manage_card.update", "data" : [ ["action","add"], ["logical_card_id" , cardid], ["rule" , rule] ] }; //DEBUG console.log(">>other++", api_data); api_req(api_data); } function manage_card_delete_pass() { var cardid = _get_input_field("ui.manage_card.logical_card_id"); var ele = document.getElementById("ui.manage_card.list_passes"); var n = ele.children.length; n-=1; for (var ii=0; ii