UNPKG

@hxui/angular

Version:

An Angular library based on the [HXUI design system](https://hxui.io).

62 lines 9.06 kB
import { Injectable } from '@angular/core'; import sortBy from 'array-sort-by'; import { TabularColumnTypes } from './tabular-column.interface'; import { TabularContentService } from './tabular-content.service'; import * as i0 from "@angular/core"; import * as i1 from "./tabular-content.service"; export var SortByDirection; (function (SortByDirection) { SortByDirection[SortByDirection["Ascending"] = 0] = "Ascending"; SortByDirection[SortByDirection["Descending"] = 1] = "Descending"; SortByDirection[SortByDirection["None"] = 2] = "None"; })(SortByDirection || (SortByDirection = {})); export class TabularSortByService { constructor(contentService) { this.contentService = contentService; } sortBy(rows = [], sortProps = []) { /** * @example Sorting * Sorting ASC by @name, after DESC by @age, after ASC by @id * let arr = [ * { id: 9, age: 26, name: 'pedro' }, * { id: 6, age: 21, name: 'Pedro' }, * { id: 7, age: 26, name: 'Maria' }, * { id: 2, age: 26, name: 'maría' } * ]; * sortBy(arr, item => [item.name, -item.age, item.id]); */ sortBy(rows, item => { const sort = []; for (const prop of sortProps) { const propVal = this.contentService.getContent(item[prop.property]); if (prop.type === TabularColumnTypes.String && prop.direction === SortByDirection.Descending) { sort.push('desc:' + propVal); } else if (prop.type === TabularColumnTypes.Number && prop.direction === SortByDirection.Descending) { sort.push(-propVal); } else if ((prop.type === TabularColumnTypes.Date || prop.type === TabularColumnTypes.DateTime) && prop.direction === SortByDirection.Descending) { sort.push(-new Date(propVal)); } else if ((prop.type === TabularColumnTypes.Date || prop.type === TabularColumnTypes.DateTime) && prop.direction === SortByDirection.Ascending) { sort.push(new Date(propVal)); } else if (prop.type === TabularColumnTypes.Html && prop.direction === SortByDirection.Descending) { const sortableValue = propVal; sort.push('desc:' + sortableValue.replace(/<.*?>/g, '')); } else { sort.push(propVal); } } return sort; }); } } TabularSortByService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: TabularSortByService, deps: [{ token: i1.TabularContentService }], target: i0.ɵɵFactoryTarget.Injectable }); TabularSortByService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: TabularSortByService }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: TabularSortByService, decorators: [{ type: Injectable }], ctorParameters: function () { return [{ type: i1.TabularContentService }]; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFidWxhci1zb3J0LWJ5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9oeC11aS9zcmMvbGliL3RhYnVsYXIvdGFidWxhci1zb3J0LWJ5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLE1BQU0sTUFBTSxlQUFlLENBQUM7QUFDbkMsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7OztBQUVsRSxNQUFNLENBQU4sSUFBWSxlQUlYO0FBSkQsV0FBWSxlQUFlO0lBQ3ZCLCtEQUFTLENBQUE7SUFDVCxpRUFBVSxDQUFBO0lBQ1YscURBQUksQ0FBQTtBQUNSLENBQUMsRUFKVyxlQUFlLEtBQWYsZUFBZSxRQUkxQjtBQVNELE1BQU0sT0FBTyxvQkFBb0I7SUFFL0IsWUFBb0IsY0FBcUM7UUFBckMsbUJBQWMsR0FBZCxjQUFjLENBQXVCO0lBQUksQ0FBQztJQUd2RCxNQUFNLENBQUMsT0FBc0IsRUFBRSxFQUFFLFlBQStCLEVBQUU7UUFFdkU7Ozs7Ozs7Ozs7V0FVRztRQUNILE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDbEIsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ2hCLEtBQUssTUFBTSxJQUFJLElBQUksU0FBUyxFQUFFO2dCQUM1QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7Z0JBRXBFLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxrQkFBa0IsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxlQUFlLENBQUMsVUFBVSxFQUFFO29CQUM1RixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsQ0FBQztpQkFDOUI7cUJBQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLGtCQUFrQixDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLGVBQWUsQ0FBQyxVQUFVLEVBQUU7b0JBQ25HLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztpQkFDckI7cUJBQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssa0JBQWtCLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssa0JBQWtCLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxlQUFlLENBQUMsVUFBVSxFQUFFO29CQUNoSixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztpQkFDL0I7cUJBQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssa0JBQWtCLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssa0JBQWtCLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxlQUFlLENBQUMsU0FBUyxFQUFFO29CQUMvSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7aUJBQzlCO3FCQUFNLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxrQkFBa0IsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxlQUFlLENBQUMsVUFBVSxFQUFFO29CQUNqRyxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUM7b0JBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7aUJBQzFEO3FCQUFNO29CQUNMLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7aUJBQ3BCO2FBQ0Y7WUFDRixPQUFPLElBQUksQ0FBQztRQUNiLENBQUMsQ0FBQyxDQUFDO0lBRUwsQ0FBQzs7a0hBekNVLG9CQUFvQjtzSEFBcEIsb0JBQW9COzRGQUFwQixvQkFBb0I7a0JBRGhDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0lUYWJ1bGFyUm93fSBmcm9tICcuL3RhYnVsYXItcm93LmludGVyZmFjZSc7XHJcbmltcG9ydCBzb3J0QnkgZnJvbSAnYXJyYXktc29ydC1ieSc7XHJcbmltcG9ydCB7VGFidWxhckNvbHVtblR5cGVzfSBmcm9tICcuL3RhYnVsYXItY29sdW1uLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IFRhYnVsYXJDb250ZW50U2VydmljZSB9IGZyb20gJy4vdGFidWxhci1jb250ZW50LnNlcnZpY2UnO1xyXG5cclxuZXhwb3J0IGVudW0gU29ydEJ5RGlyZWN0aW9uIHtcclxuICAgIEFzY2VuZGluZyxcclxuICAgIERlc2NlbmRpbmcsXHJcbiAgICBOb25lXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVNvcnRCeVByb3BlcnR5IHtcclxuICBwcm9wZXJ0eTogc3RyaW5nO1xyXG4gIGRpcmVjdGlvbjogU29ydEJ5RGlyZWN0aW9uO1xyXG4gIHR5cGU6IFRhYnVsYXJDb2x1bW5UeXBlcztcclxufVxyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgVGFidWxhclNvcnRCeVNlcnZpY2Uge1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbnRlbnRTZXJ2aWNlOiBUYWJ1bGFyQ29udGVudFNlcnZpY2UpIHsgfVxyXG5cclxuXHJcbiAgcHVibGljIHNvcnRCeShyb3dzOiBJVGFidWxhclJvd1tdID0gW10sIHNvcnRQcm9wczogSVNvcnRCeVByb3BlcnR5W10gPSBbXSkge1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGV4YW1wbGUgU29ydGluZ1xyXG4gICAgICogU29ydGluZyBBU0MgYnkgQG5hbWUsIGFmdGVyIERFU0MgYnkgQGFnZSwgYWZ0ZXIgQVNDIGJ5IEBpZFxyXG4gICAgICogbGV0IGFyciA9IFtcclxuICAgICAqIHsgaWQ6IDksIGFnZTogMjYsIG5hbWU6ICdwZWRybycgfSxcclxuICAgICAqIHsgaWQ6IDYsIGFnZTogMjEsIG5hbWU6ICdQZWRybycgfSxcclxuICAgICAqIHsgaWQ6IDcsIGFnZTogMjYsIG5hbWU6ICdNYXJpYScgfSxcclxuICAgICAqIHsgaWQ6IDIsIGFnZTogMjYsIG5hbWU6ICdtYXLDrWEnIH1cclxuICAgICAqIF07XHJcbiAgICAgKiBzb3J0QnkoYXJyLCBpdGVtID0+IFtpdGVtLm5hbWUsIC1pdGVtLmFnZSwgaXRlbS5pZF0pO1xyXG4gICAgICovXHJcbiAgICBzb3J0Qnkocm93cywgaXRlbSA9PiB7XHJcbiAgICAgIGNvbnN0IHNvcnQgPSBbXTtcclxuICAgICAgZm9yIChjb25zdCBwcm9wIG9mIHNvcnRQcm9wcykge1xyXG4gICAgICAgIGNvbnN0IHByb3BWYWwgPSB0aGlzLmNvbnRlbnRTZXJ2aWNlLmdldENvbnRlbnQoaXRlbVtwcm9wLnByb3BlcnR5XSk7XHJcblxyXG4gICAgICAgIGlmIChwcm9wLnR5cGUgPT09IFRhYnVsYXJDb2x1bW5UeXBlcy5TdHJpbmcgJiYgcHJvcC5kaXJlY3Rpb24gPT09IFNvcnRCeURpcmVjdGlvbi5EZXNjZW5kaW5nKSB7XHJcbiAgICAgICAgICBzb3J0LnB1c2goJ2Rlc2M6JyArIHByb3BWYWwpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAocHJvcC50eXBlID09PSBUYWJ1bGFyQ29sdW1uVHlwZXMuTnVtYmVyICYmIHByb3AuZGlyZWN0aW9uID09PSBTb3J0QnlEaXJlY3Rpb24uRGVzY2VuZGluZykge1xyXG4gICAgICAgICAgc29ydC5wdXNoKC1wcm9wVmFsKTtcclxuICAgICAgICB9IGVsc2UgaWYgKChwcm9wLnR5cGUgPT09IFRhYnVsYXJDb2x1bW5UeXBlcy5EYXRlIHx8IHByb3AudHlwZSA9PT0gVGFidWxhckNvbHVtblR5cGVzLkRhdGVUaW1lKSAmJiBwcm9wLmRpcmVjdGlvbiA9PT0gU29ydEJ5RGlyZWN0aW9uLkRlc2NlbmRpbmcpIHtcclxuICAgICAgICAgIHNvcnQucHVzaCgtbmV3IERhdGUocHJvcFZhbCkpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoKHByb3AudHlwZSA9PT0gVGFidWxhckNvbHVtblR5cGVzLkRhdGUgfHwgcHJvcC50eXBlID09PSBUYWJ1bGFyQ29sdW1uVHlwZXMuRGF0ZVRpbWUpICYmIHByb3AuZGlyZWN0aW9uID09PSBTb3J0QnlEaXJlY3Rpb24uQXNjZW5kaW5nKSB7XHJcbiAgICAgICAgICBzb3J0LnB1c2gobmV3IERhdGUocHJvcFZhbCkpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAocHJvcC50eXBlID09PSBUYWJ1bGFyQ29sdW1uVHlwZXMuSHRtbCAmJiBwcm9wLmRpcmVjdGlvbiA9PT0gU29ydEJ5RGlyZWN0aW9uLkRlc2NlbmRpbmcpIHtcclxuICAgICAgICAgIGNvbnN0IHNvcnRhYmxlVmFsdWUgPSBwcm9wVmFsO1xyXG4gICAgICAgICAgc29ydC5wdXNoKCdkZXNjOicgKyBzb3J0YWJsZVZhbHVlLnJlcGxhY2UoLzwuKj8+L2csICcnKSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHNvcnQucHVzaChwcm9wVmFsKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICByZXR1cm4gc29ydDtcclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG59XHJcbiJdfQ==