@visactor/vchart 1.12.4 → 1.12.6
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.js +639 -811
- package/build/index.min.js +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/cjs/chart/base/base-chart-transformer.js +4 -4
- package/cjs/chart/base/base-chart-transformer.js.map +1 -1
- package/cjs/chart/base/base-chart.js +2 -2
- package/cjs/chart/base/base-chart.js.map +1 -1
- package/cjs/chart/mosaic/mosaic.d.ts +0 -1
- package/cjs/chart/mosaic/mosaic.js +0 -3
- package/cjs/chart/mosaic/mosaic.js.map +1 -1
- package/cjs/chart/pie/interface.d.ts +2 -2
- package/cjs/chart/pie/interface.js.map +1 -1
- package/cjs/chart/polar/interface.d.ts +2 -0
- package/cjs/chart/polar/interface.js.map +1 -1
- package/cjs/compile/mark/compilable-mark.d.ts +1 -4
- package/cjs/compile/mark/compilable-mark.js +6 -13
- package/cjs/compile/mark/compilable-mark.js.map +1 -1
- package/cjs/compile/mark/interface.d.ts +1 -2
- package/cjs/compile/mark/interface.js.map +1 -1
- package/cjs/component/axis/base-axis.d.ts +1 -2
- package/cjs/component/axis/base-axis.js +0 -3
- package/cjs/component/axis/base-axis.js.map +1 -1
- package/cjs/component/axis/cartesian/axis.d.ts +1 -0
- package/cjs/component/axis/cartesian/axis.js +29 -2
- package/cjs/component/axis/cartesian/axis.js.map +1 -1
- package/cjs/component/axis/polar/axis.d.ts +0 -1
- package/cjs/component/axis/polar/axis.js +7 -37
- package/cjs/component/axis/polar/axis.js.map +1 -1
- package/cjs/component/axis/polar/interface/spec.d.ts +3 -1
- package/cjs/component/axis/polar/interface/spec.js.map +1 -1
- package/cjs/component/axis/polar/util/common.js +1 -1
- package/cjs/component/axis/polar/util/common.js.map +1 -1
- package/cjs/component/base/base-component.js +1 -3
- package/cjs/component/base/base-component.js.map +1 -1
- package/cjs/component/brush/brush.js +2 -8
- package/cjs/component/brush/brush.js.map +1 -1
- package/cjs/component/crosshair/cartesian.js +2 -18
- package/cjs/component/crosshair/cartesian.js.map +1 -1
- package/cjs/component/crosshair/polar.js +2 -18
- package/cjs/component/crosshair/polar.js.map +1 -1
- package/cjs/component/custom-mark/custom-mark.d.ts +1 -4
- package/cjs/component/custom-mark/custom-mark.js +3 -28
- package/cjs/component/custom-mark/custom-mark.js.map +1 -1
- package/cjs/component/data-zoom/data-zoom/data-zoom.d.ts +0 -3
- package/cjs/component/data-zoom/data-zoom/data-zoom.js +0 -19
- package/cjs/component/data-zoom/data-zoom/data-zoom.js.map +1 -1
- package/cjs/component/data-zoom/scroll-bar/scroll-bar.d.ts +0 -3
- package/cjs/component/data-zoom/scroll-bar/scroll-bar.js +0 -19
- package/cjs/component/data-zoom/scroll-bar/scroll-bar.js.map +1 -1
- package/cjs/component/indicator/indicator.js +2 -18
- package/cjs/component/indicator/indicator.js.map +1 -1
- package/cjs/component/interface/common.d.ts +1 -1
- package/cjs/component/interface/common.js.map +1 -1
- package/cjs/component/label/base-label.d.ts +1 -2
- package/cjs/component/label/base-label.js +0 -3
- package/cjs/component/label/base-label.js.map +1 -1
- package/cjs/component/label/interface.d.ts +2 -2
- package/cjs/component/label/interface.js.map +1 -1
- package/cjs/component/label/label.d.ts +0 -1
- package/cjs/component/label/label.js +2 -12
- package/cjs/component/label/label.js.map +1 -1
- package/cjs/component/label/total-label.d.ts +1 -1
- package/cjs/component/label/total-label.js +5 -12
- package/cjs/component/label/total-label.js.map +1 -1
- package/cjs/component/label/util.d.ts +1 -1
- package/cjs/component/label/util.js +12 -7
- package/cjs/component/label/util.js.map +1 -1
- package/cjs/component/legend/continuous/legend.js +6 -18
- package/cjs/component/legend/continuous/legend.js.map +1 -1
- package/cjs/component/legend/discrete/legend.js +1 -17
- package/cjs/component/legend/discrete/legend.js.map +1 -1
- package/cjs/component/legend/util.d.ts +2 -2
- package/cjs/component/map-label/component.js +3 -8
- package/cjs/component/map-label/component.js.map +1 -1
- package/cjs/component/marker/base-marker.js +2 -18
- package/cjs/component/marker/base-marker.js.map +1 -1
- package/cjs/component/player/player.d.ts +1 -3
- package/cjs/component/player/player.js +0 -9
- package/cjs/component/player/player.js.map +1 -1
- package/cjs/component/title/title.js +2 -18
- package/cjs/component/title/title.js.map +1 -1
- package/cjs/component/tooltip/tooltip.d.ts +1 -3
- package/cjs/component/tooltip/tooltip.js +0 -19
- package/cjs/component/tooltip/tooltip.js.map +1 -1
- package/cjs/component/util.d.ts +3 -0
- package/cjs/component/util.js +16 -1
- package/cjs/component/util.js.map +1 -1
- package/cjs/constant/correlation.js +1 -2
- package/cjs/constant/layout.js +2 -1
- 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/vchart.d.ts +1 -1
- package/cjs/core/vchart.js +20 -20
- package/cjs/core/vchart.js.map +1 -1
- package/cjs/event/event-dispatcher.js +1 -9
- package/cjs/event/event-dispatcher.js.map +1 -1
- package/cjs/region/region.js +2 -3
- package/cjs/region/region.js.map +1 -1
- package/cjs/series/base/base-series-transformer.js +7 -4
- package/cjs/series/base/base-series-transformer.js.map +1 -1
- package/cjs/series/base/base-series.d.ts +6 -5
- package/cjs/series/base/base-series.js +25 -16
- package/cjs/series/base/base-series.js.map +1 -1
- package/cjs/series/base/constant.js +1 -0
- package/cjs/series/base/constant.js.map +1 -1
- package/cjs/series/dot/dot.d.ts +0 -1
- package/cjs/series/dot/dot.js +0 -5
- package/cjs/series/dot/dot.js.map +1 -1
- package/cjs/series/gauge/interface.d.ts +1 -1
- package/cjs/series/gauge/interface.js.map +1 -1
- package/cjs/series/polar/animation.d.ts +9 -11
- package/cjs/series/polar/animation.js +28 -35
- package/cjs/series/polar/animation.js.map +1 -1
- package/cjs/series/polar/polar.js +9 -2
- package/cjs/series/polar/polar.js.map +1 -1
- package/cjs/series/radar/animation.d.ts +0 -3
- package/cjs/series/radar/animation.js +4 -4
- package/cjs/series/radar/animation.js.map +1 -1
- package/cjs/series/radar/radar.js +11 -7
- package/cjs/series/radar/radar.js.map +1 -1
- package/cjs/series/word-cloud/base.js +21 -10
- package/cjs/series/word-cloud/base.js.map +1 -1
- package/cjs/theme/builtin/common/mark.js +2 -0
- package/cjs/theme/builtin/common/mark.js.map +1 -1
- package/cjs/typings/spec/common.d.ts +6 -2
- package/cjs/typings/spec/common.js.map +1 -1
- package/cjs/util/math.d.ts +1 -0
- package/cjs/util/math.js +7 -2
- package/cjs/util/math.js.map +1 -1
- package/esm/chart/base/base-chart-transformer.js +5 -3
- package/esm/chart/base/base-chart-transformer.js.map +1 -1
- package/esm/chart/base/base-chart.js +2 -2
- package/esm/chart/base/base-chart.js.map +1 -1
- package/esm/chart/mosaic/mosaic.d.ts +0 -1
- package/esm/chart/mosaic/mosaic.js +0 -3
- package/esm/chart/mosaic/mosaic.js.map +1 -1
- package/esm/chart/pie/interface.d.ts +2 -2
- package/esm/chart/pie/interface.js.map +1 -1
- package/esm/chart/polar/interface.d.ts +2 -0
- package/esm/chart/polar/interface.js.map +1 -1
- package/esm/compile/mark/compilable-mark.d.ts +1 -4
- package/esm/compile/mark/compilable-mark.js +7 -13
- package/esm/compile/mark/compilable-mark.js.map +1 -1
- package/esm/compile/mark/interface.d.ts +1 -2
- package/esm/compile/mark/interface.js.map +1 -1
- package/esm/component/axis/base-axis.d.ts +1 -2
- package/esm/component/axis/base-axis.js +0 -3
- package/esm/component/axis/base-axis.js.map +1 -1
- package/esm/component/axis/cartesian/axis.d.ts +1 -0
- package/esm/component/axis/cartesian/axis.js +29 -2
- package/esm/component/axis/cartesian/axis.js.map +1 -1
- package/esm/component/axis/polar/axis.d.ts +0 -1
- package/esm/component/axis/polar/axis.js +7 -38
- package/esm/component/axis/polar/axis.js.map +1 -1
- package/esm/component/axis/polar/interface/spec.d.ts +3 -1
- package/esm/component/axis/polar/interface/spec.js.map +1 -1
- package/esm/component/axis/polar/util/common.js +2 -2
- package/esm/component/axis/polar/util/common.js.map +1 -1
- package/esm/component/base/base-component.js +1 -3
- package/esm/component/base/base-component.js.map +1 -1
- package/esm/component/brush/brush.js +4 -8
- package/esm/component/brush/brush.js.map +1 -1
- package/esm/component/crosshair/cartesian.js +4 -18
- package/esm/component/crosshair/cartesian.js.map +1 -1
- package/esm/component/crosshair/polar.js +4 -18
- package/esm/component/crosshair/polar.js.map +1 -1
- package/esm/component/custom-mark/custom-mark.d.ts +1 -4
- package/esm/component/custom-mark/custom-mark.js +3 -30
- package/esm/component/custom-mark/custom-mark.js.map +1 -1
- package/esm/component/data-zoom/data-zoom/data-zoom.d.ts +0 -3
- package/esm/component/data-zoom/data-zoom/data-zoom.js +1 -20
- package/esm/component/data-zoom/data-zoom/data-zoom.js.map +1 -1
- package/esm/component/data-zoom/scroll-bar/scroll-bar.d.ts +0 -3
- package/esm/component/data-zoom/scroll-bar/scroll-bar.js +1 -20
- package/esm/component/data-zoom/scroll-bar/scroll-bar.js.map +1 -1
- package/esm/component/indicator/indicator.js +4 -18
- package/esm/component/indicator/indicator.js.map +1 -1
- package/esm/component/interface/common.d.ts +1 -1
- package/esm/component/interface/common.js.map +1 -1
- package/esm/component/label/base-label.d.ts +1 -2
- package/esm/component/label/base-label.js +0 -3
- package/esm/component/label/base-label.js.map +1 -1
- package/esm/component/label/interface.d.ts +2 -2
- package/esm/component/label/interface.js.map +1 -1
- package/esm/component/label/label.d.ts +0 -1
- package/esm/component/label/label.js +1 -13
- package/esm/component/label/label.js.map +1 -1
- package/esm/component/label/total-label.d.ts +1 -1
- package/esm/component/label/total-label.js +4 -13
- package/esm/component/label/total-label.js.map +1 -1
- package/esm/component/label/util.d.ts +1 -1
- package/esm/component/label/util.js +12 -7
- package/esm/component/label/util.js.map +1 -1
- package/esm/component/legend/continuous/legend.js +7 -18
- package/esm/component/legend/continuous/legend.js.map +1 -1
- package/esm/component/legend/discrete/legend.js +3 -19
- package/esm/component/legend/discrete/legend.js.map +1 -1
- package/esm/component/legend/util.d.ts +2 -2
- package/esm/component/map-label/component.js +3 -7
- package/esm/component/map-label/component.js.map +1 -1
- package/esm/component/marker/base-marker.js +4 -18
- package/esm/component/marker/base-marker.js.map +1 -1
- package/esm/component/player/player.d.ts +1 -3
- package/esm/component/player/player.js +1 -10
- package/esm/component/player/player.js.map +1 -1
- package/esm/component/title/title.js +4 -18
- package/esm/component/title/title.js.map +1 -1
- package/esm/component/tooltip/tooltip.d.ts +1 -3
- package/esm/component/tooltip/tooltip.js +1 -20
- package/esm/component/tooltip/tooltip.js.map +1 -1
- package/esm/component/util.d.ts +3 -0
- package/esm/component/util.js +14 -1
- package/esm/component/util.js.map +1 -1
- package/esm/constant/correlation.js +1 -2
- package/esm/constant/layout.js +2 -1
- 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/vchart.d.ts +1 -1
- package/esm/core/vchart.js +22 -22
- package/esm/core/vchart.js.map +1 -1
- package/esm/event/event-dispatcher.js +1 -9
- package/esm/event/event-dispatcher.js.map +1 -1
- package/esm/region/region.js +2 -3
- package/esm/region/region.js.map +1 -1
- package/esm/series/base/base-series-transformer.js +7 -4
- package/esm/series/base/base-series-transformer.js.map +1 -1
- package/esm/series/base/base-series.d.ts +6 -5
- package/esm/series/base/base-series.js +23 -15
- package/esm/series/base/base-series.js.map +1 -1
- package/esm/series/base/constant.js +1 -0
- package/esm/series/base/constant.js.map +1 -1
- package/esm/series/dot/dot.d.ts +0 -1
- package/esm/series/dot/dot.js +0 -5
- package/esm/series/dot/dot.js.map +1 -1
- package/esm/series/gauge/interface.d.ts +1 -1
- package/esm/series/gauge/interface.js.map +1 -1
- package/esm/series/polar/animation.d.ts +9 -11
- package/esm/series/polar/animation.js +27 -35
- package/esm/series/polar/animation.js.map +1 -1
- package/esm/series/polar/polar.js +9 -1
- package/esm/series/polar/polar.js.map +1 -1
- package/esm/series/radar/animation.d.ts +0 -3
- package/esm/series/radar/animation.js +4 -4
- package/esm/series/radar/animation.js.map +1 -1
- package/esm/series/radar/radar.js +11 -7
- package/esm/series/radar/radar.js.map +1 -1
- package/esm/series/word-cloud/base.js +20 -10
- package/esm/series/word-cloud/base.js.map +1 -1
- package/esm/theme/builtin/common/mark.js +2 -0
- package/esm/theme/builtin/common/mark.js.map +1 -1
- package/esm/typings/spec/common.d.ts +6 -2
- package/esm/typings/spec/common.js.map +1 -1
- package/esm/util/math.d.ts +1 -0
- package/esm/util/math.js +4 -0
- package/esm/util/math.js.map +1 -1
- package/package.json +17 -17
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/component/axis/polar/axis.ts"],"names":[],"mappings":"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","file":"axis.js","sourcesContent":["import { POLAR_DEFAULT_RADIUS, POLAR_END_RADIAN, POLAR_START_RADIAN } from '../../../constant/polar';\nimport type { IBaseScale, BandScale } from '@visactor/vscale';\n// eslint-disable-next-line no-duplicate-imports\nimport { isContinuous } from '@visactor/vscale';\nimport { LayoutZIndex } from '../../../constant/layout';\nimport type { IPolarAxis, IPolarAxisCommonSpec } from './interface';\nimport type { IComponentOption } from '../../interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { ComponentTypeEnum } from '../../interface/type';\nimport { Factory } from '../../../core/factory';\nimport { eachSeries } from '../../../util/model';\nimport type { IPolarTickDataOpt } from '@visactor/vrender-components';\n// eslint-disable-next-line no-duplicate-imports\nimport type { IPolarSeries } from '../../../series/interface';\nimport type {\n IPoint,\n IPolarOrientType,\n IPolarPoint,\n Datum,\n StringOrNumber,\n ILayoutType,\n ILayoutNumber\n} from '../../../typings';\nimport { isPolarAxisSeries } from '../../../series/util/utils';\nimport { getAxisItem, getAxisLabelOffset, isValidPolarAxis, shouldUpdateAxis } from '../util';\nimport type { Dict, Maybe } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { PointService, degreeToRadian, isValid, isArray, isValidNumber, polarToCartesian } from '@visactor/vutils';\nimport type { IEffect, IModelSpecInfo } from '../../../model/interface';\nimport { AxisComponent } from '../base-axis';\nimport type { IBandAxisSpec, ITick } from '../interface';\nimport { HOOK_EVENT } from '@visactor/vgrammar-core';\nimport { computeLayoutRadius, getPolarAxisInfo } from './util';\n// eslint-disable-next-line no-duplicate-imports\nimport { mergeSpec } from '@visactor/vutils-extension';\nimport { calcLayoutNumber } from '../../../util/space';\n\nexport abstract class PolarAxis<T extends IPolarAxisCommonSpec = IPolarAxisCommonSpec>\n extends AxisComponent<T>\n implements IPolarAxis\n{\n static type = ComponentTypeEnum.polarAxis;\n type = ComponentTypeEnum.polarAxis;\n name: string = ComponentTypeEnum.polarAxis;\n\n static specKey = 'axes';\n\n protected readonly _defaultBandPosition = 0;\n protected readonly _defaultBandInnerPadding = 0;\n protected readonly _defaultBandOuterPadding = 0;\n\n layoutType: ILayoutType = 'absolute';\n layoutZIndex: number = LayoutZIndex.Axis;\n protected _tick: ITick | undefined = undefined;\n\n protected _center: { x: string | number; y: string | number } | null = null;\n get center() {\n return this._center;\n }\n\n protected _startAngle: number = POLAR_START_RADIAN;\n get startAngle() {\n return this._startAngle;\n }\n\n protected _endAngle: number = POLAR_END_RADIAN;\n get endAngle() {\n return this._endAngle;\n }\n\n protected _orient: IPolarOrientType = 'radius';\n getOrient() {\n return this._orient;\n }\n\n protected _groupScales: IBaseScale[] = [];\n getGroupScales() {\n return this._groupScales;\n }\n\n private _axisStyle: any;\n private _gridStyle: any;\n\n static getSpecInfo(chartSpec: any): Maybe<IModelSpecInfo[]> {\n const axesSpec = chartSpec[this.specKey];\n if (!axesSpec) {\n return null;\n }\n\n if (!isArray(axesSpec)) {\n if (!isValidPolarAxis(axesSpec)) {\n return null;\n }\n const { axisType, componentName, startAngle, endAngle, center, outerRadius, layoutRadius } = getPolarAxisInfo(\n axesSpec,\n chartSpec\n );\n axesSpec.center = center;\n axesSpec.startAngle = startAngle;\n axesSpec.endAngle = endAngle;\n axesSpec.outerRadius = outerRadius;\n axesSpec.type = axisType;\n axesSpec.layoutRadius = layoutRadius;\n return [\n {\n spec: axesSpec,\n specPath: [this.specKey],\n specInfoPath: ['component', this.specKey, 0],\n type: componentName\n }\n ];\n }\n const specInfos: IModelSpecInfo[] = [];\n let angleAxisIndex: number;\n let radiusAxisIndex: number;\n const radiusAxisSpecInfos: IModelSpecInfo[] = [];\n const angleAxisSpecInfos: IModelSpecInfo[] = [];\n axesSpec.forEach((s: any, i: number) => {\n if (!isValidPolarAxis(s)) {\n return;\n }\n const { axisType, componentName, startAngle, endAngle, center, outerRadius, layoutRadius } = getPolarAxisInfo(\n s,\n chartSpec\n );\n s.center = center;\n s.startAngle = startAngle;\n s.endAngle = endAngle;\n s.outerRadius = outerRadius;\n s.type = axisType;\n s.layoutRadius = layoutRadius;\n const info = {\n spec: s,\n specPath: [this.specKey, i],\n specInfoPath: ['component', this.specKey, i],\n type: componentName\n };\n specInfos.push(info);\n if (s.orient === 'radius') {\n radiusAxisSpecInfos.push(info);\n radiusAxisIndex = i;\n } else {\n angleAxisSpecInfos.push(info);\n angleAxisIndex = i;\n }\n });\n radiusAxisSpecInfos.forEach(info => {\n (info as any).angleAxisIndex = angleAxisIndex;\n });\n\n angleAxisSpecInfos.forEach(info => {\n (info as any).radiusAxisIndex = radiusAxisIndex;\n });\n return specInfos;\n }\n\n static createComponent(specInfo: IModelSpecInfo, options: IComponentOption) {\n const { spec, ...others } = specInfo;\n const C = Factory.getComponentInKey(others.type);\n if (C) {\n return new C(spec, {\n ...options,\n ...others\n }) as IPolarAxis;\n }\n options.onError(`Component ${others.type} not found`);\n return null;\n }\n\n constructor(spec: T, options: IComponentOption) {\n super(spec, options);\n\n this._coordinateType = 'polar';\n }\n\n effect: IEffect = {\n scaleUpdate: param => {\n this.computeData(param?.value);\n eachSeries(\n this._regions,\n s => {\n if (this.getOrient() === 'radius') {\n if (\n shouldUpdateAxis(\n (s as IPolarSeries).radiusAxisHelper,\n this.axisHelper(),\n isValid(this._seriesUserId) || isValid(this._seriesIndex)\n )\n ) {\n (s as IPolarSeries).radiusAxisHelper = this.axisHelper();\n }\n } else {\n if (\n shouldUpdateAxis(\n (s as IPolarSeries).angleAxisHelper,\n this.axisHelper(),\n isValid(this._seriesUserId) || isValid(this._seriesIndex)\n )\n ) {\n (s as IPolarSeries).angleAxisHelper = this.axisHelper();\n }\n }\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n }\n };\n\n setAttrFromSpec() {\n super.setAttrFromSpec();\n\n if (this.visible) {\n this._axisStyle = this._getAxisAttributes();\n this._gridStyle = this._getGridAttributes();\n }\n\n this._tick = this._spec.tick;\n this._orient = this._spec.orient === 'angle' ? 'angle' : 'radius';\n this._center = this._spec.center;\n this._startAngle = degreeToRadian(this._spec.startAngle);\n this._endAngle = degreeToRadian(this._spec.endAngle);\n this._inverse = this._spec.inverse;\n }\n\n _transformLayoutPosition = (pos: Partial<IPoint>) => {\n const region = this.getRegions()?.[0];\n return region ? region.getLayoutStartPoint() : pos;\n };\n\n onRender(ctx: any): void {\n // do nothing\n }\n\n changeRegions(/** regions: IRegion[] */): void {\n // do nothing\n }\n\n protected _tickTransformOption() {\n return {\n ...super._tickTransformOption(),\n noDecimal: this._tick?.noDecimals,\n startAngle: this.startAngle,\n labelOffset: getAxisLabelOffset(this._spec),\n getRadius: () => this.getOuterRadius(),\n inside: this._spec.inside\n } as IPolarTickDataOpt;\n }\n\n afterCompile() {\n const product = this._axisMark?.getProduct();\n if (product) {\n product.addEventListener(HOOK_EVENT.AFTER_ELEMENT_ENCODE, () => {\n if (this._isLayout === false) {\n // 布局结束之后再进行插件的调用\n this._delegateAxisContainerEvent(product.getGroupGraphicItem());\n }\n });\n }\n }\n\n protected updateScaleRange() {\n const prevRange = this._scale.range();\n let newRange: [number, number];\n\n if (this.getOrient() === 'radius') {\n newRange = this._inverse\n ? [this.computeLayoutOuterRadius(), this.computeLayoutInnerRadius()]\n : [this.computeLayoutInnerRadius(), this.computeLayoutOuterRadius()];\n } else {\n newRange = this._inverse ? [this._endAngle, this._startAngle] : [this._startAngle, this._endAngle];\n }\n\n if (prevRange && newRange && prevRange[0] === newRange[0] && prevRange[1] === newRange[1]) {\n return false;\n }\n\n this._scale.range(newRange);\n\n return true;\n }\n\n protected collectSeriesField(depth: number, series: IPolarSeries) {\n let field: string | string[];\n\n if (depth > 0) {\n field = series.getGroups()?.fields?.[depth];\n } else {\n field = this.getOrient() === 'radius' ? series.getRadiusField() : series.getAngleField();\n }\n return field;\n }\n\n protected abstract computeDomain(data: { min: number; max: number; values: any[] }[]): StringOrNumber[];\n\n protected updateSeriesScale(): void {\n eachSeries(\n this._regions,\n s => {\n if (this.getOrient() === 'radius') {\n if (\n shouldUpdateAxis(\n (s as IPolarSeries).radiusAxisHelper,\n this.axisHelper(),\n isValid(this._seriesUserId) || isValid(this._seriesIndex)\n )\n ) {\n (s as IPolarSeries).setRadiusScale(this._scale);\n (s as IPolarSeries).radiusAxisHelper = this.axisHelper();\n }\n } else {\n if (\n shouldUpdateAxis(\n (s as IPolarSeries).angleAxisHelper,\n this.axisHelper(),\n isValid(this._seriesUserId) || isValid(this._seriesIndex)\n )\n ) {\n (s as IPolarSeries).setAngleScale(this._scale);\n (s as IPolarSeries).angleAxisHelper = this.axisHelper();\n }\n }\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n }\n\n protected getSeriesStatisticsField(s: IPolarSeries) {\n const f = this.getOrient() === 'radius' ? s.getRadiusField() : s.getAngleField();\n if (isContinuous(this._scale.type)) {\n return f;\n }\n return [f[0]];\n }\n\n protected initGroupScales() {\n // do nothing\n }\n\n // axisHelper\n protected axisHelper() {\n const getScale = (depth: number = 0) => {\n return this._scales[depth];\n };\n\n const helper = {\n isContinuous: isContinuous(this._scale.type),\n dataToPosition: this.dataToPosition.bind(this),\n coordToPoint: this.coordToPoint.bind(this),\n pointToCoord: this.pointToCoord.bind(this),\n center: this.getCenter.bind(this),\n layoutRadius: this._computeLayoutRadius.bind(this),\n getScale,\n getAxisId: () => this.id,\n getSpec: () => this._spec\n };\n return helper;\n }\n\n positionToData(position: IPoint) {\n const coord = this.pointToCoord(position);\n if (this.getOrient() === 'radius') {\n return this.invert(coord.radius);\n }\n return this.invert(coord.angle);\n }\n\n /**\n * 将半径和角度转换为笛卡尔坐标点\n * @param point 角度 & 弧度信息\n * @returns 笛卡尔坐标点 { x, y }\n */\n coordToPoint(point: IPolarPoint): IPoint {\n // center & startAngle 都是坐标系转换的配置,在 scale 中不生效,仅在最终转换时生效\n const center = this.getCenter();\n\n return polarToCartesian(center, point.radius, point.angle);\n }\n\n /**\n * 将笛卡尔坐标转换为对应的半径和弧度\n * @param point 笛卡尔坐标点 { x, y }\n * @returns 角度 & 弧度信息 { radius, angle }\n */\n pointToCoord(point: IPoint): IPolarPoint {\n const { x: centerX, y: centerY } = this.getCenter();\n let dx = point.x - centerX;\n let dy = point.y - centerY;\n const startAngle = this._startAngle;\n const endAngle = this._endAngle;\n const radius = Math.sqrt(dx * dx + dy * dy);\n dx /= radius;\n dy /= radius;\n\n let radian = Math.atan2(dy, dx);\n if (radian < startAngle) {\n while (radian <= startAngle) {\n radian += Math.PI * 2;\n }\n }\n if (radian > endAngle) {\n while (radian >= endAngle) {\n radian -= Math.PI * 2;\n }\n }\n return {\n radius,\n angle: radian\n };\n }\n\n /**\n * 获取坐标轴圆心位置\n * @returns 圆心位置\n */\n getCenter = (): IPoint => {\n const layoutRect = this.getRefLayoutRect();\n const { width, height } = layoutRect;\n\n return {\n x: calcLayoutNumber(this._center?.x as ILayoutNumber, width, layoutRect, width / 2),\n y: calcLayoutNumber(this._center?.y as ILayoutNumber, height, layoutRect, height / 2)\n };\n };\n\n /**\n * 获取极坐标半径值\n * @returns 半径数值\n */\n getOuterRadius(): number {\n return this.computeLayoutOuterRadius();\n }\n\n /**\n * 获取极坐标内半径值\n * @returns 内半径数值\n */\n getInnerRadius(): number {\n return this.computeLayoutInnerRadius();\n }\n\n updateLayoutAttribute(): void {\n if (this._visible) {\n if (this.getOrient() === 'radius') {\n this._layoutRadiusAxis();\n } else {\n this._layoutAngleAxis();\n }\n }\n\n super.updateLayoutAttribute();\n }\n\n protected _getNormalizedValue(values: any[], length: number) {\n return length === 0 ? 0 : (this.dataToPosition(values) - this._getStartValue()) / length;\n }\n\n protected getLabelItems(length: number) {\n const tickLatestData = this.getTickData()?.getLatestData();\n if (tickLatestData && tickLatestData.length) {\n return [\n tickLatestData.map((obj: Datum) => {\n return getAxisItem(obj.value, this._getNormalizedValue([obj.value], length));\n })\n ];\n }\n return [];\n }\n protected _getStartValue() {\n if (this.getOrient() === 'radius') {\n return this.computeLayoutInnerRadius();\n }\n\n return this._startAngle;\n }\n\n private _layoutAngleAxis(): void {\n const center = this.getCenter();\n const radius = this.computeLayoutOuterRadius();\n const innerRadius = this.computeLayoutInnerRadius();\n const angleRange = this._endAngle - this._startAngle;\n const items = this.getLabelItems(angleRange);\n const commonAttrs = {\n ...this.getLayoutStartPoint(),\n inside: this._spec.inside,\n center,\n radius,\n innerRadius,\n startAngle: this._startAngle,\n endAngle: this._endAngle,\n sides: this._getRelatedAxis((this._option as any).radiusAxisIndex)?.getSpec()?.grid?.smooth\n ? undefined\n : this.getScale().domain().length\n };\n const attrs: any = {\n ...commonAttrs,\n title: {\n text: this._spec.title.text || this._dataFieldText\n },\n items,\n orient: 'angle'\n };\n if (this._spec.grid.visible) {\n attrs.grid = {\n type: 'line',\n smoothLink: true,\n items: items[0],\n ...commonAttrs\n };\n }\n this._update(attrs);\n }\n\n private _layoutRadiusAxis(): void {\n const center = this.getCenter();\n const radius = this.computeLayoutOuterRadius();\n const innerRadius = this.computeLayoutInnerRadius();\n const endPoint = this.coordToPoint({ angle: this._startAngle, radius });\n const startPoint = this.coordToPoint({ angle: this._startAngle, radius: innerRadius });\n const distance = PointService.distancePP(startPoint, endPoint);\n const items = this.getLabelItems(distance);\n const commonAttrs = {\n ...this.getLayoutStartPoint(),\n start: startPoint,\n end: endPoint,\n verticalFactor: -1\n };\n const attrs: any = {\n ...commonAttrs,\n title: {\n text: this._spec.title.text || this._dataFieldText\n },\n items,\n orient: 'radius'\n };\n if (this._spec.grid?.visible) {\n attrs.grid = {\n items: items[0],\n type: this._spec.grid?.smooth ? 'circle' : 'polygon',\n center,\n closed: true,\n sides: this._getRelatedAxis((this._option as any).angleAxisIndex)\n ?.getScale()\n .domain().length,\n startAngle: this._startAngle,\n endAngle: this._endAngle,\n ...commonAttrs\n };\n }\n this._update(attrs);\n }\n\n protected _getRelatedAxis(index: number): IPolarAxis | undefined {\n if (isValid(index)) {\n return this._option.getComponentByIndex(this.specKey, index) as IPolarAxis;\n }\n return undefined;\n }\n\n private _computeLayoutRadius() {\n return computeLayoutRadius(\n () => this._spec.layoutRadius,\n this.getRefLayoutRect,\n this.getCenter,\n () => ({ startAngle: this._startAngle, endAngle: this._endAngle })\n );\n }\n\n private computeLayoutOuterRadius() {\n /**\n * 兼容radius旧配置\n * @deprecated use outerRadius instead\n */\n const radius = this._spec.outerRadius ?? this._spec.radius;\n const outerRadius = radius ?? this.getRefSeriesRadius().outerRadius;\n return this._computeLayoutRadius() * outerRadius;\n }\n\n private computeLayoutInnerRadius() {\n const innerRadius = this._spec.innerRadius ?? this.getRefSeriesRadius().innerRadius;\n return this._computeLayoutRadius() * innerRadius;\n }\n\n private getRefLayoutRect = () => {\n return this.getRegions()[0].getLayoutRect();\n };\n\n private getRefSeriesRadius() {\n let outerRadius: number = POLAR_DEFAULT_RADIUS;\n let innerRadius: number = 0;\n const chartSpec = this.getChart().getSpec() as any;\n // FIXME: 为了保证 common 图表能够应用系列的 radius 配置,当前从相应的 region 中取到 radius 信息\n eachSeries(\n this.getRegions(),\n s => {\n const series = s as IPolarSeries;\n if (isPolarAxisSeries(series.type)) {\n const {\n outerRadius: seriesRadius = chartSpec.outerRadius,\n innerRadius: seriesInnerRadius = chartSpec.innerRadius\n } = series;\n if (isValidNumber(seriesRadius)) {\n outerRadius = seriesRadius;\n }\n if (isValidNumber(seriesInnerRadius)) {\n innerRadius = seriesInnerRadius;\n }\n }\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n return { outerRadius, innerRadius };\n }\n\n private _update(attrs: Dict<unknown>) {\n const { grid: gridAttrs, ...axisAttrs } = attrs;\n const axisProduct = this._axisMark.getProduct(); // 获取语法元素并更新\n axisProduct.encode(mergeSpec({}, this._axisStyle, axisAttrs));\n\n if (this._gridMark) {\n const gridProduct = this._gridMark.getProduct(); // 获取语法元素并更新\n gridProduct.encode(mergeSpec({}, this._gridStyle, gridAttrs));\n }\n }\n\n invert(value: number): number {\n if (this.getOrient() === 'angle' && this._scale.type === 'band') {\n //极坐标轴需要手动取模,超出range时默认会截断\n const range = this._scale.range();\n const rangeValue = range[range.length - 1] - range[0];\n const bandPosition = (this.getSpec() as IBandAxisSpec).bandPosition ?? this._defaultBandPosition;\n const offset = bandPosition === 0.5 ? 0 : (this._scale as BandScale).bandwidth() / 2;\n if (range[0] < 0) {\n const angle = value + offset;\n const transformedAngle = ((angle + Math.abs(range[0])) % rangeValue) - Math.abs(range[0]);\n return this._scale.invert(transformedAngle);\n }\n return this._scale.invert((value + offset) % rangeValue);\n }\n\n return this._scale.invert(value);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/component/axis/polar/axis.ts"],"names":[],"mappings":"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","file":"axis.js","sourcesContent":["import { POLAR_DEFAULT_RADIUS, POLAR_END_RADIAN, POLAR_START_RADIAN } from '../../../constant/polar';\nimport type { IBaseScale, BandScale } from '@visactor/vscale';\n// eslint-disable-next-line no-duplicate-imports\nimport { isContinuous } from '@visactor/vscale';\nimport { LayoutZIndex } from '../../../constant/layout';\nimport type { IPolarAxis, IPolarAxisCommonSpec } from './interface';\nimport type { IComponentOption } from '../../interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { ComponentTypeEnum } from '../../interface/type';\nimport { Factory } from '../../../core/factory';\nimport { eachSeries } from '../../../util/model';\nimport type { IPolarTickDataOpt } from '@visactor/vrender-components';\n// eslint-disable-next-line no-duplicate-imports\nimport type { IPolarSeries } from '../../../series/interface';\nimport type {\n IPoint,\n IPolarOrientType,\n IPolarPoint,\n Datum,\n StringOrNumber,\n ILayoutType,\n ILayoutNumber\n} from '../../../typings';\nimport { isPolarAxisSeries } from '../../../series/util/utils';\nimport { getAxisItem, getAxisLabelOffset, isValidPolarAxis, shouldUpdateAxis } from '../util';\nimport type { Dict, Maybe } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport {\n PointService,\n degreeToRadian,\n isValid,\n isArray,\n isValidNumber,\n polarToCartesian,\n cartesianToPolar\n} from '@visactor/vutils';\nimport type { IEffect, IModelSpecInfo } from '../../../model/interface';\nimport { AxisComponent } from '../base-axis';\nimport type { IBandAxisSpec, ITick } from '../interface';\nimport { HOOK_EVENT } from '@visactor/vgrammar-core';\nimport { computeLayoutRadius, getPolarAxisInfo } from './util';\n// eslint-disable-next-line no-duplicate-imports\nimport { mergeSpec } from '@visactor/vutils-extension';\nimport { calcLayoutNumber } from '../../../util/space';\n\nexport abstract class PolarAxis<T extends IPolarAxisCommonSpec = IPolarAxisCommonSpec>\n extends AxisComponent<T>\n implements IPolarAxis\n{\n static type = ComponentTypeEnum.polarAxis;\n type = ComponentTypeEnum.polarAxis;\n name: string = ComponentTypeEnum.polarAxis;\n\n static specKey = 'axes';\n\n protected readonly _defaultBandPosition = 0;\n protected readonly _defaultBandInnerPadding = 0;\n protected readonly _defaultBandOuterPadding = 0;\n\n layoutType: ILayoutType = 'absolute';\n layoutZIndex: number = LayoutZIndex.Axis;\n protected _tick: ITick | undefined = undefined;\n\n protected _center: { x: string | number; y: string | number } | null = null;\n get center() {\n return this._center;\n }\n\n protected _startAngle: number = POLAR_START_RADIAN;\n get startAngle() {\n return this._startAngle;\n }\n\n protected _endAngle: number = POLAR_END_RADIAN;\n get endAngle() {\n return this._endAngle;\n }\n\n protected _orient: IPolarOrientType = 'radius';\n getOrient() {\n return this._orient;\n }\n\n protected _groupScales: IBaseScale[] = [];\n getGroupScales() {\n return this._groupScales;\n }\n\n private _axisStyle: any;\n private _gridStyle: any;\n\n static getSpecInfo(chartSpec: any): Maybe<IModelSpecInfo[]> {\n if (!chartSpec[this.specKey]) {\n return null;\n }\n const isArraySpec = isArray(chartSpec[this.specKey]);\n const axesSpec = isArraySpec ? chartSpec[this.specKey] : [chartSpec[this.specKey]];\n const specInfos: IModelSpecInfo[] = [];\n let angleAxisIndex: number;\n let radiusAxisIndex: number;\n const radiusAxisSpecInfos: IModelSpecInfo[] = [];\n const angleAxisSpecInfos: IModelSpecInfo[] = [];\n\n axesSpec.forEach((s: any, i: number) => {\n if (!isValidPolarAxis(s)) {\n return;\n }\n const { axisType, componentName, startAngle, endAngle, center, outerRadius, layoutRadius } = getPolarAxisInfo(\n s,\n chartSpec\n );\n s.center = center;\n s.startAngle = startAngle;\n s.endAngle = endAngle;\n s.outerRadius = outerRadius;\n s.type = axisType;\n s.layoutRadius = layoutRadius;\n const info = {\n spec: s,\n specPath: isArraySpec ? [this.specKey, i] : [this.specKey],\n specInfoPath: ['component', this.specKey, i],\n type: componentName\n };\n specInfos.push(info);\n if (s.orient === 'radius') {\n radiusAxisSpecInfos.push(info);\n radiusAxisIndex = i;\n } else {\n angleAxisSpecInfos.push(info);\n angleAxisIndex = i;\n }\n });\n radiusAxisSpecInfos.forEach(info => {\n (info as any).angleAxisIndex = angleAxisIndex;\n });\n\n angleAxisSpecInfos.forEach(info => {\n (info as any).radiusAxisIndex = radiusAxisIndex;\n });\n return specInfos;\n }\n\n static createComponent(specInfo: IModelSpecInfo, options: IComponentOption) {\n const { spec, ...others } = specInfo;\n const C = Factory.getComponentInKey(others.type);\n if (C) {\n return new C(spec, {\n ...options,\n ...others\n }) as IPolarAxis;\n }\n options.onError(`Component ${others.type} not found`);\n return null;\n }\n\n constructor(spec: T, options: IComponentOption) {\n super(spec, options);\n\n this._coordinateType = 'polar';\n }\n\n effect: IEffect = {\n scaleUpdate: param => {\n this.computeData(param?.value);\n eachSeries(\n this._regions,\n s => {\n if (this.getOrient() === 'radius') {\n if (\n shouldUpdateAxis(\n (s as IPolarSeries).radiusAxisHelper,\n this.axisHelper(),\n isValid(this._seriesUserId) || isValid(this._seriesIndex)\n )\n ) {\n (s as IPolarSeries).radiusAxisHelper = this.axisHelper();\n }\n } else {\n if (\n shouldUpdateAxis(\n (s as IPolarSeries).angleAxisHelper,\n this.axisHelper(),\n isValid(this._seriesUserId) || isValid(this._seriesIndex)\n )\n ) {\n (s as IPolarSeries).angleAxisHelper = this.axisHelper();\n }\n }\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n }\n };\n\n setAttrFromSpec() {\n super.setAttrFromSpec();\n\n if (this.visible) {\n this._axisStyle = this._getAxisAttributes();\n this._gridStyle = this._getGridAttributes();\n }\n\n this._tick = this._spec.tick;\n this._orient = this._spec.orient === 'angle' ? 'angle' : 'radius';\n this._center = this._spec.center;\n this._startAngle = degreeToRadian(this._spec.startAngle);\n this._endAngle = degreeToRadian(this._spec.endAngle);\n this._inverse = this._spec.inverse;\n }\n\n _transformLayoutPosition = (pos: Partial<IPoint>) => {\n const region = this.getRegions()?.[0];\n return region ? region.getLayoutStartPoint() : pos;\n };\n\n onRender(ctx: any): void {\n // do nothing\n }\n\n changeRegions(/** regions: IRegion[] */): void {\n // do nothing\n }\n\n protected _tickTransformOption() {\n return {\n ...super._tickTransformOption(),\n noDecimal: this._tick?.noDecimals,\n startAngle: this.startAngle,\n labelOffset: getAxisLabelOffset(this._spec),\n getRadius: () => this.getOuterRadius(),\n inside: this._spec.inside\n } as IPolarTickDataOpt;\n }\n\n protected updateScaleRange() {\n const prevRange = this._scale.range();\n let newRange: [number, number];\n\n if (this.getOrient() === 'radius') {\n newRange = this._inverse\n ? [this.computeLayoutOuterRadius(), this.computeLayoutInnerRadius()]\n : [this.computeLayoutInnerRadius(), this.computeLayoutOuterRadius()];\n } else {\n newRange = this._inverse ? [this._endAngle, this._startAngle] : [this._startAngle, this._endAngle];\n }\n\n if (prevRange && newRange && prevRange[0] === newRange[0] && prevRange[1] === newRange[1]) {\n return false;\n }\n\n this._scale.range(newRange);\n\n return true;\n }\n\n protected collectSeriesField(depth: number, series: IPolarSeries) {\n let field: string | string[];\n\n if (depth > 0) {\n field = series.getGroups()?.fields?.[depth];\n } else {\n field = this.getOrient() === 'radius' ? series.getRadiusField() : series.getAngleField();\n }\n return field;\n }\n\n protected abstract computeDomain(data: { min: number; max: number; values: any[] }[]): StringOrNumber[];\n\n protected updateSeriesScale(): void {\n eachSeries(\n this._regions,\n s => {\n if (this.getOrient() === 'radius') {\n if (\n shouldUpdateAxis(\n (s as IPolarSeries).radiusAxisHelper,\n this.axisHelper(),\n isValid(this._seriesUserId) || isValid(this._seriesIndex)\n )\n ) {\n (s as IPolarSeries).setRadiusScale(this._scale);\n (s as IPolarSeries).radiusAxisHelper = this.axisHelper();\n }\n } else {\n if (\n shouldUpdateAxis(\n (s as IPolarSeries).angleAxisHelper,\n this.axisHelper(),\n isValid(this._seriesUserId) || isValid(this._seriesIndex)\n )\n ) {\n (s as IPolarSeries).setAngleScale(this._scale);\n (s as IPolarSeries).angleAxisHelper = this.axisHelper();\n }\n }\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n }\n\n protected getSeriesStatisticsField(s: IPolarSeries) {\n const f = this.getOrient() === 'radius' ? s.getRadiusField() : s.getAngleField();\n if (isContinuous(this._scale.type)) {\n return f;\n }\n return [f[0]];\n }\n\n protected initGroupScales() {\n // do nothing\n }\n\n // axisHelper\n protected axisHelper() {\n const getScale = (depth: number = 0) => {\n return this._scales[depth];\n };\n\n const helper = {\n isContinuous: isContinuous(this._scale.type),\n dataToPosition: this.dataToPosition.bind(this),\n coordToPoint: this.coordToPoint.bind(this),\n pointToCoord: this.pointToCoord.bind(this),\n center: this.getCenter.bind(this),\n layoutRadius: this._computeLayoutRadius.bind(this),\n getScale,\n getAxisId: () => this.id,\n getSpec: () => this._spec\n };\n return helper;\n }\n\n positionToData(position: IPoint) {\n const coord = this.pointToCoord(position);\n if (this.getOrient() === 'radius') {\n return this.invert(coord.radius);\n }\n return this.invert(coord.angle);\n }\n\n /**\n * 将半径和角度转换为笛卡尔坐标点\n * @param point 角度 & 弧度信息\n * @returns 笛卡尔坐标点 { x, y }\n */\n coordToPoint(point: IPolarPoint): IPoint {\n // center & startAngle 都是坐标系转换的配置,在 scale 中不生效,仅在最终转换时生效\n const center = this.getCenter();\n\n return polarToCartesian(center, point.radius, point.angle);\n }\n\n /**\n * 将笛卡尔坐标转换为对应的半径和弧度\n * @param point 笛卡尔坐标点 { x, y }\n * @returns 角度 & 弧度信息 { radius, angle }\n */\n pointToCoord(point: IPoint): IPolarPoint {\n const center = this.getCenter();\n const startAngle = this._startAngle;\n const endAngle = this._endAngle;\n return cartesianToPolar(point, center, startAngle, endAngle);\n }\n\n /**\n * 获取坐标轴圆心位置\n * @returns 圆心位置\n */\n getCenter = (): IPoint => {\n const layoutRect = this.getRefLayoutRect();\n const { width, height } = layoutRect;\n\n return {\n x: calcLayoutNumber(this._center?.x as ILayoutNumber, width, layoutRect, width / 2),\n y: calcLayoutNumber(this._center?.y as ILayoutNumber, height, layoutRect, height / 2)\n };\n };\n\n /**\n * 获取极坐标半径值\n * @returns 半径数值\n */\n getOuterRadius(): number {\n return this.computeLayoutOuterRadius();\n }\n\n /**\n * 获取极坐标内半径值\n * @returns 内半径数值\n */\n getInnerRadius(): number {\n return this.computeLayoutInnerRadius();\n }\n\n updateLayoutAttribute(): void {\n if (this._visible) {\n if (this.getOrient() === 'radius') {\n this._layoutRadiusAxis();\n } else {\n this._layoutAngleAxis();\n }\n }\n\n super.updateLayoutAttribute();\n }\n\n protected _getNormalizedValue(values: any[], length: number) {\n return length === 0 ? 0 : (this.dataToPosition(values) - this._getStartValue()) / length;\n }\n\n protected getLabelItems(length: number) {\n const tickLatestData = this.getTickData()?.getLatestData();\n if (tickLatestData && tickLatestData.length) {\n return [\n tickLatestData.map((obj: Datum) => {\n return getAxisItem(obj.value, this._getNormalizedValue([obj.value], length));\n })\n ];\n }\n return [];\n }\n protected _getStartValue() {\n if (this.getOrient() === 'radius') {\n return this.computeLayoutInnerRadius();\n }\n\n return this._startAngle;\n }\n\n private _layoutAngleAxis(): void {\n const center = this.getCenter();\n const radius = this.computeLayoutOuterRadius();\n const innerRadius = this.computeLayoutInnerRadius();\n const angleRange = this._endAngle - this._startAngle;\n const items = this.getLabelItems(angleRange);\n const commonAttrs = {\n ...this.getLayoutStartPoint(),\n inside: this._spec.inside,\n center,\n radius,\n innerRadius,\n startAngle: this._startAngle,\n endAngle: this._endAngle,\n sides: this._getRelatedAxis((this._option as any).radiusAxisIndex)?.getSpec()?.grid?.smooth\n ? undefined\n : this.getScale().domain().length\n };\n const attrs: any = {\n ...commonAttrs,\n ...this.getRefLayoutRect(),\n title: {\n text: this._spec.title.text || this._dataFieldText\n },\n items,\n orient: 'angle'\n };\n if (this._spec.grid.visible) {\n attrs.grid = {\n type: 'line',\n smoothLink: true,\n items: items[0],\n ...commonAttrs\n };\n }\n this._update(attrs);\n }\n\n private _layoutRadiusAxis(): void {\n const center = this.getCenter();\n const radius = this.computeLayoutOuterRadius();\n const innerRadius = this.computeLayoutInnerRadius();\n const endPoint = this.coordToPoint({ angle: this._startAngle, radius });\n const startPoint = this.coordToPoint({ angle: this._startAngle, radius: innerRadius });\n const distance = PointService.distancePP(startPoint, endPoint);\n const items = this.getLabelItems(distance);\n const commonAttrs = {\n ...this.getLayoutStartPoint(),\n start: startPoint,\n end: endPoint,\n verticalFactor: -1\n };\n const attrs: any = {\n ...commonAttrs,\n title: {\n text: this._spec.title.text || this._dataFieldText\n },\n items,\n orient: 'radius'\n };\n if (this._spec.grid?.visible) {\n attrs.grid = {\n items: items[0],\n type: this._spec.grid?.smooth ? 'circle' : 'polygon',\n center,\n closed: true,\n sides: this._getRelatedAxis((this._option as any).angleAxisIndex)\n ?.getScale()\n .domain().length,\n startAngle: this._startAngle,\n endAngle: this._endAngle,\n ...commonAttrs\n };\n }\n this._update(attrs);\n }\n\n protected _getRelatedAxis(index: number): IPolarAxis | undefined {\n if (isValid(index)) {\n return this._option.getComponentByIndex(this.specKey, index) as IPolarAxis;\n }\n return undefined;\n }\n\n private _computeLayoutRadius() {\n return computeLayoutRadius(\n () => this._spec.layoutRadius,\n this.getRefLayoutRect,\n this.getCenter,\n () => ({ startAngle: this._startAngle, endAngle: this._endAngle })\n );\n }\n\n private computeLayoutOuterRadius() {\n /**\n * 兼容radius旧配置\n * @deprecated use outerRadius instead\n */\n const radius = this._spec.outerRadius ?? this._spec.radius;\n const outerRadius = radius ?? this.getRefSeriesRadius().outerRadius;\n return this._computeLayoutRadius() * outerRadius;\n }\n\n private computeLayoutInnerRadius() {\n const innerRadius = this._spec.innerRadius ?? this.getRefSeriesRadius().innerRadius;\n return this._computeLayoutRadius() * innerRadius;\n }\n\n private getRefLayoutRect = () => {\n return this.getRegions()[0].getLayoutRect();\n };\n\n private getRefSeriesRadius() {\n let outerRadius: number = POLAR_DEFAULT_RADIUS;\n let innerRadius: number = 0;\n const chartSpec = this.getChart().getSpec() as any;\n // FIXME: 为了保证 common 图表能够应用系列的 radius 配置,当前从相应的 region 中取到 radius 信息\n eachSeries(\n this.getRegions(),\n s => {\n const series = s as IPolarSeries;\n if (isPolarAxisSeries(series.type)) {\n const {\n outerRadius: seriesRadius = chartSpec.outerRadius,\n innerRadius: seriesInnerRadius = chartSpec.innerRadius\n } = series;\n if (isValidNumber(seriesRadius)) {\n outerRadius = seriesRadius;\n }\n if (isValidNumber(seriesInnerRadius)) {\n innerRadius = seriesInnerRadius;\n }\n }\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n return { outerRadius, innerRadius };\n }\n\n private _update(attrs: Dict<unknown>) {\n const { grid: gridAttrs, ...axisAttrs } = attrs;\n const axisProduct = this._axisMark.getProduct(); // 获取语法元素并更新\n axisProduct.encode(mergeSpec({}, this._axisStyle, axisAttrs));\n\n if (this._gridMark) {\n const gridProduct = this._gridMark.getProduct(); // 获取语法元素并更新\n gridProduct.encode(mergeSpec({}, this._gridStyle, gridAttrs));\n }\n }\n\n invert(value: number): number {\n if (this.getOrient() === 'angle' && this._scale.type === 'band') {\n //极坐标轴需要手动取模,超出range时默认会截断\n const range = this._scale.range();\n const rangeValue = range[range.length - 1] - range[0];\n const bandPosition = (this.getSpec() as IBandAxisSpec).bandPosition ?? this._defaultBandPosition;\n const offset = bandPosition === 0.5 ? 0 : (this._scale as BandScale).bandwidth() / 2;\n if (range[0] < 0) {\n const angle = value + offset;\n const transformedAngle = ((angle + Math.abs(range[0])) % rangeValue) - Math.abs(range[0]);\n return this._scale.invert(transformedAngle);\n }\n return this._scale.invert((value + offset) % rangeValue);\n }\n\n return this._scale.invert(value);\n }\n}\n"]}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import type { IPointLike } from '@visactor/vutils';
|
|
2
|
+
import type { AxisLabelOverlap } from '@visactor/vrender-components';
|
|
2
3
|
import type { ILayoutRect, IPolarOrientType } from '../../../../typings';
|
|
3
4
|
import type { IBandAxisSpec, IDomainLine, ILinearAxisSpec, ITitle, ILabel, ICommonAxisSpec } from '../../interface';
|
|
4
5
|
import type { IPolarGrid } from './common';
|
|
5
6
|
export type IPolarAxisSpec = IPolarLinearAxisSpec | IPolarBandAxisSpec;
|
|
7
|
+
export type IPolarAxisLabel = ILabel & Pick<AxisLabelOverlap, 'autoHide' | 'autoHideMethod' | 'autoHideSeparation' | 'autoLimit' | 'limitEllipsis' | 'layoutFunc' | 'autoWrap'>;
|
|
6
8
|
export type IPolarAxisCommonSpec = Omit<ICommonAxisSpec, 'center'> & {
|
|
7
9
|
layoutRadius?: 'auto' | number | ((layoutRect: ILayoutRect, center: IPointLike) => number);
|
|
8
10
|
inside?: boolean;
|
|
@@ -11,7 +13,7 @@ export type IPolarAxisCommonSpec = Omit<ICommonAxisSpec, 'center'> & {
|
|
|
11
13
|
radius?: number;
|
|
12
14
|
subGrid?: IPolarGrid;
|
|
13
15
|
domainLine?: IDomainLine;
|
|
14
|
-
label?:
|
|
16
|
+
label?: IPolarAxisLabel;
|
|
15
17
|
title?: ITitle;
|
|
16
18
|
innerRadius?: number;
|
|
17
19
|
outerRadius?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/component/axis/polar/interface/spec.ts"],"names":[],"mappings":"","file":"spec.js","sourcesContent":["import type { IPointLike } from '@visactor/vutils';\nimport type { ILayoutRect, IPolarOrientType } from '../../../../typings';\nimport type { IBandAxisSpec, IDomainLine, ILinearAxisSpec, ITitle, ILabel, ICommonAxisSpec } from '../../interface';\nimport type { IPolarGrid } from './common';\n\n/** spec */\nexport type IPolarAxisSpec = IPolarLinearAxisSpec | IPolarBandAxisSpec;\n\nexport type IPolarAxisCommonSpec = Omit<ICommonAxisSpec, 'center'> & {\n /**\n * 布局半径,相当于计算内径、外径的基准值\n * 默认值为: region宽度、高度最小值的一般\n * @since 1.11.2\n */\n layoutRadius?: 'auto' | number | ((layoutRect: ILayoutRect, center: IPointLike) => number);\n /**\n * 当配置了 innerRadius 时,可以通过设置 inside: true,将坐标轴展示在内圆。\n * @default false\n */\n inside?: boolean;\n /**\n * 轴位置,枚举类型,支持:`'radius'` 和 `'angle'`\n * - `'radius'` 代表半径轴\n * - `'angle'` 代表角度轴\n */\n orient: IPolarOrientType;\n /**\n * 网格线配置\n */\n grid?: IPolarGrid;\n /**\n * 轴的外半径,数值范围 0 -1\n */\n radius?: number;\n /**\n * 子网格线配置\n */\n subGrid?: IPolarGrid;\n /**\n * 轴线配置\n */\n domainLine?: IDomainLine;\n /**\n * 轴标签配置\n */\n label?:
|
|
1
|
+
{"version":3,"sources":["../src/component/axis/polar/interface/spec.ts"],"names":[],"mappings":"","file":"spec.js","sourcesContent":["import type { IPointLike } from '@visactor/vutils';\nimport type { AxisLabelOverlap } from '@visactor/vrender-components';\nimport type { ILayoutRect, IPolarOrientType } from '../../../../typings';\nimport type { IBandAxisSpec, IDomainLine, ILinearAxisSpec, ITitle, ILabel, ICommonAxisSpec } from '../../interface';\nimport type { IPolarGrid } from './common';\n\n/** spec */\nexport type IPolarAxisSpec = IPolarLinearAxisSpec | IPolarBandAxisSpec;\n\nexport type IPolarAxisLabel = ILabel &\n Pick<\n AxisLabelOverlap,\n 'autoHide' | 'autoHideMethod' | 'autoHideSeparation' | 'autoLimit' | 'limitEllipsis' | 'layoutFunc' | 'autoWrap'\n >;\n\nexport type IPolarAxisCommonSpec = Omit<ICommonAxisSpec, 'center'> & {\n /**\n * 布局半径,相当于计算内径、外径的基准值\n * 默认值为: region宽度、高度最小值的一般\n * @since 1.11.2\n */\n layoutRadius?: 'auto' | number | ((layoutRect: ILayoutRect, center: IPointLike) => number);\n /**\n * 当配置了 innerRadius 时,可以通过设置 inside: true,将坐标轴展示在内圆。\n * @default false\n */\n inside?: boolean;\n /**\n * 轴位置,枚举类型,支持:`'radius'` 和 `'angle'`\n * - `'radius'` 代表半径轴\n * - `'angle'` 代表角度轴\n */\n orient: IPolarOrientType;\n /**\n * 网格线配置\n */\n grid?: IPolarGrid;\n /**\n * 轴的外半径,数值范围 0 -1\n */\n radius?: number;\n /**\n * 子网格线配置\n */\n subGrid?: IPolarGrid;\n /**\n * 轴线配置\n */\n domainLine?: IDomainLine;\n /**\n * 轴标签配置\n */\n label?: IPolarAxisLabel;\n /**\n * 轴标题配置\n */\n title?: ITitle;\n /**\n * 内半径(比例值,取值范围 0~1)\n */\n innerRadius?: number;\n /**\n * 外半径(比例值,取值范围 0~1)\n */\n outerRadius?: number;\n /**\n * 中心点\n * @since 1.11.2 x,y 支持百分比的值,如`50%`\n */\n center?: { x: number | string; y: number | string };\n /**\n * 起始角度\n */\n startAngle?: number;\n /**\n * 终止角度\n */\n endAngle?: number;\n};\n\nexport type IPolarLinearAxisSpec = IPolarAxisCommonSpec & ILinearAxisSpec;\n\nexport type IPolarBandAxisSpec = IPolarAxisCommonSpec & IBandAxisSpec;\n"]}
|
|
@@ -17,7 +17,7 @@ const polar_1 = require("../../../../constant/polar"), vutils_1 = require("@visa
|
|
|
17
17
|
x: null == chartSpec ? void 0 : chartSpec.centerX,
|
|
18
18
|
y: null == chartSpec ? void 0 : chartSpec.centerY
|
|
19
19
|
} : void 0,
|
|
20
|
-
outerRadius: null !== (_f = null !== (_e = null !== (_d = spec.
|
|
20
|
+
outerRadius: null !== (_f = null !== (_e = null !== (_d = spec.outerRadius) && void 0 !== _d ? _d : spec.radius) && void 0 !== _e ? _e : chartSpec.outerRadius) && void 0 !== _f ? _f : chartSpec.radius,
|
|
21
21
|
layoutRadius: chartSpec.layoutRadius
|
|
22
22
|
};
|
|
23
23
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/component/axis/polar/util/common.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"sources":["../src/component/axis/polar/util/common.ts"],"names":[],"mappings":";;;AAAA,sDAAgF;AAChF,6CAAqF;AACrF,kDAAuD;AAKhD,MAAM,gBAAgB,GAAG,CAAC,IAA0B,EAAE,SAAc,EAAE,EAAE;;IAE7E,MAAM,QAAQ,GAAG,MAAA,IAAI,CAAC,IAAI,mCAAI,CAAC,IAAI,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC5E,MAAM,aAAa,GAAG,GAAG,6BAAiB,CAAC,SAAS,IAAI,QAAQ,EAAE,CAAC;IAEnE,MAAM,kBAAkB,GAAG,MAAA,IAAI,CAAC,UAAU,mCAAI,SAAS,CAAC,UAAU,CAAC;IACnE,MAAM,gBAAgB,GAAG,MAAA,IAAI,CAAC,QAAQ,mCAAI,SAAS,CAAC,QAAQ,CAAC;IAC7D,OAAO;QACL,QAAQ;QACR,aAAa;QACb,UAAU,EAAE,kBAAkB,aAAlB,kBAAkB,cAAlB,kBAAkB,GAAI,yBAAiB;QACnD,QAAQ,EAAE,gBAAgB,aAAhB,gBAAgB,cAAhB,gBAAgB,GAAI,CAAC,IAAA,gBAAO,EAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,kBAAkB,GAAG,GAAG,CAAC,CAAC,CAAC,uBAAe,CAAC;QACxG,MAAM,EAAE,IAAA,gBAAO,EAAC,SAAS,CAAC,MAAM,CAAC;YAC/B,CAAC,CAAC,SAAS,CAAC,MAAM;YAClB,CAAC,CAAC,IAAA,gBAAO,EAAC,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,OAAO,CAAC,IAAI,IAAA,gBAAO,EAAC,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,OAAO,CAAC;gBAC5D,CAAC,CAAC;oBACE,CAAC,EAAE,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,OAAO;oBACrB,CAAC,EAAE,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,OAAO;iBACtB;gBACH,CAAC,CAAC,SAAS;QAEb,WAAW,EAAE,MAAA,MAAA,MAAA,IAAI,CAAC,WAAW,mCAAI,IAAI,CAAC,MAAM,mCAAI,SAAS,CAAC,WAAW,mCAAI,SAAS,CAAC,MAAM;QACzF,YAAY,EAAE,SAAS,CAAC,YAAY;KACrC,CAAC;AACJ,CAAC,CAAC;AAxBW,QAAA,gBAAgB,oBAwB3B;AAEK,MAAM,mBAAmB,GAAG,CACjC,eAA8F,EAC9F,aAAgC,EAChC,SAAuB,EACvB,SAAyD,EACzD,EAAE;IACF,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IACvC,IAAI,IAAA,iBAAQ,EAAC,YAAY,CAAC,EAAE;QAC1B,OAAO,YAAY,CAAC;KACrB;SAAM,IAAI,IAAA,mBAAU,EAAC,YAAY,CAAC,EAAE;QACnC,OAAO,YAAY,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;KACnD;IAED,MAAM,IAAI,GAAG,aAAa,EAAE,CAAC;IAE7B,IAAI,YAAY,KAAK,MAAM,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;QAChE,MAAM,EAAE,UAAU,GAAG,CAAC,EAAE,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,SAAS,EAAE,CAAC;QAC/D,OAAO,IAAA,2BAAkB,EAAC,IAAI,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;KACpE;IAED,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACnD,CAAC,CAAC;AArBW,QAAA,mBAAmB,uBAqB9B","file":"common.js","sourcesContent":["import { POLAR_END_ANGLE, POLAR_START_ANGLE } from '../../../../constant/polar';\nimport { calculateMaxRadius, isFunction, isNumber, isValid } from '@visactor/vutils';\nimport { ComponentTypeEnum } from '../../../interface';\nimport type { IPolarAxisCommonSpec } from '../interface';\nimport type { ILayoutRect } from '../../../../typings/layout';\nimport type { IPoint } from '../../../../typings/coordinate';\n\nexport const getPolarAxisInfo = (spec: IPolarAxisCommonSpec, chartSpec: any) => {\n // TODO: 基于数据处理 axis 类型\n const axisType = spec.type ?? (spec.orient === 'angle' ? 'band' : 'linear');\n const componentName = `${ComponentTypeEnum.polarAxis}-${axisType}`;\n\n const startAngleFromSpec = spec.startAngle ?? chartSpec.startAngle;\n const endAngleFromSpec = spec.endAngle ?? chartSpec.endAngle;\n return {\n axisType,\n componentName,\n startAngle: startAngleFromSpec ?? POLAR_START_ANGLE,\n endAngle: endAngleFromSpec ?? (isValid(startAngleFromSpec) ? startAngleFromSpec + 360 : POLAR_END_ANGLE),\n center: isValid(chartSpec.center)\n ? chartSpec.center\n : isValid(chartSpec?.centerX) || isValid(chartSpec?.centerY)\n ? {\n x: chartSpec?.centerX,\n y: chartSpec?.centerY\n }\n : undefined,\n // 优先使用 outerRadius, 但要兼容 radius\n outerRadius: spec.outerRadius ?? spec.radius ?? chartSpec.outerRadius ?? chartSpec.radius,\n layoutRadius: chartSpec.layoutRadius\n };\n};\n\nexport const computeLayoutRadius = (\n getLayoutRadius: () => 'auto' | number | ((layoutRect: ILayoutRect, center: IPoint) => number),\n getLayoutRect: () => ILayoutRect,\n getCenter: () => IPoint,\n getAngles: () => { startAngle: number; endAngle: number }\n) => {\n const layoutRadius = getLayoutRadius();\n if (isNumber(layoutRadius)) {\n return layoutRadius;\n } else if (isFunction(layoutRadius)) {\n return layoutRadius(getLayoutRect(), getCenter());\n }\n\n const rect = getLayoutRect();\n\n if (layoutRadius === 'auto' && rect.width > 0 && rect.height > 0) {\n const { startAngle = 0, endAngle = 2 * Math.PI } = getAngles();\n return calculateMaxRadius(rect, getCenter(), startAngle, endAngle);\n }\n\n return Math.min(rect.width / 2, rect.height / 2);\n};\n"]}
|
|
@@ -94,10 +94,8 @@ class BaseComponent extends layout_model_1.LayoutModel {
|
|
|
94
94
|
}
|
|
95
95
|
compileMarks(group) {
|
|
96
96
|
this.getMarks().forEach((m => {
|
|
97
|
-
var _a;
|
|
98
97
|
m.compile({
|
|
99
|
-
group: group
|
|
100
|
-
}), null === (_a = m.getProduct()) || void 0 === _a || _a.configure({
|
|
98
|
+
group: group,
|
|
101
99
|
context: {
|
|
102
100
|
model: this
|
|
103
101
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/component/base/base-component.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,yDAA6F;AAG7F,2EAAgF;AAIhF,6CAA2C;AAE3C,gDAAyD;AAEzD,qEAAiE;AAIjE,2DAAuD;AACvD,6EAA4E;AAG5E,MAAa,aAAyD,SAAQ,0BAAc;IAO1F,MAAM,CAAC,eAAe,CAAC,QAAwB,EAAE,OAAyB;QACxE,MAAM,EAAE,IAAI,KAAgB,QAAQ,EAAnB,MAAM,UAAK,QAAQ,EAA9B,QAAmB,CAAW,CAAC;QACrC,OAAO,IAAI,IAAI,CAAC,IAAI,kCACf,OAAO,GACP,MAAM,EACT,CAAC;IACL,CAAC;IAKD,UAAU;QACR,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAID,OAAO;QACL,KAAK,CAAC,OAAO,EAAE,CAAC;QAChB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,aAAa,GAAG,IAAI,uCAAsB,CAAC,IAAI,CAAC,CAAC;IACxD,CAAC;IAID,YAAY,IAAO,EAAE,OAAyB;QAC5C,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QA/BvB,SAAI,GAAW,WAAW,CAAC;QAClB,cAAS,GAAW,WAAW,CAAC;QAChC,2BAAsB,GAAG,yDAAmC,CAAC;
|
|
1
|
+
{"version":3,"sources":["../src/component/base/base-component.ts"],"names":[],"mappings":"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","file":"base-component.js","sourcesContent":["import { CustomEvent, type IGraphic, type IGroup, type INode } from '@visactor/vrender-core';\nimport type { IRegion } from '../../region/interface';\nimport type { IComponent, IComponentOption } from '../interface';\nimport { ComponentPluginService } from '../../plugin/components/plugin-service';\nimport type { IComponentPluginService, IComponentPlugin } from '../../plugin/components/interface';\nimport type { IBoundsLike } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { isEqual } from '@visactor/vutils';\nimport type { IGroupMark } from '@visactor/vgrammar-core';\nimport { Event_Source_Type } from '../../constant/event';\nimport type { IAnimate } from '../../animation/interface';\nimport { AnimateManager } from '../../animation/animate-manager';\n// import { preprocessSpecOrTheme } from '../../util/spec/preprocess';\nimport type { Datum, ILayoutRect } from '../../typings';\nimport type { IComponentSpec } from './interface';\nimport { LayoutModel } from '../../model/layout-model';\nimport { BaseComponentSpecTransformer } from './base-component-transformer';\nimport type { IModelRenderOption, IModelSpecInfo } from '../../model/interface';\n\nexport class BaseComponent<T extends IComponentSpec = IComponentSpec> extends LayoutModel<T> implements IComponent {\n static transformerConstructor = BaseComponentSpecTransformer;\n name: string = 'component';\n readonly modelType: string = 'component';\n readonly transformerConstructor = BaseComponentSpecTransformer as any;\n pluginService?: IComponentPluginService;\n\n static createComponent(specInfo: IModelSpecInfo, options: IComponentOption): IComponent {\n const { spec, ...others } = specInfo;\n return new this(spec, {\n ...options,\n ...others\n });\n }\n\n protected declare _option: IComponentOption;\n\n protected _regions: IRegion[];\n getRegions() {\n return this._regions;\n }\n\n protected _container: IGroup;\n\n created() {\n super.created();\n this.initLayout();\n this.pluginService = new ComponentPluginService(this);\n }\n\n animate?: IAnimate;\n\n constructor(spec: T, options: IComponentOption) {\n super(spec, options);\n // 创建组件自己的动画管理器\n if (this._option.animation) {\n this.animate = new AnimateManager({\n getCompiler: options.getCompiler\n });\n }\n }\n\n initLayout(): void {\n super.initLayout();\n this._regions = this._regions ?? this._option.getRegionsInIndex();\n this._layout && (this._layout.layoutBindRegionID = this._regions.map(x => x?.id));\n }\n\n changeRegions(regions: IRegion[]): void {\n throw new Error('Method not implemented.');\n }\n protected _getNeedClearVRenderComponents(): IGraphic[] {\n throw new Error('Method not implemented.');\n }\n onRender(ctx: IModelRenderOption): void {\n throw new Error('Method not implemented.');\n }\n\n getVRenderComponents() {\n return this._getNeedClearVRenderComponents();\n }\n\n protected callPlugin(cb: (plugin: IComponentPlugin) => void) {\n if (this.pluginService) {\n this.pluginService.getAll().forEach(plugin => cb(plugin));\n }\n }\n\n protected getContainer() {\n if (!this._container) {\n this._container = this._option?.globalInstance.getStage().find(node => node.name === 'root', true);\n }\n\n return this._container;\n }\n\n /**\n * updateSpec\n */\n _compareSpec(spec: T, prevSpec: T) {\n const result = super._compareSpec(spec, prevSpec);\n if (!result.reMake) {\n result.reMake = ['seriesId', 'seriesIndex', 'regionId', 'regionIndex'].some(k => {\n return !isEqual(prevSpec?.[k], spec[k]);\n });\n }\n if ((prevSpec as any)?.visible !== (spec as any).visible) {\n result.reCompile = true;\n }\n return result;\n }\n\n release() {\n super.release();\n this.clear();\n\n this.pluginService?.releaseAll();\n this.pluginService = null;\n }\n\n clear() {\n const components = this._getNeedClearVRenderComponents();\n if (components && components.length) {\n components.forEach(c => {\n if (c) {\n this.getContainer()?.removeChild(c as unknown as INode);\n c = null;\n }\n });\n }\n this._container = null;\n this.pluginService?.clearAll();\n }\n\n compile(): void {\n this.compileMarks();\n this.reAppendComponents();\n }\n\n compileMarks(group?: string | IGroupMark) {\n this.getMarks().forEach(m => {\n m.compile({ group, context: { model: this } });\n });\n }\n\n reAppendComponents() {\n const components = this._getNeedClearVRenderComponents();\n if (components && components.length) {\n components.forEach(c => {\n if (c && !c.stage) {\n // component is removed remove stage\n\n this.getContainer()?.appendChild(c as unknown as INode);\n }\n });\n }\n }\n\n // 代理组件本身的事件(非内部图形),如坐标轴整体的点击等\n protected _delegateEvent = (component: IGraphic, event: any, type: string, item: any = null, datum: Datum = null) => {\n // 组件这里只代理基础的事件,自定义事件不需要代理\n if (!(event instanceof CustomEvent)) {\n this.event.emit(\n type,\n {\n model: this,\n node: component,\n event,\n item: item,\n datum: datum,\n source: Event_Source_Type.chart,\n chart: this._option?.globalInstance?.getChart()\n },\n 'model'\n );\n }\n };\n\n getBoundsInRect(rect: ILayoutRect, fullRect: ILayoutRect): IBoundsLike {\n return { x1: 0, x2: 0, y1: 0, y2: 0 };\n }\n}\n"]}
|
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: !0
|
|
5
5
|
}), exports.registerBrush = exports.Brush = void 0;
|
|
6
6
|
|
|
7
|
-
const event_1 = require("../../constant/event"), attribute_1 = require("../../constant/attribute"), layout_1 = require("../../constant/layout"), base_component_1 = require("../base/base-component"), type_1 = require("../interface/type"), vrender_components_1 = require("@visactor/vrender-components"), vutils_1 = require("@visactor/vutils"), style_1 = require("../../util/style"), vutils_2 = require("@visactor/vutils"), factory_1 = require("../../core/factory"), IN_BRUSH_STATE = "inBrush", OUT_BRUSH_STATE = "outOfBrush";
|
|
7
|
+
const event_1 = require("../../constant/event"), attribute_1 = require("../../constant/attribute"), layout_1 = require("../../constant/layout"), base_component_1 = require("../base/base-component"), type_1 = require("../interface/type"), vrender_components_1 = require("@visactor/vrender-components"), vutils_1 = require("@visactor/vutils"), style_1 = require("../../util/style"), vutils_2 = require("@visactor/vutils"), factory_1 = require("../../core/factory"), util_1 = require("../util"), IN_BRUSH_STATE = "inBrush", OUT_BRUSH_STATE = "outOfBrush";
|
|
8
8
|
|
|
9
9
|
class Brush extends base_component_1.BaseComponent {
|
|
10
10
|
constructor() {
|
|
@@ -25,13 +25,7 @@ class Brush extends base_component_1.BaseComponent {
|
|
|
25
25
|
}));
|
|
26
26
|
}
|
|
27
27
|
static getSpecInfo(chartSpec) {
|
|
28
|
-
|
|
29
|
-
if (!(0, vutils_1.isNil)(brushSpec) && !1 !== brushSpec.visible) return [ {
|
|
30
|
-
spec: brushSpec,
|
|
31
|
-
specPath: [ this.specKey ],
|
|
32
|
-
specInfoPath: [ "component", this.specKey, 0 ],
|
|
33
|
-
type: type_1.ComponentTypeEnum.brush
|
|
34
|
-
} ];
|
|
28
|
+
return (0, util_1.getSpecInfo)(chartSpec, this.specKey, this.type, (s => !1 !== s.visible));
|
|
35
29
|
}
|
|
36
30
|
created() {
|
|
37
31
|
super.created(), this.initEvent(), this._bindRegions(), this._bindLinkedSeries(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/component/brush/brush.ts"],"names":[],"mappings":"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","file":"brush.js","sourcesContent":["import { ChartEvent } from '../../constant/event';\nimport { AttributeLevel } from '../../constant/attribute';\nimport { LayoutZIndex } from '../../constant/layout';\nimport { BaseComponent } from '../base/base-component';\n// eslint-disable-next-line no-duplicate-imports\nimport { ComponentTypeEnum } from '../interface/type';\nimport { Brush as BrushComponent, IOperateType as BrushEvent } from '@visactor/vrender-components';\nimport type { IPointLike, Maybe } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { array, isNil, polygonIntersectPolygon, isValid, last } from '@visactor/vutils';\nimport type { IModelRenderOption, IModelSpecInfo } from '../../model/interface';\nimport type { IRegion } from '../../region/interface';\nimport type { IGraphic, IGroup, INode, IPolygon, ISymbolGraphicAttribute } from '@visactor/vrender-core';\nimport { transformToGraphic } from '../../util/style';\nimport type { ISeries } from '../../series/interface';\nimport type { IMark } from '../../mark/interface';\nimport type { IElement } from '@visactor/vgrammar-core';\nimport type { BrushInteractiveRangeAttr, IBrush, IBrushSpec, selectedItemStyle } from './interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { isEqual } from '@visactor/vutils';\nimport { Factory } from '../../core/factory';\nimport type { DataZoom } from '../data-zoom';\nimport type { IBandLikeScale, IContinuousScale, ILinearScale } from '@visactor/vscale';\nimport type { AxisComponent } from '../axis/base-axis';\n\nconst IN_BRUSH_STATE = 'inBrush';\nconst OUT_BRUSH_STATE = 'outOfBrush';\n\nexport class Brush<T extends IBrushSpec = IBrushSpec> extends BaseComponent<T> implements IBrush {\n layoutType: 'none' = 'none';\n static type = ComponentTypeEnum.brush;\n type = ComponentTypeEnum.brush;\n name: string = ComponentTypeEnum.brush;\n\n static specKey = 'brush';\n specKey = 'brush';\n\n layoutZIndex: number = LayoutZIndex.Brush;\n\n // brush组件\n protected _brushComponents!: BrushComponent[];\n protected _relativeRegions!: IRegion[];\n protected _linkedSeries: ISeries[] = [];\n\n private _itemMap: { [regionId: string | number]: IMark[] } = {};\n private _linkedItemMap: { [seriesId: string | number]: IMark[] } = {};\n\n // 用brushName做分组管理的原因是: 如果有多个brush, 某个图元A brush内, 但在B brush外, 该图元state会被B误变成out of brush。 但其实该图元只有在A brush外才能被判断out of brush\n // 用dict做存储因为方便查找和删减对应图元\n protected _inBrushElementsMap: { [brushName: string]: { [elementKey: string]: IElement } } = {};\n protected _outOfBrushElementsMap: { [elementKey: string]: IElement } = {};\n protected _linkedInBrushElementsMap: { [brushName: string]: { [elementKey: string]: IElement } } = {};\n protected _linkedOutOfBrushElementsMap: { [elementKey: string]: IElement } = {};\n\n private _needInitOutState: boolean = true;\n private _cacheInteractiveRangeAttrs: BrushInteractiveRangeAttr[] = [];\n\n private _needDisablePickable: boolean = false;\n\n private _releatedAxes: AxisComponent[] = [];\n\n // 根据region找axis\n private _regionAxisMap: { [regionId: string]: AxisComponent[] } = {};\n // 根据axis找dataZoom\n private _axisDataZoomMap: { [axisId: string]: DataZoom } = {};\n // 记录当前操作的axis或dataZoom的状态\n private _zoomRecord: { operateComponent: AxisComponent | DataZoom; start: number; end: number }[] = [];\n\n init() {\n const inBrushMarkAttr = this._transformBrushedMarkAttr(this._spec.inBrush);\n const outOfBrushMarkAttr = this._transformBrushedMarkAttr(this._spec.outOfBrush);\n // 写入mark state, 便于后续state管理\n this._option.getAllSeries().forEach((s: ISeries) => {\n s.getActiveMarks().forEach((m: IMark) => {\n if (m) {\n s.setMarkStyle(\n m,\n {\n ...inBrushMarkAttr\n },\n IN_BRUSH_STATE,\n AttributeLevel.Series\n );\n s.setMarkStyle(\n m,\n {\n ...outOfBrushMarkAttr\n },\n OUT_BRUSH_STATE,\n AttributeLevel.Series\n );\n }\n });\n });\n }\n\n static getSpecInfo(chartSpec: any): Maybe<IModelSpecInfo[]> {\n const brushSpec = chartSpec[this.specKey];\n // brush不支持数组的形式配置\n if (isNil(brushSpec) || brushSpec.visible === false) {\n return undefined;\n }\n return [\n {\n spec: brushSpec,\n specPath: [this.specKey],\n specInfoPath: ['component', this.specKey, 0],\n type: ComponentTypeEnum.brush\n }\n ];\n }\n\n created() {\n super.created();\n\n // event\n this.initEvent();\n this._bindRegions();\n this._bindLinkedSeries();\n this._initRegionAxisMap();\n this._initAxisDataZoomMap();\n this._initNeedOperatedItem();\n }\n\n protected _extendDataInBrush(elementsMap: { [brushName: string]: { [elementKey: string]: IElement } }) {\n const data = [];\n for (const brushName in elementsMap) {\n for (const elementKey in elementsMap[brushName]) {\n data.push({\n ...elementsMap[brushName][elementKey].data[0]\n });\n }\n }\n return data;\n }\n\n protected _extendDatumOutOfBrush(elementsMap: { [elementKey: string]: IElement }) {\n const data = [];\n for (const elementKey in elementsMap) {\n // 图例筛选后, elementKey未更新, 导致data可能为null\n // FIXME: brush透出的map维护逻辑有待优化\n data.push(elementsMap[elementKey].data?.[0]);\n }\n return data;\n }\n\n protected _getBrushInteractiveAttr(region: IRegion) {\n const regionLayoutPosition = region.getLayoutStartPoint();\n const regionLayoutRect = region.getLayoutRect();\n const seriesRegionStartX = regionLayoutPosition.x;\n const seriesRegionEndX = seriesRegionStartX + regionLayoutRect.width;\n const seriesRegionStartY = regionLayoutPosition.y;\n const seriesRegionEndY = seriesRegionStartY + regionLayoutRect.height;\n return {\n interactiveRange: {\n minY: seriesRegionStartY,\n maxY: seriesRegionEndY,\n minX: seriesRegionStartX,\n maxX: seriesRegionEndX\n },\n xRange: [seriesRegionStartX, seriesRegionEndX],\n yRange: [seriesRegionStartY, seriesRegionEndY]\n } as BrushInteractiveRangeAttr;\n }\n\n protected _updateBrushComponent(region: IRegion, componentIndex: number) {\n const interactiveAttr = this._getBrushInteractiveAttr(region);\n // 布局变化后, 更新可交互范围\n const brushComponent = this._brushComponents[componentIndex];\n brushComponent.setAttributes(interactiveAttr as any);\n\n // 布局变化后, 更新brush 和 图元状态\n // 方案一:\n // TODO: 更新mask位置(保持选框在画布中的相对位置)\n // TODO: 是否更新mask大小有待商榷(保持选框位置和图元高亮区域一致)\n\n // 方案二: 清空brushMask 和 图元高亮状态\n this._initMarkBrushState(componentIndex, '');\n brushComponent.children[0].removeAllChild();\n this._needInitOutState = true;\n }\n\n protected _createBrushComponent(region: IRegion, componentIndex: number) {\n const interactiveAttr = this._getBrushInteractiveAttr(region);\n const brush = new BrushComponent({\n zIndex: this.layoutZIndex,\n brushStyle: transformToGraphic(this._spec?.style),\n ...interactiveAttr,\n ...this._spec,\n disableTriggerEvent: this._option.disableTriggerEvent\n });\n brush.id = this._spec.id ?? `brush-${this.id}`;\n this.getContainer().add(brush as unknown as INode);\n const { brushMode = 'single' } = this._spec;\n this._brushComponents.push(brush);\n this._cacheInteractiveRangeAttrs.push(interactiveAttr);\n\n brush.addEventListener(BrushEvent.drawStart, (e: any) => {\n this._emitEvent(ChartEvent.brushStart, region);\n });\n\n brush.addEventListener(BrushEvent.moveStart, (e: any) => {\n this._emitEvent(ChartEvent.brushStart, region);\n });\n\n brush.addEventListener(BrushEvent.drawing, (e: any) => {\n // 需要重置out状态的情况:\n // _needInitOutState:框选模式为'single' 且 开始后的第一次drawing时(这里不选择drawStart而选择第一次触发drawing的时机是因为点击空白处也会触发drawStart), 需要重置图元状态\n if (this._needInitOutState && brushMode === 'single') {\n this._initMarkBrushState(componentIndex, OUT_BRUSH_STATE);\n }\n this._needInitOutState = false;\n this._needDisablePickable = true;\n\n this._handleBrushChange(ChartEvent.brushChange, region, e);\n this._emitEvent(ChartEvent.brushChange, region);\n });\n\n brush.addEventListener(BrushEvent.moving, (e: any) => {\n this._handleBrushChange(ChartEvent.brushChange, region, e);\n this._emitEvent(ChartEvent.brushChange, region);\n });\n\n brush.addEventListener(BrushEvent.brushClear, (e: any) => {\n this._initMarkBrushState(componentIndex, '');\n this._needInitOutState = true;\n this._needDisablePickable = false;\n this._handleBrushChange(ChartEvent.brushChange, region, e);\n this._handleBrushChange(ChartEvent.brushClear, region, e);\n this._emitEvent(ChartEvent.brushChange, region);\n this._emitEvent(ChartEvent.brushClear, region);\n });\n\n brush.addEventListener(BrushEvent.drawEnd, (e: any) => {\n this._needInitOutState = true;\n this._needDisablePickable = false;\n const { operateMask } = e.detail as any;\n this._handleBrushChange(ChartEvent.brushEnd, region, e);\n const inBrushData = this._extendDataInBrush(this._inBrushElementsMap);\n if (!this._spec.zoomWhenEmpty && inBrushData.length > 0) {\n this._setAxisAndDataZoom(operateMask, region);\n }\n this._emitEvent(ChartEvent.brushEnd, region);\n });\n\n brush.addEventListener(BrushEvent.moveEnd, (e: any) => {\n const { operateMask } = e.detail as any;\n this._handleBrushChange(ChartEvent.brushEnd, region, e);\n const inBrushData = this._extendDataInBrush(this._inBrushElementsMap);\n if (!this._spec.zoomWhenEmpty && inBrushData.length > 0) {\n this._setAxisAndDataZoom(operateMask, region);\n }\n this._emitEvent(ChartEvent.brushEnd, region);\n });\n }\n\n private _handleBrushChange(eventType: string, region: IRegion, e: any) {\n const { operateMask } = e.detail as any;\n this._reconfigItem(operateMask, region);\n this._reconfigLinkedItem(operateMask, region);\n }\n\n private _emitEvent(eventType: string, region: IRegion) {\n this.event.emit(eventType, {\n model: this,\n value: {\n // 操作类型\n operateType: eventType,\n // 正在操作的region\n operateRegion: region,\n // 在选框内的 element data\n inBrushData: this._extendDataInBrush(this._inBrushElementsMap),\n // 在选框外的 element data\n outOfBrushData: this._extendDatumOutOfBrush(this._outOfBrushElementsMap),\n // 被链接的系列中:在选框内的 element data\n linkInBrushData: this._extendDataInBrush(this._linkedInBrushElementsMap),\n // 被链接的系列中:在选框外的 element data\n linkOutOfBrushData: this._extendDatumOutOfBrush(this._linkedOutOfBrushElementsMap),\n // 在选框内的 vgrammar elements\n inBrushElementsMap: this._inBrushElementsMap,\n // 在选框外的 vgrammar elements\n outOfBrushElementsMap: this._outOfBrushElementsMap,\n // 被链接的系列中:在选框内的 vgrammar elements\n linkedInBrushElementsMap: this._linkedInBrushElementsMap,\n // 被链接的系列中:在选框外的 vgrammar elements\n linkedOutOfBrushElementsMap: this._linkedOutOfBrushElementsMap,\n // 缩放记录\n zoomRecord: this._zoomRecord\n }\n });\n }\n\n private _transformBrushedMarkAttr(brushedStyle: selectedItemStyle) {\n const styleResult: any = {};\n if (brushedStyle?.symbol) {\n styleResult.symbolType = brushedStyle.symbol;\n }\n if (brushedStyle?.symbolSize) {\n styleResult.size = brushedStyle.symbolSize;\n }\n if (brushedStyle?.color) {\n styleResult.fill = brushedStyle.color;\n }\n if (brushedStyle?.colorAlpha) {\n styleResult.fillOpacity = brushedStyle.colorAlpha;\n }\n return {\n ...transformToGraphic(brushedStyle),\n ...styleResult\n };\n }\n\n private _reconfigItem(operateMask: IPolygon, region: IRegion) {\n // 遍历图元, 更新状态\n this._itemMap[region.id].forEach((mark: IMark) => {\n const grammarMark = mark.getProduct();\n if (!grammarMark || !grammarMark.elements || !grammarMark.elements.length) {\n return;\n }\n const elements = grammarMark.elements;\n elements.forEach((el: IElement) => {\n const graphicItem = el.getGraphicItem();\n const elementKey = mark.id + '_' + el.key;\n // 判断逻辑:\n // 应该被置为inBrush状态的图元:\n // before: 在out brush elment map, 即不在任何brush中\n // now: 在当前brush图元中\n\n // 应该被置为outOfBrush状态的图元:\n // before: 在当前brush 的 in brush element map中, 即在当前brush中\n // now: 不在当前brush中\n if (this._outOfBrushElementsMap?.[elementKey] && this._isBrushContainItem(operateMask, graphicItem)) {\n el.addState(IN_BRUSH_STATE);\n if (!this._inBrushElementsMap[operateMask?.name]) {\n this._inBrushElementsMap[operateMask?.name] = {};\n }\n this._inBrushElementsMap[operateMask?.name][elementKey] = el;\n delete this._outOfBrushElementsMap[elementKey];\n } else if (\n this._inBrushElementsMap?.[operateMask?.name]?.[elementKey] &&\n !this._isBrushContainItem(operateMask, graphicItem)\n ) {\n el.removeState(IN_BRUSH_STATE);\n el.addState(OUT_BRUSH_STATE);\n this._outOfBrushElementsMap[elementKey] = el;\n delete this._inBrushElementsMap[operateMask.name][elementKey];\n }\n graphicItem.setAttribute('pickable', !this._needDisablePickable);\n });\n });\n }\n\n private _reconfigLinkedItem(operateMask: IPolygon, region: IRegion) {\n const regionLayoutPos = region.getLayoutStartPoint();\n const seriesId = region.getSeries().map(s => s.id);\n this._linkedSeries.forEach((s: ISeries) => {\n if (!seriesId.includes(s.id)) {\n const sRegionLayoutPos = s.getRegion().getLayoutStartPoint();\n\n const regionOffsetX = sRegionLayoutPos.x - regionLayoutPos.x;\n const regionOffsetY = sRegionLayoutPos.y - regionLayoutPos.y;\n\n this._linkedItemMap[s.id].forEach((mark: IMark) => {\n const grammarMark = mark.getProduct();\n if (!grammarMark || !grammarMark.elements || !grammarMark.elements.length) {\n return;\n }\n const elements = grammarMark.elements;\n elements.forEach((el: IElement) => {\n const graphicItem = el.getGraphicItem();\n const elementKey = mark.id + '_' + el.key;\n // 判断逻辑:\n // 应该被置为inBrush状态的图元:\n // before: 在out brush elment map, 即不在任何brush中\n // now: 在当前brush图元中\n\n // 应该被置为outOfBrush状态的图元:\n // before: 在当前brush 的 in brush element map中, 即在当前brush中\n // now: 不在当前brush中\n if (\n this._linkedOutOfBrushElementsMap?.[elementKey] &&\n this._isBrushContainItem(operateMask, graphicItem, { dx: regionOffsetX, dy: regionOffsetY })\n ) {\n el.addState(IN_BRUSH_STATE);\n if (!this._linkedInBrushElementsMap[operateMask?.name]) {\n this._linkedInBrushElementsMap[operateMask?.name] = {};\n }\n this._linkedInBrushElementsMap[operateMask?.name][elementKey] = el;\n delete this._linkedOutOfBrushElementsMap[elementKey];\n } else if (\n this._linkedInBrushElementsMap?.[operateMask?.name]?.[elementKey] &&\n !this._isBrushContainItem(operateMask, graphicItem, { dx: regionOffsetX, dy: regionOffsetY })\n ) {\n el.removeState(IN_BRUSH_STATE);\n el.addState(OUT_BRUSH_STATE);\n this._linkedOutOfBrushElementsMap[elementKey] = el;\n }\n graphicItem.setAttribute('pickable', !this._needDisablePickable);\n });\n });\n }\n });\n }\n\n private _isBrushContainItem(brushMask: IPolygon, item: IGraphic, linkedOffset?: { dx: number; dy: number }) {\n if (!brushMask?.globalTransMatrix || !brushMask?.attribute?.points) {\n return false;\n }\n\n // 根据变换矩阵得到brushMask的实际坐标\n const points = brushMask?.attribute?.points ?? [];\n const { a, b, c, d, e, f } = brushMask.globalTransMatrix;\n\n const dx = linkedOffset?.dx || 0;\n const dy = linkedOffset?.dy || 0;\n\n const pointsCoord = points.map((p: IPointLike) => {\n return {\n x: a * p.x + c * p.y + e + dx,\n y: b * p.x + d * p.y + f + dy\n };\n });\n\n brushMask.globalAABBBounds\n .clone()\n .set(\n brushMask.globalAABBBounds.x1 + dx,\n brushMask.globalAABBBounds.y1 + dy,\n brushMask.globalAABBBounds.x2 + dx,\n brushMask.globalAABBBounds.y2 + dy\n );\n\n // 根据变换矩阵得到item的实际坐标\n const x = item.globalTransMatrix.e;\n const y = item.globalTransMatrix.f;\n\n // brush与图表图元进行相交 或 包含判断\n let itemBounds: { x: number; y: number }[] = [];\n if (item.type === 'symbol') {\n const { size: itemSize = 0 } = item?.attribute as ISymbolGraphicAttribute;\n const size = array(itemSize)[0] / 2;\n itemBounds = [\n {\n x: x - size,\n y: y - size\n },\n {\n x: x + size,\n y: y - size\n },\n {\n x: x + size,\n y: y + size\n },\n {\n x: x - size,\n y: y + size\n }\n ];\n return polygonIntersectPolygon(pointsCoord, itemBounds);\n } else if (item.type === 'rect') {\n const { x1, x2, y1, y2 } = item?.AABBBounds;\n const width = Math.abs(x1 - x2);\n const height = Math.abs(y1 - y2);\n itemBounds = [\n {\n x: x,\n y: y\n },\n {\n x: x + width,\n y: y\n },\n {\n x: x + width,\n y: y + height\n },\n {\n x: x,\n y: y + height\n }\n ];\n return polygonIntersectPolygon(pointsCoord, itemBounds);\n }\n return brushMask.globalAABBBounds.intersects(item.globalAABBBounds);\n }\n\n private _stateClamp(state: number) {\n return Math.min(Math.max(0, state), 1);\n }\n\n private _setAxisAndDataZoom(operateMask: IPolygon, region: IRegion) {\n this._zoomRecord = [];\n if (this._spec.zoomAfterBrush) {\n // step1: 拿到brush bounds, 计算 continuous axis/dataZoom新范围\n const operateMaskBounds = operateMask.AABBBounds;\n\n // step2:\n // 如果轴关联了dataZoom,则通过dataZoom更新轴\n // 如果轴没有关联dataZoom,则直接更改轴rangeFactor\n this._regionAxisMap['region_' + region.id]?.forEach(axis => {\n const isHorizontal = axis.layoutOrient === 'bottom' || axis.layoutOrient === 'top';\n const axisRangeExpand = this._spec.axisRangeExpand ?? 0;\n const { x1, x2, y1, y2 } = operateMaskBounds;\n const regionStartAttr = isHorizontal ? 'x' : 'y';\n const boundsStart = isHorizontal ? x1 : y1;\n const boundsEnd = isHorizontal ? x2 : y2;\n\n if (this._axisDataZoomMap[axis.id]) {\n const dataZoom = this._axisDataZoomMap[axis.id];\n const releatedAxis = dataZoom.relatedAxisComponent as AxisComponent;\n const startValue = releatedAxis\n .getScale()\n .invert(boundsStart - region.getLayoutStartPoint()[regionStartAttr]);\n const endValue = releatedAxis.getScale().invert(boundsEnd - region.getLayoutStartPoint()[regionStartAttr]);\n const startPercent = dataZoom.dataToStatePoint(startValue);\n const endPercent = dataZoom.dataToStatePoint(endValue);\n const newStartPercent = this._stateClamp(startPercent - axisRangeExpand);\n const newEndPercent = this._stateClamp(endPercent + axisRangeExpand);\n dataZoom.setStartAndEnd(Math.min(newStartPercent, newEndPercent), Math.max(newStartPercent, newEndPercent), [\n 'percent',\n 'percent'\n ]);\n\n this._zoomRecord.push({\n operateComponent: dataZoom,\n start: newStartPercent,\n end: newEndPercent\n });\n } else {\n const range = axis.getScale().range();\n const rangeFactor = (axis.getScale() as IContinuousScale | IBandLikeScale).rangeFactor() ?? [0, 1];\n\n // 判断轴是否为反向轴(last(range) < range[0]),即从右到左, 或从下到上\n // 如果是反向轴, 计算start和end时, 也要保持 start < end\n const isAxisReverse = last(range) < range[0];\n const startPosTemp = boundsStart - region.getLayoutStartPoint()[regionStartAttr];\n const endPosTemp = boundsEnd - region.getLayoutStartPoint()[regionStartAttr];\n const endPos = isAxisReverse ? Math.min(startPosTemp, endPosTemp) : Math.max(startPosTemp, endPosTemp);\n const startPos = isAxisReverse ? Math.max(startPosTemp, endPosTemp) : Math.min(startPosTemp, endPosTemp);\n\n const start =\n ((startPos - range[0]) / (last(range) - range[0])) * (rangeFactor[1] - rangeFactor[0]) + rangeFactor[0];\n const end =\n ((endPos - range[0]) / (last(range) - range[0])) * (rangeFactor[1] - rangeFactor[0]) + rangeFactor[0];\n const newStart = this._stateClamp(start - axisRangeExpand);\n const newEnd = this._stateClamp(end + axisRangeExpand);\n (axis.getScale() as ILinearScale).rangeFactor([newStart, newEnd]);\n axis.effect.scaleUpdate();\n\n this._zoomRecord.push({\n operateComponent: axis,\n start: newStart,\n end: newEnd\n });\n }\n });\n }\n }\n\n protected _bindRegions() {\n if (isValid(this._spec.regionId) && isValid(this._spec.regionIndex)) {\n this._relativeRegions = this._option.getAllRegions();\n }\n this._relativeRegions = this._option.getRegionsInUserIdOrIndex(\n array(this._spec.regionId),\n array(this._spec.regionIndex)\n );\n }\n\n protected _bindLinkedSeries() {\n if (isValid(this._spec.brushLinkSeriesId) && isValid(this._spec.brushLinkSeriesIndex)) {\n return;\n }\n this._linkedSeries = this._option.getSeriesInUserIdOrIndex(\n array(this._spec.brushLinkSeriesId),\n array(this._spec.brushLinkSeriesIndex)\n );\n }\n\n private _initRegionAxisMap() {\n // 如果配置了axis,则按配置\n // 如果没有配置axis,则默认所有axis\n if (isValid(this._spec.axisId)) {\n array(this._spec.axisId).forEach((axisId: string) => {\n this._releatedAxes.push(this._option.getComponentByUserId(axisId) as AxisComponent);\n });\n } else if (isValid(this._spec.axisIndex)) {\n array(this._spec.axisIndex).forEach((axisIndex: number) => {\n this._releatedAxes.push(this._option.getComponentByIndex('axes', axisIndex) as AxisComponent);\n });\n } else {\n this._releatedAxes = this._option.getComponentsByKey('axes') as AxisComponent[];\n }\n\n // 按照region进行分组,便于brush找到关联axis (brush -> region -> axis)\n this._releatedAxes.forEach((axis: AxisComponent) => {\n axis?.getRegions().forEach((region: IRegion) => {\n if (this._regionAxisMap['region_' + region.id]) {\n this._regionAxisMap['region_' + region.id].push(axis);\n } else {\n this._regionAxisMap['region_' + region.id] = [axis];\n }\n });\n });\n }\n\n private _initAxisDataZoomMap() {\n (this._option.getComponentsByKey('dataZoom') as DataZoom[]).forEach((dz: DataZoom) => {\n if (dz.relatedAxisComponent) {\n this._axisDataZoomMap[(dz.relatedAxisComponent as AxisComponent).id] = dz;\n }\n });\n }\n\n private _initNeedOperatedItem() {\n const seriesUserId = this._spec.seriesId;\n const seriesIndex = this._spec.seriesIndex;\n this._relativeRegions.forEach(r => {\n const allMarks: IMark[] = [];\n r.getSeries().forEach((s: ISeries) => {\n if (\n (seriesUserId && array(seriesUserId).includes(s.userId.toString())) ||\n (seriesIndex && array(seriesIndex).includes(s.getSpecIndex())) ||\n (!seriesIndex && !seriesUserId)\n ) {\n allMarks.push(...s.getMarksWithoutRoot());\n }\n this._itemMap[r.id] = allMarks;\n });\n });\n\n this._linkedSeries.forEach(s => {\n this._linkedItemMap[s.id] = s.getMarksWithoutRoot();\n });\n }\n\n protected _initMarkBrushState(componentIndex: number, stateName: string) {\n this._brushComponents.forEach((brush, index) => {\n if (index !== componentIndex) {\n brush.children[0].removeAllChild();\n }\n });\n\n this._inBrushElementsMap = {};\n this._outOfBrushElementsMap = {};\n this._linkedInBrushElementsMap = {};\n this._linkedOutOfBrushElementsMap = {};\n\n this._option.getAllSeries().forEach((s: ISeries) => {\n s.getMarksWithoutRoot().forEach((mark: IMark) => {\n const grammarMark = mark.getProduct();\n if (!grammarMark || !grammarMark.elements || !grammarMark.elements.length) {\n return;\n }\n const elements = grammarMark.elements;\n elements.forEach((el: IElement) => {\n const elementKey = mark.id + '_' + el.key;\n el.removeState(IN_BRUSH_STATE);\n el.removeState(OUT_BRUSH_STATE);\n el.addState(stateName);\n this._outOfBrushElementsMap[elementKey] = el;\n this._linkedOutOfBrushElementsMap[elementKey] = el;\n });\n });\n });\n }\n\n protected initEvent() {\n // do nothing\n }\n onRender(ctx: IModelRenderOption): void {\n // do nothing\n }\n changeRegions(regions: IRegion[]): void {\n // do nothing\n }\n\n protected _getNeedClearVRenderComponents(): IGraphic[] {\n return this._brushComponents as unknown as IGroup[];\n }\n\n /**\n * updateSpec\n */\n _compareSpec(spec: T, prevSpec: T) {\n if (this._brushComponents) {\n // FIXME: 这个逻辑放在这个方法里不太妥当?\n this._relativeRegions.forEach((region: IRegion, index: number) => {\n this._updateBrushComponent(region, index);\n });\n }\n const result = super._compareSpec(spec, prevSpec);\n if (!isEqual(prevSpec, spec)) {\n result.reRender = true;\n result.reMake = true;\n }\n return result;\n }\n\n onLayoutEnd(ctx: any): void {\n super.onLayoutEnd(ctx);\n if (this._option.disableTriggerEvent) {\n return;\n }\n const brushVisible = this._spec.visible ?? true;\n if (brushVisible) {\n // 创建或更新marker组件\n if (!this._brushComponents) {\n this._brushComponents = [];\n this._relativeRegions.forEach((region: IRegion, index: number) => {\n this._createBrushComponent(region, index);\n });\n } else {\n this._relativeRegions.forEach((region: IRegion, index: number) => {\n this._updateBrushComponent(region, index);\n });\n }\n }\n }\n\n clearGraphic(): void {\n if (this._brushComponents) {\n this._brushComponents.forEach(brush => {\n (brush as any)._container.incrementalClearChild();\n });\n }\n }\n\n clear(): void {\n if (this._brushComponents) {\n const container = this.getContainer();\n this._brushComponents.forEach(brush => {\n brush.removeAllChild();\n brush.releaseBrushEvents();\n\n if (container) {\n container.removeChild(brush as unknown as INode);\n }\n });\n this._brushComponents = null;\n }\n }\n}\n\nexport const registerBrush = () => {\n Factory.registerComponent(Brush.type, Brush);\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/component/brush/brush.ts"],"names":[],"mappings":"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","file":"brush.js","sourcesContent":["import { ChartEvent } from '../../constant/event';\nimport { AttributeLevel } from '../../constant/attribute';\nimport { LayoutZIndex } from '../../constant/layout';\nimport { BaseComponent } from '../base/base-component';\n// eslint-disable-next-line no-duplicate-imports\nimport { ComponentTypeEnum } from '../interface/type';\nimport { Brush as BrushComponent, IOperateType as BrushEvent } from '@visactor/vrender-components';\nimport type { IPointLike, Maybe } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { array, polygonIntersectPolygon, isValid, last } from '@visactor/vutils';\nimport type { IModelRenderOption, IModelSpecInfo } from '../../model/interface';\nimport type { IRegion } from '../../region/interface';\nimport type { IGraphic, IGroup, INode, IPolygon, ISymbolGraphicAttribute } from '@visactor/vrender-core';\nimport { transformToGraphic } from '../../util/style';\nimport type { ISeries } from '../../series/interface';\nimport type { IMark } from '../../mark/interface';\nimport type { IElement } from '@visactor/vgrammar-core';\nimport type { BrushInteractiveRangeAttr, IBrush, IBrushSpec, selectedItemStyle } from './interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { isEqual } from '@visactor/vutils';\nimport { Factory } from '../../core/factory';\nimport type { DataZoom } from '../data-zoom';\nimport type { IBandLikeScale, IContinuousScale, ILinearScale } from '@visactor/vscale';\nimport type { AxisComponent } from '../axis/base-axis';\nimport { getSpecInfo } from '../util';\n\nconst IN_BRUSH_STATE = 'inBrush';\nconst OUT_BRUSH_STATE = 'outOfBrush';\n\nexport class Brush<T extends IBrushSpec = IBrushSpec> extends BaseComponent<T> implements IBrush {\n layoutType: 'none' = 'none';\n static type = ComponentTypeEnum.brush;\n type = ComponentTypeEnum.brush;\n name: string = ComponentTypeEnum.brush;\n\n static specKey = 'brush';\n specKey = 'brush';\n\n layoutZIndex: number = LayoutZIndex.Brush;\n\n // brush组件\n protected _brushComponents!: BrushComponent[];\n protected _relativeRegions!: IRegion[];\n protected _linkedSeries: ISeries[] = [];\n\n private _itemMap: { [regionId: string | number]: IMark[] } = {};\n private _linkedItemMap: { [seriesId: string | number]: IMark[] } = {};\n\n // 用brushName做分组管理的原因是: 如果有多个brush, 某个图元A brush内, 但在B brush外, 该图元state会被B误变成out of brush。 但其实该图元只有在A brush外才能被判断out of brush\n // 用dict做存储因为方便查找和删减对应图元\n protected _inBrushElementsMap: { [brushName: string]: { [elementKey: string]: IElement } } = {};\n protected _outOfBrushElementsMap: { [elementKey: string]: IElement } = {};\n protected _linkedInBrushElementsMap: { [brushName: string]: { [elementKey: string]: IElement } } = {};\n protected _linkedOutOfBrushElementsMap: { [elementKey: string]: IElement } = {};\n\n private _needInitOutState: boolean = true;\n private _cacheInteractiveRangeAttrs: BrushInteractiveRangeAttr[] = [];\n\n private _needDisablePickable: boolean = false;\n\n private _releatedAxes: AxisComponent[] = [];\n\n // 根据region找axis\n private _regionAxisMap: { [regionId: string]: AxisComponent[] } = {};\n // 根据axis找dataZoom\n private _axisDataZoomMap: { [axisId: string]: DataZoom } = {};\n // 记录当前操作的axis或dataZoom的状态\n private _zoomRecord: { operateComponent: AxisComponent | DataZoom; start: number; end: number }[] = [];\n\n init() {\n const inBrushMarkAttr = this._transformBrushedMarkAttr(this._spec.inBrush);\n const outOfBrushMarkAttr = this._transformBrushedMarkAttr(this._spec.outOfBrush);\n // 写入mark state, 便于后续state管理\n this._option.getAllSeries().forEach((s: ISeries) => {\n s.getActiveMarks().forEach((m: IMark) => {\n if (m) {\n s.setMarkStyle(\n m,\n {\n ...inBrushMarkAttr\n },\n IN_BRUSH_STATE,\n AttributeLevel.Series\n );\n s.setMarkStyle(\n m,\n {\n ...outOfBrushMarkAttr\n },\n OUT_BRUSH_STATE,\n AttributeLevel.Series\n );\n }\n });\n });\n }\n\n static getSpecInfo(chartSpec: any): Maybe<IModelSpecInfo[]> {\n return getSpecInfo<IBrushSpec>(chartSpec, this.specKey, this.type, (s: IBrushSpec) => {\n return s.visible !== false;\n });\n }\n\n created() {\n super.created();\n\n // event\n this.initEvent();\n this._bindRegions();\n this._bindLinkedSeries();\n this._initRegionAxisMap();\n this._initAxisDataZoomMap();\n this._initNeedOperatedItem();\n }\n\n protected _extendDataInBrush(elementsMap: { [brushName: string]: { [elementKey: string]: IElement } }) {\n const data = [];\n for (const brushName in elementsMap) {\n for (const elementKey in elementsMap[brushName]) {\n data.push({\n ...elementsMap[brushName][elementKey].data[0]\n });\n }\n }\n return data;\n }\n\n protected _extendDatumOutOfBrush(elementsMap: { [elementKey: string]: IElement }) {\n const data = [];\n for (const elementKey in elementsMap) {\n // 图例筛选后, elementKey未更新, 导致data可能为null\n // FIXME: brush透出的map维护逻辑有待优化\n data.push(elementsMap[elementKey].data?.[0]);\n }\n return data;\n }\n\n protected _getBrushInteractiveAttr(region: IRegion) {\n const regionLayoutPosition = region.getLayoutStartPoint();\n const regionLayoutRect = region.getLayoutRect();\n const seriesRegionStartX = regionLayoutPosition.x;\n const seriesRegionEndX = seriesRegionStartX + regionLayoutRect.width;\n const seriesRegionStartY = regionLayoutPosition.y;\n const seriesRegionEndY = seriesRegionStartY + regionLayoutRect.height;\n return {\n interactiveRange: {\n minY: seriesRegionStartY,\n maxY: seriesRegionEndY,\n minX: seriesRegionStartX,\n maxX: seriesRegionEndX\n },\n xRange: [seriesRegionStartX, seriesRegionEndX],\n yRange: [seriesRegionStartY, seriesRegionEndY]\n } as BrushInteractiveRangeAttr;\n }\n\n protected _updateBrushComponent(region: IRegion, componentIndex: number) {\n const interactiveAttr = this._getBrushInteractiveAttr(region);\n // 布局变化后, 更新可交互范围\n const brushComponent = this._brushComponents[componentIndex];\n brushComponent.setAttributes(interactiveAttr as any);\n\n // 布局变化后, 更新brush 和 图元状态\n // 方案一:\n // TODO: 更新mask位置(保持选框在画布中的相对位置)\n // TODO: 是否更新mask大小有待商榷(保持选框位置和图元高亮区域一致)\n\n // 方案二: 清空brushMask 和 图元高亮状态\n this._initMarkBrushState(componentIndex, '');\n brushComponent.children[0].removeAllChild();\n this._needInitOutState = true;\n }\n\n protected _createBrushComponent(region: IRegion, componentIndex: number) {\n const interactiveAttr = this._getBrushInteractiveAttr(region);\n const brush = new BrushComponent({\n zIndex: this.layoutZIndex,\n brushStyle: transformToGraphic(this._spec?.style),\n ...interactiveAttr,\n ...this._spec,\n disableTriggerEvent: this._option.disableTriggerEvent\n });\n brush.id = this._spec.id ?? `brush-${this.id}`;\n this.getContainer().add(brush as unknown as INode);\n const { brushMode = 'single' } = this._spec;\n this._brushComponents.push(brush);\n this._cacheInteractiveRangeAttrs.push(interactiveAttr);\n\n brush.addEventListener(BrushEvent.drawStart, (e: any) => {\n this._emitEvent(ChartEvent.brushStart, region);\n });\n\n brush.addEventListener(BrushEvent.moveStart, (e: any) => {\n this._emitEvent(ChartEvent.brushStart, region);\n });\n\n brush.addEventListener(BrushEvent.drawing, (e: any) => {\n // 需要重置out状态的情况:\n // _needInitOutState:框选模式为'single' 且 开始后的第一次drawing时(这里不选择drawStart而选择第一次触发drawing的时机是因为点击空白处也会触发drawStart), 需要重置图元状态\n if (this._needInitOutState && brushMode === 'single') {\n this._initMarkBrushState(componentIndex, OUT_BRUSH_STATE);\n }\n this._needInitOutState = false;\n this._needDisablePickable = true;\n\n this._handleBrushChange(ChartEvent.brushChange, region, e);\n this._emitEvent(ChartEvent.brushChange, region);\n });\n\n brush.addEventListener(BrushEvent.moving, (e: any) => {\n this._handleBrushChange(ChartEvent.brushChange, region, e);\n this._emitEvent(ChartEvent.brushChange, region);\n });\n\n brush.addEventListener(BrushEvent.brushClear, (e: any) => {\n this._initMarkBrushState(componentIndex, '');\n this._needInitOutState = true;\n this._needDisablePickable = false;\n this._handleBrushChange(ChartEvent.brushChange, region, e);\n this._handleBrushChange(ChartEvent.brushClear, region, e);\n this._emitEvent(ChartEvent.brushChange, region);\n this._emitEvent(ChartEvent.brushClear, region);\n });\n\n brush.addEventListener(BrushEvent.drawEnd, (e: any) => {\n this._needInitOutState = true;\n this._needDisablePickable = false;\n const { operateMask } = e.detail as any;\n this._handleBrushChange(ChartEvent.brushEnd, region, e);\n const inBrushData = this._extendDataInBrush(this._inBrushElementsMap);\n if (!this._spec.zoomWhenEmpty && inBrushData.length > 0) {\n this._setAxisAndDataZoom(operateMask, region);\n }\n this._emitEvent(ChartEvent.brushEnd, region);\n });\n\n brush.addEventListener(BrushEvent.moveEnd, (e: any) => {\n const { operateMask } = e.detail as any;\n this._handleBrushChange(ChartEvent.brushEnd, region, e);\n const inBrushData = this._extendDataInBrush(this._inBrushElementsMap);\n if (!this._spec.zoomWhenEmpty && inBrushData.length > 0) {\n this._setAxisAndDataZoom(operateMask, region);\n }\n this._emitEvent(ChartEvent.brushEnd, region);\n });\n }\n\n private _handleBrushChange(eventType: string, region: IRegion, e: any) {\n const { operateMask } = e.detail as any;\n this._reconfigItem(operateMask, region);\n this._reconfigLinkedItem(operateMask, region);\n }\n\n private _emitEvent(eventType: string, region: IRegion) {\n this.event.emit(eventType, {\n model: this,\n value: {\n // 操作类型\n operateType: eventType,\n // 正在操作的region\n operateRegion: region,\n // 在选框内的 element data\n inBrushData: this._extendDataInBrush(this._inBrushElementsMap),\n // 在选框外的 element data\n outOfBrushData: this._extendDatumOutOfBrush(this._outOfBrushElementsMap),\n // 被链接的系列中:在选框内的 element data\n linkInBrushData: this._extendDataInBrush(this._linkedInBrushElementsMap),\n // 被链接的系列中:在选框外的 element data\n linkOutOfBrushData: this._extendDatumOutOfBrush(this._linkedOutOfBrushElementsMap),\n // 在选框内的 vgrammar elements\n inBrushElementsMap: this._inBrushElementsMap,\n // 在选框外的 vgrammar elements\n outOfBrushElementsMap: this._outOfBrushElementsMap,\n // 被链接的系列中:在选框内的 vgrammar elements\n linkedInBrushElementsMap: this._linkedInBrushElementsMap,\n // 被链接的系列中:在选框外的 vgrammar elements\n linkedOutOfBrushElementsMap: this._linkedOutOfBrushElementsMap,\n // 缩放记录\n zoomRecord: this._zoomRecord\n }\n });\n }\n\n private _transformBrushedMarkAttr(brushedStyle: selectedItemStyle) {\n const styleResult: any = {};\n if (brushedStyle?.symbol) {\n styleResult.symbolType = brushedStyle.symbol;\n }\n if (brushedStyle?.symbolSize) {\n styleResult.size = brushedStyle.symbolSize;\n }\n if (brushedStyle?.color) {\n styleResult.fill = brushedStyle.color;\n }\n if (brushedStyle?.colorAlpha) {\n styleResult.fillOpacity = brushedStyle.colorAlpha;\n }\n return {\n ...transformToGraphic(brushedStyle),\n ...styleResult\n };\n }\n\n private _reconfigItem(operateMask: IPolygon, region: IRegion) {\n // 遍历图元, 更新状态\n this._itemMap[region.id].forEach((mark: IMark) => {\n const grammarMark = mark.getProduct();\n if (!grammarMark || !grammarMark.elements || !grammarMark.elements.length) {\n return;\n }\n const elements = grammarMark.elements;\n elements.forEach((el: IElement) => {\n const graphicItem = el.getGraphicItem();\n const elementKey = mark.id + '_' + el.key;\n // 判断逻辑:\n // 应该被置为inBrush状态的图元:\n // before: 在out brush elment map, 即不在任何brush中\n // now: 在当前brush图元中\n\n // 应该被置为outOfBrush状态的图元:\n // before: 在当前brush 的 in brush element map中, 即在当前brush中\n // now: 不在当前brush中\n if (this._outOfBrushElementsMap?.[elementKey] && this._isBrushContainItem(operateMask, graphicItem)) {\n el.addState(IN_BRUSH_STATE);\n if (!this._inBrushElementsMap[operateMask?.name]) {\n this._inBrushElementsMap[operateMask?.name] = {};\n }\n this._inBrushElementsMap[operateMask?.name][elementKey] = el;\n delete this._outOfBrushElementsMap[elementKey];\n } else if (\n this._inBrushElementsMap?.[operateMask?.name]?.[elementKey] &&\n !this._isBrushContainItem(operateMask, graphicItem)\n ) {\n el.removeState(IN_BRUSH_STATE);\n el.addState(OUT_BRUSH_STATE);\n this._outOfBrushElementsMap[elementKey] = el;\n delete this._inBrushElementsMap[operateMask.name][elementKey];\n }\n graphicItem.setAttribute('pickable', !this._needDisablePickable);\n });\n });\n }\n\n private _reconfigLinkedItem(operateMask: IPolygon, region: IRegion) {\n const regionLayoutPos = region.getLayoutStartPoint();\n const seriesId = region.getSeries().map(s => s.id);\n this._linkedSeries.forEach((s: ISeries) => {\n if (!seriesId.includes(s.id)) {\n const sRegionLayoutPos = s.getRegion().getLayoutStartPoint();\n\n const regionOffsetX = sRegionLayoutPos.x - regionLayoutPos.x;\n const regionOffsetY = sRegionLayoutPos.y - regionLayoutPos.y;\n\n this._linkedItemMap[s.id].forEach((mark: IMark) => {\n const grammarMark = mark.getProduct();\n if (!grammarMark || !grammarMark.elements || !grammarMark.elements.length) {\n return;\n }\n const elements = grammarMark.elements;\n elements.forEach((el: IElement) => {\n const graphicItem = el.getGraphicItem();\n const elementKey = mark.id + '_' + el.key;\n // 判断逻辑:\n // 应该被置为inBrush状态的图元:\n // before: 在out brush elment map, 即不在任何brush中\n // now: 在当前brush图元中\n\n // 应该被置为outOfBrush状态的图元:\n // before: 在当前brush 的 in brush element map中, 即在当前brush中\n // now: 不在当前brush中\n if (\n this._linkedOutOfBrushElementsMap?.[elementKey] &&\n this._isBrushContainItem(operateMask, graphicItem, { dx: regionOffsetX, dy: regionOffsetY })\n ) {\n el.addState(IN_BRUSH_STATE);\n if (!this._linkedInBrushElementsMap[operateMask?.name]) {\n this._linkedInBrushElementsMap[operateMask?.name] = {};\n }\n this._linkedInBrushElementsMap[operateMask?.name][elementKey] = el;\n delete this._linkedOutOfBrushElementsMap[elementKey];\n } else if (\n this._linkedInBrushElementsMap?.[operateMask?.name]?.[elementKey] &&\n !this._isBrushContainItem(operateMask, graphicItem, { dx: regionOffsetX, dy: regionOffsetY })\n ) {\n el.removeState(IN_BRUSH_STATE);\n el.addState(OUT_BRUSH_STATE);\n this._linkedOutOfBrushElementsMap[elementKey] = el;\n }\n graphicItem.setAttribute('pickable', !this._needDisablePickable);\n });\n });\n }\n });\n }\n\n private _isBrushContainItem(brushMask: IPolygon, item: IGraphic, linkedOffset?: { dx: number; dy: number }) {\n if (!brushMask?.globalTransMatrix || !brushMask?.attribute?.points) {\n return false;\n }\n\n // 根据变换矩阵得到brushMask的实际坐标\n const points = brushMask?.attribute?.points ?? [];\n const { a, b, c, d, e, f } = brushMask.globalTransMatrix;\n\n const dx = linkedOffset?.dx || 0;\n const dy = linkedOffset?.dy || 0;\n\n const pointsCoord = points.map((p: IPointLike) => {\n return {\n x: a * p.x + c * p.y + e + dx,\n y: b * p.x + d * p.y + f + dy\n };\n });\n\n brushMask.globalAABBBounds\n .clone()\n .set(\n brushMask.globalAABBBounds.x1 + dx,\n brushMask.globalAABBBounds.y1 + dy,\n brushMask.globalAABBBounds.x2 + dx,\n brushMask.globalAABBBounds.y2 + dy\n );\n\n // 根据变换矩阵得到item的实际坐标\n const x = item.globalTransMatrix.e;\n const y = item.globalTransMatrix.f;\n\n // brush与图表图元进行相交 或 包含判断\n let itemBounds: { x: number; y: number }[] = [];\n if (item.type === 'symbol') {\n const { size: itemSize = 0 } = item?.attribute as ISymbolGraphicAttribute;\n const size = array(itemSize)[0] / 2;\n itemBounds = [\n {\n x: x - size,\n y: y - size\n },\n {\n x: x + size,\n y: y - size\n },\n {\n x: x + size,\n y: y + size\n },\n {\n x: x - size,\n y: y + size\n }\n ];\n return polygonIntersectPolygon(pointsCoord, itemBounds);\n } else if (item.type === 'rect') {\n const { x1, x2, y1, y2 } = item?.AABBBounds;\n const width = Math.abs(x1 - x2);\n const height = Math.abs(y1 - y2);\n itemBounds = [\n {\n x: x,\n y: y\n },\n {\n x: x + width,\n y: y\n },\n {\n x: x + width,\n y: y + height\n },\n {\n x: x,\n y: y + height\n }\n ];\n return polygonIntersectPolygon(pointsCoord, itemBounds);\n }\n return brushMask.globalAABBBounds.intersects(item.globalAABBBounds);\n }\n\n private _stateClamp(state: number) {\n return Math.min(Math.max(0, state), 1);\n }\n\n private _setAxisAndDataZoom(operateMask: IPolygon, region: IRegion) {\n this._zoomRecord = [];\n if (this._spec.zoomAfterBrush) {\n // step1: 拿到brush bounds, 计算 continuous axis/dataZoom新范围\n const operateMaskBounds = operateMask.AABBBounds;\n\n // step2:\n // 如果轴关联了dataZoom,则通过dataZoom更新轴\n // 如果轴没有关联dataZoom,则直接更改轴rangeFactor\n this._regionAxisMap['region_' + region.id]?.forEach(axis => {\n const isHorizontal = axis.layoutOrient === 'bottom' || axis.layoutOrient === 'top';\n const axisRangeExpand = this._spec.axisRangeExpand ?? 0;\n const { x1, x2, y1, y2 } = operateMaskBounds;\n const regionStartAttr = isHorizontal ? 'x' : 'y';\n const boundsStart = isHorizontal ? x1 : y1;\n const boundsEnd = isHorizontal ? x2 : y2;\n\n if (this._axisDataZoomMap[axis.id]) {\n const dataZoom = this._axisDataZoomMap[axis.id];\n const releatedAxis = dataZoom.relatedAxisComponent as AxisComponent;\n const startValue = releatedAxis\n .getScale()\n .invert(boundsStart - region.getLayoutStartPoint()[regionStartAttr]);\n const endValue = releatedAxis.getScale().invert(boundsEnd - region.getLayoutStartPoint()[regionStartAttr]);\n const startPercent = dataZoom.dataToStatePoint(startValue);\n const endPercent = dataZoom.dataToStatePoint(endValue);\n const newStartPercent = this._stateClamp(startPercent - axisRangeExpand);\n const newEndPercent = this._stateClamp(endPercent + axisRangeExpand);\n dataZoom.setStartAndEnd(Math.min(newStartPercent, newEndPercent), Math.max(newStartPercent, newEndPercent), [\n 'percent',\n 'percent'\n ]);\n\n this._zoomRecord.push({\n operateComponent: dataZoom,\n start: newStartPercent,\n end: newEndPercent\n });\n } else {\n const range = axis.getScale().range();\n const rangeFactor = (axis.getScale() as IContinuousScale | IBandLikeScale).rangeFactor() ?? [0, 1];\n\n // 判断轴是否为反向轴(last(range) < range[0]),即从右到左, 或从下到上\n // 如果是反向轴, 计算start和end时, 也要保持 start < end\n const isAxisReverse = last(range) < range[0];\n const startPosTemp = boundsStart - region.getLayoutStartPoint()[regionStartAttr];\n const endPosTemp = boundsEnd - region.getLayoutStartPoint()[regionStartAttr];\n const endPos = isAxisReverse ? Math.min(startPosTemp, endPosTemp) : Math.max(startPosTemp, endPosTemp);\n const startPos = isAxisReverse ? Math.max(startPosTemp, endPosTemp) : Math.min(startPosTemp, endPosTemp);\n\n const start =\n ((startPos - range[0]) / (last(range) - range[0])) * (rangeFactor[1] - rangeFactor[0]) + rangeFactor[0];\n const end =\n ((endPos - range[0]) / (last(range) - range[0])) * (rangeFactor[1] - rangeFactor[0]) + rangeFactor[0];\n const newStart = this._stateClamp(start - axisRangeExpand);\n const newEnd = this._stateClamp(end + axisRangeExpand);\n (axis.getScale() as ILinearScale).rangeFactor([newStart, newEnd]);\n axis.effect.scaleUpdate();\n\n this._zoomRecord.push({\n operateComponent: axis,\n start: newStart,\n end: newEnd\n });\n }\n });\n }\n }\n\n protected _bindRegions() {\n if (isValid(this._spec.regionId) && isValid(this._spec.regionIndex)) {\n this._relativeRegions = this._option.getAllRegions();\n }\n this._relativeRegions = this._option.getRegionsInUserIdOrIndex(\n array(this._spec.regionId),\n array(this._spec.regionIndex)\n );\n }\n\n protected _bindLinkedSeries() {\n if (isValid(this._spec.brushLinkSeriesId) && isValid(this._spec.brushLinkSeriesIndex)) {\n return;\n }\n this._linkedSeries = this._option.getSeriesInUserIdOrIndex(\n array(this._spec.brushLinkSeriesId),\n array(this._spec.brushLinkSeriesIndex)\n );\n }\n\n private _initRegionAxisMap() {\n // 如果配置了axis,则按配置\n // 如果没有配置axis,则默认所有axis\n if (isValid(this._spec.axisId)) {\n array(this._spec.axisId).forEach((axisId: string) => {\n this._releatedAxes.push(this._option.getComponentByUserId(axisId) as AxisComponent);\n });\n } else if (isValid(this._spec.axisIndex)) {\n array(this._spec.axisIndex).forEach((axisIndex: number) => {\n this._releatedAxes.push(this._option.getComponentByIndex('axes', axisIndex) as AxisComponent);\n });\n } else {\n this._releatedAxes = this._option.getComponentsByKey('axes') as AxisComponent[];\n }\n\n // 按照region进行分组,便于brush找到关联axis (brush -> region -> axis)\n this._releatedAxes.forEach((axis: AxisComponent) => {\n axis?.getRegions().forEach((region: IRegion) => {\n if (this._regionAxisMap['region_' + region.id]) {\n this._regionAxisMap['region_' + region.id].push(axis);\n } else {\n this._regionAxisMap['region_' + region.id] = [axis];\n }\n });\n });\n }\n\n private _initAxisDataZoomMap() {\n (this._option.getComponentsByKey('dataZoom') as DataZoom[]).forEach((dz: DataZoom) => {\n if (dz.relatedAxisComponent) {\n this._axisDataZoomMap[(dz.relatedAxisComponent as AxisComponent).id] = dz;\n }\n });\n }\n\n private _initNeedOperatedItem() {\n const seriesUserId = this._spec.seriesId;\n const seriesIndex = this._spec.seriesIndex;\n this._relativeRegions.forEach(r => {\n const allMarks: IMark[] = [];\n r.getSeries().forEach((s: ISeries) => {\n if (\n (seriesUserId && array(seriesUserId).includes(s.userId.toString())) ||\n (seriesIndex && array(seriesIndex).includes(s.getSpecIndex())) ||\n (!seriesIndex && !seriesUserId)\n ) {\n allMarks.push(...s.getMarksWithoutRoot());\n }\n this._itemMap[r.id] = allMarks;\n });\n });\n\n this._linkedSeries.forEach(s => {\n this._linkedItemMap[s.id] = s.getMarksWithoutRoot();\n });\n }\n\n protected _initMarkBrushState(componentIndex: number, stateName: string) {\n this._brushComponents.forEach((brush, index) => {\n if (index !== componentIndex) {\n brush.children[0].removeAllChild();\n }\n });\n\n this._inBrushElementsMap = {};\n this._outOfBrushElementsMap = {};\n this._linkedInBrushElementsMap = {};\n this._linkedOutOfBrushElementsMap = {};\n\n this._option.getAllSeries().forEach((s: ISeries) => {\n s.getMarksWithoutRoot().forEach((mark: IMark) => {\n const grammarMark = mark.getProduct();\n if (!grammarMark || !grammarMark.elements || !grammarMark.elements.length) {\n return;\n }\n const elements = grammarMark.elements;\n elements.forEach((el: IElement) => {\n const elementKey = mark.id + '_' + el.key;\n el.removeState(IN_BRUSH_STATE);\n el.removeState(OUT_BRUSH_STATE);\n el.addState(stateName);\n this._outOfBrushElementsMap[elementKey] = el;\n this._linkedOutOfBrushElementsMap[elementKey] = el;\n });\n });\n });\n }\n\n protected initEvent() {\n // do nothing\n }\n onRender(ctx: IModelRenderOption): void {\n // do nothing\n }\n changeRegions(regions: IRegion[]): void {\n // do nothing\n }\n\n protected _getNeedClearVRenderComponents(): IGraphic[] {\n return this._brushComponents as unknown as IGroup[];\n }\n\n /**\n * updateSpec\n */\n _compareSpec(spec: T, prevSpec: T) {\n if (this._brushComponents) {\n // FIXME: 这个逻辑放在这个方法里不太妥当?\n this._relativeRegions.forEach((region: IRegion, index: number) => {\n this._updateBrushComponent(region, index);\n });\n }\n const result = super._compareSpec(spec, prevSpec);\n if (!isEqual(prevSpec, spec)) {\n result.reRender = true;\n result.reMake = true;\n }\n return result;\n }\n\n onLayoutEnd(ctx: any): void {\n super.onLayoutEnd(ctx);\n if (this._option.disableTriggerEvent) {\n return;\n }\n const brushVisible = this._spec.visible ?? true;\n if (brushVisible) {\n // 创建或更新marker组件\n if (!this._brushComponents) {\n this._brushComponents = [];\n this._relativeRegions.forEach((region: IRegion, index: number) => {\n this._createBrushComponent(region, index);\n });\n } else {\n this._relativeRegions.forEach((region: IRegion, index: number) => {\n this._updateBrushComponent(region, index);\n });\n }\n }\n }\n\n clearGraphic(): void {\n if (this._brushComponents) {\n this._brushComponents.forEach(brush => {\n (brush as any)._container.incrementalClearChild();\n });\n }\n }\n\n clear(): void {\n if (this._brushComponents) {\n const container = this.getContainer();\n this._brushComponents.forEach(brush => {\n brush.removeAllChild();\n brush.releaseBrushEvents();\n\n if (container) {\n container.removeChild(brush as unknown as INode);\n }\n });\n this._brushComponents = null;\n }\n }\n}\n\nexport const registerBrush = () => {\n Factory.registerComponent(Brush.type, Brush);\n};\n"]}
|