Warn user when adding an address noted as vacant/on hold/etc, close #22

master
Skylar Ittner 5 years ago
parent af5edd83ec
commit 7f215b850c

@ -11,6 +11,44 @@ if (inStorage("notes")) {
setStorage("notes", "[]"); setStorage("notes", "[]");
} }
function findNote(number, street) {
for (i in notes) {
if (notes[i].number == number && notes[i].street.toUpperCase() == street.toUpperCase()) {
return notes[i];
}
}
return null;
}
function isDeliverable(number, street) {
var note = findNote(number, street);
var ok = true;
var reason = "";
if (note != null) {
for (t in note.toggles) {
if (!note.toggles.hasOwnProperty(t)) {
continue;
}
for (tt in SETTINGS.routenotetoggles) {
if (SETTINGS.routenotetoggles[tt].id == t) {
if (SETTINGS.routenotetoggles[tt].preventsDelivery == true && note.toggles[t] == true) {
ok = false;
reason = SETTINGS.routenotetoggles[tt].reason;
}
}
}
}
}
return {
ok: ok,
reason: reason
};
}
function saveNote(id) { function saveNote(id) {
var exists = false; var exists = false;
var index = -1; var index = -1;

@ -376,63 +376,82 @@ function addPackageByAddress(number, street, citystate, type, callback) {
}, 750); }, 750);
} }
if (type == "express") { var prelookup = function () {
if (getStorage("deadlinealarm_minutes") == null) { if (type == "express") {
setStorage("deadlinealarm_minutes", 20); if (getStorage("deadlinealarm_minutes") == null) {
} setStorage("deadlinealarm_minutes", 20);
var minutes = getStorage("deadlinealarm_minutes"); }
app.dialog.create({ var minutes = getStorage("deadlinealarm_minutes");
title: 'Express Item', app.dialog.create({
text: 'Set a reminder for ' + minutes + ' minutes before:', title: 'Express Item',
buttons: [ text: 'Set a reminder for ' + minutes + ' minutes before:',
{ buttons: [
text: '10:30 AM', {
close: true text: '10:30 AM',
}, close: true
{ },
text: '12:00 PM', {
close: true text: '12:00 PM',
}, close: true
{ },
text: '3:00 PM', {
close: true text: '3:00 PM',
}, close: true
{ },
text: "No reminder", {
color: "red", text: "No reminder",
close: true color: "red",
} close: true
], }
verticalButtons: true, ],
onClick: function (dialog, index) { verticalButtons: true,
deadline = new Date(); onClick: function (dialog, index) {
switch (index) { deadline = new Date();
case 0: switch (index) {
deadline.setMinutes(30); case 0:
deadline.setHours(10); deadline.setMinutes(30);
break; deadline.setHours(10);
case 1: break;
deadline.setMinutes(00); case 1:
deadline.setHours(12); deadline.setMinutes(00);
break; deadline.setHours(12);
case 2: break;
deadline.setMinutes(00); case 2:
deadline.setHours(12 + 3); deadline.setMinutes(00);
break; deadline.setHours(12 + 3);
case 3: break;
default: case 3:
deadline = false; default:
break; deadline = false;
} break;
}
if (deadline != false) { if (deadline != false) {
deadline = deadline.getTime() / 1000; deadline = deadline.getTime() / 1000;
}
ajaxlookup();
} }
ajaxlookup(); }).open();
} } else {
}).open(); ajaxlookup();
}
}
var deliverable = isDeliverable(number, street);
if (deliverable.ok) {
prelookup();
} else { } else {
ajaxlookup(); app.dialog.confirm(
"A route note says this address is " + deliverable.reason + ". Add item anyways?",
"Confirm",
function () {
prelookup();
},
function () {
// cancel
}
);
} }
} }

@ -305,15 +305,21 @@ var SETTINGS = {
routenotetoggles: [ routenotetoggles: [
{ {
name: "Vacant", name: "Vacant",
id: "vacant" id: "vacant",
preventsDelivery: true,
reason: "vacant"
}, },
{ {
name: "Outside delivery radius", name: "Outside delivery radius",
id: "undeliverable" id: "undeliverable",
preventsDelivery: true,
reason: "too far from the route"
}, },
{ {
name: "On hold", name: "On hold",
id: "hold" id: "hold",
preventsDelivery: true,
reason: "on hold"
} }
], ],
synckeyblacklist: [ synckeyblacklist: [

Loading…
Cancel
Save