| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- var _config = require("../../config");
- var __DEV__ = _config.__DEV__;
- var echarts = require("../../echarts");
- var LineDraw = require("../helper/LineDraw");
- var EffectLine = require("../helper/EffectLine");
- var Line = require("../helper/Line");
- var Polyline = require("../helper/Polyline");
- var EffectPolyline = require("../helper/EffectPolyline");
- var LargeLineDraw = require("../helper/LargeLineDraw");
- var _default = echarts.extendChartView({
- type: 'lines',
- init: function () {},
- render: function (seriesModel, ecModel, api) {
- var data = seriesModel.getData();
- var lineDraw = this._lineDraw;
- var hasEffect = seriesModel.get('effect.show');
- var isPolyline = seriesModel.get('polyline');
- var isLarge = seriesModel.get('large') && data.count() >= seriesModel.get('largeThreshold');
- if (hasEffect !== this._hasEffet || isPolyline !== this._isPolyline || isLarge !== this._isLarge) {
- if (lineDraw) {
- lineDraw.remove();
- }
- lineDraw = this._lineDraw = isLarge ? new LargeLineDraw() : new LineDraw(isPolyline ? hasEffect ? EffectPolyline : Polyline : hasEffect ? EffectLine : Line);
- this._hasEffet = hasEffect;
- this._isPolyline = isPolyline;
- this._isLarge = isLarge;
- }
- var zlevel = seriesModel.get('zlevel');
- var trailLength = seriesModel.get('effect.trailLength');
- var zr = api.getZr(); // Avoid the drag cause ghost shadow
- // FIXME Better way ?
- // SVG doesn't support
- var isSvg = zr.painter.getType() === 'svg';
- if (!isSvg) {
- zr.painter.getLayer(zlevel).clear(true);
- } // Config layer with motion blur
- if (this._lastZlevel != null && !isSvg) {
- zr.configLayer(this._lastZlevel, {
- motionBlur: false
- });
- }
- if (hasEffect && trailLength) {
- if (!isSvg) {
- zr.configLayer(zlevel, {
- motionBlur: true,
- lastFrameAlpha: Math.max(Math.min(trailLength / 10 + 0.9, 1), 0)
- });
- }
- }
- this.group.add(lineDraw.group);
- lineDraw.updateData(data);
- this._lastZlevel = zlevel;
- },
- updateLayout: function (seriesModel, ecModel, api) {
- this._lineDraw.updateLayout(seriesModel); // Not use motion when dragging or zooming
- var zr = api.getZr();
- var isSvg = zr.painter.getType() === 'svg';
- if (!isSvg) {
- zr.painter.getLayer(this._lastZlevel).clear(true);
- }
- },
- remove: function (ecModel, api) {
- this._lineDraw && this._lineDraw.remove(api, true); // Clear motion when lineDraw is removed
- var zr = api.getZr();
- var isSvg = zr.painter.getType() === 'svg';
- if (!isSvg) {
- zr.painter.getLayer(this._lastZlevel).clear(true);
- }
- },
- dispose: function () {}
- });
- module.exports = _default;
|