UNPKG

@hxui/angular

Version:

* * *

103 lines 9.6 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc */ import * as tslib_1 from "tslib"; import { Injectable } from '@angular/core'; import sortBy from 'array-sort-by'; import { TabularColumnTypes } from './tabular-column.interface'; /** @enum {number} */ var 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; } var TabularSortByService = /** @class */ (function () { function TabularSortByService() { } /** * @param {?=} rows * @param {?=} sortProps * @return {?} */ TabularSortByService.prototype.sortBy = /** * @param {?=} rows * @param {?=} sortProps * @return {?} */ function (rows, sortProps) { if (rows === void 0) { rows = []; } if (sortProps === void 0) { 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, function (item) { var e_1, _a; /** @type {?} */ var sort = []; try { for (var sortProps_1 = tslib_1.__values(sortProps), sortProps_1_1 = sortProps_1.next(); !sortProps_1_1.done; sortProps_1_1 = sortProps_1.next()) { var prop = sortProps_1_1.value; 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 {?} */ var sortableValue = item[prop.property]; sort.push('desc:' + sortableValue.replace(/<.*?>/g, '')); } else { sort.push(item[prop.property]); } } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (sortProps_1_1 && !sortProps_1_1.done && (_a = sortProps_1.return)) _a.call(sortProps_1); } finally { if (e_1) throw e_1.error; } } return sort; }); }; TabularSortByService.decorators = [ { type: Injectable }, ]; return TabularSortByService; }()); export { TabularSortByService }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFidWxhci1zb3J0LWJ5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AaHh1aS9hbmd1bGFyLyIsInNvdXJjZXMiOlsibGliL3RhYnVsYXIvdGFidWxhci1zb3J0LWJ5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sTUFBTSxNQUFNLGVBQWUsQ0FBQztBQUNuQyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQzs7O0lBRzFELFlBQVM7SUFDVCxhQUFVO0lBQ1YsT0FBSTs7Ozs7Ozs7O0FBR1IscUNBSUM7OztJQUhDLG1DQUFpQjs7SUFDakIsb0NBQTJCOztJQUMzQiwrQkFBeUI7O0FBRzNCO0lBQUE7SUF3Q0EsQ0FBQzs7Ozs7O0lBcENRLHFDQUFNOzs7OztJQUFiLFVBQWMsSUFBd0IsRUFBRSxTQUFpQztRQUEzRCxxQkFBQSxFQUFBLFNBQXdCO1FBQUUsMEJBQUEsRUFBQSxjQUFpQztRQUV2RTs7Ozs7Ozs7OztXQVVHO1FBQ0gsTUFBTSxDQUFDLElBQUksRUFBRSxVQUFBLElBQUk7OztnQkFDVCxJQUFJLEdBQUcsRUFBRTs7Z0JBQ2YsS0FBbUIsSUFBQSxjQUFBLGlCQUFBLFNBQVMsQ0FBQSxvQ0FBQSwyREFBRTtvQkFBekIsSUFBTSxJQUFJLHNCQUFBO29CQUNiLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxrQkFBa0IsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxlQUFlLENBQUMsVUFBVSxFQUFFO3dCQUM1RixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7cUJBQzFDO3lCQUFNLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxrQkFBa0IsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxlQUFlLENBQUMsVUFBVSxFQUFFO3dCQUNuRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO3FCQUNqQzt5QkFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxrQkFBa0IsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLGVBQWUsQ0FBQyxVQUFVLEVBQUU7d0JBQ2hKLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDM0M7eUJBQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssa0JBQWtCLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssa0JBQWtCLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxlQUFlLENBQUMsU0FBUyxFQUFFO3dCQUMvSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO3FCQUMxQzt5QkFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssa0JBQWtCLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssZUFBZSxDQUFDLFVBQVUsRUFBRTs7NEJBQzNGLGFBQWEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQzt3QkFDekMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztxQkFDMUQ7eUJBQU07d0JBQ0wsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7cUJBQ2hDO2lCQUNGOzs7Ozs7Ozs7WUFDRixPQUFPLElBQUksQ0FBQztRQUNiLENBQUMsQ0FBQyxDQUFDO0lBRUwsQ0FBQzs7Z0JBdENGLFVBQVU7O0lBd0NYLDJCQUFDO0NBQUEsQUF4Q0QsSUF3Q0M7U0F2Q1ksb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtJVGFidWxhclJvd30gZnJvbSAnLi90YWJ1bGFyLXJvdy5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgc29ydEJ5IGZyb20gJ2FycmF5LXNvcnQtYnknO1xyXG5pbXBvcnQge1RhYnVsYXJDb2x1bW5UeXBlc30gZnJvbSAnLi90YWJ1bGFyLWNvbHVtbi5pbnRlcmZhY2UnO1xyXG5cclxuZXhwb3J0IGVudW0gU29ydEJ5RGlyZWN0aW9uIHtcclxuICAgIEFzY2VuZGluZyxcclxuICAgIERlc2NlbmRpbmcsXHJcbiAgICBOb25lXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVNvcnRCeVByb3BlcnR5IHtcclxuICBwcm9wZXJ0eTogc3RyaW5nO1xyXG4gIGRpcmVjdGlvbjogU29ydEJ5RGlyZWN0aW9uO1xyXG4gIHR5cGU6IFRhYnVsYXJDb2x1bW5UeXBlcztcclxufVxyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgVGFidWxhclNvcnRCeVNlcnZpY2Uge1xyXG5cclxuXHJcbiAgcHVibGljIHNvcnRCeShyb3dzOiBJVGFidWxhclJvd1tdID0gW10sIHNvcnRQcm9wczogSVNvcnRCeVByb3BlcnR5W10gPSBbXSkge1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGV4YW1wbGUgU29ydGluZ1xyXG4gICAgICogU29ydGluZyBBU0MgYnkgQG5hbWUsIGFmdGVyIERFU0MgYnkgQGFnZSwgYWZ0ZXIgQVNDIGJ5IEBpZFxyXG4gICAgICogbGV0IGFyciA9IFtcclxuICAgICAqIHsgaWQ6IDksIGFnZTogMjYsIG5hbWU6ICdwZWRybycgfSxcclxuICAgICAqIHsgaWQ6IDYsIGFnZTogMjEsIG5hbWU6ICdQZWRybycgfSxcclxuICAgICAqIHsgaWQ6IDcsIGFnZTogMjYsIG5hbWU6ICdNYXJpYScgfSxcclxuICAgICAqIHsgaWQ6IDIsIGFnZTogMjYsIG5hbWU6ICdtYXLDrWEnIH1cclxuICAgICAqIF07XHJcbiAgICAgKiBzb3J0QnkoYXJyLCBpdGVtID0+IFtpdGVtLm5hbWUsIC1pdGVtLmFnZSwgaXRlbS5pZF0pO1xyXG4gICAgICovXHJcbiAgICBzb3J0Qnkocm93cywgaXRlbSA9PiB7XHJcbiAgICAgIGNvbnN0IHNvcnQgPSBbXTtcclxuICAgICAgZm9yIChjb25zdCBwcm9wIG9mIHNvcnRQcm9wcykge1xyXG4gICAgICAgIGlmIChwcm9wLnR5cGUgPT09IFRhYnVsYXJDb2x1bW5UeXBlcy5TdHJpbmcgJiYgcHJvcC5kaXJlY3Rpb24gPT09IFNvcnRCeURpcmVjdGlvbi5EZXNjZW5kaW5nKSB7XHJcbiAgICAgICAgICBzb3J0LnB1c2goJ2Rlc2M6JyArIGl0ZW1bcHJvcC5wcm9wZXJ0eV0pO1xyXG4gICAgICAgIH0gZWxzZSBpZiAocHJvcC50eXBlID09PSBUYWJ1bGFyQ29sdW1uVHlwZXMuTnVtYmVyICYmIHByb3AuZGlyZWN0aW9uID09PSBTb3J0QnlEaXJlY3Rpb24uRGVzY2VuZGluZykge1xyXG4gICAgICAgICAgc29ydC5wdXNoKC1pdGVtW3Byb3AucHJvcGVydHldKTtcclxuICAgICAgICB9IGVsc2UgaWYgKChwcm9wLnR5cGUgPT09IFRhYnVsYXJDb2x1bW5UeXBlcy5EYXRlIHx8IHByb3AudHlwZSA9PT0gVGFidWxhckNvbHVtblR5cGVzLkRhdGVUaW1lKSAmJiBwcm9wLmRpcmVjdGlvbiA9PT0gU29ydEJ5RGlyZWN0aW9uLkRlc2NlbmRpbmcpIHtcclxuICAgICAgICAgIHNvcnQucHVzaCgtbmV3IERhdGUoaXRlbVtwcm9wLnByb3BlcnR5XSkpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoKHByb3AudHlwZSA9PT0gVGFidWxhckNvbHVtblR5cGVzLkRhdGUgfHwgcHJvcC50eXBlID09PSBUYWJ1bGFyQ29sdW1uVHlwZXMuRGF0ZVRpbWUpICYmIHByb3AuZGlyZWN0aW9uID09PSBTb3J0QnlEaXJlY3Rpb24uQXNjZW5kaW5nKSB7XHJcbiAgICAgICAgICBzb3J0LnB1c2gobmV3IERhdGUoaXRlbVtwcm9wLnByb3BlcnR5XSkpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAocHJvcC50eXBlID09PSBUYWJ1bGFyQ29sdW1uVHlwZXMuSHRtbCAmJiBwcm9wLmRpcmVjdGlvbiA9PT0gU29ydEJ5RGlyZWN0aW9uLkRlc2NlbmRpbmcpIHtcclxuICAgICAgICAgIGNvbnN0IHNvcnRhYmxlVmFsdWUgPSBpdGVtW3Byb3AucHJvcGVydHldO1xyXG4gICAgICAgICAgc29ydC5wdXNoKCdkZXNjOicgKyBzb3J0YWJsZVZhbHVlLnJlcGxhY2UoLzwuKj8+L2csICcnKSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHNvcnQucHVzaChpdGVtW3Byb3AucHJvcGVydHldKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICByZXR1cm4gc29ydDtcclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG59XHJcbiJdfQ==