UNPKG

@hxui/angular

Version:

* * *

80 lines 8.39 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc */ import { Injectable } from '@angular/core'; import sortBy from 'array-sort-by'; import { TabularColumnTypes } from './tabular-column.interface'; /** @enum {number} */ const SortByDirection = { Ascending: 0, Descending: 1, None: 2, }; export { SortByDirection }; SortByDirection[SortByDirection.Ascending] = 'Ascending'; SortByDirection[SortByDirection.Descending] = 'Descending'; SortByDirection[SortByDirection.None] = 'None'; /** * @record */ export function ISortByProperty() { } if (false) { /** @type {?} */ ISortByProperty.prototype.property; /** @type {?} */ ISortByProperty.prototype.direction; /** @type {?} */ ISortByProperty.prototype.type; } export class TabularSortByService { /** * @param {?=} rows * @param {?=} sortProps * @return {?} */ 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 => { /** @type {?} */ const sort = []; for (const prop of sortProps) { if (prop.type === TabularColumnTypes.String && prop.direction === SortByDirection.Descending) { sort.push('desc:' + item[prop.property]); } else if (prop.type === TabularColumnTypes.Number && prop.direction === SortByDirection.Descending) { sort.push(-item[prop.property]); } else if ((prop.type === TabularColumnTypes.Date || prop.type === TabularColumnTypes.DateTime) && prop.direction === SortByDirection.Descending) { sort.push(-new Date(item[prop.property])); } else if ((prop.type === TabularColumnTypes.Date || prop.type === TabularColumnTypes.DateTime) && prop.direction === SortByDirection.Ascending) { sort.push(new Date(item[prop.property])); } else if (prop.type === TabularColumnTypes.Html && prop.direction === SortByDirection.Descending) { /** @type {?} */ const sortableValue = item[prop.property]; sort.push('desc:' + sortableValue.replace(/<.*?>/g, '')); } else { sort.push(item[prop.property]); } } return sort; }); } } TabularSortByService.decorators = [ { type: Injectable }, ]; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFidWxhci1zb3J0LWJ5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AaHh1aS9hbmd1bGFyLyIsInNvdXJjZXMiOlsibGliL3RhYnVsYXIvdGFidWxhci1zb3J0LWJ5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxNQUFNLE1BQU0sZUFBZSxDQUFDO0FBQ25DLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDOzs7SUFHMUQsWUFBUztJQUNULGFBQVU7SUFDVixPQUFJOzs7Ozs7Ozs7QUFHUixxQ0FJQzs7O0lBSEMsbUNBQWlCOztJQUNqQixvQ0FBMkI7O0lBQzNCLCtCQUF5Qjs7QUFJM0IsTUFBTSxPQUFPLG9CQUFvQjs7Ozs7O0lBR3hCLE1BQU0sQ0FBQyxPQUFzQixFQUFFLEVBQUUsWUFBK0IsRUFBRTtRQUV2RTs7Ozs7Ozs7OztXQVVHO1FBQ0gsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRTs7a0JBQ1osSUFBSSxHQUFHLEVBQUU7WUFDZixLQUFLLE1BQU0sSUFBSSxJQUFJLFNBQVMsRUFBRTtnQkFDNUIsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLGtCQUFrQixDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLGVBQWUsQ0FBQyxVQUFVLEVBQUU7b0JBQzVGLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztpQkFDMUM7cUJBQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLGtCQUFrQixDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLGVBQWUsQ0FBQyxVQUFVLEVBQUU7b0JBQ25HLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7aUJBQ2pDO3FCQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLGtCQUFrQixDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssZUFBZSxDQUFDLFVBQVUsRUFBRTtvQkFDaEosSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUMzQztxQkFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxrQkFBa0IsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLGVBQWUsQ0FBQyxTQUFTLEVBQUU7b0JBQy9JLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQzFDO3FCQUFNLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxrQkFBa0IsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxlQUFlLENBQUMsVUFBVSxFQUFFOzswQkFDM0YsYUFBYSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO29CQUN6QyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxhQUFhLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO2lCQUMxRDtxQkFBTTtvQkFDTCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztpQkFDaEM7YUFDRjtZQUNGLE9BQU8sSUFBSSxDQUFDO1FBQ2IsQ0FBQyxDQUFDLENBQUM7SUFFTCxDQUFDOzs7WUF0Q0YsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7SVRhYnVsYXJSb3d9IGZyb20gJy4vdGFidWxhci1yb3cuaW50ZXJmYWNlJztcclxuaW1wb3J0IHNvcnRCeSBmcm9tICdhcnJheS1zb3J0LWJ5JztcclxuaW1wb3J0IHtUYWJ1bGFyQ29sdW1uVHlwZXN9IGZyb20gJy4vdGFidWxhci1jb2x1bW4uaW50ZXJmYWNlJztcclxuXHJcbmV4cG9ydCBlbnVtIFNvcnRCeURpcmVjdGlvbiB7XHJcbiAgICBBc2NlbmRpbmcsXHJcbiAgICBEZXNjZW5kaW5nLFxyXG4gICAgTm9uZVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElTb3J0QnlQcm9wZXJ0eSB7XHJcbiAgcHJvcGVydHk6IHN0cmluZztcclxuICBkaXJlY3Rpb246IFNvcnRCeURpcmVjdGlvbjtcclxuICB0eXBlOiBUYWJ1bGFyQ29sdW1uVHlwZXM7XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFRhYnVsYXJTb3J0QnlTZXJ2aWNlIHtcclxuXHJcblxyXG4gIHB1YmxpYyBzb3J0Qnkocm93czogSVRhYnVsYXJSb3dbXSA9IFtdLCBzb3J0UHJvcHM6IElTb3J0QnlQcm9wZXJ0eVtdID0gW10pIHtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBleGFtcGxlIFNvcnRpbmdcclxuICAgICAqIFNvcnRpbmcgQVNDIGJ5IEBuYW1lLCBhZnRlciBERVNDIGJ5IEBhZ2UsIGFmdGVyIEFTQyBieSBAaWRcclxuICAgICAqIGxldCBhcnIgPSBbXHJcbiAgICAgKiB7IGlkOiA5LCBhZ2U6IDI2LCBuYW1lOiAncGVkcm8nIH0sXHJcbiAgICAgKiB7IGlkOiA2LCBhZ2U6IDIxLCBuYW1lOiAnUGVkcm8nIH0sXHJcbiAgICAgKiB7IGlkOiA3LCBhZ2U6IDI2LCBuYW1lOiAnTWFyaWEnIH0sXHJcbiAgICAgKiB7IGlkOiAyLCBhZ2U6IDI2LCBuYW1lOiAnbWFyw61hJyB9XHJcbiAgICAgKiBdO1xyXG4gICAgICogc29ydEJ5KGFyciwgaXRlbSA9PiBbaXRlbS5uYW1lLCAtaXRlbS5hZ2UsIGl0ZW0uaWRdKTtcclxuICAgICAqL1xyXG4gICAgc29ydEJ5KHJvd3MsIGl0ZW0gPT4ge1xyXG4gICAgICBjb25zdCBzb3J0ID0gW107XHJcbiAgICAgIGZvciAoY29uc3QgcHJvcCBvZiBzb3J0UHJvcHMpIHtcclxuICAgICAgICBpZiAocHJvcC50eXBlID09PSBUYWJ1bGFyQ29sdW1uVHlwZXMuU3RyaW5nICYmIHByb3AuZGlyZWN0aW9uID09PSBTb3J0QnlEaXJlY3Rpb24uRGVzY2VuZGluZykge1xyXG4gICAgICAgICAgc29ydC5wdXNoKCdkZXNjOicgKyBpdGVtW3Byb3AucHJvcGVydHldKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHByb3AudHlwZSA9PT0gVGFidWxhckNvbHVtblR5cGVzLk51bWJlciAmJiBwcm9wLmRpcmVjdGlvbiA9PT0gU29ydEJ5RGlyZWN0aW9uLkRlc2NlbmRpbmcpIHtcclxuICAgICAgICAgIHNvcnQucHVzaCgtaXRlbVtwcm9wLnByb3BlcnR5XSk7XHJcbiAgICAgICAgfSBlbHNlIGlmICgocHJvcC50eXBlID09PSBUYWJ1bGFyQ29sdW1uVHlwZXMuRGF0ZSB8fCBwcm9wLnR5cGUgPT09IFRhYnVsYXJDb2x1bW5UeXBlcy5EYXRlVGltZSkgJiYgcHJvcC5kaXJlY3Rpb24gPT09IFNvcnRCeURpcmVjdGlvbi5EZXNjZW5kaW5nKSB7XHJcbiAgICAgICAgICBzb3J0LnB1c2goLW5ldyBEYXRlKGl0ZW1bcHJvcC5wcm9wZXJ0eV0pKTtcclxuICAgICAgICB9IGVsc2UgaWYgKChwcm9wLnR5cGUgPT09IFRhYnVsYXJDb2x1bW5UeXBlcy5EYXRlIHx8IHByb3AudHlwZSA9PT0gVGFidWxhckNvbHVtblR5cGVzLkRhdGVUaW1lKSAmJiBwcm9wLmRpcmVjdGlvbiA9PT0gU29ydEJ5RGlyZWN0aW9uLkFzY2VuZGluZykge1xyXG4gICAgICAgICAgc29ydC5wdXNoKG5ldyBEYXRlKGl0ZW1bcHJvcC5wcm9wZXJ0eV0pKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHByb3AudHlwZSA9PT0gVGFidWxhckNvbHVtblR5cGVzLkh0bWwgJiYgcHJvcC5kaXJlY3Rpb24gPT09IFNvcnRCeURpcmVjdGlvbi5EZXNjZW5kaW5nKSB7XHJcbiAgICAgICAgICBjb25zdCBzb3J0YWJsZVZhbHVlID0gaXRlbVtwcm9wLnByb3BlcnR5XTtcclxuICAgICAgICAgIHNvcnQucHVzaCgnZGVzYzonICsgc29ydGFibGVWYWx1ZS5yZXBsYWNlKC88Lio/Pi9nLCAnJykpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBzb3J0LnB1c2goaXRlbVtwcm9wLnByb3BlcnR5XSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgcmV0dXJuIHNvcnQ7XHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxufVxyXG4iXX0=