From 9a45f024582a7997303637085e6e44ff09d6b7e0 Mon Sep 17 00:00:00 2001 From: Xiao Gui <xgui3783@gmail.com> Date: Wed, 9 Oct 2019 09:42:08 +0200 Subject: [PATCH] feat: preserve filter selection --- .../databrowserModule/databrowser.module.ts | 6 ++++- .../databrowser/databrowser.component.ts | 3 +-- .../databrowser/databrowser.template.html | 2 +- .../modalityPicker.template.html | 1 + .../util/appendFilterModality.pipe.ts | 24 +++++++++++++++++++ .../util/resetCounterModality.pipe.ts | 17 +++++++++++++ 6 files changed, 49 insertions(+), 4 deletions(-) create mode 100644 src/ui/databrowserModule/util/appendFilterModality.pipe.ts create mode 100644 src/ui/databrowserModule/util/resetCounterModality.pipe.ts diff --git a/src/ui/databrowserModule/databrowser.module.ts b/src/ui/databrowserModule/databrowser.module.ts index 1e7469cda..aa37e7e3e 100644 --- a/src/ui/databrowserModule/databrowser.module.ts +++ b/src/ui/databrowserModule/databrowser.module.ts @@ -32,6 +32,8 @@ import { GetKgSchemaIdFromFullIdPipe } from "./util/getKgSchemaIdFromFullId.pipe import { PreviewFileIconPipe } from "./preview/previewFileIcon.pipe"; import { PreviewFileTypePipe } from "./preview/previewFileType.pipe"; import { SingleDatasetListView } from "./singleDataset/listView/singleDatasetListView.component"; +import { AppendFilerModalityPipe } from "./util/appendFilterModality.pipe"; +import { ResetCounterModalityPipe } from "./util/resetCounterModality.pipe"; @NgModule({ imports:[ @@ -69,7 +71,9 @@ import { SingleDatasetListView } from "./singleDataset/listView/singleDatasetLis RegionBackgroundToRgbPipe, GetKgSchemaIdFromFullIdPipe, PreviewFileIconPipe, - PreviewFileTypePipe + PreviewFileTypePipe, + AppendFilerModalityPipe, + ResetCounterModalityPipe ], exports:[ DataBrowser, diff --git a/src/ui/databrowserModule/databrowser/databrowser.component.ts b/src/ui/databrowserModule/databrowser/databrowser.component.ts index 5cbf3849e..f7fcc13e7 100644 --- a/src/ui/databrowserModule/databrowser/databrowser.component.ts +++ b/src/ui/databrowserModule/databrowser/databrowser.component.ts @@ -71,7 +71,7 @@ export class DataBrowser implements OnChanges, OnDestroy,OnInit{ ) } - ngOnChanges(changes){ + ngOnChanges(){ this.regions = this.regions.map(r => { /** @@ -111,7 +111,6 @@ export class DataBrowser implements OnChanges, OnDestroy,OnInit{ .finally(() => { this.fetchingFlag = false this.dataentriesUpdated.emit(this.dataentries) - this.resetFilters() this.cdr.markForCheck() }) diff --git a/src/ui/databrowserModule/databrowser/databrowser.template.html b/src/ui/databrowserModule/databrowser/databrowser.template.html index 522980dc8..10147fe43 100644 --- a/src/ui/databrowserModule/databrowser/databrowser.template.html +++ b/src/ui/databrowserModule/databrowser/databrowser.template.html @@ -143,7 +143,7 @@ <modality-picker iav-stop="click" class="w-100" - [countedDataM]="countedDataM" + [countedDataM]="visibleCountedDataM | resetcounterModalityPipe | appendFilterModalityPipe : [countedDataM]" (modalityFilterEmitter)="handleModalityFilterEvent($event)" #modalityPickerCmp> diff --git a/src/ui/databrowserModule/modalityPicker/modalityPicker.template.html b/src/ui/databrowserModule/modalityPicker/modalityPicker.template.html index c5a19766a..0a84ce45d 100644 --- a/src/ui/databrowserModule/modalityPicker/modalityPicker.template.html +++ b/src/ui/databrowserModule/modalityPicker/modalityPicker.template.html @@ -1,6 +1,7 @@ <mat-checkbox [checked]="datamodality.visible" (change)="toggleModality(datamodality)" + [ngClass]="{'muted': datamodality.occurance === 0}" *ngFor="let datamodality of countedDataM"> {{ datamodality.name }} <span class="text-muted">({{ datamodality.occurance }})</span> </mat-checkbox> \ No newline at end of file diff --git a/src/ui/databrowserModule/util/appendFilterModality.pipe.ts b/src/ui/databrowserModule/util/appendFilterModality.pipe.ts new file mode 100644 index 000000000..ef7e740c2 --- /dev/null +++ b/src/ui/databrowserModule/util/appendFilterModality.pipe.ts @@ -0,0 +1,24 @@ +import { Pipe, PipeTransform } from "@angular/core"; +import { CountedDataModality } from "../databrowser.service"; + +@Pipe({ + name: 'appendFilterModalityPipe' +}) + +export class AppendFilerModalityPipe implements PipeTransform{ + public transform(root: CountedDataModality[], appending: CountedDataModality[][]): CountedDataModality[]{ + let returnArr:CountedDataModality[] = [...root] + for (const mods of appending){ + for (const mod of mods){ + // preserve the visibility + const { visible } = returnArr.find(({ name }) => name === mod.name) || mod + returnArr = returnArr.filter(({ name }) => name !== mod.name) + returnArr = returnArr.concat({ + ...mod, + visible + }) + } + } + return returnArr + } +} \ No newline at end of file diff --git a/src/ui/databrowserModule/util/resetCounterModality.pipe.ts b/src/ui/databrowserModule/util/resetCounterModality.pipe.ts new file mode 100644 index 000000000..8f65af67e --- /dev/null +++ b/src/ui/databrowserModule/util/resetCounterModality.pipe.ts @@ -0,0 +1,17 @@ +import { Pipe, PipeTransform } from "@angular/core"; +import { CountedDataModality } from "../databrowser.service"; + +@Pipe({ + name: 'resetcounterModalityPipe' +}) + +export class ResetCounterModalityPipe implements PipeTransform{ + public transform(inc: CountedDataModality[]):CountedDataModality[]{ + return inc.map(({ occurance, ...rest }) => { + return { + occurance: 0, + ...rest + } + }) + } +} \ No newline at end of file -- GitLab