From 461a4fbf529bbb2c4a669d0ade673de7d59db989 Mon Sep 17 00:00:00 2001 From: Dan Percic Date: Tue, 20 Sep 2022 17:50:18 +0300 Subject: [PATCH] RED-5228: fix filters auto expand --- .../services/annotation-processing.service.ts | 6 ++-- apps/red-ui/src/app/utils/filter-utils.ts | 31 ++++++++++--------- 2 files changed, 21 insertions(+), 16 deletions(-) diff --git a/apps/red-ui/src/app/modules/file-preview/services/annotation-processing.service.ts b/apps/red-ui/src/app/modules/file-preview/services/annotation-processing.service.ts index 0606a5974..a4ab3bfa2 100644 --- a/apps/red-ui/src/app/modules/file-preview/services/annotation-processing.service.ts +++ b/apps/red-ui/src/app/modules/file-preview/services/annotation-processing.service.ts @@ -96,8 +96,10 @@ export class AnnotationProcessingService { }, skipTranslation: true, }; - filterMap.set(a.filterKey, childFilter); - parentFilter.children.push(new Filter(childFilter)); + + const newChildFilter = new Filter(childFilter); + filterMap.set(a.filterKey, newChildFilter); + parentFilter.children.push(newChildFilter); } } }); diff --git a/apps/red-ui/src/app/utils/filter-utils.ts b/apps/red-ui/src/app/utils/filter-utils.ts index 5d035dd7e..a3dc0b848 100644 --- a/apps/red-ui/src/app/utils/filter-utils.ts +++ b/apps/red-ui/src/app/utils/filter-utils.ts @@ -5,20 +5,24 @@ export function handleFilterDelta(oldFilters: INestedFilter[], newFilters: INest const newFiltersDelta = {}; for (const newFilter of newFilters) { const oldFilter = oldFilters.find(f => f.id === newFilter.id); - if (!oldFilter || oldFilter.matches !== newFilter.matches) { - newFiltersDelta[newFilter.id] = {}; - newFilter.children.forEach(filter => (newFiltersDelta[newFilter.id][filter.id] = {})); - } if (!oldFilter) { - for (const childFilter of newFilter.children) { - const oldFilterChild = oldFilter?.children.find(f => f.id === childFilter.id); - if (!oldFilterChild || oldFilterChild.matches !== childFilter.matches) { - if (!newFiltersDelta[newFilter.id]) { - newFiltersDelta[newFilter.id] = {}; - } - newFiltersDelta[newFilter.id][childFilter.id] = {}; + newFiltersDelta[newFilter.id] = {}; + newFilter.children.forEach(filter => (newFiltersDelta[newFilter.id][filter.id] = {})); + continue; + } + + if (oldFilter.matches < newFilter.matches) { + newFiltersDelta[newFilter.id] = {}; + } + + for (const childFilter of newFilter.children) { + const oldFilterChild = oldFilter.children.find(f => f.id === childFilter.id); + if (!oldFilterChild || oldFilterChild.matches < childFilter.matches) { + if (!newFiltersDelta[newFilter.id]) { + newFiltersDelta[newFilter.id] = {}; } + newFiltersDelta[newFilter.id][childFilter.id] = {}; } } } @@ -39,9 +43,8 @@ export function handleFilterDelta(oldFilters: INestedFilter[], newFilters: INest } } } - allFilters.forEach(filter => { - handleCheckedValue(filter); - }); + + allFilters.forEach(handleCheckedValue); } export const annotationFilterChecker = (file: File, filter: INestedFilter, currentUserId: string) => {