From 10d3960aa2b52228afbb17802c8739c2569cd78a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fran=C3=A7ois=20Agneray?= <francois.agneray@lam.fr>
Date: Tue, 20 Sep 2022 17:44:07 +0200
Subject: [PATCH] #66 => done

---
 .../criteria/option-list.component.ts         |  2 +-
 .../criteria/tr-criteria.component.html       | 60 +++++++++++--------
 2 files changed, 36 insertions(+), 26 deletions(-)

diff --git a/client/src/app/admin/instance/dataset/components/attribute/criteria/option-list.component.ts b/client/src/app/admin/instance/dataset/components/attribute/criteria/option-list.component.ts
index 0ee54e7b..371a621d 100644
--- a/client/src/app/admin/instance/dataset/components/attribute/criteria/option-list.component.ts
+++ b/client/src/app/admin/instance/dataset/components/attribute/criteria/option-list.component.ts
@@ -27,7 +27,7 @@ export class OptionListComponent implements OnInit {
     newOptionFormGroup: UntypedFormGroup;
 
     ngOnInit() {
-        if (this.optionList && this.optionList.length > 0) {
+        if (this.form.controls.length < 1 && this.optionList && this.optionList.length > 0) {
             for (const option of this.optionList) {
                 const optionForm = this.buildFormGroup();
                 optionForm.patchValue(option);
diff --git a/client/src/app/admin/instance/dataset/components/attribute/criteria/tr-criteria.component.html b/client/src/app/admin/instance/dataset/components/attribute/criteria/tr-criteria.component.html
index 1eb4f0a0..0efe6a99 100644
--- a/client/src/app/admin/instance/dataset/components/attribute/criteria/tr-criteria.component.html
+++ b/client/src/app/admin/instance/dataset/components/attribute/criteria/tr-criteria.component.html
@@ -25,7 +25,8 @@
         </select>
     </td>
     <td>
-        <select *ngIf="form.controls.search_type.value
+        <select *ngIf="form.controls.id_criteria_family.value
+            && form.controls.search_type.value
             && form.controls.search_type.value != 'select-multiple'
             && form.controls.search_type.value != 'checkbox'
             && form.controls.search_type.value != 'between'
@@ -42,7 +43,9 @@
         </select>
     </td>
     <td>
-        <input *ngIf="form.controls.search_type.value
+        <input *ngIf="form.controls.id_criteria_family.value
+            && form.controls.operator.value 
+            && form.controls.search_type.value
             && form.controls.search_type.value != 'select-multiple'
             && form.controls.search_type.value != 'checkbox'
             && form.controls.search_type.value != 'between'
@@ -53,11 +56,12 @@
             type="checkbox" class="form-control" name="dynamic_operator" formControlName="dynamic_operator">
     </td>
     <td>
-        <app-option-list *ngIf="form.controls.operator.value 
+        <app-option-list *ngIf="form.controls.id_criteria_family.value
+            && form.controls.operator.value 
             && (form.controls.search_type.value == 'datalist' 
                 || form.controls.search_type.value == 'radio'
                 || form.controls.search_type.value == 'checkbox' 
-                || form.controls.search_type.value == 'select' )
+                || form.controls.search_type.value == 'select')
             || form.controls.search_type.value == 'select-multiple'"
                 [form]="optionsFormArray"
                 [optionList]="attribute.options"
@@ -66,20 +70,22 @@
                 [attributeDistinctListIsLoaded]="attributeDistinctListIsLoaded"
                 (loadAttributeDistinctList)="loadAttributeDistinctList.emit()">
         </app-option-list>
-        <input *ngIf="(form.controls.operator.value && form.controls.search_type.value == 'field')
-            || (form.controls.operator.value && form.controls.search_type.value == 'date')
-            || (form.controls.operator.value && form.controls.search_type.value == 'time')
-            || (form.controls.operator.value && form.controls.search_type.value == 'date-time')
-            || form.controls.search_type.value == 'between'
-            || form.controls.search_type.value == 'between-date'
-            || form.controls.search_type.value == 'list'"
+        <input *ngIf="form.controls.id_criteria_family.value
+            && ((form.controls.operator.value && form.controls.search_type.value == 'field')
+                || (form.controls.operator.value && form.controls.search_type.value == 'date')
+                || (form.controls.operator.value && form.controls.search_type.value == 'time')
+                || (form.controls.operator.value && form.controls.search_type.value == 'date-time')
+                || form.controls.search_type.value == 'between'
+                || form.controls.search_type.value == 'between-date'
+                || form.controls.search_type.value == 'list')"
             type="text" 
             class="form-control" 
             name="min"
             [placeholder]="getMinValuePlaceholder(form.controls.search_type.value)"
             formControlName="min">
-        <input *ngIf="form.controls.search_type.value == 'between'
-            || form.controls.search_type.value == 'between-date'" 
+        <input *ngIf="form.controls.id_criteria_family.value
+            && (form.controls.search_type.value == 'between'
+                || form.controls.search_type.value == 'between-date')" 
             type="text" 
             class="form-control" 
             name="max"
@@ -87,29 +93,33 @@
             formControlName="max">
     </td>
     <td>
-        <input *ngIf="(form.controls.operator.value && form.controls.search_type.value == 'field')
-            || (form.controls.operator.value && form.controls.search_type.value == 'date')
-            || (form.controls.operator.value && form.controls.search_type.value == 'time')
-            || (form.controls.operator.value && form.controls.search_type.value == 'date-time')
-            || form.controls.search_type.value == 'between'
-            || form.controls.search_type.value == 'between-date'
-            || form.controls.search_type.value == 'list'"
+        <input *ngIf="form.controls.id_criteria_family.value
+            && ((form.controls.operator.value && form.controls.search_type.value == 'field')
+                || (form.controls.operator.value && form.controls.search_type.value == 'date')
+                || (form.controls.operator.value && form.controls.search_type.value == 'time')
+                || (form.controls.operator.value && form.controls.search_type.value == 'date-time')
+                || form.controls.search_type.value == 'between'
+                || form.controls.search_type.value == 'between-date'
+                || form.controls.search_type.value == 'list')"
             type="text"
             class="form-control"
             name="placeholder_min"
             [placeholder]="getMinValuePlaceholder(form.controls.search_type.value)"
             formControlName="placeholder_min">
-        <input *ngIf="form.controls.search_type.value == 'between' || form.controls.search_type.value == 'between-date'"
+        <input *ngIf="form.controls.id_criteria_family.value 
+            && (form.controls.search_type.value == 'between' 
+                || form.controls.search_type.value == 'between-date')"
             type="text" class="form-control"
             name="placeholder_max"
             placeholder="Default max value (optional)"
             formControlName="placeholder_max">
     </td>
     <td>
-        <input *ngIf="form.controls.operator.value
-            || form.controls.search_type.value == 'between'
-            || form.controls.search_type.value == 'between-date'
-            || form.controls.search_type.value == 'json'"
+        <input *ngIf="form.controls.id_criteria_family.value
+            && (form.controls.operator.value
+                || form.controls.search_type.value == 'between'
+                || form.controls.search_type.value == 'between-date'
+                || form.controls.search_type.value == 'json')"
             type="number"
             class="form-control"
             name="criteria_display"
-- 
GitLab