RED-3457: Set dossier status to null

This commit is contained in:
Adina Țeudan 2022-03-10 13:47:34 +02:00
parent 601817ec49
commit 7b4d568165
3 changed files with 35 additions and 22 deletions

View File

@ -44,10 +44,10 @@
<div class="iqser-input-group w-300">
<label translate="edit-dossier-dialog.general-info.form.dossier-status.label"></label>
<mat-select [placeholder]="statusPlaceholder" formControlName="dossierStatusId">
<mat-option *ngFor="let state of states" [value]="state.dossierStatusId">
<mat-option *ngFor="let stateId of states" [value]="stateId">
<div class="flex-align-items-center">
<redaction-small-chip [color]="state.color"></redaction-small-chip>
<div>{{ state.name }}</div>
<redaction-small-chip *ngIf="!!stateId" [color]="getStateColor(stateId)"></redaction-small-chip>
<div>{{ getStateName(stateId) }}</div>
</div>
</mat-option>
</mat-select>

View File

@ -1,4 +1,4 @@
import { Component, Input, OnInit } from '@angular/core';
import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import * as moment from 'moment';
import { Dossier, DossierState, IDossierRequest, IDossierTemplate } from '@red/domain';
@ -24,6 +24,7 @@ import { ArchivedDossiersService } from '@services/dossiers/archived-dossiers.se
selector: 'redaction-edit-dossier-general-info',
templateUrl: './edit-dossier-general-info.component.html',
styleUrls: ['./edit-dossier-general-info.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
})
export class EditDossierGeneralInfoComponent implements OnInit, EditDossierSectionInterface {
readonly iconButtonTypes = IconButtonTypes;
@ -31,9 +32,10 @@ export class EditDossierGeneralInfoComponent implements OnInit, EditDossierSecti
@Input() dossier: Dossier;
form: FormGroup;
statusPlaceholder: string;
hasDueDate: boolean;
dossierTemplates: IDossierTemplate[];
states: DossierState[];
states: string[];
currentStatus: DossierState;
constructor(
@ -78,25 +80,19 @@ export class EditDossierGeneralInfoComponent implements OnInit, EditDossierSecti
return this.hasDueDate && this.form.get('dueDate').value === null;
}
get statusPlaceholder(): string {
if (this.states.length === 0) {
return this._translateService.instant('edit-dossier-dialog.general-info.form.dossier-status.no-status-placeholder');
}
return (
this.currentStatus?.name ?? this._translateService.instant('edit-dossier-dialog.general-info.form.dossier-status.placeholder')
);
}
ngOnInit() {
this.states = this._dossierStateService.all.filter(s => s.dossierTemplateId === this.dossier.dossierTemplateId);
this.states = [
null,
...this._dossierStateService.all.filter(s => s.dossierTemplateId === this.dossier.dossierTemplateId).map(s => s.id),
];
this.statusPlaceholder = this.#statusPlaceholder;
this.#filterInvalidDossierTemplates();
this.form = this.#getForm();
if (!this.permissionsService.canEditDossier(this.dossier)) {
this.form.disable();
}
if (this.dossier.dossierStatusId) {
this.currentStatus = this._dossierStateService.all.find(s => s.dossierStatusId === this.dossier.dossierStatusId);
this.currentStatus = this._dossierStateService.find(this.dossier.dossierStatusId);
}
this.hasDueDate = !!this.dossier.dueDate;
}
@ -183,12 +179,31 @@ export class EditDossierGeneralInfoComponent implements OnInit, EditDossierSecti
},
Validators.required,
],
dossierStatusId: [{ value: this.dossier.dossierStatusId, disabled: !this.states.length || !this.dossier.isActive }],
dossierStatusId: [{ value: this.dossier.dossierStatusId, disabled: this.states.length === 1 || !this.dossier.isActive }],
description: [formFieldWithArchivedCheck(this.dossier.description)],
dueDate: [formFieldWithArchivedCheck(this.dossier.dueDate)],
});
}
get #statusPlaceholder(): string {
return this._translateService.instant(
this.states.length === 1
? 'edit-dossier-dialog.general-info.form.dossier-status.no-status-placeholder'
: 'edit-dossier-dialog.general-info.form.dossier-status.placeholder',
);
}
getStateName(stateId: string): string {
return (
this._dossierStateService.find(stateId)?.name ||
this._translateService.instant('edit-dossier-dialog.general-info.form.dossier-status.placeholder')
);
}
getStateColor(stateId: string): string {
return this._dossierStateService.find(stateId).color;
}
#filterInvalidDossierTemplates() {
this.dossierTemplates = this._dossierTemplatesService.all.filter(r => {
if (this.dossier?.dossierTemplateId === r.dossierTemplateId) {

View File

@ -3,7 +3,7 @@ import { Dossier, DossierState } from '@red/domain';
import { DossierStateService } from '@services/entity-services/dossier-state.service';
@Component({
selector: 'redaction-dossier-status',
selector: 'redaction-dossier-status [dossier]',
templateUrl: './dossier-status.component.html',
styleUrls: ['./dossier-status.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
@ -23,8 +23,6 @@ export class DossierStatusComponent implements OnInit, OnChanges {
}
#setState(): void {
if (this.dossier.dossierStatusId) {
this.currentState = this._dossierStateService.all.find(s => s.dossierStatusId === this.dossier.dossierStatusId);
}
this.currentState = this._dossierStateService.find(this.dossier.dossierStatusId);
}
}