cione-comp-lib
Version:
`$ yarn add cione-comp-lib` 或者 `$ npm i cione-comp-lib -S`
124 lines (123 loc) • 4.51 kB
JavaScript
import { isFunction, isArray, eqNaN } from "../../../zrender/lib/core/util.mjs";
import { parsePercent } from "../../../zrender/lib/contain/text.mjs";
var ScaleRawExtentInfo = function() {
function ScaleRawExtentInfo2(scale, model, originalExtent) {
this._prepareParams(scale, model, originalExtent);
}
ScaleRawExtentInfo2.prototype._prepareParams = function(scale, model, dataExtent) {
if (dataExtent[1] < dataExtent[0]) {
dataExtent = [NaN, NaN];
}
this._dataMin = dataExtent[0];
this._dataMax = dataExtent[1];
var isOrdinal = this._isOrdinal = scale.type === "ordinal";
this._needCrossZero = scale.type === "interval" && model.getNeedCrossZero && model.getNeedCrossZero();
var modelMinRaw = this._modelMinRaw = model.get("min", true);
if (isFunction(modelMinRaw)) {
this._modelMinNum = parseAxisModelMinMax(scale, modelMinRaw({
min: dataExtent[0],
max: dataExtent[1]
}));
} else if (modelMinRaw !== "dataMin") {
this._modelMinNum = parseAxisModelMinMax(scale, modelMinRaw);
}
var modelMaxRaw = this._modelMaxRaw = model.get("max", true);
if (isFunction(modelMaxRaw)) {
this._modelMaxNum = parseAxisModelMinMax(scale, modelMaxRaw({
min: dataExtent[0],
max: dataExtent[1]
}));
} else if (modelMaxRaw !== "dataMax") {
this._modelMaxNum = parseAxisModelMinMax(scale, modelMaxRaw);
}
if (isOrdinal) {
this._axisDataLen = model.getCategories().length;
} else {
var boundaryGap = model.get("boundaryGap");
var boundaryGapArr = isArray(boundaryGap) ? boundaryGap : [boundaryGap || 0, boundaryGap || 0];
if (typeof boundaryGapArr[0] === "boolean" || typeof boundaryGapArr[1] === "boolean") {
this._boundaryGapInner = [0, 0];
} else {
this._boundaryGapInner = [parsePercent(boundaryGapArr[0], 1), parsePercent(boundaryGapArr[1], 1)];
}
}
};
ScaleRawExtentInfo2.prototype.calculate = function() {
var isOrdinal = this._isOrdinal;
var dataMin = this._dataMin;
var dataMax = this._dataMax;
var axisDataLen = this._axisDataLen;
var boundaryGapInner = this._boundaryGapInner;
var span = !isOrdinal ? dataMax - dataMin || Math.abs(dataMin) : null;
var min = this._modelMinRaw === "dataMin" ? dataMin : this._modelMinNum;
var max = this._modelMaxRaw === "dataMax" ? dataMax : this._modelMaxNum;
var minFixed = min != null;
var maxFixed = max != null;
if (min == null) {
min = isOrdinal ? axisDataLen ? 0 : NaN : dataMin - boundaryGapInner[0] * span;
}
if (max == null) {
max = isOrdinal ? axisDataLen ? axisDataLen - 1 : NaN : dataMax + boundaryGapInner[1] * span;
}
(min == null || !isFinite(min)) && (min = NaN);
(max == null || !isFinite(max)) && (max = NaN);
var isBlank = eqNaN(min) || eqNaN(max) || isOrdinal && !axisDataLen;
if (this._needCrossZero) {
if (min > 0 && max > 0 && !minFixed) {
min = 0;
}
if (min < 0 && max < 0 && !maxFixed) {
max = 0;
}
}
var determinedMin = this._determinedMin;
var determinedMax = this._determinedMax;
if (determinedMin != null) {
min = determinedMin;
minFixed = true;
}
if (determinedMax != null) {
max = determinedMax;
maxFixed = true;
}
return {
min,
max,
minFixed,
maxFixed,
isBlank
};
};
ScaleRawExtentInfo2.prototype.modifyDataMinMax = function(minMaxName, val) {
this[DATA_MIN_MAX_ATTR[minMaxName]] = val;
};
ScaleRawExtentInfo2.prototype.setDeterminedMinMax = function(minMaxName, val) {
var attr = DETERMINED_MIN_MAX_ATTR[minMaxName];
this[attr] = val;
};
ScaleRawExtentInfo2.prototype.freeze = function() {
this.frozen = true;
};
return ScaleRawExtentInfo2;
}();
var DETERMINED_MIN_MAX_ATTR = {
min: "_determinedMin",
max: "_determinedMax"
};
var DATA_MIN_MAX_ATTR = {
min: "_dataMin",
max: "_dataMax"
};
function ensureScaleRawExtentInfo(scale, model, originalExtent) {
var rawExtentInfo = scale.rawExtentInfo;
if (rawExtentInfo) {
return rawExtentInfo;
}
rawExtentInfo = new ScaleRawExtentInfo(scale, model, originalExtent);
scale.rawExtentInfo = rawExtentInfo;
return rawExtentInfo;
}
function parseAxisModelMinMax(scale, minMax) {
return minMax == null ? null : eqNaN(minMax) ? NaN : scale.parse(minMax);
}
export { ScaleRawExtentInfo, ensureScaleRawExtentInfo, parseAxisModelMinMax };