From 19a47bccec2961ae193dc56aed7b7a70eb891d94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adina=20=C8=9Aeudan?= Date: Wed, 1 Nov 2023 01:33:36 +0200 Subject: [PATCH] RED-7856: Sort dossier states stats by rank --- .../template-stats.component.html | 6 +-- .../dossiers-listing-details.component.ts | 7 ++- .../app/services/translate-chart.service.ts | 45 ++++++++++++++----- yarn.lock | 8 ++-- 4 files changed, 47 insertions(+), 19 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 e0719929d..ac1b3498c 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 @@ -1,8 +1,8 @@ @@ -39,7 +39,7 @@
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 f5acb2e40..0fe4c0015 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 @@ -17,13 +17,16 @@ export class DossiersListingDetailsComponent { readonly documentsChartConfig$: Observable; readonly dossiersChartConfig$: Observable; - constructor(dashboardStatsService: DashboardStatsService, private readonly _translateChartService: TranslateChartService) { + constructor( + dashboardStatsService: DashboardStatsService, + private readonly _translateChartService: TranslateChartService, + ) { const dossierTemplateId = getParam(DOSSIER_TEMPLATE_ID); this.stats$ = dashboardStatsService.getEntityChanged$(dossierTemplateId); 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..4303c7f26 100644 --- a/apps/red-ui/src/app/services/translate-chart.service.ts +++ b/apps/red-ui/src/app/services/translate-chart.service.ts @@ -5,28 +5,53 @@ 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', }) export class TranslateChartService { - constructor(private readonly _translateService: TranslateService, private readonly _dossierStatesMapService: DossierStatesMapService) {} + constructor( + private readonly _translateService: TranslateService, + private readonly _dossierStatesMapService: DossierStatesMapService, + ) {} translateLabels(config: DonutChartConfig[]): DonutChartConfig[] { 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[] { diff --git a/yarn.lock b/yarn.lock index 005c97968..c3510c2f4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3763,10 +3763,10 @@ node-addon-api "^3.2.1" node-gyp-build "^4.3.0" -"@pdftron/webviewer@10.4.0": - version "10.4.0" - resolved "https://registry.yarnpkg.com/@pdftron/webviewer/-/webviewer-10.4.0.tgz#9f59c38f0ec1b7cc08d446ca1a9abc94aa549c41" - integrity sha512-aJOuAYEnkxn/tCaB1m548VfxILbBesLB7Fd1S15/KvjklM9nCQjwJv4+R99zL+WaxvVet9kem5LVPoiGXDHXmg== +"@pdftron/webviewer@10.5.0": + version "10.5.0" + resolved "https://registry.yarnpkg.com/@pdftron/webviewer/-/webviewer-10.5.0.tgz#d65ee2b7b10858596dadb7764c477f090039e27b" + integrity sha512-lgNQyMGVj38E5RlzTAhlfXSbODBNFSOS5H47URfhthcV9No1ErMb342TniXTa77XLClddvfrPkvXg3PM6gJgEA== "@phenomnomnominal/tsquery@^4.1.1": version "4.2.0"