mirror of
https://github.com/9001/copyparty.git
synced 2025-08-18 01:22:13 -06:00
remember sort order
This commit is contained in:
parent
bcee8a4934
commit
b4acb24f6a
|
@ -67,17 +67,17 @@
|
|||
<thead>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th><span>File Name</span></th>
|
||||
<th sort="int"><span>Size</span></th>
|
||||
<th name="href"><span>File Name</span></th>
|
||||
<th name="sz" sort="int"><span>Size</span></th>
|
||||
{%- for k in taglist %}
|
||||
{%- if k.startswith('.') %}
|
||||
<th sort="int"><span>{{ k[1:] }}</span></th>
|
||||
<th name="tags/{{ k }}" sort="int"><span>{{ k[1:] }}</span></th>
|
||||
{%- else %}
|
||||
<th><span>{{ k[0]|upper }}{{ k[1:] }}</span></th>
|
||||
<th name="tags/{{ k }}"><span>{{ k[0]|upper }}{{ k[1:] }}</span></th>
|
||||
{%- endif %}
|
||||
{%- endfor %}
|
||||
<th><span>T</span></th>
|
||||
<th><span>Date</span></th>
|
||||
<th name="ext"><span>T</span></th>
|
||||
<th name="ts"><span>Date</span></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
|
|
@ -1004,7 +1004,33 @@ var treectl = (function () {
|
|||
}
|
||||
|
||||
ebi('srv_info').innerHTML = '<span>' + res.srvinf + '</span>';
|
||||
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('<tbody>');
|
||||
|
@ -1198,23 +1224,23 @@ function mk_files_header(taglist) {
|
|||
var html = [
|
||||
'<thead>',
|
||||
'<th></th>',
|
||||
'<th><span>File Name</span></th>',
|
||||
'<th sort="int"><span>Size</span></th>'
|
||||
'<th name="href"><span>File Name</span></th>',
|
||||
'<th name="sz" sort="int"><span>Size</span></th>'
|
||||
];
|
||||
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 = '<th sort="int"><span>' + tag.slice(1);
|
||||
tag = '<th name="tags/' + tag + '" sort="int"><span>' + tag.slice(1);
|
||||
else
|
||||
tag = '<th><span>' + tag;
|
||||
tag = '<th name="tags/' + tag + '"><span>' + tag;
|
||||
|
||||
html.push(tag + '</span></th>');
|
||||
}
|
||||
html = html.concat([
|
||||
'<th><span>T</span></th>',
|
||||
'<th><span>Date</span></th>',
|
||||
'<th name="ext"><span>T</span></th>',
|
||||
'<th name="ts"><span>Date</span></th>',
|
||||
'</thead>',
|
||||
]);
|
||||
return html;
|
||||
|
|
|
@ -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];
|
||||
|
|
Loading…
Reference in a new issue