134 lines
3.9 KiB
Plaintext
134 lines
3.9 KiB
Plaintext
define(function (require) {
|
|
|
|
var Group = require('zrender/container/Group');
|
|
var componentUtil = require('../util/component');
|
|
var clazzUtil = require('../util/clazz');
|
|
|
|
function Chart() {
|
|
|
|
/**
|
|
* @type {module:zrender/container/Group}
|
|
* @readOnly
|
|
*/
|
|
this.group = new Group();
|
|
|
|
/**
|
|
* @type {string}
|
|
* @readOnly
|
|
*/
|
|
this.uid = componentUtil.getUID('viewChart');
|
|
}
|
|
|
|
Chart.prototype = {
|
|
|
|
type: 'chart',
|
|
|
|
/**
|
|
* Init the chart
|
|
* @param {module:echarts/model/Global} ecModel
|
|
* @param {module:echarts/ExtensionAPI} api
|
|
*/
|
|
init: function (ecModel, api) {},
|
|
|
|
/**
|
|
* Render the chart
|
|
* @param {module:echarts/model/Series} seriesModel
|
|
* @param {module:echarts/model/Global} ecModel
|
|
* @param {module:echarts/ExtensionAPI} api
|
|
* @param {Object} payload
|
|
*/
|
|
render: function (seriesModel, ecModel, api, payload) {},
|
|
|
|
/**
|
|
* Highlight series or specified data item
|
|
* @param {module:echarts/model/Series} seriesModel
|
|
* @param {module:echarts/model/Global} ecModel
|
|
* @param {module:echarts/ExtensionAPI} api
|
|
* @param {Object} payload
|
|
*/
|
|
highlight: function (seriesModel, ecModel, api, payload) {
|
|
toggleHighlight(seriesModel.getData(), payload, 'emphasis');
|
|
},
|
|
|
|
/**
|
|
* Downplay series or specified data item
|
|
* @param {module:echarts/model/Series} seriesModel
|
|
* @param {module:echarts/model/Global} ecModel
|
|
* @param {module:echarts/ExtensionAPI} api
|
|
* @param {Object} payload
|
|
*/
|
|
downplay: function (seriesModel, ecModel, api, payload) {
|
|
toggleHighlight(seriesModel.getData(), payload, 'normal');
|
|
},
|
|
|
|
/**
|
|
* Remove self
|
|
* @param {module:echarts/model/Global} ecModel
|
|
* @param {module:echarts/ExtensionAPI} api
|
|
*/
|
|
remove: function (ecModel, api) {
|
|
this.group.removeAll();
|
|
},
|
|
|
|
/**
|
|
* Dispose self
|
|
* @param {module:echarts/model/Global} ecModel
|
|
* @param {module:echarts/ExtensionAPI} api
|
|
*/
|
|
dispose: function () {}
|
|
};
|
|
|
|
var chartProto = Chart.prototype;
|
|
chartProto.updateView
|
|
= chartProto.updateLayout
|
|
= chartProto.updateVisual
|
|
= function (seriesModel, ecModel, api, payload) {
|
|
this.render(seriesModel, ecModel, api, payload);
|
|
};
|
|
|
|
/**
|
|
* Set state of single element
|
|
* @param {module:zrender/Element} el
|
|
* @param {string} state
|
|
*/
|
|
function elSetState(el, state) {
|
|
if (el) {
|
|
el.trigger(state);
|
|
if (el.type === 'group') {
|
|
for (var i = 0; i < el.childCount(); i++) {
|
|
elSetState(el.childAt(i), state);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
/**
|
|
* @param {module:echarts/data/List} data
|
|
* @param {Object} payload
|
|
* @param {string} state 'normal'|'emphasis'
|
|
* @inner
|
|
*/
|
|
function toggleHighlight(data, payload, state) {
|
|
if (payload.dataIndex != null) {
|
|
var el = data.getItemGraphicEl(payload.dataIndex);
|
|
elSetState(el, state);
|
|
}
|
|
else if (payload.name) {
|
|
var dataIndex = data.indexOfName(payload.name);
|
|
var el = data.getItemGraphicEl(dataIndex);
|
|
elSetState(el, state);
|
|
}
|
|
else {
|
|
data.eachItemGraphicEl(function (el) {
|
|
elSetState(el, state);
|
|
});
|
|
}
|
|
}
|
|
|
|
// Enable Chart.extend.
|
|
clazzUtil.enableClassExtend(Chart);
|
|
|
|
// Add capability of registerClass, getClass, hasClass, registerSubTypeDefaulter and so on.
|
|
clazzUtil.enableClassManagement(Chart, {registerWhenExtend: true});
|
|
|
|
return Chart;
|
|
}); |