mirror of https://gitgud.io/fatchan/jschan.git
parent
b5b5c8bdf2
commit
1be5d7615e
6 changed files with 85 additions and 14 deletions
@ -0,0 +1,61 @@ |
|||||||
|
if (isCatalog) { |
||||||
|
window.addEventListener('DOMContentLoaded', (event) => { |
||||||
|
|
||||||
|
const getFilterSelector = (filter) => { |
||||||
|
filter = filter.replace(/["\\]/g, '\\$&').toLowerCase(); |
||||||
|
return `.catalog-tile:not([data-filter*="${filter}"])`; |
||||||
|
} |
||||||
|
const catalogFilter = document.getElementById('catalogfilter'); |
||||||
|
catalogFilter.value = ''; |
||||||
|
const filterCatalog = () => { |
||||||
|
let existingRule; |
||||||
|
let i = 0; |
||||||
|
for (; i < renderSheet[rulesKey].length; i++) { |
||||||
|
if (renderSheet[rulesKey][i].selectorText.startsWith('.catalog-tile:not([data-filter*=')) { |
||||||
|
existingRule = renderSheet[rulesKey][i]; |
||||||
|
break; |
||||||
|
} |
||||||
|
} |
||||||
|
if (catalogFilter.value.length > 0) { |
||||||
|
if (existingRule) { |
||||||
|
existingRule.selectorText = getFilterSelector(catalogFilter.value); |
||||||
|
} else { |
||||||
|
renderSheet.insertRule(getFilterSelector(catalogFilter.value) + ' { display: none; }'); |
||||||
|
} |
||||||
|
} else { |
||||||
|
renderSheet.deleteRule(i); |
||||||
|
} |
||||||
|
} |
||||||
|
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 tiles = document.getElementsByClassName('catalog-tile'); |
||||||
|
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); |
||||||
|
|
||||||
|
}); |
||||||
|
} |
Loading…
Reference in new issue