From 5a97ebff78c7dbc91e77ae7c9caa4876e5216292 Mon Sep 17 00:00:00 2001 From: Erik Tiekstra Date: Tue, 15 Jun 2021 09:16:15 +0200 Subject: [PATCH] feat(employee-list): Added search functionality using API. (TV-221) Squashed commit of the following: commit 4b93fcf4b8442a30c8d56cf8364f710b2d24c4e2 Author: Erik Tiekstra Date: Mon Jun 14 15:50:17 2021 +0200 Added fullName inside mock-api and filtering using api --- .../pages/employees/employees.component.html | 4 +-- .../pages/employees/employees.component.ts | 4 +-- .../src/app/services/api/employee.service.ts | 35 +++++++++++++------ mock-api/dafa-web/scripts/employees.js | 1 + mock-api/dafa-web/server.js | 5 ++- 5 files changed, 31 insertions(+), 18 deletions(-) diff --git a/apps/dafa-web/src/app/pages/administration/pages/employees/employees.component.html b/apps/dafa-web/src/app/pages/administration/pages/employees/employees.component.html index 7320fd8..1209fc5 100644 --- a/apps/dafa-web/src/app/pages/administration/pages/employees/employees.component.html +++ b/apps/dafa-web/src/app/pages/administration/pages/employees/employees.component.html @@ -14,11 +14,11 @@

Personallista

-
+
diff --git a/apps/dafa-web/src/app/pages/administration/pages/employees/employees.component.ts b/apps/dafa-web/src/app/pages/administration/pages/employees/employees.component.ts index 47a1c66..8535df4 100644 --- a/apps/dafa-web/src/app/pages/administration/pages/employees/employees.component.ts +++ b/apps/dafa-web/src/app/pages/administration/pages/employees/employees.component.ts @@ -23,11 +23,11 @@ export class EmployeesComponent { return this._searchValue$.getValue(); } - handleSearchSubmit(): void { + setSearchFilter(): void { this.employeeService.setSearchFilter(this.searchValue); } - handleSearchInput($event: CustomEvent): void { + setSearchValue($event: CustomEvent): void { this._searchValue$.next($event.detail.target.value); } diff --git a/apps/dafa-web/src/app/services/api/employee.service.ts b/apps/dafa-web/src/app/services/api/employee.service.ts index 9b6670c..a8e0b15 100644 --- a/apps/dafa-web/src/app/services/api/employee.service.ts +++ b/apps/dafa-web/src/app/services/api/employee.service.ts @@ -27,18 +27,28 @@ export class EmployeeService { private _sort$ = new BehaviorSubject>({ key: 'fullName', order: SortOrder.ASC }); public sort$: Observable> = this._sort$.asObservable(); private _searchFilter$ = new BehaviorSubject(''); - public searchFilter$: Observable = this._searchFilter$.asObservable(); - private _fetchEmployees$(limit: number, page: number, sort: Sort): Observable { + private _fetchEmployees$( + limit: number, + page: number, + sort: Sort, + searchFilter: string + ): Observable { + const params: { [param: string]: string | string[] } = { + sort: sort.key as string, + order: sort.order as string, + limit: limit.toString(), + page: page.toString(), + }; + + if (searchFilter) { + params.search = searchFilter; + } + return this.httpClient .get(this._apiUrl, { ...API_HEADERS, - params: { - sort: sort.key, - order: sort.order, - limit: limit.toString(), - page: page.toString(), - }, + params, }) .pipe( map(({ data, meta }) => { @@ -47,9 +57,12 @@ export class EmployeeService { ); } - public employeesData$: Observable = combineLatest([this._limit$, this._page$, this._sort$]).pipe( - switchMap(([limit, page, sort]) => this._fetchEmployees$(limit, page, sort)) - ); + public employeesData$: Observable = combineLatest([ + this._limit$, + this._page$, + this._sort$, + this._searchFilter$, + ]).pipe(switchMap(([limit, page, sort, searchFilter]) => this._fetchEmployees$(limit, page, sort, searchFilter))); public fetchDetailedEmployeeData$(id: string): Observable { return this.httpClient diff --git a/mock-api/dafa-web/scripts/employees.js b/mock-api/dafa-web/scripts/employees.js index ee6be00..7a89e0f 100644 --- a/mock-api/dafa-web/scripts/employees.js +++ b/mock-api/dafa-web/scripts/employees.js @@ -28,6 +28,7 @@ function generateEmployees(amount = 10) { createdAt: Date.now(), }; + person.fullName = `${person.firstName} ${person.lastName}`; employees.push(person); } diff --git a/mock-api/dafa-web/server.js b/mock-api/dafa-web/server.js index f04cc1d..115ed63 100644 --- a/mock-api/dafa-web/server.js +++ b/mock-api/dafa-web/server.js @@ -11,7 +11,7 @@ server.use( '/api/*': '/$1', '*sort=services*': '$1sort=services[0].name$2', '*sort=organizations*': '$1sort=organizations[0].address.city$2', - '*sort=fullName*': '$1sort=firstName,lastName$2', + '/employee*search=*': '/employee$1fullName_like=$2', '/employee*': '/employees$1', '/participants': '/participants?_embed=employees', '/participant/:id': '/participants/:id?_embed=employees', @@ -24,10 +24,9 @@ server.use( ); router.render = (req, res) => { - // all paths except getToken requires Authorization header. if (!req._parsedUrl.pathname.includes('getToken') && !req.headers.authorization) { - return res.status(401).jsonp({ error: "No valid access-token" }); + return res.status(401).jsonp({ error: 'No valid access-token' }); } const params = new URLSearchParams(req._parsedUrl.query);