angular-pipes
Version:
Angular pipes library
86 lines • 11.6 kB
JavaScript
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=