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 });
}
}