UNPKG

cione-comp-lib

Version:

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

116 lines (115 loc) 4.62 kB
import Cartesian3D from "./grid3D/Cartesian3D.mjs"; import Axis3D from "./grid3D/Axis3D.mjs"; import "../../../echarts/lib/echarts.mjs"; import { getLayoutRect } from "../../../echarts/lib/util/layout.mjs"; import ViewGL from "../core/ViewGL.mjs"; import { createScale } from "../../../echarts/lib/export/api/helper.mjs"; function resizeCartesian3D(grid3DModel, api) { var boxLayoutOption = grid3DModel.getBoxLayoutParams(); var viewport = getLayoutRect(boxLayoutOption, { width: api.getWidth(), height: api.getHeight() }); viewport.y = api.getHeight() - viewport.y - viewport.height; this.viewGL.setViewport(viewport.x, viewport.y, viewport.width, viewport.height, api.getDevicePixelRatio()); var boxWidth = grid3DModel.get("boxWidth"); var boxHeight = grid3DModel.get("boxHeight"); var boxDepth = grid3DModel.get("boxDepth"); this.getAxis("x").setExtent(-boxWidth / 2, boxWidth / 2); this.getAxis("y").setExtent(boxDepth / 2, -boxDepth / 2); this.getAxis("z").setExtent(-boxHeight / 2, boxHeight / 2); this.size = [boxWidth, boxHeight, boxDepth]; } function updateCartesian3D(ecModel, api) { var dataExtents = {}; function unionDataExtents(dim, extent) { dataExtents[dim] = dataExtents[dim] || [Infinity, -Infinity]; dataExtents[dim][0] = Math.min(extent[0], dataExtents[dim][0]); dataExtents[dim][1] = Math.max(extent[1], dataExtents[dim][1]); } ecModel.eachSeries(function(seriesModel) { if (seriesModel.coordinateSystem !== this) { return; } var data = seriesModel.getData(); ["x", "y", "z"].forEach(function(coordDim) { data.mapDimensionsAll(coordDim, true).forEach(function(dataDim) { unionDataExtents(coordDim, data.getDataExtent(dataDim, true)); }); }); }, this); ["xAxis3D", "yAxis3D", "zAxis3D"].forEach(function(axisType) { ecModel.eachComponent(axisType, function(axisModel) { var dim = axisType.charAt(0); var grid3DModel = axisModel.getReferringComponents("grid3D").models[0]; var cartesian3D = grid3DModel.coordinateSystem; if (cartesian3D !== this) { return; } var axis = cartesian3D.getAxis(dim); if (axis) { return; } var scale = createScale(dataExtents[dim] || [Infinity, -Infinity], axisModel); axis = new Axis3D(dim, scale); axis.type = axisModel.get("type"); var isCategory = axis.type === "category"; axis.onBand = isCategory && axisModel.get("boundaryGap"); axis.inverse = axisModel.get("inverse"); axisModel.axis = axis; axis.model = axisModel; axis.getLabelModel = function() { return axisModel.getModel("axisLabel", grid3DModel.getModel("axisLabel")); }; axis.getTickModel = function() { return axisModel.getModel("axisTick", grid3DModel.getModel("axisTick")); }; cartesian3D.addAxis(axis); }, this); }, this); this.resize(this.model, api); } var grid3DCreator = { dimensions: Cartesian3D.prototype.dimensions, create: function(ecModel, api) { var cartesian3DList = []; ecModel.eachComponent("grid3D", function(grid3DModel) { grid3DModel.__viewGL = grid3DModel.__viewGL || new ViewGL(); var cartesian3D = new Cartesian3D(); cartesian3D.model = grid3DModel; cartesian3D.viewGL = grid3DModel.__viewGL; grid3DModel.coordinateSystem = cartesian3D; cartesian3DList.push(cartesian3D); cartesian3D.resize = resizeCartesian3D; cartesian3D.update = updateCartesian3D; }); var axesTypes = ["xAxis3D", "yAxis3D", "zAxis3D"]; function findAxesModels(seriesModel, ecModel2) { return axesTypes.map(function(axisType) { var axisModel = seriesModel.getReferringComponents(axisType).models[0]; if (axisModel == null) { axisModel = ecModel2.getComponent(axisType); } return axisModel; }); } ecModel.eachSeries(function(seriesModel) { if (seriesModel.get("coordinateSystem") !== "cartesian3D") { return; } var firstGridModel = seriesModel.getReferringComponents("grid3D").models[0]; if (firstGridModel == null) { var axesModels = findAxesModels(seriesModel, ecModel); var firstGridModel = axesModels[0].getCoordSysModel(); axesModels.forEach(function(axisModel) { axisModel.getCoordSysModel(); }); } var coordSys = firstGridModel.coordinateSystem; seriesModel.coordinateSystem = coordSys; }); return cartesian3DList; } }; var grid3DCreator$1 = grid3DCreator; export { grid3DCreator$1 as default };