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