/** * @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; });