diff --git a/copyparty/web/browser.js b/copyparty/web/browser.js index 3710db9d..6f6e6aa7 100644 --- a/copyparty/web/browser.js +++ b/copyparty/web/browser.js @@ -4255,9 +4255,11 @@ function sortfiles(nodes) { if (!nodes.length) return nodes; - var sopts = jread('fsort', jcp(dsort)), + var sopts = jread('fsort'), dir1st = sread('dir1st') !== '0'; + sopts = sopts && sopts.length ? sopts : jcp(dsort); + var collator = !clgot(ebi('nsort'), 'on') ? null : new Intl.Collator([], {numeric: true}); diff --git a/copyparty/web/md.js b/copyparty/web/md.js index d255b2c4..d8901a9a 100644 --- a/copyparty/web/md.js +++ b/copyparty/web/md.js @@ -17,8 +17,8 @@ var chromedbg = function () { console.log(arguments); } var dbg = function () { }; // replace dbg with the real deal here or in the console: -// dbg = chromedbg -// dbg = console.log +// dbg = chromedbg; +// dbg = console.log; // dodge browser issues diff --git a/copyparty/web/util.js b/copyparty/web/util.js index 67d88b95..3be39d7f 100644 --- a/copyparty/web/util.js +++ b/copyparty/web/util.js @@ -578,7 +578,9 @@ function yscroll() { function showsort(tab) { var v, vn, v1, v2, th = tab.tHead, - sopts = jread('fsort', jcp(dsort)); + sopts = jread('fsort'); + + sopts = sopts && sopts.length ? sopts : dsort; th && (th = th.rows[0]) && (th = th.cells); @@ -979,11 +981,33 @@ function apop(arr, v) { } -function jcp(obj) { +function jcp1(obj) { return JSON.parse(JSON.stringify(obj)); } +function jcp2(src) { + if (Array.isArray(src)) { + var ret = []; + for (var a = 0; a < src.length; ++a) { + var sub = src[a]; + ret.push((sub === null) ? sub : (sub instanceof Date) ? new Date(sub.valueOf()) : (typeof sub === 'object') ? jcp2(sub) : sub); + } + } else { + var ret = {}; + for (var key in src) { + var sub = src[key]; + ret[key] = sub === null ? sub : (sub instanceof Date) ? new Date(sub.valueOf()) : (typeof sub === 'object') ? jcp2(sub) : sub; + } + } + return ret; +}; + + +// jcp1 50% faster on android-chrome, jcp2 7x everywhere else +var jcp = MOBILE && CHROME ? jcp1 : jcp2; + + function sdrop(key) { try { STG.removeItem(key);