RED-7856: Sort dossier states stats by rank
This commit is contained in:
parent
946bc87198
commit
19a47bccec
@ -1,8 +1,8 @@
|
|||||||
<a
|
<a
|
||||||
*ngIf="stats as dossierTemplate"
|
*ngIf="stats as dossierTemplate"
|
||||||
|
[attr.help-mode-key]="!dossierTemplate.isEmpty ? 'open_dossier_template' : null"
|
||||||
[class.empty]="dossierTemplate.isEmpty"
|
[class.empty]="dossierTemplate.isEmpty"
|
||||||
[routerLink]="dossierTemplate.isEmpty ? null : ['..', dossierTemplate.dossierTemplateId, 'dossiers']"
|
[routerLink]="dossierTemplate.isEmpty ? null : ['..', dossierTemplate.dossierTemplateId, 'dossiers']"
|
||||||
[attr.help-mode-key]="!dossierTemplate.isEmpty ? 'open_dossier_template' : null"
|
|
||||||
class="dialog"
|
class="dialog"
|
||||||
>
|
>
|
||||||
<ng-container *ngIf="!dossierTemplate.isEmpty; else empty">
|
<ng-container *ngIf="!dossierTemplate.isEmpty; else empty">
|
||||||
@ -39,7 +39,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="flex-3">
|
<div class="flex-3">
|
||||||
<redaction-donut-chart
|
<redaction-donut-chart
|
||||||
[config]="translateChartService.translateDossierStates(dossierTemplate.dossiersChartConfig, dossierTemplate.id)"
|
[config]="translateChartService.translateAndSortDossierStates(dossierTemplate.dossiersChartConfig, dossierTemplate.id)"
|
||||||
[radius]="63"
|
[radius]="63"
|
||||||
[strokeWidth]="15"
|
[strokeWidth]="15"
|
||||||
[subtitles]="['dossier-template-stats.active-dossiers' | translate: { count: dossierTemplate.numberOfActiveDossiers }]"
|
[subtitles]="['dossier-template-stats.active-dossiers' | translate: { count: dossierTemplate.numberOfActiveDossiers }]"
|
||||||
@ -72,9 +72,9 @@
|
|||||||
<iqser-icon-button
|
<iqser-icon-button
|
||||||
(action)="newDossier()"
|
(action)="newDossier()"
|
||||||
*ngIf="permissionsService.canCreateDossier(dossierTemplate)"
|
*ngIf="permissionsService.canCreateDossier(dossierTemplate)"
|
||||||
|
[attr.help-mode-key]="'new_dossier'"
|
||||||
[label]="'dashboard.empty-template.new-dossier' | translate"
|
[label]="'dashboard.empty-template.new-dossier' | translate"
|
||||||
[type]="iconButtonTypes.primary"
|
[type]="iconButtonTypes.primary"
|
||||||
[attr.help-mode-key]="'new_dossier'"
|
|
||||||
icon="iqser:plus"
|
icon="iqser:plus"
|
||||||
></iqser-icon-button>
|
></iqser-icon-button>
|
||||||
</ng-template>
|
</ng-template>
|
||||||
|
|||||||
@ -17,13 +17,16 @@ export class DossiersListingDetailsComponent {
|
|||||||
readonly documentsChartConfig$: Observable<DonutChartConfig[]>;
|
readonly documentsChartConfig$: Observable<DonutChartConfig[]>;
|
||||||
readonly dossiersChartConfig$: 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);
|
const dossierTemplateId = getParam(DOSSIER_TEMPLATE_ID);
|
||||||
this.stats$ = dashboardStatsService.getEntityChanged$(dossierTemplateId);
|
this.stats$ = dashboardStatsService.getEntityChanged$(dossierTemplateId);
|
||||||
|
|
||||||
this.dossiersChartConfig$ = this.stats$.pipe(
|
this.dossiersChartConfig$ = this.stats$.pipe(
|
||||||
map(stats => stats.dossiersChartConfig),
|
map(stats => stats.dossiersChartConfig),
|
||||||
map(data => _translateChartService.translateDossierStates(data, dossierTemplateId)),
|
map(data => _translateChartService.translateAndSortDossierStates(data, dossierTemplateId)),
|
||||||
);
|
);
|
||||||
this.documentsChartConfig$ = this.stats$.pipe(
|
this.documentsChartConfig$ = this.stats$.pipe(
|
||||||
map(stats => stats.documentsChartConfig),
|
map(stats => stats.documentsChartConfig),
|
||||||
|
|||||||
@ -5,28 +5,53 @@ import { rolesTranslations } from '@translations/roles-translations';
|
|||||||
import { workflowFileStatusTranslations } from '@translations/file-status-translations';
|
import { workflowFileStatusTranslations } from '@translations/file-status-translations';
|
||||||
import { DossierStatesMapService } from './entity-services/dossier-states-map.service';
|
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({
|
@Injectable({
|
||||||
providedIn: 'root',
|
providedIn: 'root',
|
||||||
})
|
})
|
||||||
export class TranslateChartService {
|
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[] {
|
translateLabels(config: DonutChartConfig[]): DonutChartConfig[] {
|
||||||
return config.map(val => ({ ...val, label: this._translateService.instant(val.label) }));
|
return config.map(val => ({ ...val, label: this._translateService.instant(val.label) }));
|
||||||
}
|
}
|
||||||
|
|
||||||
translateDossierStates(config: DonutChartConfig[], dossierTemplateId: string): DonutChartConfig[] {
|
translateAndSortDossierStates(config: DonutChartConfig[], dossierTemplateId: string): DonutChartConfig[] {
|
||||||
return config.map(val => {
|
return config
|
||||||
|
.map(val => {
|
||||||
if (val.key === 'undefined') {
|
if (val.key === 'undefined') {
|
||||||
return { ...val, label: this._translateService.instant(val.label) };
|
return { ...val, label: this._translateService.instant(val.label) };
|
||||||
}
|
}
|
||||||
const dossierState = this._dossierStatesMapService.get(dossierTemplateId, val.key);
|
const dossierState = this._dossierStatesMapService.get(dossierTemplateId, val.key);
|
||||||
return { ...val, label: dossierState.name, color: dossierState.color };
|
return { ...val, label: dossierState.name, color: dossierState.color };
|
||||||
});
|
})
|
||||||
|
.sort((a: DonutChartConfig, b: DonutChartConfig) => sortStatesByRank(a, b, dossierTemplateId, this._dossierStatesMapService));
|
||||||
}
|
}
|
||||||
|
|
||||||
translateWorkflowStatus(config: DonutChartConfig[]): DonutChartConfig[] {
|
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[] {
|
translateRoles(config: DonutChartConfig[]): DonutChartConfig[] {
|
||||||
|
|||||||
@ -3763,10 +3763,10 @@
|
|||||||
node-addon-api "^3.2.1"
|
node-addon-api "^3.2.1"
|
||||||
node-gyp-build "^4.3.0"
|
node-gyp-build "^4.3.0"
|
||||||
|
|
||||||
"@pdftron/webviewer@10.4.0":
|
"@pdftron/webviewer@10.5.0":
|
||||||
version "10.4.0"
|
version "10.5.0"
|
||||||
resolved "https://registry.yarnpkg.com/@pdftron/webviewer/-/webviewer-10.4.0.tgz#9f59c38f0ec1b7cc08d446ca1a9abc94aa549c41"
|
resolved "https://registry.yarnpkg.com/@pdftron/webviewer/-/webviewer-10.5.0.tgz#d65ee2b7b10858596dadb7764c477f090039e27b"
|
||||||
integrity sha512-aJOuAYEnkxn/tCaB1m548VfxILbBesLB7Fd1S15/KvjklM9nCQjwJv4+R99zL+WaxvVet9kem5LVPoiGXDHXmg==
|
integrity sha512-lgNQyMGVj38E5RlzTAhlfXSbODBNFSOS5H47URfhthcV9No1ErMb342TniXTa77XLClddvfrPkvXg3PM6gJgEA==
|
||||||
|
|
||||||
"@phenomnomnominal/tsquery@^4.1.1":
|
"@phenomnomnominal/tsquery@^4.1.1":
|
||||||
version "4.2.0"
|
version "4.2.0"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user