// 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_pending_showload(qid) { var ele = document.getElementById("ui.process.process"); ele.style.display = 'block'; } function ui_pending_hideload(qid) { var ele = document.getElementById("ui.process.process"); ele.style.display = 'none'; } function ui_pending_process() { var ele = document.getElementById("ui.pending.org_card_order_queue_id"); var qid = ele.innerHTML; console.log(">>>", qid); var dat = { "api_function":"Pending", "ui_function":"pending.processed", "data": [ ["action", "process"], ["org_card_order_queue_id", qid] ]}; api_req(dat); } function ui_pending_load(qid) { _redirect( "process_pending_card?org_card_order_queue_id=" + qid); } function _html_pending_card(qid, cardid, magid, rfid, idx) { idx = ((typeof idx === "undefined") ? 0 : idx); magid = ((typeof magid === "undeifned") ? "" : (magid ? magid : "")) rfid = ((typeof rfid === "undeifned") ? "" : (rfid ? rfid : "")) var row, cell; row = document.createElement("div"); row.classList.add("row"); row.classList.add("rowpop"); if ((idx % 2) == 0) { row.classList.add("row-shade"); } /*
*/ cell = document.createElement("div"); cell.innerHTML = ""; cell.classList.add("col-3"); row.appendChild(cell); cell = document.createElement("div"); cell.innerHTML = "" + cardid + ""; cell.classList.add("col-3"); row.appendChild(cell); cell = document.createElement("div"); cell.innerHTML = "" + magid + ""; cell.classList.add("col-3"); row.appendChild(cell); cell = document.createElement("div"); cell.innerHTML = "" + rfid + ""; cell.classList.add("col-3"); row.appendChild(cell); return row; } function _html_pass(data, idx) { idx = ((typeof idx === "undefined") ? 0 : idx); var row, cell; row = document.createElement("div"); row.classList.add("row"); row.classList.add("rowpop"); if ((idx % 2) == 0) { row.classList.add("row-shade"); } var pass_type = ""; var pass_val = ''; var pass_rule = ''; if ("rule" in data) { pass_rule = data.rule; if (data.rule.match(/NRIDE/)) { pass_type = "NRide"; pass_val = data.nrides_remain; } else if (data.rule.match(/NDAY/)) { pass_type = "NDay"; pass_val = data.nday_orig; } else { pass_type = "Other"; } } cell = document.createElement("div"); cell.innerHTML = pass_type; cell.classList.add("col-4"); row.appendChild(cell); cell = document.createElement("div"); cell.innerHTML = pass_val; cell.classList.add("col-4"); row.appendChild(cell); cell = document.createElement("div"); cell.innerHTML = pass_rule; cell.classList.add("col-4"); row.appendChild(cell); return row; } function ui_pending_clear() { console.log("ui_pending_clear:"); var ui_pfx = "ui.pending."; var card_fields = [ "mag_token", "rfid_token", "logical_card_id", "username", "first_name", "last_name", "email", "phone", "address", "city", "state", "zip", "shipping_name", "shipping_address", "shipping_city", "shipping_state", "shipping_zip" ]; _fill_input_field(ui_pfx + "org_card_order_queue_id", ""); 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); return row; } function _html_user_row(user_info, idx) { idx = ((typeof idx === "undefined") ? 0 : idx); var row, cell; var userid = user_info["userid"]; var username = ""; if (("username" in user_info) && (user_info["username"])) { username = user_info["username"]; } var first_name = ""; if (("first_name" in user_info) && (user_info["first_name"])) { first_name = user_info["first_name"]; } var last_name = ""; if (("last_name" in user_info) && (user_info["last_name"])) { last_name = user_info["last_name"]; } row = document.createElement("div"); row.classList.add("row"); row.classList.add("rowpop"); if ((idx % 2) == 1) { row.classList.add("row-shade"); } cell = document.createElement("div"); cell.innerHTML = "" + userid + ""; cell.classList.add("col-4"); row.appendChild(cell); cell = document.createElement("div"); cell.innerHTML = "" + username + ""; cell.classList.add("col-4"); row.appendChild(cell); cell = document.createElement("div"); cell.innerHTML = "" + first_name + " " + last_name + ""; cell.classList.add("col-4"); row.appendChild(cell); return row; } function _html_admin_row(admin_info, idx) { idx = ((typeof idx === "undefined") ? 0 : idx); var row, cell; var userid = admin_info["userid"]; var username = ""; if (("username" in admin_info) && (admin_info["username"])) { username = admin_info["username"]; } var group_id = ""; if (("group_id" in admin_info) && (admin_info["group_id"])) { group_id = admin_info["group_id"]; } row = document.createElement("div"); row.classList.add("row"); row.classList.add("rowpop"); if ((idx % 2) == 1) { row.classList.add("row-shade"); } cell = document.createElement("div"); cell.innerHTML = "" + userid + ""; cell.classList.add("col-4"); row.appendChild(cell); cell = document.createElement("div"); cell.innerHTML = "" + username + ""; cell.classList.add("col-4"); row.appendChild(cell); cell = document.createElement("div"); cell.innerHTML = "" + group_id + ""; cell.classList.add("col-4"); row.appendChild(cell); return row; } function ui_search_fill(data) { var result_table = document.getElementById("ui.search.results"); while (result_table.firstChild) { result_table.removeChild(result_table.lastChild); } var row, col, cell, a; var query_data = data.data; for (var idx=0; idx>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