diff --git a/apps/red-ui/src/app/modules/admin/dialogs/add-edit-dossier-state-dialog/add-edit-dossier-state-dialog.component.html b/apps/red-ui/src/app/modules/admin/dialogs/add-edit-dossier-state-dialog/add-edit-dossier-state-dialog.component.html index 7c0c7d695..4bb4a6f4d 100644 --- a/apps/red-ui/src/app/modules/admin/dialogs/add-edit-dossier-state-dialog/add-edit-dossier-state-dialog.component.html +++ b/apps/red-ui/src/app/modules/admin/dialogs/add-edit-dossier-state-dialog/add-edit-dossier-state-dialog.component.html @@ -1,8 +1,8 @@
- +
diff --git a/apps/red-ui/src/app/modules/admin/dialogs/add-edit-dossier-state-dialog/add-edit-dossier-state-dialog.component.ts b/apps/red-ui/src/app/modules/admin/dialogs/add-edit-dossier-state-dialog/add-edit-dossier-state-dialog.component.ts index 6e3193355..cbe065049 100644 --- a/apps/red-ui/src/app/modules/admin/dialogs/add-edit-dossier-state-dialog/add-edit-dossier-state-dialog.component.ts +++ b/apps/red-ui/src/app/modules/admin/dialogs/add-edit-dossier-state-dialog/add-edit-dossier-state-dialog.component.ts @@ -2,11 +2,11 @@ import { ChangeDetectionStrategy, Component, Inject, Injector } from '@angular/c import { BaseDialogComponent } from '../../../../../../../../libs/common-ui/src'; import { FormBuilder, FormGroup, Validators } from '@angular/forms'; import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; -import { IDossierState } from '../../../../../../../../libs/red-domain/src/lib/dossier-state'; +import { IDossierState } from '@red/domain'; interface DialogData { - dossierState: IDossierState; - dossierTemplateId: string; + readonly dossierState: IDossierState; + readonly dossierTemplateId: string; } @Component({ @@ -16,30 +16,35 @@ interface DialogData { changeDetection: ChangeDetectionStrategy.OnPush, }) export class AddEditDossierStateDialogComponent extends BaseDialogComponent { + readonly dossierState: IDossierState; + readonly dossierTemplateId: string; + constructor( private readonly _formBuilder: FormBuilder, protected readonly _injector: Injector, protected readonly _dialogRef: MatDialogRef, - @Inject(MAT_DIALOG_DATA) public data: DialogData, + @Inject(MAT_DIALOG_DATA) public readonly data: DialogData, ) { super(_injector, _dialogRef); - this.form = this._getForm(data.dossierState); + this.dossierState = data.dossierState; + this.dossierTemplateId = data.dossierTemplateId; + this.form = this.#getForm(); this.initialFormValue = this.form.getRawValue(); } save(): void { const dossierState: IDossierState = { - dossierStatusId: this.data.dossierState?.dossierStatusId, - dossierTemplateId: this.data.dossierTemplateId, + dossierStatusId: this.dossierState?.dossierStatusId, + dossierTemplateId: this.dossierTemplateId, ...this.form.getRawValue(), }; this._dialogRef.close(dossierState); } - private _getForm(dossierState: IDossierState): FormGroup { + #getForm(): FormGroup { return this._formBuilder.group({ - name: [dossierState?.name, Validators.required], - description: [dossierState?.description, Validators.required], + name: [this.dossierState?.name, Validators.required], + color: [this.dossierState?.color, Validators.required], }); } } 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 174896a32..6aa8cacc5 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 @@ -16,7 +16,8 @@ [placeholder]="'confirm-delete-dossier-state.form.status-placeholder' | translate" formControlName="replaceDossierStatusId" > - + {{ 'confirm-delete-dossier-state.form.status-placeholder' | translate }} + {{ state.name }} @@ -26,8 +27,8 @@
-
diff --git a/apps/red-ui/src/app/modules/admin/dialogs/confirm-delete-dossier-state-dialog/confirm-delete-dossier-state-dialog.component.ts b/apps/red-ui/src/app/modules/admin/dialogs/confirm-delete-dossier-state-dialog/confirm-delete-dossier-state-dialog.component.ts index 547990732..9c8117150 100644 --- a/apps/red-ui/src/app/modules/admin/dialogs/confirm-delete-dossier-state-dialog/confirm-delete-dossier-state-dialog.component.ts +++ b/apps/red-ui/src/app/modules/admin/dialogs/confirm-delete-dossier-state-dialog/confirm-delete-dossier-state-dialog.component.ts @@ -1,12 +1,12 @@ import { ChangeDetectionStrategy, Component, Inject } from '@angular/core'; -import { IDossierState } from '../../../../../../../../libs/red-domain/src/lib/dossier-state'; +import { IDossierState } from '@red/domain'; import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; import { FormBuilder, FormGroup } from '@angular/forms'; interface DialogData { - toBeDeletedState: IDossierState; - otherStates: IDossierState[]; - dossierCount: number; + readonly toBeDeletedState: IDossierState; + readonly otherStates: IDossierState[]; + readonly dossierCount: number; } @Component({ @@ -17,19 +17,25 @@ interface DialogData { }) export class ConfirmDeleteDossierStateDialogComponent { readonly form: FormGroup; + readonly toBeDeletedState: IDossierState; + readonly otherStates: IDossierState[]; + readonly dossierCount: number; constructor( private readonly _formBuilder: FormBuilder, readonly dialogRef: MatDialogRef, - @Inject(MAT_DIALOG_DATA) public data: DialogData, + @Inject(MAT_DIALOG_DATA) public readonly data: DialogData, ) { this.form = this._getForm(); + this.toBeDeletedState = data.toBeDeletedState; + this.otherStates = data.otherStates; + this.dossierCount = data.dossierCount; } get translateArgs() { return { - name: this.data.toBeDeletedState.name, - count: this.data.dossierCount, + name: this.toBeDeletedState.name, + count: this.dossierCount, }; } @@ -37,6 +43,18 @@ export class ConfirmDeleteDossierStateDialogComponent { return this.form.get('replaceDossierStatusId').value; } + get label(): string { + return this.replaceDossierStatusId ? 'confirm-delete-dossier-state.delete-replace' : 'confirm-delete-dossier-state.delete'; + } + + get afterCloseValue(): string | true { + if (this.replaceDossierStatusId) { + return this.replaceDossierStatusId; + } + + return true; + } + private _getForm(): FormGroup { return this._formBuilder.group({ replaceDossierStatusId: [null], diff --git a/apps/red-ui/src/app/modules/admin/screens/dossier-states-listing/dossier-states-listing-screen.component.html b/apps/red-ui/src/app/modules/admin/screens/dossier-states-listing/dossier-states-listing-screen.component.html index eff14a34f..9ce7e905f 100644 --- a/apps/red-ui/src/app/modules/admin/screens/dossier-states-listing/dossier-states-listing-screen.component.html +++ b/apps/red-ui/src/app/modules/admin/screens/dossier-states-listing/dossier-states-listing-screen.component.html @@ -34,15 +34,14 @@
- - - +
@@ -68,7 +67,7 @@
-
+
{{ state.name }}
diff --git a/apps/red-ui/src/app/modules/admin/screens/dossier-states-listing/dossier-states-listing-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/dossier-states-listing/dossier-states-listing-screen.component.ts index 3b532f3e0..fffd64809 100644 --- a/apps/red-ui/src/app/modules/admin/screens/dossier-states-listing/dossier-states-listing-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/dossier-states-listing/dossier-states-listing-screen.component.ts @@ -8,7 +8,7 @@ import { TableColumnConfig, Toaster, } from '../../../../../../../../libs/common-ui/src'; -import { DossierState, IDossierState } from '../../../../../../../../libs/red-domain/src/lib/dossier-state'; +import { DossierState, IDossierState } from '@red/domain'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { DossiersService } from '../../../../services/entity-services/dossiers.service'; import { DossierStateService } from '../../../../services/entity-services/dossier-state.service'; @@ -55,7 +55,7 @@ export class DossierStatesListingScreenComponent extends ListingComponent { - await this._loadData(); + await this.#loadData(); } openAddEditStateDialog($event: MouseEvent, dossierState?: IDossierState) { @@ -64,7 +64,7 @@ export class DossierStatesListingScreenComponent extends ListingComponent { - await this._createNewDossierStateAndRefreshView(newValue); + await this.#createNewDossierStateAndRefreshView(newValue); }); } @@ -75,17 +75,22 @@ export class DossierStatesListingScreenComponent extends ListingComponent state.dossierStatusId !== dossierState.dossierStatusId), dossierCount: dossierState.dossierCount, }; - this._dialogService.openDialog('deleteDossierState', $event, data, async (value: string) => { + this._dialogService.openDialog('deleteDossierState', $event, data, async (value: string | true) => { if (value) { - await firstValueFrom(this.dossierStateService.deleteAndReplace(dossierState.dossierStatusId, value)); + if (typeof value === 'string') { + await firstValueFrom(this.dossierStateService.deleteAndReplace(dossierState.dossierStatusId, value)); + } else { + await firstValueFrom(this.dossierStateService.delete(dossierState.dossierStatusId)); + } } await this._appStateService.refreshDossierTemplate(templateId); - await this._loadData(); + await this.#loadData(); }); } - private async _createNewDossierStateAndRefreshView(newValue: IDossierState): Promise { + async #createNewDossierStateAndRefreshView(newValue: IDossierState): Promise { + this._loadingService.start(); await firstValueFrom(this.dossierStateService.setDossierState(newValue)).catch(error => { if (error.status === HttpStatusCode.Conflict) { this._toaster.error(_('dossier-states-listing.error.conflict')); @@ -94,33 +99,33 @@ export class DossierStatesListingScreenComponent extends ListingComponent { + async #loadData(): Promise { this._loadingService.start(); await firstValueFrom(this._dossiersService.loadAll()); try { const templateId = this._dossierTemplatesService.activeDossierTemplateId; const dossierStates = this.dossierStateService.all.filter(d => d.dossierTemplateId === templateId); - this._setStatesCount(); - this.chartData = this._loadChartData(); + this.#setStatesCount(); + this.chartData = this.#loadChartData(); this.entitiesService.setEntities(dossierStates || []); } catch (e) {} this._loadingService.stop(); } - private _loadChartData(): DoughnutChartConfig[] { + #loadChartData(): DoughnutChartConfig[] { const config: DoughnutChartConfig[] = []; this.dossierStateService.all.forEach(state => { - config.push({ value: state.dossierCount, label: state.name, key: state.name, color: state.description }); + config.push({ value: state.dossierCount, label: state.name, key: state.name, color: state.color }); }); return config; } - private _setStatesCount(): void { + #setStatesCount(): void { this.dossierStateService.all.forEach( state => (state.dossierCount = this._dossiersService.getCountWithState(state.dossierStatusId)), ); diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.html b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.html index 7faada51b..31f08d1aa 100644 --- a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.html +++ b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.html @@ -65,7 +65,7 @@ >
- +
{{ state.name }}
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 16b5cc998..71531baa3 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 @@ -1,7 +1,7 @@ import { Component, Input, OnInit } from '@angular/core'; import { FormBuilder, FormGroup, Validators } from '@angular/forms'; import * as moment from 'moment'; -import { Dossier, IDossierRequest, IDossierTemplate } from '@red/domain'; +import { Dossier, DossierState, IDossierRequest, IDossierTemplate } from '@red/domain'; import { EditDossierSaveResult, EditDossierSectionInterface } from '../edit-dossier-section.interface'; import { DossiersDialogService } from '../../../services/dossiers-dialog.service'; import { PermissionsService } from '@services/permissions.service'; diff --git a/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/dossiers-listing-details/dossiers-listing-details.component.ts b/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/dossiers-listing-details/dossiers-listing-details.component.ts index d27fd37e3..d574ff242 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/dossiers-listing-details/dossiers-listing-details.component.ts +++ b/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/dossiers-listing-details/dossiers-listing-details.component.ts @@ -43,7 +43,7 @@ export class DossiersListingDetailsComponent { const config: DoughnutChartConfig[] = []; this._dossierStateService.all.forEach(state => { state.dossierCount = this.dossiersService.getCountWithState(state.dossierStatusId); - config.push({ value: state.dossierCount, label: state.name, color: state.description }); + config.push({ value: state.dossierCount, label: state.name, color: state.color }); }); const notAssignedLength = this.dossiersService.all.length - config.map(v => v.value).reduce((acc, val) => acc + val, 0); config.push({ 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 3624dd196..626b6ecbd 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,9 +1,10 @@
{{ currentState.name }}
- +
+
No status assigned
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 96710947d..61f1e16da 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,7 +1,7 @@ import { ChangeDetectionStrategy, Component, Input, OnChanges } from '@angular/core'; import { Dossier, DossierStats } from '../../../../../../../../../../libs/red-domain/src'; import { DossierStateService } from '../../../../../../services/entity-services/dossier-state.service'; -import { DossierState } from '../../../../../../../../../../libs/red-domain/src/lib/dossier-state'; +import { DossierState } from '@red/domain'; @Component({ selector: 'redaction-dossiers-listing-status', 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 44a82f9ee..a3c2edc54 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,6 +1,6 @@ import { Injectable, Injector } from '@angular/core'; -import { EntitiesService, mapEach, RequiredParam, Validate } from '../../../../../../libs/common-ui/src'; -import { DossierState, IDossierState } from '../../../../../../libs/red-domain/src/lib/dossier-state'; +import { EntitiesService, mapEach, RequiredParam, Validate } from '@iqser/common-ui'; +import { DossierState, IDossierState } from '@red/domain'; import { forkJoin, Observable, switchMap } from 'rxjs'; import { DossierTemplatesService } from '@services/entity-services/dossier-templates.service'; import { map, tap } from 'rxjs/operators'; 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 234707713..4787fdb30 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 @@ -62,17 +62,7 @@ export class DossiersService extends EntitiesService { } loadAllIfChanged(): Observable { - return this.hasChangesDetails$().pipe( - catchError(err => { - console.log('aaa', err); - return of(err); - }), - switchMap(changes => this.loadAll().pipe(mapTo(changes))), - catchError(err => { - console.log('bbb', err); - return of(err); - }), - ); + return this.hasChangesDetails$().pipe(switchMap(changes => this.loadAll().pipe(mapTo(changes)))); } hasChangesDetails$(): Observable { diff --git a/apps/red-ui/src/assets/i18n/en.json b/apps/red-ui/src/assets/i18n/en.json index bcc13bfb7..8b5820cf6 100644 --- a/apps/red-ui/src/assets/i18n/en.json +++ b/apps/red-ui/src/assets/i18n/en.json @@ -73,8 +73,8 @@ }, "add-edit-dossier-state": { "form": { - "description": "Hex Color", - "description-placeholder": "#", + "color": "Hex Color", + "color-placeholder": "#", "name": "Status Name", "name-placeholder": "Enter Name" }, @@ -411,6 +411,7 @@ "confirm-delete-dossier-state": { "cancel": "Cancel", "delete-replace": "Delete and Replace", + "delete": "Delete only", "form": { "status": "Replace Status", "status-placeholder": "Choose another status" diff --git a/libs/red-domain/src/index.ts b/libs/red-domain/src/index.ts index aee8ff159..e2d4bf0e4 100644 --- a/libs/red-domain/src/index.ts +++ b/libs/red-domain/src/index.ts @@ -19,3 +19,4 @@ export * from './lib/configuration'; export * from './lib/signature'; export * from './lib/legal-basis'; export * from './lib/dossier-stats'; +export * from './lib/dossier-state'; diff --git a/libs/red-domain/src/lib/dossier-state/dossier-state.model.ts b/libs/red-domain/src/lib/dossier-state/dossier-state.model.ts index 070171643..242a34ace 100644 --- a/libs/red-domain/src/lib/dossier-state/dossier-state.model.ts +++ b/libs/red-domain/src/lib/dossier-state/dossier-state.model.ts @@ -6,6 +6,7 @@ export class DossierState implements IDossierState, IListable { readonly dossierStatusId: string; readonly dossierTemplateId: string; readonly name: string; + readonly color: string; dossierCount?: number; constructor(dossierState: IDossierState) { @@ -13,6 +14,7 @@ export class DossierState implements IDossierState, IListable { this.dossierStatusId = dossierState.dossierStatusId; this.dossierTemplateId = dossierState.dossierTemplateId; this.name = dossierState.name; + this.color = dossierState.color; this.dossierCount = dossierState.dossierCount; } diff --git a/libs/red-domain/src/lib/dossier-state/dossier-state.ts b/libs/red-domain/src/lib/dossier-state/dossier-state.ts index 7ebd532e8..f7491e23b 100644 --- a/libs/red-domain/src/lib/dossier-state/dossier-state.ts +++ b/libs/red-domain/src/lib/dossier-state/dossier-state.ts @@ -3,5 +3,6 @@ export interface IDossierState { dossierStatusId: string; dossierTemplateId: string; name: string; + color: string; dossierCount?: number; }