From 6940eae888bbe7754afcfe0284b5d1db9776fddd Mon Sep 17 00:00:00 2001 From: panda Date: Thu, 21 Sep 2023 02:50:24 +0800 Subject: [PATCH] ui: fix problem_edit subcategory tag selection (#660) --- .../ui-default/pages/problem_edit.page.js | 23 +++++++------------ 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/packages/ui-default/pages/problem_edit.page.js b/packages/ui-default/pages/problem_edit.page.js index a47953901..52f1c1430 100644 --- a/packages/ui-default/pages/problem_edit.page.js +++ b/packages/ui-default/pages/problem_edit.page.js @@ -116,34 +116,27 @@ function buildCategoryFilter() { }); $(document).on('click', '.widget--category-filter__tag', (ev) => { if (ev.shiftKey || ev.metaKey || ev.ctrlKey) return; - const category = $(ev.currentTarget).text(); - const treeItem = categories[category]; + const tag = $(ev.currentTarget).text(); + 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 const shouldSelect = treeItem.$tag.hasClass('selected') ? false : !treeItem.select; treeItem.select = shouldSelect; - dirtyCategories.push({ type: 'category', category }); - if (!shouldSelect) { + dirtyCategories.push(category + ? { type: 'subcategory', subcategory: tag, category } + : { type: 'category', category: tag }); + if (!category && !shouldSelect) { // de-select children _.forEach(treeItem.children, (treeSubItem, subcategory) => { if (treeSubItem.select) { treeSubItem.select = false; - dirtyCategories.push({ type: 'subcategory', subcategory, category }); + dirtyCategories.push({ type: 'subcategory', subcategory, category: tag }); } }); } updateSelection(); 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) {