Skip to content
Snippets Groups Projects
Commit 8df9a7b0 authored by Alex ORLUC's avatar Alex ORLUC
Browse files

FEAT #14454 TIME 0:40 save filters contacts list admin

parent 4d95b0c9
No related branches found
No related tags found
No related merge requests found
...@@ -101,6 +101,12 @@ export class AdministrationService { ...@@ -101,6 +101,12 @@ export class AdministrationService {
page: 0, page: 0,
field: '' field: ''
}, },
admin_contacts_list: {
sort: 'lastname',
sortDirection: 'asc',
page: 0,
field: ''
},
}; };
dataSource: MatTableDataSource<any>; dataSource: MatTableDataSource<any>;
filterColumns: string[]; filterColumns: string[];
...@@ -118,6 +124,10 @@ export class AdministrationService { ...@@ -118,6 +124,10 @@ export class AdministrationService {
} }
} }
setAdminId(adminId: string) {
this.currentAdminId = adminId;
}
setDataSource(adminId: string, data: any, sort: MatSort, paginator: MatPaginator, filterColumns: string[]) { setDataSource(adminId: string, data: any, sort: MatSort, paginator: MatPaginator, filterColumns: string[]) {
this.currentAdminId = adminId; this.currentAdminId = adminId;
this.searchTerm = new FormControl(''); this.searchTerm = new FormControl('');
...@@ -127,8 +137,8 @@ export class AdministrationService { ...@@ -127,8 +137,8 @@ export class AdministrationService {
// debounceTime(300), // debounceTime(300),
// filter(value => value.length > 2), // filter(value => value.length > 2),
tap((filterValue: any) => { tap((filterValue: any) => {
this.filters[this.currentAdminId]['field'] = filterValue; this.setFilter('field', filterValue);
this.setFilter(this.filters[this.currentAdminId]); this.saveFilter(this.filters[this.currentAdminId]);
filterValue = filterValue.trim(); // Remove whitespace filterValue = filterValue.trim(); // Remove whitespace
filterValue = filterValue.toLowerCase(); // MatTableDataSource defaults to lowercase matches filterValue = filterValue.toLowerCase(); // MatTableDataSource defaults to lowercase matches
setTimeout(() => { setTimeout(() => {
...@@ -146,10 +156,7 @@ export class AdministrationService { ...@@ -146,10 +156,7 @@ export class AdministrationService {
this.dataSource.sortingDataAccessor = this.functionsService.listSortingDataAccessor; this.dataSource.sortingDataAccessor = this.functionsService.listSortingDataAccessor;
if (this.functionsService.empty(this.getFilter())) { if (this.functionsService.empty(this.getFilter())) {
this.saveDefaultFilter();
this.setFilter(
this.defaultFilters[this.currentAdminId]
);
} }
// sort.active = this.getFilter('sort'); // sort.active = this.getFilter('sort');
...@@ -171,7 +178,7 @@ export class AdministrationService { ...@@ -171,7 +178,7 @@ export class AdministrationService {
.pipe( .pipe(
startWith({}), startWith({}),
tap(() => { tap(() => {
this.setFilter( this.saveFilter(
{ {
sort: sort.active, sort: sort.active,
sortDirection: sort.direction, sortDirection: sort.direction,
...@@ -187,7 +194,17 @@ export class AdministrationService { ...@@ -187,7 +194,17 @@ export class AdministrationService {
).subscribe(); ).subscribe();
} }
setFilter(filter: any) { saveDefaultFilter() {
this.saveFilter(
this.defaultFilters[this.currentAdminId]
);
}
setFilter(idFilter: string, value: string) {
this.filters[this.currentAdminId][idFilter] = value;
}
saveFilter(filter: any) {
this.filters[this.currentAdminId] = filter; this.filters[this.currentAdminId] = filter;
this.localStorage.save(`filtersAdmin_${this.headerService.user.id}`, JSON.stringify(this.filters)); this.localStorage.save(`filtersAdmin_${this.headerService.user.id}`, JSON.stringify(this.filters));
} }
......
...@@ -56,8 +56,7 @@ ...@@ -56,8 +56,7 @@
</div> </div>
</div> </div>
<div style="height:90%;overflow:auto;position:absolute;width:100%;"> <div style="height:90%;overflow:auto;position:absolute;width:100%;">
<mat-table id="contact-list" #tableContactListSort="matSort" [dataSource]="data" matSort <mat-table id="contact-list" #tableContactListSort="matSort" [dataSource]="data" matSort matSortDisableClear style="width:100%;">
matSortActive="lastname" matSortDirection="asc" style="width:100%;">
<ng-container matColumnDef="filling"> <ng-container matColumnDef="filling">
<mat-header-cell *matHeaderCellDef style="flex: initial;width: 60px;" <mat-header-cell *matHeaderCellDef style="flex: initial;width: 60px;"
[class.hide-for-mobile]="appService.getViewMode()"> [class.hide-for-mobile]="appService.getViewMode()">
......
...@@ -14,10 +14,11 @@ import { ConfirmComponent } from '../../../../plugins/modal/confirm.component'; ...@@ -14,10 +14,11 @@ import { ConfirmComponent } from '../../../../plugins/modal/confirm.component';
import { FormControl } from '@angular/forms'; import { FormControl } from '@angular/forms';
import { FunctionsService } from '../../../../service/functions.service'; import { FunctionsService } from '../../../../service/functions.service';
import { ContactExportComponent } from './export/contact-export.component'; import { ContactExportComponent } from './export/contact-export.component';
import { AdministrationService } from '../../../../app/administration/administration.service';
@Component({ @Component({
selector: 'contact-list', selector: 'contact-list',
templateUrl: "contacts-list-administration.component.html", templateUrl: 'contacts-list-administration.component.html',
styleUrls: ['contacts-list-administration.component.scss'] styleUrls: ['contacts-list-administration.component.scss']
}) })
export class ContactsListAdministrationComponent implements OnInit { export class ContactsListAdministrationComponent implements OnInit {
...@@ -88,21 +89,27 @@ export class ContactsListAdministrationComponent implements OnInit { ...@@ -88,21 +89,27 @@ export class ContactsListAdministrationComponent implements OnInit {
public appService: AppService, public appService: AppService,
public dialog: MatDialog, public dialog: MatDialog,
public functions: FunctionsService, public functions: FunctionsService,
public adminService: AdministrationService,
private viewContainerRef: ViewContainerRef) { } private viewContainerRef: ViewContainerRef) { }
ngOnInit(): void { ngOnInit(): void {
this.headerService.injectInSideBarLeft(this.adminMenuTemplate, this.viewContainerRef, 'adminMenu'); this.headerService.injectInSideBarLeft(this.adminMenuTemplate, this.viewContainerRef, 'adminMenu');
this.loading = true; this.loading = true;
this.adminService.setAdminId('admin_contacts_list');
if (this.functions.empty(this.adminService.getFilter())) {
this.adminService.saveDefaultFilter();
}
this.initContactList(); this.initContactList();
this.initAutocompleteContacts(); this.initAutocompleteContacts();
} }
initContactList() { initContactList() {
this.resultListDatabase = new ContactListHttpDao(this.http); this.resultListDatabase = new ContactListHttpDao(this.http);
this.paginator.pageIndex = 0; this.paginator.pageIndex = this.adminService.getFilter('page');
this.sort.active = 'lastname'; this.sort.active = this.adminService.getFilter('sort');
this.sort.direction = 'asc'; this.sort.direction = this.adminService.getFilter('sortDirection');
this.sort.sortChange.subscribe(() => this.paginator.pageIndex = 0); this.sort.sortChange.subscribe(() => this.paginator.pageIndex = 0);
// When list is refresh (sort, page, filters) // When list is refresh (sort, page, filters)
...@@ -111,6 +118,16 @@ export class ContactsListAdministrationComponent implements OnInit { ...@@ -111,6 +118,16 @@ export class ContactsListAdministrationComponent implements OnInit {
takeUntil(this.destroy$), takeUntil(this.destroy$),
startWith({}), startWith({}),
switchMap(() => { switchMap(() => {
this.adminService.saveFilter(
{
sort: this.sort.active,
sortDirection: this.sort.direction,
page: this.paginator.pageIndex,
field: this.adminService.getFilter('field')
}
);
// this.searchContact.setValue(this.adminService.getFilter('field'));
this.search = this.adminService.getFilter('field');
this.isLoadingResults = true; this.isLoadingResults = true;
return this.resultListDatabase!.getRepoIssues( return this.resultListDatabase!.getRepoIssues(
this.sort.active, this.sort.direction, this.paginator.pageIndex, this.routeUrl, this.search); this.sort.active, this.sort.direction, this.paginator.pageIndex, this.routeUrl, this.search);
...@@ -216,9 +233,13 @@ export class ContactsListAdministrationComponent implements OnInit { ...@@ -216,9 +233,13 @@ export class ContactsListAdministrationComponent implements OnInit {
} }
initAutocompleteContacts() { initAutocompleteContacts() {
this.searchContact = new FormControl(this.adminService.getFilter('field'));
this.searchContact.valueChanges this.searchContact.valueChanges
.pipe( .pipe(
tap((value) => { tap((value) => {
this.adminService.setFilter('field', value);
this.adminService.saveFilter(this.adminService.getFilter());
if (value.length === 0) { if (value.length === 0) {
this.search = ''; this.search = '';
this.paginator.pageIndex = 0; this.paginator.pageIndex = 0;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment