diff --git a/src/app/feature/data-table/data-table-server-side-data-binding/components/example/server-side-data-binding/server-side-data-binding.component.html b/src/app/feature/data-table/data-table-server-side-data-binding/components/example/server-side-data-binding/server-side-data-binding.component.html index 6d93f0d5..c99faf30 100644 --- a/src/app/feature/data-table/data-table-server-side-data-binding/components/example/server-side-data-binding/server-side-data-binding.component.html +++ b/src/app/feature/data-table/data-table-server-side-data-binding/components/example/server-side-data-binding/server-side-data-binding.component.html @@ -9,6 +9,7 @@ [field]="'id'" [title]="'ID'" [filterable]="true" + [sortable]="true" [filterPlaceholder]="'Search'" [width]="80"> @@ -16,30 +17,35 @@ [field]="'orderMethodType'" [title]="'Order Method Type'" [filterPlaceholder]="'Search'" + [sortable]="true" [filterable]="true"> @@ -47,6 +53,7 @@ [field]="'quantity'" [title]="'Quantity'" [filterPlaceholder]="'Search'" + [sortable]="true" [filterable]="true" [width]="80"> @@ -54,6 +61,7 @@ [field]="'grossMargin'" [title]="'Gross Margin'" [filterPlaceholder]="'Search'" + [sortable]="true" [filterable]="true" [width]="100"> diff --git a/src/app/shared/services/data-fetch.service.ts b/src/app/shared/services/data-fetch.service.ts index 8bf3f66c..0b94f539 100644 --- a/src/app/shared/services/data-fetch.service.ts +++ b/src/app/shared/services/data-fetch.service.ts @@ -1,7 +1,7 @@ import { Injectable } from '@angular/core'; import { HttpClient, HttpParams } from '@angular/common/http'; -import { DataTableFilterColumn, DataTableRequestParams, DropdownRequestParams } from 'ornamentum'; +import { DataTableFilterColumn, DataTableRequestParams, DataTableSortColumn, DropdownRequestParams } from 'ornamentum'; import { Observable } from 'rxjs'; @@ -15,7 +15,8 @@ import fetchData from '../data/sample-data'; */ @Injectable() export class DataFetchService { - constructor(private http: HttpClient) {} + constructor(private http: HttpClient) { + } /** * Fetch data from client source for demo client side data binding with items property. @@ -53,6 +54,17 @@ export class DataFetchService { } }); + if (params.sortColumns && params.sortColumns.length) { + const sortExpressions = params.sortColumns.filter((column: DataTableSortColumn) => { + return column.sortOrder !== ''; + }); + if (sortExpressions.length) { + const firstExpression = sortExpressions[0]; + queryParams = queryParams.append('sortBy', firstExpression.field); + queryParams = queryParams.append('sortOrder', firstExpression.sortOrder); + } + } + return this.http.get>('/api/data', { params: queryParams }); } }