UNPKG

cione-comp-lib

Version:

`$ yarn add cione-comp-lib` 或者 `$ npm i cione-comp-lib -S`

124 lines (123 loc) 4.51 kB
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 };