ScatterView.js 3.3 KB
Newer Older
S
sushuang 已提交
1
import * as echarts from '../../echarts';
S
sushuang 已提交
2 3
import SymbolDraw from '../helper/SymbolDraw';
import LargeSymbolDraw from '../helper/LargeSymbolDraw';
P
pissang 已提交
4
import * as matrix from 'zrender/src/core/matrix';
L
lang 已提交
5

S
sushuang 已提交
6
echarts.extendChartView({
L
lang 已提交
7

S
sushuang 已提交
8
    type: 'scatter',
L
lang 已提交
9

S
sushuang 已提交
10 11
    render: function (seriesModel, ecModel, api) {
        var data = seriesModel.getData();
P
pissang 已提交
12 13
        this._removeRoamTransformInPoints(seriesModel, 0, data.count());

S
sushuang 已提交
14
        var symbolDraw = this._updateSymbolDraw(data, seriesModel);
S
sushuang 已提交
15
        symbolDraw.updateData(data);
S
sushuang 已提交
16
    },
S
tweak.  
sushuang 已提交
17

S
sushuang 已提交
18 19 20 21
    incrementalPrepareRender: function (seriesModel, ecModel, api) {
        var data = seriesModel.getData();
        var symbolDraw = this._updateSymbolDraw(data, seriesModel);
        symbolDraw.incrementalPrepareUpdate(data);
S
sushuang 已提交
22
    },
L
lang 已提交
23

S
sushuang 已提交
24
    incrementalRender: function (taskParams, seriesModel, ecModel) {
P
pissang 已提交
25
        this._removeRoamTransformInPoints(seriesModel, taskParams.start, taskParams.end);
S
sushuang 已提交
26
        this._symbolDraw.incrementalUpdate(taskParams, seriesModel.getData());
S
sushuang 已提交
27
    },
L
lang 已提交
28

P
pissang 已提交
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
    updateTransform: function (seriesModel, ecModel, api) {
        var coordSys = seriesModel.coordinateSystem;
        // Must mark group dirty and make sure the incremental layer will be cleared
        // PENDING
        this.group.dirty();
        if (coordSys.getRoamTransform && this._symbolDraw.isPersistent()) {
            this.group.transform = matrix.clone(coordSys.getRoamTransform());
            this.group.decomposeTransform();
        }
        else {
            return {
                update: true
            };
        }
    },

    _removeRoamTransformInPoints: function (seriesModel, start, end) {
        var coordSys = seriesModel.coordinateSystem;
        if (coordSys && coordSys.removeRoamTransformInPoint) {
            var data = seriesModel.getData();
            var pt = [];
            if (seriesModel.get('large')) {
                var points = data.getLayout('symbolPoints');
                if (points) {
                    for (var i = 0; i < points.length; i += 2) {
                        pt[0] = points[i];
                        pt[1] = points[i + 1];
                        coordSys.removeRoamTransformInPoint(pt);
                        points[i] = pt[0];
                        points[i + 1] = pt[1];
                    }
                }
            }
            else {
                for (var i = start; i < end; i++) {
                    var pt = data.getItemLayout(i);
                    coordSys.removeRoamTransformInPoint(pt);
                }
            }
        }
    },

S
sushuang 已提交
71 72 73
    _updateSymbolDraw: function (data, seriesModel) {
        var symbolDraw = this._symbolDraw;
        var pipelineContext = seriesModel.pipelineContext;
S
sushuang 已提交
74
        var isLargeDraw = pipelineContext.large;
S
sushuang 已提交
75 76 77 78 79 80 81

        if (!symbolDraw || isLargeDraw !== this._isLargeDraw) {
            symbolDraw && symbolDraw.remove();
            symbolDraw = this._symbolDraw = isLargeDraw
                ? new LargeSymbolDraw()
                : new SymbolDraw();
            this._isLargeDraw = isLargeDraw;
S
sushuang 已提交
82
            this.group.removeAll();
S
sushuang 已提交
83 84 85 86 87
        }

        this.group.add(symbolDraw.group);

        return symbolDraw;
S
tweak.  
sushuang 已提交
88 89
    },

S
sushuang 已提交
90
    remove: function (ecModel, api) {
S
sushuang 已提交
91
        this._symbolDraw && this._symbolDraw.remove(true);
S
sushuang 已提交
92
        this._symbolDraw = null;
S
sushuang 已提交
93
    },
94

S
sushuang 已提交
95
    dispose: function () {}
L
lang 已提交
96
});