From 1022c99a01e113fee55818202f00859c5ff15f1d Mon Sep 17 00:00:00 2001
From: Alex ORLUC <alex.orluc@maarch.org>
Date: Mon, 21 Sep 2020 16:51:26 +0200
Subject: [PATCH] FEAT #13271 TIME 0:25 my message

---
 .../app/adv-search/adv-search.component.html  | 11 +++++----
 .../app/adv-search/adv-search.component.ts    | 12 ++++++----
 .../criteria-tool/criteria-tool.component.ts  | 24 +++++++++++++++++--
 3 files changed, 37 insertions(+), 10 deletions(-)

diff --git a/src/frontend/app/adv-search/adv-search.component.html b/src/frontend/app/adv-search/adv-search.component.html
index 8fd39af0eb3..3ef99b32437 100644
--- a/src/frontend/app/adv-search/adv-search.component.html
+++ b/src/frontend/app/adv-search/adv-search.component.html
@@ -39,13 +39,16 @@
                         <ng-container *ngIf="isArrayType(critKey.value.values) && critKey.value.values.length > 3">
                             <span class="label badge-search"
                                 [title]="appCriteriaTool.getLabelValues(critKey.key,critKey.value.values)"
-                                (click)="removeCriteria(critKey.key)"><i
+                                (click)="removeCriteria(critKey.key, val)"><i
                                     class="fa {{indexingFieldService.getField(critKey.key).icon}}" [title]="indexingFieldService.getField(critKey.key).label"></i>&nbsp;{{critKey.value.values.length}} valeurs&nbsp;<i class="fa fa-times-circle"></i></span>
                         </ng-container>
-                        <ng-container *ngIf="!isArrayType(critKey.value.values)">
-                            <span class="label badge-search" [title]="critKey.value.values" (click)="removeCriteria(critKey.key, val)"><i
+                        <ng-container *ngIf="!isArrayType(critKey.value.values) && critKey.key !== 'meta'">
+                            <span class="label badge-search" [title]="appCriteriaTool.getFormatLabel(critKey.value.values)" (click)="removeCriteria(critKey.key, val)"><i
                                     class="fa {{indexingFieldService.getField(critKey.key).icon}}"
-                                    [title]="indexingFieldService.getField(critKey.key).label"></i>&nbsp;{{critKey.value.values}}&nbsp;<i class="fa fa-times-circle"></i></span>
+                                    [title]="indexingFieldService.getField(critKey.key).label"></i>&nbsp;{{appCriteriaTool.getFormatLabel(critKey.value.values)}}&nbsp;<i class="fa fa-times-circle"></i></span>
+                        </ng-container>
+                        <ng-container *ngIf="!isArrayType(critKey.value.values) && critKey.key === 'meta'">
+                            <span class="label badge-search" [title]="'meta'" (click)="removeCriteria(critKey.key, val)">"{{critKey.value.values}}"&nbsp;<i class="fa fa-times-circle"></i></span>
                         </ng-container>
                     </ng-container>
                 </div>
diff --git a/src/frontend/app/adv-search/adv-search.component.ts b/src/frontend/app/adv-search/adv-search.component.ts
index ada54c4b904..3558c86ea35 100644
--- a/src/frontend/app/adv-search/adv-search.component.ts
+++ b/src/frontend/app/adv-search/adv-search.component.ts
@@ -127,7 +127,14 @@ export class AdvSearchComponent implements OnInit, OnDestroy {
         public indexingFieldService: IndexingFieldsService) {
         _activatedRoute.queryParams.subscribe(
             params => {
-                this.searchTerm = params.value;
+                if (!this.functions.empty(params.value)) {
+                    this.searchTerm = params.value;
+                    this.criteria = {
+                        meta : {
+                            values : this.searchTerm
+                        }
+                    };
+                }
             }
         );
     }
@@ -142,8 +149,6 @@ export class AdvSearchComponent implements OnInit, OnDestroy {
         this.headerService.injectInSideBarLeft(this.adminMenuTemplate, this.viewContainerRef, 'adminMenu');
         this.headerService.setHeader(this.translate.instant('lang.searchMails'), '', '');
 
-        this.appCriteriaTool.getCriterias();
-
         this.initResultList();
 
         /*this.route.params.subscribe(params => {
@@ -459,7 +464,6 @@ export class AdvSearchComponent implements OnInit, OnDestroy {
             const indexArr = this.criteria[identifier].values.indexOf(value);
             this.criteria[identifier].values.splice(indexArr, 1);
         }
-
         this.appCriteriaTool.refreshCriteria(this.criteria);
     }
 }
diff --git a/src/frontend/app/adv-search/criteria-tool/criteria-tool.component.ts b/src/frontend/app/adv-search/criteria-tool/criteria-tool.component.ts
index cad687bdd34..1c93c2ea12d 100644
--- a/src/frontend/app/adv-search/criteria-tool/criteria-tool.component.ts
+++ b/src/frontend/app/adv-search/criteria-tool/criteria-tool.component.ts
@@ -14,11 +14,13 @@ import { MatDialog } from '@angular/material/dialog';
 import { ConfirmComponent } from '../../../plugins/modal/confirm.component';
 import { NotificationService } from '../../../service/notification/notification.service';
 import { AddSearchTemplateModalComponent } from './search-template/search-template-modal.component';
+import { DatePipe } from '@angular/common';
 
 @Component({
     selector: 'app-criteria-tool',
     templateUrl: 'criteria-tool.component.html',
-    styleUrls: ['criteria-tool.component.scss', '../../indexation/indexing-form/indexing-form.component.scss']
+    styleUrls: ['criteria-tool.component.scss', '../../indexation/indexing-form/indexing-form.component.scss'],
+    providers: [DatePipe]
 })
 export class CriteriaToolComponent implements OnInit {
 
@@ -52,6 +54,7 @@ export class CriteriaToolComponent implements OnInit {
         public indexingFields: IndexingFieldsService,
         private dialog: MatDialog,
         private notify: NotificationService,
+        private datePipe: DatePipe,
         private latinisePipe: LatinisePipe) {
             _activatedRoute.queryParams.subscribe(
                 params => {
@@ -165,7 +168,7 @@ export class CriteriaToolComponent implements OnInit {
     getCurrentCriteriaValues() {
         const objCriteria = {};
         if (!this.functions.empty(this.searchTermControl.value)) {
-            objCriteria['quickSearch'] = {
+            objCriteria['meta'] = {
                 values: this.searchTermControl.value
             };
         }
@@ -192,6 +195,15 @@ export class CriteriaToolComponent implements OnInit {
         }
     }
 
+    getFormatLabel(value: any) {
+        if (typeof value === 'object') {
+            return `${this.datePipe.transform(value.start, 'dd/MM/y') } - ${this.datePipe.transform(value.end, 'dd/MM/y')}`;
+        } else {
+            return value;
+
+        }
+    }
+
     getLabelValues(identifier: string, values: string[]) {
         if (values.length === 0) {
             return this.translate.instant('lang.undefined');
@@ -209,9 +221,17 @@ export class CriteriaToolComponent implements OnInit {
             }
         });
 
+        if (Object.keys(criteria)[0] === 'meta') {
+            this.searchTermControl.setValue(criteria['meta'].values);
+        }
+
         this.getCurrentCriteriaValues();
     }
 
+    set_meta_field(value: any) {
+        this.searchTermControl.setValue(value);
+    }
+
     set_doctype_field(elem: any) {
         return new Promise((resolve, reject) => {
             this.http.get(`../rest/doctypes`).pipe(
-- 
GitLab