52 lines
1.8 KiB
Plaintext
52 lines
1.8 KiB
Plaintext
/**
|
|
* @file Data range visual coding.
|
|
*/
|
|
define(function (require) {
|
|
|
|
var echarts = require('../../echarts');
|
|
var VisualMapping = require('../../visual/VisualMapping');
|
|
var zrUtil = require('zrender/core/util');
|
|
|
|
echarts.registerVisualCoding('component', function (ecModel) {
|
|
ecModel.eachComponent('visualMap', function (visualMapModel) {
|
|
processSingleVisualMap(visualMapModel, ecModel);
|
|
});
|
|
});
|
|
|
|
function processSingleVisualMap(visualMapModel, ecModel) {
|
|
var visualMappings = visualMapModel.targetVisuals;
|
|
var visualTypesMap = {};
|
|
zrUtil.each(['inRange', 'outOfRange'], function (state) {
|
|
var visualTypes = VisualMapping.prepareVisualTypes(visualMappings[state]);
|
|
visualTypesMap[state] = visualTypes;
|
|
});
|
|
|
|
visualMapModel.eachTargetSeries(function (seriesModel) {
|
|
var data = seriesModel.getData();
|
|
var dimension = visualMapModel.getDataDimension(data);
|
|
var dataIndex;
|
|
|
|
function getVisual(key) {
|
|
return data.getItemVisual(dataIndex, key);
|
|
}
|
|
|
|
function setVisual(key, value) {
|
|
data.setItemVisual(dataIndex, key, value);
|
|
}
|
|
|
|
data.each([dimension], function (value, index) {
|
|
// For performance consideration, do not use curry.
|
|
dataIndex = index;
|
|
var valueState = visualMapModel.getValueState(value);
|
|
var mappings = visualMappings[valueState];
|
|
var visualTypes = visualTypesMap[valueState];
|
|
for (var i = 0, len = visualTypes.length; i < len; i++) {
|
|
var type = visualTypes[i];
|
|
mappings[type] && mappings[type].applyVisual(value, getVisual, setVisual);
|
|
}
|
|
}, true);
|
|
});
|
|
}
|
|
|
|
});
|