ui: fix problem_edit subcategory tag selection (#660)

This commit is contained in:
panda authored and GitHub committed 2023-09-21 02:50:24 +08:00
1 parent a9b2f68d2d
commit 6940eae888
1 file changed
+8 -15
+8 -15
View File
@@ -116,34 +116,27 @@ function buildCategoryFilter() {
}); });
$(document).on('click', '.widget--category-filter__tag', (ev) => { $(document).on('click', '.widget--category-filter__tag', (ev) => {
if (ev.shiftKey || ev.metaKey || ev.ctrlKey) return; if (ev.shiftKey || ev.metaKey || ev.ctrlKey) return;
const category = $(ev.currentTarget).text(); const tag = $(ev.currentTarget).text();
const treeItem = categories[category]; const category = $(ev.currentTarget).attr('data-category');
const treeItem = category ? categories[category].children[tag] : categories[tag];
// the effect should be cancelSelect if it is shown as selected when clicking // the effect should be cancelSelect if it is shown as selected when clicking
const shouldSelect = treeItem.$tag.hasClass('selected') ? false : !treeItem.select; const shouldSelect = treeItem.$tag.hasClass('selected') ? false : !treeItem.select;
treeItem.select = shouldSelect; treeItem.select = shouldSelect;
dirtyCategories.push({ type: 'category', category }); dirtyCategories.push(category
if (!shouldSelect) { ? { type: 'subcategory', subcategory: tag, category }
: { type: 'category', category: tag });
if (!category && !shouldSelect) {
// de-select children // de-select children
_.forEach(treeItem.children, (treeSubItem, subcategory) => { _.forEach(treeItem.children, (treeSubItem, subcategory) => {
if (treeSubItem.select) { if (treeSubItem.select) {
treeSubItem.select = false; treeSubItem.select = false;
dirtyCategories.push({ type: 'subcategory', subcategory, category }); dirtyCategories.push({ type: 'subcategory', subcategory, category: tag });
} }
}); });
} }
updateSelection(); updateSelection();
ev.preventDefault(); ev.preventDefault();
}); });
$(document).on('click', '.widget--category-filter__subcategory-tag', (ev) => {
if (ev.shiftKey || ev.metaKey || ev.ctrlKey) return;
const subcategory = $(ev.currentTarget).text();
const category = $(ev.currentTarget).attr('data-category');
const treeItem = categories[category].children[subcategory];
treeItem.select = !treeItem.select;
dirtyCategories.push({ type: 'subcategory', subcategory, category });
updateSelection();
ev.preventDefault();
});
} }
async function handleSection(ev, sidebar, type) { async function handleSection(ev, sidebar, type) {