UNPKG

angular-pipes

Version:
86 lines 11.6 kB
import * as tslib_1 from "tslib"; import { Pipe, NgModule } from '@angular/core'; import { isArray } from '../utils/utils'; var OrderByPipe = /** @class */ (function () { function OrderByPipe() { } OrderByPipe_1 = OrderByPipe; OrderByPipe._orderBy = function (a, b) { if (a instanceof Date && b instanceof Date) { return a < b ? -1 : a > b ? 1 : 0; } var floatA = parseFloat(a); var floatB = parseFloat(b); if (typeof a === 'string' && typeof b === 'string' && (isNaN(floatA) || isNaN(floatB))) { var lowerA = a.toLowerCase(); var lowerB = b.toLowerCase(); return lowerA < lowerB ? -1 : lowerA > lowerB ? 1 : 0; } return floatA < floatB ? -1 : floatA > floatB ? 1 : 0; }; OrderByPipe.prototype.transform = function (input, config) { if (config === void 0) { config = '+'; } if (!isArray(input)) { return input; } var configIsArray = isArray(config); // If config === 'param' OR ['param'] if (!configIsArray || (configIsArray && config.length === 1)) { var propertyToCheck = configIsArray ? config[0] : config; var first = propertyToCheck.substr(0, 1); var desc_1 = first === '-'; // First character is '-' // Basic array (if only + or - is present) if (!propertyToCheck || propertyToCheck === '-' || propertyToCheck === '+') { return tslib_1.__spread(input).sort(function (a, b) { var comparator = OrderByPipe_1._orderBy(a, b); return desc_1 ? -comparator : comparator; }); } else { // If contains + or -, substring the property var property_1 = first === '+' || desc_1 ? propertyToCheck.substr(1) : propertyToCheck; return tslib_1.__spread(input).sort(function (a, b) { var comparator = OrderByPipe_1._orderBy(a[property_1], b[property_1]); return desc_1 ? -comparator : comparator; }); } } else { // Config is an array of property return tslib_1.__spread(input).sort(function (a, b) { for (var i = 0; i < config.length; ++i) { var first = config[i].substr(0, 1); var desc = first === '-'; var property = first === '+' || desc ? config[i].substr(1) : config[i]; var comparator = OrderByPipe_1._orderBy(a[property], b[property]); var comparison = desc ? -comparator : comparator; if (comparison !== 0) { return comparison; } } return 0; }); } }; var OrderByPipe_1; OrderByPipe = OrderByPipe_1 = tslib_1.__decorate([ Pipe({ name: 'orderBy', }) ], OrderByPipe); return OrderByPipe; }()); export { OrderByPipe }; var NgOrderByPipeModule = /** @class */ (function () { function NgOrderByPipeModule() { } NgOrderByPipeModule = tslib_1.__decorate([ NgModule({ declarations: [OrderByPipe], exports: [OrderByPipe], }) ], NgOrderByPipeModule); return NgOrderByPipeModule; }()); export { NgOrderByPipeModule }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXItYnkucGlwZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FuZ3VsYXItcGlwZXMvIiwic291cmNlcyI6WyJhcnJheS9vcmRlci1ieS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBS3pDO0lBQUE7SUFtRUEsQ0FBQztvQkFuRVksV0FBVztJQUNQLG9CQUFRLEdBQXZCLFVBQXdCLENBQU0sRUFBRSxDQUFNO1FBQ3BDLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxFQUFFO1lBQzFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ25DO1FBRUQsSUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdCLElBQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUU3QixJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUU7WUFDdEYsSUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQy9CLElBQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUMvQixPQUFPLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxD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QUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO29CQUNsRSxJQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7b0JBRW5ELElBQUksVUFBVSxLQUFLLENBQUMsRUFBRTt3QkFDcEIsT0FBTyxVQUFVLENBQUM7cUJBQ25CO2lCQUNGO2dCQUVELE9BQU8sQ0FBQyxDQUFDO1lBQ1gsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7O0lBbEVVLFdBQVc7UUFIdkIsSUFBSSxDQUFDO1lBQ0osSUFBSSxFQUFFLFNBQVM7U0FDaEIsQ0FBQztPQUNXLFdBQVcsQ0FtRXZCO0lBQUQsa0JBQUM7Q0FBQSxBQW5FRCxJQW1FQztTQW5FWSxXQUFXO0FBeUV4QjtJQUFBO0lBQWtDLENBQUM7SUFBdEIsbUJBQW1CO1FBSi9CLFFBQVEsQ0FBQztZQUNSLFlBQVksRUFBRSxDQUFDLFdBQVcsQ0FBQztZQUMzQixPQUFPLEVBQUUsQ0FBQyxXQUFXLENBQUM7U0FDdkIsQ0FBQztPQUNXLG1CQUFtQixDQUFHO0lBQUQsMEJBQUM7Q0FBQSxBQUFuQyxJQUFtQztTQUF0QixtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtLCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBpc0FycmF5IH0gZnJvbSAnLi4vdXRpbHMvdXRpbHMnO1xyXG5cclxuQFBpcGUoe1xyXG4gIG5hbWU6ICdvcmRlckJ5JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIE9yZGVyQnlQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgX29yZGVyQnkoYTogYW55LCBiOiBhbnkpOiBudW1iZXIge1xyXG4gICAgaWYgKGEgaW5zdGFuY2VvZiBEYXRlICYmIGIgaW5zdGFuY2VvZiBEYXRlKSB7XHJcbiAgICAgIHJldHVybiBhIDwgYiA/IC0xIDogYSA+IGIgPyAxIDogMDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBmbG9hdEEgPSBwYXJzZUZsb2F0KGEpO1xyXG4gICAgY29uc3QgZmxvYXRCID0gcGFyc2VGbG9hdChiKTtcclxuXHJcbiAgICBpZiAodHlwZW9mIGEgPT09ICdzdHJpbmcnICYmIHR5cGVvZiBiID09PSAnc3RyaW5nJyAmJiAoaXNOYU4oZmxvYXRBKSB8fCBpc05hTihmbG9hdEIpKSkge1xyXG4gICAgICBjb25zdCBsb3dlckEgPSBhLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIGNvbnN0IGxvd2VyQiA9IGIudG9Mb3dlckNhc2UoKTtcclxuICAgICAgcmV0dXJuIGxvd2VyQSA8IGxvd2VyQiA/IC0xIDogbG93ZXJBID4gbG93ZXJCID8gMSA6IDA7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZsb2F0QSA8IGZsb2F0QiA/IC0xIDogZmxvYXRBID4gZmxvYXRCID8gMSA6IDA7XHJcbiAgfVxyXG5cclxuICB0cmFuc2Zvcm0oaW5wdXQ6IGFueSwgY29uZmlnOiBhbnkgPSAnKycpOiBhbnkge1xyXG4gICAgaWYgKCFpc0FycmF5KGlucHV0KSkge1xyXG4gICAgICByZXR1cm4gaW5wdXQ7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY29uZmlnSXNBcnJheSA9IGlzQXJyYXkoY29uZmlnKTtcclxuXHJcbiAgICAvLyBJZiBjb25maWcgPT09ICdwYXJhbScgT1IgWydwYXJhbSddXHJcbiAgICBpZiAoIWNvbmZpZ0lzQXJyYXkgfHwgKGNvbmZpZ0lzQXJyYXkgJiYgY29uZmlnLmxlbmd0aCA9PT0gMSkpIHtcclxuICAgICAgY29uc3QgcHJvcGVydHlUb0NoZWNrOiBzdHJpbmcgPSBjb25maWdJc0FycmF5ID8gY29uZmlnWzBdIDogY29uZmlnO1xyXG4gICAgICBjb25zdCBmaXJzdCA9IHByb3BlcnR5VG9DaGVjay5zdWJzdHIoMCwgMSk7XHJcbiAgICAgIGNvbnN0IGRlc2MgPSBmaXJzdCA9PT0gJy0nOyAvLyBGaXJzdCBjaGFyYWN0ZXIgaXMgJy0nXHJcblxyXG4gICAgICAvLyBCYXNpYyBhcnJheSAoaWYgb25seSArIG9yIC0gaXMgcHJlc2VudClcclxuICAgICAgaWYgKCFwcm9wZXJ0eVRvQ2hlY2sgfHwgcHJvcGVydHlUb0NoZWNrID09PSAnLScgfHwgcHJvcGVydHlUb0NoZWNrID09PSAnKycpIHtcclxuICAgICAgICByZXR1cm4gWy4uLmlucHV0XS5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgY29tcGFyYXRvciA9IE9yZGVyQnlQaXBlLl9vcmRlckJ5KGEsIGIpO1xyXG4gICAgICAgICAgcmV0dXJuIGRlc2MgPyAtY29tcGFyYXRvciA6IGNvbXBhcmF0b3I7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gSWYgY29udGFpbnMgKyBvciAtLCBzdWJzdHJpbmcgdGhlIHByb3BlcnR5XHJcbiAgICAgICAgY29uc3QgcHJvcGVydHkgPSBmaXJzdCA9PT0gJysnIHx8IGRlc2MgPyBwcm9wZXJ0eVRvQ2hlY2suc3Vic3RyKDEpIDogcHJvcGVydHlUb0NoZWNrO1xyXG5cclxuICAgICAgICByZXR1cm4gWy4uLmlucHV0XS5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgY29tcGFyYXRvciA9IE9yZGVyQnlQaXBlLl9vcmRlckJ5KGFbcHJvcGVydHldLCBiW3Byb3BlcnR5XSk7XHJcbiAgICAgICAgICByZXR1cm4gZGVzYyA/IC1jb21wYXJhdG9yIDogY29tcGFyYXRvcjtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gQ29uZmlnIGlzIGFuIGFycmF5IG9mIHByb3BlcnR5XHJcblxyXG4gICAgICByZXR1cm4gWy4uLmlucHV0XS5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4ge1xyXG4gICAgICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCBjb25maWcubGVuZ3RoOyArK2kpIHtcclxuICAgICAgICAgIGNvbnN0IGZpcnN0ID0gY29uZmlnW2ldLnN1YnN0cigwLCAxKTtcclxuICAgICAgICAgIGNvbnN0IGRlc2MgPSBmaXJzdCA9PT0gJy0nO1xyXG4gICAgICAgICAgY29uc3QgcHJvcGVydHkgPSBmaXJzdCA9PT0gJysnIHx8IGRlc2MgPyBjb25maWdbaV0uc3Vic3RyKDEpIDogY29uZmlnW2ldO1xyXG5cclxuICAgICAgICAgIGNvbnN0IGNvbXBhcmF0b3IgPSBPcmRlckJ5UGlwZS5fb3JkZXJCeShhW3Byb3BlcnR5XSwgYltwcm9wZXJ0eV0pO1xyXG4gICAgICAgICAgY29uc3QgY29tcGFyaXNvbiA9IGRlc2MgPyAtY29tcGFyYXRvciA6IGNvbXBhcmF0b3I7XHJcblxyXG4gICAgICAgICAgaWYgKGNvbXBhcmlzb24gIT09IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmlzb247XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gMDtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW09yZGVyQnlQaXBlXSxcclxuICBleHBvcnRzOiBbT3JkZXJCeVBpcGVdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmdPcmRlckJ5UGlwZU1vZHVsZSB7fVxyXG4iXX0=