UNPKG

com.phloxui

Version:

PhloxUI Ng2+ Framework

124 lines (123 loc) 11 kB
/** * @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=