profoundjs
Version:
Profound.js Framework and Server
93 lines (86 loc) • 2.91 kB
JavaScript
const oe = {}; // namespace for order entry application
oe.forceOffline = false;
oe.ctlName = "OrdCtl";
oe.sflName = "OrdSfl";
oe.localDisplayPath = "profoundui/userdata/dspf/OrdEntryD.json";
oe.offlineModeText = "Offline Mode";
oe.count = 0;
oe.headerData = {};
// show offline order entry screen
oe.show = function() {
const gridData = [];
for (let line = 1; line <= 10; line++) {
gridData.push({ "Line": line });
}
const data = {
"Mode": oe.offlineModeText
};
data[oe.sflName] = gridData;
for (const varName in oe.headerData) {
data[varName] = oe.headerData[varName];
}
pui.show({
path: oe.localDisplayPath,
format: oe.ctlName,
data,
handler: function(response) {
if (response["btnExit"] == "1") {
getObj("pui").innerHTML = "Exiting order entry...";
if (navigator["app"] != null && navigator["app"]["exitApp"] != null) { // Check for exitApp api in PhoneGap
navigator["app"]["exitApp"]();
}
}
else {
const order = {};
for (let varName in response) {
if (varName == "aid") continue;
let fmt = oe.sflName.toUpperCase();
const value = response[varName];
if (varName.indexOf(".") == -1) {
oe.headerData[varName] = value; // save header data, so it can be redisplayed
fmt = oe.ctlName.toUpperCase();
}
if (varName.indexOf(".rrn") >= 0) varName = "rrn";
else varName = varName.toUpperCase();
order[fmt + "." + varName] = value; // save info to local storage in the same format we post to the RPG program
}
order[oe.ctlName.toUpperCase() + ".AUTO"] = "1"; // this flag indicates auto-submitted order
let orders = localStorage["orders"];
if (orders == null || orders == "") orders = [];
else orders = JSON.parse(orders);
orders.push(order);
localStorage["orders"] = JSON.stringify(orders);
oe.show();
alert("Order saved locally to your device.");
}
}
});
};
// this function is assigned to the onload event of the order entry screen
// it will synchrnize any orders stored in local storage when we're reconnected to the server again
oe.onload = function() {
if (get("Mode") == oe.offlineModeText) return;
if (oe.forceOffline) {
oe.show();
return;
}
let orders = localStorage["orders"];
if (orders == null || orders == "") orders = [];
else orders = JSON.parse(orders);
if (orders.length == 0) {
if (get("Saved") == "1") {
alert("Order submitted to server.");
}
return;
}
const order = orders.splice(0, 1)[0];
oe.count++;
localStorage["orders"] = JSON.stringify(orders);
pui.submitResponse(order);
if (orders.length == 0) {
alert(oe.count + " locally stored order(s) successfully submitted to server.");
}
};
pui.onoffline = function() {
oe.show();
};