From ed66265eb34ca53664c5a090f38642134d6edeaa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= Date: Sun, 7 Aug 2022 18:55:11 +0200 Subject: [PATCH] Browser: sort children by weight --- src/Browser.js | 4 ++++ src/addCategories.js | 8 ++++++-- src/customCategory.js | 8 ++++++-- src/domSort.js | 7 +++++++ 4 files changed, 23 insertions(+), 4 deletions(-) create mode 100644 src/domSort.js diff --git a/src/Browser.js b/src/Browser.js index 04b52a62..4dc37a2f 100644 --- a/src/Browser.js +++ b/src/Browser.js @@ -1,6 +1,8 @@ const EventEmitter = require('events') const queryString = require('query-string') +const domSort = require('./domSort') + module.exports = class Browser extends EventEmitter { constructor (id, dom) { super() @@ -16,6 +18,8 @@ module.exports = class Browser extends EventEmitter { hooks.call('browser-' + this.id, this, parameters) this.emit('buildPage', parameters) this.parameters = parameters + + domSort(this.dom) } clear () { diff --git a/src/addCategories.js b/src/addCategories.js index 57f05513..f9ea0184 100644 --- a/src/addCategories.js +++ b/src/addCategories.js @@ -236,12 +236,16 @@ hooks.register('browser-more-categories', (browser, parameters) => { const content = browser.dom if (!Object.keys(parameters).length) { + let block = document.createElement('div') + block.setAttribute('weight', 1) + content.appendChild(block) + let header = document.createElement('h4') header.innerHTML = lang('repositories') - content.appendChild(header) + block.appendChild(header) let div = document.createElement('div') - content.appendChild(div) + block.appendChild(div) addCategoriesList(div, browser, parameters) browser.catchLinks() diff --git a/src/customCategory.js b/src/customCategory.js index fc5e1afd..92abb0a7 100644 --- a/src/customCategory.js +++ b/src/customCategory.js @@ -157,9 +157,13 @@ hooks.register('browser-more-categories', (browser, parameters) => { const content = browser.dom if (!Object.keys(parameters).length) { + let block = document.createElement('div') + block.setAttribute('weight', 0) + content.appendChild(block) + let header = document.createElement('h4') header.innerHTML = lang('customCategory:header') - content.appendChild(header) + block.appendChild(header) let ul = document.createElement('ul') let li = document.createElement('li') @@ -174,7 +178,7 @@ hooks.register('browser-more-categories', (browser, parameters) => { li.appendChild(a) ul.appendChild(li) - content.appendChild(ul) + block.appendChild(ul) } }) diff --git a/src/domSort.js b/src/domSort.js new file mode 100644 index 00000000..647c3cab --- /dev/null +++ b/src/domSort.js @@ -0,0 +1,7 @@ +module.exports = function (dom, attribute='weight') { + const list = Array.from(dom.children).sort( + (a, b) => (a.getAttribute(attribute) || 0) - (b.getAttribute(attribute) || 0) + ) + + list.forEach(el => dom.appendChild(el)) +}