Add nicknames to multi list packages (close #7)
This commit is contained in:
parent
0468b19b6d
commit
943dcd1206
@ -84,14 +84,20 @@ function updateTrackingMultiListStatus() {
|
|||||||
if (codes.length > 0) {
|
if (codes.length > 0) {
|
||||||
$("#tracking-multi-list ul").html("");
|
$("#tracking-multi-list ul").html("");
|
||||||
for (var i = 0; i < codes.length; i++) {
|
for (var i = 0; i < codes.length; i++) {
|
||||||
$("#tracking-multi-list ul").append('<li><div style="cursor: pointer;" class="item-content tracking-code-multi-link noselect" data-trackingcode="' + codes[i] + '" onclick="router.navigate(\'/track/' + codes[i] + '\')">'
|
$("#tracking-multi-list ul").append('<li><div style="cursor: pointer;" class="item-content tracking-code-multi-link noselect" data-trackingcode="' + codes[i].code + '" onclick="router.navigate(\'/track/' + codes[i].code + '\')">'
|
||||||
+ '<div class="item-inner item-cell"><div class="item-row"><div class="item-cell">' + codes[i] + '</div></div>'
|
+ '<div class="item-inner item-cell">'
|
||||||
|
+ (codes[i].nick == "" ? "" : '<div class="item-row"><div class="item-cell"><b>' + codes[i].nick + '</b></div></div>')
|
||||||
|
+ '<div class="item-row"><div class="item-cell">' + codes[i].code + '</div></div>'
|
||||||
+ '<div class="item-row"><div class="item-cell">'
|
+ '<div class="item-row"><div class="item-cell">'
|
||||||
+ '<img src="" class="trackingeventicon tracking-multi-status-icon" /> <span class="tracking-multi-status-text"></span>'
|
+ '<img src="" class="trackingeventicon tracking-multi-status-icon" /> <span class="tracking-multi-status-text"></span>'
|
||||||
+ '</div></div></div></div></li>');
|
+ '</div></div></div></div></li>');
|
||||||
}
|
}
|
||||||
|
var codelist = [];
|
||||||
|
for (var i = 0; i < codes.length; i++) {
|
||||||
|
codelist.push(codes[i].code);
|
||||||
|
}
|
||||||
apirequest(SETTINGS.apis.trackmultiple, {
|
apirequest(SETTINGS.apis.trackmultiple, {
|
||||||
code: codes.join(",")
|
code: codelist.join(",")
|
||||||
}, function (resp) {
|
}, function (resp) {
|
||||||
if (resp.status == "OK") {
|
if (resp.status == "OK") {
|
||||||
for (const code in resp.results) {
|
for (const code in resp.results) {
|
||||||
@ -302,12 +308,23 @@ $("#app").on("contextmenu taphold", ".tracking-code-multi-link", function (evt)
|
|||||||
buttons: [
|
buttons: [
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
text: 'Track',
|
text: 'Open',
|
||||||
bold: true,
|
bold: true,
|
||||||
onClick: function () {
|
onClick: function () {
|
||||||
openTrackingInfoPage(code);
|
openTrackingInfoPage(code);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
text: 'Add/Change Nickname',
|
||||||
|
onClick: function () {
|
||||||
|
app.dialog.prompt("Set a nickname for " + code, "Package Name", function (input) {
|
||||||
|
addNicknameToTrackingMultiList(code, htmlEntities(input));
|
||||||
|
updateTrackingMultiListStatus();
|
||||||
|
}, function () {
|
||||||
|
// canceled
|
||||||
|
}, "");
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
text: 'Remove from list',
|
text: 'Remove from list',
|
||||||
onClick: function () {
|
onClick: function () {
|
||||||
@ -426,44 +443,79 @@ function removeFromTrackingHistory(code) {
|
|||||||
|
|
||||||
|
|
||||||
function getTrackingMultiList() {
|
function getTrackingMultiList() {
|
||||||
var history = getStorage("multitrackingcodes");
|
var multilist = getStorage("multitrackingcodes");
|
||||||
if (history == "false" || history == "null" || history == null) {
|
|
||||||
|
if (multilist == "false" || multilist == "null" || multilist == null) {
|
||||||
return [];
|
return [];
|
||||||
} else {
|
} else {
|
||||||
return JSON.parse(history);
|
var multilistjson = JSON.parse(multilist);
|
||||||
|
|
||||||
|
if (multilistjson.length > 0) {
|
||||||
|
if (typeof multilistjson[0] == "object") {
|
||||||
|
return multilistjson;
|
||||||
|
} else {
|
||||||
|
// Old version is just string array, new version is array of objects,
|
||||||
|
// do a conversion
|
||||||
|
// TODO: Remove this code once everyone's updated to this version, since it's not efficient to do typeof every time
|
||||||
|
var newmultilist = [];
|
||||||
|
for (var i = 0; i < multilistjson.length; i++) {
|
||||||
|
newmultilist.push({
|
||||||
|
code: multilistjson[i],
|
||||||
|
nick: ""
|
||||||
|
});
|
||||||
|
}
|
||||||
|
setStorage("multitrackingcodes", JSON.stringify(newmultilist));
|
||||||
|
return newmultilist;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function addToTrackingMultiList(code) {
|
function addToTrackingMultiList(code, nickname) {
|
||||||
var history = getTrackingMultiList();
|
if (typeof nickname != "string") {
|
||||||
|
nickname = "";
|
||||||
|
}
|
||||||
|
var multilist = getTrackingMultiList();
|
||||||
|
|
||||||
for (var i = 0; i < history.length; i++) {
|
for (var i = 0; i < multilist.length; i++) {
|
||||||
if (history[i] == code) {
|
if (multilist[i].code == code) {
|
||||||
history.splice(i, 1);
|
// Already in list, remove so we can add with the new nick if set
|
||||||
|
multilist.splice(i, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Add the code back to the list so it's at the top
|
// Add the code to the list
|
||||||
history.push(code);
|
multilist.push({
|
||||||
|
code: code,
|
||||||
|
nick: nickname
|
||||||
|
});
|
||||||
|
|
||||||
while (history.length > 10) {
|
setStorage("multitrackingcodes", JSON.stringify(multilist));
|
||||||
history.shift();
|
}
|
||||||
|
|
||||||
|
function addNicknameToTrackingMultiList(code, nickname) {
|
||||||
|
var multilist = getTrackingMultiList();
|
||||||
|
|
||||||
|
for (var i = 0; i < multilist.length; i++) {
|
||||||
|
if (multilist[i].code == code) {
|
||||||
|
multilist[i].nick = nickname;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
setStorage("multitrackingcodes", JSON.stringify(history));
|
|
||||||
|
setStorage("multitrackingcodes", JSON.stringify(multilist));
|
||||||
}
|
}
|
||||||
|
|
||||||
function removeFromTrackingMultiList(code) {
|
function removeFromTrackingMultiList(code) {
|
||||||
var history = getTrackingMultiList();
|
var multilist = getTrackingMultiList();
|
||||||
|
|
||||||
for (var i = 0; i < history.length; i++) {
|
for (var i = 0; i < multilist.length; i++) {
|
||||||
if (history[i] == code) {
|
if (multilist[i].code == code) {
|
||||||
history.splice(i, 1);
|
multilist.splice(i, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
while (history.length > 10) {
|
setStorage("multitrackingcodes", JSON.stringify(multilist));
|
||||||
history.shift();
|
|
||||||
}
|
|
||||||
setStorage("multitrackingcodes", JSON.stringify(history));
|
|
||||||
|
|
||||||
$(".tracking-code-multi-link[data-trackingcode=\"" + code + "\"]").parent("li").remove();
|
$(".tracking-code-multi-link[data-trackingcode=\"" + code + "\"]").parent("li").remove();
|
||||||
}
|
}
|
@ -326,3 +326,13 @@ function colorThemeNameToHex(theme) {
|
|||||||
|
|
||||||
return colors[theme.toLowerCase()];
|
return colors[theme.toLowerCase()];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Make an untrusted string safe for inlining in HTML by replacing dangerous characters with HTML entities.
|
||||||
|
* Credit: https://stackoverflow.com/a/14130005 CC-BY-SA 3.0
|
||||||
|
* @param {String} str
|
||||||
|
* @returns {String}
|
||||||
|
*/
|
||||||
|
function htmlEntities(str) {
|
||||||
|
return String(str).replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"');
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user