hide year headings when all items are hidden

fixes #7
This commit is contained in:
Rhiannon Morris 2020-09-27 01:36:20 +02:00
parent debefa0d3d
commit b9ea7f7bcb
2 changed files with 28 additions and 10 deletions

View file

@ -1,11 +1,11 @@
(function() {
'use strict';
let items;
let reqBoxes;
let excBoxes;
let allBoxes;
let tags;
let itemsByYear;
let showSingles = true;
@ -21,11 +21,19 @@ function updateItems() {
let [reqTags, excTags] = fillSets();
let anyReq = reqTags.size > 0;
for (let item of items) {
let req = tags.get(item).some(x => reqTags.has(x));
let exc = tags.get(item).some(x => excTags.has(x));
for (let [year, items] of itemsByYear) {
let hide = true;
item.hidden = exc || (anyReq && !req);
for (let item of items) {
let req = tags.get(item).some(x => reqTags.has(x));
let exc = tags.get(item).some(x => excTags.has(x));
let hidden = exc || (anyReq && !req);
item.hidden = hidden;
hide &&= hidden;
}
document.getElementById(`marker-${year}`).hidden = hide;
}
}
@ -101,13 +109,20 @@ function useFragment() {
function setup() {
items = Array.from(document.getElementsByClassName('post'));
function inputs(id) {
let iter = document.getElementById(id).getElementsByTagName('input');
return Array.from(iter);
}
let items = Array.from(document.getElementsByClassName('post'));
itemsByYear = new Map;
for (let item of items) {
let year = item.dataset.year;
if (!itemsByYear.has(year)) itemsByYear.set(year, new Set);
itemsByYear.get(year).add(item);
}
reqBoxes = inputs('require');
excBoxes = inputs('exclude');
allBoxes = [...reqBoxes, ...excBoxes];