UNPKG

angular-pipes

Version:
78 lines 11.3 kB
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXItYnkucGlwZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FuZ3VsYXItcGlwZXMvIiwic291cmNlcyI6WyJhcnJheS9vcmRlci1ieS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUt6QyxJQUFhLFdBQVcsbUJBQXhCLE1BQWEsV0FBVztJQUNkLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBTSxFQUFFLENBQU07UUFDcEMsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLEVBQUU7WUFDMUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDbkM7UUFFRCxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0IsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTdCLElBQUksT0FBTyxDQUFDLEtBQUssUUFBUSxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRTtZQUN0RixNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDL0IsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQy9CLE9BQU8sTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFD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QUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztvQkFDbEUsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO29CQUVuRCxJQUFJLFVBQVUsS0FBSyxDQUFDLEVBQUU7d0JBQ3BCLE9BQU8sVUFBVSxDQUFDO3FCQUNuQjtpQkFDRjtnQkFFRCxPQUFPLENBQUMsQ0FBQztZQUNYLENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0NBQ0YsQ0FBQTtBQW5FWSxXQUFXO0lBSHZCLElBQUksQ0FBQztRQUNKLElBQUksRUFBRSxTQUFTO0tBQ2hCLENBQUM7R0FDVyxXQUFXLENBbUV2QjtTQW5FWSxXQUFXO0FBeUV4QixJQUFhLG1CQUFtQixHQUFoQyxNQUFhLG1CQUFtQjtDQUFHLENBQUE7QUFBdEIsbUJBQW1CO0lBSi9CLFFBQVEsQ0FBQztRQUNSLFlBQVksRUFBRSxDQUFDLFdBQVcsQ0FBQztRQUMzQixPQUFPLEVBQUUsQ0FBQyxXQUFXLENBQUM7S0FDdkIsQ0FBQztHQUNXLG1CQUFtQixDQUFHO1NBQXRCLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0sIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGlzQXJyYXkgfSBmcm9tICcuLi91dGlscy91dGlscyc7XHJcblxyXG5AUGlwZSh7XHJcbiAgbmFtZTogJ29yZGVyQnknLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgT3JkZXJCeVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuICBwcml2YXRlIHN0YXRpYyBfb3JkZXJCeShhOiBhbnksIGI6IGFueSk6IG51bWJlciB7XHJcbiAgICBpZiAoYSBpbnN0YW5jZW9mIERhdGUgJiYgYiBpbnN0YW5jZW9mIERhdGUpIHtcclxuICAgICAgcmV0dXJuIGEgPCBiID8gLTEgOiBhID4gYiA/IDEgOiAwO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGZsb2F0QSA9IHBhcnNlRmxvYXQoYSk7XHJcbiAgICBjb25zdCBmbG9hdEIgPSBwYXJzZUZsb2F0KGIpO1xyXG5cclxuICAgIGlmICh0eXBlb2YgYSA9PT0gJ3N0cmluZycgJiYgdHlwZW9mIGIgPT09ICdzdHJpbmcnICYmIChpc05hTihmbG9hdEEpIHx8IGlzTmFOKGZsb2F0QikpKSB7XHJcbiAgICAgIGNvbnN0IGxvd2VyQSA9IGEudG9Mb3dlckNhc2UoKTtcclxuICAgICAgY29uc3QgbG93ZXJCID0gYi50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICByZXR1cm4gbG93ZXJBIDwgbG93ZXJCID8gLTEgOiBsb3dlckEgPiBsb3dlckIgPyAxIDogMDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmxvYXRBIDwgZmxvYXRCID8gLTEgOiBmbG9hdEEgPiBmbG9hdEIgPyAxIDogMDtcclxuICB9XHJcblxyXG4gIHRyYW5zZm9ybShpbnB1dDogYW55LCBjb25maWc6IGFueSA9ICcrJyk6IGFueSB7XHJcbiAgICBpZiAoIWlzQXJyYXkoaW5wdXQpKSB7XHJcbiAgICAgIHJldHVybiBpbnB1dDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjb25maWdJc0FycmF5ID0gaXNBcnJheShjb25maWcpO1xyXG5cclxuICAgIC8vIElmIGNvbmZpZyA9PT0gJ3BhcmFtJyBPUiBbJ3BhcmFtJ11cclxuICAgIGlmICghY29uZmlnSXNBcnJheSB8fCAoY29uZmlnSXNBcnJheSAmJiBjb25maWcubGVuZ3RoID09PSAxKSkge1xyXG4gICAgICBjb25zdCBwcm9wZXJ0eVRvQ2hlY2s6IHN0cmluZyA9IGNvbmZpZ0lzQXJyYXkgPyBjb25maWdbMF0gOiBjb25maWc7XHJcbiAgICAgIGNvbnN0IGZpcnN0ID0gcHJvcGVydHlUb0NoZWNrLnN1YnN0cigwLCAxKTtcclxuICAgICAgY29uc3QgZGVzYyA9IGZpcnN0ID09PSAnLSc7IC8vIEZpcnN0IGNoYXJhY3RlciBpcyAnLSdcclxuXHJcbiAgICAgIC8vIEJhc2ljIGFycmF5IChpZiBvbmx5ICsgb3IgLSBpcyBwcmVzZW50KVxyXG4gICAgICBpZiAoIXByb3BlcnR5VG9DaGVjayB8fCBwcm9wZXJ0eVRvQ2hlY2sgPT09ICctJyB8fCBwcm9wZXJ0eVRvQ2hlY2sgPT09ICcrJykge1xyXG4gICAgICAgIHJldHVybiBbLi4uaW5wdXRdLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBjb21wYXJhdG9yID0gT3JkZXJCeVBpcGUuX29yZGVyQnkoYSwgYik7XHJcbiAgICAgICAgICByZXR1cm4gZGVzYyA/IC1jb21wYXJhdG9yIDogY29tcGFyYXRvcjtcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyBJZiBjb250YWlucyArIG9yIC0sIHN1YnN0cmluZyB0aGUgcHJvcGVydHlcclxuICAgICAgICBjb25zdCBwcm9wZXJ0eSA9IGZpcnN0ID09PSAnKycgfHwgZGVzYyA/IHByb3BlcnR5VG9DaGVjay5zdWJzdHIoMSkgOiBwcm9wZXJ0eVRvQ2hlY2s7XHJcblxyXG4gICAgICAgIHJldHVybiBbLi4uaW5wdXRdLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBjb21wYXJhdG9yID0gT3JkZXJCeVBpcGUuX29yZGVyQnkoYVtwcm9wZXJ0eV0sIGJbcHJvcGVydHldKTtcclxuICAgICAgICAgIHJldHVybiBkZXNjID8gLWNvbXBhcmF0b3IgOiBjb21wYXJhdG9yO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBDb25maWcgaXMgYW4gYXJyYXkgb2YgcHJvcGVydHlcclxuXHJcbiAgICAgIHJldHVybiBbLi4uaW5wdXRdLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XHJcbiAgICAgICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IGNvbmZpZy5sZW5ndGg7ICsraSkge1xyXG4gICAgICAgICAgY29uc3QgZmlyc3QgPSBjb25maWdbaV0uc3Vic3RyKDAsIDEpO1xyXG4gICAgICAgICAgY29uc3QgZGVzYyA9IGZpcnN0ID09PSAnLSc7XHJcbiAgICAgICAgICBjb25zdCBwcm9wZXJ0eSA9IGZpcnN0ID09PSAnKycgfHwgZGVzYyA/IGNvbmZpZ1tpXS5zdWJzdHIoMSkgOiBjb25maWdbaV07XHJcblxyXG4gICAgICAgICAgY29uc3QgY29tcGFyYXRvciA9IE9yZGVyQnlQaXBlLl9vcmRlckJ5KGFbcHJvcGVydHldLCBiW3Byb3BlcnR5XSk7XHJcbiAgICAgICAgICBjb25zdCBjb21wYXJpc29uID0gZGVzYyA/IC1jb21wYXJhdG9yIDogY29tcGFyYXRvcjtcclxuXHJcbiAgICAgICAgICBpZiAoY29tcGFyaXNvbiAhPT0gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gY29tcGFyaXNvbjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiAwO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbT3JkZXJCeVBpcGVdLFxyXG4gIGV4cG9ydHM6IFtPcmRlckJ5UGlwZV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ09yZGVyQnlQaXBlTW9kdWxlIHt9XHJcbiJdfQ==