From b0877a3bf999a690816969ca88402c44a6fac0fd Mon Sep 17 00:00:00 2001 From: Guillaume Heurtier <guillaume.heurtier@maarch.org> Date: Wed, 4 Mar 2020 18:26:03 +0100 Subject: [PATCH] FEAT #12091 TIME 1:40 latinise filters in admin lists --- .../action/actions-administration.component.ts | 3 +++ .../basket/baskets-administration.component.ts | 3 +++ ...contacts-groups-administration.component.ts | 7 ++++++- ...diffusionModels-administration.component.ts | 18 +++++++++++++++++- .../group/groups-administration.component.ts | 3 +++ ...indexing-models-administration.component.ts | 3 +++ .../notifications-administration.component.ts | 3 +++ .../parameters-administration.component.ts | 7 ++++++- .../priorities-administration.component.ts | 3 +++ .../shippings-administration.component.ts | 7 ++++++- .../statuses-administration.component.ts | 3 +++ .../tag/tags-administration.component.ts | 3 +++ .../templates-administration.component.ts | 8 +------- .../user/users-administration.component.ts | 3 +++ src/frontend/service/functions.service.ts | 15 ++++++++++++++- 15 files changed, 77 insertions(+), 12 deletions(-) diff --git a/src/frontend/app/administration/action/actions-administration.component.ts b/src/frontend/app/administration/action/actions-administration.component.ts index 85c44d8dafc..520f53f4717 100755 --- a/src/frontend/app/administration/action/actions-administration.component.ts +++ b/src/frontend/app/administration/action/actions-administration.component.ts @@ -38,6 +38,9 @@ export class ActionsAdministrationComponent implements OnInit { filterValue = filterValue.trim(); // Remove whitespace filterValue = filterValue.toLowerCase(); // MatTableDataSource defaults to lowercase matches this.dataSource.filter = filterValue; + this.dataSource.filterPredicate = (template, filter: string) => { + return this.functions.filterUnSensitive(template, filter, ['id', 'label_action']); + }; } constructor( diff --git a/src/frontend/app/administration/basket/baskets-administration.component.ts b/src/frontend/app/administration/basket/baskets-administration.component.ts index d67a39065f2..797e35e81b7 100755 --- a/src/frontend/app/administration/basket/baskets-administration.component.ts +++ b/src/frontend/app/administration/basket/baskets-administration.component.ts @@ -36,6 +36,9 @@ export class BasketsAdministrationComponent implements OnInit { filterValue = filterValue.trim(); // Remove whitespace filterValue = filterValue.toLowerCase(); // MatTableDataSource defaults to lowercase matches this.dataSource.filter = filterValue; + this.dataSource.filterPredicate = (template: any, filter: string) => { + return this.functions.filterUnSensitive(template, filter, ['basket_id', 'basket_name', 'basket_desc']); + }; } constructor( diff --git a/src/frontend/app/administration/contact/group/contacts-groups-administration.component.ts b/src/frontend/app/administration/contact/group/contacts-groups-administration.component.ts index 1421cc95155..b811fefc644 100644 --- a/src/frontend/app/administration/contact/group/contacts-groups-administration.component.ts +++ b/src/frontend/app/administration/contact/group/contacts-groups-administration.component.ts @@ -8,6 +8,7 @@ import { MatSidenav } from '@angular/material/sidenav'; import { MatSort } from '@angular/material/sort'; import { MatTableDataSource } from '@angular/material/table'; import { AppService } from '../../../../service/app.service'; +import {FunctionsService} from "../../../../service/functions.service"; declare function $j(selector: any): any; @@ -67,13 +68,17 @@ export class ContactsGroupsAdministrationComponent implements OnInit { filterValue = filterValue.trim(); // Remove whitespace filterValue = filterValue.toLowerCase(); // MatTableDataSource defaults to lowercase matches this.dataSource.filter = filterValue; + this.dataSource.filterPredicate = (template, filter: string) => { + return this.functions.filterUnSensitive(template, filter, ['label', 'description']); + }; } constructor( public http: HttpClient, private notify: NotificationService, private headerService: HeaderService, - public appService: AppService + public appService: AppService, + public functions: FunctionsService ) { $j("link[href='merged_css.php']").remove(); } diff --git a/src/frontend/app/administration/diffusionModel/diffusionModels-administration.component.ts b/src/frontend/app/administration/diffusionModel/diffusionModels-administration.component.ts index 43fb7862601..b4d0a229223 100755 --- a/src/frontend/app/administration/diffusionModel/diffusionModels-administration.component.ts +++ b/src/frontend/app/administration/diffusionModel/diffusionModels-administration.component.ts @@ -13,6 +13,8 @@ import { tap } from 'rxjs/internal/operators/tap'; import { catchError, map, finalize, filter, exhaustMap } from 'rxjs/operators'; import { of } from 'rxjs'; import { ConfirmComponent } from '../../../plugins/modal/confirm.component'; +import {FunctionsService} from "../../../service/functions.service"; +import {LatinisePipe} from "ngx-pipes"; @Component({ templateUrl: "diffusionModels-administration.component.html", @@ -39,6 +41,18 @@ export class DiffusionModelsAdministrationComponent implements OnInit { filterValue = filterValue.trim(); filterValue = filterValue.toLowerCase(); this.dataSource.filter = filterValue; + this.dataSource.filterPredicate = (template, filter: string) => { + let filterReturn = false; + filter = this.latinisePipe.transform(filter); + this.displayedColumns.forEach((column:any) => { + if (column === 'description' || column === 'typeLabel') { + filterReturn = filterReturn || this.latinisePipe.transform(template[column].toLowerCase()).includes(filter); + } else if (column === 'label') { + filterReturn = filterReturn || this.latinisePipe.transform(template['title'].toLowerCase()).includes(filter); + } + }); + return filterReturn; + }; } constructor( @@ -46,7 +60,9 @@ export class DiffusionModelsAdministrationComponent implements OnInit { private notify: NotificationService, public dialog: MatDialog, private headerService: HeaderService, - public appService: AppService + public appService: AppService, + public functions: FunctionsService, + private latinisePipe: LatinisePipe ) { } async ngOnInit(): Promise<void> { diff --git a/src/frontend/app/administration/group/groups-administration.component.ts b/src/frontend/app/administration/group/groups-administration.component.ts index 7d58b9f524f..7da00bc65c5 100755 --- a/src/frontend/app/administration/group/groups-administration.component.ts +++ b/src/frontend/app/administration/group/groups-administration.component.ts @@ -42,6 +42,9 @@ export class GroupsAdministrationComponent implements OnInit { filterValue = filterValue.trim(); filterValue = filterValue.toLowerCase(); this.dataSource.filter = filterValue; + this.dataSource.filterPredicate = (template, filter: string) => { + return this.functions.filterUnSensitive(template, filter, ['group_id', 'group_desc']); + }; } constructor( diff --git a/src/frontend/app/administration/indexingModel/indexing-models-administration.component.ts b/src/frontend/app/administration/indexingModel/indexing-models-administration.component.ts index 231540b3078..f379c3f1ed2 100644 --- a/src/frontend/app/administration/indexingModel/indexing-models-administration.component.ts +++ b/src/frontend/app/administration/indexingModel/indexing-models-administration.component.ts @@ -48,6 +48,9 @@ export class IndexingModelsAdministrationComponent implements OnInit { filterValue = filterValue.trim(); // Remove whitespace filterValue = filterValue.toLowerCase(); // MatTableDataSource defaults to lowercase matches this.dataSource.filter = filterValue; + this.dataSource.filterPredicate = (template, filter: string) => { + return this.functions.filterUnSensitive(template, filter, ['id', 'label']); + }; } constructor( diff --git a/src/frontend/app/administration/notification/notifications-administration.component.ts b/src/frontend/app/administration/notification/notifications-administration.component.ts index dd424f1f1dd..9d6af481a8b 100755 --- a/src/frontend/app/administration/notification/notifications-administration.component.ts +++ b/src/frontend/app/administration/notification/notifications-administration.component.ts @@ -54,6 +54,9 @@ export class NotificationsAdministrationComponent implements OnInit { filterValue = filterValue.trim(); // Remove whitespace filterValue = filterValue.toLowerCase(); // MatTableDataSource defaults to lowercase matches this.dataSource.filter = filterValue; + this.dataSource.filterPredicate = (template, filter: string) => { + return this.functions.filterUnSensitive(template, filter, ['notification_id', 'description']); + }; } constructor( diff --git a/src/frontend/app/administration/parameter/parameters-administration.component.ts b/src/frontend/app/administration/parameter/parameters-administration.component.ts index 6b40c27b73f..6695de0b655 100755 --- a/src/frontend/app/administration/parameter/parameters-administration.component.ts +++ b/src/frontend/app/administration/parameter/parameters-administration.component.ts @@ -8,6 +8,7 @@ import { MatSidenav } from '@angular/material/sidenav'; import { MatSort } from '@angular/material/sort'; import { MatTableDataSource } from '@angular/material/table'; import { AppService } from '../../../service/app.service'; +import {FunctionsService} from "../../../service/functions.service"; declare function $j(selector: any): any; @@ -36,7 +37,8 @@ export class ParametersAdministrationComponent implements OnInit { public http: HttpClient, private notify: NotificationService, private headerService: HeaderService, - public appService: AppService + public appService: AppService, + public functions: FunctionsService ) { $j("link[href='merged_css.php']").remove(); } @@ -45,6 +47,9 @@ export class ParametersAdministrationComponent implements OnInit { filterValue = filterValue.trim(); // Remove whitespace filterValue = filterValue.toLowerCase(); // MatTableDataSource defaults to lowercase matches this.dataSource.filter = filterValue; + this.dataSource.filterPredicate = (template: any, filter: string) => { + return this.functions.filterUnSensitive(template, filter, ['id', 'description', 'value']); + }; } ngOnInit(): void { diff --git a/src/frontend/app/administration/priority/priorities-administration.component.ts b/src/frontend/app/administration/priority/priorities-administration.component.ts index 7f96d42fa6a..c3eb2c56a61 100755 --- a/src/frontend/app/administration/priority/priorities-administration.component.ts +++ b/src/frontend/app/administration/priority/priorities-administration.component.ts @@ -36,6 +36,9 @@ export class PrioritiesAdministrationComponent implements OnInit { filterValue = filterValue.trim(); // Remove whitespace filterValue = filterValue.toLowerCase(); // MatTableDataSource defaults to lowercase matches this.dataSource.filter = filterValue; + this.dataSource.filterPredicate = (template: any, filter: string) => { + return this.functions.filterUnSensitive(template, filter, ['id', 'label', 'delays']); + }; } constructor( diff --git a/src/frontend/app/administration/shipping/shippings-administration.component.ts b/src/frontend/app/administration/shipping/shippings-administration.component.ts index a8bd9c518fa..7ae43b7846c 100644 --- a/src/frontend/app/administration/shipping/shippings-administration.component.ts +++ b/src/frontend/app/administration/shipping/shippings-administration.component.ts @@ -8,6 +8,7 @@ import { MatSidenav } from '@angular/material/sidenav'; import { MatSort } from '@angular/material/sort'; import { MatTableDataSource } from '@angular/material/table'; import { AppService } from '../../../service/app.service'; +import {FunctionsService} from "../../../service/functions.service"; declare function $j(selector: any): any; @@ -36,7 +37,8 @@ export class ShippingsAdministrationComponent implements OnInit { public http: HttpClient, private notify: NotificationService, private headerService: HeaderService, - public appService: AppService + public appService: AppService, + public functions: FunctionsService ) { $j("link[href='merged_css.php']").remove(); } @@ -45,6 +47,9 @@ export class ShippingsAdministrationComponent implements OnInit { filterValue = filterValue.trim(); // Remove whitespace filterValue = filterValue.toLowerCase(); // MatTableDataSource defaults to lowercase matches this.dataSource.filter = filterValue; + this.dataSource.filterPredicate = (template: any, filter: string) => { + return this.functions.filterUnSensitive(template, filter, ['label', 'description', 'accountid']); + }; } ngOnInit(): void { diff --git a/src/frontend/app/administration/status/statuses-administration.component.ts b/src/frontend/app/administration/status/statuses-administration.component.ts index ab5fdbee24b..4e99a00eb18 100755 --- a/src/frontend/app/administration/status/statuses-administration.component.ts +++ b/src/frontend/app/administration/status/statuses-administration.component.ts @@ -35,6 +35,9 @@ export class StatusesAdministrationComponent implements OnInit { filterValue = filterValue.trim(); // Remove whitespace filterValue = filterValue.toLowerCase(); // MatTableDataSource defaults to lowercase matches this.dataSource.filter = filterValue; + this.dataSource.filterPredicate = (template, filter: string) => { + return this.functions.filterUnSensitive(template, filter, ['id', 'label_status']); + }; } constructor( diff --git a/src/frontend/app/administration/tag/tags-administration.component.ts b/src/frontend/app/administration/tag/tags-administration.component.ts index d85cc564e5f..2d75e3d6c1b 100644 --- a/src/frontend/app/administration/tag/tags-administration.component.ts +++ b/src/frontend/app/administration/tag/tags-administration.component.ts @@ -37,6 +37,9 @@ export class TagsAdministrationComponent implements OnInit { filterValue = filterValue.trim(); // Remove whitespace filterValue = filterValue.toLowerCase(); // MatTableDataSource defaults to lowercase matches this.dataSource.filter = filterValue; + this.dataSource.filterPredicate = (template: any, filter: string) => { + return this.functions.filterUnSensitive(template, filter, ['label']); + }; } constructor( diff --git a/src/frontend/app/administration/template/templates-administration.component.ts b/src/frontend/app/administration/template/templates-administration.component.ts index d9dd63d0b01..a5fc68222f9 100755 --- a/src/frontend/app/administration/template/templates-administration.component.ts +++ b/src/frontend/app/administration/template/templates-administration.component.ts @@ -39,13 +39,7 @@ export class TemplatesAdministrationComponent implements OnInit { filterValue = filterValue.toLowerCase(); // MatTableDataSource defaults to lowercase matches this.dataSource.filter = filterValue; this.dataSource.filterPredicate = (template, filter: string) => { - var filterReturn = false; - this.displayedColumns.forEach(function(column:any) { - if (column != 'actions') { - filterReturn = filterReturn || template[column].toLowerCase().includes(filter); - } - }); - return filterReturn; + return this.functions.filterUnSensitive(template, filter, ['template_label', 'template_comment', 'template_type', 'template_target']); }; } diff --git a/src/frontend/app/administration/user/users-administration.component.ts b/src/frontend/app/administration/user/users-administration.component.ts index 85fa835cd68..ff656176847 100755 --- a/src/frontend/app/administration/user/users-administration.component.ts +++ b/src/frontend/app/administration/user/users-administration.component.ts @@ -53,6 +53,9 @@ export class UsersAdministrationComponent implements OnInit { filterValue = filterValue.trim(); // Remove whitespace filterValue = filterValue.toLowerCase(); // MatTableDataSource defaults to lowercase matches this.dataSource.filter = filterValue; + this.dataSource.filterPredicate = (template, filter: string) => { + return this.functions.filterUnSensitive(template, filter, ['id', 'user_id', 'lastname', 'firstname', 'mail']); + }; } constructor( diff --git a/src/frontend/service/functions.service.ts b/src/frontend/service/functions.service.ts index d066a5c9e07..5a517c426fd 100644 --- a/src/frontend/service/functions.service.ts +++ b/src/frontend/service/functions.service.ts @@ -1,12 +1,13 @@ import { Injectable } from '@angular/core'; import { LANG } from '../app/translate.component'; +import {LatinisePipe} from "ngx-pipes"; @Injectable() export class FunctionsService { lang: any = LANG; - constructor() { } + constructor(public latinisePipe: LatinisePipe) { } empty(value: any) { if (value === null || value === undefined) { @@ -77,4 +78,16 @@ export class FunctionsService { } return data[sortHeaderId]; } + + filterUnSensitive(template: any, filter: string, filteredColumns: any) { + let filterReturn = false; + filter = this.latinisePipe.transform(filter); + filteredColumns.forEach((column:any) => { + if (typeof template[column] !== 'string') { + template[column] = JSON.stringify(template[column]); + } + filterReturn = filterReturn || this.latinisePipe.transform(template[column].toLowerCase()).includes(filter); + }); + return filterReturn; + } } -- GitLab