逐步完成前后端服务器
This commit is contained in:
243
frontend/node_modules/echarts/lib/coord/scaleRawExtentInfo.js
generated
vendored
Normal file
243
frontend/node_modules/echarts/lib/coord/scaleRawExtentInfo.js
generated
vendored
Normal file
@ -0,0 +1,243 @@
|
||||
|
||||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* AUTO-GENERATED FILE. DO NOT MODIFY.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
import { assert, isArray, eqNaN, isFunction } from 'zrender/lib/core/util.js';
|
||||
import { parsePercent } from 'zrender/lib/contain/text.js';
|
||||
var ScaleRawExtentInfo = /** @class */function () {
|
||||
function ScaleRawExtentInfo(scale, model,
|
||||
// Usually: data extent from all series on this axis.
|
||||
originalExtent) {
|
||||
this._prepareParams(scale, model, originalExtent);
|
||||
}
|
||||
/**
|
||||
* Parameters depending on outside (like model, user callback)
|
||||
* are prepared and fixed here.
|
||||
*/
|
||||
ScaleRawExtentInfo.prototype._prepareParams = function (scale, model,
|
||||
// Usually: data extent from all series on this axis.
|
||||
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 axisMinValue = model.get('min', true);
|
||||
if (axisMinValue == null) {
|
||||
axisMinValue = model.get('startValue', true);
|
||||
}
|
||||
var modelMinRaw = this._modelMinRaw = axisMinValue;
|
||||
if (isFunction(modelMinRaw)) {
|
||||
// This callback always provides users the full data extent (before data is filtered).
|
||||
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 callback always provides users the full data extent (before data is filtered).
|
||||
this._modelMaxNum = parseAxisModelMinMax(scale, modelMaxRaw({
|
||||
min: dataExtent[0],
|
||||
max: dataExtent[1]
|
||||
}));
|
||||
} else if (modelMaxRaw !== 'dataMax') {
|
||||
this._modelMaxNum = parseAxisModelMinMax(scale, modelMaxRaw);
|
||||
}
|
||||
if (isOrdinal) {
|
||||
// FIXME: there is a flaw here: if there is no "block" data processor like `dataZoom`,
|
||||
// and progressive rendering is using, here the category result might just only contain
|
||||
// the processed chunk rather than the entire result.
|
||||
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') {
|
||||
if (process.env.NODE_ENV !== 'production') {
|
||||
console.warn('Boolean type for boundaryGap is only ' + 'allowed for ordinal axis. Please use string in ' + 'percentage instead, e.g., "20%". Currently, ' + 'boundaryGap is set to be 0.');
|
||||
}
|
||||
this._boundaryGapInner = [0, 0];
|
||||
} else {
|
||||
this._boundaryGapInner = [parsePercent(boundaryGapArr[0], 1), parsePercent(boundaryGapArr[1], 1)];
|
||||
}
|
||||
}
|
||||
};
|
||||
/**
|
||||
* Calculate extent by prepared parameters.
|
||||
* This method has no external dependency and can be called duplicatedly,
|
||||
* getting the same result.
|
||||
* If parameters changed, should call this method to recalcuate.
|
||||
*/
|
||||
ScaleRawExtentInfo.prototype.calculate = function () {
|
||||
// Notice: When min/max is not set (that is, when there are null/undefined,
|
||||
// which is the most common case), these cases should be ensured:
|
||||
// (1) For 'ordinal', show all axis.data.
|
||||
// (2) For others:
|
||||
// + `boundaryGap` is applied (if min/max set, boundaryGap is
|
||||
// disabled).
|
||||
// + If `needCrossZero`, min/max should be zero, otherwise, min/max should
|
||||
// be the result that originalExtent enlarged by boundaryGap.
|
||||
// (3) If no data, it should be ensured that `scale.setBlank` is set.
|
||||
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;
|
||||
// Currently if a `'value'` axis model min is specified as 'dataMin'/'dataMax',
|
||||
// `boundaryGap` will not be used. It's the different from specifying as `null`/`undefined`.
|
||||
var min = this._modelMinRaw === 'dataMin' ? dataMin : this._modelMinNum;
|
||||
var max = this._modelMaxRaw === 'dataMax' ? dataMax : this._modelMaxNum;
|
||||
// If `_modelMinNum`/`_modelMaxNum` is `null`/`undefined`, should not be fixed.
|
||||
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 data extent modified, need to recalculated to ensure cross zero.
|
||||
if (this._needCrossZero) {
|
||||
// Axis is over zero and min is not set
|
||||
if (min > 0 && max > 0 && !minFixed) {
|
||||
min = 0;
|
||||
// minFixed = true;
|
||||
}
|
||||
// Axis is under zero and max is not set
|
||||
if (min < 0 && max < 0 && !maxFixed) {
|
||||
max = 0;
|
||||
// maxFixed = true;
|
||||
}
|
||||
// PENDING:
|
||||
// When `needCrossZero` and all data is positive/negative, should it be ensured
|
||||
// that the results processed by boundaryGap are positive/negative?
|
||||
// If so, here `minFixed`/`maxFixed` need to be set.
|
||||
}
|
||||
var determinedMin = this._determinedMin;
|
||||
var determinedMax = this._determinedMax;
|
||||
if (determinedMin != null) {
|
||||
min = determinedMin;
|
||||
minFixed = true;
|
||||
}
|
||||
if (determinedMax != null) {
|
||||
max = determinedMax;
|
||||
maxFixed = true;
|
||||
}
|
||||
// Ensure min/max be finite number or NaN here. (not to be null/undefined)
|
||||
// `NaN` means min/max axis is blank.
|
||||
return {
|
||||
min: min,
|
||||
max: max,
|
||||
minFixed: minFixed,
|
||||
maxFixed: maxFixed,
|
||||
isBlank: isBlank
|
||||
};
|
||||
};
|
||||
ScaleRawExtentInfo.prototype.modifyDataMinMax = function (minMaxName, val) {
|
||||
if (process.env.NODE_ENV !== 'production') {
|
||||
assert(!this.frozen);
|
||||
}
|
||||
this[DATA_MIN_MAX_ATTR[minMaxName]] = val;
|
||||
};
|
||||
ScaleRawExtentInfo.prototype.setDeterminedMinMax = function (minMaxName, val) {
|
||||
var attr = DETERMINED_MIN_MAX_ATTR[minMaxName];
|
||||
if (process.env.NODE_ENV !== 'production') {
|
||||
assert(!this.frozen
|
||||
// Earse them usually means logic flaw.
|
||||
&& this[attr] == null);
|
||||
}
|
||||
this[attr] = val;
|
||||
};
|
||||
ScaleRawExtentInfo.prototype.freeze = function () {
|
||||
// @ts-ignore
|
||||
this.frozen = true;
|
||||
};
|
||||
return ScaleRawExtentInfo;
|
||||
}();
|
||||
export { ScaleRawExtentInfo };
|
||||
var DETERMINED_MIN_MAX_ATTR = {
|
||||
min: '_determinedMin',
|
||||
max: '_determinedMax'
|
||||
};
|
||||
var DATA_MIN_MAX_ATTR = {
|
||||
min: '_dataMin',
|
||||
max: '_dataMax'
|
||||
};
|
||||
/**
|
||||
* Get scale min max and related info only depends on model settings.
|
||||
* This method can be called after coordinate system created.
|
||||
* For example, in data processing stage.
|
||||
*
|
||||
* Scale extent info probably be required multiple times during a workflow.
|
||||
* For example:
|
||||
* (1) `dataZoom` depends it to get the axis extent in "100%" state.
|
||||
* (2) `processor/extentCalculator` depends it to make sure whether axis extent is specified.
|
||||
* (3) `coordSys.update` use it to finally decide the scale extent.
|
||||
* But the callback of `min`/`max` should not be called multiple times.
|
||||
* The code below should not be implemented repeatedly either.
|
||||
* So we cache the result in the scale instance, which will be recreated at the beginning
|
||||
* of the workflow (because `scale` instance will be recreated each round of the workflow).
|
||||
*/
|
||||
export function ensureScaleRawExtentInfo(scale, model,
|
||||
// Usually: data extent from all series on this axis.
|
||||
originalExtent) {
|
||||
// Do not permit to recreate.
|
||||
var rawExtentInfo = scale.rawExtentInfo;
|
||||
if (rawExtentInfo) {
|
||||
return rawExtentInfo;
|
||||
}
|
||||
rawExtentInfo = new ScaleRawExtentInfo(scale, model, originalExtent);
|
||||
// @ts-ignore
|
||||
scale.rawExtentInfo = rawExtentInfo;
|
||||
return rawExtentInfo;
|
||||
}
|
||||
export function parseAxisModelMinMax(scale, minMax) {
|
||||
return minMax == null ? null : eqNaN(minMax) ? NaN : scale.parse(minMax);
|
||||
}
|
Reference in New Issue
Block a user