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 () { '
| ', '', - '', + '', '', ' | ||||
| ' + L.fs_name + ' | ||||
| c | ', 'File Name | ', - 'Size | ' + 'Size | ', + 'Random | ' ]; 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
|---|---|---|---|---|