Sorting channels before adding to selects on adminpanel

This commit is contained in:
Kasper Rynning-Tønnesen
2018-05-12 15:14:55 +02:00
parent 0a73c922c3
commit 0f22647c9c

View File

@@ -136,6 +136,10 @@ function loaded() {
type: "GET",
url: "/api/lists",
success: function(response){
response = response.sort(predicate({
name: '_id',
reverse: false
}));
var output_pinned = '<option value="" disabled selected>Channels</option>';
var output_delete = '<option value="" disabled selected>Channels</option>';
for(var x = 0; x < response.length; x++){
@@ -600,4 +604,63 @@ $(document).on("submit", "#delete_userpass", function(e){
})
});
function predicate() {
var fields = [],
n_fields = arguments.length,
field, name, cmp;
var default_cmp = function (a, b) {
if(a == undefined) a = 0;
if(b == undefined) b = 0;
if (a === b) return 0;
return a < b ? -1 : 1;
},
getCmpFunc = function (primer, reverse) {
var dfc = default_cmp,
// closer in scope
cmp = default_cmp;
if (primer) {
cmp = function (a, b) {
return dfc(primer(a), primer(b));
};
}
if (reverse) {
return function (a, b) {
return -1 * cmp(a, b);
};
}
return cmp;
};
// preprocess sorting options
for (var i = 0; i < n_fields; i++) {
field = arguments[i];
if (typeof field === 'string') {
name = field;
cmp = default_cmp;
} else {
name = field.name;
cmp = getCmpFunc(field.primer, field.reverse);
}
fields.push({
name: name,
cmp: cmp
});
}
// final comparison function
return function (A, B) {
var name, result;
for (var i = 0; i < n_fields; i++) {
result = 0;
field = fields[i];
name = field.name;
result = field.cmp(A[name], B[name]);
if (result !== 0) break;
}
return result;
};
}
socket.emit("get_spread");