From 346baaf7ec7b87aebb4b68ec0e3c5df7c11e7120 Mon Sep 17 00:00:00 2001 From: Dan Percic Date: Fri, 4 Mar 2022 17:43:09 +0200 Subject: [PATCH] add only active dossiers filter --- ...dit-dossier-deleted-documents.component.ts | 2 +- .../search-screen/search-screen.component.ts | 11 +++++--- .../src/app/modules/shared/pipes/date.pipe.ts | 26 ++++++++++--------- apps/red-ui/src/app/utils/functions.ts | 17 ------------ apps/red-ui/src/assets/i18n/de.json | 1 + apps/red-ui/src/assets/i18n/en.json | 1 + libs/common-ui | 2 +- .../lib/trash-dossier/trash-dossier.model.ts | 5 ++-- 8 files changed, 27 insertions(+), 38 deletions(-) diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/deleted-documents/edit-dossier-deleted-documents.component.ts b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/deleted-documents/edit-dossier-deleted-documents.component.ts index 47ccbb79a..3f6b69cde 100644 --- a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/deleted-documents/edit-dossier-deleted-documents.component.ts +++ b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/deleted-documents/edit-dossier-deleted-documents.component.ts @@ -5,6 +5,7 @@ import { CircleButtonTypes, ConfirmationDialogInput, DefaultListingServices, + getLeftDateTime, IListable, IRouterPath, ListingComponent, @@ -16,7 +17,6 @@ import { import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import * as moment from 'moment'; import { ConfigService } from '@services/config.service'; -import { getLeftDateTime } from '@utils/functions'; import { firstValueFrom, Observable, of } from 'rxjs'; import { distinctUntilChanged, map } from 'rxjs/operators'; import { DossiersDialogService } from '../../../services/dossiers-dialog.service'; diff --git a/apps/red-ui/src/app/modules/search/search-screen/search-screen.component.ts b/apps/red-ui/src/app/modules/search/search-screen/search-screen.component.ts index 45a760d9d..0fae5de35 100644 --- a/apps/red-ui/src/app/modules/search/search-screen/search-screen.component.ts +++ b/apps/red-ui/src/app/modules/search/search-screen/search-screen.component.ts @@ -89,6 +89,8 @@ export class SearchScreenComponent extends ListingComponent imp checker: keyChecker('dossierId'), }; this.filterService.addFilterGroups([dossierNameFilter]); + const onlyActiveLabel = this._translateService.instant('search-screen.filters.only-active'); + this.filterService.addSingleFilter({ id: 'onlyActiveDossiers', label: onlyActiveLabel, checked: this._routeOnlyActive }); } private get _routeDossierIds(): string[] { @@ -112,11 +114,12 @@ export class SearchScreenComponent extends ListingComponent imp } private get _filtersChanged$(): Observable<[string[], boolean]> { - return this.filterService.filterGroups$.pipe( - map(groups => { + const onlyActiveDossiers$ = this.filterService.getSingleFilter('onlyActiveDossiers').pipe(map(f => !!f.checked)); + const filterGroups$ = this.filterService.filterGroups$; + return combineLatest([filterGroups$, onlyActiveDossiers$]).pipe( + map(([groups, onlyActive]) => { const dossierIds: string[] = groups[0].filters.filter(v => v.checked).map(v => v.id); - // TODO: Only active filter - return [dossierIds, this._routeOnlyActive]; + return [dossierIds, onlyActive]; }), startWith<[string[], boolean]>([this._routeDossierIds, this._routeOnlyActive]), ); diff --git a/apps/red-ui/src/app/modules/shared/pipes/date.pipe.ts b/apps/red-ui/src/app/modules/shared/pipes/date.pipe.ts index b2a1364ee..10734a943 100644 --- a/apps/red-ui/src/app/modules/shared/pipes/date.pipe.ts +++ b/apps/red-ui/src/app/modules/shared/pipes/date.pipe.ts @@ -3,9 +3,9 @@ import * as moment from 'moment'; import { TranslateService } from '@ngx-translate/core'; import { DatePipe as BaseDatePipe } from '@angular/common'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; -import { getLeftDateTime } from '@utils/functions'; +import { getLeftDateTime } from '@iqser/common-ui'; -const MONTH_NAMES = { +const MONTH_NAMES: Record = { 0: _('months.jan'), 1: _('months.feb'), 2: _('months.mar'), @@ -29,16 +29,18 @@ export class DatePipe extends BaseDatePipe implements PipeTransform { } transform(value: null | undefined, format?: string, timezone?: string, locale?: string): null; - transform(value: Date | string | number | null | undefined, format?: string, timezone?: string, locale?: string): string | null; - transform(value: any, format?: string, timezone?: string, locale?: string): string { - if (format === 'timeFromNow') { - return this._getTimeFromNow(value); - } - if (format === 'sophisticatedDate') { - return this._getSophisticatedDate(value); - } - if (format === 'exactDate') { - return this._getExactDate(value); + transform(value: Date | string | number, format?: string, timezone?: string, locale?: string): string; + transform(value: Date | string | number | null | undefined, format?: string, timezone?: string, locale?: string): string | null { + if (typeof value === 'string') { + if (format === 'timeFromNow') { + return this._getTimeFromNow(value); + } + if (format === 'sophisticatedDate') { + return this._getSophisticatedDate(value); + } + if (format === 'exactDate') { + return this._getExactDate(value); + } } return super.transform(value, format, timezone, locale); } diff --git a/apps/red-ui/src/app/utils/functions.ts b/apps/red-ui/src/app/utils/functions.ts index 68c6210f9..daeeb56d2 100644 --- a/apps/red-ui/src/app/utils/functions.ts +++ b/apps/red-ui/src/app/utils/functions.ts @@ -1,4 +1,3 @@ -import * as moment from 'moment'; import { List } from '@iqser/common-ui'; import { filter } from 'rxjs/operators'; import { ActivationEnd } from '@angular/router'; @@ -76,22 +75,6 @@ export function toNumber(str: string) { } } -const HOURS_IN_A_DAY = 24; -const MINUTES_IN_AN_HOUR = 60; - -export function getLeftDateTime(ISOString: string) { - const date = moment(ISOString); - const now = new Date(Date.now()); - - const daysLeft = date.diff(now, 'days'); - const hoursFromNow = date.diff(now, 'hours'); - const hoursLeft = hoursFromNow - HOURS_IN_A_DAY * daysLeft; - const minutesFromNow = date.diff(now, 'minutes'); - const minutesLeft = minutesFromNow - HOURS_IN_A_DAY * MINUTES_IN_AN_HOUR * daysLeft; - - return { daysLeft, hoursLeft, minutesLeft }; -} - export function removeBraces(str: any): string { return str.replace(/[{}]/g, ''); } diff --git a/apps/red-ui/src/assets/i18n/de.json b/apps/red-ui/src/assets/i18n/de.json index 6eda98a9e..1b163e726 100644 --- a/apps/red-ui/src/assets/i18n/de.json +++ b/apps/red-ui/src/assets/i18n/de.json @@ -1719,6 +1719,7 @@ }, "filters": { "by-dossier": "Nach Dossier filtern", + "only-active": "", "search-placeholder": "Dossiername..." }, "missing": "Fehlt", diff --git a/apps/red-ui/src/assets/i18n/en.json b/apps/red-ui/src/assets/i18n/en.json index b9aa96abd..afb9cf4a0 100644 --- a/apps/red-ui/src/assets/i18n/en.json +++ b/apps/red-ui/src/assets/i18n/en.json @@ -1754,6 +1754,7 @@ }, "filters": { "by-dossier": "Filter by Dossier", + "only-active": "Active dossiers only", "search-placeholder": "Dossier name..." }, "missing": "Missing", diff --git a/libs/common-ui b/libs/common-ui index 0157507f6..c11f73ba9 160000 --- a/libs/common-ui +++ b/libs/common-ui @@ -1 +1 @@ -Subproject commit 0157507f661ab216413ec0cf6f4a03128ecb5fce +Subproject commit c11f73ba9e202ae86e60a6e6eb1639a3a59d04a8 diff --git a/libs/red-domain/src/lib/trash-dossier/trash-dossier.model.ts b/libs/red-domain/src/lib/trash-dossier/trash-dossier.model.ts index 0988653f1..aca8adf9d 100644 --- a/libs/red-domain/src/lib/trash-dossier/trash-dossier.model.ts +++ b/libs/red-domain/src/lib/trash-dossier/trash-dossier.model.ts @@ -1,7 +1,6 @@ -import { List } from '@iqser/common-ui'; +import { getLeftDateTime, List } from '@iqser/common-ui'; import { DownloadFileType } from '../shared'; -import { DossierStatus, IDossier } from '@red/domain'; -import { getLeftDateTime } from '@utils/functions'; +import { DossierStatus, IDossier } from '../dossiers'; export class TrashDossier implements IDossier { readonly dossierId: string;