add(miniflux): custom js for feed count sort controls
This commit is contained in:
32
miniflux_scripts/feed_count_sort_controls.js
Normal file
32
miniflux_scripts/feed_count_sort_controls.js
Normal file
@@ -0,0 +1,32 @@
|
||||
// feed count sort controls
|
||||
(function() {
|
||||
'use strict';
|
||||
if (!window.location.href.match(/\/feeds$/)) return;
|
||||
function parseTotal(feed) {
|
||||
const spans = feed.querySelectorAll('.feed-entries-counter span[aria-hidden="true"]');
|
||||
return spans[3] ? parseInt(spans[3].textContent, 10) : 0;
|
||||
}
|
||||
function sortFeeds(desc) {
|
||||
const feeds = Array.from(document.querySelectorAll('article.item.feed-item'));
|
||||
if (!feeds.length) return;
|
||||
const parent = feeds[0].parentNode;
|
||||
feeds
|
||||
.sort((a, b) => desc
|
||||
? parseTotal(b) - parseTotal(a)
|
||||
: parseTotal(a) - parseTotal(b)
|
||||
)
|
||||
.forEach(f => parent.appendChild(f));
|
||||
}
|
||||
const navList = document.querySelector('nav[aria-label="Feeds Menu"] ul');
|
||||
if (!navList) return;
|
||||
['↑', '↓'].forEach((arrow, idx) => {
|
||||
const li = document.createElement('li');
|
||||
const btn = document.createElement('button');
|
||||
btn.className = 'page-link';
|
||||
btn.type = 'button';
|
||||
btn.textContent = `Entries ${arrow}`;
|
||||
btn.onclick = () => sortFeeds(idx === 1);
|
||||
li.appendChild(btn);
|
||||
navList.appendChild(li);
|
||||
});
|
||||
})();
|
Reference in New Issue
Block a user