UNPKG

@visactor/vchart

Version:

charts lib based @visactor/VGrammar

67 lines (62 loc) 3.4 kB
import { isNil } from "@visactor/vutils"; import { SeriesTypeEnum } from "../../series/interface"; import { ProgressLikeChartSpecTransformer } from "../polar"; import { LayoutZIndex } from "../../constant/layout"; export class GaugeChartSpecTransformer extends ProgressLikeChartSpecTransformer { _getDefaultSeriesSpec(spec) { const series = super._getDefaultSeriesSpec(spec); return series.radiusField = spec.radiusField, series.pin = spec.pin, series.pinBackground = spec.pinBackground, series.pointer = spec.pointer, series; } _getDefaultCircularProgressSeriesSpec(spec) { const series = super._getDefaultSeriesSpec(spec); return series.type = SeriesTypeEnum.circularProgress, series; } transformSpec(spec) { var _a, _b, _c, _d, _e; super.transformSpec(spec); let backgroundSeries = null === (_a = spec.series) || void 0 === _a ? void 0 : _a.find((series => series.type === SeriesTypeEnum.gauge || series.type === SeriesTypeEnum.circularProgress)); isNil(backgroundSeries) && (backgroundSeries = null !== (_b = spec.gauge) && void 0 !== _b ? _b : this._getDefaultCircularProgressSeriesSpec(spec), "circularProgress" === backgroundSeries.type && (isNil(backgroundSeries.radiusField) && isNil(backgroundSeries.categoryField) && (backgroundSeries.radiusField = null !== (_d = null !== (_c = spec.radiusField) && void 0 !== _c ? _c : spec.categoryField) && void 0 !== _d ? _d : spec.seriesField), isNil(backgroundSeries.valueField) && isNil(backgroundSeries.angleField) && (backgroundSeries.valueField = null !== (_e = spec.valueField) && void 0 !== _e ? _e : spec.angleField)), 1 === spec.series.length ? spec.series.push(backgroundSeries) : spec.series.forEach((s => { s.type === backgroundSeries.type && Object.keys(backgroundSeries).forEach((k => { k in s || (s[k] = backgroundSeries[k]); })); }))), backgroundSeries.type === SeriesTypeEnum.circularProgress ? this._transformProgressAxisSpec(spec, { orient: "angle", visible: !0, domainLine: { visible: !1 }, grid: { visible: !1 } }, { orient: "radius", visible: !1 }, { zIndex: LayoutZIndex.Region + 50 }) : this._transformGaugeAxisSpec(spec); } _transformGaugeAxisSpec(spec) { var _a; spec.axes || (spec.axes = []); const axesPtr = { radius: null, angle: null }; (null !== (_a = spec.axes) && void 0 !== _a ? _a : []).forEach((axis => { const {orient: orient} = axis; "radius" === orient && (axesPtr.radius = axis), "angle" === orient && (axesPtr.angle = axis); })), axesPtr.angle || (axesPtr.angle = { orient: "angle", visible: !0 }, spec.axes.push(axesPtr.angle)), axesPtr.radius || (axesPtr.radius = { orient: "radius", visible: !1 }, spec.axes.push(axesPtr.radius)), isNil(axesPtr.angle.type) && (axesPtr.angle.type = "linear"), isNil(axesPtr.radius.type) && (axesPtr.radius.type = "linear"), isNil(axesPtr.angle.zIndex) && (axesPtr.angle.zIndex = LayoutZIndex.Region + 50); } } //# sourceMappingURL=gauge-transformer.js.map