Fixed issue with sorting
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
|
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
|
||||||
import { SortOrder } from '@msfa-enums/sort-order.enum';
|
import { SortOrder } from '@msfa-enums/sort-order.enum';
|
||||||
|
import { EmployeeCompactResponse } from '@msfa-models/api/employee.response.model';
|
||||||
import { EmployeeCompact } from '@msfa-models/employee.model';
|
import { EmployeeCompact } from '@msfa-models/employee.model';
|
||||||
import { PaginationMeta } from '@msfa-models/pagination-meta.model';
|
import { PaginationMeta } from '@msfa-models/pagination-meta.model';
|
||||||
import { Sort } from '@msfa-models/sort.model';
|
import { Sort } from '@msfa-models/sort.model';
|
||||||
@@ -13,19 +14,19 @@ import { Sort } from '@msfa-models/sort.model';
|
|||||||
export class EmployeesListComponent {
|
export class EmployeesListComponent {
|
||||||
@Input() employees: EmployeeCompact[];
|
@Input() employees: EmployeeCompact[];
|
||||||
@Input() paginationMeta: PaginationMeta;
|
@Input() paginationMeta: PaginationMeta;
|
||||||
@Input() sort: Sort<keyof EmployeeCompact>;
|
@Input() sort: Sort<keyof EmployeeCompactResponse>;
|
||||||
@Output() sorted = new EventEmitter<keyof EmployeeCompact>();
|
@Output() sorted = new EventEmitter<keyof EmployeeCompactResponse>();
|
||||||
@Output() paginated = new EventEmitter<number>();
|
@Output() paginated = new EventEmitter<number>();
|
||||||
|
|
||||||
columnHeaders: { label: string; key: keyof EmployeeCompact }[] = [
|
columnHeaders: { label: string; key: keyof EmployeeCompactResponse }[] = [
|
||||||
{ label: 'Namn', key: 'fullName' },
|
{ label: 'Namn', key: 'name' },
|
||||||
{
|
{
|
||||||
label: 'Tjänst',
|
label: 'Tjänst',
|
||||||
key: 'tjanster',
|
key: 'tjanst',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: 'Utförandeverksamheter',
|
label: 'Utförandeverksamheter',
|
||||||
key: 'utforandeVerksamheter',
|
key: 'utforandeVerksamhet',
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -52,7 +53,7 @@ export class EmployeesListComponent {
|
|||||||
return end < this.count ? end : this.count;
|
return end < this.count ? end : this.count;
|
||||||
}
|
}
|
||||||
|
|
||||||
handleSort(key: keyof EmployeeCompact): void {
|
handleSort(key: keyof EmployeeCompactResponse): void {
|
||||||
this.sorted.emit(key);
|
this.sorted.emit(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
||||||
import { IconType } from '@msfa-enums/icon-type.enum';
|
import { IconType } from '@msfa-enums/icon-type.enum';
|
||||||
import { EmployeeCompact, EmployeesData } from '@msfa-models/employee.model';
|
import { EmployeeCompactResponse } from '@msfa-models/api/employee.response.model';
|
||||||
|
import { EmployeesData } from '@msfa-models/employee.model';
|
||||||
import { Sort } from '@msfa-models/sort.model';
|
import { Sort } from '@msfa-models/sort.model';
|
||||||
import { EmployeeService } from '@msfa-services/api/employee.service';
|
import { EmployeeService } from '@msfa-services/api/employee.service';
|
||||||
import { BehaviorSubject, Observable } from 'rxjs';
|
import { BehaviorSubject, Observable } from 'rxjs';
|
||||||
@@ -15,7 +16,7 @@ export class EmployeesComponent {
|
|||||||
private _searchValue$ = new BehaviorSubject<string>('');
|
private _searchValue$ = new BehaviorSubject<string>('');
|
||||||
private _onlyEmployeesWithoutAuthorization$ = new BehaviorSubject<boolean>(false);
|
private _onlyEmployeesWithoutAuthorization$ = new BehaviorSubject<boolean>(false);
|
||||||
employeesData$: Observable<EmployeesData> = this.employeeService.employeesData$;
|
employeesData$: Observable<EmployeesData> = this.employeeService.employeesData$;
|
||||||
sort$: Observable<Sort<keyof EmployeeCompact>> = this.employeeService.sort$;
|
sort$: Observable<Sort<keyof EmployeeCompactResponse>> = this.employeeService.sort$;
|
||||||
iconType = IconType;
|
iconType = IconType;
|
||||||
|
|
||||||
constructor(private employeeService: EmployeeService) {}
|
constructor(private employeeService: EmployeeService) {}
|
||||||
@@ -32,7 +33,7 @@ export class EmployeesComponent {
|
|||||||
this._searchValue$.next($event.detail.target.value);
|
this._searchValue$.next($event.detail.target.value);
|
||||||
}
|
}
|
||||||
|
|
||||||
handleEmployeesSort(key: keyof EmployeeCompact): void {
|
handleEmployeesSort(key: keyof EmployeeCompactResponse): void {
|
||||||
this.employeeService.setSort(key);
|
this.employeeService.setSort(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,11 +4,14 @@ import { ErrorType } from '@msfa-enums/error-type.enum';
|
|||||||
import { SortOrder } from '@msfa-enums/sort-order.enum';
|
import { SortOrder } from '@msfa-enums/sort-order.enum';
|
||||||
import { environment } from '@msfa-environment';
|
import { environment } from '@msfa-environment';
|
||||||
import { EmployeeInviteMockApiResponse } from '@msfa-models/api/employee-invite.response.model';
|
import { EmployeeInviteMockApiResponse } from '@msfa-models/api/employee-invite.response.model';
|
||||||
import { EmployeeResponse, EmployeesApiResponse } from '@msfa-models/api/employee.response.model';
|
import {
|
||||||
|
EmployeeCompactResponse,
|
||||||
|
EmployeeResponse,
|
||||||
|
EmployeesApiResponse,
|
||||||
|
} from '@msfa-models/api/employee.response.model';
|
||||||
import { EmployeeInviteMockaData } from '@msfa-models/employee-invite-mock-data.model';
|
import { EmployeeInviteMockaData } from '@msfa-models/employee-invite-mock-data.model';
|
||||||
import {
|
import {
|
||||||
Employee,
|
Employee,
|
||||||
EmployeeCompact,
|
|
||||||
EmployeesData,
|
EmployeesData,
|
||||||
mapEmployeeToRequestData,
|
mapEmployeeToRequestData,
|
||||||
mapResponseToEmployee,
|
mapResponseToEmployee,
|
||||||
@@ -27,8 +30,8 @@ export class EmployeeService {
|
|||||||
private _apiUrl = `${environment.api.url}/users`;
|
private _apiUrl = `${environment.api.url}/users`;
|
||||||
private _limit$ = new BehaviorSubject<number>(20);
|
private _limit$ = new BehaviorSubject<number>(20);
|
||||||
private _page$ = new BehaviorSubject<number>(1);
|
private _page$ = new BehaviorSubject<number>(1);
|
||||||
private _sort$ = new BehaviorSubject<Sort<keyof EmployeeCompact>>({ key: 'fullName', order: SortOrder.ASC });
|
private _sort$ = new BehaviorSubject<Sort<keyof EmployeeCompactResponse>>({ key: 'name', order: SortOrder.ASC });
|
||||||
public sort$: Observable<Sort<keyof EmployeeCompact>> = this._sort$.asObservable();
|
public sort$: Observable<Sort<keyof EmployeeCompactResponse>> = this._sort$.asObservable();
|
||||||
private _searchFilter$ = new BehaviorSubject<string>('');
|
private _searchFilter$ = new BehaviorSubject<string>('');
|
||||||
private _onlyEmployeesWithoutAuthorization$ = new BehaviorSubject<boolean>(false);
|
private _onlyEmployeesWithoutAuthorization$ = new BehaviorSubject<boolean>(false);
|
||||||
|
|
||||||
@@ -47,7 +50,7 @@ export class EmployeeService {
|
|||||||
private _fetchEmployees$(
|
private _fetchEmployees$(
|
||||||
limit: number,
|
limit: number,
|
||||||
page: number,
|
page: number,
|
||||||
sort: Sort<keyof EmployeeCompact>,
|
sort: Sort<keyof EmployeeCompactResponse>,
|
||||||
searchFilter: string,
|
searchFilter: string,
|
||||||
onlyEmployeesWithoutAuthorization?: boolean
|
onlyEmployeesWithoutAuthorization?: boolean
|
||||||
): Observable<EmployeesData> {
|
): Observable<EmployeesData> {
|
||||||
@@ -94,7 +97,7 @@ export class EmployeeService {
|
|||||||
this._onlyEmployeesWithoutAuthorization$.next(value);
|
this._onlyEmployeesWithoutAuthorization$.next(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
public setSort(newSortKey: keyof EmployeeCompact): void {
|
public setSort(newSortKey: keyof EmployeeCompactResponse): void {
|
||||||
const currentSort = this._sort$.getValue();
|
const currentSort = this._sort$.getValue();
|
||||||
const order =
|
const order =
|
||||||
currentSort.key === newSortKey && currentSort.order === SortOrder.ASC ? SortOrder.DESC : SortOrder.ASC;
|
currentSort.key === newSortKey && currentSort.order === SortOrder.ASC ? SortOrder.DESC : SortOrder.ASC;
|
||||||
|
|||||||
@@ -9,9 +9,8 @@ server.use(middlewares);
|
|||||||
server.use(
|
server.use(
|
||||||
jsonServer.rewriter({
|
jsonServer.rewriter({
|
||||||
'/api/*': '/$1',
|
'/api/*': '/$1',
|
||||||
'*sort=fullName*': '$1sort=name$2',
|
'*sort=utforandeVerksamhet*': '$1sort=utforandeVerksamhet[0]$2',
|
||||||
'*sort=utforandeVerksamheter*': '$1sort=utforandeVerksamhet[0]$2',
|
'*sort=tjanst*': '$1sort=tjanst[0]$2',
|
||||||
'*sort=tjanster*': '$1sort=tjanst[0]$2',
|
|
||||||
'/users/:id': '/employees?ciamUserId=:id',
|
'/users/:id': '/employees?ciamUserId=:id',
|
||||||
'/users*': '/employees$1',
|
'/users*': '/employees$1',
|
||||||
'/employees*search=*': '/employees$1fullName_like=$2',
|
'/employees*search=*': '/employees$1fullName_like=$2',
|
||||||
|
|||||||
Reference in New Issue
Block a user