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