From 0f257c93088095d12832bab97b0358415ec1e5b7 Mon Sep 17 00:00:00 2001 From: ed Date: Tue, 3 Dec 2024 01:46:56 +0000 Subject: [PATCH] embed sort-order in gallery/media URLs so anyone who clicks the link sees the files in the same order --- copyparty/web/browser.js | 42 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 40 insertions(+), 2 deletions(-) diff --git a/copyparty/web/browser.js b/copyparty/web/browser.js index 6f6e6aa7..a91a41f0 100644 --- a/copyparty/web/browser.js +++ b/copyparty/web/browser.js @@ -2185,6 +2185,29 @@ if (window.og_fn) { } +(function() { + var args = ('' + hash0).split(/,sort/g); + if (args.length < 2) + return; + + var ret = []; + for (var a = 1; a < args.length; a++) { + var t = '', n = 1, z = args[a].split(',')[0]; + if (z.startsWith('-')) { + z = z.slice(1); + n = -1; + } + if (z == "sz" || z.indexOf('/.') + 1) + t = "int"; + ret.push([z, n, t]); + } + var cmp = jread('fsort', []); + if (JSON.stringify(ret.slice(0, 2) != + JSON.stringify(cmp.slice(0, 2)))) + jwrite('fsort', ret); +})(); + + var mpl = (function () { var have_mctl = 'mediaSession' in navigator && window.MediaMetadata; @@ -3942,7 +3965,7 @@ function play(tid, is_ev, seek) { var o = ebi(oid); o.setAttribute('id', 'thx_js'); if (mpl.aplay) - sethash(oid); + sethash(oid + getsort()); o.setAttribute('id', oid); } @@ -4251,6 +4274,19 @@ function read_dsort(txt) { read_dsort(dsort); +function getsort() { + var ret = '', + sopts = jread('fsort'); + + sopts = sopts && sopts.length ? sopts : dsort; + + for (var a = 0; a < Math.min(2, sopts.length); a++) + ret += ',sort' + (sopts[a][1] < 0 ? '-' : '') + sopts[a][0]; + + return ret; +} + + function sortfiles(nodes) { if (!nodes.length) return nodes; @@ -4278,6 +4314,8 @@ function sortfiles(nodes) { if (!name) continue; + name = name.toLowerCase(); + if (name == 'ts') typ = 'int'; @@ -6205,7 +6243,7 @@ var thegrid = (function () { esc(uricom_dec(h.split('/').pop())) + ''; }, onChange: function (i) { - sethash('g' + r.bbox[i].imageElement.getAttribute('ref')); + sethash('g' + r.bbox[i].imageElement.getAttribute('ref') + getsort()); } }); r.bbox = br[0][0];