From f6e183dcbf599e4c177900bd98afc37fb9bd07be Mon Sep 17 00:00:00 2001 From: evergreen Date: Sun, 18 Jan 2026 12:32:35 -0700 Subject: [PATCH] Add random sorting --- copyparty/web/browser.js | 7 +++++-- copyparty/web/util.js | 27 +++++++++++++++++++++------ scripts/make-sfx.sh | 2 +- 3 files changed, 27 insertions(+), 9 deletions(-) diff --git a/copyparty/web/browser.js b/copyparty/web/browser.js index fd206caa..b71b06ee 100644 --- a/copyparty/web/browser.js +++ b/copyparty/web/browser.js @@ -487,6 +487,7 @@ if (1) "gt_sz": "size", "gt_ts": "date", "gt_ext": "type", + "gt_rand": "random", "gt_c1": "truncate filenames more (show less)", "gt_c2": "truncate filenames less (show more)", @@ -3900,7 +3901,7 @@ var fileman = (function () { '', '', '', @@ -5378,6 +5379,7 @@ var thegrid = (function () { '' + L.gt_sz + ' ' + '' + L.gt_ts + ' ' + '' + L.gt_ext + '' + + '' + L.gt_rand + '' + '' + '
' ); @@ -7952,7 +7954,8 @@ function mk_files_header(taglist) { '', '', '', - '' + '', + '' ]; for (var a = 0; a < taglist.length; a++) { var tag = taglist[a], diff --git a/copyparty/web/util.js b/copyparty/web/util.js index ec896d74..022f80e2 100644 --- a/copyparty/web/util.js +++ b/copyparty/web/util.js @@ -719,15 +719,30 @@ function sortTable(table, col, cb) { vl.push([v, a]); } - if (stype == 'int') + if (stype == 'random') { + // Fisher-Yates shuffle for true randomization + for (var i = vl.length - 1; i > 0; i--) { + var j = Math.floor(Math.random() * (i + 1)); + var temp = vl[i]; + vl[i] = vl[j]; + vl[j] = temp; + } + } + else if (stype == 'int') { vl.sort(st_cmp_num); - else if (ENATSORT) + if (reverse < 0) + vl.reverse(); + } + else if (ENATSORT) { vl.sort(st_cmp_nat); - else + if (reverse < 0) + vl.reverse(); + } + else { vl.sort(st_cmp_gen); - - if (reverse < 0) - vl.reverse(); + if (reverse < 0) + vl.reverse(); + } if (sread('dir1st') !== '0') { var r1 = [], r2 = []; diff --git a/scripts/make-sfx.sh b/scripts/make-sfx.sh index 770080d3..33533ef0 100755 --- a/scripts/make-sfx.sh +++ b/scripts/make-sfx.sh @@ -322,7 +322,7 @@ necho() { exit 1 } rm "$f1" - cp -p "$f2" "$f1" + cp -rp "$f2" "$f1" ); done # resolve symlinks on windows
', '', - '', + '', '', '
' + L.fs_name + '
cFile NameSizeSizeRandom