UNPKG

cione-comp-lib

Version:

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

118 lines (117 loc) 4.14 kB
import { traverseElements } from "../../util/graphic.mjs"; import Line from "./Line.mjs"; import { getLabelStatesModels } from "../../label/labelStyle.mjs"; import Group from "../../../../zrender/lib/graphic/Group.mjs"; var LineDraw = function() { function LineDraw2(LineCtor) { this.group = new Group(); this._LineCtor = LineCtor || Line; } LineDraw2.prototype.updateData = function(lineData) { var _this = this; this._progressiveEls = null; var lineDraw = this; var group = lineDraw.group; var oldLineData = lineDraw._lineData; lineDraw._lineData = lineData; if (!oldLineData) { group.removeAll(); } var seriesScope = makeSeriesScope(lineData); lineData.diff(oldLineData).add(function(idx) { _this._doAdd(lineData, idx, seriesScope); }).update(function(newIdx, oldIdx) { _this._doUpdate(oldLineData, lineData, oldIdx, newIdx, seriesScope); }).remove(function(idx) { group.remove(oldLineData.getItemGraphicEl(idx)); }).execute(); }; LineDraw2.prototype.updateLayout = function() { var lineData = this._lineData; if (!lineData) { return; } lineData.eachItemGraphicEl(function(el, idx) { el.updateLayout(lineData, idx); }, this); }; LineDraw2.prototype.incrementalPrepareUpdate = function(lineData) { this._seriesScope = makeSeriesScope(lineData); this._lineData = null; this.group.removeAll(); }; LineDraw2.prototype.incrementalUpdate = function(taskParams, lineData) { this._progressiveEls = []; function updateIncrementalAndHover(el2) { if (!el2.isGroup && !isEffectObject(el2)) { el2.incremental = true; el2.ensureState("emphasis").hoverLayer = true; } } for (var idx = taskParams.start; idx < taskParams.end; idx++) { var itemLayout = lineData.getItemLayout(idx); if (lineNeedsDraw(itemLayout)) { var el = new this._LineCtor(lineData, idx, this._seriesScope); el.traverse(updateIncrementalAndHover); this.group.add(el); lineData.setItemGraphicEl(idx, el); this._progressiveEls.push(el); } } }; LineDraw2.prototype.remove = function() { this.group.removeAll(); }; LineDraw2.prototype.eachRendered = function(cb) { traverseElements(this._progressiveEls || this.group, cb); }; LineDraw2.prototype._doAdd = function(lineData, idx, seriesScope) { var itemLayout = lineData.getItemLayout(idx); if (!lineNeedsDraw(itemLayout)) { return; } var el = new this._LineCtor(lineData, idx, seriesScope); lineData.setItemGraphicEl(idx, el); this.group.add(el); }; LineDraw2.prototype._doUpdate = function(oldLineData, newLineData, oldIdx, newIdx, seriesScope) { var itemEl = oldLineData.getItemGraphicEl(oldIdx); if (!lineNeedsDraw(newLineData.getItemLayout(newIdx))) { this.group.remove(itemEl); return; } if (!itemEl) { itemEl = new this._LineCtor(newLineData, newIdx, seriesScope); } else { itemEl.updateData(newLineData, newIdx, seriesScope); } newLineData.setItemGraphicEl(newIdx, itemEl); this.group.add(itemEl); }; return LineDraw2; }(); function isEffectObject(el) { return el.animators && el.animators.length > 0; } function makeSeriesScope(lineData) { var hostModel = lineData.hostModel; var emphasisModel = hostModel.getModel("emphasis"); return { lineStyle: hostModel.getModel("lineStyle").getLineStyle(), emphasisLineStyle: emphasisModel.getModel(["lineStyle"]).getLineStyle(), blurLineStyle: hostModel.getModel(["blur", "lineStyle"]).getLineStyle(), selectLineStyle: hostModel.getModel(["select", "lineStyle"]).getLineStyle(), emphasisDisabled: emphasisModel.get("disabled"), blurScope: emphasisModel.get("blurScope"), focus: emphasisModel.get("focus"), labelStatesModels: getLabelStatesModels(hostModel) }; } function isPointNaN(pt) { return isNaN(pt[0]) || isNaN(pt[1]); } function lineNeedsDraw(pts) { return pts && !isPointNaN(pts[0]) && !isPointNaN(pts[1]); } var LineDraw$1 = LineDraw; export { LineDraw$1 as default };