better filter visualization

This commit is contained in:
2026-05-22 18:12:37 +02:00
parent 3ec97f4451
commit e07fb589c5
3 changed files with 192 additions and 1 deletions

View File

@@ -274,8 +274,88 @@ window.cancelAnimFrame = (function () {
});
});
if (window.updateFilterBadge) window.updateFilterBadge();
};
window.updateMimeLabel = updateMimeLabel;
const updateFilterBadge = () => {
const badge = document.getElementById('nav-filter-badge');
if (!badge) return;
let activeMode = 0;
if (window.activeMode !== undefined) {
activeMode = window.activeMode;
} else {
const cookieMode = document.cookie.split('; ').find(row => row.startsWith('mode='));
if (cookieMode) {
activeMode = +cookieMode.split('=')[1];
} else if (window.f0ckSession && window.f0ckSession.mode !== undefined) {
activeMode = window.f0ckSession.mode;
}
}
let hasMimeFilter = false;
let mimeStr = '';
const cookieMime = document.cookie.split('; ').find(row => row.startsWith('mime='));
if (cookieMime) {
mimeStr = cookieMime.split('=')[1] || '';
}
const selectedMimes = mimeStr ? mimeStr.split(',').filter(m => ['video', 'audio', 'image', 'flash'].includes(m)) : [];
if (selectedMimes.length > 0) {
hasMimeFilter = true;
}
let badgeText = '';
let badgeClass = 'filter-badge';
switch (activeMode) {
case 0:
badgeText = 'SFW';
badgeClass += ' filter-badge-sfw';
break;
case 1:
badgeText = 'NSFW';
badgeClass += ' filter-badge-nsfw';
break;
case 4:
badgeText = 'NSFL';
badgeClass += ' filter-badge-nsfl';
break;
case 2:
badgeText = 'UNT';
badgeClass += ' filter-badge-unt';
break;
case 3:
badgeText = 'ALL';
badgeClass += ' filter-badge-all';
break;
default:
badgeText = 'SFW';
badgeClass += ' filter-badge-sfw';
}
badge.className = badgeClass;
badge.innerHTML = badgeText;
if (hasMimeFilter) {
const dotsContainer = document.createElement('span');
dotsContainer.className = 'filter-mime-dots';
selectedMimes.forEach(mime => {
const dot = document.createElement('span');
dot.className = `mime-dot mime-dot-${mime}`;
dot.title = mime.charAt(0).toUpperCase() + mime.slice(1);
dotsContainer.appendChild(dot);
});
badge.appendChild(dotsContainer);
}
badge.style.display = 'inline-flex';
};
window.updateFilterBadge = updateFilterBadge;
document.addEventListener('f0ck:modeChanged', () => {
updateFilterBadge();
});
window.randomizeLogo = () => {
const logoArr = window.f0ckBrandImages;
if (!logoArr || !logoArr.length) return;
@@ -4548,6 +4628,7 @@ window.cancelAnimFrame = (function () {
document.addEventListener('DOMContentLoaded', () => {
initSearch();
initExcludedTagsModal();
if (window.updateFilterBadge) window.updateFilterBadge();
});
// </search-overlay>