diff --git a/src/frontend/app/administration/administration.service.ts b/src/frontend/app/administration/administration.service.ts index 7d044f16cb9a050fd7f423e299c78e0911f1ac71..881b005c5262cd3ead65fa04013d83f26f0f5019 100644 --- a/src/frontend/app/administration/administration.service.ts +++ b/src/frontend/app/administration/administration.service.ts @@ -41,6 +41,12 @@ export class AdministrationService { page: 0, field: '' }, + admin_listmodels: { + sort: 'title', + sortDirection: 'asc', + page: 0, + field: '' + }, }; dataSource: MatTableDataSource<any>; filterColumns: string[]; diff --git a/src/frontend/app/administration/diffusionModel/diffusionModels-administration.component.html b/src/frontend/app/administration/diffusionModel/diffusionModels-administration.component.html index 684e25008186e5495926f6978a3b37e1fc050925..2291204b738655580d048f28592f368d62f3a7a1 100755 --- a/src/frontend/app/administration/diffusionModel/diffusionModels-administration.component.html +++ b/src/frontend/app/administration/diffusionModel/diffusionModels-administration.component.html @@ -32,7 +32,7 @@ <div class="row" style="margin:0px;"> <div class="col-md-6 col-xs-6"> <mat-form-field> - <input matInput (keyup)="applyFilter($event.target.value)" placeholder="{{lang.filterBy}}"> + <input matInput [formControl]="adminService.getFilterField()" placeholder="{{lang.filterBy}}"> </mat-form-field> </div> <div class="col-md-6 col-xs-6"> @@ -40,8 +40,8 @@ </mat-paginator> </div> </div> - <mat-table #table [dataSource]="dataSource" matSort matSortActive="label" matSortDirection="asc"> - <ng-container matColumnDef="label"> + <mat-table #table [dataSource]="adminService.getDataSource()" [matSortActive]="adminService.getFilter('sort')" [matSortDirection]="adminService.getFilter('sortDirection')" matSort> + <ng-container matColumnDef="title"> <mat-header-cell *matHeaderCellDef mat-sort-header style="flex:2;">{{lang.label}}</mat-header-cell> <mat-cell *matCellDef="let element" style="flex:2;"> {{element.title}} </mat-cell> diff --git a/src/frontend/app/administration/diffusionModel/diffusionModels-administration.component.ts b/src/frontend/app/administration/diffusionModel/diffusionModels-administration.component.ts index 5def7127243bef420444af751b9665c407dc9de9..f2aedc1b85e1459ec65df86b75e1ebcdeea63ca7 100755 --- a/src/frontend/app/administration/diffusionModel/diffusionModels-administration.component.ts +++ b/src/frontend/app/administration/diffusionModel/diffusionModels-administration.component.ts @@ -6,17 +6,16 @@ import { HeaderService } from '../../../service/header.service'; import { MatDialog } from '@angular/material/dialog'; import { MatPaginator } from '@angular/material/paginator'; import { MatSort } from '@angular/material/sort'; -import { MatTableDataSource } from '@angular/material/table'; import { AppService } from '../../../service/app.service'; 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"; +import { FunctionsService } from '../../../service/functions.service'; +import { AdministrationService } from '../administration.service'; +import { of } from 'rxjs/internal/observable/of'; @Component({ - templateUrl: "diffusionModels-administration.component.html" + templateUrl: 'diffusionModels-administration.component.html' }) export class DiffusionModelsAdministrationComponent implements OnInit { @@ -28,29 +27,11 @@ export class DiffusionModelsAdministrationComponent implements OnInit { listTemplates: any[] = []; listTemplatesForAssign: any[] = []; - displayedColumns = ['label', 'description', 'typeLabel', 'actions']; - dataSource = new MatTableDataSource(this.listTemplates); - + displayedColumns = ['title', 'description', 'typeLabel', 'actions']; + filterColumns = ['title', 'description', 'typeLabel']; @ViewChild(MatPaginator, { static: false }) paginator: MatPaginator; @ViewChild(MatSort, { static: false }) sort: MatSort; - applyFilter(filterValue: string) { - 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( public http: HttpClient, @@ -59,7 +40,7 @@ export class DiffusionModelsAdministrationComponent implements OnInit { private headerService: HeaderService, public appService: AppService, public functions: FunctionsService, - private latinisePipe: LatinisePipe, + public adminService: AdministrationService, private viewContainerRef: ViewContainerRef ) { } @@ -79,13 +60,13 @@ export class DiffusionModelsAdministrationComponent implements OnInit { getListemplates() { return new Promise((resolve, reject) => { - this.http.get("../rest/listTemplates").pipe( + this.http.get('../rest/listTemplates').pipe( map((data: any) => { data.listTemplates = data.listTemplates.filter((template: any) => template.entityId === null && ['visaCircuit', 'opinionCircuit'].indexOf(template.type) > -1).map((template: any) => { return { ...template, typeLabel: this.lang[template.type] - } + }; }); return data.listTemplates; }), @@ -104,19 +85,7 @@ export class DiffusionModelsAdministrationComponent implements OnInit { loadList() { setTimeout(() => { - this.dataSource = new MatTableDataSource(this.listTemplates); - this.dataSource.paginator = this.paginator; - this.dataSource.sortingDataAccessor = (data: any, sortHeaderId: any) => { - if (sortHeaderId === 'description' || sortHeaderId === 'typeLabel') { - return data[sortHeaderId].toLocaleLowerCase(); - } - if (sortHeaderId === 'label') { - return data['title'].toLocaleLowerCase(); - } - }; - this.sort.active = 'label'; - this.sort.direction = 'asc'; - this.dataSource.sort = this.sort; + this.adminService.setDataSource('admin_listmodels', this.listTemplates, this.sort, this.paginator, this.filterColumns); }, 0); } @@ -124,7 +93,7 @@ export class DiffusionModelsAdministrationComponent implements OnInit { const dialogRef = this.dialog.open(ConfirmComponent, { panelClass: 'maarch-modal', autoFocus: false, disableClose: true, data: { title: this.lang.delete, msg: this.lang.confirmAction } }); dialogRef.afterClosed().pipe( filter((data: string) => data === 'ok'), - exhaustMap(() => this.http.delete("../rest/listTemplates/" + listTemplate['id'])), + exhaustMap(() => this.http.delete('../rest/listTemplates/' + listTemplate['id'])), tap(() => { this.listTemplates = this.listTemplates.filter((template: any) => template.id !== listTemplate.id); this.notify.success(this.lang.diffusionModelDeleted);