@visactor/vchart
Version:
charts lib based @visactor/VGrammar
52 lines (46 loc) • 2.57 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: !0
}), exports.getTooltipSpecForShow = void 0;
const vutils_1 = require("@visactor/vutils"), common_1 = require("./common"), pick_keys = [ "updateTitle", "updateContent", "updatePosition", "maxLineCount", "othersLine" ], getTooltipSpecForShow = (activeType, globalSpec, series, data, params) => {
var _a, _b, _c;
const finalSpec = {
activeType: activeType
};
switch (activeType) {
case "mark":
case "group":
if (series) {
const seriesSpec = null === (_a = series.getSpec()) || void 0 === _a ? void 0 : _a.tooltip;
return finalSpec.visible = !0, (null == seriesSpec ? void 0 : seriesSpec.handler) && (finalSpec.handler = seriesSpec.handler),
(null === (_b = finalSpec.handler) || void 0 === _b ? void 0 : _b.showTooltip) ? finalSpec : ((null == seriesSpec ? void 0 : seriesSpec[activeType]) && pick_keys.forEach((k => {
(0, vutils_1.isValid)(seriesSpec[activeType][k]) && (finalSpec[k] = seriesSpec[activeType][k]);
})), Object.assign(Object.assign({}, finalSpec), series.tooltipHelper.getTooltipData(activeType, globalSpec, data, data[0].datum, params)));
}
break;
case "dimension":
if (null == data ? void 0 : data.length) {
if (getSeriesListFromDimensionInfo(data).every((series => {
var _a;
return !(0, common_1.isActiveTypeVisible)("dimension", null === (_a = series.tooltipHelper) || void 0 === _a ? void 0 : _a.spec);
})) ? finalSpec.visible = !1 : finalSpec.visible = !0, finalSpec.handler = globalSpec.handler,
null === (_c = finalSpec.handler) || void 0 === _c ? void 0 : _c.showTooltip) return finalSpec;
const patternList = [];
return data.forEach((info => info.data.forEach((datum => {
const {series: series} = datum, pattern = series.tooltipHelper.getTooltipData(activeType, globalSpec, data, datum.datum, params);
pattern && patternList.push(pattern);
})))), (0, common_1.combineContents)(patternList);
}
}
return null;
};
exports.getTooltipSpecForShow = getTooltipSpecForShow;
const getSeriesListFromDimensionInfo = dimensionInfo => {
const list = [];
return dimensionInfo.forEach((info => {
info.data.forEach((datum => {
(0, vutils_1.isValid)(datum.series) && list.push(datum.series);
}));
})), list;
};
//# sourceMappingURL=get-spec.js.map