angular-pipes
Version:
Angular pipes library
78 lines • 11.3 kB
JavaScript
import * as tslib_1 from "tslib";
var OrderByPipe_1;
import { Pipe, NgModule } from '@angular/core';
import { isArray } from '../utils/utils';
let OrderByPipe = OrderByPipe_1 = class OrderByPipe {
static _orderBy(a, b) {
if (a instanceof Date && b instanceof Date) {
return a < b ? -1 : a > b ? 1 : 0;
}
const floatA = parseFloat(a);
const floatB = parseFloat(b);
if (typeof a === 'string' && typeof b === 'string' && (isNaN(floatA) || isNaN(floatB))) {
const lowerA = a.toLowerCase();
const lowerB = b.toLowerCase();
return lowerA < lowerB ? -1 : lowerA > lowerB ? 1 : 0;
}
return floatA < floatB ? -1 : floatA > floatB ? 1 : 0;
}
transform(input, config = '+') {
if (!isArray(input)) {
return input;
}
const configIsArray = isArray(config);
// If config === 'param' OR ['param']
if (!configIsArray || (configIsArray && config.length === 1)) {
const propertyToCheck = configIsArray ? config[0] : config;
const first = propertyToCheck.substr(0, 1);
const desc = first === '-'; // First character is '-'
// Basic array (if only + or - is present)
if (!propertyToCheck || propertyToCheck === '-' || propertyToCheck === '+') {
return [...input].sort((a, b) => {
const comparator = OrderByPipe_1._orderBy(a, b);
return desc ? -comparator : comparator;
});
}
else {
// If contains + or -, substring the property
const property = first === '+' || desc ? propertyToCheck.substr(1) : propertyToCheck;
return [...input].sort((a, b) => {
const comparator = OrderByPipe_1._orderBy(a[property], b[property]);
return desc ? -comparator : comparator;
});
}
}
else {
// Config is an array of property
return [...input].sort((a, b) => {
for (let i = 0; i < config.length; ++i) {
const first = config[i].substr(0, 1);
const desc = first === '-';
const property = first === '+' || desc ? config[i].substr(1) : config[i];
const comparator = OrderByPipe_1._orderBy(a[property], b[property]);
const comparison = desc ? -comparator : comparator;
if (comparison !== 0) {
return comparison;
}
}
return 0;
});
}
}
};
OrderByPipe = OrderByPipe_1 = tslib_1.__decorate([
Pipe({
name: 'orderBy',
})
], OrderByPipe);
export { OrderByPipe };
let NgOrderByPipeModule = class NgOrderByPipeModule {
};
NgOrderByPipeModule = tslib_1.__decorate([
NgModule({
declarations: [OrderByPipe],
exports: [OrderByPipe],
})
], NgOrderByPipeModule);
export { NgOrderByPipeModule };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXItYnkucGlwZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FuZ3VsYXItcGlwZXMvIiwic291cmNlcyI6WyJhcnJheS9vcmRlci1ieS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUt6QyxJQUFhLFdBQVcsbUJBQXhCLE1BQWEsV0FBVztJQUNkLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBTSxFQUFFLENBQU07UUFDcEMsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLEVBQUU7WUFDMUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDbkM7UUFFRCxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0IsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTdCLElBQUksT0FBTyxDQUFDLEtBQUssUUFBUSxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRTtZQUN0RixNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDL0IsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQy9CLE9BQU8sTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3ZEO1FBRUQsT0FBTyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFVLEVBQUUsU0FBYyxHQUFHO1FBQ3JDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDbkIsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUV0QyxxQ0FBcUM7UUFDckMsSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLGFBQWEsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQzVELE1BQU0sZUFBZSxHQUFXLGFBQWEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7WUFDbkUsTUFBTSxLQUFLLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDM0MsTUFBTSxJQUFJLEdBQUcsS0FBSyxLQUFLLEdBQUcsQ0FBQyxDQUFDLHlCQUF5QjtZQUVyRCwwQ0FBMEM7WUFDMUMsSUFBSSxDQUFDLGVBQWUsSUFBSSxlQUFlLEtBQUssR0FBRyxJQUFJLGVBQWUsS0FBSyxHQUFHLEVBQUU7Z0JBQzFFLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQU0sRUFBRSxDQUFNLEVBQUUsRUFBRTtvQkFDeEMsTUFBTSxVQUFVLEdBQUcsYUFBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQzlDLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO2dCQUN6QyxDQUFDLENBQUMsQ0FBQzthQUNKO2lCQUFNO2dCQUNMLDZDQUE2QztnQkFDN0MsTUFBTSxRQUFRLEdBQUcsS0FBSyxLQUFLLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQztnQkFFckYsT0FBTyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBTSxFQUFFLENBQU0sRUFBRSxFQUFFO29CQUN4QyxNQUFNLFVBQVUsR0FBRyxhQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztvQkFDbEUsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7Z0JBQ3pDLENBQUMsQ0FBQyxDQUFDO2FBQ0o7U0FDRjthQUFNO1lBQ0wsaUNBQWlDO1lBRWpDLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQU0sRUFBRSxDQUFNLEVBQUUsRUFBRTtnQkFDeEMsS0FBSyxJQUFJLENBQUMsR0FBVyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUU7b0JBQzlDLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUNyQyxNQUFNLElBQUksR0FBRyxLQUFLLEtBQUssR0FBRyxDQUFDO29CQUMzQixNQUFNLFFBQVEsR0FBRyxLQUFLLEtBQUssR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUV6RSxNQUFNLFVBQVUsR0FBRyxhQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztvQkFDbEUsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO29CQUVuRCxJQUFJLFVBQVUsS0FBSyxDQUFDLEVBQUU7d0JBQ3BCLE9BQU8sVUFBVSxDQUFDO3FCQUNuQjtpQkFDRjtnQkFFRCxPQUFPLENBQUMsQ0FBQztZQUNYLENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0NBQ0YsQ0FBQTtBQW5FWSxXQUFXO0lBSHZCLElBQUksQ0FBQztRQUNKLElBQUksRUFBRSxTQUFTO0tBQ2hCLENBQUM7R0FDVyxXQUFXLENBbUV2QjtTQW5FWSxXQUFXO0FBeUV4QixJQUFhLG1CQUFtQixHQUFoQyxNQUFhLG1CQUFtQjtDQUFHLENBQUE7QUFBdEIsbUJBQW1CO0lBSi9CLFFBQVEsQ0FBQztRQUNSLFlBQVksRUFBRSxDQUFDLFdBQVcsQ0FBQztRQUMzQixPQUFPLEVBQUUsQ0FBQyxXQUFXLENBQUM7S0FDdkIsQ0FBQztHQUNXLG1CQUFtQixDQUFHO1NBQXRCLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0sIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGlzQXJyYXkgfSBmcm9tICcuLi91dGlscy91dGlscyc7XHJcblxyXG5AUGlwZSh7XHJcbiAgbmFtZTogJ29yZGVyQnknLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgT3JkZXJCeVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuICBwcml2YXRlIHN0YXRpYyBfb3JkZXJCeShhOiBhbnksIGI6IGFueSk6IG51bWJlciB7XHJcbiAgICBpZiAoYSBpbnN0YW5jZW9mIERhdGUgJiYgYiBpbnN0YW5jZW9mIERhdGUpIHtcclxuICAgICAgcmV0dXJuIGEgPCBiID8gLTEgOiBhID4gYiA/IDEgOiAwO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGZsb2F0QSA9IHBhcnNlRmxvYXQoYSk7XHJcbiAgICBjb25zdCBmbG9hdEIgPSBwYXJzZUZsb2F0KGIpO1xyXG5cclxuICAgIGlmICh0eXBlb2YgYSA9PT0gJ3N0cmluZycgJiYgdHlwZW9mIGIgPT09ICdzdHJpbmcnICYmIChpc05hTihmbG9hdEEpIHx8IGlzTmFOKGZsb2F0QikpKSB7XHJcbiAgICAgIGNvbnN0IGxvd2VyQSA9IGEudG9Mb3dlckNhc2UoKTtcclxuICAgICAgY29uc3QgbG93ZXJCID0gYi50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICByZXR1cm4gbG93ZXJBIDwgbG93ZXJCID8gLTEgOiBsb3dlckEgPiBsb3dlckIgPyAxIDogMDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmxvYXRBIDwgZmxvYXRCID8gLTEgOiBmbG9hdEEgPiBmbG9hdEIgPyAxIDogMDtcclxuICB9XHJcblxyXG4gIHRyYW5zZm9ybShpbnB1dDogYW55LCBjb25maWc6IGFueSA9ICcrJyk6IGFueSB7XHJcbiAgICBpZiAoIWlzQXJyYXkoaW5wdXQpKSB7XHJcbiAgICAgIHJldHVybiBpbnB1dDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjb25maWdJc0FycmF5ID0gaXNBcnJheShjb25maWcpO1xyXG5cclxuICAgIC8vIElmIGNvbmZpZyA9PT0gJ3BhcmFtJyBPUiBbJ3BhcmFtJ11cclxuICAgIGlmICghY29uZmlnSXNBcnJheSB8fCAoY29uZmlnSXNBcnJheSAmJiBjb25maWcubGVuZ3RoID09PSAxKSkge1xyXG4gICAgICBjb25zdCBwcm9wZXJ0eVRvQ2hlY2s6IHN0cmluZyA9IGNvbmZpZ0lzQXJyYXkgPyBjb25maWdbMF0gOiBjb25maWc7XHJcbiAgICAgIGNvbnN0IGZpcnN0ID0gcHJvcGVydHlUb0NoZWNrLnN1YnN0cigwLCAxKTtcclxuICAgICAgY29uc3QgZGVzYyA9IGZpcnN0ID09PSAnLSc7IC8vIEZpcnN0IGNoYXJhY3RlciBpcyAnLSdcclxuXHJcbiAgICAgIC8vIEJhc2ljIGFycmF5IChpZiBvbmx5ICsgb3IgLSBpcyBwcmVzZW50KVxyXG4gICAgICBpZiAoIXByb3BlcnR5VG9DaGVjayB8fCBwcm9wZXJ0eVRvQ2hlY2sgPT09ICctJyB8fCBwcm9wZXJ0eVRvQ2hlY2sgPT09ICcrJykge1xyXG4gICAgICAgIHJldHVybiBbLi4uaW5wdXRdLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBjb21wYXJhdG9yID0gT3JkZXJCeVBpcGUuX29yZGVyQnkoYSwgYik7XHJcbiAgICAgICAgICByZXR1cm4gZGVzYyA/IC1jb21wYXJhdG9yIDogY29tcGFyYXRvcjtcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyBJZiBjb250YWlucyArIG9yIC0sIHN1YnN0cmluZyB0aGUgcHJvcGVydHlcclxuICAgICAgICBjb25zdCBwcm9wZXJ0eSA9IGZpcnN0ID09PSAnKycgfHwgZGVzYyA/IHByb3BlcnR5VG9DaGVjay5zdWJzdHIoMSkgOiBwcm9wZXJ0eVRvQ2hlY2s7XHJcblxyXG4gICAgICAgIHJldHVybiBbLi4uaW5wdXRdLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBjb21wYXJhdG9yID0gT3JkZXJCeVBpcGUuX29yZGVyQnkoYVtwcm9wZXJ0eV0sIGJbcHJvcGVydHldKTtcclxuICAgICAgICAgIHJldHVybiBkZXNjID8gLWNvbXBhcmF0b3IgOiBjb21wYXJhdG9yO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBDb25maWcgaXMgYW4gYXJyYXkgb2YgcHJvcGVydHlcclxuXHJcbiAgICAgIHJldHVybiBbLi4uaW5wdXRdLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XHJcbiAgICAgICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IGNvbmZpZy5sZW5ndGg7ICsraSkge1xyXG4gICAgICAgICAgY29uc3QgZmlyc3QgPSBjb25maWdbaV0uc3Vic3RyKDAsIDEpO1xyXG4gICAgICAgICAgY29uc3QgZGVzYyA9IGZpcnN0ID09PSAnLSc7XHJcbiAgICAgICAgICBjb25zdCBwcm9wZXJ0eSA9IGZpcnN0ID09PSAnKycgfHwgZGVzYyA/IGNvbmZpZ1tpXS5zdWJzdHIoMSkgOiBjb25maWdbaV07XHJcblxyXG4gICAgICAgICAgY29uc3QgY29tcGFyYXRvciA9IE9yZGVyQnlQaXBlLl9vcmRlckJ5KGFbcHJvcGVydHldLCBiW3Byb3BlcnR5XSk7XHJcbiAgICAgICAgICBjb25zdCBjb21wYXJpc29uID0gZGVzYyA/IC1jb21wYXJhdG9yIDogY29tcGFyYXRvcjtcclxuXHJcbiAgICAgICAgICBpZiAoY29tcGFyaXNvbiAhPT0gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gY29tcGFyaXNvbjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiAwO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbT3JkZXJCeVBpcGVdLFxyXG4gIGV4cG9ydHM6IFtPcmRlckJ5UGlwZV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ09yZGVyQnlQaXBlTW9kdWxlIHt9XHJcbiJdfQ==