UNPKG

@visactor/vchart

Version:

charts lib based @visactor/VGrammar

52 lines (42 loc) 2.58 kB
import { BaseChart } from "../base/base-chart"; import { SeriesTypeEnum } from "../../series/interface/type"; import { registerSankeySeries } from "../../series/sankey/sankey"; import { Factory } from "../../core/factory"; import { SankeyChartSpecTransformer } from "./sankey-transformer"; import { isArray, isFunction } from "@visactor/vutils"; import { loadScrollbar } from "@visactor/vrender-components"; export class SankeyChart extends BaseChart { constructor() { super(...arguments), this.transformerConstructor = SankeyChartSpecTransformer, this.type = "sankey", this.seriesType = SeriesTypeEnum.sankey; } _setStateInDatum(stateKey, checkReverse, datum, filter, region) { const activeDatum = isArray(datum) ? datum[0] : datum, keys = activeDatum ? Object.keys(activeDatum) : null; this.getRegionsInQuerier(region).forEach((r => { if (!activeDatum) return void r.interaction.clearEventElement(stateKey, !0); let hasPick = !1; r.getSeries().forEach((s => { var _a, _b; let activeNodeOrLink = null; s.getMarksWithoutRoot().forEach((m => { if ("text" === m.type) return; let pickElement = null; const mark = m.getProduct(); mark && ((!filter || isFunction(filter) && filter(s, m)) && (pickElement = mark.elements.find((e => keys.every((k => { var _a; let datum = null === (_a = e.getDatum()) || void 0 === _a ? void 0 : _a.datum; return isArray(datum) && (datum = datum[0]), activeDatum[k] == (null == datum ? void 0 : datum[k]); }))))), pickElement && (hasPick = !0, r.interaction.startInteraction(stateKey, pickElement), (mark.id().includes("node") || mark.id().includes("link")) && (activeNodeOrLink = pickElement))); })), activeNodeOrLink && (null === (_b = (_a = s)._handleEmphasisElement) || void 0 === _b || _b.call(_a, { item: activeNodeOrLink })); })), checkReverse && hasPick && r.interaction.reverseEventElement(stateKey); })); } } SankeyChart.type = "sankey", SankeyChart.seriesType = SeriesTypeEnum.sankey, SankeyChart.transformerConstructor = SankeyChartSpecTransformer; export const registerSankeyChart = () => { loadScrollbar(), registerSankeySeries(), Factory.registerChart(SankeyChart.type, SankeyChart); }; //# sourceMappingURL=sankey.js.map