RED-7856: Sort dossier states stats by rank

This commit is contained in:
Adina Țeudan 2023-11-01 01:30:09 +02:00
parent d2ac4320dc
commit 30cc298056
3 changed files with 40 additions and 16 deletions

View File

@ -13,7 +13,7 @@
<mat-icon svgIcon="red:archive"></mat-icon>
<span
[innerHTML]="
'dossier-template-stats.archived-dossiers' | translate: { count: dossierTemplate.numberOfArchivedDossiers }
'dossier-template-stats.archived-dossiers' | translate : { count: dossierTemplate.numberOfArchivedDossiers }
"
></span>
</div>
@ -21,28 +21,30 @@
<mat-icon svgIcon="iqser:trash"></mat-icon>
<span
[innerHTML]="
'dossier-template-stats.deleted-dossiers' | translate: { count: dossierTemplate.numberOfDeletedDossiers }
'dossier-template-stats.deleted-dossiers' | translate : { count: dossierTemplate.numberOfDeletedDossiers }
"
></span>
</div>
<div>
<mat-icon svgIcon="red:user"></mat-icon>
<span [innerHTML]="'dossier-template-stats.total-people' | translate: { count: dossierTemplate.numberOfPeople }"></span>
<span
[innerHTML]="'dossier-template-stats.total-people' | translate : { count: dossierTemplate.numberOfPeople }"
></span>
</div>
<div>
<mat-icon svgIcon="iqser:pages"></mat-icon>
<span
[innerHTML]="'dossier-template-stats.analyzed-pages' | translate: { count: dossierTemplate.numberOfPages }"
[innerHTML]="'dossier-template-stats.analyzed-pages' | translate : { count: dossierTemplate.numberOfPages }"
></span>
</div>
</div>
</div>
<div class="flex-3">
<redaction-donut-chart
[config]="translateChartService.translateDossierStates(dossierTemplate.dossiersChartConfig, dossierTemplate.id)"
[config]="translateChartService.translateAndSortDossierStates(dossierTemplate.dossiersChartConfig, dossierTemplate.id)"
[radius]="63"
[strokeWidth]="15"
[subtitles]="['dossier-template-stats.active-dossiers' | translate: { count: dossierTemplate.numberOfActiveDossiers }]"
[subtitles]="['dossier-template-stats.active-dossiers' | translate : { count: dossierTemplate.numberOfActiveDossiers }]"
direction="row"
totalType="sum"
></redaction-donut-chart>

View File

@ -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),

View File

@ -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[] {