cione-comp-lib
Version:
`$ yarn add cione-comp-lib` 或者 `$ npm i cione-comp-lib -S`
94 lines (93 loc) • 3.79 kB
JavaScript
import { isArray, each } from "../../../../zrender/lib/core/util.mjs";
import Polar, { polarDimensions } from "./Polar.mjs";
import { parsePercent } from "../../util/number.mjs";
import { getDataDimensionsOnAxis, niceScaleExtent, createScaleByModel } from "../axisHelper.mjs";
import { SINGLE_REFERRING } from "../../util/model.mjs";
function resizePolar(polar, polarModel, api) {
var center = polarModel.get("center");
var width = api.getWidth();
var height = api.getHeight();
polar.cx = parsePercent(center[0], width);
polar.cy = parsePercent(center[1], height);
var radiusAxis = polar.getRadiusAxis();
var size = Math.min(width, height) / 2;
var radius = polarModel.get("radius");
if (radius == null) {
radius = [0, "100%"];
} else if (!isArray(radius)) {
radius = [0, radius];
}
var parsedRadius = [parsePercent(radius[0], size), parsePercent(radius[1], size)];
radiusAxis.inverse ? radiusAxis.setExtent(parsedRadius[1], parsedRadius[0]) : radiusAxis.setExtent(parsedRadius[0], parsedRadius[1]);
}
function updatePolarScale(ecModel, api) {
var polar = this;
var angleAxis = polar.getAngleAxis();
var radiusAxis = polar.getRadiusAxis();
angleAxis.scale.setExtent(Infinity, -Infinity);
radiusAxis.scale.setExtent(Infinity, -Infinity);
ecModel.eachSeries(function(seriesModel) {
if (seriesModel.coordinateSystem === polar) {
var data_1 = seriesModel.getData();
each(getDataDimensionsOnAxis(data_1, "radius"), function(dim) {
radiusAxis.scale.unionExtentFromData(data_1, dim);
});
each(getDataDimensionsOnAxis(data_1, "angle"), function(dim) {
angleAxis.scale.unionExtentFromData(data_1, dim);
});
}
});
niceScaleExtent(angleAxis.scale, angleAxis.model);
niceScaleExtent(radiusAxis.scale, radiusAxis.model);
if (angleAxis.type === "category" && !angleAxis.onBand) {
var extent = angleAxis.getExtent();
var diff = 360 / angleAxis.scale.count();
angleAxis.inverse ? extent[1] += diff : extent[1] -= diff;
angleAxis.setExtent(extent[0], extent[1]);
}
}
function isAngleAxisModel(axisModel) {
return axisModel.mainType === "angleAxis";
}
function setAxis(axis, axisModel) {
axis.type = axisModel.get("type");
axis.scale = createScaleByModel(axisModel);
axis.onBand = axisModel.get("boundaryGap") && axis.type === "category";
axis.inverse = axisModel.get("inverse");
if (isAngleAxisModel(axisModel)) {
axis.inverse = axis.inverse !== axisModel.get("clockwise");
var startAngle = axisModel.get("startAngle");
axis.setExtent(startAngle, startAngle + (axis.inverse ? -360 : 360));
}
axisModel.axis = axis;
axis.model = axisModel;
}
var polarCreator = {
dimensions: polarDimensions,
create: function(ecModel, api) {
var polarList = [];
ecModel.eachComponent("polar", function(polarModel, idx) {
var polar = new Polar(idx + "");
polar.update = updatePolarScale;
var radiusAxis = polar.getRadiusAxis();
var angleAxis = polar.getAngleAxis();
var radiusAxisModel = polarModel.findAxisModel("radiusAxis");
var angleAxisModel = polarModel.findAxisModel("angleAxis");
setAxis(radiusAxis, radiusAxisModel);
setAxis(angleAxis, angleAxisModel);
resizePolar(polar, polarModel, api);
polarList.push(polar);
polarModel.coordinateSystem = polar;
polar.model = polarModel;
});
ecModel.eachSeries(function(seriesModel) {
if (seriesModel.get("coordinateSystem") === "polar") {
var polarModel = seriesModel.getReferringComponents("polar", SINGLE_REFERRING).models[0];
seriesModel.coordinateSystem = polarModel.coordinateSystem;
}
});
return polarList;
}
};
var polarCreator$1 = polarCreator;
export { polarCreator$1 as default };