cione-comp-lib
Version:
`$ yarn add cione-comp-lib` 或者 `$ npm i cione-comp-lib -S`
225 lines (224 loc) • 7 kB
JavaScript
import { __extends } from "../../../../tslib/tslib.es6.mjs";
import { map, extend, createHashMap, each, isArray } from "../../../../zrender/lib/core/util.mjs";
import SeriesModel from "../../model/Series.mjs";
import Tree from "../../data/Tree.mjs";
import Model from "../../model/Model.mjs";
import { wrapTreePathInfo } from "../helper/treeHelper.mjs";
import { normalizeToArray } from "../../util/model.mjs";
import { createTooltipMarkup } from "../../component/tooltip/tooltipMarkup.mjs";
import enableAriaDecalForTree from "../helper/enableAriaDecalForTree.mjs";
var TreemapSeriesModel = function(_super) {
__extends(TreemapSeriesModel2, _super);
function TreemapSeriesModel2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = TreemapSeriesModel2.type;
_this.preventUsingHoverLayer = true;
return _this;
}
TreemapSeriesModel2.prototype.getInitialData = function(option, ecModel) {
var root = {
name: option.name,
children: option.data
};
completeTreeValue(root);
var levels = option.levels || [];
var designatedVisualItemStyle = this.designatedVisualItemStyle = {};
var designatedVisualModel = new Model({
itemStyle: designatedVisualItemStyle
}, this, ecModel);
levels = option.levels = setDefault(levels, ecModel);
var levelModels = map(levels || [], function(levelDefine) {
return new Model(levelDefine, designatedVisualModel, ecModel);
}, this);
var tree = Tree.createTree(root, this, beforeLink);
function beforeLink(nodeData) {
nodeData.wrapMethod("getItemModel", function(model, idx) {
var node = tree.getNodeByDataIndex(idx);
var levelModel = node ? levelModels[node.depth] : null;
model.parentModel = levelModel || designatedVisualModel;
return model;
});
}
return tree.data;
};
TreemapSeriesModel2.prototype.optionUpdated = function() {
this.resetViewRoot();
};
TreemapSeriesModel2.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) {
var data = this.getData();
var value = this.getRawValue(dataIndex);
var name = data.getName(dataIndex);
return createTooltipMarkup("nameValue", {
name,
value
});
};
TreemapSeriesModel2.prototype.getDataParams = function(dataIndex) {
var params = _super.prototype.getDataParams.apply(this, arguments);
var node = this.getData().tree.getNodeByDataIndex(dataIndex);
params.treeAncestors = wrapTreePathInfo(node, this);
params.treePathInfo = params.treeAncestors;
return params;
};
TreemapSeriesModel2.prototype.setLayoutInfo = function(layoutInfo) {
this.layoutInfo = this.layoutInfo || {};
extend(this.layoutInfo, layoutInfo);
};
TreemapSeriesModel2.prototype.mapIdToIndex = function(id) {
var idIndexMap = this._idIndexMap;
if (!idIndexMap) {
idIndexMap = this._idIndexMap = createHashMap();
this._idIndexMapCount = 0;
}
var index = idIndexMap.get(id);
if (index == null) {
idIndexMap.set(id, index = this._idIndexMapCount++);
}
return index;
};
TreemapSeriesModel2.prototype.getViewRoot = function() {
return this._viewRoot;
};
TreemapSeriesModel2.prototype.resetViewRoot = function(viewRoot) {
viewRoot ? this._viewRoot = viewRoot : viewRoot = this._viewRoot;
var root = this.getRawData().tree.root;
if (!viewRoot || viewRoot !== root && !root.contains(viewRoot)) {
this._viewRoot = root;
}
};
TreemapSeriesModel2.prototype.enableAriaDecal = function() {
enableAriaDecalForTree(this);
};
TreemapSeriesModel2.type = "series.treemap";
TreemapSeriesModel2.layoutMode = "box";
TreemapSeriesModel2.defaultOption = {
progressive: 0,
left: "center",
top: "middle",
width: "80%",
height: "80%",
sort: true,
clipWindow: "origin",
squareRatio: 0.5 * (1 + Math.sqrt(5)),
leafDepth: null,
drillDownIcon: "\u25B6",
zoomToNodeRatio: 0.32 * 0.32,
roam: true,
nodeClick: "zoomToNode",
animation: true,
animationDurationUpdate: 900,
animationEasing: "quinticInOut",
breadcrumb: {
show: true,
height: 22,
left: "center",
top: "bottom",
emptyItemWidth: 25,
itemStyle: {
color: "rgba(0,0,0,0.7)",
textStyle: {
color: "#fff"
}
},
emphasis: {
itemStyle: {
color: "rgba(0,0,0,0.9)"
}
}
},
label: {
show: true,
distance: 0,
padding: 5,
position: "inside",
color: "#fff",
overflow: "truncate"
},
upperLabel: {
show: false,
position: [0, "50%"],
height: 20,
overflow: "truncate",
verticalAlign: "middle"
},
itemStyle: {
color: null,
colorAlpha: null,
colorSaturation: null,
borderWidth: 0,
gapWidth: 0,
borderColor: "#fff",
borderColorSaturation: null
},
emphasis: {
upperLabel: {
show: true,
position: [0, "50%"],
overflow: "truncate",
verticalAlign: "middle"
}
},
visualDimension: 0,
visualMin: null,
visualMax: null,
color: [],
colorAlpha: null,
colorSaturation: null,
colorMappingBy: "index",
visibleMin: 10,
childrenVisibleMin: null,
levels: []
};
return TreemapSeriesModel2;
}(SeriesModel);
function completeTreeValue(dataNode) {
var sum = 0;
each(dataNode.children, function(child) {
completeTreeValue(child);
var childValue = child.value;
isArray(childValue) && (childValue = childValue[0]);
sum += childValue;
});
var thisValue = dataNode.value;
if (isArray(thisValue)) {
thisValue = thisValue[0];
}
if (thisValue == null || isNaN(thisValue)) {
thisValue = sum;
}
if (thisValue < 0) {
thisValue = 0;
}
isArray(dataNode.value) ? dataNode.value[0] = thisValue : dataNode.value = thisValue;
}
function setDefault(levels, ecModel) {
var globalColorList = normalizeToArray(ecModel.get("color"));
var globalDecalList = normalizeToArray(ecModel.get(["aria", "decal", "decals"]));
if (!globalColorList) {
return;
}
levels = levels || [];
var hasColorDefine;
var hasDecalDefine;
each(levels, function(levelDefine) {
var model = new Model(levelDefine);
var modelColor = model.get("color");
var modelDecal = model.get("decal");
if (model.get(["itemStyle", "color"]) || modelColor && modelColor !== "none") {
hasColorDefine = true;
}
if (model.get(["itemStyle", "decal"]) || modelDecal && modelDecal !== "none") {
hasDecalDefine = true;
}
});
var level0 = levels[0] || (levels[0] = {});
if (!hasColorDefine) {
level0.color = globalColorList.slice();
}
if (!hasDecalDefine && globalDecalList) {
level0.decal = globalDecalList.slice();
}
return levels;
}
var TreemapSeriesModel$1 = TreemapSeriesModel;
export { TreemapSeriesModel$1 as default };