diff --git a/apps/red-ui/src/app/modules/admin/screens/dictionary-listing/dictionary-listing-screen.component.html b/apps/red-ui/src/app/modules/admin/screens/dictionary-listing/dictionary-listing-screen.component.html index d4e4f0280..13ac5fe9e 100644 --- a/apps/red-ui/src/app/modules/admin/screens/dictionary-listing/dictionary-listing-screen.component.html +++ b/apps/red-ui/src/app/modules/admin/screens/dictionary-listing/dictionary-listing-screen.component.html @@ -25,17 +25,22 @@ - {{ tableHeader }} + {{ + 'dictionary-listing.table-header.title' + | translate: { length: (displayedEntities$ | async)?.length } + }} @@ -108,7 +113,8 @@
({ value: dict.entries ? dict.entries.length : 0, @@ -29,12 +30,10 @@ const toChartConfig = (dict: TypeValueWrapper): DoughnutChartConfig => ({ providers: [FilterService, SearchService, ScreenStateService, SortingService] }) export class DictionaryListingScreenComponent - extends BaseListingComponent + extends NewBaseListingComponent implements OnInit { chartData: DoughnutChartConfig[] = []; - protected readonly _searchKey = 'label'; - protected readonly _selectionKey = 'type'; constructor( private readonly _dialogService: AdminDialogService, @@ -49,26 +48,25 @@ export class DictionaryListingScreenComponent super(_injector); _loadingService.start(); this._sortingService.setScreenName(ScreenNames.DOSSIER_LISTING); + this._searchService.setSearchKey('label'); + this._screenStateService.setIdKey('type'); _appStateService.activateDossierTemplate(_activatedRoute.snapshot.params.dossierTemplateId); } - get tableHeader(): string { - return this._translateService.instant('dictionary-listing.table-header.title', { - length: this.displayedEntities.length - }); - } - ngOnInit(): void { this._loadDictionaryData(); } - openDeleteDictionariesDialog($event?: MouseEvent, types = this.selectedEntitiesIds) { + openDeleteDictionariesDialog( + $event?: MouseEvent, + types = this._screenStateService.selectedEntitiesIds + ) { this._dialogService.openDialog('confirm', $event, null, async () => { this._loadingService.start(); await this._dictionaryControllerService .deleteTypes(types, this._appStateService.activeDossierTemplateId) .toPromise(); - this.selectedEntitiesIds = []; + this._screenStateService.setSelectedEntitiesIds([]); await this._appStateService.loadDictionaryData(); this._loadDictionaryData(false); this._calculateData(); @@ -100,13 +98,15 @@ export class DictionaryListingScreenComponent const entities = Object.values(appStateDictionaryData).filter(d => !d.virtual); if (!loadEntries) - this.allEntities = entities.map(dict => { - dict.entries = this.allEntities.find(d => d.type === dict.type)?.entries || []; - return dict; - }); - else this.allEntities = entities; + this._screenStateService.setEntities( + entities.map(dict => { + dict.entries = this.allEntities.find(d => d.type === dict.type)?.entries || []; + return dict; + }) + ); + else this._screenStateService.setEntities(entities); - this.displayedEntities = [...this.allEntities]; + this._screenStateService.setDisplayedEntities(this.allEntities); if (!loadEntries) return; diff --git a/apps/red-ui/src/app/modules/shared/base/new-base-listing.component.ts b/apps/red-ui/src/app/modules/shared/base/new-base-listing.component.ts index d288708b2..0b933067b 100644 --- a/apps/red-ui/src/app/modules/shared/base/new-base-listing.component.ts +++ b/apps/red-ui/src/app/modules/shared/base/new-base-listing.component.ts @@ -4,7 +4,6 @@ import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling'; import { FilterService } from '../services/filter.service'; import { SearchService } from '../services/search.service'; import { ScreenStateService } from '../services/screen-state.service'; -import { FilterWrapper } from '../components/filters/popup-filter/model/filter-wrapper.model'; import { Observable } from 'rxjs'; import { FilterModel } from '../components/filters/popup-filter/model/filter.model'; diff --git a/apps/red-ui/src/app/modules/shared/services/screen-state.service.ts b/apps/red-ui/src/app/modules/shared/services/screen-state.service.ts index a8bc4cfe7..6c6c0d86d 100644 --- a/apps/red-ui/src/app/modules/shared/services/screen-state.service.ts +++ b/apps/red-ui/src/app/modules/shared/services/screen-state.service.ts @@ -71,18 +71,18 @@ export class ScreenStateService { toggleEntitySelected(entity: T): void { const currentEntityIdx = this.selectedEntitiesIds.indexOf(entity[this._getIdKey]); - if (currentEntityIdx === -1) { const currentEntityId = entity[this._getIdKey]; return this.setSelectedEntitiesIds([...this.selectedEntitiesIds, currentEntityId]); } - this.setSelectedEntitiesIds(this.selectedEntitiesIds.splice(currentEntityIdx, 1)); + this.setSelectedEntitiesIds( + this.selectedEntitiesIds.filter((el, idx) => idx !== currentEntityIdx) + ); } toggleSelectAll(): void { - if (this.areSomeEntitiesSelected$) return this.selectedEntitiesIds$.next([]); - + if (this.areAllEntitiesSelected) return this.setSelectedEntitiesIds([]); this.setSelectedEntitiesIds(this._displayedEntitiesIds); }