@visactor/vchart 1.11.2-alpha.5 → 1.11.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/es5/index.js +1 -1
- package/build/index.es.js +9686 -10889
- package/build/index.js +9686 -10889
- package/build/index.min.js +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/cjs/animation/utils.js +10 -1
- package/cjs/animation/utils.js.map +1 -1
- package/cjs/chart/base/base-chart-transformer.d.ts +2 -1
- package/cjs/chart/base/base-chart-transformer.js +13 -1
- package/cjs/chart/base/base-chart-transformer.js.map +1 -1
- package/cjs/chart/base/base-chart.js +0 -1
- package/cjs/chart/base/base-chart.js.map +1 -1
- package/cjs/chart/common/common-transformer.js +1 -9
- package/cjs/chart/common/common-transformer.js.map +1 -1
- package/cjs/chart/polar/interface.d.ts +2 -1
- package/cjs/chart/polar/interface.js.map +1 -1
- package/cjs/chart/radar/radar-transformer.js +1 -2
- package/cjs/chart/radar/radar-transformer.js.map +1 -1
- package/cjs/chart/stack.js +1 -2
- package/cjs/compile/grammar-item.js +2 -1
- package/cjs/component/axis/base-axis.d.ts +1 -1
- package/cjs/component/axis/base-axis.js +9 -9
- package/cjs/component/axis/base-axis.js.map +1 -1
- package/cjs/component/axis/cartesian/axis.d.ts +1 -1
- package/cjs/component/axis/cartesian/axis.js.map +1 -1
- package/cjs/component/axis/cartesian/time-axis.js.map +1 -1
- package/cjs/component/axis/polar/axis.d.ts +11 -3
- package/cjs/component/axis/polar/axis.js +23 -20
- package/cjs/component/axis/polar/axis.js.map +1 -1
- package/cjs/component/axis/polar/band-axis.d.ts +1 -0
- package/cjs/component/axis/polar/interface/common.d.ts +1 -0
- package/cjs/component/axis/polar/interface/common.js.map +1 -1
- package/cjs/component/axis/polar/interface/spec.d.ts +6 -2
- package/cjs/component/axis/polar/interface/spec.js.map +1 -1
- package/cjs/component/axis/polar/util/common.d.ts +1 -0
- package/cjs/component/axis/polar/util/common.js +7 -2
- package/cjs/component/axis/polar/util/common.js.map +1 -1
- package/cjs/component/crosshair/base.js +1 -1
- package/cjs/component/crosshair/base.js.map +1 -1
- package/cjs/component/marker/mark-line/cartesian-mark-line.js +8 -5
- package/cjs/component/marker/mark-line/cartesian-mark-line.js.map +1 -1
- package/cjs/constant/scroll-bar.js +2 -1
- package/cjs/constant/waterfall.js +1 -2
- package/cjs/core/index.d.ts +1 -1
- package/cjs/core/index.js +1 -1
- package/cjs/core/index.js.map +1 -1
- package/cjs/core/instance-manager.js +1 -2
- package/cjs/event/event-dispatcher.js +2 -1
- package/cjs/mark/arc.js +6 -6
- package/cjs/mark/arc.js.map +1 -1
- package/cjs/plugin/components/axis-sync/tick-align-transform.js +2 -2
- package/cjs/plugin/components/axis-sync/tick-align-transform.js.map +1 -1
- package/cjs/series/base/base-series.js +2 -8
- package/cjs/series/base/base-series.js.map +1 -1
- package/cjs/series/pie/animation/centerOffset.js +17 -17
- package/cjs/series/pie/animation/centerOffset.js.map +1 -1
- package/cjs/series/pie/pie.d.ts +0 -1
- package/cjs/series/pie/pie.js +13 -31
- package/cjs/series/pie/pie.js.map +1 -1
- package/cjs/series/polar/interface.d.ts +2 -2
- package/cjs/series/polar/interface.js.map +1 -1
- package/cjs/series/polar/polar.js +2 -0
- package/cjs/series/polar/polar.js.map +1 -1
- package/cjs/series/polar/progress-like/progress-like.js +3 -3
- package/cjs/series/polar/progress-like/progress-like.js.map +1 -1
- package/cjs/series/sunburst/sunburst.js +1 -6
- package/cjs/series/sunburst/sunburst.js.map +1 -1
- package/cjs/util/math.d.ts +3 -4
- package/cjs/util/math.js +16 -26
- package/cjs/util/math.js.map +1 -1
- package/cjs/util/space.d.ts +1 -1
- package/cjs/util/space.js +2 -2
- package/cjs/util/space.js.map +1 -1
- package/cjs/util/text.js +2 -2
- package/cjs/util/text.js.map +1 -1
- package/esm/animation/utils.js +10 -1
- package/esm/animation/utils.js.map +1 -1
- package/esm/chart/base/base-chart-transformer.d.ts +2 -1
- package/esm/chart/base/base-chart-transformer.js +14 -0
- package/esm/chart/base/base-chart-transformer.js.map +1 -1
- package/esm/chart/base/base-chart.js +0 -1
- package/esm/chart/base/base-chart.js.map +1 -1
- package/esm/chart/common/common-transformer.js +2 -10
- package/esm/chart/common/common-transformer.js.map +1 -1
- package/esm/chart/polar/interface.d.ts +2 -1
- package/esm/chart/polar/interface.js.map +1 -1
- package/esm/chart/radar/radar-transformer.js +1 -2
- package/esm/chart/radar/radar-transformer.js.map +1 -1
- package/esm/chart/stack.js +1 -2
- package/esm/compile/grammar-item.js +2 -1
- package/esm/component/axis/base-axis.d.ts +1 -1
- package/esm/component/axis/base-axis.js +1 -1
- package/esm/component/axis/base-axis.js.map +1 -1
- package/esm/component/axis/cartesian/axis.d.ts +1 -1
- package/esm/component/axis/cartesian/axis.js.map +1 -1
- package/esm/component/axis/cartesian/time-axis.js.map +1 -1
- package/esm/component/axis/polar/axis.d.ts +11 -3
- package/esm/component/axis/polar/axis.js +25 -21
- package/esm/component/axis/polar/axis.js.map +1 -1
- package/esm/component/axis/polar/band-axis.d.ts +1 -0
- package/esm/component/axis/polar/interface/common.d.ts +1 -0
- package/esm/component/axis/polar/interface/common.js.map +1 -1
- package/esm/component/axis/polar/interface/spec.d.ts +6 -2
- package/esm/component/axis/polar/interface/spec.js.map +1 -1
- package/esm/component/axis/polar/util/common.d.ts +1 -0
- package/esm/component/axis/polar/util/common.js +6 -2
- package/esm/component/axis/polar/util/common.js.map +1 -1
- package/esm/component/crosshair/base.js +1 -1
- package/esm/component/crosshair/base.js.map +1 -1
- package/esm/component/marker/mark-line/cartesian-mark-line.js +9 -6
- package/esm/component/marker/mark-line/cartesian-mark-line.js.map +1 -1
- package/esm/constant/scroll-bar.js +2 -1
- package/esm/constant/waterfall.js +1 -2
- package/esm/core/index.d.ts +1 -1
- package/esm/core/index.js +1 -1
- package/esm/core/index.js.map +1 -1
- package/esm/core/instance-manager.js +1 -2
- package/esm/event/event-dispatcher.js +2 -1
- package/esm/mark/arc.js +7 -6
- package/esm/mark/arc.js.map +1 -1
- package/esm/plugin/components/axis-sync/tick-align-transform.js +1 -1
- package/esm/plugin/components/axis-sync/tick-align-transform.js.map +1 -1
- package/esm/series/base/base-series.js +2 -8
- package/esm/series/base/base-series.js.map +1 -1
- package/esm/series/pie/animation/centerOffset.js +13 -15
- package/esm/series/pie/animation/centerOffset.js.map +1 -1
- package/esm/series/pie/pie.d.ts +0 -1
- package/esm/series/pie/pie.js +15 -31
- package/esm/series/pie/pie.js.map +1 -1
- package/esm/series/polar/interface.d.ts +2 -2
- package/esm/series/polar/interface.js.map +1 -1
- package/esm/series/polar/polar.js +2 -0
- package/esm/series/polar/polar.js.map +1 -1
- package/esm/series/polar/progress-like/progress-like.js +1 -3
- package/esm/series/polar/progress-like/progress-like.js.map +1 -1
- package/esm/series/sunburst/sunburst.js +1 -6
- package/esm/series/sunburst/sunburst.js.map +1 -1
- package/esm/util/math.d.ts +3 -4
- package/esm/util/math.js +2 -12
- package/esm/util/math.js.map +1 -1
- package/esm/util/space.d.ts +1 -1
- package/esm/util/space.js +2 -2
- package/esm/util/space.js.map +1 -1
- package/esm/util/text.js +1 -1
- package/esm/util/text.js.map +1 -1
- package/package.json +26 -26
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/series/pie/pie.ts"],"names":[],"mappings":"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","file":"pie.js","sourcesContent":["/* eslint-disable no-duplicate-imports */\nimport { degreeToRadian, isValid } from '@visactor/vutils';\nimport { DataView } from '@visactor/vdataset';\nimport {\n AttributeLevel,\n ARC_START_ANGLE,\n ARC_END_ANGLE,\n ARC_RATIO,\n ARC_MIDDLE_ANGLE,\n ARC_RADIAN,\n ARC_QUADRANT,\n ARC_K,\n PREFIX,\n DEFAULT_LABEL_VISIBLE,\n POLAR_START_RADIAN,\n POLAR_END_RADIAN,\n DEFAULT_DATA_INDEX,\n ChartEvent,\n DEFAULT_DATA_KEY\n} from '../../constant';\nimport type { IPoint, Datum, StateValueType } from '../../typings';\nimport { normalizeStartEndAngle, polarToCartesian } from '../../util/math';\nimport { isSpecValueWithScale } from '../../util/scale';\nimport { field } from '../../util/object';\nimport type { IModelLayoutOption } from '../../model/interface';\nimport { PolarSeries } from '../polar/polar';\nimport type { IMark } from '../../mark/interface';\nimport { MarkTypeEnum } from '../../mark/interface/type';\nimport type { IArcMark } from '../../mark/arc';\nimport type { ITextMark } from '../../mark/text';\nimport type { IPathMark } from '../../mark/path';\nimport type { IArcSeries, SeriesMarkMap } from '../interface';\nimport { SeriesMarkNameEnum, SeriesTypeEnum } from '../interface/type';\nimport type { IPieOpt } from '../../data/transforms/pie';\n// eslint-disable-next-line no-duplicate-imports\nimport { pie } from '../../data/transforms/pie';\nimport { registerDataSetInstanceTransform } from '../../data/register';\nimport type { IPieAnimationParams, PieAppearPreset } from './animation/animation';\nimport { registerPieAnimation } from './animation/animation';\nimport { animationConfig, shouldMarkDoMorph, userAnimationConfig } from '../../animation/utils';\nimport { AnimationStateEnum } from '../../animation/interface';\nimport type { IBasePieSeriesSpec, IPieSeriesSpec } from './interface';\nimport { SeriesData } from '../base/series-data';\nimport type { IStateAnimateSpec } from '../../animation/spec';\nimport type { IAnimationTypeConfig } from '@visactor/vgrammar-core';\nimport { centerOffsetConfig } from './animation/centerOffset';\nimport { registerArcMark } from '../../mark/arc';\nimport { pieSeriesMark } from './constant';\nimport { Factory } from '../../core/factory';\nimport { isNil } from '@visactor/vutils';\nimport { PieSeriesSpecTransformer } from './pie-transformer';\n\nexport class BasePieSeries<T extends IBasePieSeriesSpec> extends PolarSeries<T> implements IArcSeries {\n static readonly transformerConstructor = PieSeriesSpecTransformer as any;\n readonly transformerConstructor = PieSeriesSpecTransformer;\n\n protected _pieMarkName: SeriesMarkNameEnum = SeriesMarkNameEnum.pie;\n protected _pieMarkType: MarkTypeEnum = MarkTypeEnum.arc;\n\n static readonly mark: SeriesMarkMap = pieSeriesMark;\n\n protected _viewDataLabel!: SeriesData;\n\n // 饼图渲染不依赖于极坐标系轴,因此由 series 自己存储相关配置信息\n getCenter(): IPoint {\n const { width, height } = this._region.getLayoutRect();\n return {\n x: this._spec?.centerX ?? width / 2,\n y: this._spec?.centerY ?? height / 2\n };\n }\n protected _centerOffset!: number;\n\n protected _cornerRadius!: number;\n\n protected _startAngle: number = POLAR_START_RADIAN;\n protected _endAngle: number = POLAR_END_RADIAN;\n protected _padAngle!: number;\n\n protected _pieMark: IArcMark | null = null;\n protected _labelMark: ITextMark | null = null;\n protected _labelLineMark: IPathMark | null = null;\n\n protected _buildMarkAttributeContext() {\n super._buildMarkAttributeContext();\n // center\n this._markAttributeContext.getCenter = () => ({\n x: () => this.getCenter().x,\n y: () => this.getCenter().y\n });\n\n // angle scale\n this._markAttributeContext.startAngleScale = (datum: Datum) => this.startAngleScale(datum);\n this._markAttributeContext.endAngleScale = (datum: Datum) => this.endAngleScale(datum);\n }\n\n setAttrFromSpec(): void {\n super.setAttrFromSpec();\n this._centerOffset = this._spec.centerOffset ?? 0;\n this._cornerRadius = this._spec.cornerRadius ?? 0;\n\n const normalized = normalizeStartEndAngle(\n isValid(this._spec.startAngle) ? degreeToRadian(this._spec.startAngle) : this._startAngle,\n isValid(this._spec.endAngle) ? degreeToRadian(this._spec.endAngle) : this._endAngle\n );\n this._startAngle = normalized.startAngle;\n this._endAngle = normalized.endAngle;\n this._padAngle = isValid(this._spec.padAngle) ? degreeToRadian(this._spec.padAngle) : 0;\n\n // 值信息给角度,angleField 是为了兼容小组件用法,因为 spec 改造前已经开放了\n this.setAngleField(this._spec.valueField || this._spec.angleField);\n if (this._spec.categoryField) {\n this.setSeriesField(this._spec.categoryField);\n }\n this._radiusField = [];\n\n this._specAngleField = this._angleField.slice();\n this._specRadiusField = [];\n }\n\n initData() {\n super.initData();\n\n const viewData = this.getViewData();\n if (!viewData) {\n return;\n }\n\n registerDataSetInstanceTransform(this._dataSet, 'pie', pie);\n\n viewData.transform(\n {\n type: 'pie',\n options: {\n angleField: this._angleField[0],\n startAngle: this._startAngle,\n endAngle: this._endAngle,\n minAngle: isValid(this._spec.minAngle) ? degreeToRadian(this._spec.minAngle) : 0,\n asStartAngle: ARC_START_ANGLE,\n asEndAngle: ARC_END_ANGLE,\n asRatio: ARC_RATIO,\n asMiddleAngle: ARC_MIDDLE_ANGLE,\n asRadian: ARC_RADIAN,\n asQuadrant: ARC_QUADRANT,\n asK: ARC_K\n } as IPieOpt\n },\n false\n );\n\n const viewDataLabel = new DataView(this._dataSet, { name: `${PREFIX}_series_${this.id}_viewDataLabel` });\n viewDataLabel.parse([this.getViewData()], {\n type: 'dataview'\n });\n\n this._viewDataLabel = new SeriesData(this._option, viewDataLabel);\n }\n\n initMark(): void {\n this._pieMark = this._createMark(\n {\n ...BasePieSeries.mark.pie,\n name: this._pieMarkName,\n type: this._pieMarkType\n },\n {\n morph: shouldMarkDoMorph(this._spec, this._pieMarkName),\n defaultMorphElementKey: this._seriesField,\n key: DEFAULT_DATA_KEY,\n groupKey: this._seriesField,\n skipBeforeLayouted: true,\n isSeriesMark: true,\n customShape: this._spec.pie?.customShape,\n stateSort: this._spec.pie?.stateSort\n }\n ) as IArcMark;\n }\n\n private startAngleScale(datum: Datum) {\n return field(ARC_START_ANGLE)(datum);\n }\n\n private endAngleScale(datum: Datum) {\n return field(ARC_END_ANGLE)(datum);\n }\n\n initMarkStyle(): void {\n const pieMark = this._pieMark;\n if (pieMark) {\n this.setMarkStyle(\n pieMark,\n {\n x: () => this.getCenter().x,\n y: () => this.getCenter().y,\n fill: this.getColorAttribute(),\n outerRadius: isSpecValueWithScale(this._outerRadius)\n ? this._outerRadius\n : () => this.computeLayoutRadius() * this._outerRadius,\n innerRadius: isSpecValueWithScale(this._innerRadius)\n ? this._innerRadius\n : () => this.computeLayoutRadius() * this._innerRadius,\n cornerRadius: () => this.computeLayoutRadius() * this._cornerRadius,\n startAngle: datum => this.startAngleScale(datum),\n endAngle: datum => this.endAngleScale(datum),\n padAngle: this._padAngle,\n centerOffset: this._centerOffset\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n }\n\n initInteraction(): void {\n this._parseInteractionConfig(this._pieMark ? [this._pieMark] : []);\n }\n\n protected initTooltip() {\n super.initTooltip();\n\n this._pieMark && this._tooltipHelper.activeTriggerSet.mark.add(this._pieMark);\n }\n\n initMarkStyleWithSpec(mark?: IMark, spec?: any, key?: string): void {\n super.initMarkStyleWithSpec(mark, spec, key);\n if (mark.name === this._pieMarkName) {\n // radius 配置需要额外处理比例值\n const pieSpec = this.getSpec()[mark.name];\n if (pieSpec) {\n for (const state in pieSpec.state || {}) {\n this.setMarkStyle(mark, this.generateRadiusStyle(pieSpec.state[state]), state, AttributeLevel.User_Mark);\n }\n }\n }\n }\n\n initLabelMarkStyle(textMark: ITextMark) {\n if (!textMark) {\n return;\n }\n this.setMarkStyle(textMark, {\n visible: field(DEFAULT_LABEL_VISIBLE).bind(this),\n text: (datum: Datum) => {\n return datum[this.getDimensionField()[0]];\n },\n fill: this.getColorAttribute(),\n z: this.dataToPositionZ.bind(this)\n });\n }\n\n afterInitMark(): void {\n super.afterInitMark();\n }\n\n initEvent(): void {\n super.initEvent();\n this._viewDataLabel.getDataView()?.target.addListener('change', this.viewDataLabelUpdate.bind(this));\n }\n\n // 饼图不支持分组\n initGroups() {\n return;\n }\n\n /**\n * @override\n * @param ctx\n */\n onLayoutEnd(ctx: IModelLayoutOption): void {\n this._viewDataLabel.getDataView().reRunAllTransform();\n this.onMarkPositionUpdate();\n super.onLayoutEnd(ctx);\n }\n\n getDimensionField(): string[] {\n return this._seriesField ? [this._seriesField] : [];\n }\n getMeasureField(): string[] {\n return this._specAngleField;\n }\n\n private viewDataLabelUpdate() {\n this.event.emit(ChartEvent.viewDataLabelUpdate, { model: this });\n this._viewDataLabel.updateData();\n }\n\n protected generateRadiusStyle(spec: any) {\n if (!spec) {\n return;\n }\n const style: any = {};\n spec.outerRadius && (style.outerRadius = () => this.computeLayoutRadius() * spec.outerRadius);\n spec.innerRadius && (style.innerRadius = () => this.computeLayoutRadius() * spec.innerRadius);\n spec.cornerRadius && (style.cornerRadius = () => this.computeLayoutRadius() * spec.cornerRadius);\n return style;\n }\n\n protected computeLayoutRadius() {\n const { width, height } = this._region.getLayoutRect();\n return Math.min(width / 2, height / 2);\n }\n\n computeCenter(datum: Datum): IPoint {\n return {\n x: this._pieMark.getAttribute('x', datum, 'normal') as number,\n y: this._pieMark.getAttribute('y', datum, 'normal') as number\n };\n }\n\n getRadius(state: StateValueType = 'normal'): number {\n const styleRadius =\n state === 'normal'\n ? this.getSpec()[this._pieMark?.name || 'pie']?.style?.outerRadius\n : this.getSpec()[this._pieMark?.name || 'pie']?.state?.[state]?.outerRadius;\n return styleRadius ?? this._outerRadius;\n }\n\n getInnerRadius(state: StateValueType = 'normal'): number {\n const styleRadius =\n state === 'normal'\n ? this.getSpec()[this._pieMark?.name || 'pie']?.style?.innerRadius\n : this.getSpec()[this._pieMark?.name || 'pie']?.state?.[state]?.innerRadius;\n return styleRadius ?? this._innerRadius;\n }\n\n computeRadius(r: number, k?: number): number {\n return this.computeLayoutRadius() * r * (isNil(k) ? 1 : k) + this._centerOffset;\n }\n\n computeDatumRadius(datum: Datum, state?: string): number {\n return this.computeLayoutRadius() * this.getRadius(state) + this._centerOffset;\n }\n\n _compareSpec(spec: T, prevSpec: T, ignoreCheckKeys?: { [key: string]: true }) {\n ignoreCheckKeys = ignoreCheckKeys ?? { data: true };\n ignoreCheckKeys.centerX = true;\n ignoreCheckKeys.centerX = true;\n ignoreCheckKeys.centerY = true;\n ignoreCheckKeys.centerOffset = true;\n ignoreCheckKeys.radius = true;\n ignoreCheckKeys.innerRadius = true;\n ignoreCheckKeys.cornerRadius = true;\n ignoreCheckKeys.startAngle = true;\n ignoreCheckKeys.endAngle = true;\n ignoreCheckKeys.padAngle = true;\n const { centerX, centerY, centerOffset, radius, innerRadius, cornerRadius, startAngle, endAngle, padAngle } =\n prevSpec;\n const result = super._compareSpec(spec, prevSpec, ignoreCheckKeys);\n spec = spec ?? ({} as T);\n if (\n spec.centerY !== centerY ||\n spec.centerX !== centerX ||\n spec.centerOffset !== centerOffset ||\n spec.radius !== radius ||\n spec.innerRadius !== innerRadius ||\n spec.cornerRadius !== cornerRadius ||\n spec.startAngle !== startAngle ||\n spec.endAngle !== endAngle ||\n spec.padAngle !== padAngle\n ) {\n result.reRender = true;\n result.change = true;\n }\n return result;\n }\n\n computeDatumInnerRadius(datum: Datum, state?: string): number {\n return this.computeLayoutRadius() * this.getInnerRadius(state) + this._centerOffset;\n }\n\n dataToPosition(datum: Datum, checkInViewData?: boolean): IPoint | null {\n const angle = datum[ARC_MIDDLE_ANGLE];\n if (isNil(angle)) {\n return null;\n }\n if (checkInViewData && !this.isDatumInViewData(datum)) {\n return null;\n }\n const radius = this.computeDatumRadius(datum);\n const center = this.computeCenter(datum);\n const delta = polarToCartesian({ angle, radius });\n return { x: center.x + delta.x, y: center.y + delta.y };\n }\n\n dataToCentralPosition = (datum: Datum): IPoint | null => {\n // 和 PieSeries.dataToPosition 实现不同,这里考虑了美观性,返回的位置是曲边梯形的中心\n const angle = datum[ARC_MIDDLE_ANGLE];\n if (isNil(angle)) {\n return null;\n }\n const radius = this.computeDatumRadius(datum);\n const innerRadius = this.computeDatumInnerRadius(datum);\n const center = this.computeCenter(datum);\n const delta = polarToCartesian({ angle, radius: (radius + innerRadius) / 2 });\n return { x: center.x + delta.x, y: center.y + delta.y };\n };\n\n initAnimation() {\n const animationParams: IPieAnimationParams = {\n growFrom: (datum, element, state) => {\n if (state === AnimationStateEnum.appear) {\n return this._startAngle;\n }\n if (state === AnimationStateEnum.disappear) {\n return this._endAngle;\n }\n\n const outState = [AnimationStateEnum.disappear, AnimationStateEnum.exit];\n const markElements = element.mark.elements;\n\n const data = datum;\n const dataIndex = data?.[DEFAULT_DATA_INDEX];\n\n // 当前 mark 在上个状态是否处于第一个\n if (markElements.find(e => e.data[0]?.[DEFAULT_DATA_INDEX] < dataIndex) === undefined) {\n return this._startAngle;\n }\n // 当前 mark 在上个状态是否处于最后一个\n if (markElements.find(e => e.data[0]?.[DEFAULT_DATA_INDEX] > dataIndex) === undefined) {\n return this._endAngle;\n }\n\n // 扇形不在边缘时,获取扇形生长点:获取相邻状态下相邻扇形的边缘\n const prevMarkElement = [...markElements].reverse().find(e => e.data[0]?.[DEFAULT_DATA_INDEX] < dataIndex);\n\n if (outState.includes(state)) {\n return prevMarkElement?.getNextGraphicAttributes()?.endAngle;\n }\n return prevMarkElement?.getGraphicAttribute('endAngle', true);\n }\n };\n const appearPreset = (this._spec.animationAppear as IStateAnimateSpec<PieAppearPreset>)?.preset;\n\n if (this._pieMark) {\n const pieAnimationConfig = animationConfig(\n Factory.getAnimationInKey('pie')?.(animationParams, appearPreset),\n userAnimationConfig(SeriesMarkNameEnum.pie, this._spec, this._markAttributeContext)\n );\n\n if (pieAnimationConfig.normal && (pieAnimationConfig.normal as IAnimationTypeConfig).type) {\n pieAnimationConfig.normal = centerOffsetConfig(\n this._pieMark,\n pieAnimationConfig.normal as IAnimationTypeConfig\n );\n }\n\n this._pieMark.setAnimationConfig(pieAnimationConfig);\n }\n }\n\n getDefaultShapeType() {\n return 'circle';\n }\n\n getGroupFields(): string[] {\n // do nothing\n return [];\n }\n\n getStackGroupFields(): string[] {\n // do nothing\n return [];\n }\n\n getStackValueField(): string {\n // do nothing\n return '';\n }\n\n // make sure this function fast\n protected _noAnimationDataKey(datum: Datum, index: number) {\n return index;\n }\n\n getActiveMarks(): IMark[] {\n return [this._pieMark];\n }\n}\n\nexport class PieSeries<T extends IPieSeriesSpec = IPieSeriesSpec> extends BasePieSeries<T> implements IArcSeries {\n static readonly type: string = SeriesTypeEnum.pie;\n type = SeriesTypeEnum.pie;\n}\n\nexport const registerPieSeries = () => {\n registerArcMark();\n registerPieAnimation();\n Factory.registerSeries(PieSeries.type, PieSeries);\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/series/pie/pie.ts"],"names":[],"mappings":"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","file":"pie.js","sourcesContent":["/* eslint-disable no-duplicate-imports */\nimport { degreeToRadian, isValid } from '@visactor/vutils';\nimport { DataView } from '@visactor/vdataset';\nimport {\n AttributeLevel,\n ARC_START_ANGLE,\n ARC_END_ANGLE,\n ARC_RATIO,\n ARC_MIDDLE_ANGLE,\n ARC_RADIAN,\n ARC_QUADRANT,\n ARC_K,\n PREFIX,\n DEFAULT_LABEL_VISIBLE,\n POLAR_START_RADIAN,\n POLAR_END_RADIAN,\n DEFAULT_DATA_INDEX,\n ChartEvent,\n DEFAULT_DATA_KEY\n} from '../../constant';\nimport type { IPoint, Datum, StateValueType } from '../../typings';\nimport { normalizeStartEndAngle } from '../../util/math';\nimport { isSpecValueWithScale } from '../../util/scale';\nimport { field } from '../../util/object';\nimport type { IModelLayoutOption } from '../../model/interface';\nimport { PolarSeries } from '../polar/polar';\nimport type { IMark } from '../../mark/interface';\nimport { MarkTypeEnum } from '../../mark/interface/type';\nimport type { IArcMark } from '../../mark/arc';\nimport type { ITextMark } from '../../mark/text';\nimport type { IPathMark } from '../../mark/path';\nimport type { IArcSeries, SeriesMarkMap } from '../interface';\nimport { SeriesMarkNameEnum, SeriesTypeEnum } from '../interface/type';\nimport type { IPieOpt } from '../../data/transforms/pie';\n// eslint-disable-next-line no-duplicate-imports\nimport { pie } from '../../data/transforms/pie';\nimport { registerDataSetInstanceTransform } from '../../data/register';\nimport type { IPieAnimationParams, PieAppearPreset } from './animation/animation';\nimport { registerPieAnimation } from './animation/animation';\nimport { animationConfig, shouldMarkDoMorph, userAnimationConfig } from '../../animation/utils';\nimport { AnimationStateEnum } from '../../animation/interface';\nimport type { IBasePieSeriesSpec, IPieSeriesSpec } from './interface';\nimport { SeriesData } from '../base/series-data';\nimport type { IStateAnimateSpec } from '../../animation/spec';\nimport type { IAnimationTypeConfig } from '@visactor/vgrammar-core';\nimport { centerOffsetConfig } from './animation/centerOffset';\nimport { registerArcMark } from '../../mark/arc';\nimport { pieSeriesMark } from './constant';\nimport { Factory } from '../../core/factory';\nimport { isNil, polarToCartesian } from '@visactor/vutils';\nimport { PieSeriesSpecTransformer } from './pie-transformer';\n\nexport class BasePieSeries<T extends IBasePieSeriesSpec> extends PolarSeries<T> implements IArcSeries {\n static readonly transformerConstructor = PieSeriesSpecTransformer as any;\n readonly transformerConstructor = PieSeriesSpecTransformer;\n\n protected _pieMarkName: SeriesMarkNameEnum = SeriesMarkNameEnum.pie;\n protected _pieMarkType: MarkTypeEnum = MarkTypeEnum.arc;\n\n static readonly mark: SeriesMarkMap = pieSeriesMark;\n\n protected _viewDataLabel!: SeriesData;\n\n // 饼图渲染不依赖于极坐标系轴,因此由 series 自己存储相关配置信息\n getCenter(): IPoint {\n const { width, height } = this._region.getLayoutRect();\n return {\n x: this._spec?.centerX ?? width / 2,\n y: this._spec?.centerY ?? height / 2\n };\n }\n protected _centerOffset!: number;\n\n protected _cornerRadius!: number;\n\n protected _startAngle: number = POLAR_START_RADIAN;\n protected _endAngle: number = POLAR_END_RADIAN;\n protected _padAngle!: number;\n\n protected _pieMark: IArcMark | null = null;\n protected _labelMark: ITextMark | null = null;\n protected _labelLineMark: IPathMark | null = null;\n\n protected _buildMarkAttributeContext() {\n super._buildMarkAttributeContext();\n // center\n this._markAttributeContext.getCenter = () => ({\n x: () => this.getCenter().x,\n y: () => this.getCenter().y\n });\n\n // angle scale\n this._markAttributeContext.startAngleScale = (datum: Datum) => this.startAngleScale(datum);\n this._markAttributeContext.endAngleScale = (datum: Datum) => this.endAngleScale(datum);\n }\n\n setAttrFromSpec(): void {\n super.setAttrFromSpec();\n this._centerOffset = this._spec.centerOffset ?? 0;\n this._cornerRadius = this._spec.cornerRadius ?? 0;\n\n const normalized = normalizeStartEndAngle(\n isValid(this._spec.startAngle) ? degreeToRadian(this._spec.startAngle) : this._startAngle,\n isValid(this._spec.endAngle) ? degreeToRadian(this._spec.endAngle) : this._endAngle\n );\n this._startAngle = normalized.startAngle;\n this._endAngle = normalized.endAngle;\n this._padAngle = isValid(this._spec.padAngle) ? degreeToRadian(this._spec.padAngle) : 0;\n\n // 值信息给角度,angleField 是为了兼容小组件用法,因为 spec 改造前已经开放了\n this.setAngleField(this._spec.valueField || this._spec.angleField);\n if (this._spec.categoryField) {\n this.setSeriesField(this._spec.categoryField);\n }\n this._radiusField = [];\n\n this._specAngleField = this._angleField.slice();\n this._specRadiusField = [];\n }\n\n initData() {\n super.initData();\n\n const viewData = this.getViewData();\n if (!viewData) {\n return;\n }\n\n registerDataSetInstanceTransform(this._dataSet, 'pie', pie);\n\n viewData.transform(\n {\n type: 'pie',\n options: {\n angleField: this._angleField[0],\n startAngle: this._startAngle,\n endAngle: this._endAngle,\n minAngle: isValid(this._spec.minAngle) ? degreeToRadian(this._spec.minAngle) : 0,\n asStartAngle: ARC_START_ANGLE,\n asEndAngle: ARC_END_ANGLE,\n asRatio: ARC_RATIO,\n asMiddleAngle: ARC_MIDDLE_ANGLE,\n asRadian: ARC_RADIAN,\n asQuadrant: ARC_QUADRANT,\n asK: ARC_K\n } as IPieOpt\n },\n false\n );\n\n const viewDataLabel = new DataView(this._dataSet, { name: `${PREFIX}_series_${this.id}_viewDataLabel` });\n viewDataLabel.parse([this.getViewData()], {\n type: 'dataview'\n });\n\n this._viewDataLabel = new SeriesData(this._option, viewDataLabel);\n }\n\n initMark(): void {\n this._pieMark = this._createMark(\n {\n ...BasePieSeries.mark.pie,\n name: this._pieMarkName,\n type: this._pieMarkType\n },\n {\n morph: shouldMarkDoMorph(this._spec, this._pieMarkName),\n defaultMorphElementKey: this._seriesField,\n key: DEFAULT_DATA_KEY,\n groupKey: this._seriesField,\n skipBeforeLayouted: true,\n isSeriesMark: true,\n customShape: this._spec.pie?.customShape,\n stateSort: this._spec.pie?.stateSort\n }\n ) as IArcMark;\n }\n\n private startAngleScale(datum: Datum) {\n return field(ARC_START_ANGLE)(datum);\n }\n\n private endAngleScale(datum: Datum) {\n return field(ARC_END_ANGLE)(datum);\n }\n\n initMarkStyle(): void {\n const pieMark = this._pieMark;\n if (pieMark) {\n this.setMarkStyle(\n pieMark,\n {\n x: () => this.getCenter().x,\n y: () => this.getCenter().y,\n fill: this.getColorAttribute(),\n outerRadius: isSpecValueWithScale(this._outerRadius)\n ? this._outerRadius\n : () => this._computeLayoutRadius() * this._outerRadius,\n innerRadius: isSpecValueWithScale(this._innerRadius)\n ? this._innerRadius\n : () => this._computeLayoutRadius() * this._innerRadius,\n cornerRadius: () => this._computeLayoutRadius() * this._cornerRadius,\n startAngle: datum => this.startAngleScale(datum),\n endAngle: datum => this.endAngleScale(datum),\n padAngle: this._padAngle,\n centerOffset: this._centerOffset\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n }\n\n initInteraction(): void {\n this._parseInteractionConfig(this._pieMark ? [this._pieMark] : []);\n }\n\n protected initTooltip() {\n super.initTooltip();\n\n this._pieMark && this._tooltipHelper.activeTriggerSet.mark.add(this._pieMark);\n }\n\n initMarkStyleWithSpec(mark?: IMark, spec?: any, key?: string): void {\n super.initMarkStyleWithSpec(mark, spec, key);\n if (mark.name === this._pieMarkName) {\n // radius 配置需要额外处理比例值\n const pieSpec = this.getSpec()[mark.name];\n if (pieSpec) {\n for (const state in pieSpec.state || {}) {\n this.setMarkStyle(mark, this.generateRadiusStyle(pieSpec.state[state]), state, AttributeLevel.User_Mark);\n }\n }\n }\n }\n\n initLabelMarkStyle(textMark: ITextMark) {\n if (!textMark) {\n return;\n }\n this.setMarkStyle(textMark, {\n visible: field(DEFAULT_LABEL_VISIBLE).bind(this),\n text: (datum: Datum) => {\n return datum[this.getDimensionField()[0]];\n },\n fill: this.getColorAttribute(),\n z: this.dataToPositionZ.bind(this)\n });\n }\n\n afterInitMark(): void {\n super.afterInitMark();\n }\n\n initEvent(): void {\n super.initEvent();\n this._viewDataLabel.getDataView()?.target.addListener('change', this.viewDataLabelUpdate.bind(this));\n }\n\n // 饼图不支持分组\n initGroups() {\n return;\n }\n\n /**\n * @override\n * @param ctx\n */\n onLayoutEnd(ctx: IModelLayoutOption): void {\n this._viewDataLabel.getDataView().reRunAllTransform();\n this.onMarkPositionUpdate();\n super.onLayoutEnd(ctx);\n }\n\n getDimensionField(): string[] {\n return this._seriesField ? [this._seriesField] : [];\n }\n getMeasureField(): string[] {\n return this._specAngleField;\n }\n\n private viewDataLabelUpdate() {\n this.event.emit(ChartEvent.viewDataLabelUpdate, { model: this });\n this._viewDataLabel.updateData();\n }\n\n protected generateRadiusStyle(spec: any) {\n if (!spec) {\n return;\n }\n const style: any = {};\n spec.outerRadius && (style.outerRadius = () => this._computeLayoutRadius() * spec.outerRadius);\n spec.innerRadius && (style.innerRadius = () => this._computeLayoutRadius() * spec.innerRadius);\n spec.cornerRadius && (style.cornerRadius = () => this._computeLayoutRadius() * spec.cornerRadius);\n return style;\n }\n\n computeCenter(datum: Datum): IPoint {\n return {\n x: this._pieMark.getAttribute('x', datum, 'normal') as number,\n y: this._pieMark.getAttribute('y', datum, 'normal') as number\n };\n }\n\n getRadius(state: StateValueType = 'normal'): number {\n const styleRadius =\n state === 'normal'\n ? this.getSpec()[this._pieMark?.name || 'pie']?.style?.outerRadius\n : this.getSpec()[this._pieMark?.name || 'pie']?.state?.[state]?.outerRadius;\n return styleRadius ?? this._outerRadius;\n }\n\n getInnerRadius(state: StateValueType = 'normal'): number {\n const styleRadius =\n state === 'normal'\n ? this.getSpec()[this._pieMark?.name || 'pie']?.style?.innerRadius\n : this.getSpec()[this._pieMark?.name || 'pie']?.state?.[state]?.innerRadius;\n return styleRadius ?? this._innerRadius;\n }\n\n computeRadius(r: number, k?: number): number {\n return this._computeLayoutRadius() * r * (isNil(k) ? 1 : k) + this._centerOffset;\n }\n\n computeDatumRadius(datum: Datum, state?: string): number {\n return this._computeLayoutRadius() * this.getRadius(state) + this._centerOffset;\n }\n\n _compareSpec(spec: T, prevSpec: T, ignoreCheckKeys?: { [key: string]: true }) {\n ignoreCheckKeys = ignoreCheckKeys ?? { data: true };\n ignoreCheckKeys.centerX = true;\n ignoreCheckKeys.centerX = true;\n ignoreCheckKeys.centerY = true;\n ignoreCheckKeys.centerOffset = true;\n ignoreCheckKeys.radius = true;\n ignoreCheckKeys.innerRadius = true;\n ignoreCheckKeys.cornerRadius = true;\n ignoreCheckKeys.startAngle = true;\n ignoreCheckKeys.endAngle = true;\n ignoreCheckKeys.padAngle = true;\n const { centerX, centerY, centerOffset, radius, innerRadius, cornerRadius, startAngle, endAngle, padAngle } =\n prevSpec;\n const result = super._compareSpec(spec, prevSpec, ignoreCheckKeys);\n spec = spec ?? ({} as T);\n if (\n spec.centerY !== centerY ||\n spec.centerX !== centerX ||\n spec.centerOffset !== centerOffset ||\n spec.radius !== radius ||\n spec.innerRadius !== innerRadius ||\n spec.cornerRadius !== cornerRadius ||\n spec.startAngle !== startAngle ||\n spec.endAngle !== endAngle ||\n spec.padAngle !== padAngle\n ) {\n result.reRender = true;\n result.change = true;\n }\n return result;\n }\n\n computeDatumInnerRadius(datum: Datum, state?: string): number {\n return this._computeLayoutRadius() * this.getInnerRadius(state) + this._centerOffset;\n }\n\n dataToPosition(datum: Datum, checkInViewData?: boolean): IPoint | null {\n const angle = datum[ARC_MIDDLE_ANGLE];\n if (isNil(angle)) {\n return null;\n }\n if (checkInViewData && !this.isDatumInViewData(datum)) {\n return null;\n }\n const radius = this.computeDatumRadius(datum);\n const center = this.computeCenter(datum);\n\n return polarToCartesian(center, radius, angle);\n }\n\n dataToCentralPosition = (datum: Datum): IPoint | null => {\n // 和 PieSeries.dataToPosition 实现不同,这里考虑了美观性,返回的位置是曲边梯形的中心\n const angle = datum[ARC_MIDDLE_ANGLE];\n if (isNil(angle)) {\n return null;\n }\n const radius = this.computeDatumRadius(datum);\n const innerRadius = this.computeDatumInnerRadius(datum);\n const center = this.computeCenter(datum);\n\n return polarToCartesian(center, (radius + innerRadius) / 2, angle);\n };\n\n initAnimation() {\n const animationParams: IPieAnimationParams = {\n growFrom: (datum, element, state) => {\n if (state === AnimationStateEnum.appear) {\n return this._startAngle;\n }\n if (state === AnimationStateEnum.disappear) {\n return this._endAngle;\n }\n\n const outState = [AnimationStateEnum.disappear, AnimationStateEnum.exit];\n const markElements = element.mark.elements;\n\n const data = datum;\n const dataIndex = data?.[DEFAULT_DATA_INDEX];\n\n // 当前 mark 在上个状态是否处于第一个\n if (markElements.find(e => e.data[0]?.[DEFAULT_DATA_INDEX] < dataIndex) === undefined) {\n return this._startAngle;\n }\n // 当前 mark 在上个状态是否处于最后一个\n if (markElements.find(e => e.data[0]?.[DEFAULT_DATA_INDEX] > dataIndex) === undefined) {\n return this._endAngle;\n }\n\n // 扇形不在边缘时,获取扇形生长点:获取相邻状态下相邻扇形的边缘\n const prevMarkElement = [...markElements].reverse().find(e => e.data[0]?.[DEFAULT_DATA_INDEX] < dataIndex);\n\n if (outState.includes(state)) {\n return prevMarkElement?.getNextGraphicAttributes()?.endAngle;\n }\n return prevMarkElement?.getGraphicAttribute('endAngle', true);\n }\n };\n const appearPreset = (this._spec.animationAppear as IStateAnimateSpec<PieAppearPreset>)?.preset;\n\n if (this._pieMark) {\n const pieAnimationConfig = animationConfig(\n Factory.getAnimationInKey('pie')?.(animationParams, appearPreset),\n userAnimationConfig(SeriesMarkNameEnum.pie, this._spec, this._markAttributeContext)\n );\n\n if (pieAnimationConfig.normal && (pieAnimationConfig.normal as IAnimationTypeConfig).type) {\n pieAnimationConfig.normal = centerOffsetConfig(\n this._pieMark,\n pieAnimationConfig.normal as IAnimationTypeConfig\n );\n }\n\n this._pieMark.setAnimationConfig(pieAnimationConfig);\n }\n }\n\n getDefaultShapeType() {\n return 'circle';\n }\n\n getGroupFields(): string[] {\n // do nothing\n return [];\n }\n\n getStackGroupFields(): string[] {\n // do nothing\n return [];\n }\n\n getStackValueField(): string {\n // do nothing\n return '';\n }\n\n // make sure this function fast\n protected _noAnimationDataKey(datum: Datum, index: number) {\n return index;\n }\n\n getActiveMarks(): IMark[] {\n return [this._pieMark];\n }\n}\n\nexport class PieSeries<T extends IPieSeriesSpec = IPieSeriesSpec> extends BasePieSeries<T> implements IArcSeries {\n static readonly type: string = SeriesTypeEnum.pie;\n type = SeriesTypeEnum.pie;\n}\n\nexport const registerPieSeries = () => {\n registerArcMark();\n registerPieAnimation();\n Factory.registerSeries(PieSeries.type, PieSeries);\n};\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ISeriesSpec } from '../../typings/spec/common';
|
|
2
2
|
export interface IPolarSeriesSpec extends ISeriesSpec {
|
|
3
|
-
centerX?: number;
|
|
4
|
-
centerY?: number;
|
|
3
|
+
centerX?: number | string;
|
|
4
|
+
centerY?: number | string;
|
|
5
5
|
outerRadius?: number;
|
|
6
6
|
innerRadius?: number;
|
|
7
7
|
startAngle?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/series/polar/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { ISeriesSpec } from '../../typings/spec/common';\n\nexport interface IPolarSeriesSpec extends ISeriesSpec {\n
|
|
1
|
+
{"version":3,"sources":["../src/series/polar/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { ISeriesSpec } from '../../typings/spec/common';\n\nexport interface IPolarSeriesSpec extends ISeriesSpec {\n /**\n * 中心点 x 坐标\n * @since 1.11.2 支持百分比字符串\n **/\n centerX?: number | string;\n /**\n * 中心点 y 坐标\n * @since 1.11.2 支持百分比字符串\n **/\n centerY?: number | string;\n\n /**\n * 扇区外半径\n * @default 0.6\n */\n outerRadius?: number;\n\n /**\n * 扇区内半径\n */\n innerRadius?: number;\n\n /** 扇区起始角度 */\n startAngle?: number;\n /** 扇区结束角度 */\n endAngle?: number;\n\n /** 类别字段 */\n categoryField?: string | string[];\n\n /** 数值字段 */\n valueField?: string | string[];\n\n /**\n * @deprecated 请使用 `valueField`\n */\n radiusField?: string | string[];\n\n /**\n * @deprecated 请使用 `categoryField`\n */\n angleField?: string | string[];\n\n /**\n * 扇区半径\n * @default 0.6\n * @deprecated use outerRadius instead\n */\n radius?: number;\n\n /** 是否将数据按照数轴排序\n * @default false\n * @since 1.3.0\n */\n sortDataByAxis?: boolean;\n}\n\nexport interface IPolarSeriesTheme {\n /**\n * @deprecated use outerRadius instead\n */\n radius?: number;\n outerRadius?: number;\n innerRadius?: number;\n startAngle?: number;\n endAngle?: number;\n}\n"]}
|
|
@@ -132,6 +132,8 @@ export class PolarSeries extends BaseSeries {
|
|
|
132
132
|
super.afterInitMark();
|
|
133
133
|
}
|
|
134
134
|
_computeLayoutRadius() {
|
|
135
|
+
const axisHelper = this._angleAxisHelper || this._radiusAxisHelper;
|
|
136
|
+
if (axisHelper) return axisHelper.layoutRadius();
|
|
135
137
|
const {width: width, height: height} = this._region.getLayoutRect();
|
|
136
138
|
return Math.min(width / 2, height / 2);
|
|
137
139
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/series/polar/polar.ts"],"names":[],"mappings":"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","file":"polar.js","sourcesContent":["import type { IBaseScale } from '@visactor/vscale';\nimport type { IPoint, IPolarPoint } from '../../typings/coordinate';\nimport type { IPolarSeries } from '../interface';\nimport { array, isValid, isNil } from '@visactor/vutils';\nimport { couldBeValidNumber } from '../../util/type';\nimport type { IPolarAxisHelper } from '../../component/axis/polar/interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { isContinuous } from '@visactor/vscale';\nimport { POLAR_DEFAULT_RADIUS } from '../../constant/polar';\nimport { BaseSeries } from '../base/base-series';\nimport type { IPolarSeriesSpec } from './interface';\nimport type { Datum, StringOrNumber } from '../../typings';\nimport { sortDataInAxisHelper } from '../util/utils';\nimport { ChartEvent } from '../../constant';\nimport { registerDataSetInstanceTransform } from '../../data/register';\nimport { invalidTravel } from '../../data/transforms/invalid-travel';\n\nexport abstract class PolarSeries<T extends IPolarSeriesSpec = IPolarSeriesSpec>\n extends BaseSeries<T>\n implements IPolarSeries\n{\n readonly coordinate: 'polar' = 'polar';\n\n protected _outerRadius: number = POLAR_DEFAULT_RADIUS;\n public get outerRadius() {\n return this._outerRadius;\n }\n\n protected _innerRadius: number = 0;\n public get innerRadius() {\n return this._innerRadius;\n }\n\n protected _angleField: string[] = [];\n getAngleField() {\n return this._angleField;\n }\n setAngleField(f: string | string[]): string[] {\n this._angleField = isValid(f) ? array(f) : [];\n return this._angleField;\n }\n\n protected _radiusField: string[] = [];\n getRadiusField() {\n return this._radiusField;\n }\n setRadiusField(f: string | string[]): string[] {\n this._radiusField = isValid(f) ? array(f) : [];\n return this._radiusField;\n }\n\n protected _specAngleField: string[];\n protected _specRadiusField: string[];\n\n protected _innerRadiusField!: string[];\n public get innerRadiusField() {\n return this._innerRadiusField;\n }\n setInnerRadiusField(f: string | string[]): string[] {\n this._innerRadiusField = array(f);\n return this._innerRadiusField;\n }\n\n protected _radiusScale!: IBaseScale;\n public get radiusScale() {\n return this._radiusScale;\n }\n setRadiusScale(s: IBaseScale) {\n this._radiusScale = s;\n return s;\n }\n\n protected _angleScale!: IBaseScale;\n public get angleScale() {\n return this._angleScale;\n }\n setAngleScale(s: IBaseScale) {\n this._angleScale = s;\n return s;\n }\n\n private _angleAxisHelper!: IPolarAxisHelper;\n public get angleAxisHelper() {\n return this._angleAxisHelper;\n }\n public set angleAxisHelper(h: IPolarAxisHelper) {\n this._angleAxisHelper = h;\n this.onAngleAxisHelperUpdate();\n }\n\n private _radiusAxisHelper!: IPolarAxisHelper;\n public get radiusAxisHelper() {\n return this._radiusAxisHelper;\n }\n public set radiusAxisHelper(h: IPolarAxisHelper) {\n this._radiusAxisHelper = h;\n this.onRadiusAxisHelperUpdate();\n }\n\n protected _sortDataByAxis: boolean = false;\n get sortDataByAxis() {\n return this._sortDataByAxis;\n }\n\n protected _buildMarkAttributeContext() {\n super._buildMarkAttributeContext();\n // position\n this._markAttributeContext.valueToPosition = this.valueToPosition.bind(this);\n this._markAttributeContext.getCenter = () => this.angleAxisHelper.center();\n this._markAttributeContext.getLayoutRadius = () => this._computeLayoutRadius();\n }\n\n valueToPosition(angleValue: StringOrNumber | StringOrNumber[], radiusValue: StringOrNumber | StringOrNumber[]) {\n if (isNil(angleValue) || isNil(radiusValue) || !this.angleAxisHelper || !this.radiusAxisHelper) {\n return { x: Number.NaN, y: Number.NaN };\n }\n const angle = this.angleAxisHelper.dataToPosition(array(angleValue));\n const radius = this.radiusAxisHelper.dataToPosition(array(radiusValue));\n // FIXME: 由于存在两个轴,这里的 坐标系转换逻辑会有点尬\n return this.angleAxisHelper.coordToPoint({ angle, radius });\n }\n\n dataToPosition(datum: Datum, checkInViewData?: boolean): IPoint {\n if (!datum || !this.angleAxisHelper || !this.radiusAxisHelper) {\n return null;\n }\n if (checkInViewData && !this.isDatumInViewData(datum)) {\n return null;\n }\n // FIXME: 由于存在两个轴,这里的 坐标系转换逻辑会有点尬\n return this.valueToPosition(\n this.getDatumPositionValues(datum, this._angleField),\n this.getDatumPositionValues(datum, this._radiusField)\n );\n }\n\n dataToPositionX(datum: Datum): number {\n return this.dataToPosition(datum)?.x;\n }\n\n dataToPositionY(datum: Datum): number {\n return this.dataToPosition(datum)?.y;\n }\n\n dataToPositionZ(datum: Datum): number {\n return 0;\n }\n\n // todo: 待实现\n positionToData(p: IPolarPoint): any {\n /* do nothing */\n }\n radiusToData(r: number): any {\n /* do nothing */\n }\n angleToData(a: number): any {\n /* do nothing */\n }\n\n getStatisticFields() {\n const fields: { key: string; operations: Array<'max' | 'min' | 'values'> }[] = [];\n if (this.radiusAxisHelper?.getScale) {\n this._radiusField.forEach(f => {\n const result: { key: string; operations: Array<'max' | 'min' | 'values'> } = { key: f, operations: [] };\n if (isContinuous(this.radiusAxisHelper.getScale(0).type)) {\n result.operations = ['max', 'min'];\n } else {\n result.operations = ['values'];\n }\n fields.push(result);\n });\n }\n if (this.angleAxisHelper?.getScale) {\n this._angleField.forEach(f => {\n const result: { key: string; operations: Array<'max' | 'min' | 'values'> } = { key: f, operations: [] };\n if (isContinuous(this.angleAxisHelper.getScale(0).type)) {\n result.operations = ['max', 'min'];\n } else {\n result.operations = ['values'];\n }\n fields.push(result);\n });\n }\n return fields;\n }\n\n setAttrFromSpec() {\n super.setAttrFromSpec();\n if (isValid(this._spec.outerRadius)) {\n this._outerRadius = this._spec.outerRadius;\n }\n if (isValid(this._spec.radius)) {\n // 优先使用outerRadius, 但要兼容spec.radius\n this._outerRadius = this._spec.radius;\n }\n if (isValid(this._spec.innerRadius)) {\n this._innerRadius = this._spec.innerRadius;\n }\n\n if (isValid(this._spec.sortDataByAxis)) {\n this._sortDataByAxis = this._spec.sortDataByAxis === true;\n }\n }\n\n onRadiusAxisHelperUpdate(): void {\n this.onMarkPositionUpdate();\n }\n onAngleAxisHelperUpdate(): void {\n this.onMarkPositionUpdate();\n }\n\n afterInitMark(): void {\n super.afterInitMark();\n }\n\n protected _computeLayoutRadius() {\n const { width, height } = this._region.getLayoutRect();\n return Math.min(width / 2, height / 2);\n }\n\n protected initEvent() {\n super.initEvent();\n // 通过轴事件来进行排序。轴的domain数据变化在系列的统计数据完成后\n if (this.sortDataByAxis) {\n this.event.on(\n ChartEvent.scaleDomainUpdate,\n {\n filter: param => param.model.id === this._angleAxisHelper?.getAxisId()\n },\n () => {\n // 只能排序,不能修改数据,此时已经在数据流的统计流程之后\n this._sortDataInAxisDomain();\n }\n );\n }\n }\n\n _sortDataInAxisDomain() {\n if (this.getViewData()?.latestData?.length) {\n sortDataInAxisHelper(this.angleAxisHelper, this._angleField[0], this.getViewData().latestData);\n }\n }\n\n protected getInvalidCheckFields() {\n const fields: string[] = [];\n\n if (this.angleAxisHelper.isContinuous) {\n this._angleField.forEach(f => {\n fields.push(f);\n });\n }\n\n if (this.radiusAxisHelper.isContinuous) {\n this._radiusField.forEach(f => {\n fields.push(f);\n });\n }\n return fields;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/series/polar/polar.ts"],"names":[],"mappings":"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","file":"polar.js","sourcesContent":["import type { IBaseScale } from '@visactor/vscale';\nimport type { IPoint, IPolarPoint } from '../../typings/coordinate';\nimport type { IPolarSeries } from '../interface';\nimport { array, isValid, isNil } from '@visactor/vutils';\nimport { couldBeValidNumber } from '../../util/type';\nimport type { IPolarAxisHelper } from '../../component/axis/polar/interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { isContinuous } from '@visactor/vscale';\nimport { POLAR_DEFAULT_RADIUS } from '../../constant/polar';\nimport { BaseSeries } from '../base/base-series';\nimport type { IPolarSeriesSpec } from './interface';\nimport type { Datum, StringOrNumber } from '../../typings';\nimport { sortDataInAxisHelper } from '../util/utils';\nimport { ChartEvent } from '../../constant';\nimport { registerDataSetInstanceTransform } from '../../data/register';\nimport { invalidTravel } from '../../data/transforms/invalid-travel';\n\nexport abstract class PolarSeries<T extends IPolarSeriesSpec = IPolarSeriesSpec>\n extends BaseSeries<T>\n implements IPolarSeries\n{\n readonly coordinate: 'polar' = 'polar';\n\n protected _outerRadius: number = POLAR_DEFAULT_RADIUS;\n public get outerRadius() {\n return this._outerRadius;\n }\n\n protected _innerRadius: number = 0;\n public get innerRadius() {\n return this._innerRadius;\n }\n\n protected _angleField: string[] = [];\n getAngleField() {\n return this._angleField;\n }\n setAngleField(f: string | string[]): string[] {\n this._angleField = isValid(f) ? array(f) : [];\n return this._angleField;\n }\n\n protected _radiusField: string[] = [];\n getRadiusField() {\n return this._radiusField;\n }\n setRadiusField(f: string | string[]): string[] {\n this._radiusField = isValid(f) ? array(f) : [];\n return this._radiusField;\n }\n\n protected _specAngleField: string[];\n protected _specRadiusField: string[];\n\n protected _innerRadiusField!: string[];\n public get innerRadiusField() {\n return this._innerRadiusField;\n }\n setInnerRadiusField(f: string | string[]): string[] {\n this._innerRadiusField = array(f);\n return this._innerRadiusField;\n }\n\n protected _radiusScale!: IBaseScale;\n public get radiusScale() {\n return this._radiusScale;\n }\n setRadiusScale(s: IBaseScale) {\n this._radiusScale = s;\n return s;\n }\n\n protected _angleScale!: IBaseScale;\n public get angleScale() {\n return this._angleScale;\n }\n setAngleScale(s: IBaseScale) {\n this._angleScale = s;\n return s;\n }\n\n private _angleAxisHelper!: IPolarAxisHelper;\n public get angleAxisHelper() {\n return this._angleAxisHelper;\n }\n public set angleAxisHelper(h: IPolarAxisHelper) {\n this._angleAxisHelper = h;\n this.onAngleAxisHelperUpdate();\n }\n\n private _radiusAxisHelper!: IPolarAxisHelper;\n public get radiusAxisHelper() {\n return this._radiusAxisHelper;\n }\n public set radiusAxisHelper(h: IPolarAxisHelper) {\n this._radiusAxisHelper = h;\n this.onRadiusAxisHelperUpdate();\n }\n\n protected _sortDataByAxis: boolean = false;\n get sortDataByAxis() {\n return this._sortDataByAxis;\n }\n\n protected _buildMarkAttributeContext() {\n super._buildMarkAttributeContext();\n // position\n this._markAttributeContext.valueToPosition = this.valueToPosition.bind(this);\n this._markAttributeContext.getCenter = () => this.angleAxisHelper.center();\n this._markAttributeContext.getLayoutRadius = () => this._computeLayoutRadius();\n }\n\n valueToPosition(angleValue: StringOrNumber | StringOrNumber[], radiusValue: StringOrNumber | StringOrNumber[]) {\n if (isNil(angleValue) || isNil(radiusValue) || !this.angleAxisHelper || !this.radiusAxisHelper) {\n return { x: Number.NaN, y: Number.NaN };\n }\n const angle = this.angleAxisHelper.dataToPosition(array(angleValue));\n const radius = this.radiusAxisHelper.dataToPosition(array(radiusValue));\n // FIXME: 由于存在两个轴,这里的 坐标系转换逻辑会有点尬\n return this.angleAxisHelper.coordToPoint({ angle, radius });\n }\n\n dataToPosition(datum: Datum, checkInViewData?: boolean): IPoint {\n if (!datum || !this.angleAxisHelper || !this.radiusAxisHelper) {\n return null;\n }\n if (checkInViewData && !this.isDatumInViewData(datum)) {\n return null;\n }\n // FIXME: 由于存在两个轴,这里的 坐标系转换逻辑会有点尬\n return this.valueToPosition(\n this.getDatumPositionValues(datum, this._angleField),\n this.getDatumPositionValues(datum, this._radiusField)\n );\n }\n\n dataToPositionX(datum: Datum): number {\n return this.dataToPosition(datum)?.x;\n }\n\n dataToPositionY(datum: Datum): number {\n return this.dataToPosition(datum)?.y;\n }\n\n dataToPositionZ(datum: Datum): number {\n return 0;\n }\n\n // todo: 待实现\n positionToData(p: IPolarPoint): any {\n /* do nothing */\n }\n radiusToData(r: number): any {\n /* do nothing */\n }\n angleToData(a: number): any {\n /* do nothing */\n }\n\n getStatisticFields() {\n const fields: { key: string; operations: Array<'max' | 'min' | 'values'> }[] = [];\n if (this.radiusAxisHelper?.getScale) {\n this._radiusField.forEach(f => {\n const result: { key: string; operations: Array<'max' | 'min' | 'values'> } = { key: f, operations: [] };\n if (isContinuous(this.radiusAxisHelper.getScale(0).type)) {\n result.operations = ['max', 'min'];\n } else {\n result.operations = ['values'];\n }\n fields.push(result);\n });\n }\n if (this.angleAxisHelper?.getScale) {\n this._angleField.forEach(f => {\n const result: { key: string; operations: Array<'max' | 'min' | 'values'> } = { key: f, operations: [] };\n if (isContinuous(this.angleAxisHelper.getScale(0).type)) {\n result.operations = ['max', 'min'];\n } else {\n result.operations = ['values'];\n }\n fields.push(result);\n });\n }\n return fields;\n }\n\n setAttrFromSpec() {\n super.setAttrFromSpec();\n if (isValid(this._spec.outerRadius)) {\n this._outerRadius = this._spec.outerRadius;\n }\n if (isValid(this._spec.radius)) {\n // 优先使用outerRadius, 但要兼容spec.radius\n this._outerRadius = this._spec.radius;\n }\n if (isValid(this._spec.innerRadius)) {\n this._innerRadius = this._spec.innerRadius;\n }\n\n if (isValid(this._spec.sortDataByAxis)) {\n this._sortDataByAxis = this._spec.sortDataByAxis === true;\n }\n }\n\n onRadiusAxisHelperUpdate(): void {\n this.onMarkPositionUpdate();\n }\n onAngleAxisHelperUpdate(): void {\n this.onMarkPositionUpdate();\n }\n\n afterInitMark(): void {\n super.afterInitMark();\n }\n\n protected _computeLayoutRadius() {\n const axisHelper = this._angleAxisHelper || this._radiusAxisHelper;\n\n if (axisHelper) {\n return axisHelper.layoutRadius();\n }\n\n const { width, height } = this._region.getLayoutRect();\n return Math.min(width / 2, height / 2);\n }\n\n protected initEvent() {\n super.initEvent();\n // 通过轴事件来进行排序。轴的domain数据变化在系列的统计数据完成后\n if (this.sortDataByAxis) {\n this.event.on(\n ChartEvent.scaleDomainUpdate,\n {\n filter: param => param.model.id === this._angleAxisHelper?.getAxisId()\n },\n () => {\n // 只能排序,不能修改数据,此时已经在数据流的统计流程之后\n this._sortDataInAxisDomain();\n }\n );\n }\n }\n\n _sortDataInAxisDomain() {\n if (this.getViewData()?.latestData?.length) {\n sortDataInAxisHelper(this.angleAxisHelper, this._angleField[0], this.getViewData().latestData);\n }\n }\n\n protected getInvalidCheckFields() {\n const fields: string[] = [];\n\n if (this.angleAxisHelper.isContinuous) {\n this._angleField.forEach(f => {\n fields.push(f);\n });\n }\n\n if (this.radiusAxisHelper.isContinuous) {\n this._radiusField.forEach(f => {\n fields.push(f);\n });\n }\n return fields;\n }\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { degreeToRadian, isNil, isValid, isValidNumber } from "@visactor/vutils";
|
|
1
|
+
import { degreeToRadian, isNil, isValid, isValidNumber, binaryFuzzySearch } from "@visactor/vutils";
|
|
2
2
|
|
|
3
3
|
import { AttributeLevel, POLAR_END_RADIAN, POLAR_START_RADIAN, SEGMENT_FIELD_START, STACK_FIELD_END, STACK_FIELD_START } from "../../../constant";
|
|
4
4
|
|
|
@@ -10,8 +10,6 @@ import { createArc, createRect } from "@visactor/vrender-core";
|
|
|
10
10
|
|
|
11
11
|
import { progressLikeSeriesMark } from "./constant";
|
|
12
12
|
|
|
13
|
-
import { binaryFuzzySearch } from "@visactor/vutils-extension";
|
|
14
|
-
|
|
15
13
|
export class ProgressLikeSeries extends PolarSeries {
|
|
16
14
|
constructor() {
|
|
17
15
|
super(...arguments), this._arcGroupMark = null, this._getAngleValueStart = datum => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/series/polar/progress-like/progress-like.ts"],"names":[],"mappings":"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","file":"progress-like.js","sourcesContent":["import type { Datum } from '@visactor/vgrammar-core';\nimport { degreeToRadian, isNil, isValid, isValidNumber } from '@visactor/vutils';\nimport {\n AttributeLevel,\n POLAR_END_RADIAN,\n POLAR_START_RADIAN,\n SEGMENT_FIELD_START,\n STACK_FIELD_END,\n STACK_FIELD_START\n} from '../../../constant';\nimport type { IMarkStyle } from '../../../mark/interface';\nimport type { ConvertToMarkStyleSpec, ICommonSpec } from '../../../typings';\nimport { valueInScaleRange } from '../../../util/scale';\nimport { PolarSeries } from '../polar';\nimport type { IContinuousTickData, IProgressLikeSeriesSpec } from './interface';\nimport type { IPolarAxis, IPolarAxisSpec } from '../../../component/axis';\nimport type { IGroupMark } from '../../../mark/group';\nimport { createArc, createRect } from '@visactor/vrender-core';\nimport type { SeriesMarkMap } from '../../interface';\nimport { progressLikeSeriesMark } from './constant';\nimport { binaryFuzzySearch } from '@visactor/vutils-extension';\n\nexport abstract class ProgressLikeSeries<T extends IProgressLikeSeriesSpec> extends PolarSeries<T> {\n static readonly mark: SeriesMarkMap = progressLikeSeriesMark;\n\n protected _startAngle: number;\n protected _endAngle: number;\n\n protected _arcGroupMark: IGroupMark | null = null;\n\n setAttrFromSpec(): void {\n super.setAttrFromSpec();\n const chartSpec = this._option.globalInstance.getChart()?.getSpec() as any;\n const startAngle = this._spec.startAngle ?? chartSpec?.startAngle;\n this._startAngle = isValid(startAngle) ? degreeToRadian(startAngle) : POLAR_START_RADIAN;\n const endAngle = this._spec.endAngle ?? chartSpec?.endAngle;\n this._endAngle = isValid(endAngle) ? degreeToRadian(endAngle) : POLAR_END_RADIAN;\n\n // 值信息给角度\n this.setAngleField(this._spec.valueField || this._spec.angleField);\n // 分类信息给半径\n this.setRadiusField(this._spec.categoryField || this._spec.radiusField);\n\n this._specAngleField = this._angleField.slice();\n this._specRadiusField = this._radiusField.slice();\n }\n\n getStackGroupFields(): string[] {\n return this._radiusField;\n }\n\n getStackValueField() {\n return this._angleField?.[0];\n }\n\n getGroupFields() {\n return this._angleField;\n }\n\n /** 重载 mark style 赋值前转换逻辑 */\n protected _convertMarkStyle<T extends ICommonSpec = ICommonSpec>(\n style: Partial<IMarkStyle<T> | ConvertToMarkStyleSpec<T>>\n ): Partial<IMarkStyle<T> | ConvertToMarkStyleSpec<T>> {\n const newStyle = super._convertMarkStyle(style) as unknown as any;\n\n const fillKey = 'fill';\n if (newStyle[fillKey]) {\n const value = style[fillKey] as unknown as any;\n // 为环形渐变色自动加 startAngle 和 endAngle\n if (value?.gradient === 'conical' && !isValid(value?.startAngle) && !isValid(value?.endAngle)) {\n newStyle[fillKey] = {\n ...value,\n startAngle: this._startAngle,\n endAngle: this._endAngle\n };\n }\n }\n\n return newStyle;\n }\n\n protected _getAngleValueStart = (datum: Datum) => {\n const axis = this._getAngleAxis();\n const { tickMask } = this._spec;\n\n if (tickMask?.forceAlign && this._isTickMaskVisible(axis)) {\n const field = this.getStack() ? STACK_FIELD_START : SEGMENT_FIELD_START;\n const originValue = datum[field];\n const subTickData = this._getAngleAxisSubTickData(axis);\n const step = subTickData[1].value - subTickData[0].value;\n const offsetAngle = degreeToRadian(tickMask.offsetAngle);\n\n let pos: number | undefined;\n if (isValid(originValue)) {\n // 找到第一个大于等于数据值的 tick\n const index = binaryFuzzySearch(subTickData, tick => tick.value - originValue);\n // 对齐\n const targetIndex =\n originValue > subTickData[index].value - step / 2\n ? Math.min(index, subTickData.length - 1)\n : index > 0\n ? index - 1\n : undefined;\n if (targetIndex !== undefined) {\n pos = this.angleAxisHelper.dataToPosition([\n subTickData[targetIndex].value - step / 2 // 确保占满整个 tick mask\n ]);\n }\n }\n if (isNil(pos)) {\n pos = this.angleAxisHelper.dataToPosition(\n [subTickData[0].value - step / 2] // 确保空出整个 tick mask\n );\n }\n return pos + offsetAngle;\n }\n return this._getAngleValueStartWithoutMask(datum);\n };\n\n protected _getAngleValueEnd = (datum: Datum) => {\n const axis = this._getAngleAxis();\n const { tickMask } = this._spec;\n\n if (tickMask?.forceAlign && this._isTickMaskVisible(axis)) {\n const field = this.getStack() ? STACK_FIELD_END : this._angleField[0];\n const originValue = datum[field];\n const subTickData = this._getAngleAxisSubTickData(axis);\n const step = subTickData[1].value - subTickData[0].value;\n const offsetAngle = degreeToRadian(tickMask.offsetAngle);\n\n // 找到第一个大于等于数据值的 tick\n const index = binaryFuzzySearch(subTickData, tick => tick.value - originValue);\n // 对齐\n const targetIndex =\n originValue > subTickData[index].value - step / 2\n ? Math.min(index, subTickData.length - 1)\n : index > 0\n ? index - 1\n : undefined;\n let pos: number;\n if (targetIndex !== undefined) {\n pos = this.angleAxisHelper.dataToPosition([\n subTickData[targetIndex].value + step / 2 // 确保占满整个 tick mask\n ]);\n } else {\n pos = this.angleAxisHelper.dataToPosition([\n subTickData[0].value - step / 2 // 确保空出整个 tick mask\n ]);\n }\n return pos + offsetAngle;\n }\n return this._getAngleValueEndWithoutMask(datum);\n };\n\n protected _getAngleValueStartWithoutMask(datum: Datum) {\n if (this.getStack()) {\n const value = valueInScaleRange(\n this.angleAxisHelper.dataToPosition([datum[STACK_FIELD_START]]),\n this.angleAxisHelper.getScale(0)\n );\n if (isValidNumber(value)) {\n return value;\n }\n }\n return this._startAngle;\n }\n\n protected _getAngleValueEndWithoutMask(datum: Datum) {\n if (this.getStack()) {\n const value = valueInScaleRange(\n this.angleAxisHelper.dataToPosition([datum[STACK_FIELD_END]]),\n this.angleAxisHelper.getScale(0)\n );\n if (isValidNumber(value)) {\n return value;\n }\n }\n return this.angleAxisHelper.dataToPosition([datum[this._angleField[0]]]);\n }\n\n getDimensionField(): string[] {\n return this._specRadiusField;\n }\n\n getMeasureField(): string[] {\n return this._specAngleField;\n }\n\n initMark(): void {\n this._initArcGroupMark();\n }\n\n initMarkStyle(): void {\n this._initArcGroupMarkStyle();\n }\n\n protected _initArcGroupMark() {\n // FIXME: disable group mark layout to prevent reevaluate after layout end\n this._arcGroupMark = this._createMark(ProgressLikeSeries.mark.group, {\n skipBeforeLayouted: false\n }) as IGroupMark;\n return this._arcGroupMark;\n }\n\n protected _initArcGroupMarkStyle() {\n const groupMark = this._arcGroupMark;\n groupMark.setZIndex(this.layoutZIndex);\n groupMark.created();\n this.setMarkStyle(\n groupMark,\n {\n x: 0,\n y: 0\n },\n 'normal',\n AttributeLevel.Series\n );\n groupMark.setClip(() => {\n const axis = this._getAngleAxis();\n if (this._isTickMaskVisible(axis)) {\n const { tickMask } = this._spec;\n const { angle, offsetAngle, style = {} } = tickMask;\n const subTickData = this._getAngleAxisSubTickData(axis);\n const { x, y } = this.angleAxisHelper.center();\n const radius = this._computeLayoutRadius();\n const markStyle = style as any;\n return subTickData.map(({ value }) => {\n const pos = this.angleAxisHelper.dataToPosition([value]) + degreeToRadian(offsetAngle);\n const angleUnit = degreeToRadian(angle) / 2;\n return createArc({\n ...markStyle,\n x,\n y,\n startAngle: pos - angleUnit,\n endAngle: pos + angleUnit,\n innerRadius: radius * this._innerRadius,\n outerRadius: radius * this._outerRadius,\n fill: true\n });\n });\n }\n const { width, height } = this.getLayoutRect();\n return [\n createRect({\n width,\n height,\n fill: true\n })\n ];\n });\n this._arcGroupMark.setInteractive(false);\n }\n\n protected _getAngleAxis() {\n if (!this.angleAxisHelper) {\n return undefined;\n }\n const angleAxisId = this.angleAxisHelper.getAxisId();\n const angleAxis = this._option\n .getChart()\n .getAllComponents()\n .find(component => component.id === angleAxisId) as IPolarAxis;\n return angleAxis;\n }\n\n protected _getAngleAxisTickData(angleAxis?: IPolarAxis): IContinuousTickData[] {\n const tickData = angleAxis?.getTickData()?.getLatestData();\n return tickData;\n }\n\n protected _isTickMaskVisible(angleAxis?: IPolarAxis) {\n const tickData = this._getAngleAxisTickData(angleAxis);\n const { tickMask } = this._spec;\n return tickMask && tickMask.visible !== false && tickData?.length > 1;\n }\n\n protected _getAngleAxisSubTickData(angleAxis: IPolarAxis) {\n const tickData = this._getAngleAxisTickData(angleAxis);\n // TODO: 这块照搬了 vrender-components 的计算方法,需要抽出这块的公用逻辑\n const subTickData: IContinuousTickData[] = [];\n const { subTick = {}, tick = {} } = (angleAxis?.getSpec() ?? {}) as IPolarAxisSpec;\n const { tickCount: subTickCount = 4 } = subTick;\n const { alignWithLabel } = tick;\n // 刻度线的数量大于 2 时,才绘制子刻度\n if (tickData?.length >= 2) {\n const tickSegment = tickData[1].value - tickData[0].value;\n for (let i = 0; i < tickData.length - 1; i++) {\n const pre = tickData[i];\n const next = tickData[i + 1];\n subTickData.push(pre);\n for (let j = 0; j < subTickCount; j++) {\n const percent = (j + 1) / (subTickCount + 1);\n const value =\n (1 - percent) * pre.value + percent * (next ? next.value : alignWithLabel ? 1 : pre.value + tickSegment);\n subTickData.push({\n value\n });\n }\n }\n subTickData.push(tickData[tickData.length - 1]);\n return subTickData;\n }\n return tickData;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/series/polar/progress-like/progress-like.ts"],"names":[],"mappings":"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","file":"progress-like.js","sourcesContent":["import type { Datum } from '@visactor/vgrammar-core';\nimport { degreeToRadian, isNil, isValid, isValidNumber, binaryFuzzySearch } from '@visactor/vutils';\nimport {\n AttributeLevel,\n POLAR_END_RADIAN,\n POLAR_START_RADIAN,\n SEGMENT_FIELD_START,\n STACK_FIELD_END,\n STACK_FIELD_START\n} from '../../../constant';\nimport type { IMarkStyle } from '../../../mark/interface';\nimport type { ConvertToMarkStyleSpec, ICommonSpec } from '../../../typings';\nimport { valueInScaleRange } from '../../../util/scale';\nimport { PolarSeries } from '../polar';\nimport type { IContinuousTickData, IProgressLikeSeriesSpec } from './interface';\nimport type { IPolarAxis, IPolarAxisSpec } from '../../../component/axis';\nimport type { IGroupMark } from '../../../mark/group';\nimport { createArc, createRect } from '@visactor/vrender-core';\nimport type { SeriesMarkMap } from '../../interface';\nimport { progressLikeSeriesMark } from './constant';\n\nexport abstract class ProgressLikeSeries<T extends IProgressLikeSeriesSpec> extends PolarSeries<T> {\n static readonly mark: SeriesMarkMap = progressLikeSeriesMark;\n\n protected _startAngle: number;\n protected _endAngle: number;\n\n protected _arcGroupMark: IGroupMark | null = null;\n\n setAttrFromSpec(): void {\n super.setAttrFromSpec();\n const chartSpec = this._option.globalInstance.getChart()?.getSpec() as any;\n const startAngle = this._spec.startAngle ?? chartSpec?.startAngle;\n this._startAngle = isValid(startAngle) ? degreeToRadian(startAngle) : POLAR_START_RADIAN;\n const endAngle = this._spec.endAngle ?? chartSpec?.endAngle;\n this._endAngle = isValid(endAngle) ? degreeToRadian(endAngle) : POLAR_END_RADIAN;\n\n // 值信息给角度\n this.setAngleField(this._spec.valueField || this._spec.angleField);\n // 分类信息给半径\n this.setRadiusField(this._spec.categoryField || this._spec.radiusField);\n\n this._specAngleField = this._angleField.slice();\n this._specRadiusField = this._radiusField.slice();\n }\n\n getStackGroupFields(): string[] {\n return this._radiusField;\n }\n\n getStackValueField() {\n return this._angleField?.[0];\n }\n\n getGroupFields() {\n return this._angleField;\n }\n\n /** 重载 mark style 赋值前转换逻辑 */\n protected _convertMarkStyle<T extends ICommonSpec = ICommonSpec>(\n style: Partial<IMarkStyle<T> | ConvertToMarkStyleSpec<T>>\n ): Partial<IMarkStyle<T> | ConvertToMarkStyleSpec<T>> {\n const newStyle = super._convertMarkStyle(style) as unknown as any;\n\n const fillKey = 'fill';\n if (newStyle[fillKey]) {\n const value = style[fillKey] as unknown as any;\n // 为环形渐变色自动加 startAngle 和 endAngle\n if (value?.gradient === 'conical' && !isValid(value?.startAngle) && !isValid(value?.endAngle)) {\n newStyle[fillKey] = {\n ...value,\n startAngle: this._startAngle,\n endAngle: this._endAngle\n };\n }\n }\n\n return newStyle;\n }\n\n protected _getAngleValueStart = (datum: Datum) => {\n const axis = this._getAngleAxis();\n const { tickMask } = this._spec;\n\n if (tickMask?.forceAlign && this._isTickMaskVisible(axis)) {\n const field = this.getStack() ? STACK_FIELD_START : SEGMENT_FIELD_START;\n const originValue = datum[field];\n const subTickData = this._getAngleAxisSubTickData(axis);\n const step = subTickData[1].value - subTickData[0].value;\n const offsetAngle = degreeToRadian(tickMask.offsetAngle);\n\n let pos: number | undefined;\n if (isValid(originValue)) {\n // 找到第一个大于等于数据值的 tick\n const index = binaryFuzzySearch(subTickData, tick => tick.value - originValue);\n // 对齐\n const targetIndex =\n originValue > subTickData[index].value - step / 2\n ? Math.min(index, subTickData.length - 1)\n : index > 0\n ? index - 1\n : undefined;\n if (targetIndex !== undefined) {\n pos = this.angleAxisHelper.dataToPosition([\n subTickData[targetIndex].value - step / 2 // 确保占满整个 tick mask\n ]);\n }\n }\n if (isNil(pos)) {\n pos = this.angleAxisHelper.dataToPosition(\n [subTickData[0].value - step / 2] // 确保空出整个 tick mask\n );\n }\n return pos + offsetAngle;\n }\n return this._getAngleValueStartWithoutMask(datum);\n };\n\n protected _getAngleValueEnd = (datum: Datum) => {\n const axis = this._getAngleAxis();\n const { tickMask } = this._spec;\n\n if (tickMask?.forceAlign && this._isTickMaskVisible(axis)) {\n const field = this.getStack() ? STACK_FIELD_END : this._angleField[0];\n const originValue = datum[field];\n const subTickData = this._getAngleAxisSubTickData(axis);\n const step = subTickData[1].value - subTickData[0].value;\n const offsetAngle = degreeToRadian(tickMask.offsetAngle);\n\n // 找到第一个大于等于数据值的 tick\n const index = binaryFuzzySearch(subTickData, tick => tick.value - originValue);\n // 对齐\n const targetIndex =\n originValue > subTickData[index].value - step / 2\n ? Math.min(index, subTickData.length - 1)\n : index > 0\n ? index - 1\n : undefined;\n let pos: number;\n if (targetIndex !== undefined) {\n pos = this.angleAxisHelper.dataToPosition([\n subTickData[targetIndex].value + step / 2 // 确保占满整个 tick mask\n ]);\n } else {\n pos = this.angleAxisHelper.dataToPosition([\n subTickData[0].value - step / 2 // 确保空出整个 tick mask\n ]);\n }\n return pos + offsetAngle;\n }\n return this._getAngleValueEndWithoutMask(datum);\n };\n\n protected _getAngleValueStartWithoutMask(datum: Datum) {\n if (this.getStack()) {\n const value = valueInScaleRange(\n this.angleAxisHelper.dataToPosition([datum[STACK_FIELD_START]]),\n this.angleAxisHelper.getScale(0)\n );\n if (isValidNumber(value)) {\n return value;\n }\n }\n return this._startAngle;\n }\n\n protected _getAngleValueEndWithoutMask(datum: Datum) {\n if (this.getStack()) {\n const value = valueInScaleRange(\n this.angleAxisHelper.dataToPosition([datum[STACK_FIELD_END]]),\n this.angleAxisHelper.getScale(0)\n );\n if (isValidNumber(value)) {\n return value;\n }\n }\n return this.angleAxisHelper.dataToPosition([datum[this._angleField[0]]]);\n }\n\n getDimensionField(): string[] {\n return this._specRadiusField;\n }\n\n getMeasureField(): string[] {\n return this._specAngleField;\n }\n\n initMark(): void {\n this._initArcGroupMark();\n }\n\n initMarkStyle(): void {\n this._initArcGroupMarkStyle();\n }\n\n protected _initArcGroupMark() {\n // FIXME: disable group mark layout to prevent reevaluate after layout end\n this._arcGroupMark = this._createMark(ProgressLikeSeries.mark.group, {\n skipBeforeLayouted: false\n }) as IGroupMark;\n return this._arcGroupMark;\n }\n\n protected _initArcGroupMarkStyle() {\n const groupMark = this._arcGroupMark;\n groupMark.setZIndex(this.layoutZIndex);\n groupMark.created();\n this.setMarkStyle(\n groupMark,\n {\n x: 0,\n y: 0\n },\n 'normal',\n AttributeLevel.Series\n );\n groupMark.setClip(() => {\n const axis = this._getAngleAxis();\n if (this._isTickMaskVisible(axis)) {\n const { tickMask } = this._spec;\n const { angle, offsetAngle, style = {} } = tickMask;\n const subTickData = this._getAngleAxisSubTickData(axis);\n const { x, y } = this.angleAxisHelper.center();\n const radius = this._computeLayoutRadius();\n const markStyle = style as any;\n return subTickData.map(({ value }) => {\n const pos = this.angleAxisHelper.dataToPosition([value]) + degreeToRadian(offsetAngle);\n const angleUnit = degreeToRadian(angle) / 2;\n return createArc({\n ...markStyle,\n x,\n y,\n startAngle: pos - angleUnit,\n endAngle: pos + angleUnit,\n innerRadius: radius * this._innerRadius,\n outerRadius: radius * this._outerRadius,\n fill: true\n });\n });\n }\n const { width, height } = this.getLayoutRect();\n return [\n createRect({\n width,\n height,\n fill: true\n })\n ];\n });\n this._arcGroupMark.setInteractive(false);\n }\n\n protected _getAngleAxis() {\n if (!this.angleAxisHelper) {\n return undefined;\n }\n const angleAxisId = this.angleAxisHelper.getAxisId();\n const angleAxis = this._option\n .getChart()\n .getAllComponents()\n .find(component => component.id === angleAxisId) as IPolarAxis;\n return angleAxis;\n }\n\n protected _getAngleAxisTickData(angleAxis?: IPolarAxis): IContinuousTickData[] {\n const tickData = angleAxis?.getTickData()?.getLatestData();\n return tickData;\n }\n\n protected _isTickMaskVisible(angleAxis?: IPolarAxis) {\n const tickData = this._getAngleAxisTickData(angleAxis);\n const { tickMask } = this._spec;\n return tickMask && tickMask.visible !== false && tickData?.length > 1;\n }\n\n protected _getAngleAxisSubTickData(angleAxis: IPolarAxis) {\n const tickData = this._getAngleAxisTickData(angleAxis);\n // TODO: 这块照搬了 vrender-components 的计算方法,需要抽出这块的公用逻辑\n const subTickData: IContinuousTickData[] = [];\n const { subTick = {}, tick = {} } = (angleAxis?.getSpec() ?? {}) as IPolarAxisSpec;\n const { tickCount: subTickCount = 4 } = subTick;\n const { alignWithLabel } = tick;\n // 刻度线的数量大于 2 时,才绘制子刻度\n if (tickData?.length >= 2) {\n const tickSegment = tickData[1].value - tickData[0].value;\n for (let i = 0; i < tickData.length - 1; i++) {\n const pre = tickData[i];\n const next = tickData[i + 1];\n subTickData.push(pre);\n for (let j = 0; j < subTickCount; j++) {\n const percent = (j + 1) / (subTickCount + 1);\n const value =\n (1 - percent) * pre.value + percent * (next ? next.value : alignWithLabel ? 1 : pre.value + tickSegment);\n subTickData.push({\n value\n });\n }\n }\n subTickData.push(tickData[tickData.length - 1]);\n return subTickData;\n }\n return tickData;\n }\n}\n"]}
|
|
@@ -234,12 +234,7 @@ export class SunburstSeries extends PolarSeries {
|
|
|
234
234
|
super.onLayoutEnd(ctx), this._rawData.reRunAllTransform();
|
|
235
235
|
}
|
|
236
236
|
_computeRadius(radius) {
|
|
237
|
-
|
|
238
|
-
const {width: width, height: height} = this.getRegion().getLayoutRect();
|
|
239
|
-
return Math.min(width / 2, height / 2) * r;
|
|
240
|
-
}));
|
|
241
|
-
const {width: width, height: height} = this.getRegion().getLayoutRect();
|
|
242
|
-
return Math.min(width / 2, height / 2) * radius;
|
|
237
|
+
return isArray(radius) ? radius.map((r => this._computeLayoutRadius() * r)) : this._computeLayoutRadius() * radius;
|
|
243
238
|
}
|
|
244
239
|
_computeLevel() {
|
|
245
240
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/series/sunburst/sunburst.ts"],"names":[],"mappings":"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","file":"sunburst.js","sourcesContent":["/* eslint-disable no-duplicate-imports */\nimport type { SunburstLabelConfig, SunburstNodeElement } from '@visactor/vgrammar-hierarchy';\nimport { array, isArray, isNil, isValid, isObject, degreeToRadian, mixin } from '@visactor/vutils';\n\nimport type { IMarkSpec } from '../../typings/spec';\nimport type { IStateAnimateSpec } from '../../animation/spec';\nimport type { ITextMark } from '../../mark/text';\nimport type { IArcMark } from '../../mark/arc';\nimport type { Datum, IArcMarkSpec, ITextMarkSpec } from '../../typings';\n\nimport type { ISunburstAnimationParams, SunburstAppearPreset } from './animation';\nimport { registerSunburstAnimation } from './animation';\nimport type { ISunburstSeriesSpec, LabelAutoVisibleType } from './interface';\nimport type { ISunburstOpt } from '../../data/transforms/sunburst';\n\nimport { registerDataSetInstanceTransform } from '../../data/register';\nimport { flatten } from '../../data/transforms/flatten';\nimport { sunburstLayout } from '../../data/transforms/sunburst';\nimport type { SeriesMarkMap } from '../interface';\nimport { SeriesTypeEnum } from '../interface/type';\n\nimport type { IMark } from '../../mark/interface';\nimport { MarkTypeEnum } from '../../mark/interface/type';\nimport { AttributeLevel, DEFAULT_DATA_KEY } from '../../constant';\nimport { STATE_VALUE_ENUM } from '../../compile/mark/interface';\nimport { DEFAULT_HIERARCHY_DEPTH, DEFAULT_HIERARCHY_ROOT } from '../../constant/hierarchy';\nimport { registerFadeInOutAnimation } from '../../animation/config';\nimport { addHierarchyDataKey, initHierarchyKeyMap } from '../../data/transforms/data-key';\nimport { addVChartProperty } from '../../data/transforms/add-property';\nimport { animationConfig, userAnimationConfig } from '../../animation/utils';\nimport { PolarSeries } from '../polar/polar';\nimport { SUNBURST_AUTO_VISIBLE_DEFAULT_THRESHOLD } from '../../constant/sunburst';\nimport { SunburstTooltipHelper } from './tooltip-helper';\nimport type { animationInfo } from './animation/interface';\nimport type { IDrillable } from '../../interaction/drill/drillable';\nimport { Drillable } from '../../interaction/drill/drillable';\nimport { registerArcMark } from '../../mark/arc';\nimport { registerTextMark } from '../../mark/text';\nimport { sunburstSeriesMark } from './constant';\nimport { Factory } from '../../core/factory';\n\nexport class SunburstSeries extends PolarSeries<any> {\n protected declare _spec: ISunburstSeriesSpec;\n\n static readonly type: string = SeriesTypeEnum.sunburst;\n type = SeriesTypeEnum.sunburst;\n\n static readonly mark: SeriesMarkMap = sunburstSeriesMark;\n\n private _sunburstMark: IArcMark;\n private _labelMark: ITextMark;\n\n protected _categoryField!: string;\n protected _valueField!: string;\n\n private _centerX: number;\n private _centerY: number;\n private _offsetX: number;\n private _offsetY: number;\n private _startAngle: number;\n private _endAngle: number;\n\n private __innerRadius: number | number[];\n private __outerRadius: number | number[];\n private _gap: number | number[];\n private _labelLayout: SunburstLabelConfig | SunburstLabelConfig[];\n\n private _labelAutoVisible?: LabelAutoVisibleType;\n\n private _label: IMarkSpec<ITextMarkSpec>;\n private _sunburst: IMarkSpec<IArcMarkSpec>;\n\n setCategoryField(f: string): string {\n this._categoryField = f;\n return this._categoryField;\n }\n\n getCategoryField() {\n return this._categoryField;\n }\n\n setValueField(f: string): string {\n this._valueField = f;\n return this._valueField;\n }\n\n getValueField() {\n return this._valueField;\n }\n\n getDimensionField() {\n return [this._categoryField];\n }\n\n getMeasureField(): string[] {\n return [this._valueField];\n }\n\n setAttrFromSpec() {\n super.setAttrFromSpec();\n\n this.setCategoryField(this._spec.categoryField);\n this.setValueField(this._spec.valueField);\n this.setSeriesField(this._spec.seriesField ?? DEFAULT_HIERARCHY_ROOT);\n\n if (this._spec.drill) {\n (this as unknown as IDrillable).initDrillable({\n event: this.event,\n mode: this._option.mode,\n drillField: () => this._spec.drillField ?? DEFAULT_DATA_KEY,\n getRawData: () => this.getRawData()\n });\n }\n\n /**\n * 角度区间\n */\n this._startAngle = degreeToRadian(this._spec.startAngle);\n this._endAngle = degreeToRadian(this._spec.endAngle);\n\n /**\n * 中心点\n */\n this._centerX = this._spec.centerX;\n this._centerY = this._spec.centerY;\n this._offsetX = this._spec.offsetX;\n this._offsetY = this._spec.offsetY;\n\n /**\n * 对所有层生效的布局配置\n */\n this.__innerRadius = this._spec.innerRadius;\n this.__outerRadius = this._spec.outerRadius;\n this._gap = this._spec.gap;\n this._labelLayout = this._spec.labelLayout;\n\n /**\n * 图元配置\n */\n this._sunburst = this._spec.sunburst;\n this._label = this._spec.label;\n\n /**\n * 功能配置\n */\n this._labelAutoVisible = this._spec.labelAutoVisible;\n }\n\n protected initData() {\n super.initData();\n const rawData = this.getRawData();\n if (!rawData) {\n return;\n }\n\n // 对原始数据进行上卷下钻筛选\n if (this._spec.drill) {\n (this as unknown as IDrillable).initDrillableData(this._dataSet);\n }\n // 注册布局算法\n registerDataSetInstanceTransform(this._dataSet, 'sunburstLayout', sunburstLayout);\n // 注册扁平化算法\n registerDataSetInstanceTransform(this._dataSet, 'flatten', flatten);\n\n // 对筛选后的数据, 调用sunburst布局算法\n rawData.transform({\n type: 'sunburstLayout',\n options: (): ISunburstOpt => {\n const { innerRadius, outerRadius, gap, label } = this._computeLevel();\n return {\n nodeKey: this._categoryField,\n width: this.getLayoutRect().width,\n height: this.getLayoutRect().height,\n center: [\n isValid(this._centerX) ? this._centerX : this.getLayoutRect().width / 2,\n isValid(this._centerY) ? this._centerY : this.getLayoutRect().height / 2\n ],\n startAngle: this._startAngle,\n endAngle: this._endAngle,\n\n innerRadius: innerRadius,\n outerRadius: outerRadius,\n gapRadius: gap,\n label: label\n };\n }\n });\n\n // 布局结果进行扁平化处理\n rawData.transform({\n type: 'flatten',\n options: {\n callback: (node: SunburstNodeElement) => {\n if (node.datum) {\n const nodeData = node.datum[node.depth];\n return { ...node, ...nodeData };\n }\n return node;\n }\n }\n });\n }\n\n getStatisticFields() {\n const fields = super.getStatisticFields();\n return fields.concat([\n {\n key: this._categoryField,\n operations: ['values']\n },\n {\n key: this._valueField,\n operations: ['max', 'min']\n },\n {\n key: DEFAULT_HIERARCHY_DEPTH,\n operations: ['max', 'min', 'values']\n },\n {\n key: DEFAULT_HIERARCHY_ROOT,\n operations: ['values']\n }\n ]);\n }\n\n protected _addDataIndexAndKey() {\n const rawData = this.getRawData();\n if (isNil(rawData?.dataSet)) {\n return;\n }\n // 为原始数据, 添加层级属性\n registerDataSetInstanceTransform(rawData.dataSet, 'addVChartProperty', addVChartProperty);\n rawData.transform({\n type: 'addVChartProperty',\n options: {\n beforeCall: initHierarchyKeyMap.bind(this),\n call: addHierarchyDataKey\n }\n });\n }\n\n initMark(): void {\n this._initArcMark();\n this._initLabelMark();\n }\n\n initMarkStyle(): void {\n this._initArcMarkStyle();\n this._initLabelMarkStyle();\n }\n\n private _initArcMark() {\n if (this._sunburst.visible === false) {\n return;\n }\n // SunburstMark\n const sunburstMark = this._createMark(SunburstSeries.mark.sunburst, {\n isSeriesMark: true,\n customShape: this._spec.sunburst?.customShape,\n stateSort: this._spec.sunburst?.stateSort\n }) as IArcMark;\n this._sunburstMark = sunburstMark;\n }\n\n private _initArcMarkStyle() {\n if (isNil(this._sunburstMark)) {\n return;\n }\n this.setMarkStyle(\n this._sunburstMark,\n {\n x: d => d.x + (isValid(this._offsetX) ? this._offsetX : 0),\n y: d => d.y + (isValid(this._offsetY) ? this._offsetY : 0),\n outerRadius: d => d.outerRadius,\n innerRadius: d => d.innerRadius,\n startAngle: d => d.startAngle,\n endAngle: d => d.endAngle,\n fill: this.getColorAttribute()\n },\n STATE_VALUE_ENUM.STATE_NORMAL,\n AttributeLevel.Series\n );\n }\n\n private _initLabelMark() {\n if (this._label.visible !== true) {\n return;\n }\n // Label\n const labelMark = this._createMark(SunburstSeries.mark.label, {\n isSeriesMark: false\n }) as ITextMark;\n this._labelMark = labelMark;\n }\n\n private _initLabelMarkStyle() {\n if (isNil(this._labelMark)) {\n return;\n }\n this.setMarkStyle(\n this._labelMark,\n {\n visible: d => {\n // 自动隐藏密集标签逻辑.\n const labelAutoVisible = this._labelAutoVisible;\n\n if (isObject(labelAutoVisible) && labelAutoVisible.enable === true) {\n return (\n (d.endAngle - d.startAngle) * (d.outerRadius - d.innerRadius) >\n (labelAutoVisible?.circumference ?? SUNBURST_AUTO_VISIBLE_DEFAULT_THRESHOLD)\n );\n }\n return this._spec.label.visible;\n },\n x: d => d.label?.x + (isValid(this._offsetX) ? this._offsetX : 0),\n y: d => d.label?.y + (isValid(this._offsetY) ? this._offsetY : 0),\n textBaseline: d => d.label?.textBaseline,\n textAlign: d => d.label?.textAlign,\n angle: d => d.label?.angle ?? 0,\n fontSize: 10,\n text: (d: Datum) => d.name\n },\n STATE_VALUE_ENUM.STATE_NORMAL,\n AttributeLevel.Series\n );\n }\n\n protected initTooltip() {\n this._tooltipHelper = new SunburstTooltipHelper(this);\n this._sunburstMark && this._tooltipHelper.activeTriggerSet.mark.add(this._sunburstMark);\n this._labelMark && this._tooltipHelper.activeTriggerSet.mark.add(this._labelMark);\n }\n\n initAnimation() {\n const animationParams: ISunburstAnimationParams = {\n animationInfo: (): animationInfo => {\n // 返回用户的交互元素信息\n return {\n innerRadius: this._computeRadius(array(this.__innerRadius))[0],\n outerRadius: this._computeRadius(array(this.__outerRadius))[0],\n startAngle: array(this._startAngle)[0],\n endAngle: array(this._endAngle)[0]\n };\n }\n };\n\n const appearPreset = (this._spec?.animationAppear as IStateAnimateSpec<SunburstAppearPreset>)?.preset;\n\n this.getMarksInType(MarkTypeEnum.arc).forEach(mark => {\n mark.setAnimationConfig(\n animationConfig(\n Factory.getAnimationInKey('sunburst')?.(animationParams, appearPreset),\n userAnimationConfig(mark.name, this._spec, this._markAttributeContext)\n )\n );\n });\n\n this.getMarksInType(MarkTypeEnum.text).forEach(mark => {\n mark.setAnimationConfig(\n animationConfig(\n Factory.getAnimationInKey('fadeInOut')?.(),\n userAnimationConfig(mark.name, this._spec, this._markAttributeContext)\n )\n );\n });\n }\n\n initEvent() {\n super.initEvent();\n if (this._spec.drill) {\n (this as unknown as IDrillable).bindDrillEvent();\n }\n }\n\n onLayoutEnd(ctx: any): void {\n super.onLayoutEnd(ctx);\n this._rawData.reRunAllTransform();\n }\n\n /**\n * 计算radius, 转换为布局属性\n * @radius radius是一个比例值, 取值范围为[0,1]\n */\n private _computeRadius(radius: number | number[]) {\n if (isArray(radius)) {\n return radius.map(r => {\n const { width, height } = this.getRegion().getLayoutRect();\n return Math.min(width / 2, height / 2) * r;\n });\n }\n const { width, height } = this.getRegion().getLayoutRect();\n return Math.min(width / 2, height / 2) * radius;\n }\n\n private _computeLevel(): {\n innerRadius: number | number[];\n outerRadius: number | number[];\n gap: number | number[];\n label: SunburstLabelConfig | SunburstLabelConfig[];\n } {\n return {\n innerRadius: this._computeRadius(this.__innerRadius),\n outerRadius: this._computeRadius(this.__outerRadius),\n gap: this._gap,\n label: this._labelLayout\n };\n }\n\n getGroupFields(): string[] {\n return [];\n }\n getStackGroupFields(): string[] {\n return [];\n }\n getStackValueField(): string {\n return '';\n }\n\n // make sure this function fast\n protected _noAnimationDataKey(datum: Datum, index: number): unknown | undefined {\n return undefined;\n }\n\n getActiveMarks(): IMark[] {\n return [this._sunburstMark];\n }\n}\n\nmixin(SunburstSeries, Drillable);\n\nexport const registerSunBurstSeries = () => {\n Factory.registerSeries(SunburstSeries.type, SunburstSeries);\n registerArcMark();\n registerTextMark();\n registerFadeInOutAnimation();\n registerSunburstAnimation();\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/series/sunburst/sunburst.ts"],"names":[],"mappings":"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","file":"sunburst.js","sourcesContent":["/* eslint-disable no-duplicate-imports */\nimport type { SunburstLabelConfig, SunburstNodeElement } from '@visactor/vgrammar-hierarchy';\nimport { array, isArray, isNil, isValid, isObject, degreeToRadian, mixin } from '@visactor/vutils';\n\nimport type { IMarkSpec } from '../../typings/spec';\nimport type { IStateAnimateSpec } from '../../animation/spec';\nimport type { ITextMark } from '../../mark/text';\nimport type { IArcMark } from '../../mark/arc';\nimport type { Datum, IArcMarkSpec, ITextMarkSpec } from '../../typings';\n\nimport type { ISunburstAnimationParams, SunburstAppearPreset } from './animation';\nimport { registerSunburstAnimation } from './animation';\nimport type { ISunburstSeriesSpec, LabelAutoVisibleType } from './interface';\nimport type { ISunburstOpt } from '../../data/transforms/sunburst';\n\nimport { registerDataSetInstanceTransform } from '../../data/register';\nimport { flatten } from '../../data/transforms/flatten';\nimport { sunburstLayout } from '../../data/transforms/sunburst';\nimport type { SeriesMarkMap } from '../interface';\nimport { SeriesTypeEnum } from '../interface/type';\n\nimport type { IMark } from '../../mark/interface';\nimport { MarkTypeEnum } from '../../mark/interface/type';\nimport { AttributeLevel, DEFAULT_DATA_KEY } from '../../constant';\nimport { STATE_VALUE_ENUM } from '../../compile/mark/interface';\nimport { DEFAULT_HIERARCHY_DEPTH, DEFAULT_HIERARCHY_ROOT } from '../../constant/hierarchy';\nimport { registerFadeInOutAnimation } from '../../animation/config';\nimport { addHierarchyDataKey, initHierarchyKeyMap } from '../../data/transforms/data-key';\nimport { addVChartProperty } from '../../data/transforms/add-property';\nimport { animationConfig, userAnimationConfig } from '../../animation/utils';\nimport { PolarSeries } from '../polar/polar';\nimport { SUNBURST_AUTO_VISIBLE_DEFAULT_THRESHOLD } from '../../constant/sunburst';\nimport { SunburstTooltipHelper } from './tooltip-helper';\nimport type { animationInfo } from './animation/interface';\nimport type { IDrillable } from '../../interaction/drill/drillable';\nimport { Drillable } from '../../interaction/drill/drillable';\nimport { registerArcMark } from '../../mark/arc';\nimport { registerTextMark } from '../../mark/text';\nimport { sunburstSeriesMark } from './constant';\nimport { Factory } from '../../core/factory';\n\nexport class SunburstSeries extends PolarSeries<any> {\n protected declare _spec: ISunburstSeriesSpec;\n\n static readonly type: string = SeriesTypeEnum.sunburst;\n type = SeriesTypeEnum.sunburst;\n\n static readonly mark: SeriesMarkMap = sunburstSeriesMark;\n\n private _sunburstMark: IArcMark;\n private _labelMark: ITextMark;\n\n protected _categoryField!: string;\n protected _valueField!: string;\n\n private _centerX: number;\n private _centerY: number;\n private _offsetX: number;\n private _offsetY: number;\n private _startAngle: number;\n private _endAngle: number;\n\n private __innerRadius: number | number[];\n private __outerRadius: number | number[];\n private _gap: number | number[];\n private _labelLayout: SunburstLabelConfig | SunburstLabelConfig[];\n\n private _labelAutoVisible?: LabelAutoVisibleType;\n\n private _label: IMarkSpec<ITextMarkSpec>;\n private _sunburst: IMarkSpec<IArcMarkSpec>;\n\n setCategoryField(f: string): string {\n this._categoryField = f;\n return this._categoryField;\n }\n\n getCategoryField() {\n return this._categoryField;\n }\n\n setValueField(f: string): string {\n this._valueField = f;\n return this._valueField;\n }\n\n getValueField() {\n return this._valueField;\n }\n\n getDimensionField() {\n return [this._categoryField];\n }\n\n getMeasureField(): string[] {\n return [this._valueField];\n }\n\n setAttrFromSpec() {\n super.setAttrFromSpec();\n\n this.setCategoryField(this._spec.categoryField);\n this.setValueField(this._spec.valueField);\n this.setSeriesField(this._spec.seriesField ?? DEFAULT_HIERARCHY_ROOT);\n\n if (this._spec.drill) {\n (this as unknown as IDrillable).initDrillable({\n event: this.event,\n mode: this._option.mode,\n drillField: () => this._spec.drillField ?? DEFAULT_DATA_KEY,\n getRawData: () => this.getRawData()\n });\n }\n\n /**\n * 角度区间\n */\n this._startAngle = degreeToRadian(this._spec.startAngle);\n this._endAngle = degreeToRadian(this._spec.endAngle);\n\n /**\n * 中心点\n */\n this._centerX = this._spec.centerX;\n this._centerY = this._spec.centerY;\n this._offsetX = this._spec.offsetX;\n this._offsetY = this._spec.offsetY;\n\n /**\n * 对所有层生效的布局配置\n */\n this.__innerRadius = this._spec.innerRadius;\n this.__outerRadius = this._spec.outerRadius;\n this._gap = this._spec.gap;\n this._labelLayout = this._spec.labelLayout;\n\n /**\n * 图元配置\n */\n this._sunburst = this._spec.sunburst;\n this._label = this._spec.label;\n\n /**\n * 功能配置\n */\n this._labelAutoVisible = this._spec.labelAutoVisible;\n }\n\n protected initData() {\n super.initData();\n const rawData = this.getRawData();\n if (!rawData) {\n return;\n }\n\n // 对原始数据进行上卷下钻筛选\n if (this._spec.drill) {\n (this as unknown as IDrillable).initDrillableData(this._dataSet);\n }\n // 注册布局算法\n registerDataSetInstanceTransform(this._dataSet, 'sunburstLayout', sunburstLayout);\n // 注册扁平化算法\n registerDataSetInstanceTransform(this._dataSet, 'flatten', flatten);\n\n // 对筛选后的数据, 调用sunburst布局算法\n rawData.transform({\n type: 'sunburstLayout',\n options: (): ISunburstOpt => {\n const { innerRadius, outerRadius, gap, label } = this._computeLevel();\n return {\n nodeKey: this._categoryField,\n width: this.getLayoutRect().width,\n height: this.getLayoutRect().height,\n center: [\n isValid(this._centerX) ? this._centerX : this.getLayoutRect().width / 2,\n isValid(this._centerY) ? this._centerY : this.getLayoutRect().height / 2\n ],\n startAngle: this._startAngle,\n endAngle: this._endAngle,\n\n innerRadius: innerRadius,\n outerRadius: outerRadius,\n gapRadius: gap,\n label: label\n };\n }\n });\n\n // 布局结果进行扁平化处理\n rawData.transform({\n type: 'flatten',\n options: {\n callback: (node: SunburstNodeElement) => {\n if (node.datum) {\n const nodeData = node.datum[node.depth];\n return { ...node, ...nodeData };\n }\n return node;\n }\n }\n });\n }\n\n getStatisticFields() {\n const fields = super.getStatisticFields();\n return fields.concat([\n {\n key: this._categoryField,\n operations: ['values']\n },\n {\n key: this._valueField,\n operations: ['max', 'min']\n },\n {\n key: DEFAULT_HIERARCHY_DEPTH,\n operations: ['max', 'min', 'values']\n },\n {\n key: DEFAULT_HIERARCHY_ROOT,\n operations: ['values']\n }\n ]);\n }\n\n protected _addDataIndexAndKey() {\n const rawData = this.getRawData();\n if (isNil(rawData?.dataSet)) {\n return;\n }\n // 为原始数据, 添加层级属性\n registerDataSetInstanceTransform(rawData.dataSet, 'addVChartProperty', addVChartProperty);\n rawData.transform({\n type: 'addVChartProperty',\n options: {\n beforeCall: initHierarchyKeyMap.bind(this),\n call: addHierarchyDataKey\n }\n });\n }\n\n initMark(): void {\n this._initArcMark();\n this._initLabelMark();\n }\n\n initMarkStyle(): void {\n this._initArcMarkStyle();\n this._initLabelMarkStyle();\n }\n\n private _initArcMark() {\n if (this._sunburst.visible === false) {\n return;\n }\n // SunburstMark\n const sunburstMark = this._createMark(SunburstSeries.mark.sunburst, {\n isSeriesMark: true,\n customShape: this._spec.sunburst?.customShape,\n stateSort: this._spec.sunburst?.stateSort\n }) as IArcMark;\n this._sunburstMark = sunburstMark;\n }\n\n private _initArcMarkStyle() {\n if (isNil(this._sunburstMark)) {\n return;\n }\n this.setMarkStyle(\n this._sunburstMark,\n {\n x: d => d.x + (isValid(this._offsetX) ? this._offsetX : 0),\n y: d => d.y + (isValid(this._offsetY) ? this._offsetY : 0),\n outerRadius: d => d.outerRadius,\n innerRadius: d => d.innerRadius,\n startAngle: d => d.startAngle,\n endAngle: d => d.endAngle,\n fill: this.getColorAttribute()\n },\n STATE_VALUE_ENUM.STATE_NORMAL,\n AttributeLevel.Series\n );\n }\n\n private _initLabelMark() {\n if (this._label.visible !== true) {\n return;\n }\n // Label\n const labelMark = this._createMark(SunburstSeries.mark.label, {\n isSeriesMark: false\n }) as ITextMark;\n this._labelMark = labelMark;\n }\n\n private _initLabelMarkStyle() {\n if (isNil(this._labelMark)) {\n return;\n }\n this.setMarkStyle(\n this._labelMark,\n {\n visible: d => {\n // 自动隐藏密集标签逻辑.\n const labelAutoVisible = this._labelAutoVisible;\n\n if (isObject(labelAutoVisible) && labelAutoVisible.enable === true) {\n return (\n (d.endAngle - d.startAngle) * (d.outerRadius - d.innerRadius) >\n (labelAutoVisible?.circumference ?? SUNBURST_AUTO_VISIBLE_DEFAULT_THRESHOLD)\n );\n }\n return this._spec.label.visible;\n },\n x: d => d.label?.x + (isValid(this._offsetX) ? this._offsetX : 0),\n y: d => d.label?.y + (isValid(this._offsetY) ? this._offsetY : 0),\n textBaseline: d => d.label?.textBaseline,\n textAlign: d => d.label?.textAlign,\n angle: d => d.label?.angle ?? 0,\n fontSize: 10,\n text: (d: Datum) => d.name\n },\n STATE_VALUE_ENUM.STATE_NORMAL,\n AttributeLevel.Series\n );\n }\n\n protected initTooltip() {\n this._tooltipHelper = new SunburstTooltipHelper(this);\n this._sunburstMark && this._tooltipHelper.activeTriggerSet.mark.add(this._sunburstMark);\n this._labelMark && this._tooltipHelper.activeTriggerSet.mark.add(this._labelMark);\n }\n\n initAnimation() {\n const animationParams: ISunburstAnimationParams = {\n animationInfo: (): animationInfo => {\n // 返回用户的交互元素信息\n return {\n innerRadius: this._computeRadius(array(this.__innerRadius))[0],\n outerRadius: this._computeRadius(array(this.__outerRadius))[0],\n startAngle: array(this._startAngle)[0],\n endAngle: array(this._endAngle)[0]\n };\n }\n };\n\n const appearPreset = (this._spec?.animationAppear as IStateAnimateSpec<SunburstAppearPreset>)?.preset;\n\n this.getMarksInType(MarkTypeEnum.arc).forEach(mark => {\n mark.setAnimationConfig(\n animationConfig(\n Factory.getAnimationInKey('sunburst')?.(animationParams, appearPreset),\n userAnimationConfig(mark.name, this._spec, this._markAttributeContext)\n )\n );\n });\n\n this.getMarksInType(MarkTypeEnum.text).forEach(mark => {\n mark.setAnimationConfig(\n animationConfig(\n Factory.getAnimationInKey('fadeInOut')?.(),\n userAnimationConfig(mark.name, this._spec, this._markAttributeContext)\n )\n );\n });\n }\n\n initEvent() {\n super.initEvent();\n if (this._spec.drill) {\n (this as unknown as IDrillable).bindDrillEvent();\n }\n }\n\n onLayoutEnd(ctx: any): void {\n super.onLayoutEnd(ctx);\n this._rawData.reRunAllTransform();\n }\n\n /**\n * 计算radius, 转换为布局属性\n * @radius radius是一个比例值, 取值范围为[0,1]\n */\n private _computeRadius(radius: number | number[]) {\n if (isArray(radius)) {\n return radius.map(r => {\n return this._computeLayoutRadius() * r;\n });\n }\n return this._computeLayoutRadius() * radius;\n }\n\n private _computeLevel(): {\n innerRadius: number | number[];\n outerRadius: number | number[];\n gap: number | number[];\n label: SunburstLabelConfig | SunburstLabelConfig[];\n } {\n return {\n innerRadius: this._computeRadius(this.__innerRadius),\n outerRadius: this._computeRadius(this.__outerRadius),\n gap: this._gap,\n label: this._labelLayout\n };\n }\n\n getGroupFields(): string[] {\n return [];\n }\n getStackGroupFields(): string[] {\n return [];\n }\n getStackValueField(): string {\n return '';\n }\n\n // make sure this function fast\n protected _noAnimationDataKey(datum: Datum, index: number): unknown | undefined {\n return undefined;\n }\n\n getActiveMarks(): IMark[] {\n return [this._sunburstMark];\n }\n}\n\nmixin(SunburstSeries, Drillable);\n\nexport const registerSunBurstSeries = () => {\n Factory.registerSeries(SunburstSeries.type, SunburstSeries);\n registerArcMark();\n registerTextMark();\n registerFadeInOutAnimation();\n registerSunburstAnimation();\n};\n"]}
|
package/esm/util/math.d.ts
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import type { IBoundsLike } from '@visactor/vutils';
|
|
2
|
-
import type { IPoint,
|
|
3
|
-
import { isNumberClose, isGreater, isLess } from '@visactor/vutils';
|
|
4
|
-
import {
|
|
2
|
+
import type { IPoint, Quadrant } from '../typings';
|
|
3
|
+
import { isNumberClose, isGreater, isLess, normalizeAngle } from '@visactor/vutils';
|
|
4
|
+
import { angleLabelOrientAttribute } from '@visactor/vrender-components';
|
|
5
5
|
export declare const isClose: typeof isNumberClose;
|
|
6
6
|
export { isGreater, isLess, normalizeAngle, angleLabelOrientAttribute };
|
|
7
|
-
export declare function polarToCartesian(point: IPolarPoint): IPoint;
|
|
8
7
|
export declare function computeQuadrant(angle: number): Quadrant;
|
|
9
8
|
export declare function normalizeStartEndAngle(start: number | null, end: number | null): {
|
|
10
9
|
startAngle: number;
|
package/esm/util/math.js
CHANGED
|
@@ -2,24 +2,14 @@ import { isValidNumber } from "./type";
|
|
|
2
2
|
|
|
3
3
|
import { regressionLinear } from "@visactor/vgrammar-util";
|
|
4
4
|
|
|
5
|
-
import { isNumberClose, isGreater, isLess, isValid, PointService, median as visMedian, maxInArray, minInArray } from "@visactor/vutils";
|
|
5
|
+
import { isNumberClose, isGreater, isLess, isValid, PointService, median as visMedian, maxInArray, minInArray, normalizeAngle } from "@visactor/vutils";
|
|
6
6
|
|
|
7
|
-
import {
|
|
7
|
+
import { angleLabelOrientAttribute } from "@visactor/vrender-components";
|
|
8
8
|
|
|
9
9
|
export const isClose = isNumberClose;
|
|
10
10
|
|
|
11
11
|
export { isGreater, isLess, normalizeAngle, angleLabelOrientAttribute };
|
|
12
12
|
|
|
13
|
-
export function polarToCartesian(point) {
|
|
14
|
-
return point.radius ? {
|
|
15
|
-
x: Math.cos(point.angle) * point.radius,
|
|
16
|
-
y: Math.sin(point.angle) * point.radius
|
|
17
|
-
} : {
|
|
18
|
-
x: 0,
|
|
19
|
-
y: 0
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
|
|
23
13
|
export function computeQuadrant(angle) {
|
|
24
14
|
return (angle = normalizeAngle(angle)) > 0 && angle <= Math.PI / 2 ? 2 : angle > Math.PI / 2 && angle <= Math.PI ? 3 : angle > Math.PI && angle <= 3 * Math.PI / 2 ? 4 : 1;
|
|
25
15
|
}
|