From 0283335282f7c61063bc3781f379146367f43332 Mon Sep 17 00:00:00 2001 From: Homada Boumedane <homada.boumedane@unige.ch> Date: Mon, 13 Jan 2025 14:35:51 +0100 Subject: [PATCH 1/2] refactor: orgunit creation hide dissemination policy PUBLIC and ARCHIVIST in org unit form. Closes: DLCM-2789 --- ...issemination-policy-parameters.dialog.html | 29 ++++++---- ...-dissemination-policy-parameters.dialog.ts | 56 +++++++++++++++---- ...tion-policy-parameters.presentational.html | 10 +--- ...nation-policy-parameters.presentational.ts | 1 + 4 files changed, 66 insertions(+), 30 deletions(-) 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 30369feb5..ee979d9c3 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 dissimenationPolicies" + [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 2855e6b5f..df51c49d4 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 @@ -22,9 +22,9 @@ */ import { - ChangeDetectionStrategy, + ChangeDetectionStrategy, ChangeDetectorRef, Component, - Inject, + Inject, OnInit, } from "@angular/core"; import { FormBuilder, @@ -37,25 +37,33 @@ import { MatDialogRef, } from "@angular/material/dialog"; import { + Aip, DisseminationPolicy, OrganizationalUnitDisseminationPolicyContainer, } 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 { + SharedDisseminationPolicyAction, + sharedDisseminationPolicyActionNameSpace +} from "@shared/stores/dissemination-policy/shared-dissemination-policy.action"; import {SharedDisseminationPolicyState} from "@shared/stores/dissemination-policy/shared-dissemination-policy.state"; import { - FormValidationHelper, + FormValidationHelper, isNonEmptyString, isNotNullNorUndefined, isNotNullNorUndefinedNorWhiteString, isNullOrUndefined, MappingObject, - MappingObjectUtil, + MappingObjectUtil, MemoizedUtil, PropertyName, ResourceNameSpace, - SolidifyValidator, + SolidifyValidator, StoreUtil, StringUtil, } from "solidify-frontend"; +import {Enums} from "@enums"; +import {Actions, Store} from "@ngxs/store"; +import {Observable} from "rxjs"; +import {DepositCollectionAction} from "@deposit/stores/collection/deposit-collection.action"; @Component({ selector: "dlcm-shared-organizational-unit-dissemination-policy-parameters-dialog", @@ -63,14 +71,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; + dissimenationPolicies: DisseminationPolicy[]; + isLoadingObs: Observable<boolean>; get isCreateMode(): boolean { return isNullOrUndefined(this.data.organizationalUnitDisseminationPolicyContainer); @@ -90,7 +98,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 +116,30 @@ 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.dissimenationPolicies = action.list._data.filter(policy => { + return 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 +158,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 63044e0e0..3aa9b3037 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> diff --git a/src/app/shared/components/presentationals/shared-organizational-unit-dissemination-policy-parameters/shared-organizational-unit-dissemination-policy-parameters.presentational.ts b/src/app/shared/components/presentationals/shared-organizational-unit-dissemination-policy-parameters/shared-organizational-unit-dissemination-policy-parameters.presentational.ts index f7083f7df..d87043e1c 100644 --- a/src/app/shared/components/presentationals/shared-organizational-unit-dissemination-policy-parameters/shared-organizational-unit-dissemination-policy-parameters.presentational.ts +++ b/src/app/shared/components/presentationals/shared-organizational-unit-dissemination-policy-parameters/shared-organizational-unit-dissemination-policy-parameters.presentational.ts @@ -125,6 +125,7 @@ export class SharedOrganizationalUnitDisseminationPolicyParametersPresentational createDisseminationPoliciesParameters(): void { this.subscribe(DialogUtil.open(this._dialog, SharedOrganizationalUnitDisseminationPolicyParametersDialog, {} as SharedOrganizationalUnitDisseminationPolicyParametersDialogData, {}, result => { + console.log("******************************** result *******************************", result) this.listOrganizationalUnitDisseminationPolicyContainer.push(result); this._computeDisseminationPoliciesValue(); this._changeDetectorRef.detectChanges(); -- GitLab From b9b7b3482f7dc027d683d4707e89dcb82728f6a5 Mon Sep 17 00:00:00 2001 From: Alicia <Alicia.DeDiosFuente@unige.ch> Date: Tue, 14 Jan 2025 15:34:08 +0100 Subject: [PATCH 2/2] fix: merge review --- ...issemination-policy-parameters.dialog.html | 2 +- ...-dissemination-policy-parameters.dialog.ts | 25 ++++++++----------- ...nation-policy-parameters.presentational.ts | 1 - 3 files changed, 12 insertions(+), 16 deletions(-) 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 ee979d9c3..cc5e8f262 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 @@ -8,7 +8,7 @@ [formControl]="fd" (selectionChange)="selectDisseminationPolicy($event.value)" > - <mat-option *ngFor="let ds of dissimenationPolicies" + <mat-option *ngFor="let ds of disseminationPolicies" [value]="ds" solidifyTooltipOnEllipsis > 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 df51c49d4..3a5dded73 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 @@ -22,9 +22,11 @@ */ import { - ChangeDetectionStrategy, ChangeDetectorRef, + ChangeDetectionStrategy, + ChangeDetectorRef, Component, - Inject, OnInit, + Inject, + OnInit, } from "@angular/core"; import { FormBuilder, @@ -37,7 +39,6 @@ import { MatDialogRef, } from "@angular/material/dialog"; import { - Aip, DisseminationPolicy, OrganizationalUnitDisseminationPolicyContainer, } from "@models"; @@ -45,25 +46,22 @@ import {SharedAbstractDialog} from "@shared/components/dialogs/shared-abstract/s import {BaseFormDefinition} from "@shared/models/base-form-definition.model"; import { SharedDisseminationPolicyAction, - sharedDisseminationPolicyActionNameSpace } from "@shared/stores/dissemination-policy/shared-dissemination-policy.action"; -import {SharedDisseminationPolicyState} from "@shared/stores/dissemination-policy/shared-dissemination-policy.state"; import { - FormValidationHelper, isNonEmptyString, + FormValidationHelper, isNotNullNorUndefined, isNotNullNorUndefinedNorWhiteString, isNullOrUndefined, MappingObject, - MappingObjectUtil, MemoizedUtil, + MappingObjectUtil, PropertyName, - ResourceNameSpace, - SolidifyValidator, StoreUtil, + SolidifyValidator, + StoreUtil, StringUtil, } from "solidify-frontend"; import {Enums} from "@enums"; import {Actions, Store} from "@ngxs/store"; import {Observable} from "rxjs"; -import {DepositCollectionAction} from "@deposit/stores/collection/deposit-collection.action"; @Component({ selector: "dlcm-shared-organizational-unit-dissemination-policy-parameters-dialog", @@ -77,7 +75,7 @@ export class SharedOrganizationalUnitDisseminationPolicyParametersDialog extends formControlDisseminationPolicy: FormControl; formGroup: FormGroup; - dissimenationPolicies: DisseminationPolicy[]; + disseminationPolicies: DisseminationPolicy[]; isLoadingObs: Observable<boolean>; get isCreateMode(): boolean { @@ -126,9 +124,8 @@ export class SharedOrganizationalUnitDisseminationPolicyParametersDialog extends new SharedDisseminationPolicyAction.GetAll(key), SharedDisseminationPolicyAction.GetAllSuccess, action => { - this.dissimenationPolicies = action.list._data.filter(policy => { - return policy.type !== Enums.DisseminationPolicy.TypeEnum.PUBLIC && policy.type !== Enums.DisseminationPolicy.TypeEnum.ARCHIVIST; - }); + this.disseminationPolicies = action.list._data.filter(policy => (policy.type !== Enums.DisseminationPolicy.TypeEnum.PUBLIC + && policy.type !== Enums.DisseminationPolicy.TypeEnum.ARCHIVIST)); }, SharedDisseminationPolicyAction.GetAllFail, action => { diff --git a/src/app/shared/components/presentationals/shared-organizational-unit-dissemination-policy-parameters/shared-organizational-unit-dissemination-policy-parameters.presentational.ts b/src/app/shared/components/presentationals/shared-organizational-unit-dissemination-policy-parameters/shared-organizational-unit-dissemination-policy-parameters.presentational.ts index d87043e1c..f7083f7df 100644 --- a/src/app/shared/components/presentationals/shared-organizational-unit-dissemination-policy-parameters/shared-organizational-unit-dissemination-policy-parameters.presentational.ts +++ b/src/app/shared/components/presentationals/shared-organizational-unit-dissemination-policy-parameters/shared-organizational-unit-dissemination-policy-parameters.presentational.ts @@ -125,7 +125,6 @@ export class SharedOrganizationalUnitDisseminationPolicyParametersPresentational createDisseminationPoliciesParameters(): void { this.subscribe(DialogUtil.open(this._dialog, SharedOrganizationalUnitDisseminationPolicyParametersDialog, {} as SharedOrganizationalUnitDisseminationPolicyParametersDialogData, {}, result => { - console.log("******************************** result *******************************", result) this.listOrganizationalUnitDisseminationPolicyContainer.push(result); this._computeDisseminationPoliciesValue(); this._changeDetectorRef.detectChanges(); -- GitLab