UNPKG

@visactor/vchart

Version:

charts lib based @visactor/VGrammar

57 lines (45 loc) 2.43 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 } from "@visactor/vutils"; import { loadScrollbar } from "@visactor/vrender-components"; import { registerMarkTooltipProcessor } from "../../component/tooltip/processor/mark-tooltip"; import { getDatumOfGraphic } from "../../util/mark"; export class SankeyChart extends BaseChart { constructor() { super(...arguments), this.transformerConstructor = SankeyChartSpecTransformer, this.type = "sankey", this.seriesType = SeriesTypeEnum.sankey; } _setStateInDatum(stateKey, datum, filter, region) { const activeDatum = isArray(datum) ? datum[0] : datum; if (!activeDatum) return void this._interaction.clearByState(stateKey); let activeNodeOrLink = null; this.filterGraphicsByDatum(activeDatum, { filter: (series, mark) => "text" !== mark.type && mark.getProduct() && (!filter || filter(series, mark)), region: region, getDatum: e => { var _a; let d = null === (_a = getDatumOfGraphic(e)) || void 0 === _a ? void 0 : _a.datum; return isArray(d) && (d = d[0]), d; }, callback: (element, mark, s, r) => { var _a, _b; const id = mark.getProductId(); id && (id.includes("node") || id.includes("link")) && (null === (_b = (_a = s)._handleEmphasisElement) || void 0 === _b || _b.call(_a, { item: element, mark: mark })); }, regionCallback: (elements, r) => { activeDatum && elements.length && (activeNodeOrLink = elements[0]); } }), activeNodeOrLink && this._interaction.updateStateOfGraphics(stateKey, [ activeNodeOrLink ]); } } SankeyChart.type = "sankey", SankeyChart.seriesType = SeriesTypeEnum.sankey, SankeyChart.transformerConstructor = SankeyChartSpecTransformer; export const registerSankeyChart = () => { registerMarkTooltipProcessor(), loadScrollbar(), registerSankeySeries(), Factory.registerChart(SankeyChart.type, SankeyChart); }; //# sourceMappingURL=sankey.js.map