diff --git a/apps/red-ui/src/app/guards/dossiers.guard.ts b/apps/red-ui/src/app/guards/dossiers.guard.ts
index 7f056bf71..59d87d968 100644
--- a/apps/red-ui/src/app/guards/dossiers.guard.ts
+++ b/apps/red-ui/src/app/guards/dossiers.guard.ts
@@ -2,6 +2,7 @@ import { Injectable } from '@angular/core';
import { CanActivate } from '@angular/router';
import { DossiersService } from '@services/entity-services/dossiers.service';
import { firstValueFrom } from 'rxjs';
+import { DossierStatsService } from '@services/entity-services/dossier-stats.service';
@Injectable({ providedIn: 'root' })
export class DossiersGuard implements CanActivate {
diff --git a/apps/red-ui/src/app/modules/admin/dialogs/confirm-delete-dossier-state-dialog/confirm-delete-dossier-state-dialog.component.html b/apps/red-ui/src/app/modules/admin/dialogs/confirm-delete-dossier-state-dialog/confirm-delete-dossier-state-dialog.component.html
index ff36577ae..0d2dc5004 100644
--- a/apps/red-ui/src/app/modules/admin/dialogs/confirm-delete-dossier-state-dialog/confirm-delete-dossier-state-dialog.component.html
+++ b/apps/red-ui/src/app/modules/admin/dialogs/confirm-delete-dossier-state-dialog/confirm-delete-dossier-state-dialog.component.html
@@ -13,8 +13,8 @@
{{ state.name }}
@@ -26,10 +26,7 @@
-
-
-
-
-
-
-
- {{ state.name }}
-
-
-
diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.scss b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.scss
index ad0894822..cadbd6f7a 100644
--- a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.scss
+++ b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.scss
@@ -26,4 +26,12 @@
.fields-container {
flex-direction: column;
+
+ &:first-child {
+ margin-right: 40px;
+ }
+}
+
+redaction-small-chip {
+ margin-right: 8px;
}
diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.ts b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.ts
index 54ef6987e..bf200a3bf 100644
--- a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.ts
+++ b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.ts
@@ -32,10 +32,11 @@ export class EditDossierGeneralInfoComponent implements OnInit, EditDossierSecti
hasDueDate: boolean;
dossierTemplates: IDossierTemplate[];
states: DossierState[];
+ currentStatus: DossierState;
constructor(
readonly permissionsService: PermissionsService,
- readonly stateService: DossierStateService,
+ private readonly _dossierStateService: DossierStateService,
private readonly _dossierTemplatesService: DossierTemplatesService,
private readonly _dossiersService: DossiersService,
private readonly _dossierStatsService: DossierStatsService,
@@ -77,7 +78,10 @@ export class EditDossierGeneralInfoComponent implements OnInit, EditDossierSecti
if (!this.permissionsService.canEditDossier(this.dossier)) {
this.form.disable();
}
- this.states = await firstValueFrom(this.stateService.loadAllForTemplate(this.dossier.dossierTemplateId));
+ this.states = this._dossierStateService.all.filter(s => s.dossierTemplateId === this.dossier.dossierTemplateId);
+ if (this.dossier.dossierStatusId) {
+ this.currentStatus = this._dossierStateService.all.find(s => s.dossierStatusId === this.dossier.dossierStatusId);
+ }
this.hasDueDate = !!this.dossier.dueDate;
}
diff --git a/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/dossiers-listing-status/dossiers-listing-status.component.html b/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/dossiers-listing-status/dossiers-listing-status.component.html
index c984f6d6e..3624dd196 100644
--- a/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/dossiers-listing-status/dossiers-listing-status.component.html
+++ b/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/dossiers-listing-status/dossiers-listing-status.component.html
@@ -1,13 +1,13 @@
-
+
-
{{ dossierState.name }}
-
+
{{ currentState.name }}
+
-
+
-
+
diff --git a/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/dossiers-listing-status/dossiers-listing-status.component.scss b/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/dossiers-listing-status/dossiers-listing-status.component.scss
index 0c4471d56..7d5a74298 100644
--- a/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/dossiers-listing-status/dossiers-listing-status.component.scss
+++ b/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/dossiers-listing-status/dossiers-listing-status.component.scss
@@ -5,10 +5,7 @@
width: 100%;
}
-.dossier-status-chip {
- width: 12px;
- height: 6px;
- border-radius: 6px;
+redaction-small-chip {
margin-left: 8px;
}
diff --git a/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/dossiers-listing-status/dossiers-listing-status.component.ts b/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/dossiers-listing-status/dossiers-listing-status.component.ts
index 925854463..385a727bb 100644
--- a/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/dossiers-listing-status/dossiers-listing-status.component.ts
+++ b/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/dossiers-listing-status/dossiers-listing-status.component.ts
@@ -1,8 +1,7 @@
import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';
-import { DossierState } from '../../../../../../../../../../libs/red-domain/src/lib/dossier-state';
import { Dossier, DossierStats } from '../../../../../../../../../../libs/red-domain/src';
-import { Observable } from 'rxjs';
import { DossierStateService } from '../../../../../../services/entity-services/dossier-state.service';
+import { DossierState } from '../../../../../../../../../../libs/red-domain/src/lib/dossier-state';
@Component({
selector: 'redaction-dossiers-listing-status',
@@ -11,15 +10,15 @@ import { DossierStateService } from '../../../../../../services/entity-services/
changeDetection: ChangeDetectionStrategy.OnPush,
})
export class DossiersListingStatusComponent implements OnInit {
- dossierState$: Observable;
@Input() stats: DossierStats;
@Input() dossier: Dossier;
+ currentState: DossierState;
constructor(private readonly _dossierStateService: DossierStateService) {}
ngOnInit(): void {
if (this.dossier.dossierStatusId) {
- this.dossierState$ = this._dossierStateService.getById(this.dossier.dossierStatusId);
+ this.currentState = this._dossierStateService.all.find(s => s.dossierStatusId === this.dossier.dossierStatusId);
}
}
}
diff --git a/apps/red-ui/src/app/services/entity-services/dossier-state.service.ts b/apps/red-ui/src/app/services/entity-services/dossier-state.service.ts
index b5d3f8608..5a8218cfa 100644
--- a/apps/red-ui/src/app/services/entity-services/dossier-state.service.ts
+++ b/apps/red-ui/src/app/services/entity-services/dossier-state.service.ts
@@ -1,13 +1,15 @@
import { Injectable, Injector } from '@angular/core';
-import { EntitiesService, RequiredParam, Validate } from '../../../../../../libs/common-ui/src';
+import { EntitiesService, mapEach, RequiredParam, Validate } from '../../../../../../libs/common-ui/src';
import { DossierState, IDossierState } from '../../../../../../libs/red-domain/src/lib/dossier-state';
-import { Observable } from 'rxjs';
+import { forkJoin, Observable, switchMap } from 'rxjs';
+import { DossierTemplatesService } from '@services/entity-services/dossier-templates.service';
+import { map } from 'rxjs/operators';
@Injectable({
providedIn: 'root',
})
export class DossierStateService extends EntitiesService {
- constructor(protected readonly _injector: Injector) {
+ constructor(protected readonly _injector: Injector, private readonly _dossierTemplatesService: DossierTemplatesService) {
super(_injector, DossierState, 'dossier-status');
}
@@ -21,6 +23,15 @@ export class DossierStateService extends EntitiesService {
+ return this._dossierTemplatesService.all$.pipe(
+ mapEach(template => template.dossierTemplateId),
+ mapEach(id => this.loadAllForTemplate(id)),
+ switchMap(all => forkJoin(all)),
+ map(value => value.flatMap(item => item)),
+ );
+ }
+
@Validate()
deleteAndReplace(@RequiredParam() dossierStatusId: string, @RequiredParam() replaceDossierStatusId: string) {
const url = `${this._defaultModelPath}/${dossierStatusId}?replaceDossierStatusId=${replaceDossierStatusId}`;
diff --git a/apps/red-ui/src/app/services/entity-services/dossiers.service.ts b/apps/red-ui/src/app/services/entity-services/dossiers.service.ts
index 0babadb88..7760c7a7d 100644
--- a/apps/red-ui/src/app/services/entity-services/dossiers.service.ts
+++ b/apps/red-ui/src/app/services/entity-services/dossiers.service.ts
@@ -7,6 +7,7 @@ import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { HttpErrorResponse, HttpStatusCode } from '@angular/common/http';
import { DossierStatsService } from '@services/entity-services/dossier-stats.service';
import { CHANGED_CHECK_INTERVAL } from '@utils/constants';
+import { DossierStateService } from '@services/entity-services/dossier-state.service';
export interface IDossiersStats {
totalPeople: number;
@@ -37,6 +38,7 @@ export class DossiersService extends EntitiesService {
private readonly _toaster: Toaster,
protected readonly _injector: Injector,
private readonly _dossierStatsService: DossierStatsService,
+ private readonly _dossierStateService: DossierStateService,
) {
super(_injector, Dossier, 'dossier');
@@ -54,6 +56,7 @@ export class DossiersService extends EntitiesService {
mapEach(entity => new Dossier(entity)),
/* Load stats before updating entities */
switchMap(dossiers => this._dossierStatsService.getFor(dossierIds(dossiers)).pipe(mapTo(dossiers))),
+ switchMap(dossiers => this._dossierStateService.loadAllForAllTemplates().pipe(mapTo(dossiers))),
tap(dossiers => this.setEntities(dossiers)),
);
}
diff --git a/apps/red-ui/src/assets/i18n/en.json b/apps/red-ui/src/assets/i18n/en.json
index 4898fb78f..d7c7a9173 100644
--- a/apps/red-ui/src/assets/i18n/en.json
+++ b/apps/red-ui/src/assets/i18n/en.json
@@ -429,7 +429,6 @@
"status": "Replace Status",
"status-placeholder": "Choose another status"
},
- "delete-only": "Delete Only",
"delete-replace": "Delete and Replace",
"cancel": "Cancel"
},
@@ -1008,7 +1007,10 @@
"placeholder": "Enter Description"
},
"due-date": "Due Date",
- "dossier-status": "Dossier Status",
+ "dossier-status": {
+ "label": "Dossier Status",
+ "placeholder": "No status assigned"
+ },
"name": {
"label": "Dossier Name",
"placeholder": "Enter Name"