com.phloxui
Version:
PhloxUI Ng2+ Framework
124 lines (123 loc) • 11 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import { Pipe } from '@angular/core';
import { DataUtils } from '../share/utils/DataUtils';
const /** @type {?} */ NAME = "phx_sort";
export class SortPipe {
/**
* @param {?} a
* @param {?} b
* @return {?}
*/
compare(a, b) {
if (a === b) {
return 0;
}
if (a === null && b === undefined) {
return 0;
}
if (a === undefined && b === null) {
return 0;
}
if (a === null || a === undefined) {
return -1;
}
if (b === null || b === undefined) {
return 1;
}
if (typeof a !== typeof b) {
// If typeof a and b are not the same, compare them by using their string values.
return this.compare(a.toString(), b.toString());
}
// Typeof a and b are the same.
// Compare by each type separately.
if (typeof a === 'number') {
if (a > b) {
return 1;
}
else {
return -1;
}
}
else if (typeof a === 'boolean') {
if (a) {
return 1;
}
else {
return -1;
}
}
else if (typeof a === 'function') {
// Compare with function's return value.
return this.compare(a(), b());
}
else if (typeof a === 'string') {
return a.localeCompare(b);
}
else if (Array.isArray(a)) {
let /** @type {?} */ aLen = a.length;
let /** @type {?} */ bLen = b.length;
if (aLen === bLen) {
return 0;
}
else if (aLen > bLen) {
return 1;
}
else {
return -1;
}
}
else {
return this.compare(JSON.stringify(a), JSON.stringify(b));
}
}
/**
* @param {?} value
* @param {?=} field
* @param {?=} ascending
* @return {?}
*/
transform(value, field, ascending) {
if (value === null || value === undefined || !Array.isArray(value)) {
return value;
}
if (field === null || field === undefined || typeof field !== 'string') {
field = '';
}
if (ascending === null || ascending === undefined || typeof ascending !== 'boolean') {
ascending = true;
}
return value.sort((a, b) => {
let /** @type {?} */ aVal = a;
let /** @type {?} */ bVal = b;
if (field !== '') {
aVal = DataUtils.getDataValue(field, a);
bVal = DataUtils.getDataValue(field, b);
}
if (ascending) {
return this.compare(aVal, bVal);
}
else {
return -this.compare(aVal, bVal);
}
});
}
}
SortPipe.decorators = [
{ type: Pipe, args: [{
name: NAME,
pure: false
},] },
];
function SortPipe_tsickle_Closure_declarations() {
/** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
SortPipe.decorators;
/**
* @nocollapse
* @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}
*/
SortPipe.ctorParameters;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU29ydFBpcGUucGlwZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2NvbS5waGxveHVpLyIsInNvdXJjZXMiOlsibGliL3BpcGUvU29ydFBpcGUucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFckQsdUJBQU0sSUFBSSxHQUFXLFVBQVUsQ0FBQztBQU1oQyxNQUFNOzs7Ozs7SUFFSSxPQUFPLENBQUMsQ0FBTSxFQUFFLENBQU07UUFDNUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDWixNQUFNLENBQUMsQ0FBQyxDQUFDO1NBQ1Y7UUFDRCxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQ2xDLE1BQU0sQ0FBQyxDQUFDLENBQUM7U0FDVjtRQUNELEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDbEMsTUFBTSxDQUFDLENBQUMsQ0FBQztTQUNWO1FBQ0QsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQztZQUNsQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDWDtRQUNELEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDbEMsTUFBTSxDQUFDLENBQUMsQ0FBQztTQUNWO1FBRUQsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDOztZQUUxQixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFB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QUFRLENBQUMsQ0FBQztZQUVsQixFQUFFLENBQUMsQ0FBQyxLQUFLLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDakIsSUFBSSxHQUFHLFNBQVMsQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUN4QyxJQUFJLEdBQUcsU0FBUyxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDekM7WUFFRCxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO2dCQUNkLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQzthQUNqQztZQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNOLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO2FBQ2xDO1NBQ0YsQ0FBQyxDQUFDOzs7O1lBeEZOLElBQUksU0FBQztnQkFDSixJQUFJLEVBQUUsSUFBSTtnQkFDVixJQUFJLEVBQUUsS0FBSzthQUNaIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGF0YVV0aWxzIH0gZnJvbSAnLi4vc2hhcmUvdXRpbHMvRGF0YVV0aWxzJztcblxuY29uc3QgTkFNRTogc3RyaW5nID0gXCJwaHhfc29ydFwiO1xuXG5AUGlwZSh7XG4gIG5hbWU6IE5BTUUsXG4gIHB1cmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIFNvcnRQaXBlIHtcblxuICBwcml2YXRlIGNvbXBhcmUoYTogYW55LCBiOiBhbnkpOiBudW1iZXIge1xuICAgIGlmIChhID09PSBiKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgaWYgKGEgPT09IG51bGwgJiYgYiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgaWYgKGEgPT09IHVuZGVmaW5lZCAmJiBiID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgaWYgKGEgPT09IG51bGwgfHwgYSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuICAgIGlmIChiID09PSBudWxsIHx8IGIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBhICE9PSB0eXBlb2YgYikge1xuICAgICAgLy8gSWYgdHlwZW9mIGEgYW5kIGIgYXJlIG5vdCB0aGUgc2FtZSwgY29tcGFyZSB0aGVtIGJ5IHVzaW5nIHRoZWlyIHN0cmluZyB2YWx1ZXMuXG4gICAgICByZXR1cm4gdGhpcy5jb21wYXJlKGEudG9TdHJpbmcoKSwgYi50b1N0cmluZygpKTtcbiAgICB9XG5cbiAgICAvLyBUeXBlb2YgYSBhbmQgYiBhcmUgdGhlIHNhbWUuXG4gICAgLy8gQ29tcGFyZSBieSBlYWNoIHR5cGUgc2VwYXJhdGVseS5cbiAgICBpZiAodHlwZW9mIGEgPT09ICdudW1iZXInKSB7XG4gICAgICBpZiAoYSA+IGIpIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgYSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICBpZiAoYSkge1xuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBhID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAvLyBDb21wYXJlIHdpdGggZnVuY3Rpb24ncyByZXR1cm4gdmFsdWUuXG4gICAgICByZXR1cm4gdGhpcy5jb21wYXJlKGEoKSwgYigpKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBhID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIGEubG9jYWxlQ29tcGFyZShiKTtcbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoYSkpIHtcbiAgICAgIGxldCBhTGVuOiBudW1iZXIgPSBhLmxlbmd0aDtcbiAgICAgIGxldCBiTGVuOiBudW1iZXIgPSBiLmxlbmd0aDtcblxuICAgICAgaWYgKGFMZW4gPT09IGJMZW4pIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9IGVsc2UgaWYgKGFMZW4gPiBiTGVuKSB7XG4gICAgICAgIHJldHVybiAxOyBcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuY29tcGFyZShKU09OLnN0cmluZ2lmeShhKSwgSlNPTi5zdHJpbmdpZnkoYikpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyB0cmFuc2Zvcm0odmFsdWU6IGFueSwgZmllbGQ/OiBzdHJpbmcsIGFzY2VuZGluZz86IGJvb2xlYW4pOiBhbnkge1xuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8ICFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICBpZiAoZmllbGQgPT09IG51bGwgfHwgZmllbGQgPT09IHVuZGVmaW5lZCB8fCB0eXBlb2YgZmllbGQgIT09ICdzdHJpbmcnKSB7XG4gICAgICBmaWVsZCA9ICcnO1xuICAgIH1cbiAgICBpZiAoYXNjZW5kaW5nID09PSBudWxsIHx8IGFzY2VuZGluZyA9PT0gdW5kZWZpbmVkIHx8IHR5cGVvZiBhc2NlbmRpbmcgIT09ICdib29sZWFuJykge1xuICAgICAgYXNjZW5kaW5nID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWUuc29ydCgoYSwgYik6IG51bWJlciA9PiB7XG4gICAgICBsZXQgYVZhbDogYW55ID0gYTtcbiAgICAgIGxldCBiVmFsOiBhbnkgPSBiO1xuXG4gICAgICBpZiAoZmllbGQgIT09ICcnKSB7XG4gICAgICAgIGFWYWwgPSBEYXRhVXRpbHMuZ2V0RGF0YVZhbHVlKGZpZWxkLCBhKTtcbiAgICAgICAgYlZhbCA9IERhdGFVdGlscy5nZXREYXRhVmFsdWUoZmllbGQsIGIpO1xuICAgICAgfVxuXG4gICAgICBpZiAoYXNjZW5kaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbXBhcmUoYVZhbCwgYlZhbCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gLXRoaXMuY29tcGFyZShhVmFsLCBiVmFsKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG59XG4iXX0=