UNPKG

cione-comp-lib

Version:

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

94 lines (93 loc) 3.79 kB
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 };