From 70c757c7824ac52ec89dd8682b461eb9831b7c84 Mon Sep 17 00:00:00 2001 From: Valentin Mihai Date: Tue, 26 Jul 2022 17:53:07 +0300 Subject: [PATCH] RED-4774 - As a user I expect that the app remembers the view if I open a dossier or refresh the respective view --- .../app/modules/dossier-overview/config.service.ts | 3 +++ .../screen/dossier-overview-screen.component.ts | 14 ++++++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/apps/red-ui/src/app/modules/dossier-overview/config.service.ts b/apps/red-ui/src/app/modules/dossier-overview/config.service.ts index 117a1cce1..253daad6b 100644 --- a/apps/red-ui/src/app/modules/dossier-overview/config.service.ts +++ b/apps/red-ui/src/app/modules/dossier-overview/config.service.ts @@ -39,6 +39,8 @@ import { DefaultColorsService } from '@services/entity-services/default-colors.s import { map } from 'rxjs/operators'; import { DictionariesMapService } from '@services/entity-services/dictionaries-map.service'; +export const PREVIOUS_LISTING_MODE_KEY = 'previousListingMode'; + @Injectable() export class ConfigService { readonly listingMode$: Observable; @@ -63,6 +65,7 @@ export class ConfigService { set listingMode(listingMode: ListingMode) { this._listingMode$.next(listingMode); + localStorage.setItem(PREVIOUS_LISTING_MODE_KEY, listingMode); } workflowConfig(dossier: Dossier): WorkflowConfig { diff --git a/apps/red-ui/src/app/modules/dossier-overview/screen/dossier-overview-screen.component.ts b/apps/red-ui/src/app/modules/dossier-overview/screen/dossier-overview-screen.component.ts index ed92adc82..29bc3e22d 100644 --- a/apps/red-ui/src/app/modules/dossier-overview/screen/dossier-overview-screen.component.ts +++ b/apps/red-ui/src/app/modules/dossier-overview/screen/dossier-overview-screen.component.ts @@ -1,4 +1,4 @@ -import { Component, ElementRef, HostListener, OnInit, TemplateRef, ViewChild } from '@angular/core'; +import { AfterViewInit, Component, ElementRef, HostListener, OnInit, TemplateRef, ViewChild } from '@angular/core'; import { Dossier, DOSSIER_ID, DossierAttributeWithValue, File, IFileAttributeConfig, WorkflowFileStatus } from '@red/domain'; import { FileDropOverlayService } from '@upload-download/services/file-drop-overlay.service'; import { FileUploadModel } from '@upload-download/model/file-upload.model'; @@ -13,6 +13,7 @@ import { ErrorService, getParam, ListingComponent, + ListingMode, ListingModes, listingProvidersFactory, LoadingService, @@ -28,7 +29,7 @@ import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { PermissionsService } from '@services/permissions.service'; import { NavigationEnd, Router } from '@angular/router'; import { FileAttributesService } from '@services/entity-services/file-attributes.service'; -import { ConfigService } from '../config.service'; +import { ConfigService, PREVIOUS_LISTING_MODE_KEY } from '../config.service'; import { DossierTemplatesService } from '@services/dossier-templates/dossier-templates.service'; import { UserPreferenceService } from '@services/user-preference.service'; import { FilesMapService } from '@services/files/files-map.service'; @@ -88,6 +89,7 @@ export class DossierOverviewScreenComponent extends ListingComponent imple private readonly _dossierAttributesService: DossierAttributesService, ) { super(); + this.#setListingMode(); this.dossier$ = _dossiersService.getEntityChanged$(this.dossierId).pipe(tap(dossier => (this.#currentDossier = dossier))); this.#currentDossier = _dossiersService.find(this.dossierId); this.workflowConfig = configService.workflowConfig(this.#currentDossier); @@ -150,6 +152,7 @@ export class DossierOverviewScreenComponent extends ListingComponent imple } ngOnAttach() { + this.#setListingMode(); this.#initFileDropHandling(); this._setRemovableSubscriptions(); this._tableComponent?.scrollToLastIndex(); @@ -179,6 +182,13 @@ export class DossierOverviewScreenComponent extends ListingComponent imple } } + #setListingMode(): void { + const listingMode = (localStorage.getItem(PREVIOUS_LISTING_MODE_KEY) as ListingMode) ?? ListingModes.table; + if (listingMode !== this.configService.listingMode) { + this.configService.listingMode = listingMode; + } + } + private _setRemovableSubscriptions(): void { this.addActiveScreenSubscription = this._dossiersService .getEntityDeleted$(this.dossierId)