cione-comp-lib
Version:
`$ yarn add cione-comp-lib` 或者 `$ npm i cione-comp-lib -S`
177 lines (176 loc) • 5.56 kB
JavaScript
import { each, isObject, isTypedArray, defaults, isArray } from "../../../zrender/lib/core/util.mjs";
import globalCompatStyle from "./helper/compatStyle.mjs";
import { normalizeToArray } from "../util/model.mjs";
function get(opt, path) {
var pathArr = path.split(",");
var obj = opt;
for (var i = 0; i < pathArr.length; i++) {
obj = obj && obj[pathArr[i]];
if (obj == null) {
break;
}
}
return obj;
}
function set(opt, path, val, overwrite) {
var pathArr = path.split(",");
var obj = opt;
var key;
var i = 0;
for (; i < pathArr.length - 1; i++) {
key = pathArr[i];
if (obj[key] == null) {
obj[key] = {};
}
obj = obj[key];
}
if (overwrite || obj[pathArr[i]] == null) {
obj[pathArr[i]] = val;
}
}
function compatLayoutProperties(option) {
option && each(LAYOUT_PROPERTIES, function(prop) {
if (prop[0] in option && !(prop[1] in option)) {
option[prop[1]] = option[prop[0]];
}
});
}
var LAYOUT_PROPERTIES = [["x", "left"], ["y", "top"], ["x2", "right"], ["y2", "bottom"]];
var COMPATITABLE_COMPONENTS = ["grid", "geo", "parallel", "legend", "toolbox", "title", "visualMap", "dataZoom", "timeline"];
var BAR_ITEM_STYLE_MAP = [["borderRadius", "barBorderRadius"], ["borderColor", "barBorderColor"], ["borderWidth", "barBorderWidth"]];
function compatBarItemStyle(option) {
var itemStyle = option && option.itemStyle;
if (itemStyle) {
for (var i = 0; i < BAR_ITEM_STYLE_MAP.length; i++) {
var oldName = BAR_ITEM_STYLE_MAP[i][1];
var newName = BAR_ITEM_STYLE_MAP[i][0];
if (itemStyle[oldName] != null) {
itemStyle[newName] = itemStyle[oldName];
}
}
}
}
function compatPieLabel(option) {
if (!option) {
return;
}
if (option.alignTo === "edge" && option.margin != null && option.edgeDistance == null) {
option.edgeDistance = option.margin;
}
}
function compatSunburstState(option) {
if (!option) {
return;
}
if (option.downplay && !option.blur) {
option.blur = option.downplay;
}
}
function compatGraphFocus(option) {
if (!option) {
return;
}
if (option.focusNodeAdjacency != null) {
option.emphasis = option.emphasis || {};
if (option.emphasis.focus == null) {
option.emphasis.focus = "adjacency";
}
}
}
function traverseTree(data, cb) {
if (data) {
for (var i = 0; i < data.length; i++) {
cb(data[i]);
data[i] && traverseTree(data[i].children, cb);
}
}
}
function globalBackwardCompat(option, isTheme) {
globalCompatStyle(option, isTheme);
option.series = normalizeToArray(option.series);
each(option.series, function(seriesOpt) {
if (!isObject(seriesOpt)) {
return;
}
var seriesType = seriesOpt.type;
if (seriesType === "line") {
if (seriesOpt.clipOverflow != null) {
seriesOpt.clip = seriesOpt.clipOverflow;
}
} else if (seriesType === "pie" || seriesType === "gauge") {
if (seriesOpt.clockWise != null) {
seriesOpt.clockwise = seriesOpt.clockWise;
}
compatPieLabel(seriesOpt.label);
var data = seriesOpt.data;
if (data && !isTypedArray(data)) {
for (var i = 0; i < data.length; i++) {
compatPieLabel(data[i]);
}
}
if (seriesOpt.hoverOffset != null) {
seriesOpt.emphasis = seriesOpt.emphasis || {};
if (seriesOpt.emphasis.scaleSize = null) {
seriesOpt.emphasis.scaleSize = seriesOpt.hoverOffset;
}
}
} else if (seriesType === "gauge") {
var pointerColor = get(seriesOpt, "pointer.color");
pointerColor != null && set(seriesOpt, "itemStyle.color", pointerColor);
} else if (seriesType === "bar") {
compatBarItemStyle(seriesOpt);
compatBarItemStyle(seriesOpt.backgroundStyle);
compatBarItemStyle(seriesOpt.emphasis);
var data = seriesOpt.data;
if (data && !isTypedArray(data)) {
for (var i = 0; i < data.length; i++) {
if (typeof data[i] === "object") {
compatBarItemStyle(data[i]);
compatBarItemStyle(data[i] && data[i].emphasis);
}
}
}
} else if (seriesType === "sunburst") {
var highlightPolicy = seriesOpt.highlightPolicy;
if (highlightPolicy) {
seriesOpt.emphasis = seriesOpt.emphasis || {};
if (!seriesOpt.emphasis.focus) {
seriesOpt.emphasis.focus = highlightPolicy;
}
}
compatSunburstState(seriesOpt);
traverseTree(seriesOpt.data, compatSunburstState);
} else if (seriesType === "graph" || seriesType === "sankey") {
compatGraphFocus(seriesOpt);
} else if (seriesType === "map") {
if (seriesOpt.mapType && !seriesOpt.map) {
seriesOpt.map = seriesOpt.mapType;
}
if (seriesOpt.mapLocation) {
defaults(seriesOpt, seriesOpt.mapLocation);
}
}
if (seriesOpt.hoverAnimation != null) {
seriesOpt.emphasis = seriesOpt.emphasis || {};
if (seriesOpt.emphasis && seriesOpt.emphasis.scale == null) {
seriesOpt.emphasis.scale = seriesOpt.hoverAnimation;
}
}
compatLayoutProperties(seriesOpt);
});
if (option.dataRange) {
option.visualMap = option.dataRange;
}
each(COMPATITABLE_COMPONENTS, function(componentName) {
var options = option[componentName];
if (options) {
if (!isArray(options)) {
options = [options];
}
each(options, function(option2) {
compatLayoutProperties(option2);
});
}
});
}
export { globalBackwardCompat as default };