RED-7856: Sort dossier states stats by rank
This commit is contained in:
parent
946bc87198
commit
19a47bccec
@ -1,8 +1,8 @@
|
||||
<a
|
||||
*ngIf="stats as dossierTemplate"
|
||||
[attr.help-mode-key]="!dossierTemplate.isEmpty ? 'open_dossier_template' : null"
|
||||
[class.empty]="dossierTemplate.isEmpty"
|
||||
[routerLink]="dossierTemplate.isEmpty ? null : ['..', dossierTemplate.dossierTemplateId, 'dossiers']"
|
||||
[attr.help-mode-key]="!dossierTemplate.isEmpty ? 'open_dossier_template' : null"
|
||||
class="dialog"
|
||||
>
|
||||
<ng-container *ngIf="!dossierTemplate.isEmpty; else empty">
|
||||
@ -39,7 +39,7 @@
|
||||
</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 }]"
|
||||
@ -72,9 +72,9 @@
|
||||
<iqser-icon-button
|
||||
(action)="newDossier()"
|
||||
*ngIf="permissionsService.canCreateDossier(dossierTemplate)"
|
||||
[attr.help-mode-key]="'new_dossier'"
|
||||
[label]="'dashboard.empty-template.new-dossier' | translate"
|
||||
[type]="iconButtonTypes.primary"
|
||||
[attr.help-mode-key]="'new_dossier'"
|
||||
icon="iqser:plus"
|
||||
></iqser-icon-button>
|
||||
</ng-template>
|
||||
|
||||
@ -17,13 +17,16 @@ export class DossiersListingDetailsComponent {
|
||||
readonly documentsChartConfig$: Observable<DonutChartConfig[]>;
|
||||
readonly dossiersChartConfig$: Observable<DonutChartConfig[]>;
|
||||
|
||||
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),
|
||||
|
||||
@ -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[] {
|
||||
|
||||
@ -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"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user