diff --git a/copyparty/web/browser.html b/copyparty/web/browser.html
index 260c4e2b..32025d96 100644
--- a/copyparty/web/browser.html
+++ b/copyparty/web/browser.html
@@ -67,17 +67,17 @@
|
- File Name |
- Size |
+ File Name |
+ Size |
{%- for k in taglist %}
{%- if k.startswith('.') %}
- {{ k[1:] }} |
+ {{ k[1:] }} |
{%- else %}
- {{ k[0]|upper }}{{ k[1:] }} |
+ {{ k[0]|upper }}{{ k[1:] }} |
{%- endif %}
{%- endfor %}
- T |
- Date |
+ T |
+ Date |
diff --git a/copyparty/web/browser.js b/copyparty/web/browser.js
index 5e14bdc3..76adfd2b 100644
--- a/copyparty/web/browser.js
+++ b/copyparty/web/browser.js
@@ -1004,7 +1004,33 @@ var treectl = (function () {
}
ebi('srv_info').innerHTML = '' + res.srvinf + '';
- var nodes = res.dirs.concat(res.files);
+ var nodes = res.dirs.concat(res.files),
+ sopts = jread('fsort', []);
+
+ try {
+ for (var a = sopts.length - 1; a >= 0; a--) {
+ var name = sopts[a][0], rev = sopts[a][1], typ = sopts[a][2];
+ if (name.indexOf('tags/') == -1) {
+ nodes.sort(function (v1, v2) {
+ if (!v1[name]) return -1 * rev;
+ if (!v2[name]) return 1 * rev;
+ return rev * (typ == 'int' ? (v1[name] - v2[name]) : (v1[name].localeCompare(v2[name])));
+ });
+ }
+ else {
+ name = name.slice(5);
+ nodes.sort(function (v1, v2) {
+ if (!v1.tags[name]) return -1 * rev;
+ if (!v2.tags[name]) return 1 * rev;
+ return rev * (typ == 'int' ? (v1.tags[name] - v2.tags[name]) : (v1.tags[name].localeCompare(v2.tags[name])));
+ });
+ }
+ }
+ }
+ catch (ex) {
+ console.log("failed to apply sort config: " + ex);
+ }
+
var top = this.top;
var html = mk_files_header(res.taglist);
html.push('');
@@ -1198,23 +1224,23 @@ function mk_files_header(taglist) {
var html = [
'',
' | ',
- 'File Name | ',
- 'Size | '
+ 'File Name | ',
+ 'Size | '
];
for (var a = 0; a < taglist.length; a++) {
var tag = taglist[a];
var c1 = tag.slice(0, 1).toUpperCase();
tag = c1 + tag.slice(1);
if (c1 == '.')
- tag = '' + tag.slice(1);
+ tag = ' | ' + tag.slice(1);
else
- tag = ' | ' + tag;
+ tag = ' | ' + tag;
html.push(tag + ' | ');
}
html = html.concat([
- 'T | ',
- 'Date | ',
+ 'T | ',
+ 'Date | ',
'',
]);
return html;
diff --git a/copyparty/web/util.js b/copyparty/web/util.js
index c519c3ba..721dbb58 100644
--- a/copyparty/web/util.js
+++ b/copyparty/web/util.js
@@ -100,6 +100,27 @@ function sortTable(table, col) {
th[a].className = th[a].className.replace(/ *sort-?1 */, " ");
th[col].className += ' sort' + reverse;
var stype = th[col].getAttribute('sort');
+ try {
+ var nrules = [], rules = jread("fsort", []);
+ rules.unshift([th[col].getAttribute('name'), reverse, stype || '']);
+ for (var a = 0; a < rules.length; a++) {
+ var add = true;
+ for (var b = 0; b < a; b++)
+ if (rules[a][0] == rules[b][0])
+ add = false;
+
+ if (add)
+ nrules.push(rules[a]);
+
+ if (nrules.length >= 10)
+ break;
+ }
+ jwrite("fsort", nrules);
+ }
+ catch (ex) {
+ console.log("failed to persist sort rules, resetting: " + ex);
+ jwrite("fsort", null);
+ }
var vl = [];
for (var a = 0; a < tr.length; a++) {
var cell = tr[a].cells[col];