mirror of https://gitgud.io/fatchan/jschan.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
1.6 KiB
53 lines
1.6 KiB
/* global renderSheet rulesKey isCatalog */
|
|
if (isCatalog) {
|
|
window.addEventListener('DOMContentLoaded', () => {
|
|
|
|
const getFilterSelector = (filter) => {
|
|
filter = filter.replace(/["\\]/g, '\\$&').toLowerCase();
|
|
return `.catalog-tile:not([data-filter*="${filter}"])`;
|
|
};
|
|
const catalogFilter = document.getElementById('catalogfilter');
|
|
catalogFilter.value = '';
|
|
const filterCatalog = () => {
|
|
for (let i = 0; i < renderSheet[rulesKey].length; i++) {
|
|
if (renderSheet[rulesKey][i].selectorText.startsWith('.catalog-tile:not([data-filter*=')) {
|
|
renderSheet.deleteRule(i);
|
|
break;
|
|
}
|
|
}
|
|
if (catalogFilter.value.length > 0) {
|
|
renderSheet.insertRule(getFilterSelector(catalogFilter.value) + ' { display: none; }');
|
|
}
|
|
};
|
|
catalogFilter.addEventListener('input', filterCatalog, false);
|
|
|
|
const sorts = {
|
|
date: (a, b) => {
|
|
//date newest first
|
|
return new Date(b.dataset.date) - new Date(a.dataset.date);
|
|
},
|
|
bump: (a, b) => {
|
|
//bump date most recent first
|
|
return a.dataset.bump - b.dataset.bump;
|
|
},
|
|
replies: (a, b) => {
|
|
//replies most first
|
|
return b.dataset.replies - a.dataset.replies;
|
|
},
|
|
};
|
|
const tiles = document.getElementsByClassName('catalog-tile');
|
|
const catalogSort = document.getElementById('catalogsort');
|
|
catalogSort.value = '';
|
|
const sortCatalog = (mode) => {
|
|
console.log('sorting catalog', mode);
|
|
const tilesArray = Array.from(tiles);
|
|
tilesArray
|
|
.sort(sorts[mode] || (() => 1))
|
|
.forEach((tile, index) => {
|
|
tile.style.order = index;
|
|
});
|
|
};
|
|
catalogSort.addEventListener('change', (e) => { sortCatalog(e.target.value); }, false);
|
|
|
|
});
|
|
}
|
|
|