ScatterView.js 2.4 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

P
pissang 已提交
6 7
import pointsLayout from '../../layout/points';

S
sushuang 已提交
8
echarts.extendChartView({
L
lang 已提交
9

S
sushuang 已提交
10
    type: 'scatter',
L
lang 已提交
11

S
sushuang 已提交
12 13
    render: function (seriesModel, ecModel, api) {
        var data = seriesModel.getData();
P
pissang 已提交
14

S
sushuang 已提交
15
        var symbolDraw = this._updateSymbolDraw(data, seriesModel);
S
sushuang 已提交
16
        symbolDraw.updateData(data);
P
pissang 已提交
17 18

        this._finished = true;
S
sushuang 已提交
19
    },
S
tweak.  
sushuang 已提交
20

S
sushuang 已提交
21 22 23
    incrementalPrepareRender: function (seriesModel, ecModel, api) {
        var data = seriesModel.getData();
        var symbolDraw = this._updateSymbolDraw(data, seriesModel);
P
pissang 已提交
24

S
sushuang 已提交
25
        symbolDraw.incrementalPrepareUpdate(data);
P
pissang 已提交
26 27

        this._finished = false;
S
sushuang 已提交
28
    },
L
lang 已提交
29

S
sushuang 已提交
30 31
    incrementalRender: function (taskParams, seriesModel, ecModel) {
        this._symbolDraw.incrementalUpdate(taskParams, seriesModel.getData());
P
pissang 已提交
32 33

        this._finished = taskParams.end === seriesModel.getData().count();
S
sushuang 已提交
34
    },
L
lang 已提交
35

P
pissang 已提交
36
    updateTransform: function (seriesModel, ecModel, api) {
P
pissang 已提交
37
        var data = seriesModel.getData();
P
pissang 已提交
38 39 40
        // Must mark group dirty and make sure the incremental layer will be cleared
        // PENDING
        this.group.dirty();
P
pissang 已提交
41

P
pissang 已提交
42
        if (!this._finished || data.count() > 2e5 || !this._symbolDraw.isPersistent()) {
P
pissang 已提交
43 44 45 46
            return {
                update: true
            };
        }
P
pissang 已提交
47 48 49 50
        else {
            var res = pointsLayout().reset(seriesModel);
            if (res.progress) {
                res.progress({ start: 0, end: data.count() }, seriesModel);
P
pissang 已提交
51
            }
P
pissang 已提交
52 53

            this._symbolDraw.updateLayout(data);
P
pissang 已提交
54 55 56
        }
    },

S
sushuang 已提交
57 58 59
    _updateSymbolDraw: function (data, seriesModel) {
        var symbolDraw = this._symbolDraw;
        var pipelineContext = seriesModel.pipelineContext;
S
sushuang 已提交
60
        var isLargeDraw = pipelineContext.large;
S
sushuang 已提交
61 62 63 64 65 66 67

        if (!symbolDraw || isLargeDraw !== this._isLargeDraw) {
            symbolDraw && symbolDraw.remove();
            symbolDraw = this._symbolDraw = isLargeDraw
                ? new LargeSymbolDraw()
                : new SymbolDraw();
            this._isLargeDraw = isLargeDraw;
S
sushuang 已提交
68
            this.group.removeAll();
S
sushuang 已提交
69 70 71 72 73
        }

        this.group.add(symbolDraw.group);

        return symbolDraw;
S
tweak.  
sushuang 已提交
74 75
    },

S
sushuang 已提交
76
    remove: function (ecModel, api) {
S
sushuang 已提交
77
        this._symbolDraw && this._symbolDraw.remove(true);
S
sushuang 已提交
78
        this._symbolDraw = null;
S
sushuang 已提交
79
    },
80

S
sushuang 已提交
81
    dispose: function () {}
L
lang 已提交
82
});