UNPKG

@visactor/vchart

Version:

charts lib based @visactor/VGrammar

65 lines (46 loc) 2.84 kB
import { SeriesTypeEnum } from "../../series/interface/type"; import { Factory } from "../../core/factory"; import { MosaicChartSpecTransformer } from "./mosaic-transformer"; import { BaseChart } from "../base"; import { registerMosaicSeries } from "../../series/mosaic/mosaic"; import { Stack } from "../stack"; import { stackMosaic, stackMosaicTotal } from "../../util/data"; import { stackSplit } from "../../data/transforms/stack-split"; import { registerDataSetInstanceTransform } from "../../data/register"; import { registerDimensionHover } from "../../interaction/triggers/dimension-hover"; import { registerDimensionEvents } from "../../event/events"; import { getCartesianDimensionInfo, getDimensionInfoByValue } from "../../event/events/dimension/util/cartesian"; import { getCartesianCrosshairRect } from "../../component/crosshair/utils/cartesian"; import { registerDimensionTooltipProcessor } from "../../component/tooltip/processor/dimension-tooltip"; import { registerMarkTooltipProcessor } from "../../component/tooltip/processor/mark-tooltip"; import { registerGroupTooltipProcessor } from "../../component/tooltip/processor/group-tooltip"; export class MosaicChart extends BaseChart { constructor() { super(...arguments), this.transformerConstructor = MosaicChartSpecTransformer, this.type = "mosaic", this.seriesType = SeriesTypeEnum.mosaic, this.handleAfterStackRegion = (region, stackValueGroup) => { region.getSeries().forEach((s => { const stackData = s.getStackData(), stackValue = s.getStackValue(), stackValueField = s.getStackValueField(); stackData && stackValueField && (stackMosaicTotal(stackValueGroup[stackValue], stackValueField), stackMosaic(s, stackValueGroup[stackValue])); })); }; } _beforeInit() { this._dataSet && registerDataSetInstanceTransform(this._dataSet, "stackSplit", stackSplit); } _initStack() { this._stack = new Stack(this, { afterStackRegion: this.handleAfterStackRegion }), this._stack.init(); } _setModelOption() { this._modelOption.getDimensionInfo = getCartesianDimensionInfo, this._modelOption.getDimensionInfoByValue = getDimensionInfoByValue, this._modelOption.getRectByDimensionData = getCartesianCrosshairRect; } } MosaicChart.type = "mosaic", MosaicChart.seriesType = SeriesTypeEnum.mosaic, MosaicChart.transformerConstructor = MosaicChartSpecTransformer; export const registerMosaicChart = () => { registerDimensionTooltipProcessor(), registerMarkTooltipProcessor(), registerGroupTooltipProcessor(), registerDimensionEvents(), registerDimensionHover(), registerMosaicSeries(), Factory.registerChart(MosaicChart.type, MosaicChart); }; //# sourceMappingURL=mosaic.js.map