diff --git a/src/app/shared/components/dialogs/shared-organizational-unit-dissemination-policy-parameters/shared-organizational-unit-dissemination-policy-parameters.dialog.html b/src/app/shared/components/dialogs/shared-organizational-unit-dissemination-policy-parameters/shared-organizational-unit-dissemination-policy-parameters.dialog.html index 30369feb5bbc74adc513be0d3927dcd1b37fc6bf..cc5e8f262e6d4209eb233a3eec4ca1ae20d84dc8 100644 --- a/src/app/shared/components/dialogs/shared-organizational-unit-dissemination-policy-parameters/shared-organizational-unit-dissemination-policy-parameters.dialog.html +++ b/src/app/shared/components/dialogs/shared-organizational-unit-dissemination-policy-parameters/shared-organizational-unit-dissemination-policy-parameters.dialog.html @@ -1,17 +1,22 @@ <solidify-base-action-dialog [titleToTranslate]="labelTranslateEnum.disseminationPolicy | translate"> <div class="form"> - <solidify-searchable-single-select *ngIf="formControlDisseminationPolicy" - [formControl]="formControlDisseminationPolicy" - [readonly]="formControlDisseminationPolicy.disabled" - [labelKey]="'name'" - [placeholder]="labelTranslateEnum.disseminationPolicy | translate" - [required]="formValidationHelper.hasRequiredField(formControlDisseminationPolicy)" - [resourceNameSpace]="sharedDisseminationPolicyActionNameSpace" - [state]="sharedDisseminationPolicyState" - [valueKey]="'resId'" - (valueChange)="selectDisseminationPolicy($event)" - > - </solidify-searchable-single-select> + <mat-form-field *ngIf="formControlDisseminationPolicy as fd" + [class.mat-form-field-invalid]="formValidationHelper.hasRequiredField(formControlDisseminationPolicy)" + solidifyTooltipOnEllipsis> + <mat-label>{{labelTranslateEnum.disseminationPolicy | translate}}</mat-label> + <mat-select [solidifyDataTest]="dataTestEnum.depositDataCategory" + [formControl]="fd" + (selectionChange)="selectDisseminationPolicy($event.value)" + > + <mat-option *ngFor="let ds of disseminationPolicies" + [value]="ds" + solidifyTooltipOnEllipsis + > + {{ ds.name | translate}} + </mat-option> + </mat-select> + </mat-form-field> + <!-- single select du mat du materials --> <mat-form-field *ngFor="let fd of formValidationHelper.getListFormControlFromFormGroup($any(formGroup))" [appearance]="appearanceInputMaterial" diff --git a/src/app/shared/components/dialogs/shared-organizational-unit-dissemination-policy-parameters/shared-organizational-unit-dissemination-policy-parameters.dialog.ts b/src/app/shared/components/dialogs/shared-organizational-unit-dissemination-policy-parameters/shared-organizational-unit-dissemination-policy-parameters.dialog.ts index 2855e6b5f243a660c754bb6011b609e35e8000b6..3a5dded735ff93470cff68f3c728d506a53555d4 100644 --- a/src/app/shared/components/dialogs/shared-organizational-unit-dissemination-policy-parameters/shared-organizational-unit-dissemination-policy-parameters.dialog.ts +++ b/src/app/shared/components/dialogs/shared-organizational-unit-dissemination-policy-parameters/shared-organizational-unit-dissemination-policy-parameters.dialog.ts @@ -23,8 +23,10 @@ import { ChangeDetectionStrategy, + ChangeDetectorRef, Component, Inject, + OnInit, } from "@angular/core"; import { FormBuilder, @@ -42,8 +44,9 @@ import { } from "@models"; import {SharedAbstractDialog} from "@shared/components/dialogs/shared-abstract/shared-abstract.dialog"; import {BaseFormDefinition} from "@shared/models/base-form-definition.model"; -import {sharedDisseminationPolicyActionNameSpace} from "@shared/stores/dissemination-policy/shared-dissemination-policy.action"; -import {SharedDisseminationPolicyState} from "@shared/stores/dissemination-policy/shared-dissemination-policy.state"; +import { + SharedDisseminationPolicyAction, +} from "@shared/stores/dissemination-policy/shared-dissemination-policy.action"; import { FormValidationHelper, isNotNullNorUndefined, @@ -52,10 +55,13 @@ import { MappingObject, MappingObjectUtil, PropertyName, - ResourceNameSpace, SolidifyValidator, + StoreUtil, StringUtil, } from "solidify-frontend"; +import {Enums} from "@enums"; +import {Actions, Store} from "@ngxs/store"; +import {Observable} from "rxjs"; @Component({ selector: "dlcm-shared-organizational-unit-dissemination-policy-parameters-dialog", @@ -63,14 +69,14 @@ import { styleUrls: ["./shared-organizational-unit-dissemination-policy-parameters.dialog.scss"], changeDetection: ChangeDetectionStrategy.OnPush, }) -export class SharedOrganizationalUnitDisseminationPolicyParametersDialog extends SharedAbstractDialog<SharedOrganizationalUnitDisseminationPolicyParametersDialogData, OrganizationalUnitDisseminationPolicyContainer> { +export class SharedOrganizationalUnitDisseminationPolicyParametersDialog extends SharedAbstractDialog<SharedOrganizationalUnitDisseminationPolicyParametersDialogData, OrganizationalUnitDisseminationPolicyContainer> implements OnInit { formDefinition: FormComponentFormDefinition = new FormComponentFormDefinition(); formControlDisseminationPolicy: FormControl; formGroup: FormGroup; - sharedDisseminationPolicyState: typeof SharedDisseminationPolicyState = SharedDisseminationPolicyState; - sharedDisseminationPolicyActionNameSpace: ResourceNameSpace = sharedDisseminationPolicyActionNameSpace; + disseminationPolicies: DisseminationPolicy[]; + isLoadingObs: Observable<boolean>; get isCreateMode(): boolean { return isNullOrUndefined(this.data.organizationalUnitDisseminationPolicyContainer); @@ -90,7 +96,10 @@ export class SharedOrganizationalUnitDisseminationPolicyParametersDialog extends constructor(protected readonly _dialogRef: MatDialogRef<SharedOrganizationalUnitDisseminationPolicyParametersDialog>, @Inject(MAT_DIALOG_DATA) public readonly data: SharedOrganizationalUnitDisseminationPolicyParametersDialogData, - private readonly _fb: FormBuilder) { + private readonly _fb: FormBuilder, + private readonly _actions$: Actions, + private readonly _store: Store, + private readonly _changeDetector: ChangeDetectorRef) { super(_dialogRef, data); this.formControlDisseminationPolicy = new FormControl(this.data.organizationalUnitDisseminationPolicyContainer?.resId ?? "", [Validators.required, SolidifyValidator]); @@ -105,7 +114,29 @@ export class SharedOrganizationalUnitDisseminationPolicyParametersDialog extends } } + ngOnInit(): void { + this._dispatchGetActionToRetrieveLabel(); + } + + private _dispatchGetActionToRetrieveLabel(): void { + const key = this.formControlDisseminationPolicy.value; + this.subscribe(StoreUtil.dispatchActionAndWaitForSubActionCompletion(this._store, this._actions$, + new SharedDisseminationPolicyAction.GetAll(key), + SharedDisseminationPolicyAction.GetAllSuccess, + action => { + this.disseminationPolicies = action.list._data.filter(policy => (policy.type !== Enums.DisseminationPolicy.TypeEnum.PUBLIC + && policy.type !== Enums.DisseminationPolicy.TypeEnum.ARCHIVIST)); + }, + SharedDisseminationPolicyAction.GetAllFail, + action => { + this._changeDetector.detectChanges(); + })); + } + private _bindParametersToForm(parameters: MappingObject<string, string>): void { + // Clear form group by creating a new empty form group + this.formGroup = this._fb.group({}); + // Add new controls that correspond to the parameters MappingObjectUtil.keys(parameters).forEach(key => { this.formGroup.addControl(key, this._fb.control(parameters[key] ?? "", [Validators.required, SolidifyValidator])); }); @@ -124,7 +155,7 @@ export class SharedOrganizationalUnitDisseminationPolicyParametersDialog extends currentDisseminationPolicy: DisseminationPolicy; selectDisseminationPolicy(disseminationPolicy: DisseminationPolicy): void { - if (this.data.organizationalUnitDisseminationPolicyContainer?.resId === disseminationPolicy.resId) { + if (this.data.organizationalUnitDisseminationPolicyContainer?.resId === disseminationPolicy?.resId) { return; } this.currentDisseminationPolicy = disseminationPolicy; diff --git a/src/app/shared/components/presentationals/shared-organizational-unit-dissemination-policy-parameters/shared-organizational-unit-dissemination-policy-parameters.presentational.html b/src/app/shared/components/presentationals/shared-organizational-unit-dissemination-policy-parameters/shared-organizational-unit-dissemination-policy-parameters.presentational.html index 63044e0e0eb543e1daf35f90dc7aab519b87dcb3..3aa9b3037c8dad1f35d05875a64053db76f7af0d 100644 --- a/src/app/shared/components/presentationals/shared-organizational-unit-dissemination-policy-parameters/shared-organizational-unit-dissemination-policy-parameters.presentational.html +++ b/src/app/shared/components/presentationals/shared-organizational-unit-dissemination-policy-parameters/shared-organizational-unit-dissemination-policy-parameters.presentational.html @@ -7,18 +7,14 @@ [class.mat-form-field-invalid]="formValidationHelper.displayInvalidWhenRequired(fd, displayEmptyRequiredFieldInError)" > <mat-label>{{labelTranslateEnum.disseminationPoliciesCustomizable | translate}}</mat-label> - <mat-chip-grid #templateChipGrid - [disabled]="fd.disabled" - > + <mat-chip-grid #templateChipGrid [disabled]="fd.disabled"> <mat-chip-row *ngFor="let dissemination of listOrganizationalUnitDisseminationPolicyContainer; let i = index; trackBy: trackByFn" (click)="editDisseminationPoliciesParameters(i)" solidifyOverlay [solidifyOverlayData]="dissemination" [solidifyOverlayComponent]="$any(organizationalUnitDisseminationPolicyOverlayComponent)" > - <span class="label" - solidifyTooltipOnEllipsis - >{{dissemination.name}}</span> + <span class="label" solidifyTooltipOnEllipsis>{{dissemination.name}}</span> <button (click)="navigateToDisseminationPolicy($event, dissemination)" (keydown.enter)="navigateToDisseminationPolicy($event, dissemination)" [matTooltip]="labelTranslateEnum.seeDisseminationPolicyDetail | translate" @@ -62,4 +58,4 @@ <solidify-icon [iconName]="iconNameEnum.add"></solidify-icon> </button> </div> -</div> \ No newline at end of file +</div>