Skip to content
Snippets Groups Projects
Commit 50bd5676 authored by Benaissa BENARBIA's avatar Benaissa BENARBIA
Browse files

handle guid with multiple values separated by comma

parent db00b341
No related branches found
No related tags found
1 merge request!51Merge mis a jour vitam-ui
Showing
with 219 additions and 95 deletions
.icon-information {
position: relative;
float: right;
top: -55px;
right: -45px;
width: 30px;
height: 31px;
font-size: 26px;
font-weight: bold;
}
......@@ -22,10 +22,11 @@
*ngIf="!simpleCriteriaForm.get('beginDt').value; else showBeginDt"
(click)="pickerBegin.open()"
class="search-date-label"
>{{ 'ARCHIVE_SEARCH.SEARCH_CRITERIA_FILTER.FIELDS.START_DATE' | translate }}</span
>{{ 'ARCHIVE_SEARCH.SEARCH_CRITERIA_FILTER.FIELDS.START_DATE' | translate }}</span
>
<ng-template #showBeginDt
><span (click)="pickerBegin.open()">{{ simpleCriteriaForm.get('beginDt').value | date: 'dd/MM/yyyy' }} </span>
><span
(click)="pickerBegin.open()">{{ simpleCriteriaForm.get('beginDt').value | date: 'dd/MM/yyyy' }} </span>
</ng-template>
<input
class="hidden"
......@@ -50,11 +51,12 @@
</div>
<div class="col-4 form-control">
<div class="vitamui-input" (click)="pickerEnd.open()">
<span *ngIf="!simpleCriteriaForm.get('endDt').value; else showEndDt" (click)="pickerEnd.open()" class="search-date-label">{{
<span *ngIf="!simpleCriteriaForm.get('endDt').value; else showEndDt" (click)="pickerEnd.open()"
class="search-date-label">{{
'ARCHIVE_SEARCH.SEARCH_CRITERIA_FILTER.FIELDS.END_DATE' | translate
}}</span>
<ng-template #showEndDt
><span (click)="pickerEnd.open()">{{ simpleCriteriaForm.get('endDt').value | date: 'dd/MM/yyyy' }} </span>
><span (click)="pickerEnd.open()">{{ simpleCriteriaForm.get('endDt').value | date: 'dd/MM/yyyy' }} </span>
</ng-template>
<input
class="hidden"
......@@ -86,6 +88,12 @@
label="{{ 'ARCHIVE_SEARCH.SEARCH_CRITERIA_FILTER.FIELDS.UAID' | translate }}"
>
</vitamui-common-editable-input>
<i
class="vitamui-icon vitamui-icon-info-circle vitamui-row-icon icon-information"
[matTooltip]="'ARCHIVE_SEARCH.SEARCH_CRITERIA_FILTER.FIELDS.GUIDS_SEPARATED' | translate"
matTooltipClass="vitamui-tooltip"
[matTooltipShowDelay]="300"
></i>
</div>
<div class="col-4 form-control"></div>
</div>
......@@ -127,7 +135,7 @@
matTooltip="{{ ontology?.Value }}"
matTooltipClass="vitamui-tooltip"
[matTooltipShowDelay]="300"
>{{ ontology.Label }}
>{{ ontology.Label }}
</mat-option>
</ng-container>
</mat-select>
......@@ -175,11 +183,11 @@
*ngIf="!simpleCriteriaForm.get('otherCriteriaValue').value; else showOtherCriteria"
(click)="pickerOtherCriteria.open()"
class="search-date-label"
>{{ selectedValueOntolonogy }}</span
>{{ selectedValueOntolonogy }}</span
>
<ng-template #showOtherCriteria
><span (click)="pickerOtherCriteria.open()"
>{{ simpleCriteriaForm.get('otherCriteriaValue').value | date: 'dd/MM/yyyy' }}
><span (click)="pickerOtherCriteria.open()"
>{{ simpleCriteriaForm.get('otherCriteriaValue').value | date: 'dd/MM/yyyy' }}
</span>
</ng-template>
<input
......
......@@ -35,7 +35,7 @@
* knowledge of the CeCILL-C license and that you accept its terms.
*/
import { Component, OnInit } from '@angular/core';
import { FormBuilder, FormGroup } from '@angular/forms';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { MatDialog } from '@angular/material/dialog';
import { merge } from 'rxjs';
import { debounceTime, filter, map } from 'rxjs/operators';
......@@ -118,7 +118,7 @@ export class SimpleCriteriaSearchComponent implements OnInit {
title: ['', []],
description: ['', []],
guidopi: ['', []],
guid: ['', []],
guid: ['', [Validators.pattern('^[a-z0-9_, ]+')]],
beginDt: ['', []],
endDt: ['', []],
serviceProdLabel: ['', []],
......@@ -141,20 +141,9 @@ export class SimpleCriteriaSearchComponent implements OnInit {
isEmpty(formData: any): boolean {
if (formData) {
if (formData.archiveCriteria) {
if (formData.title) {
this.addCriteria(
'TITLE_OR_DESCRIPTION',
{ value: formData.archiveCriteria.trim(), id: formData.archiveCriteria.trim() },
formData.archiveCriteria.trim(),
true,
'EQ',
false,
'STRING'
);
return true;
} else if (formData.title) {
this.addCriteria(
/*'Title',*/ 'TITLE',
'TITLE',
{ value: formData.title.trim(), id: formData.title.trim() },
formData.title.trim(),
true,
......@@ -219,10 +208,15 @@ export class SimpleCriteriaSearchComponent implements OnInit {
);
return true;
} else if (formData.guid) {
this.addCriteria('GUID', { value: formData.guid, id: formData.guid }, formData.guid, true, 'EQ', false, 'STRING');
var splittedGuids = formData.guid.split(',');
splittedGuids.forEach((guidElt: string) => {
if (guidElt && guidElt.trim() !== '') {
this.addCriteria('GUID', { value: guidElt.trim(), id: guidElt.trim() }, guidElt.trim(), true, 'EQ', false, 'STRING');
}
});
return true;
} else if (formData.guidopi) {
this.addCriteria('GUID_OPI', { value: formData.guidopi, id: formData.guidopi }, formData.guidopi, true, 'EQ', false, 'STRING');
this.addCriteria('GUID_OPI', { value: formData.guidopi, id: formData.guidopi }, formData.guidopi, true, 'IN', false, 'STRING');
return true;
} else if (formData.otherCriteriaValue) {
const ontologyElt = this.ontologies.find((ontoElt: any) => ontoElt.Value === formData.otherCriteria);
......
......@@ -3,7 +3,8 @@
<ul class="vitamui-search-criteria-list">
<li class="vitamui-search-criteria">
<ng-container *ngIf="criteriaVal.dataType === 'DATE'">
<ng-container *ngFor="let criteriaValue of criteriaVal.values; let index = index; let isFirst = first; let isLast = last">
<ng-container
*ngFor="let criteriaValue of criteriaVal.values; let index = index; let isFirst = first; let isLast = last">
<div
class="vitamui-search-criteria-content"
matTooltip="{{
......@@ -28,9 +29,10 @@
>
<ng-container *ngIf="isFirst">
{{
(criteriaValue.keyTranslated
? ('ARCHIVE_SEARCH.SEARCH_CRITERIA_FILTER.' + getCategoryName(criteriaVal.category) + '.' + criteriaVal.key | translate)
: criteriaVal.key) + ' : '
(criteriaValue.keyTranslated
? ('ARCHIVE_SEARCH.SEARCH_CRITERIA_FILTER.' + getCategoryName(criteriaVal.category) + '.' +
criteriaVal.key | translate)
: criteriaVal.key) + ' : '
}}
</ng-container>
{{ criteriaValue.value.value | date: 'dd/MM/yyyy' }}
......@@ -71,7 +73,8 @@
</ng-container>
<ng-container *ngIf="criteriaVal.dataType === 'INTERVAL'">
<ng-container *ngFor="let criteriaValue of criteriaVal.values; let index = index; let isFirst = first; let isLast = last">
<ng-container
*ngFor="let criteriaValue of criteriaVal.values; let index = index; let isFirst = first; let isLast = last">
<div
class="vitamui-search-criteria-content"
matTooltip="{{
......@@ -89,20 +92,25 @@
>
<ng-container *ngIf="isFirst">
{{
(criteriaValue.keyTranslated
? ('ARCHIVE_SEARCH.SEARCH_CRITERIA_FILTER.' + getCategoryName(criteriaVal.category) + '.' + criteriaVal.key | translate)
: criteriaVal.key) + ' : '
(criteriaValue.keyTranslated
? ('ARCHIVE_SEARCH.SEARCH_CRITERIA_FILTER.' + getCategoryName(criteriaVal.category) + '.' +
criteriaVal.key | translate)
: criteriaVal.key) + ' : '
}}
</ng-container>
<ng-container *ngIf="criteriaValue.value.beginInterval && criteriaValue.value.endInterval">
{{ 'ARCHIVE_SEARCH.SEARCH_CRITERIA_BETWEEN' | translate }} {{ criteriaValue.value.beginInterval | date: 'dd/MM/yyyy' }}
{{ 'ARCHIVE_SEARCH.SEARCH_CRITERIA_AND' | translate }} {{ criteriaValue.value.endInterval | date: 'dd/MM/yyyy' }}
{{ 'ARCHIVE_SEARCH.SEARCH_CRITERIA_BETWEEN' | translate }} {{ criteriaValue.value.beginInterval | date:
'dd/MM/yyyy' }}
{{ 'ARCHIVE_SEARCH.SEARCH_CRITERIA_AND' | translate }} {{ criteriaValue.value.endInterval | date:
'dd/MM/yyyy' }}
</ng-container>
<ng-container *ngIf="criteriaValue.value.beginInterval && !criteriaValue.value.endInterval">
{{ 'ARCHIVE_SEARCH.SEARCH_CRITERIA_GTE' | translate }} {{ criteriaValue.value.beginInterval | date: 'dd/MM/yyyy' }}
{{ 'ARCHIVE_SEARCH.SEARCH_CRITERIA_GTE' | translate }} {{ criteriaValue.value.beginInterval | date:
'dd/MM/yyyy' }}
</ng-container>
<ng-container *ngIf="!criteriaValue.value.beginInterval && criteriaValue.value.endInterval">
{{ 'ARCHIVE_SEARCH.SEARCH_CRITERIA_LTE' | translate }} {{ criteriaValue.value.endInterval | date: 'dd/MM/yyyy' }}
{{ 'ARCHIVE_SEARCH.SEARCH_CRITERIA_LTE' | translate }} {{ criteriaValue.value.endInterval | date:
'dd/MM/yyyy' }}
</ng-container>
</div>
<div
......@@ -141,81 +149,168 @@
</ng-container>
<ng-container *ngIf="criteriaVal.dataType === 'STRING'">
<ng-container *ngFor="let criteriaValue of criteriaVal.values; let index = index; let isFirst = first; let isLast = last">
<div
class="vitamui-search-criteria-content"
matTooltip="{{
criteriaValue.keyTranslated
? ('ARCHIVE_SEARCH.SEARCH_CRITERIA_FILTER.' + getCategoryName(criteriaVal.category) + '.' + criteriaVal.key | translate)
: criteriaVal.key
}}:{{
criteriaVal.dataType === 'DATE'
? (criteriaValue.value | date: 'dd/MM/yyyy')
: criteriaValue.valueTranslated
? ('ARCHIVE_SEARCH.SEARCH_CRITERIA_FILTER.' + getCategoryName(criteriaVal.category) + '.' + criteriaValue.label
| translate)
: criteriaValue.label
}}"
matTooltipClass="vitamui-tooltip"
[matTooltipShowDelay]="300"
[ngClass]="[
isFirst ? 'left-arround' : 'left-not-arround',
criteriaValue.status === 'INCLUDED' ? 'after-search-launched-button' : 'before-search-launched-button'
]"
class="button-content right-button"
>
<ng-container *ngIf="isFirst">
<i *ngIf="criteriaKey === 'NODE'" class="vitamui-icon vitamui-icon-radio-checked vitamui-row-icon"></i>
<ng-container *ngIf="criteriaVal.key === 'GUID'">
<ng-container *ngIf="criteriaVal.values.length === 1">
<div
class="vitamui-search-criteria-content"
[matTooltip]="
(criteriaVal.operator === 'EQ'
? ('ARCHIVE_SEARCH.SEARCH_CRITERIA_FILTER.FIELDS.GUID_TO_INCLUDE' | translate)
: ('ARCHIVE_SEARCH.SEARCH_CRITERIA_FILTER.FIELDS.GUID_TO_EXCLUDE' | translate)) +
' : ' +
criteriaVal.values[0].label
"
matTooltipClass="vitamui-tooltip"
[matTooltipShowDelay]="300"
[ngClass]="[
isFirst ? 'left-arround' : 'left-not-arround',
criteriaVal.values[criteriaVal.values.length - 1].status === 'INCLUDED'
? 'after-search-launched-button'
: 'before-search-launched-button'
]"
class="button-content right-button"
>
{{
(criteriaValue.keyTranslated
? ('ARCHIVE_SEARCH.SEARCH_CRITERIA_FILTER.' + getCategoryName(criteriaVal.category) + '.' + criteriaVal.key | translate)
: criteriaVal.key) + ' : '
(criteriaVal.operator === 'EQ'
? ('ARCHIVE_SEARCH.SEARCH_CRITERIA_FILTER.FIELDS.GUID_TO_INCLUDE' | translate)
: ('ARCHIVE_SEARCH.SEARCH_CRITERIA_FILTER.FIELDS.GUID_TO_EXCLUDE' | translate)) +
' : ' +
criteriaVal.values[criteriaVal.values.length - 1].label
}}
</ng-container>
<ng-container *ngIf="criteriaVal.dataType === 'STRING'">
</div>
</ng-container>
<ng-container *ngIf="criteriaVal.values.length > 1">
<div
class="vitamui-search-criteria-content"
[matTooltip]="
(criteriaVal.operator === 'EQ'
? ('ARCHIVE_SEARCH.SEARCH_CRITERIA_FILTER.FIELDS.GUIDS_TO_INCLUDE' | translate)
: ('ARCHIVE_SEARCH.SEARCH_CRITERIA_FILTER.FIELDS.GUIDS_TO_EXCLUDE' | translate)) +
' : ' +
criteriaVal.values.length
"
matTooltipClass="vitamui-tooltip"
[matTooltipShowDelay]="300"
[ngClass]="[
isFirst ? 'left-arround' : 'left-not-arround',
criteriaVal.values[criteriaVal.values.length - 1].status === 'INCLUDED'
? 'after-search-launched-button'
: 'before-search-launched-button'
]"
class="button-content right-button"
>
{{
criteriaValue.valueTranslated
? ('ARCHIVE_SEARCH.SEARCH_CRITERIA_FILTER.' + getCategoryName(criteriaVal.category) + '.' + criteriaValue.label
| translate)
: (criteriaValue.label | truncate: 50)
(criteriaVal.operator === 'EQ'
? ('ARCHIVE_SEARCH.SEARCH_CRITERIA_FILTER.FIELDS.GUIDS_TO_INCLUDE' | translate)
: ('ARCHIVE_SEARCH.SEARCH_CRITERIA_FILTER.FIELDS.GUIDS_TO_EXCLUDE' | translate)) +
' : ' +
criteriaVal.values.length
}}
</ng-container>
<ng-container *ngIf="criteriaVal.dataType === 'DATE'">
{{ criteriaValue.value | date: 'dd/MM/yyyy' }}
</ng-container>
</div>
</div>
</ng-container>
<div
class="vitamui-remove-search-criteria"
*ngIf="criteriaValue.status !== 'IN_PROGRESS'"
(click)="removeCriteria(criteriaKey, criteriaValue.value)"
*ngIf="criteriaVal.values[criteriaVal.values.length - 1].status !== 'IN_PROGRESS'"
(click)="removeCriteriaAllValues(criteriaKey)"
[ngClass]="[
isLast ? 'right-arround' : 'right-button',
criteriaValue.status === 'INCLUDED' ? 'after-search-launched-button' : 'before-search-launched-button'
criteriaVal.values[criteriaVal.values.length - 1].status === 'INCLUDED'
? 'after-search-launched-button'
: 'before-search-launched-button'
]"
>
<i class="vitamui-icon vitamui-icon-cross vitamui-row-icon"></i>
</div>
<div
*ngIf="criteriaValue.status === 'IN_PROGRESS'"
*ngIf="criteriaVal.values[criteriaVal.values.length - 1].status === 'IN_PROGRESS'"
class="vitamui-remove-search-criteria"
[ngClass]="[
isLast ? 'right-arround' : 'right-button',
criteriaValue.status === 'INCLUDED' ? 'after-search-launched-button' : 'before-search-launched-button'
criteriaVal.values[criteriaVal.values.length - 1].status === 'INCLUDED'
? 'after-search-launched-button'
: 'before-search-launched-button'
]"
>
<i class="vitamui-icon vitamui-icon-loop2 vitamui-row-icon"></i>
</div>
</ng-container>
<ng-container *ngIf="criteriaVal.key !== 'GUID'">
<ng-container
*ngFor="let criteriaValue of criteriaVal.values; let index = index; let isFirst = first; let isLast = last">
<div
class="vitamui-search-criteria-content"
matTooltip="{{
criteriaValue.keyTranslated
? ('ARCHIVE_SEARCH.SEARCH_CRITERIA_FILTER.' + getCategoryName(criteriaVal.category) + '.' + criteriaVal.key | translate)
: criteriaVal.key
}}:{{
criteriaValue.valueTranslated
? ('ARCHIVE_SEARCH.SEARCH_CRITERIA_FILTER.' + getCategoryName(criteriaVal.category) + '.' + criteriaValue.label
| translate)
: criteriaValue.label
}}"
matTooltipClass="vitamui-tooltip"
[matTooltipShowDelay]="300"
[ngClass]="[
isFirst ? 'left-arround' : 'left-not-arround',
criteriaValue.status === 'INCLUDED' ? 'after-search-launched-button' : 'before-search-launched-button'
]"
class="button-content right-button"
>
<ng-container *ngIf="isFirst">
<i *ngIf="criteriaKey === 'NODE'"
class="vitamui-icon vitamui-icon-radio-checked vitamui-row-icon"></i>
{{
(criteriaValue.keyTranslated
? ('ARCHIVE_SEARCH.SEARCH_CRITERIA_FILTER.' + getCategoryName(criteriaVal.category) + '.' +
criteriaVal.key
| translate)
: criteriaVal.key) + ' : '
}}
</ng-container>
<div
class="vitamui-or-criteria-content"
*ngIf="!isLast"
[ngClass]="[criteriaValue.status === 'INCLUDED' ? 'after-search-launched-button' : 'before-search-launched-button']"
class="button-or left-not-arround right-button"
>
{{ 'ARCHIVE_SEARCH.SEARCH_CRITERIA_OR' | translate }}
</div>
{{
criteriaValue.valueTranslated
? ('ARCHIVE_SEARCH.SEARCH_CRITERIA_FILTER.' + getCategoryName(criteriaVal.category) + '.' +
criteriaValue.label
| translate)
: (criteriaValue.label | truncate: 50)
}}
</div>
<div
class="vitamui-remove-search-criteria"
*ngIf="criteriaValue.status !== 'IN_PROGRESS'"
(click)="removeCriteria(criteriaKey, criteriaValue.value)"
[ngClass]="[
isLast ? 'right-arround' : 'right-button',
criteriaValue.status === 'INCLUDED' ? 'after-search-launched-button' : 'before-search-launched-button'
]"
>
<i class="vitamui-icon vitamui-icon-cross vitamui-row-icon"></i>
</div>
<div
*ngIf="criteriaValue.status === 'IN_PROGRESS'"
class="vitamui-remove-search-criteria"
[ngClass]="[
isLast ? 'right-arround' : 'right-button',
criteriaValue.status === 'INCLUDED' ? 'after-search-launched-button' : 'before-search-launched-button'
]"
>
<i class="vitamui-icon vitamui-icon-loop2 vitamui-row-icon"></i>
</div>
<div
class="vitamui-or-criteria-content"
*ngIf="!isLast"
[ngClass]="[criteriaValue.status === 'INCLUDED' ? 'after-search-launched-button' : 'before-search-launched-button']"
class="button-or left-not-arround right-button"
>
{{ 'ARCHIVE_SEARCH.SEARCH_CRITERIA_OR' | translate }}
</div>
</ng-container>
</ng-container>
</ng-container>
</li>
......
......@@ -68,7 +68,7 @@
padding-right: 10px;
padding-top: 18px;
border-right-width: 0px;
max-width: 460px;
max-width: 680px;
font-weight: bold;
height: 60px;
border: 1px solid #9d9d9d;
......
......@@ -26,4 +26,10 @@ export class CriteriaSearchComponent implements OnInit {
getCategoryName(categoryEnum: SearchCriteriaTypeEnum): string {
return SearchCriteriaTypeEnum[categoryEnum];
}
removeCriteriaAllValues(keyElt: string) {
this.criteriaVal.values.forEach((value) => {
this.removeCriteria(keyElt, value.value);
});
}
}
......@@ -24,6 +24,12 @@
"START_DATE": "Start date",
"END_DATE": "End date",
"DESCRIPTION": "Description",
"GUID": "Guid (s)",
"GUIDS_SEPARATED": "Guid separated by comma",
"GUID_TO_INCLUDE": "Guid to include",
"GUID_TO_EXCLUDE": "Guid to exclude",
"GUIDS_TO_INCLUDE": "Guid(s) to exclude",
"GUIDS_TO_EXCLUDE": "Guid(s) to exclude",
"GUID_OPI": "Ingest GUID",
"UAID": "Archive unit GUID",
"SP": "Originating agency",
......@@ -140,4 +146,4 @@
"GEL": "Freezing"
}
}
}
\ No newline at end of file
}
......@@ -52,8 +52,13 @@
"START_DATE": "Date de début",
"END_DATE": "Date de fin",
"DESCRIPTION": "Description",
"GUID": "GUID d'unité archivistique",
"UAID": "GUID d'unité archivistique",
"GUID": "Identifiant(s) technique(s)",
"GUIDS_SEPARATED": "Identifiants séparés par des virgules",
"GUID_TO_INCLUDE": "Identifiant de l'unité à inclure",
"GUID_TO_EXCLUDE": "Identifiant de l'unité à exclure",
"GUIDS_TO_INCLUDE": "Identifiants d’unités à inclure",
"GUIDS_TO_EXCLUDE": "Identifiants d’unités à exclure",
"UAID": "Identifiant(s) technique(s) d'unité(s) archivistique(s) ",
"SP": "Service producteur",
"SP_CODE": "Identifiant",
"SP_LABEL": "Nom",
......@@ -192,4 +197,4 @@
"GEL": "Gel"
}
}
}
\ No newline at end of file
}
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment