@hxui/angular
Version:
* * *
103 lines • 9.6 kB
JavaScript
/**
* @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==