cione-comp-lib
Version:
`$ yarn add cione-comp-lib` 或者 `$ npm i cione-comp-lib -S`
66 lines (65 loc) • 2.77 kB
JavaScript
import { each, extend, isArray, isString } from "../../../zrender/lib/core/util.mjs";
import { queryDataIndex } from "../util/model.mjs";
function createLegacyDataSelectAction(seriesType, ecRegisterAction) {
function getSeriesIndices(ecModel, payload) {
var seriesIndices = [];
ecModel.eachComponent({
mainType: "series",
subType: seriesType,
query: payload
}, function(seriesModel) {
seriesIndices.push(seriesModel.seriesIndex);
});
return seriesIndices;
}
each([[seriesType + "ToggleSelect", "toggleSelect"], [seriesType + "Select", "select"], [seriesType + "UnSelect", "unselect"]], function(eventsMap) {
ecRegisterAction(eventsMap[0], function(payload, ecModel, api) {
payload = extend({}, payload);
api.dispatchAction(extend(payload, {
type: eventsMap[1],
seriesIndex: getSeriesIndices(ecModel, payload)
}));
});
});
}
function handleSeriesLegacySelectEvents(type, eventPostfix, ecIns, ecModel, payload) {
var legacyEventName = type + eventPostfix;
if (!ecIns.isSilent(legacyEventName)) {
ecModel.eachComponent({
mainType: "series",
subType: "pie"
}, function(seriesModel) {
var seriesIndex = seriesModel.seriesIndex;
var selectedMap = seriesModel.option.selectedMap;
var selected = payload.selected;
for (var i = 0; i < selected.length; i++) {
if (selected[i].seriesIndex === seriesIndex) {
var data = seriesModel.getData();
var dataIndex = queryDataIndex(data, payload.fromActionPayload);
ecIns.trigger(legacyEventName, {
type: legacyEventName,
seriesId: seriesModel.id,
name: isArray(dataIndex) ? data.getName(dataIndex[0]) : data.getName(dataIndex),
selected: isString(selectedMap) ? selectedMap : extend({}, selectedMap)
});
}
}
});
}
}
function handleLegacySelectEvents(messageCenter, ecIns, api) {
messageCenter.on("selectchanged", function(params) {
var ecModel = api.getModel();
if (params.isFromClick) {
handleSeriesLegacySelectEvents("map", "selectchanged", ecIns, ecModel, params);
handleSeriesLegacySelectEvents("pie", "selectchanged", ecIns, ecModel, params);
} else if (params.fromAction === "select") {
handleSeriesLegacySelectEvents("map", "selected", ecIns, ecModel, params);
handleSeriesLegacySelectEvents("pie", "selected", ecIns, ecModel, params);
} else if (params.fromAction === "unselect") {
handleSeriesLegacySelectEvents("map", "unselected", ecIns, ecModel, params);
handleSeriesLegacySelectEvents("pie", "unselected", ecIns, ecModel, params);
}
});
}
export { createLegacyDataSelectAction, handleLegacySelectEvents };