RED-9390 - Workload filter does not remember previous ALL or NONE selection

This commit is contained in:
Valentin Mihai 2024-06-27 13:23:35 +03:00
parent f872158c5f
commit ca0db25484
3 changed files with 15 additions and 11 deletions

View File

@ -62,7 +62,7 @@
></div> ></div>
} }
<div <div
(click)="deactivateFilters()" (click)="deactivatePrimaryFilters()"
class="all-caps-label primary pointer" class="all-caps-label primary pointer"
iqserStopPropagation iqserStopPropagation
translate="actions.none" translate="actions.none"

View File

@ -95,16 +95,18 @@ export class FilterCardComponent implements OnInit {
filterGroup, filterGroup,
parent, parent,
primaryFiltersSlug: this.primaryFiltersSlug, primaryFiltersSlug: this.primaryFiltersSlug,
fileId: this.fileId,
}); });
this.filterService.updateFiltersInLocalStorage(this.fileId);
} }
deactivateFilters() { deactivatePrimaryFilters() {
this.filterService.deactivateFilters({ primaryFiltersSlug: this.primaryFiltersSlug }); this.filterService.deactivateFilters({ primaryFiltersSlug: this.primaryFiltersSlug });
this.filterService.updateFiltersInLocalStorage(this.fileId);
} }
activatePrimaryFilters(): void { activatePrimaryFilters(): void {
this.filterService.setFilters(this.primaryFiltersSlug, true); this.filterService.setFilters(this.primaryFiltersSlug, true);
this.filterService.updateFiltersInLocalStorage(this.fileId);
} }
toggleFilterExpanded(nestedFilter: INestedFilter): void { toggleFilterExpanded(nestedFilter: INestedFilter): void {

View File

@ -14,7 +14,6 @@ export interface CheckboxClickedParams {
nestedFilter: INestedFilter; nestedFilter: INestedFilter;
filterGroup: IFilterGroup; filterGroup: IFilterGroup;
parent?: INestedFilter; parent?: INestedFilter;
fileId?: string;
primaryFiltersSlug: string; primaryFiltersSlug: string;
} }
@ -24,6 +23,10 @@ export interface DeactivateFiltersParams {
exceptedFilterId?: string; exceptedFilterId?: string;
} }
const PRIMARY_FILTERS = 'primaryFilters';
const SECONDARY_FILTERS = 'secondaryFilters';
const WORKLOAD_FILTERS_KEY = 'workload-filters';
@Injectable() @Injectable()
export class FilterService { export class FilterService {
readonly #singleFilters = new Map<string, BehaviorSubject<IFilter | undefined>>(); readonly #singleFilters = new Map<string, BehaviorSubject<IFilter | undefined>>();
@ -241,7 +244,7 @@ export class FilterService {
} }
filterCheckboxClicked(params: CheckboxClickedParams) { filterCheckboxClicked(params: CheckboxClickedParams) {
const { filterGroup, nestedFilter, parent, fileId, primaryFiltersSlug } = params; const { filterGroup, nestedFilter, parent, primaryFiltersSlug } = params;
if (filterGroup.singleSelect) { if (filterGroup.singleSelect) {
this.deactivateFilters({ primaryFiltersSlug, exceptedFilterId: nestedFilter.id }); this.deactivateFilters({ primaryFiltersSlug, exceptedFilterId: nestedFilter.id });
@ -264,23 +267,22 @@ export class FilterService {
} }
this.refresh(); this.refresh();
this.#updateFiltersInLocalStorage(fileId);
} }
#updateFiltersInLocalStorage(fileId?: string) { updateFiltersInLocalStorage(fileId?: string) {
if (fileId) { if (fileId) {
const primaryFilters = this.getGroup('primaryFilters'); const primaryFilters = this.getGroup(PRIMARY_FILTERS);
const secondaryFilters = this.getGroup('secondaryFilters'); const secondaryFilters = this.getGroup(SECONDARY_FILTERS);
const filters: LocalStorageFilters = { const filters: LocalStorageFilters = {
primaryFilters: extractFilterValues(primaryFilters?.filters), primaryFilters: extractFilterValues(primaryFilters?.filters),
secondaryFilters: extractFilterValues(secondaryFilters?.filters), secondaryFilters: extractFilterValues(secondaryFilters?.filters),
}; };
const workloadFiltersString = localStorage.getItem('workload-filters') ?? '{}'; const workloadFiltersString = localStorage.getItem(WORKLOAD_FILTERS_KEY) ?? '{}';
const workloadFilters = JSON.parse(workloadFiltersString); const workloadFilters = JSON.parse(workloadFiltersString);
workloadFilters[fileId] = filters; workloadFilters[fileId] = filters;
localStorage.setItem('workload-filters', JSON.stringify(workloadFilters)); localStorage.setItem(WORKLOAD_FILTERS_KEY, JSON.stringify(workloadFilters));
} }
} }
} }