天津投入产出系统后端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

82 lines
2.4 KiB

/**
* echarts层级查找方法
*
* @desc echarts基于Canvas,纯Javascript图表库,提供直观,生动,可交互,可个性化定制的数据统计图表。
* @author Kener (@Kener-林峰, kener.linfeng@gmail.com)
*
*/
define(function(require) {
var zrUtil = require('zrender/tool/util');
/**
* 获取嵌套选项的基础方法
* 返回optionTarget中位于optionLocation上的值,如果没有定义,则返回undefined
*/
function query(optionTarget, optionLocation) {
if (typeof optionTarget == 'undefined') {
return;
}
if (!optionLocation) {
return optionTarget;
}
optionLocation = optionLocation.split('.');
var length = optionLocation.length;
var curIdx = 0;
while (curIdx < length) {
optionTarget = optionTarget[optionLocation[curIdx]];
if (typeof optionTarget == 'undefined') {
return;
}
curIdx++;
}
return optionTarget;
}
/**
* 获取多级控制嵌套属性的基础方法
* 返回ctrList中优先级最高(最靠前)的非undefined属性,ctrList中均无定义则返回undefined
*/
function deepQuery(ctrList, optionLocation) {
var finalOption;
for (var i = 0, l = ctrList.length; i < l; i++) {
finalOption = query(ctrList[i], optionLocation);
if (typeof finalOption != 'undefined') {
return finalOption;
}
}
}
/**
* 获取多级控制嵌套属性的基础方法
* 根据ctrList中优先级合并产出目标属性
*/
function deepMerge(ctrList, optionLocation) {
var finalOption;
var len = ctrList.length;
while (len--) {
var tempOption = query(ctrList[len], optionLocation);
if (typeof tempOption != 'undefined') {
if (typeof finalOption == 'undefined') {
finalOption = zrUtil.clone(tempOption);
}
else {
zrUtil.merge(
finalOption, tempOption, true
);
}
}
}
return finalOption;
}
return {
query : query,
deepQuery : deepQuery,
deepMerge : deepMerge
};
});