From b5a689d34b95022a5d0a2d3502f9fb49e5947f5e Mon Sep 17 00:00:00 2001 From: Maxime MAKHLOUFI <maxime.makhloufi@smile.fr> Date: Thu, 27 Aug 2020 16:55:42 +0200 Subject: [PATCH] 19716 - Probative value - Fix date search filters --- .../probative-value-list.component.html | 12 ++-- .../probative-value-list.component.ts | 55 ++++++++++++++----- .../probative-value.component.html | 27 +++++---- .../probative-value.component.ts | 22 +++++--- 4 files changed, 78 insertions(+), 38 deletions(-) diff --git a/ui/ui-frontend/projects/referential/src/app/probative-value/probative-value-list/probative-value-list.component.html b/ui/ui-frontend/projects/referential/src/app/probative-value/probative-value-list/probative-value-list.component.html index b1169cab..ea050954 100644 --- a/ui/ui-frontend/projects/referential/src/app/probative-value/probative-value-list/probative-value-list.component.html +++ b/ui/ui-frontend/projects/referential/src/app/probative-value/probative-value-list/probative-value-list.component.html @@ -28,17 +28,17 @@ <tr class="vitamui-table-row"> <td class="clickable" (click)="probativeValueClick.emit(probativeValue)"> <i class="vitamui-icon vitamui-icon-probativeValue vitamui-row-icon status-badge" - [ngClass]="{'status-badge-green': probativeVlaueStatus(probativeValue) == 'OK', 'status-badge-grey':probativeVlaueStatus(probativeValue) == 'STARTED', - 'status-badge-orange': probativeVlaueStatus(probativeValue) == 'WARNING', 'status-badge-red': probativeVlaueStatus(probativeValue) == 'KO' || probativeVlaueStatus(probativeValue) == 'FATAL' }"></i> + [ngClass]="{'status-badge-green': probativeValueStatus(probativeValue) == 'OK', 'status-badge-grey':probativeValueStatus(probativeValue) == 'STARTED', + 'status-badge-orange': probativeValueStatus(probativeValue) == 'WARNING', 'status-badge-red': probativeValueStatus(probativeValue) == 'KO' || probativeValueStatus(probativeValue) == 'FATAL' }"></i> </td> <td class="clickable" (click)="probativeValueClick.emit(probativeValue)">{{ probativeValue?.id }}</td> <td class="clickable" (click)="probativeValueClick.emit(probativeValue)">{{ probativeValue?.dateTime | date: 'dd/MM/yyyy' }} </td> <td class="clickable" (click)="probativeValueClick.emit(probativeValue)" - [ngClass]="{'text-green': probativeVlaueStatus(probativeValue) == 'OK', 'text-grey':probativeVlaueStatus(probativeValue) == 'STARTED', - 'text-orange': probativeVlaueStatus(probativeValue) == 'WARNING', 'text-red': probativeVlaueStatus(probativeValue) == 'KO' || probativeVlaueStatus(probativeValue) == 'FATAL' }"> - {{ probativeVlaueStatus(probativeValue) }}</td> - <td class="clickable" (click)="probativeValueClick.emit(probativeValue)">{{ probativeVlaueMessage(probativeValue) }}</td> + [ngClass]="{'text-green': probativeValueStatus(probativeValue) == 'OK', 'text-grey':probativeValueStatus(probativeValue) == 'STARTED', + 'text-orange': probativeValueStatus(probativeValue) == 'WARNING', 'text-red': probativeValueStatus(probativeValue) == 'KO' || probativeValueStatus(probativeValue) == 'FATAL' }"> + {{ probativeValueStatus(probativeValue) }}</td> + <td class="clickable" (click)="probativeValueClick.emit(probativeValue)">{{ probativeValueMessage(probativeValue) }}</td> </tr> </ng-container> </tbody> diff --git a/ui/ui-frontend/projects/referential/src/app/probative-value/probative-value-list/probative-value-list.component.ts b/ui/ui-frontend/projects/referential/src/app/probative-value/probative-value-list/probative-value-list.component.ts index e7686bd7..0428f6e7 100644 --- a/ui/ui-frontend/projects/referential/src/app/probative-value/probative-value-list/probative-value-list.component.ts +++ b/ui/ui-frontend/projects/referential/src/app/probative-value/probative-value-list/probative-value-list.component.ts @@ -7,6 +7,11 @@ import {ProbativeValueService} from '../probative-value.service'; const FILTER_DEBOUNCE_TIME_MS = 400; +export class ProbativeValueFilters { + startDate: string; + endDate: string; +} + @Component({ selector: 'app-probative-value-list', templateUrl: './probative-value-list.component.html', @@ -23,6 +28,16 @@ export class ProbativeValueListComponent extends InfiniteScrollTable<any> implem // tslint:disable-next-line:variable-name private _searchText: string; + @Input('filters') + set filters(filters: ProbativeValueFilters) { + console.log('Filters: ', filters); + this._filters = filters; + this.filterChange.next(filters); + } + + // tslint:disable-next-line:variable-name + private _filters: ProbativeValueFilters; + loaded = false; orderBy = '#id'; @@ -30,6 +45,7 @@ export class ProbativeValueListComponent extends InfiniteScrollTable<any> implem private readonly searchChange = new Subject<string>(); private readonly orderChange = new Subject<string>(); + private readonly filterChange = new Subject<any>(); @Output() probativeValueClick = new EventEmitter<any>(); @@ -46,29 +62,39 @@ export class ProbativeValueListComponent extends InfiniteScrollTable<any> implem DEFAULT_PAGE_SIZE, this.orderBy, Direction.ASCENDANT, - JSON.stringify(this.buildProbativeVlaueCriteriaFromSearch()))) + JSON.stringify(this.buildProbativeValueCriteriaFromSearch()))) .subscribe((data: any[]) => { this.dataSource = data; }); - const searchCriteriaChange = merge(this.searchChange, this.orderChange) + const searchCriteriaChange = merge(this.searchChange, this.orderChange, this.filterChange) .pipe(debounceTime(FILTER_DEBOUNCE_TIME_MS)); searchCriteriaChange.subscribe(() => { - const query: any = this.buildProbativeVlaueCriteriaFromSearch(); + const query: any = this.buildProbativeValueCriteriaFromSearch(); console.log('query: ', query); const pageRequest = new PageRequest(0, DEFAULT_PAGE_SIZE, this.orderBy, this.direction, JSON.stringify(query)); this.search(pageRequest); }); } - buildProbativeVlaueCriteriaFromSearch() { + buildProbativeValueCriteriaFromSearch() { const criteria: any = {}; criteria.evTypeProc = 'AUDIT'; criteria.evType = 'EXPORT_PROBATIVE_VALUE'; if (this._searchText !== undefined && this._searchText.length > 0) { criteria['#id'] = this._searchText; } + + if (this._filters) { + if (this._filters.startDate) { + criteria.evDateTime_Start = this._filters.startDate; + } + if (this._filters.endDate) { + criteria.evDateTime_End = this._filters.endDate; + } + } + return criteria; } @@ -76,23 +102,24 @@ export class ProbativeValueListComponent extends InfiniteScrollTable<any> implem this.updatedData.unsubscribe(); } - searchProbativeVlaueOrdered() { - this.search(new PageRequest(0, DEFAULT_PAGE_SIZE, this.orderBy, Direction.ASCENDANT)); + searchProbativeValueOrdered() { + const query: any = this.buildProbativeValueCriteriaFromSearch(); + this.search(new PageRequest(0, DEFAULT_PAGE_SIZE, this.orderBy, Direction.ASCENDANT, JSON.stringify(query))); } emitOrderChange() { this.orderChange.next(); } - probativeVlaueStatus(probativeVlaue: any): string { - return (probativeVlaue.events !== undefined && probativeVlaue.events.length !== 0) ? - probativeVlaue.events[probativeVlaue.events.length - 1].outcome : - probativeVlaue.outcome; + probativeValueStatus(probativeValue: any): string { + return (probativeValue.events !== undefined && probativeValue.events.length !== 0) ? + probativeValue.events[probativeValue.events.length - 1].outcome : + probativeValue.outcome; } - probativeVlaueMessage(probativeVlaue: any): string { - return (probativeVlaue.events !== undefined && probativeVlaue.events.length !== 0) ? - probativeVlaue.events[probativeVlaue.events.length - 1].outMessage : - probativeVlaue.outMessage; + probativeValueMessage(probativeValue: any): string { + return (probativeValue.events !== undefined && probativeValue.events.length !== 0) ? + probativeValue.events[probativeValue.events.length - 1].outMessage : + probativeValue.outMessage; } } diff --git a/ui/ui-frontend/projects/referential/src/app/probative-value/probative-value.component.html b/ui/ui-frontend/projects/referential/src/app/probative-value/probative-value.component.html index cc351d2b..8ee68168 100644 --- a/ui/ui-frontend/projects/referential/src/app/probative-value/probative-value.component.html +++ b/ui/ui-frontend/projects/referential/src/app/probative-value/probative-value.component.html @@ -1,15 +1,17 @@ <mat-sidenav-container [autosize]="true" [hasBackdrop]="false"> - <mat-sidenav #panel mode="side" position="end" [fixedInViewport]="true"> - <app-probative-value-preview *ngIf="openedItem" (previewClose)="closePanel()" [probativeValue]="openedItem"></app-probative-value-preview> - </mat-sidenav> + <mat-sidenav #panel mode="side" position="end" [fixedInViewport]="true"> + <app-probative-value-preview *ngIf="openedItem" (previewClose)="closePanel()" [probativeValue]="openedItem"> + </app-probative-value-preview> + </mat-sidenav> - <mat-sidenav-content> + <mat-sidenav-content> <div class="vitamui-header"> <div class="vitamui-container"> - <vitamui-common-navbar [appId]="appId" (tenantSelect)="changeTenant($event)" [hideCustomerMenu]="true"></vitamui-common-navbar> + <vitamui-common-navbar [appId]="appId" (tenantSelect)="changeTenant($event)" [hideCustomerMenu]="true"> + </vitamui-common-navbar> <h2> Rechercher mes <strong>Relevés de valeur probante</strong> @@ -17,14 +19,16 @@ <div class="controls"> <div class="search-bar-filters"> - <vitamui-common-search-bar #searchBar name="probativeVlaue-search" (search)="onSearchSubmit($event)" - placeholder="Identifiant de relevé, identifiant d'UA" i18n-placeholder="@@probativeValueSearchPlaceholder"> + <vitamui-common-search-bar #searchBar name="probativeValue-search" + (search)="onSearchSubmit($event)" placeholder="Identifiant de relevé, identifiant d'UA" + i18n-placeholder="@@probativeValueSearchPlaceholder"> </vitamui-common-search-bar> <div class="reset-filters" (click)="resetFilters()">Effacer les filtres et la recherche</div> </div> <div class="actions"> - <button class="btn secondary" (click)="openCreateProbativeVlaueDialog()"> - <i class="vitamui-icon vitamui-icon-probativeVlaue btn-create"></i> <span>Lancer un relevé</span> + <button class="btn secondary" (click)="openCreateProbativeValueDialog()"> + <i class="vitamui-icon vitamui-icon-probativeValue btn-create"></i> <span>Lancer un + relevé</span> </button> </div> @@ -65,8 +69,9 @@ </div> </div> <div class="vitamui-body vitamui-container"> - <app-probative-value-list (probativeValueClick)="showProbativeValue($event)" [search]="search"></app-probative-value-list> + <app-probative-value-list (probativeValueClick)="showProbativeValue($event)" [search]="search" + [filters]="filters"></app-probative-value-list> </div> </mat-sidenav-content> -</mat-sidenav-container> +</mat-sidenav-container> \ No newline at end of file diff --git a/ui/ui-frontend/projects/referential/src/app/probative-value/probative-value.component.ts b/ui/ui-frontend/projects/referential/src/app/probative-value/probative-value.component.ts index f60bb75b..bc2ffa1f 100644 --- a/ui/ui-frontend/projects/referential/src/app/probative-value/probative-value.component.ts +++ b/ui/ui-frontend/projects/referential/src/app/probative-value/probative-value.component.ts @@ -20,7 +20,7 @@ export class ProbativeValueComponent extends SidenavPage<Event> implements OnIni filters: any = {}; @ViewChild(SearchBarComponent, {static: true}) searchBar: SearchBarComponent; - @ViewChild(ProbativeValueListComponent, {static: true}) probativeVlaueListComponent: ProbativeValueListComponent; + @ViewChild(ProbativeValueListComponent, {static: true}) probativeValueListComponent: ProbativeValueListComponent; constructor( public dialog: MatDialog, @@ -35,12 +35,20 @@ export class ProbativeValueComponent extends SidenavPage<Event> implements OnIni endDate: null }); - this.dateRangeFilterForm.valueChanges.subscribe((value) => { - this.filters.dateRange = value; + this.dateRangeFilterForm.controls.startDate.valueChanges.subscribe(value => { + this.filters.startDate = value; + this.probativeValueListComponent.filters = this.filters; + }); + this.dateRangeFilterForm.controls.endDate.valueChanges.subscribe((value: Date) => { + if (value) { + value.setDate(value.getDate() + 1); + } + this.filters.endDate = value; + this.probativeValueListComponent.filters = this.filters; }); } - openCreateProbativeVlaueDialog() { + openCreateProbativeValueDialog() { const dialogRef = this.dialog.open(ProbativeValueCreateComponent, { panelClass: 'vitamui-modal', disableClose: true @@ -53,10 +61,10 @@ export class ProbativeValueComponent extends SidenavPage<Event> implements OnIni } private refreshList() { - if (!this.probativeVlaueListComponent) { + if (!this.probativeValueListComponent) { return; } - this.probativeVlaueListComponent.searchProbativeVlaueOrdered(); + this.probativeValueListComponent.searchProbativeValueOrdered(); } onSearchSubmit(search: string) { @@ -86,6 +94,6 @@ export class ProbativeValueComponent extends SidenavPage<Event> implements OnIni } changeTenant(tenantIdentifier: number) { - this.router.navigate(['..', tenantIdentifier], { relativeTo: this.route }); + this.router.navigate(['..', tenantIdentifier], {relativeTo: this.route}); } } -- GitLab