Merge pull request #525 from BlipRanger/dev

Prototype for Negative Filtering
This commit is contained in:
Cohee
2023-06-19 14:32:59 +03:00
committed by GitHub
2 changed files with 29 additions and 12 deletions

View File

@@ -246,27 +246,38 @@ function appendTagToList(listElement, tag, { removable, selectable, action }) {
} }
function onTagFilterClick(listElement) { function onTagFilterClick(listElement) {
const wasSelected = $(this).hasClass('selected'); if ($(this).hasClass('selected')) {
$(CHARACTER_SELECTOR).removeClass('hiddenByTag'); $(this).removeClass('selected');
$(this).addClass('excluded');
$(this).toggleClass('selected', !wasSelected); }
else if ($(this).hasClass('excluded')) {
$(this).removeClass('excluded');
}
else {
$(this).addClass('selected');
}
const tagIds = [...($(listElement).find(".tag.selected:not(.actionable)").map((_, el) => $(el).attr("id")))]; const tagIds = [...($(listElement).find(".tag.selected:not(.actionable)").map((_, el) => $(el).attr("id")))];
$(CHARACTER_SELECTOR).each((_, element) => applyFilterToElement(tagIds, element)); const excludedTagIds = [...($(listElement).find(".tag.excluded:not(.actionable)").map((_, el) => $(el).attr("id")))];
$(CHARACTER_SELECTOR).each((_, element) => applyFilterToElement(tagIds, excludedTagIds, element));
updateVisibleDivs('#rm_print_characters_block', true); updateVisibleDivs('#rm_print_characters_block', true);
} }
function applyFilterToElement(tagIds, element) { function applyFilterToElement(tagIds, excludedTagIds, element) {
if (tagIds.length === 0) {
$(element).removeClass('hiddenByTag');
return;
}
const tagFlags = tagIds.map(tagId => isElementTagged(element, tagId)); const tagFlags = tagIds.map(tagId => isElementTagged(element, tagId));
const trueFlags = tagFlags.filter(x => x); const trueFlags = tagFlags.filter(x => x);
const isTagged = TAG_LOGIC_AND ? tagFlags.length === trueFlags.length : trueFlags.length > 0; const isTagged = TAG_LOGIC_AND ? tagFlags.length === trueFlags.length : trueFlags.length > 0;
$(element).toggleClass('hiddenByTag', !isTagged); const excludedTagFlags = excludedTagIds.map(tagId => isElementTagged(element, tagId));
const isExcluded = excludedTagFlags.includes(true);
if (isExcluded) {
$(element).addClass('hiddenByTag');
} else if (tagIds.length > 0 && !isTagged) {
$(element).addClass('hiddenByTag');
} else {
$(element).removeClass('hiddenByTag');
}
} }
function isElementTagged(element, tagId) { function isElementTagged(element, tagId) {

View File

@@ -2889,6 +2889,12 @@ h5 {
filter: none !important; filter: none !important;
} }
.tag.excluded {
opacity: 1 !important;
filter: none !important;
text-decoration: line-through;
}
#avatarCropWrap { #avatarCropWrap {
margin: 10px auto; margin: 10px auto;
max-height: 90%; max-height: 90%;