cione-comp-lib
Version:
`$ yarn add cione-comp-lib` 或者 `$ npm i cione-comp-lib -S`
113 lines (112 loc) • 3.72 kB
JavaScript
import { parseDate, numericToNumber } from "../../util/number.mjs";
import { isNumber, createHashMap, isString, trim, hasOwn } from "../../../../zrender/lib/core/util.mjs";
import { throwError } from "../../util/log.mjs";
function parseDataValue(value, opt) {
var dimType = opt && opt.type;
if (dimType === "ordinal") {
return value;
}
if (dimType === "time" && !isNumber(value) && value != null && value !== "-") {
value = +parseDate(value);
}
return value == null || value === "" ? NaN : +value;
}
var valueParserMap = createHashMap({
"number": function(val) {
return parseFloat(val);
},
"time": function(val) {
return +parseDate(val);
},
"trim": function(val) {
return isString(val) ? trim(val) : val;
}
});
function getRawValueParser(type) {
return valueParserMap.get(type);
}
var ORDER_COMPARISON_OP_MAP = {
lt: function(lval, rval) {
return lval < rval;
},
lte: function(lval, rval) {
return lval <= rval;
},
gt: function(lval, rval) {
return lval > rval;
},
gte: function(lval, rval) {
return lval >= rval;
}
};
var FilterOrderComparator = function() {
function FilterOrderComparator2(op, rval) {
if (!isNumber(rval)) {
var errMsg = "";
throwError(errMsg);
}
this._opFn = ORDER_COMPARISON_OP_MAP[op];
this._rvalFloat = numericToNumber(rval);
}
FilterOrderComparator2.prototype.evaluate = function(lval) {
return isNumber(lval) ? this._opFn(lval, this._rvalFloat) : this._opFn(numericToNumber(lval), this._rvalFloat);
};
return FilterOrderComparator2;
}();
var SortOrderComparator = function() {
function SortOrderComparator2(order, incomparable) {
var isDesc = order === "desc";
this._resultLT = isDesc ? 1 : -1;
if (incomparable == null) {
incomparable = isDesc ? "min" : "max";
}
this._incomparable = incomparable === "min" ? -Infinity : Infinity;
}
SortOrderComparator2.prototype.evaluate = function(lval, rval) {
var lvalFloat = isNumber(lval) ? lval : numericToNumber(lval);
var rvalFloat = isNumber(rval) ? rval : numericToNumber(rval);
var lvalNotNumeric = isNaN(lvalFloat);
var rvalNotNumeric = isNaN(rvalFloat);
if (lvalNotNumeric) {
lvalFloat = this._incomparable;
}
if (rvalNotNumeric) {
rvalFloat = this._incomparable;
}
if (lvalNotNumeric && rvalNotNumeric) {
var lvalIsStr = isString(lval);
var rvalIsStr = isString(rval);
if (lvalIsStr) {
lvalFloat = rvalIsStr ? lval : 0;
}
if (rvalIsStr) {
rvalFloat = lvalIsStr ? rval : 0;
}
}
return lvalFloat < rvalFloat ? this._resultLT : lvalFloat > rvalFloat ? -this._resultLT : 0;
};
return SortOrderComparator2;
}();
var FilterEqualityComparator = function() {
function FilterEqualityComparator2(isEq, rval) {
this._rval = rval;
this._isEQ = isEq;
this._rvalTypeof = typeof rval;
this._rvalFloat = numericToNumber(rval);
}
FilterEqualityComparator2.prototype.evaluate = function(lval) {
var eqResult = lval === this._rval;
if (!eqResult) {
var lvalTypeof = typeof lval;
if (lvalTypeof !== this._rvalTypeof && (lvalTypeof === "number" || this._rvalTypeof === "number")) {
eqResult = numericToNumber(lval) === this._rvalFloat;
}
}
return this._isEQ ? eqResult : !eqResult;
};
return FilterEqualityComparator2;
}();
function createFilterComparator(op, rval) {
return op === "eq" || op === "ne" ? new FilterEqualityComparator(op === "eq", rval) : hasOwn(ORDER_COMPARISON_OP_MAP, op) ? new FilterOrderComparator(op, rval) : null;
}
export { SortOrderComparator, createFilterComparator, getRawValueParser, parseDataValue };