逐步完成前后端服务器
This commit is contained in:
281
frontend/node_modules/echarts/lib/coord/Axis.js
generated
vendored
Normal file
281
frontend/node_modules/echarts/lib/coord/Axis.js
generated
vendored
Normal file
@ -0,0 +1,281 @@
|
||||
|
||||
/*
|
||||
* 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 { each, map } from 'zrender/lib/core/util.js';
|
||||
import { linearMap, getPixelPrecision, round } from '../util/number.js';
|
||||
import { createAxisTicks, createAxisLabels, calculateCategoryInterval } from './axisTickLabelBuilder.js';
|
||||
var NORMALIZED_EXTENT = [0, 1];
|
||||
/**
|
||||
* Base class of Axis.
|
||||
*/
|
||||
var Axis = /** @class */function () {
|
||||
function Axis(dim, scale, extent) {
|
||||
this.onBand = false;
|
||||
this.inverse = false;
|
||||
this.dim = dim;
|
||||
this.scale = scale;
|
||||
this._extent = extent || [0, 0];
|
||||
}
|
||||
/**
|
||||
* If axis extent contain given coord
|
||||
*/
|
||||
Axis.prototype.contain = function (coord) {
|
||||
var extent = this._extent;
|
||||
var min = Math.min(extent[0], extent[1]);
|
||||
var max = Math.max(extent[0], extent[1]);
|
||||
return coord >= min && coord <= max;
|
||||
};
|
||||
/**
|
||||
* If axis extent contain given data
|
||||
*/
|
||||
Axis.prototype.containData = function (data) {
|
||||
return this.scale.contain(data);
|
||||
};
|
||||
/**
|
||||
* Get coord extent.
|
||||
*/
|
||||
Axis.prototype.getExtent = function () {
|
||||
return this._extent.slice();
|
||||
};
|
||||
/**
|
||||
* Get precision used for formatting
|
||||
*/
|
||||
Axis.prototype.getPixelPrecision = function (dataExtent) {
|
||||
return getPixelPrecision(dataExtent || this.scale.getExtent(), this._extent);
|
||||
};
|
||||
/**
|
||||
* Set coord extent
|
||||
*/
|
||||
Axis.prototype.setExtent = function (start, end) {
|
||||
var extent = this._extent;
|
||||
extent[0] = start;
|
||||
extent[1] = end;
|
||||
};
|
||||
/**
|
||||
* Convert data to coord. Data is the rank if it has an ordinal scale
|
||||
*/
|
||||
Axis.prototype.dataToCoord = function (data, clamp) {
|
||||
var extent = this._extent;
|
||||
var scale = this.scale;
|
||||
data = scale.normalize(data);
|
||||
if (this.onBand && scale.type === 'ordinal') {
|
||||
extent = extent.slice();
|
||||
fixExtentWithBands(extent, scale.count());
|
||||
}
|
||||
return linearMap(data, NORMALIZED_EXTENT, extent, clamp);
|
||||
};
|
||||
/**
|
||||
* Convert coord to data. Data is the rank if it has an ordinal scale
|
||||
*/
|
||||
Axis.prototype.coordToData = function (coord, clamp) {
|
||||
var extent = this._extent;
|
||||
var scale = this.scale;
|
||||
if (this.onBand && scale.type === 'ordinal') {
|
||||
extent = extent.slice();
|
||||
fixExtentWithBands(extent, scale.count());
|
||||
}
|
||||
var t = linearMap(coord, extent, NORMALIZED_EXTENT, clamp);
|
||||
return this.scale.scale(t);
|
||||
};
|
||||
/**
|
||||
* Convert pixel point to data in axis
|
||||
*/
|
||||
Axis.prototype.pointToData = function (point, clamp) {
|
||||
// Should be implemented in derived class if necessary.
|
||||
return;
|
||||
};
|
||||
/**
|
||||
* Different from `zrUtil.map(axis.getTicks(), axis.dataToCoord, axis)`,
|
||||
* `axis.getTicksCoords` considers `onBand`, which is used by
|
||||
* `boundaryGap:true` of category axis and splitLine and splitArea.
|
||||
* @param opt.tickModel default: axis.model.getModel('axisTick')
|
||||
* @param opt.clamp If `true`, the first and the last
|
||||
* tick must be at the axis end points. Otherwise, clip ticks
|
||||
* that outside the axis extent.
|
||||
*/
|
||||
Axis.prototype.getTicksCoords = function (opt) {
|
||||
opt = opt || {};
|
||||
var tickModel = opt.tickModel || this.getTickModel();
|
||||
var result = createAxisTicks(this, tickModel);
|
||||
var ticks = result.ticks;
|
||||
var ticksCoords = map(ticks, function (tickVal) {
|
||||
return {
|
||||
coord: this.dataToCoord(this.scale.type === 'ordinal' ? this.scale.getRawOrdinalNumber(tickVal) : tickVal),
|
||||
tickValue: tickVal
|
||||
};
|
||||
}, this);
|
||||
var alignWithLabel = tickModel.get('alignWithLabel');
|
||||
fixOnBandTicksCoords(this, ticksCoords, alignWithLabel, opt.clamp);
|
||||
return ticksCoords;
|
||||
};
|
||||
Axis.prototype.getMinorTicksCoords = function () {
|
||||
if (this.scale.type === 'ordinal') {
|
||||
// Category axis doesn't support minor ticks
|
||||
return [];
|
||||
}
|
||||
var minorTickModel = this.model.getModel('minorTick');
|
||||
var splitNumber = minorTickModel.get('splitNumber');
|
||||
// Protection.
|
||||
if (!(splitNumber > 0 && splitNumber < 100)) {
|
||||
splitNumber = 5;
|
||||
}
|
||||
var minorTicks = this.scale.getMinorTicks(splitNumber);
|
||||
var minorTicksCoords = map(minorTicks, function (minorTicksGroup) {
|
||||
return map(minorTicksGroup, function (minorTick) {
|
||||
return {
|
||||
coord: this.dataToCoord(minorTick),
|
||||
tickValue: minorTick
|
||||
};
|
||||
}, this);
|
||||
}, this);
|
||||
return minorTicksCoords;
|
||||
};
|
||||
Axis.prototype.getViewLabels = function () {
|
||||
return createAxisLabels(this).labels;
|
||||
};
|
||||
Axis.prototype.getLabelModel = function () {
|
||||
return this.model.getModel('axisLabel');
|
||||
};
|
||||
/**
|
||||
* Notice here we only get the default tick model. For splitLine
|
||||
* or splitArea, we should pass the splitLineModel or splitAreaModel
|
||||
* manually when calling `getTicksCoords`.
|
||||
* In GL, this method may be overridden to:
|
||||
* `axisModel.getModel('axisTick', grid3DModel.getModel('axisTick'));`
|
||||
*/
|
||||
Axis.prototype.getTickModel = function () {
|
||||
return this.model.getModel('axisTick');
|
||||
};
|
||||
/**
|
||||
* Get width of band
|
||||
*/
|
||||
Axis.prototype.getBandWidth = function () {
|
||||
var axisExtent = this._extent;
|
||||
var dataExtent = this.scale.getExtent();
|
||||
var len = dataExtent[1] - dataExtent[0] + (this.onBand ? 1 : 0);
|
||||
// Fix #2728, avoid NaN when only one data.
|
||||
len === 0 && (len = 1);
|
||||
var size = Math.abs(axisExtent[1] - axisExtent[0]);
|
||||
return Math.abs(size) / len;
|
||||
};
|
||||
/**
|
||||
* Only be called in category axis.
|
||||
* Can be overridden, consider other axes like in 3D.
|
||||
* @return Auto interval for cateogry axis tick and label
|
||||
*/
|
||||
Axis.prototype.calculateCategoryInterval = function () {
|
||||
return calculateCategoryInterval(this);
|
||||
};
|
||||
return Axis;
|
||||
}();
|
||||
function fixExtentWithBands(extent, nTick) {
|
||||
var size = extent[1] - extent[0];
|
||||
var len = nTick;
|
||||
var margin = size / len / 2;
|
||||
extent[0] += margin;
|
||||
extent[1] -= margin;
|
||||
}
|
||||
// If axis has labels [1, 2, 3, 4]. Bands on the axis are
|
||||
// |---1---|---2---|---3---|---4---|.
|
||||
// So the displayed ticks and splitLine/splitArea should between
|
||||
// each data item, otherwise cause misleading (e.g., split tow bars
|
||||
// of a single data item when there are two bar series).
|
||||
// Also consider if tickCategoryInterval > 0 and onBand, ticks and
|
||||
// splitLine/spliteArea should layout appropriately corresponding
|
||||
// to displayed labels. (So we should not use `getBandWidth` in this
|
||||
// case).
|
||||
function fixOnBandTicksCoords(axis, ticksCoords, alignWithLabel, clamp) {
|
||||
var ticksLen = ticksCoords.length;
|
||||
if (!axis.onBand || alignWithLabel || !ticksLen) {
|
||||
return;
|
||||
}
|
||||
var axisExtent = axis.getExtent();
|
||||
var last;
|
||||
var diffSize;
|
||||
if (ticksLen === 1) {
|
||||
ticksCoords[0].coord = axisExtent[0];
|
||||
last = ticksCoords[1] = {
|
||||
coord: axisExtent[1],
|
||||
tickValue: ticksCoords[0].tickValue
|
||||
};
|
||||
} else {
|
||||
var crossLen = ticksCoords[ticksLen - 1].tickValue - ticksCoords[0].tickValue;
|
||||
var shift_1 = (ticksCoords[ticksLen - 1].coord - ticksCoords[0].coord) / crossLen;
|
||||
each(ticksCoords, function (ticksItem) {
|
||||
ticksItem.coord -= shift_1 / 2;
|
||||
});
|
||||
var dataExtent = axis.scale.getExtent();
|
||||
diffSize = 1 + dataExtent[1] - ticksCoords[ticksLen - 1].tickValue;
|
||||
last = {
|
||||
coord: ticksCoords[ticksLen - 1].coord + shift_1 * diffSize,
|
||||
tickValue: dataExtent[1] + 1
|
||||
};
|
||||
ticksCoords.push(last);
|
||||
}
|
||||
var inverse = axisExtent[0] > axisExtent[1];
|
||||
// Handling clamp.
|
||||
if (littleThan(ticksCoords[0].coord, axisExtent[0])) {
|
||||
clamp ? ticksCoords[0].coord = axisExtent[0] : ticksCoords.shift();
|
||||
}
|
||||
if (clamp && littleThan(axisExtent[0], ticksCoords[0].coord)) {
|
||||
ticksCoords.unshift({
|
||||
coord: axisExtent[0]
|
||||
});
|
||||
}
|
||||
if (littleThan(axisExtent[1], last.coord)) {
|
||||
clamp ? last.coord = axisExtent[1] : ticksCoords.pop();
|
||||
}
|
||||
if (clamp && littleThan(last.coord, axisExtent[1])) {
|
||||
ticksCoords.push({
|
||||
coord: axisExtent[1]
|
||||
});
|
||||
}
|
||||
function littleThan(a, b) {
|
||||
// Avoid rounding error cause calculated tick coord different with extent.
|
||||
// It may cause an extra unnecessary tick added.
|
||||
a = round(a);
|
||||
b = round(b);
|
||||
return inverse ? a > b : a < b;
|
||||
}
|
||||
}
|
||||
export default Axis;
|
Reference in New Issue
Block a user