From 30cc2980564234b67027784c235e191142e914a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adina=20=C8=9Aeudan?= Date: Wed, 1 Nov 2023 01:30:09 +0200 Subject: [PATCH] RED-7856: Sort dossier states stats by rank --- .../template-stats.component.html | 14 ++++--- .../dossiers-listing-details.component.ts | 2 +- .../app/services/translate-chart.service.ts | 40 ++++++++++++++----- 3 files changed, 40 insertions(+), 16 deletions(-) diff --git a/apps/red-ui/src/app/modules/dashboard/components/template-stats/template-stats.component.html b/apps/red-ui/src/app/modules/dashboard/components/template-stats/template-stats.component.html index cb5500ab6..d66727109 100644 --- a/apps/red-ui/src/app/modules/dashboard/components/template-stats/template-stats.component.html +++ b/apps/red-ui/src/app/modules/dashboard/components/template-stats/template-stats.component.html @@ -13,7 +13,7 @@ @@ -21,28 +21,30 @@
- +
diff --git a/apps/red-ui/src/app/modules/dossiers-listing/components/dossiers-listing-details/dossiers-listing-details.component.ts b/apps/red-ui/src/app/modules/dossiers-listing/components/dossiers-listing-details/dossiers-listing-details.component.ts index 283137f18..7bfaf8bb1 100644 --- a/apps/red-ui/src/app/modules/dossiers-listing/components/dossiers-listing-details/dossiers-listing-details.component.ts +++ b/apps/red-ui/src/app/modules/dossiers-listing/components/dossiers-listing-details/dossiers-listing-details.component.ts @@ -23,7 +23,7 @@ export class DossiersListingDetailsComponent { this.dossiersChartConfig$ = this.stats$.pipe( map(stats => stats.dossiersChartConfig), - map(data => _translateChartService.translateDossierStates(data, dossierTemplateId)), + map(data => _translateChartService.translateAndSortDossierStates(data, dossierTemplateId)), ); this.documentsChartConfig$ = this.stats$.pipe( map(stats => stats.documentsChartConfig), diff --git a/apps/red-ui/src/app/services/translate-chart.service.ts b/apps/red-ui/src/app/services/translate-chart.service.ts index 243789b98..f7ab76dbc 100644 --- a/apps/red-ui/src/app/services/translate-chart.service.ts +++ b/apps/red-ui/src/app/services/translate-chart.service.ts @@ -5,6 +5,23 @@ import { rolesTranslations } from '@translations/roles-translations'; import { workflowFileStatusTranslations } from '@translations/file-status-translations'; import { DossierStatesMapService } from './entity-services/dossier-states-map.service'; +function sortStatesByRank( + a: DonutChartConfig, + b: DonutChartConfig, + dossierTemplateId: string, + dossierStatesMapService: DossierStatesMapService, +): number { + if (a.key === 'undefined') { + return 1; + } + if (b.key === 'undefined') { + return -1; + } + const aState = dossierStatesMapService.get(dossierTemplateId, a.key); + const bState = dossierStatesMapService.get(dossierTemplateId, b.key); + return aState.rank - bState.rank; +} + @Injectable({ providedIn: 'root', }) @@ -15,18 +32,23 @@ export class TranslateChartService { return config.map(val => ({ ...val, label: this._translateService.instant(val.label) })); } - translateDossierStates(config: DonutChartConfig[], dossierTemplateId: string): DonutChartConfig[] { - return config.map(val => { - if (val.key === 'undefined') { - return { ...val, label: this._translateService.instant(val.label) }; - } - const dossierState = this._dossierStatesMapService.get(dossierTemplateId, val.key); - return { ...val, label: dossierState.name, color: dossierState.color }; - }); + translateAndSortDossierStates(config: DonutChartConfig[], dossierTemplateId: string): DonutChartConfig[] { + return config + .map(val => { + if (val.key === 'undefined') { + return { ...val, label: this._translateService.instant(val.label) }; + } + const dossierState = this._dossierStatesMapService.get(dossierTemplateId, val.key); + return { ...val, label: dossierState.name, color: dossierState.color }; + }) + .sort((a: DonutChartConfig, b: DonutChartConfig) => sortStatesByRank(a, b, dossierTemplateId, this._dossierStatesMapService)); } translateWorkflowStatus(config: DonutChartConfig[]): DonutChartConfig[] { - return config.map(val => ({ ...val, label: this._translateService.instant(workflowFileStatusTranslations[val.label] as string) })); + return config.map(val => ({ + ...val, + label: this._translateService.instant(workflowFileStatusTranslations[val.label] as string), + })); } translateRoles(config: DonutChartConfig[]): DonutChartConfig[] {