const instead of let where possible
This commit is contained in:
parent
0de54d15d4
commit
b2e2db77dd
3 changed files with 39 additions and 41 deletions
|
@ -18,30 +18,30 @@ function fillSets(): [Set<string>, Set<string>] {
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateItems() {
|
function updateItems() {
|
||||||
let [reqTags, excTags] = fillSets();
|
const [reqTags, excTags] = fillSets();
|
||||||
let anyReq = reqTags.size > 0;
|
const anyReq = reqTags.size > 0;
|
||||||
|
|
||||||
for (let [year, items] of itemsByYear) {
|
for (const [year, items] of itemsByYear) {
|
||||||
let hide = true;
|
let hide = true;
|
||||||
|
|
||||||
for (let item of items) {
|
for (const item of items) {
|
||||||
let req = tags.get(item)?.some(x => reqTags.has(x)) ?? false;
|
const req = tags.get(item)?.some(x => reqTags.has(x)) ?? false;
|
||||||
let exc = tags.get(item)?.some(x => excTags.has(x)) ?? false;
|
const exc = tags.get(item)?.some(x => excTags.has(x)) ?? false;
|
||||||
let hidden = exc || (anyReq && !req);
|
const hidden = exc || (anyReq && !req);
|
||||||
|
|
||||||
item.hidden = hidden;
|
item.hidden = hidden;
|
||||||
hide &&= hidden;
|
hide &&= hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
let marker = document.getElementById(`marker-${year}`);
|
const marker = document.getElementById(`marker-${year}`);
|
||||||
if (marker !== null) marker.hidden = hide;
|
if (marker !== null) marker.hidden = hide;
|
||||||
}
|
}
|
||||||
|
|
||||||
function disp(pfx: string, tags: Iterable<string>) {
|
function disp(pfx: string, tags: Iterable<string>) {
|
||||||
return [...tags].map(x => pfx + x).join('\u2003'); // em space
|
return [...tags].map(x => pfx + x).join('\u2003'); // em space
|
||||||
}
|
}
|
||||||
let plus = disp('+\u2009', Array.from(reqTags)); // thin space
|
const plus = disp('+\u2009', reqTags); // thin space
|
||||||
let minus = disp('-\u2009', Array.from(excTags));
|
const minus = disp('-\u2009', excTags);
|
||||||
document.getElementById('filters-details')!.dataset.filters =
|
document.getElementById('filters-details')!.dataset.filters =
|
||||||
`${plus}\u2003${minus}`.trim();
|
`${plus}\u2003${minus}`.trim();
|
||||||
}
|
}
|
||||||
|
@ -61,7 +61,7 @@ function converseId(id: string) {
|
||||||
|
|
||||||
function toggle(checkbox: HTMLInputElement) {
|
function toggle(checkbox: HTMLInputElement) {
|
||||||
if (checkbox.checked) {
|
if (checkbox.checked) {
|
||||||
let converse = document.getElementById(converseId(checkbox.id)) as HTMLInputElement;
|
const converse = document.getElementById(converseId(checkbox.id)) as HTMLInputElement;
|
||||||
converse.checked = false;
|
converse.checked = false;
|
||||||
}
|
}
|
||||||
update();
|
update();
|
||||||
|
@ -81,10 +81,10 @@ function clear(e: Event) {
|
||||||
function toggleSingles(e: Event) {
|
function toggleSingles(e: Event) {
|
||||||
showSingles = !showSingles;
|
showSingles = !showSingles;
|
||||||
|
|
||||||
let elems = Array.from(document.querySelectorAll('.filterlist li'));
|
const elems = Array.from(document.querySelectorAll('.filterlist li')) as HTMLElement[];
|
||||||
for (let li of elems) {
|
for (const li of elems) {
|
||||||
let countStr = li.querySelector('label')?.dataset.count;
|
const countStr = li.querySelector('label')?.dataset.count;
|
||||||
let count = countStr ? +countStr : 0;
|
const count = countStr ? +countStr : 0;
|
||||||
if (count <= 1 && li instanceof HTMLElement) {
|
if (count <= 1 && li instanceof HTMLElement) {
|
||||||
li.hidden = !showSingles;
|
li.hidden = !showSingles;
|
||||||
}
|
}
|
||||||
|
@ -95,8 +95,8 @@ function toggleSingles(e: Event) {
|
||||||
|
|
||||||
|
|
||||||
function makeFragment() {
|
function makeFragment() {
|
||||||
let allBoxesArr = Array.from(allBoxes);
|
const allBoxesArr = Array.from(allBoxes);
|
||||||
let ids = allBoxesArr.filter(b => b.checked).map(b => b.id);
|
const ids = allBoxesArr.filter(b => b.checked).map(b => b.id);
|
||||||
if (ids.length == 0) {
|
if (ids.length == 0) {
|
||||||
return '#all';
|
return '#all';
|
||||||
} else if (allBoxesArr.every(b => b.checked == b.defaultChecked)) {
|
} else if (allBoxesArr.every(b => b.checked == b.defaultChecked)) {
|
||||||
|
@ -107,8 +107,8 @@ function makeFragment() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function useFragment() {
|
function useFragment() {
|
||||||
let frag = decodeURIComponent(location.hash).replace(/^#/, '');
|
const frag = decodeURIComponent(location.hash).replace(/^#/, '');
|
||||||
let details = document.getElementById('filters-details') as HTMLDetailsElement;
|
const details = document.getElementById('filters-details') as HTMLDetailsElement;
|
||||||
|
|
||||||
if (!frag) {
|
if (!frag) {
|
||||||
clearForm();
|
clearForm();
|
||||||
|
@ -116,8 +116,8 @@ function useFragment() {
|
||||||
allBoxes.forEach(b => b.checked = false);
|
allBoxes.forEach(b => b.checked = false);
|
||||||
details.open = false;
|
details.open = false;
|
||||||
} else {
|
} else {
|
||||||
let set = new Set(frag.split(';'));
|
const set = new Set(frag.split(';'));
|
||||||
let re = /^(require|exclude)_|hide_filters/;
|
const re = /^(require|exclude)_|hide_filters/;
|
||||||
if (Array.from(set).every(x => re.test(x))) {
|
if (Array.from(set).every(x => re.test(x))) {
|
||||||
allBoxes.forEach(b => b.checked = set.has(b.id));
|
allBoxes.forEach(b => b.checked = set.has(b.id));
|
||||||
details.open = !frag.match(/hide_filters|example\b/);
|
details.open = !frag.match(/hide_filters|example\b/);
|
||||||
|
@ -130,12 +130,12 @@ function useFragment() {
|
||||||
|
|
||||||
function sortFilters(cmp: (a: Node, b: Node) => number) {
|
function sortFilters(cmp: (a: Node, b: Node) => number) {
|
||||||
function sort1(id: string) {
|
function sort1(id: string) {
|
||||||
let elt = document.getElementById(id);
|
const elt = document.getElementById(id);
|
||||||
if (elt === null) return;
|
if (elt === null) return;
|
||||||
|
|
||||||
let children = Array.from(elt.childNodes);
|
const children = Array.from(elt.childNodes);
|
||||||
children.sort(cmp);
|
children.sort(cmp);
|
||||||
for (let c of children) {
|
for (const c of children) {
|
||||||
elt.removeChild(c);
|
elt.removeChild(c);
|
||||||
elt.appendChild(c);
|
elt.appendChild(c);
|
||||||
}
|
}
|
||||||
|
@ -175,15 +175,15 @@ function sortFiltersUses(e: Event) {
|
||||||
|
|
||||||
function setup() {
|
function setup() {
|
||||||
function inputs(id: string): Boxes {
|
function inputs(id: string): Boxes {
|
||||||
let iter = document.getElementById(id)!.getElementsByTagName('input');
|
const iter = document.getElementById(id)!.getElementsByTagName('input');
|
||||||
return new Set(Array.from(iter));
|
return new Set(Array.from(iter));
|
||||||
}
|
}
|
||||||
|
|
||||||
let items = Array.from(document.getElementsByClassName('post')) as HTMLElement[];
|
const items = Array.from(document.getElementsByClassName('post')) as HTMLElement[];
|
||||||
|
|
||||||
itemsByYear = new Map;
|
itemsByYear = new Map;
|
||||||
for (let item of items) {
|
for (const item of items) {
|
||||||
let year = item.dataset.year;
|
const year = item.dataset.year;
|
||||||
if (year !== undefined) {
|
if (year !== undefined) {
|
||||||
if (!itemsByYear.has(year)) {
|
if (!itemsByYear.has(year)) {
|
||||||
itemsByYear.set(year, new Set([item]));
|
itemsByYear.set(year, new Set([item]));
|
||||||
|
|
|
@ -5,7 +5,7 @@ function alreadyYes() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function dismiss() {
|
function dismiss() {
|
||||||
let dialog = document.getElementById('nsfw-dialog')!;
|
const dialog = document.getElementById('nsfw-dialog')!;
|
||||||
dialog.parentElement?.removeChild(dialog);
|
dialog.parentElement?.removeChild(dialog);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@ let mainlink: HTMLAnchorElement;
|
||||||
let altButtons: HTMLInputElement[];
|
let altButtons: HTMLInputElement[];
|
||||||
let skipAll: HTMLInputElement;
|
let skipAll: HTMLInputElement;
|
||||||
|
|
||||||
let opened: Set<string> = new Set;
|
const opened: Set<string> = new Set;
|
||||||
|
|
||||||
function openCW(id: string | null, caption: HTMLElement | null,
|
function openCW(id: string | null, caption: HTMLElement | null,
|
||||||
focusLink = false) {
|
focusLink = false) {
|
||||||
|
@ -27,13 +27,11 @@ function setImage(id: string | null,
|
||||||
src: string,
|
src: string,
|
||||||
href: string,
|
href: string,
|
||||||
cw: string) {
|
cw: string) {
|
||||||
let caption = document.getElementById('cw');
|
const caption = document.getElementById('cw');
|
||||||
let newCaption: HTMLElement | null = null;
|
const checked = skipAll ? skipAll.checked : false;
|
||||||
|
|
||||||
let checked = skipAll ? skipAll.checked : false;
|
|
||||||
|
|
||||||
if (!checked && !opened.has(id) && cw) {
|
if (!checked && !opened.has(id) && cw) {
|
||||||
let template = document.getElementById('cw-template') as HTMLTemplateElement;
|
const template = document.getElementById('cw-template') as HTMLTemplateElement;
|
||||||
newCaption = template.content.firstElementChild!.cloneNode(true) as HTMLElement;
|
newCaption = template.content.firstElementChild!.cloneNode(true) as HTMLElement;
|
||||||
newCaption.querySelector('#cw-text')!.innerHTML = cw;
|
newCaption.querySelector('#cw-text')!.innerHTML = cw;
|
||||||
addCWListeners(id, newCaption);
|
addCWListeners(id, newCaption);
|
||||||
|
@ -62,9 +60,9 @@ function activateButton(button: HTMLInputElement, doPush = true): void {
|
||||||
function useFragment(firstLoad = false): void {
|
function useFragment(firstLoad = false): void {
|
||||||
let button = altButtons[0];
|
let button = altButtons[0];
|
||||||
|
|
||||||
let frag = decodeURIComponent(location.hash).replace(/^#/, '');
|
const frag = decodeURIComponent(location.hash).replace(/^#/, '');
|
||||||
if (frag) {
|
if (frag) {
|
||||||
let selected = document.getElementById(frag) as HTMLInputElement;
|
const selected = document.getElementById(frag) as HTMLInputElement;
|
||||||
if (selected) button = selected;
|
if (selected) button = selected;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -85,21 +83,21 @@ function setup() {
|
||||||
mainlink = document.getElementById('mainlink') as HTMLAnchorElement;
|
mainlink = document.getElementById('mainlink') as HTMLAnchorElement;
|
||||||
skipAll = document.getElementById('skipAll') as HTMLInputElement;
|
skipAll = document.getElementById('skipAll') as HTMLInputElement;
|
||||||
|
|
||||||
let alts = document.getElementById('alts');
|
const alts = document.getElementById('alts');
|
||||||
if (alts) {
|
if (alts) {
|
||||||
let inputs = Array.from(alts.getElementsByTagName('input'));
|
const inputs = Array.from(alts.getElementsByTagName('input'));
|
||||||
altButtons = inputs.filter(e => e.name == 'variant');
|
altButtons = inputs.filter(e => e.name == 'variant');
|
||||||
} else {
|
} else {
|
||||||
altButtons = [];
|
altButtons = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
for (let button of altButtons) {
|
for (const button of altButtons) {
|
||||||
button.onchange = _e => { if (button.checked) activateButton(button); };
|
button.onchange = _e => { if (button.checked) activateButton(button); };
|
||||||
}
|
}
|
||||||
|
|
||||||
if (skipAll) {
|
if (skipAll) {
|
||||||
skipAll.onchange = _e => { if (skipAll.checked) {
|
skipAll.onchange = _e => { if (skipAll.checked) {
|
||||||
let caption = document.getElementById('cw');
|
const caption = document.getElementById('cw');
|
||||||
if (caption) { openCW(null, caption, false); }
|
if (caption) { openCW(null, caption, false); }
|
||||||
} };
|
} };
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue