UNPKG

cione-comp-lib

Version:

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

101 lines (100 loc) 3.77 kB
import "../../../../echarts/lib/echarts.mjs"; import graphicGL from "../../util/graphicGL.mjs"; import retrieve from "../../util/retrieve.mjs"; import formatUtil from "../../util/format.mjs"; import PointsBuilder from "../common/PointsBuilder.mjs"; import ChartView from "../../../../echarts/lib/view/Chart.mjs"; import { each } from "../../../../zrender/lib/core/util.mjs"; var Scatter3DView = ChartView.extend({ type: "scatter3D", hasSymbolVisual: true, __ecgl__: true, init: function(ecModel, api) { this.groupGL = new graphicGL.Node(); this._pointsBuilderList = []; this._currentStep = 0; }, render: function(seriesModel, ecModel, api) { this.groupGL.removeAll(); if (!seriesModel.getData().count()) { return; } var coordSys = seriesModel.coordinateSystem; if (coordSys && coordSys.viewGL) { coordSys.viewGL.add(this.groupGL); this._camera = coordSys.viewGL.camera; var pointsBuilder = this._pointsBuilderList[0]; if (!pointsBuilder) { pointsBuilder = this._pointsBuilderList[0] = new PointsBuilder(false, api); } this._pointsBuilderList.length = 1; this.groupGL.add(pointsBuilder.rootNode); pointsBuilder.update(seriesModel, ecModel, api); pointsBuilder.updateView(coordSys.viewGL.camera); } }, incrementalPrepareRender: function(seriesModel, ecModel, api) { var coordSys = seriesModel.coordinateSystem; if (coordSys && coordSys.viewGL) { coordSys.viewGL.add(this.groupGL); this._camera = coordSys.viewGL.camera; } this.groupGL.removeAll(); this._currentStep = 0; }, incrementalRender: function(params, seriesModel, ecModel, api) { if (params.end <= params.start) { return; } var pointsBuilder = this._pointsBuilderList[this._currentStep]; if (!pointsBuilder) { pointsBuilder = new PointsBuilder(false, api); this._pointsBuilderList[this._currentStep] = pointsBuilder; } this.groupGL.add(pointsBuilder.rootNode); pointsBuilder.update(seriesModel, ecModel, api, params.start, params.end); pointsBuilder.updateView(seriesModel.coordinateSystem.viewGL.camera); this._currentStep++; }, updateCamera: function() { this._pointsBuilderList.forEach(function(pointsBuilder) { pointsBuilder.updateView(this._camera); }, this); }, highlight: function(seriesModel, ecModel, api, payload) { this._toggleStatus("highlight", seriesModel, ecModel, api, payload); }, downplay: function(seriesModel, ecModel, api, payload) { this._toggleStatus("downplay", seriesModel, ecModel, api, payload); }, _toggleStatus: function(status, seriesModel, ecModel, api, payload) { var data = seriesModel.getData(); var dataIndex = retrieve.queryDataIndex(data, payload); var isHighlight = status === "highlight"; if (dataIndex != null) { each(formatUtil.normalizeToArray(dataIndex), function(dataIdx) { for (var i = 0; i < this._pointsBuilderList.length; i++) { var pointsBuilder = this._pointsBuilderList[i]; isHighlight ? pointsBuilder.highlight(data, dataIdx) : pointsBuilder.downplay(data, dataIdx); } }, this); } else { data.each(function(dataIdx) { for (var i = 0; i < this._pointsBuilderList.length; i++) { var pointsBuilder = this._pointsBuilderList[i]; isHighlight ? pointsBuilder.highlight(data, dataIdx) : pointsBuilder.downplay(data, dataIdx); } }); } }, dispose: function() { this._pointsBuilderList.forEach(function(pointsBuilder) { pointsBuilder.dispose(); }); this.groupGL.removeAll(); }, remove: function() { this.groupGL.removeAll(); } }); export { Scatter3DView as default };