UNPKG

ferngully-aurelia-tools

Version:

Ferngully Tools for Aurelia

131 lines 5.76 kB
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; import { DateService } from "../../services/date-service"; import { autoinject } from "aurelia-framework"; var SortValueConverter = (function () { function SortValueConverter(dateService) { this.dateService = dateService; } SortValueConverter.prototype.toView = function (array, columnState, enabled) { var _this = this; if (enabled === void 0) { enabled = true; } var hardcodedInstances = []; if (!array || !columnState) { return null; } if (!columnState.sortEnabled) { return array; } var factor = columnState.descending ? -1 : 1; if (columnState.ordinalPositionPropertyName) { var name_1 = columnState.ordinalPositionPropertyName; hardcodedInstances = array .filter(function (instance) { var propName = instance[name_1]; return (propName !== undefined) && (propName !== null); }); array = array .filter(function (instance) { var propName = instance[name_1]; return (propName === undefined) || (propName === null); }); } else { array = array.slice(0); } array.sort(function (a, b) { return _this.evaluateValues(_this.getEvaluatorForDataType(columnState.dataType), a, b, columnState, factor); }); if (hardcodedInstances.length && columnState.ordinalPositionPropertyName) { for (var _i = 0, hardcodedInstances_1 = hardcodedInstances; _i < hardcodedInstances_1.length; _i++) { var hcInstance = hardcodedInstances_1[_i]; array.splice(hcInstance[columnState.ordinalPositionPropertyName], 0, hcInstance); } } return array; }; SortValueConverter.prototype.evaluateValues = function (fnEvaluator, a, b, columnState, factor) { var result = fnEvaluator.call(this, this.getColumnValue(a, columnState), this.getColumnValue(b, columnState), factor); if ((result === 0) && columnState.tieBreakerColumnName) { result = this.getEvaluatorForDataType(columnState.tieBreakerDataType).call(this, this.getTieBreaker(a, columnState), this.getTieBreaker(b, columnState), factor); } return result; }; SortValueConverter.prototype.getColumnValue = function (row, columnState) { if (!columnState.valueResolver) { return row[columnState.columnName]; } else { return columnState.valueResolver.fnGetRowValue(row, columnState.valueResolver.data); } }; SortValueConverter.prototype.getTieBreaker = function (row, columnState) { return columnState.tieBreakerColumnName ? row[columnState.tieBreakerColumnName] : null; }; SortValueConverter.prototype.getEvaluatorForDataType = function (dataType) { switch (dataType) { case SortDataType.boolean: case SortDataType.number: case SortDataType.integer: default: return this.evaluateNumber; case SortDataType.datetime: return this.evaluateDateTime; case SortDataType.string: return this.evaluateString; } }; SortValueConverter.prototype.evaluateNumber = function (a, b, factor) { if (!a && !b) return 0; if (!a) return -factor; if (!b) return factor; return (a - b) * factor; }; SortValueConverter.prototype.evaluateString = function (a, b, factor) { if (!a && !b) return 0; if (!a) return -factor; if (!b) return factor; a = a.toLowerCase(); b = b.toLowerCase(); return a.localeCompare(b) * factor; }; SortValueConverter.prototype.evaluateDateTime = function (valueA, valueB, factor) { var a = this.dateService.dateStringToTicks(valueA); var b = this.dateService.dateStringToTicks(valueB); if (!a && !b) return 0; if (!a) return -factor; if (!b) return factor; return (a - b) * factor; }; SortValueConverter = __decorate([ autoinject, __metadata("design:paramtypes", [DateService]) ], SortValueConverter); return SortValueConverter; }()); export { SortValueConverter }; export var SortDataType; (function (SortDataType) { SortDataType[SortDataType["string"] = 1] = "string"; SortDataType[SortDataType["number"] = 2] = "number"; SortDataType[SortDataType["datetime"] = 3] = "datetime"; SortDataType[SortDataType["boolean"] = 4] = "boolean"; SortDataType[SortDataType["integer"] = 5] = "integer"; })(SortDataType || (SortDataType = {})); //# sourceMappingURL=sort.js.map