cione-comp-lib
Version:
`$ yarn add cione-comp-lib` 或者 `$ npm i cione-comp-lib -S`
58 lines (57 loc) • 1.84 kB
JavaScript
import { extend } from "../../../../zrender/lib/core/util.mjs";
import { retrieveTargetInfo, aboveViewRoot } from "../helper/treeHelper.mjs";
var ROOT_TO_NODE_ACTION = "sunburstRootToNode";
var HIGHLIGHT_ACTION = "sunburstHighlight";
var UNHIGHLIGHT_ACTION = "sunburstUnhighlight";
function installSunburstAction(registers) {
registers.registerAction({
type: ROOT_TO_NODE_ACTION,
update: "updateView"
}, function(payload, ecModel) {
ecModel.eachComponent({
mainType: "series",
subType: "sunburst",
query: payload
}, handleRootToNode);
function handleRootToNode(model, index) {
var targetInfo = retrieveTargetInfo(payload, [ROOT_TO_NODE_ACTION], model);
if (targetInfo) {
var originViewRoot = model.getViewRoot();
if (originViewRoot) {
payload.direction = aboveViewRoot(originViewRoot, targetInfo.node) ? "rollUp" : "drillDown";
}
model.resetViewRoot(targetInfo.node);
}
}
});
registers.registerAction({
type: HIGHLIGHT_ACTION,
update: "none"
}, function(payload, ecModel, api) {
payload = extend({}, payload);
ecModel.eachComponent({
mainType: "series",
subType: "sunburst",
query: payload
}, handleHighlight);
function handleHighlight(model) {
var targetInfo = retrieveTargetInfo(payload, [HIGHLIGHT_ACTION], model);
if (targetInfo) {
payload.dataIndex = targetInfo.node.dataIndex;
}
}
api.dispatchAction(extend(payload, {
type: "highlight"
}));
});
registers.registerAction({
type: UNHIGHLIGHT_ACTION,
update: "updateView"
}, function(payload, ecModel, api) {
payload = extend({}, payload);
api.dispatchAction(extend(payload, {
type: "downplay"
}));
});
}
export { ROOT_TO_NODE_ACTION, installSunburstAction };