2
schangxiang@126.com
2024-08-16 b47c50a2a514def7374b32d7194b2c599cba5625
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
/**
 * @file defines echarts Heatmap Chart
 * @author Ovilia (me@zhangwenli.com)
 * Inspired by https://github.com/mourner/simpleheat
 *
 * @module
 *
 * @requires /src/chart/base.js
 * @requires /src/chart/layer/heatmap.js
 * @requires /src/config.js
 * @requires /src/util/ecData.js
 * @requires NPM:zrender/tool/util.js
 * @requires NPM:zrender/tool/color.js
 * @requires NPM:zrender/shape/Image.js
 */
define(function (require) {
    var ChartBase = require('./base');
    var HeatmapLayer = require('../layer/heatmap');
 
    var ecConfig = require('../config');
    var ecData = require('../util/ecData');
 
    var zrUtil = require('zrender/tool/util');
    var zrColor = require('zrender/tool/color');
    var zrImage = require('zrender/shape/Image');
 
    ecConfig.heatmap = {
        zlevel: 0,
        z: 2,
        clickable: true
    };
 
    /**
     * Heatmap Chart
     *
     * @class
     * @extends ChartBase
     */
    function Heatmap(ecTheme, messageCenter, zr, option, myChart) {
        ChartBase.call(this, ecTheme, messageCenter, zr, option, myChart);
 
        this.refresh(option);
    }
 
    Heatmap.prototype = {
        type: ecConfig.CHART_TYPE_HEATMAP,
 
        /**
         * refreshes the chart
         * @param {Object} newOption - options to refresh the chart
         * @public
         */
        refresh: function(newOption) {
            this.clear();
 
            if (newOption) {
                this.option = newOption;
                this.series = newOption.series;
            }
 
            this._init();
        },
 
        /**
         * init heatmap
         * @private
         */
        _init: function() {
            var series = this.series;
            this.backupShapeList();
 
            var len = series.length;
            for (var i = 0; i < len; ++i) {
                if (series[i].type === ecConfig.CHART_TYPE_HEATMAP) {
                    series[i] = this.reformOption(series[i]);
 
                    var layer = new HeatmapLayer(series[i]);
                    var canvas = layer.getCanvas(series[i].data,
                        this.zr.getWidth(), this.zr.getHeight());
                    var image = new zrImage({
                        position: [0, 0],
                        scale: [1, 1],
                        hoverable: this.option.hoverable,
                        style: {
                            x: 0,
                            y: 0,
                            image: canvas,
                            width: canvas.width,
                            height: canvas.height
                        }
                    });
                    this.shapeList.push(image);
                    // this.zr.addShape(image);
                }
            }
 
            this.addShapeList();
        }
    };
 
 
 
    zrUtil.inherits(Heatmap, ChartBase);
 
    require('../chart').define('heatmap', Heatmap);
 
    return Heatmap;
});