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