1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-03 16:10:26 +00:00

[shared dir view] sort dirents by name/size/time (#4421)

This commit is contained in:
llj
2020-01-31 19:01:08 +08:00
committed by GitHub
parent 1aac2950b4
commit 424c3d4db8
2 changed files with 114 additions and 6 deletions

View File

@@ -968,6 +968,76 @@ export const Utils = {
return items;
},
// sort dirents in shared folder
sortDirentsInSharedDir: function(items, sortBy, sortOrder) {
const _this = this;
let comparator;
switch (`${sortBy}-${sortOrder}`) {
case 'name-asc':
comparator = function(a, b) {
let result;
if (a.is_dir) {
result = _this.compareTwoWord(a.folder_name, b.folder_name);
} else {
result = _this.compareTwoWord(a.file_name, b.file_name);
}
return result;
};
break;
case 'name-desc':
comparator = function(a, b) {
let result;
if (a.is_dir) {
result = _this.compareTwoWord(a.folder_name, b.folder_name);
} else {
result = _this.compareTwoWord(a.file_name, b.file_name);
}
return -result;
};
break;
case 'time-asc':
comparator = function(a, b) {
return a.last_modified < b.last_modified ? -1 : 1;
};
break;
case 'time-desc':
comparator = function(a, b) {
return a.last_modified < b.last_modified ? 1 : -1;
};
break;
case 'size-asc':
comparator = function(a, b) {
if (a.is_dir) {
return 0;
} else {
return a.size < b.size ? -1 : 1;
}
};
break;
case 'size-desc':
comparator = function(a, b) {
if (a.is_dir) {
return 0;
} else {
return a.size < b.size ? 1 : -1;
}
};
break;
}
items.sort((a, b) => {
if (a.is_dir && !b.is_dir) {
return -1;
} else if (!a.is_dir && b.is_dir) {
return 1;
} else {
return comparator(a, b);
}
});
return items;
},
sortTraffic(items, sortBy, sortOrder) {
let comparator;
switch(sortOrder) {