@visactor/vchart
Version:
charts lib based @visactor/VGrammar
65 lines (46 loc) • 2.84 kB
JavaScript
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