diff --git a/apps/red-ui/src/app/components/notifications/notifications.component.ts b/apps/red-ui/src/app/components/notifications/notifications.component.ts index 5d807fcbd..963e9d5da 100644 --- a/apps/red-ui/src/app/components/notifications/notifications.component.ts +++ b/apps/red-ui/src/app/components/notifications/notifications.component.ts @@ -7,7 +7,8 @@ import { NotificationsService } from '@services/notifications.service'; import { Notification } from '@red/domain'; import { distinctUntilChanged, map, switchMap, tap } from 'rxjs/operators'; import { BehaviorSubject, Observable, timer } from 'rxjs'; -import { AutoUnsubscribe, CHANGED_CHECK_INTERVAL, List, shareLast } from '@iqser/common-ui'; +import { AutoUnsubscribe, List, shareLast } from '@iqser/common-ui'; +import { CHANGED_CHECK_INTERVAL } from '@utils/constants'; const INCLUDE_SEEN = false; diff --git a/apps/red-ui/src/app/modules/dossier/screens/dossier-overview/screen/dossier-overview-screen.component.ts b/apps/red-ui/src/app/modules/dossier/screens/dossier-overview/screen/dossier-overview-screen.component.ts index d5e5ebcb4..000eabe11 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/dossier-overview/screen/dossier-overview-screen.component.ts +++ b/apps/red-ui/src/app/modules/dossier/screens/dossier-overview/screen/dossier-overview-screen.component.ts @@ -20,7 +20,6 @@ import { Observable, timer } from 'rxjs'; import { filter, switchMap, tap } from 'rxjs/operators'; import { convertFiles, Files, handleFileDrop } from '@utils/index'; import { - CHANGED_CHECK_INTERVAL, CircleButtonTypes, DefaultListingServices, ListingComponent, @@ -46,6 +45,7 @@ import { LongPressEvent } from '@shared/directives/long-press.directive'; import { UserPreferenceService } from '@services/user-preference.service'; import { FilesMapService } from '@services/entity-services/files-map.service'; import { FilesService } from '@services/entity-services/files.service'; +import { CHANGED_CHECK_INTERVAL } from '@utils/constants'; @Component({ templateUrl: './dossier-overview-screen.component.html', diff --git a/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/table-item/table-item.component.ts b/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/table-item/table-item.component.ts index 5839919cd..d1e991d3c 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/table-item/table-item.component.ts +++ b/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/table-item/table-item.component.ts @@ -1,10 +1,8 @@ import { ChangeDetectionStrategy, Component, Input, OnChanges } from '@angular/core'; import { Dossier, DossierStats } from '@red/domain'; import { DossierStatsService } from '@services/entity-services/dossier-stats.service'; -import { BehaviorSubject, merge, Observable, timer } from 'rxjs'; -import { filter, switchMap } from 'rxjs/operators'; -import { CHANGED_CHECK_INTERVAL } from '@iqser/common-ui'; -import { FilesService } from '@services/entity-services/files.service'; +import { BehaviorSubject, Observable } from 'rxjs'; +import { switchMap } from 'rxjs/operators'; @Component({ selector: 'redaction-table-item [dossier]', @@ -18,24 +16,13 @@ export class TableItemComponent implements OnChanges { readonly stats$: Observable; private readonly _ngOnChanges$ = new BehaviorSubject(undefined); - constructor(readonly dossierStatsService: DossierStatsService, readonly filesService: FilesService) { - const hasChanges$ = this._hasChanges$; - this.stats$ = merge(this._ngOnChanges$, hasChanges$).pipe( - filter(() => !!this.dossier), - switchMap(() => this.dossierStatsService.watch$(this.dossier.dossierId)), - ); - } - - private get _hasChanges$() { - return timer(CHANGED_CHECK_INTERVAL, CHANGED_CHECK_INTERVAL).pipe( - filter(() => !!this.dossier), - switchMap(() => this.filesService.hasChanges$(this.dossier.dossierId)), - filter(changed => changed), - switchMap(() => this.dossierStatsService.getFor([this.dossier.dossierId])), - ); + constructor(readonly dossierStatsService: DossierStatsService) { + this.stats$ = this._ngOnChanges$.pipe(switchMap(dossierId => this.dossierStatsService.watch$(dossierId))); } ngOnChanges() { - this._ngOnChanges$.next(this.dossier.dossierId); + if (this.dossier) { + this._ngOnChanges$.next(this.dossier.dossierId); + } } } diff --git a/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/screen/dossiers-listing-screen.component.ts b/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/screen/dossiers-listing-screen.component.ts index 5b2f0da3a..c7ba3f10b 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/screen/dossiers-listing-screen.component.ts +++ b/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/screen/dossiers-listing-screen.component.ts @@ -6,21 +6,14 @@ import { TranslateChartService } from '@services/translate-chart.service'; import { timer } from 'rxjs'; import { Router } from '@angular/router'; import { DossiersDialogService } from '../../../services/dossiers-dialog.service'; -import { - CHANGED_CHECK_INTERVAL, - DefaultListingServicesTmp, - EntitiesService, - ListingComponent, - OnAttach, - OnDetach, - TableComponent, -} from '@iqser/common-ui'; +import { DefaultListingServicesTmp, EntitiesService, ListingComponent, OnAttach, OnDetach, TableComponent } from '@iqser/common-ui'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { ConfigService } from '../config.service'; import { DossiersService } from '@services/entity-services/dossiers.service'; import { FilesService } from '@services/entity-services/files.service'; import { DossierTemplatesService } from '@services/entity-services/dossier-templates.service'; import { switchMap, tap } from 'rxjs/operators'; +import { CHANGED_CHECK_INTERVAL } from '@utils/constants'; @Component({ templateUrl: './dossiers-listing-screen.component.html', diff --git a/apps/red-ui/src/app/modules/shared/components/simple-doughnut-chart/simple-doughnut-chart.component.ts b/apps/red-ui/src/app/modules/shared/components/simple-doughnut-chart/simple-doughnut-chart.component.ts index 6524e07d2..ec11bf6e7 100644 --- a/apps/red-ui/src/app/modules/shared/components/simple-doughnut-chart/simple-doughnut-chart.component.ts +++ b/apps/red-ui/src/app/modules/shared/components/simple-doughnut-chart/simple-doughnut-chart.component.ts @@ -1,5 +1,5 @@ import { Component, Input, OnChanges, OnInit } from '@angular/core'; -import { Color } from '@utils/types'; +import { Color } from '@red/domain'; import { FilterService, INestedFilter } from '@iqser/common-ui'; import { Observable, of } from 'rxjs'; import { map } from 'rxjs/operators'; diff --git a/apps/red-ui/src/app/utils/constants.ts b/apps/red-ui/src/app/utils/constants.ts new file mode 100644 index 000000000..454c91719 --- /dev/null +++ b/apps/red-ui/src/app/utils/constants.ts @@ -0,0 +1 @@ +export const CHANGED_CHECK_INTERVAL = 3000; diff --git a/apps/red-ui/src/app/utils/types.d.ts b/apps/red-ui/src/app/utils/types.d.ts deleted file mode 100644 index 9b37405ff..000000000 --- a/apps/red-ui/src/app/utils/types.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { DossierStatus, FileStatus } from '@red/domain'; - -export type Color = FileStatus | DossierStatus | string; diff --git a/libs/common-ui b/libs/common-ui index 8f440491e..fb53b06cf 160000 --- a/libs/common-ui +++ b/libs/common-ui @@ -1 +1 @@ -Subproject commit 8f440491e8006cad8d64ee62b1b84b97be747413 +Subproject commit fb53b06cfc8fa2c846e7d1a173ad6f0e19f90d02 diff --git a/libs/red-domain/src/lib/shared/colors.ts b/libs/red-domain/src/lib/shared/colors.ts new file mode 100644 index 000000000..f80429122 --- /dev/null +++ b/libs/red-domain/src/lib/shared/colors.ts @@ -0,0 +1,4 @@ +import { DossierStatus } from '../dossiers'; +import { WorkflowFileStatus } from '../files'; + +export type Color = WorkflowFileStatus | DossierStatus | string; diff --git a/libs/red-domain/src/lib/shared/index.ts b/libs/red-domain/src/lib/shared/index.ts index 3da2cbc13..77273e7c7 100644 --- a/libs/red-domain/src/lib/shared/index.ts +++ b/libs/red-domain/src/lib/shared/index.ts @@ -3,4 +3,5 @@ export * from './types'; export * from './rules'; export * from './watermark'; export * from './default-color-type'; +export * from './colors'; export * from './view-mode';