From 0f22647c9c04f26eef09856834b205b0903338ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kasper=20Rynning-T=C3=B8nnesen?= Date: Sat, 12 May 2018 15:14:55 +0200 Subject: [PATCH] Sorting channels before adding to selects on adminpanel --- .../assets/admin/authenticated/js/main.js | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/server/public/assets/admin/authenticated/js/main.js b/server/public/assets/admin/authenticated/js/main.js index 6cf7d61b..fc85248c 100644 --- a/server/public/assets/admin/authenticated/js/main.js +++ b/server/public/assets/admin/authenticated/js/main.js @@ -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 = ''; var output_delete = ''; 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");