From c0cc0e9ae8300f0fe791318f6cf01e87a99ec50d Mon Sep 17 00:00:00 2001
From: naji <naji@cines.fr>
Date: Tue, 8 Mar 2022 17:18:10 +0100
Subject: [PATCH] =?UTF-8?q?Remonter=20les=20valeurs=20s=C3=A9lectionner=20?=
 =?UTF-8?q?pas=20la=20popup=20to=20filetree-metadata?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../file-tree-metadata.component.ts           | 56 +++++++++++++---
 .../add-pua-control.component.html            |  5 --
 .../add-pua-control.component.ts              | 65 ++++++++++++-------
 3 files changed, 89 insertions(+), 37 deletions(-)

diff --git a/ui/ui-frontend/projects/pastis/src/app/profile/edit-profile/file-tree-metadata/file-tree-metadata.component.ts b/ui/ui-frontend/projects/pastis/src/app/profile/edit-profile/file-tree-metadata/file-tree-metadata.component.ts
index 7bdf05f46..8615a9632 100644
--- a/ui/ui-frontend/projects/pastis/src/app/profile/edit-profile/file-tree-metadata/file-tree-metadata.component.ts
+++ b/ui/ui-frontend/projects/pastis/src/app/profile/edit-profile/file-tree-metadata/file-tree-metadata.component.ts
@@ -131,6 +131,12 @@ export class FileTreeMetadataComponent {
 
   isStandalone: boolean = environment.standalone;
 
+  enumerationControl: boolean;
+  valueControl: boolean;
+  lengthControl: boolean;
+  expressionControl: boolean;
+  arrayControl: string[];
+
   public breadcrumbDataTop: Array<BreadcrumbDataTop>;
   public breadcrumbDataMetadata: Array<BreadcrumbDataMetadata>;
 
@@ -145,6 +151,9 @@ export class FileTreeMetadataComponent {
   popupSousTitre: string
   popupValider: string
   popupAnnuler: string
+  popupControlTitleDialog: string
+  popupControlSubTitleDialog: string
+  popupControlOkLabel: string
 
   @Output()
   public insertItem: EventEmitter<FileNodeInsertParams> = new EventEmitter<FileNodeInsertParams>();
@@ -217,6 +226,9 @@ export class FileTreeMetadataComponent {
       this.popupSousTitre= "Edition des attributs de"
       this.popupValider= "Valider"
       this.popupAnnuler= "Annuler"
+      this.popupControlTitleDialog = "Veuillez séléctionner un ou plusieurs contrôles";
+      this.popupControlSubTitleDialog = "Ajouter des contrôles supplémentaires à";
+      this.popupControlOkLabel = 'AJOUTER LES CONTROLES'
     }
 
 
@@ -528,16 +540,44 @@ export class FileTreeMetadataComponent {
     let popData = {} as PastisDialogData;
     if (fileNodeId) {
       popData.fileNode = this.fileService.findChildById(fileNodeId, this.clickedNode);
-      popData.titleDialog = "Veuillez séléctionner un ou plusieurs contrôles";
-      popData.subTitleDialog = "Ajouter des contrôles supplémentaires à Title";
-      popData.width = '1120px';
-      popData.component = UserActionAddPuaControlComponent
-      popData.okLabel = 'AJOUTER LES CONTROLES'
-      popData.cancelLabel = this.popupAnnuler
+      popData.titleDialog = this.popupControlTitleDialog;
+      popData.subTitleDialog = this.popupControlSubTitleDialog + ' "' + popData.fileNode.name + '"';
+      popData.width = '800px';
+      popData.component = UserActionAddPuaControlComponent;
+      popData.okLabel = this.popupControlOkLabel;
+      popData.cancelLabel = this.popupAnnuler;
+
+      let popUpAnswer = <string[]>await this.fileService.openPopup(popData);
+      console.log("The answer for arrays control was ", popUpAnswer);
+      if(popUpAnswer){
+        this.arrayControl = popUpAnswer;
+        this.setControlsVues(this.arrayControl)
+      }
+    }
+  }
 
-      let popUpAnswer = <AttributeData[]>await this.fileService.openPopup(popData);
-      console.log("The answer for edit attributte was ", popUpAnswer);
+  resetContols(){
+    this.arrayControl = [];
+    this.enumerationControl = false;
+    this.expressionControl = false;
+    this.lengthControl = false;
+    this.valueControl = false;
+  }
+
+  setControlsVues(elements: string[]){
+    if(elements.includes("Enumération")){
+      this.enumerationControl = true;
+    }
+    if(elements.includes("Expression régulière")){
+      this.expressionControl = true;
     }
+    if(elements.includes("Longueur Min/Max")){
+      this.lengthControl = true;
+    }
+    if(elements.includes("Valeur Min/Max")){
+      this.valueControl = true;
+    }
+
   }
 
   onDeleteNode(nodeId: number) {
diff --git a/ui/ui-frontend/projects/pastis/src/app/user-actions/add-pua-control/add-pua-control.component.html b/ui/ui-frontend/projects/pastis/src/app/user-actions/add-pua-control/add-pua-control.component.html
index f847c09e8..779edab7f 100644
--- a/ui/ui-frontend/projects/pastis/src/app/user-actions/add-pua-control/add-pua-control.component.html
+++ b/ui/ui-frontend/projects/pastis/src/app/user-actions/add-pua-control/add-pua-control.component.html
@@ -40,9 +40,4 @@
     </mat-selection-list>
   </mat-list>
 
-  <ng-template #noItemsLeftToAdd>
-    <p class="paragraph-metadata-subtitle" style="margin-top: 40px;">
-      {{'USER_ACTION.ADD_METADATA.MESSAGE_PLUS_METADONNEE' | translate}}</p>
-  </ng-template>
-
 </div>
diff --git a/ui/ui-frontend/projects/pastis/src/app/user-actions/add-pua-control/add-pua-control.component.ts b/ui/ui-frontend/projects/pastis/src/app/user-actions/add-pua-control/add-pua-control.component.ts
index 92bece8b2..bce846d08 100644
--- a/ui/ui-frontend/projects/pastis/src/app/user-actions/add-pua-control/add-pua-control.component.ts
+++ b/ui/ui-frontend/projects/pastis/src/app/user-actions/add-pua-control/add-pua-control.component.ts
@@ -57,12 +57,11 @@ export class UserActionAddPuaControlComponent implements OnInit {
   btnIsDisabled: boolean;
 
   sedaData: SedaData;
-  allowedChildren: string[] = [
-    "Enumération",
-    "Expression régulière",
-    "Longueur Min/Max",
-    "Valeur Min/Max"
-  ]
+  enumerationsLabel: string = "Enumération";
+  expressionReguliereLabel: string = "Expression régulière";
+  lengthMinMaxLabel: string = "Longueur Min/Max";
+  valueMinMaxLabel: string = "Valeur Min/Max";
+  allowedChildren: string[];
   namesFiltered: any = [];
   sedaNodeFound: SedaData;
   selectedSedaNode: SedaData;
@@ -78,7 +77,9 @@ export class UserActionAddPuaControlComponent implements OnInit {
 
   constructor(public dialogRef: MatDialogRef<PastisDialogConfirmComponent>,
     private fileService: FileService, private sedaService: SedaService,
-    private popUpService: PopupService, private sedaLanguageService: PastisPopupMetadataLanguageService) { }
+    private popUpService: PopupService, private sedaLanguageService: PastisPopupMetadataLanguageService) {
+      this.refreshAllowedChildren();
+    }
 
   ngOnInit() {
     this.sedaLanguageSub = this.sedaLanguageService.sedaLanguage.subscribe(
@@ -109,10 +110,14 @@ export class UserActionAddPuaControlComponent implements OnInit {
   }
 
   onRemoveSelectedElement(element: string) {
-    let indexOfElement = this.addedItems.indexOf(element)
-    console.log(indexOfElement)
-    if (indexOfElement >= 0) {
-      this.allowedChildren.push(this.addedItems.splice(indexOfElement, 1)[0])
+    if(this.isExclusive(element)){
+      this.refreshAllowedChildren();
+    }else{
+      let indexOfElement = this.addedItems.indexOf(element)
+      console.log(indexOfElement)
+      if (indexOfElement >= 0) {
+        this.allowedChildren.push(this.addedItems.splice(indexOfElement, 1)[0])
+      }
     }
     console.error(this.allowedChildren)
     this.addedItems.length > 0 ? this.atLeastOneIsSelected = true : this.atLeastOneIsSelected = false
@@ -121,8 +126,11 @@ export class UserActionAddPuaControlComponent implements OnInit {
 
   onAddSelectedElement(element: string) {
     this.addedItems.push(element);
-
-    this.allowedChildren = this.allowedChildren.filter(e => e != element);
+    if(this.isExclusive(element)){
+      this.refreshAllowedChildren(element);
+    }else{
+      this.allowedChildren = this.allowedChildren.filter(e => e != element);
+    }
     this.addedItems.length > 0 ? this.atLeastOneIsSelected = true : this.atLeastOneIsSelected = false
     this.upateButtonStatusAndDataToSend();
   }
@@ -154,21 +162,30 @@ export class UserActionAddPuaControlComponent implements OnInit {
     this.dialogRef.close();
   }
 
-  onResolveName(element: SedaData): string {
-    if (this.sedaLanguage) {
-      return element.Name;
-    }
-    else {
-      if (element.NameFr) {
-        return element.NameFr;
-      }
-    }
-    return element.Name;
-  }
   ngOnDestroy(): void {
     if (this.sedaLanguageSub != null) {
       this.sedaLanguageSub.unsubscribe();
     }
   }
 
+  isExclusive(element: string): boolean{
+    return element === this.valueMinMaxLabel || element === this.enumerationsLabel;
+  }
+
+  refreshAllowedChildren(element?: string){
+
+    if(element){
+      this.addedItems = [element];
+      this.allowedChildren = [];
+    }else{
+      this.allowedChildren = [
+        this.enumerationsLabel,
+        this.valueMinMaxLabel,
+        this.lengthMinMaxLabel,
+        this.expressionReguliereLabel
+      ];
+      this.addedItems = [];
+    }
+  }
+
 }
-- 
GitLab