|
|
@@ -1,7 +1,15 @@
|
|
|
|
|
|
-var _URL = "http://localhost";
|
|
|
+var _ADDRESS = "192.168.0.110";
|
|
|
+//var _URL = "http://localhost";
|
|
|
+var _URL = "http://" + _ADDRESS;
|
|
|
var _PORT = 60535;
|
|
|
|
|
|
+var _fqADDRESS = _ADDRESS + ":" + _PORT;
|
|
|
+
|
|
|
+var BG_COLOR = "#f7f7f7";
|
|
|
+var TEXT_COLOR = "#444444";
|
|
|
+
|
|
|
+
|
|
|
var g_ctx = {
|
|
|
|
|
|
"driver_login_state" : "driver",
|
|
|
@@ -17,6 +25,29 @@ var g_ctx = {
|
|
|
"bulkfare" : "",
|
|
|
"bulkfare_count" : "",
|
|
|
|
|
|
+ "status_text": "",
|
|
|
+ "status_text_w": 0,
|
|
|
+ "status_text_h": 0,
|
|
|
+
|
|
|
+ /*
|
|
|
+ "rule" : {
|
|
|
+ "adult":"CASH-ADULT",
|
|
|
+ "youth":"CASH-YOUTH",
|
|
|
+ "half":"CASH-HALF",
|
|
|
+ "bike":"MISC-BIKE",
|
|
|
+ "wheelchair":"MISC-WHEELCHAIR",
|
|
|
+ "transfer":"MISC-TRANSFER",
|
|
|
+ "interline":"MISC-INTERLINE",
|
|
|
+ "event":"MISC-EVENT",
|
|
|
+ "schoola":"OVR-SCHOOLA",
|
|
|
+ "schoolb":"OVR-SCHOOLB",
|
|
|
+ "schoolc":"OVR-SCHOOLC",
|
|
|
+ "orga":"OVR-ORGA",
|
|
|
+ "orgb":"OVR-ORGB",
|
|
|
+ "orgc":"OVR-ORGC",
|
|
|
+ },
|
|
|
+ */
|
|
|
+
|
|
|
"x": ""
|
|
|
};
|
|
|
|
|
|
@@ -77,9 +108,13 @@ function _api_request(action, param, cb_ok, cb_fail, cb_neterr) {
|
|
|
req.onerror = function() { console.log("network error"); };
|
|
|
|
|
|
try {
|
|
|
- req.open("POST", url, true);
|
|
|
- req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
|
|
|
- req.send(varstr);
|
|
|
+
|
|
|
+ //DEBUG
|
|
|
+ console.log("req, varstr:", varstr);
|
|
|
+
|
|
|
+ req.open("POST", url, true);
|
|
|
+ req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
|
|
|
+ req.send(varstr);
|
|
|
} catch (er) {
|
|
|
console.log(">>>>>>ERROR", er);
|
|
|
}
|
|
|
@@ -266,10 +301,6 @@ function _driver_login(inp) {
|
|
|
else if (uvar == "pin") {
|
|
|
g_ctx.driver_login_state = "driver";
|
|
|
|
|
|
-
|
|
|
- //_verify_driver();
|
|
|
- //_switch_ui("ui_driver", "ui_driververify");
|
|
|
-
|
|
|
_verify_driver();
|
|
|
g_ctx.ui_change_timeoutid = window.setTimeout(function() {
|
|
|
_switch_ui("ui_driververify");
|
|
|
@@ -313,10 +344,12 @@ function _driver_login(inp) {
|
|
|
function _verify_paddle() {
|
|
|
var paddle = g_ctx.paddle;
|
|
|
|
|
|
- _api_request("paddleinput", {"paddle":paddle}, _verify_paddle_ok, _verify_paddle_fail);
|
|
|
+ _api_request("paddleinput", {"paddle":paddle}, _verify_paddle_ack, _verify_paddle_fail);
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
+function _verify_paddle_ack() { console.log("got ack for push paddle message\n"); }
|
|
|
+
|
|
|
function _verify_paddle_ok() { _switch_ui("ui_main"); }
|
|
|
function _verify_paddle_fail() { _switch_ui("ui_paddleunknown"); }
|
|
|
function _paddle_unknown(inp) {
|
|
|
@@ -331,8 +364,8 @@ function _paddle_input(inp) {
|
|
|
|
|
|
if (inp == 'cancel') { _switch_ui('ui_login'); }
|
|
|
else if (inp == 'ok') {
|
|
|
- _verify_paddle();
|
|
|
|
|
|
+ _verify_paddle();
|
|
|
g_ctx.ui_change_timeoutid = window.setTimeout(function() {
|
|
|
_switch_ui("ui_paddleverify");
|
|
|
}, 150);
|
|
|
@@ -365,32 +398,32 @@ function _main_nxt() {
|
|
|
|
|
|
function _fare_adult() {
|
|
|
console.log("fare adult");
|
|
|
- _api_request("fare", {"fare":"adult","count":1});
|
|
|
+ _api_request("fare", {"rule":"CASH-ADULT", "param":"", "fare":"adult","count":1});
|
|
|
}
|
|
|
|
|
|
function _fare_youth() {
|
|
|
console.log("fare youth");
|
|
|
- _api_request("fare", {"fare":"youth","count":1});
|
|
|
+ _api_request("fare", {"rule":"CASH-YOUTH", "param":"", "fare":"youth","count":1});
|
|
|
}
|
|
|
|
|
|
function _fare_half() {
|
|
|
console.log("fare half");
|
|
|
- _api_request("fare", {"fare":"half","count":1});
|
|
|
+ _api_request("fare", {"rule":"CASH-HALF", "param":"", "fare":"half","count":1});
|
|
|
}
|
|
|
|
|
|
function _fare_bike() {
|
|
|
console.log("fare bike");
|
|
|
- _api_request("fare", {"fare":"bike","count":1});
|
|
|
+ _api_request("fare", {"rule":"MISC-BIKE", "param":"", "fare":"bike","count":1});
|
|
|
}
|
|
|
|
|
|
function _fare_wheelchair() {
|
|
|
console.log("fare wheelchair");
|
|
|
- _api_request("fare", {"fare":"wheelchair","count":1});
|
|
|
+ _api_request("fare", {"rule":"MISC-WHEELCHAIR", "param":"", "fare":"wheelchair","count":1});
|
|
|
}
|
|
|
|
|
|
function _fare_transfer() {
|
|
|
console.log("fare transfer");
|
|
|
- _api_request("fare", {"fare":"transfer","count":1});
|
|
|
+ _api_request("fare", {"rule":"MISC-TRANSFER", "param":"", "fare":"transfer","count":1});
|
|
|
}
|
|
|
|
|
|
//-------------
|
|
|
@@ -416,7 +449,7 @@ function _bulkaccept_ok() {
|
|
|
console.log("bulkfare:", g_ctx.bulkfare, ", count:", g_ctx.bulkfare_count);
|
|
|
_switch_ui("ui_main");
|
|
|
|
|
|
- _api_request("fare",{"fare":g_ctx.bulkfare,"count":g_ctx.bulkfare_count});
|
|
|
+ _api_request("fare",{"rule":g_ctx.bulkfare, "param":g_ctx.bulkfare_count.toString(), "fare":g_ctx.bulkfare,"count":g_ctx.bulkfare_count});
|
|
|
}
|
|
|
|
|
|
function _bulkaccept_cancel() {
|
|
|
@@ -463,12 +496,110 @@ function _cb_status_err(e) {
|
|
|
console.log("ERROR: _cb_status_err:", e);
|
|
|
}
|
|
|
|
|
|
+//-------------
|
|
|
+
|
|
|
+function _main_message_replace(msg, bg_color, text_color) {
|
|
|
+ var ele = document.getElementById("ui_main_status");
|
|
|
+ g_ctx.status_text_w = ele.cols;
|
|
|
+ g_ctx.status_text_h = ele.rows;
|
|
|
+
|
|
|
+ bg_color = ((typeof bg_color === "undeinfed") ? BG_COLOR : bg_color);
|
|
|
+ text_color = ((typeof text_color === "undefined") ? TEXT_COLOR : text_color);
|
|
|
+
|
|
|
+ var lines = g_ctx.status_text.split("\n");
|
|
|
+ if (lines.length > g_ctx.status_text_h) {
|
|
|
+ var n = lines.length;
|
|
|
+ lines = lines.slice(n - g_ctx.status_text_h);
|
|
|
+ }
|
|
|
+ for (var i=0; i<lines.length; i++) {
|
|
|
+ lines[i] = lines[i].slice(0,g_ctx.status_text_w);
|
|
|
+ }
|
|
|
+
|
|
|
+ var idx = lines.length-1;
|
|
|
+ if (idx<0) { idx = 0; }
|
|
|
+
|
|
|
+ lines[idx] = msg;
|
|
|
+
|
|
|
+ g_ctx.status_text = lines.join("\n");
|
|
|
+ ele.innerHTML = g_ctx.status_text;
|
|
|
+
|
|
|
+ console.log(">>replace:", msg);
|
|
|
+}
|
|
|
+
|
|
|
+function _main_message_add(msg, bg_color, text_color) {
|
|
|
+ var ele = document.getElementById("ui_main_status");
|
|
|
+ g_ctx.status_text_w = ele.cols;
|
|
|
+ g_ctx.status_text_h = ele.rows;
|
|
|
+
|
|
|
+ bg_color = ((typeof bg_color === "undeinfed") ? BG_COLOR : bg_color);
|
|
|
+ text_color = ((typeof text_color === "undefined") ? TEXT_COLOR : text_color);
|
|
|
+
|
|
|
+ var txt = g_ctx.status_text + "\n" + msg;
|
|
|
+
|
|
|
+ var lines = txt.split("\n");
|
|
|
+ if (lines.length > g_ctx.status_text_h) {
|
|
|
+ var n = lines.length;
|
|
|
+ lines = lines.slice(n - g_ctx.status_text_h);
|
|
|
+ }
|
|
|
+ for (var i=0; i<lines.length; i++) {
|
|
|
+ lines[i] = lines[i].slice(0,g_ctx.status_text_w);
|
|
|
+ }
|
|
|
+
|
|
|
+ g_ctx.status_text = lines.join("\n");
|
|
|
+ ele.innerHTML = g_ctx.status_text;
|
|
|
+
|
|
|
+ console.log(">>add:", msg);
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
//-------------
|
|
|
//-------------
|
|
|
//-------------
|
|
|
|
|
|
+function _ws_process(dat) {
|
|
|
+
|
|
|
+ var tok = dat.split(" ");
|
|
|
+
|
|
|
+ if (tok.length < 2) { return; }
|
|
|
+
|
|
|
+ if (tok[0] == "paddle") {
|
|
|
+ if (tok[1] == "ok") { _verify_paddle_ok(); }
|
|
|
+ else if (tok[1] == "fail") { _verify_paddle_fail(); }
|
|
|
+ else { _verify_paddle_fail(); }
|
|
|
+ }
|
|
|
+
|
|
|
+ else if (tok[0] == "driver_notify") {
|
|
|
+ if (tok.length < 5) {
|
|
|
+ console.log("malformed message: ", dat);
|
|
|
+ }
|
|
|
+ else if (tok[1] == "replace") {
|
|
|
+ _main_message_replace(tok.slice(4).join(" "));
|
|
|
+ }
|
|
|
+ else if (tok[1] == "ok") {
|
|
|
+ _main_message_add(tok.slice(4).join(" "));
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ console.log("unknown message: ", dat);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+function _init_websocket() {
|
|
|
+ var sock = new WebSocket("ws://" + _fqADDRESS);
|
|
|
+ sock.onopen = function(e) { console.log("open", e); }
|
|
|
+ sock.onmessage = function(e) { _ws_process(e.data); }
|
|
|
+ sock.onclose = function(e) { console.log("close", e); }
|
|
|
+ sock.onerror = function(e) { console.log("error", e); }
|
|
|
+}
|
|
|
+
|
|
|
+//-------------
|
|
|
+
|
|
|
function init() {
|
|
|
|
|
|
+ _init_websocket();
|
|
|
+
|
|
|
// login
|
|
|
//
|
|
|
document.getElementById('ui_login_login').onclick = _login;
|
|
|
@@ -521,11 +652,16 @@ function init() {
|
|
|
|
|
|
var bulk_pass = ["adult", "youth", "half", "event", "transfer", "interline",
|
|
|
"schoola", "schoolb", "schoolc", "orga", "orgb", "orgc"];
|
|
|
+ var bulk_rule = ["BULK-CASH-ADULT", "BULK-CASH-YOUTH", "BULK-CASH-HALF",
|
|
|
+ "BULK-MISC-EVENT", "BULK-MISC-TRANSFER", "BULK-MISC-INTERLINE",
|
|
|
+ "BULK-OVR-SCHOOLA", "BULK-OVR-SCHOOLB", "BULK-OVR-SCHOOLC",
|
|
|
+ "BULK-OVR-ORGA", "BULK-OVR-ORGB", "BULK-OVR-ORGC"];
|
|
|
var bulk_pass_name = ["Adult Cash", "Youth Cash", "Half Cash", "Special Event", "Transfer", "Interline",
|
|
|
"School A", "Sschool B", "School C", "Org A", "Org B", "Org C"];
|
|
|
for (var i=0; i<bulk_pass.length; i++) {
|
|
|
var p = bulk_pass[i];
|
|
|
var u = bulk_pass_name[i];
|
|
|
+ var r = bulk_rule[i];
|
|
|
var ele = document.getElementById('ui_bulk_' + p);
|
|
|
ele.onclick = (function(x,y) {
|
|
|
return function() {
|
|
|
@@ -535,7 +671,7 @@ function init() {
|
|
|
var ee = document.getElementById("ui_bulkaccept_faretype");
|
|
|
ee.innerHTML = y;
|
|
|
};
|
|
|
- })(p, u);
|
|
|
+ })(r, u);
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -583,12 +719,18 @@ function init() {
|
|
|
"event", "interline",
|
|
|
"schoola", "schoolb", "schoolc",
|
|
|
"orga", "orgb", "orgc" ];
|
|
|
+ var override_rule = [ "CASH-ADULT", "CASH-YOUTH", "CASH-HALF",
|
|
|
+ "MISC-BIKE", "MISC-WHEELCHAIR", "MISC-TRANSFER",
|
|
|
+ "MISC-EVENT", "MISC-INTERLINE",
|
|
|
+ "OVR-SCHOOLA", "OVR-SCHOOLB", "OVR-SCHOOLC",
|
|
|
+ "OVR-ORGA", "OVR-ORGB", "OVR-ORGC" ];
|
|
|
for (var i=0; i<override_pass.length; i++) {
|
|
|
var p = override_pass[i];
|
|
|
+ var r = override_rule[i];
|
|
|
var ele = document.getElementById("ui_fareoverride_" + p);
|
|
|
- ele.onclick = (function(x) {
|
|
|
- return function() { _api_request("fare", {"fare":x,"count":1}); };
|
|
|
- })(p);
|
|
|
+ ele.onclick = (function(x,y) {
|
|
|
+ return function() { _api_request("fare", {"rule":x,"fare":y,"param":"","count":1}); };
|
|
|
+ })(r,p);
|
|
|
}
|
|
|
|
|
|
|