@visactor/vchart
Version:
charts lib based @visactor/VGrammar
70 lines (59 loc) • 2.78 kB
JavaScript
import { AreaSeries } from "../area/area";
import { SeriesTypeEnum } from "../interface/type";
import { registerAreaMark } from "../../mark/area";
import { AttributeLevel } from "../../constant/attribute";
import { RangeAreaSeriesTooltipHelper } from "./tooltip-helper";
import { rangeAreaSeriesMark } from "./constant";
import { Factory } from "../../core/factory";
import { registerCartesianLinearAxis, registerCartesianBandAxis } from "../../component/axis/cartesian";
export class RangeAreaSeries extends AreaSeries {
constructor() {
super(...arguments), this.type = SeriesTypeEnum.rangeArea;
}
initMark() {
this._areaMark = this._createMark(RangeAreaSeries.mark.area, {
groupKey: this._seriesField,
isSeriesMark: !0
}, {
morphElementKey: this.getDimensionField()[0]
});
}
initMarkStyle() {
this.initAreaMarkStyle();
}
initAreaMarkStyle() {
const areaMark = this._areaMark;
areaMark && (super.initAreaMarkStyle(), "horizontal" === this._direction ? this.setMarkStyle(this._areaMark, {
x1: datum => {
if (!this._xAxisHelper) return Number.NaN;
const {dataToPosition: dataToPosition} = this._xAxisHelper;
return dataToPosition(this.getDatumPositionValues(datum, this._spec.xField[1]), {
bandPosition: this._bandPosition
});
}
}, "normal", AttributeLevel.Series) : this.setMarkStyle(this._areaMark, {
y1: datum => {
if (!this._yAxisHelper) return Number.NaN;
const {dataToPosition: dataToPosition} = this._yAxisHelper;
return dataToPosition(this.getDatumPositionValues(datum, this._spec.yField[1]), {
bandPosition: this._bandPosition
});
}
}, "normal", AttributeLevel.Series), this.setMarkStyle(areaMark, {
stroke: !1
}, "normal", AttributeLevel.Series));
}
initTooltip() {
this._tooltipHelper = new RangeAreaSeriesTooltipHelper(this);
}
_isFieldAllValid() {
const viewStatistics = this.getViewDataStatistics(), fields = this.fieldY;
return !!(viewStatistics && viewStatistics.latestData && fields.length) && fields.every((field => viewStatistics.latestData[field] && viewStatistics.latestData[field].allValid));
}
}
RangeAreaSeries.type = SeriesTypeEnum.rangeArea, RangeAreaSeries.mark = rangeAreaSeriesMark;
export const registerRangeAreaSeries = () => {
registerAreaMark(), registerCartesianBandAxis(), registerCartesianLinearAxis(),
Factory.registerSeries(RangeAreaSeries.type, RangeAreaSeries);
};
//# sourceMappingURL=range-area.js.map