From 8d1fdb070e5ed9910a3fce7d649d0a803fd7e73d Mon Sep 17 00:00:00 2001 From: ulrich Date: Wed, 27 Jan 2021 13:23:27 +0000 Subject: [PATCH] Sortierung Dateiliste --- web/ui2/js/app.js | 208 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 208 insertions(+), 0 deletions(-) diff --git a/web/ui2/js/app.js b/web/ui2/js/app.js index 003c7e7..595ea4b 100644 --- a/web/ui2/js/app.js +++ b/web/ui2/js/app.js @@ -24,6 +24,8 @@ this.cutCopySrcDir; this.cutCopyFiles; this.fm_slideshow = false; + this.listOrder = 'asc'; + this.listCol = 'name'; this.dateien; this.cache = {}; // mustache template cache @@ -500,6 +502,7 @@ var elem = document.querySelector('#dateien'); elem.innerHTML = html; self.addEvtListener('.datei-zeile', 'click', self.fm_dateiwahl); + self.addEvtListener('.col-hdr', 'click', self.fm_set_sort); }); } }; @@ -790,6 +793,186 @@ suedDiv.classList.remove('sued-open'); suedDiv.style.height = '0'; }; + + /* + function descending(a, b) + { + if (a < b) + { + return 1; + } + + if (a > b) + { + return -1; + } + + return 0; + } + */ + + // FileRef Vergleicher + + this.name_vergleicher_asc = function(a, b) { + if (a.fileName() > b.fileName()) + { + return 1; + } + + if (a.fileName() < b.fileName()) + { + return -1; + } + + return 0; + }; + + this.name_vergleicher_desc = function(a, b) { + //console.log('name_vergleicher_desc - a.fileName: ' + + // a.fileName() + ', b.fileName: ' + b.fileName()); + if (a.fileName() < b.fileName()) + { + return 1; + } + + if (a.fileName() > b.fileName()) + { + return -1; + } + + return 0; + }; + + // groesse fileSize, art fr.mimetype, geaendert fileDate + + this.type_vergleicher_asc = function(a, b) { + if (a.fr.mimetype > b.fr.mimetype) + { + return 1; + } + + if (a.fr.mimetype < b.fr.mimetype) + { + return -1; + } + + return 0; + }; + + this.type_vergleicher_desc = function(a, b) { + //console.log('name_vergleicher_desc - a.fileName: ' + + // a.fileName() + ', b.fileName: ' + b.fileName()); + if (a.fr.mimetype < b.fr.mimetype) + { + return 1; + } + + if (a.fr.mimetype > b.fr.mimetype) + { + return -1; + } + + return 0; + }; + + this.size_vergleicher_asc = function(a, b) { + if (a.fileSize() > b.fileSize()) + { + return 1; + } + + if (a.fileSize() < b.fileSize()) + { + return -1; + } + + return 0; + }; + + this.size_vergleicher_desc = function(a, b) { + //console.log('name_vergleicher_desc - a.fileName: ' + + // a.fileName() + ', b.fileName: ' + b.fileName()); + if (a.fileSize() < b.fileSize()) + { + return 1; + } + + if (a.fileSize() > b.fileSize()) + { + return -1; + } + + return 0; + }; + + this.date_vergleicher_asc = function(a, b) { + if (a.fileDate() > b.fileDate()) + { + return 1; + } + + if (a.fileDate() < b.fileDate()) + { + return -1; + } + + return 0; + }; + + this.date_vergleicher_desc = function(a, b) { + //console.log('name_vergleicher_desc - a.fileName: ' + + // a.fileName() + ', b.fileName: ' + b.fileName()); + if (a.fileDate() < b.fileDate()) + { + return 1; + } + + if (a.fileDate() > b.fileDate()) + { + return -1; + } + + return 0; + }; + + this.fm_toggle_order = function () { + if(self.listOrder === 'asc') { + self.listOrder = 'desc'; + } else { + self.listOrder = 'asc'; + } + }; + + this.fm_set_sort = function(event) { + var t = event.target; + if(t.classList.contains('col-f-name')) { + if(self.listCol === 'name') { + self.fm_toggle_order(); + } else { + self.listCol = 'name'; + } + } else if(t.classList.contains('col-f-size')) { + if(self.listCol === 'size') { + self.fm_toggle_order(); + } else { + self.listCol = 'size'; + } + } else if(t.classList.contains('col-f-type')) { + if(self.listCol === 'type') { + self.fm_toggle_order(); + } else { + self.listCol = 'type'; + } + } else if(t.classList.contains('col-f-date')) { + if(self.listCol === 'date') { + self.fm_toggle_order(); + } else { + self.listCol = 'date'; + } + } + //console.log('fm_set_sort col ' + self.listCol + ', order ' + self.listOrder); + self.fm_get_list(self.pfad); + }; /* --------- Dateifunktionen Ende ---------- */ @@ -810,8 +993,33 @@ } else { files.push(new FileRef(resp.List[0].FileRef)); } + //console.log('fm_get_list col ' + self.listCol + ', order ' + self.listOrder); + if(self.listOrder === 'asc') { + //console.log('fm_get_list order asc'); + if(self.listCol === 'name') { + files.sort(self.name_vergleicher_asc); + } else if(self.listCol === 'type') { + files.sort(self.type_vergleicher_asc); + } else if(self.listCol === 'date') { + files.sort(self.date_vergleicher_asc); + } else if(self.listCol === 'size') { + files.sort(self.size_vergleicher_asc); + } + } else { + //console.log('fm_get_list order desc'); + if(self.listCol === 'name') { + files.sort(self.name_vergleicher_desc); + } else if(self.listCol === 'type') { + files.sort(self.type_vergleicher_desc); + } else if(self.listCol === 'date') { + files.sort(self.date_vergleicher_desc); + } else if(self.listCol === 'size') { + files.sort(self.size_vergleicher_desc); + } + } var fl = new FileList(files); self.fm_render_list(fl); + } else { // #dateien leeren var elem = document.querySelector("#dateien"); -- Gitblit v1.9.3