From 6a82fd4a48b293e327b55dd96990cd2832170233 Mon Sep 17 00:00:00 2001
From: Angapay Divin <divin.angapay@lam.fr>
Date: Thu, 2 Jun 2022 17:13:38 +0200
Subject: [PATCH] create a selectbox in between-date searchType with 3 items
 (null, not null, Bw), desable dateRange input when null or not null are
 chosen

---
 .../search-type/between-date.component.html    |  6 +++++-
 .../search-type/between-date.component.ts      | 18 ++++++++++++++++--
 2 files changed, 21 insertions(+), 3 deletions(-)

diff --git a/client/src/app/instance/search/components/criteria/search-type/between-date.component.html b/client/src/app/instance/search/components/criteria/search-type/between-date.component.html
index 776a39f6..99ece110 100644
--- a/client/src/app/instance/search/components/criteria/search-type/between-date.component.html
+++ b/client/src/app/instance/search/components/criteria/search-type/between-date.component.html
@@ -1,7 +1,11 @@
 <form [formGroup]="form" novalidate>
     <div class="row form-group">
         <div class="col-md-3 col-sm-auto pr-sm-1 mb-1 mb-sm-0">
-            <div class="operator_readonly">BW</div>
+           <select class="custom-select" (change)="labelOnChange($event.target.value)">
+               <option [value]="">Bw</option>
+               <option [value]="'nl'">Null</option>
+               <option [value]="'nnl'">Not Null</option>
+           </select>
         </div>
         <div class="w-100 d-block d-sm-none"></div>
         <div class="col pl-sm-1">
diff --git a/client/src/app/instance/search/components/criteria/search-type/between-date.component.ts b/client/src/app/instance/search/components/criteria/search-type/between-date.component.ts
index f90a2cb2..2c7d594f 100644
--- a/client/src/app/instance/search/components/criteria/search-type/between-date.component.ts
+++ b/client/src/app/instance/search/components/criteria/search-type/between-date.component.ts
@@ -11,13 +11,18 @@ import { Criterion, BetweenCriterion } from 'src/app/instance/store/models';
 export class BetweenDateComponent extends AbstractSearchTypeComponent {
     constructor() {
         super();
+        // dateRange is desabled when the user select null or not null
+       if(! this.nullOrNotNull){
         this.form = new FormGroup({
-            dateRange: new FormControl('', [Validators.required])
+            dateRange: new FormControl('', [Validators.required]),
         });
+       }
     }
 
     setCriterion(criterion: Criterion) {
         super.setCriterion(criterion);
+
+
         if (criterion) {
             const betweenCriterion = criterion as BetweenCriterion;
             this.form.controls.dateRange.setValue([
@@ -26,7 +31,7 @@ export class BetweenDateComponent extends AbstractSearchTypeComponent {
             ]);
         }
     }
-    
+
     /**
      * Return new criterion
      *
@@ -51,6 +56,15 @@ export class BetweenDateComponent extends AbstractSearchTypeComponent {
      *
      * @return string
      */
+    labelOnChange(value: string) {
+        if (value === 'nl' || value === 'nnl') {
+            this.nullOrNotNull = value;
+            this.form.controls.dateRange.disable();
+        } else {
+            this.form.controls.dateRange.enable();
+        }
+    }
+
     getDateString(date: Date): string {
         const month = ('0' + (date.getMonth() + 1)).slice(-2);
         const day = ('0' + (date.getDate())).slice(-2);
-- 
GitLab