@visactor/vchart
Version:
charts lib based @visactor/VGrammar
95 lines (76 loc) • 4.2 kB
JavaScript
import { CartesianSeries } from "../cartesian/cartesian";
import { SeriesTypeEnum } from "../interface/type";
import { LineLikeSeriesMixin } from "../mixin/line-mixin";
import { mixin } from "@visactor/vutils";
import { animationConfig, userAnimationConfig } from "../../animation/utils";
import { registerLineAnimation, registerScaleInOutAnimation } from "../../animation/config";
import { lineSeriesMark } from "./constant";
import { registerLineMark } from "../../mark/line";
import { registerSymbolMark } from "../../mark/symbol";
import { Factory } from "../../core/factory";
import { LineLikeSeriesSpecTransformer } from "../mixin/line-mixin-transformer";
import { getGroupAnimationParams } from "../util/utils";
import { registerCartesianLinearAxis, registerCartesianBandAxis } from "../../component/axis/cartesian";
import { registerSymbolOverlapTransform } from "../../mark/transform/symbol-overlap";
import { registerDataSamplingTransform } from "../../mark/transform/data-sampling";
import { line } from "../../theme/builtin/common/series/line";
export class LineSeries extends CartesianSeries {
constructor() {
super(...arguments), this.type = SeriesTypeEnum.line, this.transformerConstructor = LineLikeSeriesSpecTransformer,
this._sortDataByAxis = !1;
}
compile() {
super.compile(), this.addSamplingCompile(), this.addOverlapCompile();
}
initMark() {
var _a;
const seriesMark = null !== (_a = this._spec.seriesMark) && void 0 !== _a ? _a : "line";
this.initLineMark("line" === seriesMark), this.initSymbolMark("point" === seriesMark);
}
initTooltip() {
super.initTooltip();
const {group: group, mark: mark} = this._tooltipHelper.activeTriggerSet;
this._lineMark && group.add(this._lineMark), this._symbolMark && (mark.add(this._symbolMark),
group.add(this._symbolMark));
}
initMarkStyle() {
this.initLineMarkStyle(this._direction), this.initSymbolMarkStyle();
}
initAnimation() {
var _a, _b, _c, _d;
const lineAnimationParams = {
direction: this.direction
}, appearPreset = null === (_b = null === (_a = this._spec) || void 0 === _a ? void 0 : _a.animationAppear) || void 0 === _b ? void 0 : _b.preset;
if (this._lineMark.setAnimationConfig(animationConfig(null === (_c = Factory.getAnimationInKey("line")) || void 0 === _c ? void 0 : _c(lineAnimationParams, appearPreset), userAnimationConfig("line", this._spec, this._markAttributeContext))),
this._symbolMark) {
const animationParams = getGroupAnimationParams(this);
this._symbolMark.setAnimationConfig(animationConfig(null === (_d = Factory.getAnimationInKey("scaleInOut")) || void 0 === _d ? void 0 : _d(), userAnimationConfig("point", this._spec, this._markAttributeContext), animationParams));
}
}
onLayoutEnd() {
super.onLayoutEnd(), this.reCompileSampling();
}
getSeriesStyle(datum) {
var _a;
const isLineAsSeriesMark = "point" !== (null === (_a = this._spec) || void 0 === _a ? void 0 : _a.seriesMark);
return attribute => {
var _a, _b;
return isLineAsSeriesMark && "fill" === attribute && (attribute = "stroke"), null !== (_b = null === (_a = this._seriesMark) || void 0 === _a ? void 0 : _a.getAttribute(attribute, datum)) && void 0 !== _b ? _b : void 0;
};
}
getDefaultShapeType() {
return "circle";
}
getActiveMarks() {
return [ this._lineMark, this._symbolMark ];
}
}
LineSeries.type = SeriesTypeEnum.line, LineSeries.mark = lineSeriesMark, LineSeries.builtInTheme = {
line: line
}, LineSeries.transformerConstructor = LineLikeSeriesSpecTransformer, mixin(LineSeries, LineLikeSeriesMixin);
export const registerLineSeries = () => {
registerDataSamplingTransform(), registerSymbolOverlapTransform(), registerLineMark(),
registerSymbolMark(), registerLineAnimation(), registerScaleInOutAnimation(), registerCartesianBandAxis(),
registerCartesianLinearAxis(), Factory.registerSeries(LineSeries.type, LineSeries);
};
//# sourceMappingURL=line.js.map