@visactor/vchart 1.13.5-vstory.3 → 1.13.6-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/es5/index.js +1 -1
- package/build/index.es.js +5715 -6456
- package/build/index.js +5724 -6455
- package/build/index.min.js +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/cjs/chart/base/base-chart.js +6 -8
- package/cjs/chart/base/base-chart.js.map +1 -1
- package/cjs/chart/index.js +2 -1
- package/cjs/compile/compilable-base.js +1 -2
- package/cjs/component/brush/brush.js +7 -3
- package/cjs/component/brush/brush.js.map +1 -1
- package/cjs/component/crosshair/base.d.ts +23 -34
- package/cjs/component/crosshair/base.js +90 -6
- package/cjs/component/crosshair/base.js.map +1 -1
- package/cjs/component/crosshair/cartesian.d.ts +5 -28
- package/cjs/component/crosshair/cartesian.js +72 -170
- package/cjs/component/crosshair/cartesian.js.map +1 -1
- package/cjs/component/crosshair/interface/common.d.ts +67 -2
- package/cjs/component/crosshair/interface/common.js.map +1 -1
- package/cjs/component/crosshair/interface/index.d.ts +0 -2
- package/cjs/component/crosshair/interface/index.js +0 -1
- package/cjs/component/crosshair/interface/index.js.map +1 -1
- package/cjs/component/crosshair/interface/spec.d.ts +8 -4
- package/cjs/component/crosshair/interface/spec.js.map +1 -1
- package/cjs/component/crosshair/polar.d.ts +6 -22
- package/cjs/component/crosshair/polar.js +78 -143
- package/cjs/component/crosshair/polar.js.map +1 -1
- package/cjs/component/crosshair/utils/cartesian.d.ts +5 -26
- package/cjs/component/crosshair/utils/cartesian.js +86 -174
- package/cjs/component/crosshair/utils/cartesian.js.map +1 -1
- package/cjs/component/crosshair/utils/polar.d.ts +18 -11
- package/cjs/component/crosshair/utils/polar.js +72 -117
- package/cjs/component/crosshair/utils/polar.js.map +1 -1
- package/cjs/component/data-zoom/data-filter-base-component.d.ts +2 -2
- package/cjs/component/data-zoom/data-filter-base-component.js +8 -7
- package/cjs/component/data-zoom/data-filter-base-component.js.map +1 -1
- package/cjs/component/data-zoom/data-zoom/data-zoom.js +2 -2
- package/cjs/component/data-zoom/data-zoom/data-zoom.js.map +1 -1
- package/cjs/component/data-zoom/interface.d.ts +11 -0
- package/cjs/component/data-zoom/interface.js.map +1 -1
- package/cjs/component/data-zoom/scroll-bar/scroll-bar.d.ts +0 -1
- package/cjs/component/data-zoom/scroll-bar/scroll-bar.js +7 -10
- package/cjs/component/data-zoom/scroll-bar/scroll-bar.js.map +1 -1
- package/cjs/component/label/interface.d.ts +2 -0
- package/cjs/component/label/interface.js.map +1 -1
- package/cjs/component/label/label.d.ts +2 -0
- package/cjs/component/label/label.js +15 -1
- package/cjs/component/label/label.js.map +1 -1
- package/cjs/component/tooltip/processor/mark-tooltip.js +13 -1
- package/cjs/component/tooltip/processor/mark-tooltip.js.map +1 -1
- package/cjs/component/tooltip/tooltip.d.ts +1 -0
- package/cjs/component/tooltip/tooltip.js +5 -4
- package/cjs/component/tooltip/tooltip.js.map +1 -1
- package/cjs/core/index.d.ts +2 -2
- package/cjs/core/index.js +42 -2
- package/cjs/core/index.js.map +1 -1
- package/cjs/data/transforms/waterfall.d.ts +1 -0
- package/cjs/data/transforms/waterfall.js +1 -1
- package/cjs/data/transforms/waterfall.js.map +1 -1
- package/cjs/event/index.d.ts +1 -0
- package/cjs/event/index.js +16 -1
- package/cjs/event/index.js.map +1 -1
- package/cjs/interaction/zoom/zoomable.d.ts +1 -0
- package/cjs/interaction/zoom/zoomable.js +4 -3
- package/cjs/interaction/zoom/zoomable.js.map +1 -1
- package/cjs/plugin/components/axis-sync/tick-align-transform.js +10 -5
- package/cjs/plugin/components/axis-sync/tick-align-transform.js.map +1 -1
- package/cjs/plugin/components/tooltip-handler/utils/attribute.js +1 -1
- package/cjs/plugin/components/tooltip-handler/utils/attribute.js.map +1 -1
- package/cjs/plugin/components/tooltip-handler/utils/position.d.ts +2 -4
- package/cjs/plugin/components/tooltip-handler/utils/position.js +23 -11
- package/cjs/plugin/components/tooltip-handler/utils/position.js.map +1 -1
- package/cjs/plugin/components/tooltip-handler/utils/style.js +2 -1
- package/cjs/plugin/components/tooltip-handler/utils/style.js.map +1 -1
- package/cjs/scale/global-scale.js +2 -1
- package/cjs/scale/global-scale.js.map +1 -1
- package/cjs/series/area/area.js +3 -1
- package/cjs/series/area/area.js.map +1 -1
- package/cjs/series/funnel/funnel.js +1 -1
- package/cjs/series/funnel/funnel.js.map +1 -1
- package/cjs/series/pictogram/pictogram.d.ts +2 -0
- package/cjs/series/pictogram/pictogram.js +7 -4
- package/cjs/series/pictogram/pictogram.js.map +1 -1
- package/cjs/series/progress/circular/circular.js +5 -0
- package/cjs/series/progress/circular/circular.js.map +1 -1
- package/cjs/series/sunburst/sunburst.js.map +1 -1
- package/cjs/series/waterfall/waterfall.js +4 -2
- package/cjs/series/waterfall/waterfall.js.map +1 -1
- package/cjs/typings/visual.d.ts +7 -0
- package/cjs/typings/visual.js.map +1 -1
- package/cjs/util/scale.js +1 -1
- package/cjs/util/scale.js.map +1 -1
- package/esm/chart/base/base-chart.js +6 -8
- package/esm/chart/base/base-chart.js.map +1 -1
- package/esm/chart/index.js +2 -1
- package/esm/compile/compilable-base.js +1 -2
- package/esm/component/brush/brush.js +7 -3
- package/esm/component/brush/brush.js.map +1 -1
- package/esm/component/crosshair/base.d.ts +23 -34
- package/esm/component/crosshair/base.js +95 -5
- package/esm/component/crosshair/base.js.map +1 -1
- package/esm/component/crosshair/cartesian.d.ts +5 -28
- package/esm/component/crosshair/cartesian.js +73 -174
- package/esm/component/crosshair/cartesian.js.map +1 -1
- package/esm/component/crosshair/interface/common.d.ts +67 -2
- package/esm/component/crosshair/interface/common.js.map +1 -1
- package/esm/component/crosshair/interface/index.d.ts +0 -2
- package/esm/component/crosshair/interface/index.js +0 -4
- package/esm/component/crosshair/interface/index.js.map +1 -1
- package/esm/component/crosshair/interface/spec.d.ts +8 -4
- package/esm/component/crosshair/interface/spec.js.map +1 -1
- package/esm/component/crosshair/polar.d.ts +6 -22
- package/esm/component/crosshair/polar.js +75 -146
- package/esm/component/crosshair/polar.js.map +1 -1
- package/esm/component/crosshair/utils/cartesian.d.ts +5 -26
- package/esm/component/crosshair/utils/cartesian.js +81 -166
- package/esm/component/crosshair/utils/cartesian.js.map +1 -1
- package/esm/component/crosshair/utils/polar.d.ts +18 -11
- package/esm/component/crosshair/utils/polar.js +67 -112
- package/esm/component/crosshair/utils/polar.js.map +1 -1
- package/esm/component/data-zoom/data-filter-base-component.d.ts +2 -2
- package/esm/component/data-zoom/data-filter-base-component.js +8 -7
- package/esm/component/data-zoom/data-filter-base-component.js.map +1 -1
- package/esm/component/data-zoom/data-zoom/data-zoom.js +2 -2
- package/esm/component/data-zoom/data-zoom/data-zoom.js.map +1 -1
- package/esm/component/data-zoom/interface.d.ts +11 -0
- package/esm/component/data-zoom/interface.js.map +1 -1
- package/esm/component/data-zoom/scroll-bar/scroll-bar.d.ts +0 -1
- package/esm/component/data-zoom/scroll-bar/scroll-bar.js +8 -9
- package/esm/component/data-zoom/scroll-bar/scroll-bar.js.map +1 -1
- package/esm/component/label/interface.d.ts +2 -0
- package/esm/component/label/interface.js.map +1 -1
- package/esm/component/label/label.d.ts +2 -0
- package/esm/component/label/label.js +14 -1
- package/esm/component/label/label.js.map +1 -1
- package/esm/component/tooltip/processor/mark-tooltip.js +13 -1
- package/esm/component/tooltip/processor/mark-tooltip.js.map +1 -1
- package/esm/component/tooltip/tooltip.d.ts +1 -0
- package/esm/component/tooltip/tooltip.js +5 -4
- package/esm/component/tooltip/tooltip.js.map +1 -1
- package/esm/core/index.d.ts +2 -2
- package/esm/core/index.js +2 -2
- package/esm/core/index.js.map +1 -1
- package/esm/data/transforms/waterfall.d.ts +1 -0
- package/esm/data/transforms/waterfall.js +1 -1
- package/esm/data/transforms/waterfall.js.map +1 -1
- package/esm/event/index.d.ts +1 -0
- package/esm/event/index.js +2 -0
- package/esm/event/index.js.map +1 -1
- package/esm/interaction/zoom/zoomable.d.ts +1 -0
- package/esm/interaction/zoom/zoomable.js +4 -3
- package/esm/interaction/zoom/zoomable.js.map +1 -1
- package/esm/plugin/components/axis-sync/tick-align-transform.js +7 -5
- package/esm/plugin/components/axis-sync/tick-align-transform.js.map +1 -1
- package/esm/plugin/components/tooltip-handler/utils/attribute.js +1 -1
- package/esm/plugin/components/tooltip-handler/utils/attribute.js.map +1 -1
- package/esm/plugin/components/tooltip-handler/utils/position.d.ts +2 -4
- package/esm/plugin/components/tooltip-handler/utils/position.js +23 -10
- package/esm/plugin/components/tooltip-handler/utils/position.js.map +1 -1
- package/esm/plugin/components/tooltip-handler/utils/style.js +2 -1
- package/esm/plugin/components/tooltip-handler/utils/style.js.map +1 -1
- package/esm/scale/global-scale.js +2 -1
- package/esm/scale/global-scale.js.map +1 -1
- package/esm/series/area/area.js +4 -0
- package/esm/series/area/area.js.map +1 -1
- package/esm/series/funnel/funnel.js +1 -1
- package/esm/series/funnel/funnel.js.map +1 -1
- package/esm/series/pictogram/pictogram.d.ts +2 -0
- package/esm/series/pictogram/pictogram.js +7 -4
- package/esm/series/pictogram/pictogram.js.map +1 -1
- package/esm/series/progress/circular/circular.js +6 -1
- package/esm/series/progress/circular/circular.js.map +1 -1
- package/esm/series/sunburst/sunburst.js.map +1 -1
- package/esm/series/waterfall/waterfall.js +4 -2
- package/esm/series/waterfall/waterfall.js.map +1 -1
- package/esm/typings/visual.d.ts +7 -0
- package/esm/typings/visual.js.map +1 -1
- package/esm/util/scale.js +1 -1
- package/esm/util/scale.js.map +1 -1
- package/package.json +18 -18
- package/cjs/component/crosshair/interface/cartesian.d.ts +0 -33
- package/cjs/component/crosshair/interface/cartesian.js +0 -6
- package/cjs/component/crosshair/interface/cartesian.js.map +0 -1
- package/cjs/component/crosshair/interface/polar.d.ts +0 -25
- package/cjs/component/crosshair/interface/polar.js +0 -6
- package/cjs/component/crosshair/interface/polar.js.map +0 -1
- package/esm/component/crosshair/interface/cartesian.d.ts +0 -33
- package/esm/component/crosshair/interface/cartesian.js +0 -2
- package/esm/component/crosshair/interface/cartesian.js.map +0 -1
- package/esm/component/crosshair/interface/polar.d.ts +0 -25
- package/esm/component/crosshair/interface/polar.js +0 -2
- package/esm/component/crosshair/interface/polar.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/component/crosshair/cartesian.ts"],"names":[],"mappings":"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","file":"cartesian.js","sourcesContent":["import type { Maybe } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { isValid } from '@visactor/vutils';\nimport type { IComponentOption } from '../interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { ComponentTypeEnum } from '../interface/type';\nimport type {\n AxisCurrentValueMap,\n ICartesianCrosshairSpec,\n ICrosshairCategoryFieldSpec,\n ICrosshairInfoX,\n ICrosshairInfoY\n} from './interface';\nimport type { ICartesianSeries } from '../../series/interface';\nimport { isDiscrete } from '@visactor/vscale';\nimport { LineCrosshair, RectCrosshair, Tag } from '@visactor/vrender-components';\nimport type { IAxisInfo, IHair } from './base';\n// eslint-disable-next-line no-duplicate-imports\nimport { BaseCrossHair } from './base';\nimport type { IGraphic, INode } from '@visactor/vrender-core';\nimport { limitTagInBounds } from './utils';\nimport type { IAxis } from '../axis/interface';\nimport type { IOrientType, StringOrNumber, TooltipActiveType, TooltipData } from '../../typings';\nimport { isXAxis, isYAxis } from '../axis/cartesian/util/common';\nimport { Factory } from '../../core/factory';\nimport { LayoutType } from './config';\nimport type { IModelSpecInfo } from '../../model/interface';\nimport { layoutByValue, layoutHorizontalCrosshair, layoutVerticalCrosshair } from './utils/cartesian';\nimport { getFirstSeries } from '../../util';\nimport type { IDimensionData, IDimensionInfo } from '../../event/events/dimension/interface';\nimport { getSpecInfo } from '../util';\n\n// 1. crosshair保存上次记录的x和y轴dimension\n// 2. 每次交互触发时,首先转化成dimension保存,然后依据dimension计算x和y绘制\n// 3. 如果同方向同时有多个轴,那么同时保存这些轴的数据\n// 4. 如果同方向的轴有多个离散轴,那么直接不显示\n\nexport class CartesianCrossHair<T extends ICartesianCrosshairSpec = ICartesianCrosshairSpec> extends BaseCrossHair<T> {\n static specKey = 'crosshair';\n\n static type = ComponentTypeEnum.cartesianCrosshair;\n type = ComponentTypeEnum.cartesianCrosshair;\n name: string = ComponentTypeEnum.cartesianCrosshair;\n\n private _xHair: IHair | undefined;\n private _yHair: IHair | undefined;\n\n private _cacheXCrossHairInfo: ICrosshairInfoX | undefined;\n private _cacheYCrossHairInfo: ICrosshairInfoY | undefined;\n\n private _xCrosshair: LineCrosshair | RectCrosshair;\n private _xTopLabel: Tag;\n private _xBottomLabel: Tag;\n\n private _yCrosshair: LineCrosshair | RectCrosshair;\n private _yLeftLabel: Tag;\n private _yRightLabel: Tag;\n\n private _currValueX: AxisCurrentValueMap;\n private _currValueY: AxisCurrentValueMap;\n\n static getSpecInfo(chartSpec: any): Maybe<IModelSpecInfo[]> {\n return getSpecInfo<ICartesianCrosshairSpec>(chartSpec, this.specKey, this.type, (s: ICartesianCrosshairSpec) => {\n return (s.xField && s.xField.visible !== false) || (s.yField && s.yField.visible !== false);\n });\n }\n\n constructor(spec: T, options: IComponentOption) {\n super(spec, options);\n this._currValueX = new Map();\n this._currValueY = new Map();\n }\n\n protected _showDefaultCrosshairBySpec() {\n const { xField, yField } = this._spec as ICartesianCrosshairSpec;\n if (xField?.visible && xField.defaultSelect) {\n const { axisIndex, datum } = xField.defaultSelect;\n this._defaultCrosshair(axisIndex, datum, LayoutType.VERTICAL);\n }\n if (yField?.visible && yField.defaultSelect) {\n const { axisIndex, datum } = yField.defaultSelect;\n this._defaultCrosshair(axisIndex, datum, LayoutType.HORIZONTAL);\n }\n }\n\n private _defaultCrosshair(axisIndex: number, value: StringOrNumber, tag: number) {\n const axis = this._option.getComponentsByKey('axes').find(c => c.getSpecIndex() === axisIndex) as IAxis;\n if (!axis) {\n return;\n }\n // 横轴\n if (tag === LayoutType.VERTICAL) {\n this._currValueX.clear();\n this._currValueX.set(axisIndex, { axis, value });\n } else {\n this._currValueY.clear();\n this._currValueY.set(axisIndex, { axis, value });\n }\n this.layoutByValue(tag);\n }\n\n /**\n * 查找所有落在x和y区域的轴\n * @param relativeX\n * @param relativeY\n */\n private _findAllAxisContains(relativeX: number, relativeY: number) {\n const xAxisMap = this._getAxisInfoByField<IAxis>('x');\n const yAxisMap = this._getAxisInfoByField<IAxis>('y');\n return {\n xAxisMap: this._filterAxisByPoint(xAxisMap, relativeX, relativeY),\n yAxisMap: this._filterAxisByPoint(yAxisMap, relativeX, relativeY)\n };\n }\n\n private _getValueAt(axis: IAxis, p: number): number | string {\n const value = axis.getScale().invert(p);\n return value;\n }\n\n /**\n * clear axis value of crosshair\n */\n clearAxisValue() {\n this._currValueX.clear();\n this._currValueY.clear();\n }\n\n /**\n * set axis value of crosshair\n */\n setAxisValue(value: StringOrNumber, axis: IAxis) {\n if (isXAxis(axis.getOrient() as unknown as IOrientType)) {\n this._currValueX.set(axis.getSpecIndex(), {\n value,\n axis\n });\n } else {\n this._currValueY.set(axis.getSpecIndex(), {\n value,\n axis\n });\n }\n }\n /**\n * 根据位置获取所有轴上的value\n * @param axisMap\n * @param p\n * @returns\n */\n private _getAllAxisValues(\n axisMap: IAxisInfo<IAxis>,\n p: number,\n currValue: AxisCurrentValueMap,\n vertical: boolean\n ): boolean {\n // 首先不能存在两个离散轴\n let discrete = false;\n axisMap.forEach(item => {\n if (isDiscrete(item.axis.getScale().type)) {\n if (!discrete) {\n discrete = true;\n } else {\n this.enable = false;\n }\n }\n });\n if (!this.enable) {\n return false;\n }\n // 获取所有的value\n axisMap.forEach((item, id) => {\n const axis = item.axis;\n currValue.set(id, {\n value: this._getValueAt(\n axis,\n p -\n (vertical\n ? axis.getLayoutStartPoint().x - this.getLayoutStartPoint().x\n : axis.getLayoutStartPoint().y - this.getLayoutStartPoint().y)\n ),\n axis\n });\n });\n return true;\n }\n\n protected _layoutCrosshair(\n relativeX: number,\n relativeY: number,\n tooltipData?: TooltipData,\n activeType?: TooltipActiveType\n ) {\n let x = relativeX;\n let y = relativeY;\n\n if (tooltipData && tooltipData.length) {\n if (activeType === 'dimension') {\n const dimensionInfo = (tooltipData as IDimensionInfo[])[0];\n // 图例筛选时, 找到第一个没有被筛选的系列\n const datumIndex = dimensionInfo.data.findIndex(dimData => dimData.datum.length > 0);\n let pos;\n if (datumIndex > -1) {\n const dimensionData = dimensionInfo.data[datumIndex];\n pos = dimensionData.series.dataToPosition(dimensionData.datum[0]);\n }\n\n const isY = isValid(dimensionInfo.dimType)\n ? dimensionInfo.dimType === 'y'\n : isYAxis(dimensionInfo?.axis?.getOrient() as IOrientType);\n\n if (isY) {\n y = pos?.y;\n } else {\n x = pos?.x;\n }\n } else if (activeType === 'mark') {\n const dimensionData = (tooltipData as IDimensionData[])[0];\n const pos = dimensionData.series.dataToPosition(dimensionData.datum[0]);\n\n x = pos?.x;\n y = pos?.y;\n }\n }\n\n // 找到所有的包含这个点的轴\n const { xAxisMap, yAxisMap } = this._findAllAxisContains(x, y);\n if ((xAxisMap && xAxisMap.size === 0) || (yAxisMap && yAxisMap.size === 0)) {\n if (this.enableRemain) {\n return;\n }\n // 隐藏\n this.hide();\n return;\n }\n // 删除之前的currValue\n this._currValueX.clear();\n this._currValueY.clear();\n // 将数据保存到这个对象中,如果不存在,就直接不执行后续逻辑\n xAxisMap && xAxisMap.size && this._getAllAxisValues(xAxisMap, x, this._currValueX, true);\n yAxisMap && yAxisMap.size && this._getAllAxisValues(yAxisMap, y, this._currValueY, false);\n\n this.layoutByValue(LayoutType.ALL);\n }\n\n hide() {\n // 隐藏\n this._xCrosshair && this._xCrosshair.hideAll();\n this._xTopLabel && this._xTopLabel.hideAll();\n this._xBottomLabel && this._xBottomLabel.hideAll();\n\n this._yCrosshair && this._yCrosshair.hideAll();\n this._yLeftLabel && this._yLeftLabel.hideAll();\n this._yRightLabel && this._yRightLabel.hideAll();\n }\n\n layoutByValue(tag: number = LayoutType.ALL) {\n if (!this.enable) {\n return;\n }\n const series = getFirstSeries(this._regions, 'cartesian') as ICartesianSeries;\n if (!series) {\n return;\n }\n\n const { x, y, offsetWidth, offsetHeight, bandWidth, bandHeight } = layoutByValue(\n tag,\n series,\n this.getLayoutStartPoint(),\n this._currValueX,\n this._currValueY,\n this._xHair,\n this._yHair,\n this.enableRemain,\n this._cacheXCrossHairInfo,\n this._cacheYCrossHairInfo\n );\n\n if (this.enableRemain) {\n x && (this._cacheXCrossHairInfo = { ...x, _isCache: true });\n y && (this._cacheYCrossHairInfo = { ...y, _isCache: true });\n }\n\n x && this._layoutVertical(x, bandWidth, offsetWidth);\n y && this._layoutHorizontal(y, bandHeight, offsetHeight);\n }\n\n private _layoutVertical(crosshairInfo: ICrosshairInfoX, bandWidth: number, offsetWidth: number) {\n if ((crosshairInfo._isCache && this.enableRemain) || !this._xHair) {\n return;\n }\n\n const { x, topPos, height, top, bottom, visible } = crosshairInfo;\n\n if (visible) {\n // 外部设置的size\n const type = this._xHair.type;\n const positionAttribute = layoutVerticalCrosshair(this._xHair, crosshairInfo, bandWidth, offsetWidth);\n this._updateCrosshair('x', type, positionAttribute);\n // 文本\n if (top.visible) {\n const updateAttrs = {\n x: x + bandWidth / 2,\n y: topPos,\n ...top,\n ...this._xHair.label,\n textStyle: {\n ...this._xHair.label?.textStyle,\n textAlign: 'center',\n textBaseline: 'bottom'\n },\n zIndex: this.labelZIndex,\n visible: true\n };\n this._updateCrosshairLabel(this._xTopLabel, updateAttrs, label => {\n label.name = 'crosshair-x-top-label';\n this._xTopLabel = label;\n });\n } else {\n this._xTopLabel && this._xTopLabel.hideAll();\n }\n\n if (bottom.visible) {\n const updateAttrs = {\n x: x + bandWidth / 2,\n y: topPos + height,\n ...bottom,\n ...this._xHair.label,\n textStyle: {\n ...this._xHair.label?.textStyle,\n textAlign: 'center',\n textBaseline: 'top'\n },\n zIndex: this.labelZIndex,\n visible: true\n };\n this._updateCrosshairLabel(this._xBottomLabel, updateAttrs, label => {\n label.name = 'crosshair-x-bottom-label';\n this._xBottomLabel = label;\n });\n } else {\n this._xBottomLabel && this._xBottomLabel.hideAll();\n }\n }\n }\n\n private _layoutHorizontal(crosshairInfo: ICrosshairInfoY, bandHeight: number, offsetHeight: number) {\n if ((crosshairInfo._isCache && this.enableRemain) || !this._yHair) {\n return;\n }\n const { leftPos, width, y, left, right, visible } = crosshairInfo;\n if (visible) {\n const type = this._yHair.type;\n const positionAttribute = layoutHorizontalCrosshair(this._yHair, crosshairInfo, bandHeight, offsetHeight);\n this._updateCrosshair('y', type, positionAttribute);\n\n // 文本\n if (left.visible) {\n const updateAttrs = {\n x: leftPos,\n y: y + bandHeight / 2,\n ...left,\n ...this._yHair.label,\n textStyle: {\n ...this._yHair.label?.textStyle,\n textAlign: 'right',\n textBaseline: 'middle'\n },\n zIndex: this.labelZIndex\n };\n\n this._updateCrosshairLabel(this._yLeftLabel, updateAttrs, label => {\n label.name = 'crosshair-y-left-label';\n this._yLeftLabel = label;\n });\n } else {\n this._yLeftLabel && this._yLeftLabel.hideAll();\n }\n\n if (right.visible) {\n const updateAttrs = {\n x: leftPos + width,\n y: y + bandHeight,\n ...right,\n ...this._yHair.label,\n textStyle: {\n ...this._yHair.label?.textStyle,\n textAlign: 'left',\n textBaseline: 'middle'\n },\n zIndex: this.labelZIndex\n };\n this._updateCrosshairLabel(this._yRightLabel, updateAttrs, label => {\n label.name = 'crosshair-y-right-label';\n this._yRightLabel = label;\n });\n } else {\n this._yRightLabel && this._yRightLabel.hideAll();\n }\n }\n }\n\n protected _parseFieldInfo() {\n const { xField, yField } = this._spec as ICartesianCrosshairSpec;\n this._parseAndSetCrosshair(xField, 'x');\n this._parseAndSetCrosshair(yField, 'y');\n }\n\n private _parseAndSetCrosshair(field: ICrosshairCategoryFieldSpec, axis: 'x' | 'y') {\n const hairProp = `_${axis}Hair` as '_xHair' | '_yHair';\n const crosshairProp = `_${axis}Crosshair` as '_xCrosshair' | '_yCrosshair';\n if (field && field.visible) {\n this[hairProp] = this._parseField(field, `${axis}Field` as 'xField' | 'yField');\n\n if (this[crosshairProp]) {\n const { style, type } = this[hairProp];\n const styleKey = type === 'rect' ? 'rectStyle' : 'lineStyle';\n\n this[crosshairProp].setAttributes({\n [styleKey]: style\n });\n }\n } else if (this[crosshairProp] && this[crosshairProp].parent) {\n this[crosshairProp].parent.removeChild(this[crosshairProp]);\n }\n }\n\n private _updateCrosshair(dim: string, type: string, attributes: any) {\n const container = this.getContainer();\n let crosshair;\n if (dim === 'x') {\n crosshair = this._xCrosshair;\n } else {\n crosshair = this._yCrosshair;\n }\n if (crosshair) {\n crosshair.setAttributes(attributes);\n } else {\n const style = dim === 'x' ? this._xHair.style : this._yHair.style;\n // 创建\n if (type === 'line') {\n crosshair = new LineCrosshair({\n ...attributes,\n lineStyle: style,\n zIndex: this.gridZIndex + 1, // 样式优化:线盖在面上\n disableTriggerEvent: this._option.disableTriggerEvent,\n pickable: false\n });\n } else if (type === 'rect') {\n crosshair = new RectCrosshair({\n ...attributes,\n rectStyle: style,\n zIndex: this.gridZIndex,\n disableTriggerEvent: this._option.disableTriggerEvent,\n pickable: false\n });\n }\n // 添加至场景树\n container?.add(crosshair as unknown as INode);\n if (dim === 'x') {\n this._xCrosshair = crosshair;\n } else {\n this._yCrosshair = crosshair;\n }\n }\n }\n\n private _updateCrosshairLabel(label: Tag, attributes: any, callback: (label: Tag) => void) {\n const container = this.getContainer();\n if (label) {\n label.setAttributes(attributes);\n } else {\n label = new Tag(attributes);\n callback(label);\n container?.add(label as unknown as INode);\n }\n limitTagInBounds(label, this._getLimitBounds());\n }\n\n protected _getNeedClearVRenderComponents(): IGraphic[] {\n return [\n this._xCrosshair,\n this._xTopLabel,\n this._xBottomLabel,\n this._yCrosshair,\n this._yLeftLabel,\n this._yRightLabel\n ] as unknown as IGraphic[];\n }\n}\n\nexport const registerCartesianCrossHair = () => {\n Factory.registerComponent(CartesianCrossHair.type, CartesianCrossHair);\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/component/crosshair/cartesian.ts"],"names":[],"mappings":"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","file":"cartesian.js","sourcesContent":["import type { Maybe } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { isValid } from '@visactor/vutils';\nimport type { IComponentOption } from '../interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { ComponentTypeEnum } from '../interface/type';\nimport type { AxisCurrentValueMap, CrossHairStateByField, IAxisInfo, ICartesianCrosshairSpec } from './interface';\nimport type { ICartesianSeries } from '../../series/interface';\nimport { isDiscrete } from '@visactor/vscale';\nimport { LineCrosshair, RectCrosshair } from '@visactor/vrender-components';\n// eslint-disable-next-line no-duplicate-imports\nimport { BaseCrossHair } from './base';\nimport type { IGraphic, INode } from '@visactor/vrender-core';\nimport type { IAxis } from '../axis/interface';\nimport type { IOrientType, IPoint, StringOrNumber, TooltipActiveType, TooltipData } from '../../typings';\nimport { isXAxis, isYAxis } from '../axis/cartesian/util/common';\nimport { Factory } from '../../core/factory';\nimport { LayoutType } from './config';\nimport type { IModelSpecInfo } from '../../model/interface';\nimport { layoutByValue, layoutCrosshair } from './utils/cartesian';\nimport { getFirstSeries } from '../../util';\nimport type { IDimensionData, IDimensionInfo } from '../../event/events/dimension/interface';\nimport { getSpecInfo } from '../util';\n\n// 1. crosshair保存上次记录的x和y轴dimension\n// 2. 每次交互触发时,首先转化成dimension保存,然后依据dimension计算x和y绘制\n// 3. 如果同方向同时有多个轴,那么同时保存这些轴的数据\n// 4. 如果同方向的轴有多个离散轴,那么直接不显示\n\nexport class CartesianCrossHair<T extends ICartesianCrosshairSpec = ICartesianCrosshairSpec> extends BaseCrossHair<T> {\n static specKey = 'crosshair';\n\n static type = ComponentTypeEnum.cartesianCrosshair;\n type = ComponentTypeEnum.cartesianCrosshair;\n name: string = ComponentTypeEnum.cartesianCrosshair;\n\n static getSpecInfo(chartSpec: any): Maybe<IModelSpecInfo[]> {\n return getSpecInfo<ICartesianCrosshairSpec>(chartSpec, this.specKey, this.type, (s: ICartesianCrosshairSpec) => {\n return (s.xField && s.xField.visible !== false) || (s.yField && s.yField.visible !== false);\n });\n }\n\n constructor(spec: T, options: IComponentOption) {\n super(spec, options);\n\n this._stateByField = {\n xField: {\n coordKey: 'x',\n anotherAxisKey: 'y',\n currentValue: new Map(),\n labelsComp: {\n top: null,\n bottom: null\n }\n },\n yField: {\n coordKey: 'y',\n anotherAxisKey: 'x',\n currentValue: new Map(),\n labelsComp: {\n left: null,\n right: null\n }\n }\n };\n }\n\n /**\n * 查找所有落在x和y区域的轴\n * @param relativeX\n * @param relativeY\n */\n private _findAllAxisContains(relativeX: number, relativeY: number) {\n const xAxisMap = this._getAxisInfoByField<IAxis>('x');\n const yAxisMap = this._getAxisInfoByField<IAxis>('y');\n return {\n xAxisMap: this._filterAxisByPoint(xAxisMap, relativeX, relativeY),\n yAxisMap: this._filterAxisByPoint(yAxisMap, relativeX, relativeY)\n };\n }\n\n protected _getDatumAtPoint(axis: IAxis, point: IPoint): number | string {\n const dim = isXAxis(axis.getOrient() as unknown as IOrientType) ? 'x' : 'y';\n const coordByAxis = point[dim] - (axis.getLayoutStartPoint()[dim] - this.getLayoutStartPoint()[dim]);\n const value = axis.getScale().invert(coordByAxis);\n return value;\n }\n\n /**\n * set axis value of crosshair\n */\n setAxisValue(datum: StringOrNumber, axis: IAxis) {\n if (isXAxis(axis.getOrient() as unknown as IOrientType)) {\n this._stateByField.xField.currentValue.set(axis.getSpecIndex(), {\n datum,\n axis\n });\n } else {\n this._stateByField.yField.currentValue.set(axis.getSpecIndex(), {\n datum,\n axis\n });\n }\n }\n\n protected _layoutCrosshair(\n relativeX: number,\n relativeY: number,\n tooltipData?: TooltipData,\n activeType?: TooltipActiveType\n ) {\n let x = relativeX;\n let y = relativeY;\n\n if (tooltipData && tooltipData.length) {\n if (activeType === 'dimension') {\n const dimensionInfo = (tooltipData as IDimensionInfo[])[0];\n // 图例筛选时, 找到第一个没有被筛选的系列\n const datumIndex = dimensionInfo.data.findIndex(dimData => dimData.datum.length > 0);\n let pos;\n if (datumIndex > -1) {\n const dimensionData = dimensionInfo.data[datumIndex];\n pos = dimensionData.series.dataToPosition(dimensionData.datum[0]);\n }\n\n const isY = isValid(dimensionInfo.dimType)\n ? dimensionInfo.dimType === 'y'\n : isYAxis(dimensionInfo?.axis?.getOrient() as IOrientType);\n\n if (isY) {\n y = pos?.y;\n } else {\n x = pos?.x;\n }\n } else if (activeType === 'mark') {\n const dimensionData = (tooltipData as IDimensionData[])[0];\n const pos = dimensionData.series.dataToPosition(dimensionData.datum[0]);\n\n x = pos?.x;\n y = pos?.y;\n }\n }\n // 删除之前的currValue\n this.clearAxisValue();\n // 找到所有的包含这个点的轴\n const { xAxisMap, yAxisMap } = this._findAllAxisContains(x, y);\n if ((xAxisMap && xAxisMap.size === 0) || (yAxisMap && yAxisMap.size === 0)) {\n if (this.enableRemain) {\n return;\n }\n // 隐藏\n this.hide();\n return;\n }\n\n // 将数据保存到这个对象中,如果不存在,就直接不执行后续逻辑\n xAxisMap && xAxisMap.size && this._setAllAxisValues(xAxisMap, { x, y }, 'xField');\n yAxisMap && yAxisMap.size && this._setAllAxisValues(yAxisMap, { x, y }, 'yField');\n\n this.layoutByValue(LayoutType.ALL);\n }\n\n layoutByValue(tag: number = LayoutType.ALL) {\n if (!this.enable) {\n return;\n }\n const series = getFirstSeries(this._regions, 'cartesian') as ICartesianSeries;\n if (!series) {\n return;\n }\n\n layoutByValue(this._stateByField, series, this.getLayoutStartPoint(), this.enableRemain);\n\n Object.keys(this._stateByField).forEach(field => {\n this._layoutByField(field);\n });\n }\n\n private _layoutByField(field: string) {\n const { cacheInfo, attributes, labelsComp, bandSize, coordKey } = this._stateByField[field];\n if (!attributes || !cacheInfo || (cacheInfo._isCache && this.enableRemain)) {\n return;\n }\n\n const { coord, labels, visible, labelsTextStyle } = cacheInfo;\n\n if (visible) {\n // 外部设置的size\n const positionAttribute = layoutCrosshair(this._stateByField[field]);\n this._updateCrosshairByField(field, positionAttribute);\n\n Object.keys(labels).forEach(labelKey => {\n if (labels[labelKey].visible) {\n const updateAttrs = {\n [coordKey]: coord + bandSize / 2,\n ...labels[labelKey],\n ...attributes.label,\n textStyle: {\n ...attributes.label?.textStyle,\n ...labelsTextStyle[labelKey]\n },\n zIndex: this.labelZIndex,\n visible: true\n };\n this._updateCrosshairLabel(labelsComp[labelKey], updateAttrs, label => {\n label.name = `crosshair-${field.replace('Field', '')}-${labelKey}-label`;\n labelsComp[labelKey] = label;\n });\n } else {\n labelsComp[labelKey] && labelsComp[labelKey].hideAll();\n }\n });\n } else {\n this._hideByField(field);\n }\n }\n\n private _updateCrosshairByField(field: string, positionAttribute: any) {\n const container = this.getContainer();\n const { attributes } = this._stateByField[field];\n let { crosshairComp } = this._stateByField[field];\n\n if (crosshairComp) {\n crosshairComp.setAttributes(positionAttribute);\n } else {\n const style = attributes.style;\n // 创建\n if (attributes.type === 'line') {\n crosshairComp = new LineCrosshair({\n ...positionAttribute,\n lineStyle: style,\n zIndex: this.gridZIndex + 1, // 样式优化:线盖在面上\n disableTriggerEvent: this._option.disableTriggerEvent,\n pickable: false\n });\n } else if (attributes.type === 'rect') {\n crosshairComp = new RectCrosshair({\n ...positionAttribute,\n rectStyle: style,\n zIndex: this.gridZIndex,\n disableTriggerEvent: this._option.disableTriggerEvent,\n pickable: false\n });\n }\n // 添加至场景树\n container?.add(crosshairComp as unknown as INode);\n\n this._stateByField[field].crosshairComp = crosshairComp;\n }\n }\n}\n\nexport const registerCartesianCrossHair = () => {\n Factory.registerComponent(CartesianCrossHair.type, CartesianCrossHair);\n};\n"]}
|
|
@@ -1,7 +1,72 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Dict } from '@visactor/vutils';
|
|
2
|
+
import type { IPadding, StringOrNumber } from '../../../typings';
|
|
2
3
|
import type { IAxis } from '../../axis/interface';
|
|
4
|
+
import type { LineCrosshair, RectCrosshair, Tag } from '@visactor/vrender-components';
|
|
5
|
+
import type { IGroup, IRichTextGraphicAttribute, ITextGraphicAttribute } from '@visactor/vrender-core';
|
|
3
6
|
export type AxisCurrentValueMap = Map<number, {
|
|
4
|
-
|
|
7
|
+
datum: StringOrNumber;
|
|
5
8
|
axis: IAxis;
|
|
6
9
|
[key: string]: any;
|
|
7
10
|
}>;
|
|
11
|
+
export type IBound = {
|
|
12
|
+
x1: number;
|
|
13
|
+
y1: number;
|
|
14
|
+
x2: number;
|
|
15
|
+
y2: number;
|
|
16
|
+
};
|
|
17
|
+
export type IAxisInfo<T> = Map<number, IBound & {
|
|
18
|
+
axis: T;
|
|
19
|
+
}>;
|
|
20
|
+
export interface IHair {
|
|
21
|
+
visible: boolean;
|
|
22
|
+
type: 'rect' | 'line';
|
|
23
|
+
style?: Dict<any>;
|
|
24
|
+
label?: {
|
|
25
|
+
visible: boolean;
|
|
26
|
+
formatMethod?: (text: StringOrNumber | string[], position: string) => string | string[];
|
|
27
|
+
formatter?: string | string[];
|
|
28
|
+
textStyle?: Dict<any>;
|
|
29
|
+
minWidth?: number;
|
|
30
|
+
maxWidth?: number;
|
|
31
|
+
padding?: IPadding | number | number[];
|
|
32
|
+
panel?: Dict<any>;
|
|
33
|
+
zIndex?: number;
|
|
34
|
+
};
|
|
35
|
+
smooth?: boolean;
|
|
36
|
+
}
|
|
37
|
+
export interface IHairRadius extends IHair {
|
|
38
|
+
smooth?: boolean;
|
|
39
|
+
}
|
|
40
|
+
export interface ICrosshairLabelInfo {
|
|
41
|
+
visible: boolean;
|
|
42
|
+
text: StringOrNumber;
|
|
43
|
+
dx?: number;
|
|
44
|
+
dy?: number;
|
|
45
|
+
x?: number;
|
|
46
|
+
y?: number;
|
|
47
|
+
offset?: number;
|
|
48
|
+
defaultFormatter?: (value: StringOrNumber) => StringOrNumber;
|
|
49
|
+
}
|
|
50
|
+
export interface ICrosshairInfo {
|
|
51
|
+
coordRange: [number, number];
|
|
52
|
+
sizeRange: [number, number];
|
|
53
|
+
coord: number;
|
|
54
|
+
labels: Record<string, ICrosshairLabelInfo>;
|
|
55
|
+
labelsTextStyle?: Record<string, Partial<ITextGraphicAttribute> | Partial<IRichTextGraphicAttribute>>;
|
|
56
|
+
visible: boolean;
|
|
57
|
+
_isCache?: boolean;
|
|
58
|
+
axis: IAxis;
|
|
59
|
+
sides?: number;
|
|
60
|
+
}
|
|
61
|
+
export interface CrossHairStateItem {
|
|
62
|
+
coordKey: string;
|
|
63
|
+
anotherAxisKey: string;
|
|
64
|
+
currentValue: AxisCurrentValueMap;
|
|
65
|
+
attributes?: IHair | undefined;
|
|
66
|
+
cacheInfo?: ICrosshairInfo | undefined;
|
|
67
|
+
crosshairComp?: LineCrosshair | RectCrosshair | IGroup;
|
|
68
|
+
labelsComp?: Record<string, Tag>;
|
|
69
|
+
bandSize?: number;
|
|
70
|
+
offsetSize?: number;
|
|
71
|
+
}
|
|
72
|
+
export type CrossHairStateByField = Record<string, CrossHairStateItem>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/component/crosshair/interface/common.ts"],"names":[],"mappings":"","file":"common.js","sourcesContent":["import type { StringOrNumber } from '../../../typings';\nimport type { IAxis } from '../../axis/interface';\n\nexport type AxisCurrentValueMap = Map<\n number,\n {\n
|
|
1
|
+
{"version":3,"sources":["../src/component/crosshair/interface/common.ts"],"names":[],"mappings":"","file":"common.js","sourcesContent":["import type { Dict } from '@visactor/vutils';\nimport type { IPadding, StringOrNumber } from '../../../typings';\nimport type { IAxis } from '../../axis/interface';\nimport type { LineCrosshair, RectCrosshair, Tag } from '@visactor/vrender-components';\nimport type { IGroup, IRichTextGraphicAttribute, ITextGraphicAttribute } from '@visactor/vrender-core';\n\nexport type AxisCurrentValueMap = Map<\n number,\n {\n datum: StringOrNumber;\n axis: IAxis;\n [key: string]: any;\n }\n>;\n\nexport type IBound = { x1: number; y1: number; x2: number; y2: number };\nexport type IAxisInfo<T> = Map<number, IBound & { axis: T }>;\n\nexport interface IHair {\n /** 是否展示 crosshair 辅助图形 */\n visible: boolean;\n /** 类型 */\n type: 'rect' | 'line';\n /** 样式 */\n style?: Dict<any>;\n label?: {\n /** 文本是否可见 */\n visible: boolean;\n /** 格式化函数 */\n formatMethod?: (text: StringOrNumber | string[], position: string) => string | string[];\n /**\n * 格式化模板\n * @description 可以通过类似 `{value:.2f}%` 的形式对指定数据字段进行格式化\n * @since 1.10.0\n */\n formatter?: string | string[];\n /** 文本样式 */\n textStyle?: Dict<any>;\n minWidth?: number;\n maxWidth?: number;\n padding?: IPadding | number | number[];\n panel?: Dict<any>;\n zIndex?: number;\n };\n /**\n * 极坐标系样式\n */\n smooth?: boolean;\n}\n\nexport interface IHairRadius extends IHair {\n smooth?: boolean;\n}\n\nexport interface ICrosshairLabelInfo {\n visible: boolean;\n text: StringOrNumber;\n dx?: number;\n dy?: number;\n x?: number;\n y?: number;\n offset?: number;\n defaultFormatter?: (value: StringOrNumber) => StringOrNumber;\n}\n\nexport interface ICrosshairInfo {\n /**\n * croosshair 的大小,xField 对应了crosshair图形的高度,yField 对应了crosshair图形的宽度\n */\n coordRange: [number, number];\n sizeRange: [number, number];\n coord: number;\n labels: Record<string, ICrosshairLabelInfo>;\n labelsTextStyle?: Record<string, Partial<ITextGraphicAttribute> | Partial<IRichTextGraphicAttribute>>;\n visible: boolean;\n _isCache?: boolean;\n axis: IAxis;\n /**\n * 半径轴对应的crosshair,当crosshair类型为多边形的时候,多边形的边数\n */\n sides?: number;\n}\n\nexport interface CrossHairStateItem {\n /**\n * 坐标对应的key,xField对应了'x',yField对应了'y'\n */\n coordKey: string;\n /**\n * 另一个轴对应的key,xField对应了'y',yField对应了'x'\n */\n anotherAxisKey: string;\n /**\n * 记录当前crosshair对应的轴组件和位置信息\n */\n currentValue: AxisCurrentValueMap;\n /**\n * crosshair组件对应的公共的图形属性配置\n */\n attributes?: IHair | undefined;\n /**\n * 记录当前crosshair的信息,用于crosshair组件的更新\n */\n cacheInfo?: ICrosshairInfo | undefined;\n /**\n * crosshair组件的实例\n */\n crosshairComp?: LineCrosshair | RectCrosshair | IGroup;\n /**\n * crosshair组件的文本实例\n */\n labelsComp?: Record<string, Tag>;\n /**\n * 当前轴对应的band大小\n */\n bandSize?: number;\n /**\n * 当前轴对应的band偏移量\n */\n offsetSize?: number;\n}\n\nexport type CrossHairStateByField = Record<string, CrossHairStateItem>;\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/component/crosshair/interface/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,
|
|
1
|
+
{"version":3,"sources":["../src/component/crosshair/interface/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC","file":"index.js","sourcesContent":["export * from './spec';\nexport * from './theme';\nexport * from './common';\n"]}
|
|
@@ -4,10 +4,14 @@ import type { IAxis } from '../../axis/interface';
|
|
|
4
4
|
import type { IComponentSpec } from '../../base/interface';
|
|
5
5
|
import type { IComponent } from '../../interface';
|
|
6
6
|
export interface ICrossHair extends IComponent {
|
|
7
|
-
clearAxisValue
|
|
8
|
-
setAxisValue
|
|
9
|
-
layoutByValue
|
|
10
|
-
|
|
7
|
+
clearAxisValue: () => void;
|
|
8
|
+
setAxisValue: (v: StringOrNumber, axis: IAxis) => void;
|
|
9
|
+
layoutByValue: (v?: number) => void;
|
|
10
|
+
hideCrosshair: () => any;
|
|
11
|
+
showCrosshair: (dimInfo: {
|
|
12
|
+
axis: IAxis;
|
|
13
|
+
value: string | number;
|
|
14
|
+
}[]) => any;
|
|
11
15
|
}
|
|
12
16
|
export type CrossHairTrigger = 'click' | 'hover' | ['click', 'hover'];
|
|
13
17
|
export interface ICommonCrosshairSpec extends IComponentSpec {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/component/crosshair/interface/spec.ts"],"names":[],"mappings":"","file":"spec.js","sourcesContent":["import type { ITooltipActiveTypeAsKeys } from '../../tooltip/interface/common';\nimport type { IPadding, StringOrNumber, ILineMarkSpec, IRectMarkSpec, ITextMarkSpec } from '../../../typings';\nimport type { IAxis } from '../../axis/interface';\nimport type { IComponentSpec } from '../../base/interface';\nimport type { IComponent } from '../../interface';\n\nexport interface ICrossHair extends IComponent {\n clearAxisValue
|
|
1
|
+
{"version":3,"sources":["../src/component/crosshair/interface/spec.ts"],"names":[],"mappings":"","file":"spec.js","sourcesContent":["import type { ITooltipActiveTypeAsKeys } from '../../tooltip/interface/common';\nimport type { IPadding, StringOrNumber, ILineMarkSpec, IRectMarkSpec, ITextMarkSpec } from '../../../typings';\nimport type { IAxis } from '../../axis/interface';\nimport type { IComponentSpec } from '../../base/interface';\nimport type { IComponent } from '../../interface';\n\nexport interface ICrossHair extends IComponent {\n clearAxisValue: () => void;\n setAxisValue: (v: StringOrNumber, axis: IAxis) => void;\n layoutByValue: (v?: number) => void;\n hideCrosshair: () => any;\n showCrosshair: (dimInfo: { axis: IAxis; value: string | number }[]) => any;\n}\n\nexport type CrossHairTrigger = 'click' | 'hover' | ['click', 'hover'];\n\nexport interface ICommonCrosshairSpec extends IComponentSpec {\n /**\n * 是否和tooltip保持同步,默认为false\n * tooltip出现的时候crosshair出现;tooltip隐藏的时候crsshair隐藏;\n * 默认只要有tooltip显示,都会显示crosshair\n * 也可以通过设置 followTooltip.dimension 为 `false` 来实现显示dimension tooltip的时候不显示crosshair\n * 设置 followTooltip.mark 为 `false` 来实现显示mark tooltip的时候不显示crosshair\n * 设置 followTooltip.group 为 `false` 来实现显示group tooltip的时候不显示crosshair\n *\n * @since 1.11.1\n */\n followTooltip?: boolean | Partial<ITooltipActiveTypeAsKeys<boolean, boolean, boolean>>;\n /**\n * 是否可以通过 点击 固定住一组 crosshair,也可以同时触发。\n * @default 'hover'\n */\n trigger?: CrossHairTrigger;\n /**\n * 隐藏crosshair的触发方式(目前仅支持和trigger一致的设置以及none)\n */\n triggerOff?: CrossHairTrigger | 'none' | number;\n /**\n * 点击后锁定,只有点击才可以更新位置或者解锁\n *\n * @since 1.9.0\n */\n lockAfterClick?: boolean;\n /**\n * crosshair 文本的显示层级\n */\n labelZIndex?: number;\n /**\n * crosshair 辅助图形的显示层级\n */\n gridZIndex?: number;\n}\n\n/**\n * 笛卡尔坐标系下的 crosshair 配置\n */\nexport interface ICartesianCrosshairSpec extends ICommonCrosshairSpec {\n /**\n * 笛卡尔坐标系下 x 轴上 crosshair 配置\n */\n xField?: ICrosshairCategoryFieldSpec;\n /**\n * 笛卡尔坐标系下 y 轴上 crosshair 配置\n */\n yField?: ICrosshairCategoryFieldSpec;\n}\n\n/**\n * 极坐标系下的 crosshair 配置\n */\nexport interface IPolarCrosshairSpec extends ICommonCrosshairSpec {\n /**\n * 极坐标系下 categoryField 字段对应轴上的 crosshair 配置\n */\n categoryField?: ICrosshairCategoryFieldSpec;\n /**\n * 极坐标系下 valueField 字段对应轴上的 crosshair 配置\n */\n valueField?: ICrosshairValueFieldSpec;\n}\nexport interface ICrosshairCategoryFieldSpec extends ICrosshairDataBindSpec {\n /**\n * 是否可见\n */\n visible: boolean;\n /**\n * crosshair 辅助图形配置\n */\n line?: ICrosshairLineSpec | Omit<ICrosshairRectSpec, 'width'>;\n /**\n * crosshair 文本配置\n */\n label?: ICrosshairLabelSpec;\n}\n\nexport interface ICrosshairValueFieldSpec extends ICrosshairDataBindSpec {\n /**\n * 是否可见\n */\n visible: boolean;\n /**\n * crosshair 辅助图形配置\n */\n line?: ICrosshairLineSpec;\n /**\n * crosshair 文本配置\n */\n label?: ICrosshairLabelSpec;\n}\n\nexport type ICrosshairLineStyle = Pick<\n ILineMarkSpec,\n 'stroke' | 'strokeOpacity' | 'opacity' | 'lineDash' | 'lineWidth'\n>;\nexport type ICrosshairRectStyle = ICrosshairLineStyle & Pick<IRectMarkSpec, 'fill' | 'fillOpacity' | 'cornerRadius'>;\n\nexport interface ICrosshairLineSpec {\n /**\n * 是否显示辅助图形\n */\n visible?: boolean;\n /**\n * 辅助图形的类型设置为'line'\n */\n type?: 'line';\n /**\n * 线宽\n * @default 2\n */\n width?: number;\n /**\n * 极坐标系下是否平滑\n */\n smooth?: boolean;\n /**\n * 辅助图形的样式配置\n */\n style?: ICrosshairLineStyle;\n}\n\nexport type ICrosshairRectWidthCallback = (axisSize: { width: number; height: number }, axis: IAxis) => number;\n\nexport interface ICrosshairRectSpec {\n /**\n * 是否显示辅助图形\n */\n visible?: boolean;\n /**\n * 辅助图形的类型设置为'rect'\n */\n type?: 'rect';\n /**\n * 字符串xx%表示此处是内容区间的百分比,数字表示宽度像素,\n * 仅支持笛卡尔坐标系下的 crosshair 配置\n * @default '100%''\n */\n width?: number | string | ICrosshairRectWidthCallback;\n /**\n * 辅助图形的样式配置\n */\n style?: ICrosshairRectStyle;\n}\n\nexport interface ICrosshairLabelSpec {\n /**\n * 十字准星辅助标签是否展示\n */\n visible?: boolean;\n /**\n * label 文本格式化方法\n * @param text\n * @returns\n */\n formatMethod?: (text: StringOrNumber | string[]) => string | string[];\n /**\n * 格式化模板\n * @description 可以通过类似 `{value:.2f}%` 的形式对指定数据字段进行格式化\n * @since 1.10.0\n */\n formatter?: string | string[];\n /**\n * 文本样式配置\n */\n style?: Partial<ITextMarkSpec>;\n /**\n * 文本背景相关配置\n */\n labelBackground?: ICrosshairLabelBackgroundSpec;\n}\n\nexport interface ICrosshairLabelBackgroundSpec {\n /**\n * 是否显示背景,默认为 true\n */\n visible?: boolean;\n /**\n * 最小宽度,像素值\n * @default 30\n */\n minWidth?: number;\n /**\n * 最大宽度,像素值。当文字超过最大宽度时,会自动省略。\n */\n maxWidth?: number;\n /**\n * 内部边距\n */\n padding?: IPadding | number | number[];\n /**\n * 标签背景的样式配置\n */\n style?: Partial<IRectMarkSpec>;\n}\n\nexport interface ICrosshairDataBindSpec {\n /**\n * 声明 crosshair 绑定的轴索引,如果没有声明,则会默认绑定所有同 crosshair 位置相对应的轴。\n */\n bindingAxesIndex?: number[];\n /**\n * crosshair 初始化显示信息,通过该配置可在图表绘制时默认展示 crosshair 组件。\n */\n defaultSelect?: {\n /**\n * 声明要显示数据的轴索引\n */\n axisIndex: number;\n /**\n * 声明显示的数据\n */\n datum: StringOrNumber;\n };\n}\n\nexport type ICrosshairSpec = ICartesianCrosshairSpec | IPolarCrosshairSpec;\n"]}
|
|
@@ -1,40 +1,24 @@
|
|
|
1
1
|
import type { IComponentOption } from '../interface';
|
|
2
2
|
import { ComponentTypeEnum } from '../interface/type';
|
|
3
3
|
import type { IPolarCrosshairSpec } from './interface';
|
|
4
|
-
import type {
|
|
4
|
+
import type { IPolarAxis } from '../axis/polar/interface';
|
|
5
|
+
import type { IPoint, StringOrNumber, TooltipActiveType, TooltipData } from '../../typings';
|
|
5
6
|
import { BaseCrossHair } from './base';
|
|
6
7
|
import type { Maybe } from '@visactor/vutils';
|
|
7
|
-
import type { IGraphic } from '@visactor/vrender-core';
|
|
8
8
|
import type { IModelSpecInfo } from '../../model/interface';
|
|
9
|
+
import type { IAxis } from '../axis';
|
|
9
10
|
export declare class PolarCrossHair<T extends IPolarCrosshairSpec = IPolarCrosshairSpec> extends BaseCrossHair<T> {
|
|
10
11
|
static specKey: string;
|
|
11
12
|
static type: ComponentTypeEnum;
|
|
12
13
|
type: ComponentTypeEnum;
|
|
13
14
|
name: string;
|
|
14
|
-
private _currValueAngle;
|
|
15
|
-
private _currValueRadius;
|
|
16
|
-
private _angleHair;
|
|
17
|
-
private _radiusHair;
|
|
18
|
-
private _cacheAngleCrossHairInfo;
|
|
19
|
-
private _cacheRadiusCrossHairInfo;
|
|
20
|
-
private _radiusCrosshair;
|
|
21
|
-
private _radiusLabelCrosshair;
|
|
22
|
-
private _angleCrosshair;
|
|
23
|
-
private _angleLabelCrosshair;
|
|
24
15
|
static getSpecInfo(chartSpec: any): Maybe<IModelSpecInfo[]>;
|
|
25
16
|
constructor(spec: T, options: IComponentOption);
|
|
26
|
-
|
|
27
|
-
private _defaultCrosshair;
|
|
28
|
-
hide(): void;
|
|
17
|
+
setAxisValue(datum: StringOrNumber, axis: IAxis): void;
|
|
29
18
|
private _findAllAxisContains;
|
|
30
|
-
|
|
31
|
-
private _getValueByAxis;
|
|
19
|
+
protected _getDatumAtPoint(axis: IPolarAxis, point: IPoint): any;
|
|
32
20
|
protected _layoutCrosshair(relativeX: number, relativeY: number, tooltipData?: TooltipData, activeType?: TooltipActiveType): void;
|
|
33
21
|
layoutByValue(tag?: number): void;
|
|
34
|
-
private
|
|
35
|
-
private _layoutRadius;
|
|
36
|
-
protected _parseFieldInfo(): void;
|
|
37
|
-
private _updateCrosshairLabel;
|
|
38
|
-
protected _getNeedClearVRenderComponents(): IGraphic[];
|
|
22
|
+
private _layoutByField;
|
|
39
23
|
}
|
|
40
24
|
export declare const registerPolarCrossHair: () => void;
|
|
@@ -1,22 +1,16 @@
|
|
|
1
1
|
import { ComponentTypeEnum } from "../interface/type";
|
|
2
2
|
|
|
3
|
-
import { isDiscrete } from "@visactor/vscale";
|
|
4
|
-
|
|
5
|
-
import { Tag } from "@visactor/vrender-components";
|
|
6
|
-
|
|
7
3
|
import { LineCrosshair, SectorCrosshair, CircleCrosshair, PolygonCrosshair } from "@visactor/vrender-components";
|
|
8
4
|
|
|
9
5
|
import { BaseCrossHair } from "./base";
|
|
10
6
|
|
|
11
|
-
import { polarToCartesian
|
|
7
|
+
import { polarToCartesian } from "@visactor/vutils";
|
|
12
8
|
|
|
13
9
|
import { angleLabelOrientAttribute, radiusLabelOrientAttribute } from "../../util/math";
|
|
14
10
|
|
|
15
|
-
import { limitTagInBounds } from "./utils";
|
|
16
|
-
|
|
17
11
|
import { Factory } from "../../core/factory";
|
|
18
12
|
|
|
19
|
-
import { layoutByValue,
|
|
13
|
+
import { layoutByValue, layoutCrosshair } from "./utils/polar";
|
|
20
14
|
|
|
21
15
|
import { getFirstSeries } from "../../util";
|
|
22
16
|
|
|
@@ -28,43 +22,33 @@ export class PolarCrossHair extends BaseCrossHair {
|
|
|
28
22
|
}
|
|
29
23
|
constructor(spec, options) {
|
|
30
24
|
super(spec, options), this.type = ComponentTypeEnum.polarCrosshair, this.name = ComponentTypeEnum.polarCrosshair,
|
|
31
|
-
this.
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
if (1 === tag) {
|
|
48
|
-
this._currValueAngle.clear();
|
|
49
|
-
const polarCoord = {
|
|
50
|
-
angle: axis.valueToPosition(datum),
|
|
51
|
-
radius: axis.getOuterRadius()
|
|
52
|
-
}, canvasPosition = axis.coordToPoint(polarCoord);
|
|
53
|
-
this._currValueAngle.set(axisIndex, this._getValueByAxis(axis, canvasPosition));
|
|
54
|
-
} else {
|
|
55
|
-
this._currValueRadius.clear();
|
|
56
|
-
const polarCoord = {
|
|
57
|
-
angle: axis.startAngle,
|
|
58
|
-
radius: axis.valueToPosition(datum)
|
|
59
|
-
}, canvasPosition = axis.coordToPoint(polarCoord);
|
|
60
|
-
this._currValueRadius.set(axisIndex, this._getValueByAxis(axis, canvasPosition));
|
|
25
|
+
this._stateByField = {
|
|
26
|
+
categoryField: {
|
|
27
|
+
coordKey: "angle",
|
|
28
|
+
anotherAxisKey: "radius",
|
|
29
|
+
currentValue: new Map,
|
|
30
|
+
labelsComp: {
|
|
31
|
+
all: null
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
valueField: {
|
|
35
|
+
coordKey: "radius",
|
|
36
|
+
anotherAxisKey: "angle",
|
|
37
|
+
currentValue: new Map,
|
|
38
|
+
labelsComp: {
|
|
39
|
+
all: null
|
|
40
|
+
}
|
|
61
41
|
}
|
|
62
|
-
|
|
63
|
-
}
|
|
42
|
+
};
|
|
64
43
|
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
44
|
+
setAxisValue(datum, axis) {
|
|
45
|
+
"radius" === axis.getOrient() ? this._stateByField.valueField.currentValue.set(axis.getSpecIndex(), {
|
|
46
|
+
datum: datum,
|
|
47
|
+
axis: axis
|
|
48
|
+
}) : this._stateByField.categoryField.currentValue.set(axis.getSpecIndex(), {
|
|
49
|
+
datum: datum,
|
|
50
|
+
axis: axis
|
|
51
|
+
});
|
|
68
52
|
}
|
|
69
53
|
_findAllAxisContains(relativeX, relativeY) {
|
|
70
54
|
const angleAxisMap = this._getAxisInfoByField("category"), radiusAxisMap = this._getAxisInfoByField("value");
|
|
@@ -73,35 +57,12 @@ export class PolarCrossHair extends BaseCrossHair {
|
|
|
73
57
|
radiusAxisMap: this._filterAxisByPoint(radiusAxisMap, relativeX, relativeY)
|
|
74
58
|
};
|
|
75
59
|
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
return
|
|
79
|
-
isDiscrete(item.axis.getScale().type) && (discrete ? this.enable = !1 : discrete = !0);
|
|
80
|
-
})), !!this.enable && (axisMap.forEach(((item, id) => {
|
|
81
|
-
const axis = item.axis;
|
|
82
|
-
currValue.set(id, this._getValueByAxis(axis, point));
|
|
83
|
-
})), !0);
|
|
84
|
-
}
|
|
85
|
-
_getValueByAxis(axis, point) {
|
|
86
|
-
const {x: axisStartX, y: axisStartY} = axis.getLayoutStartPoint(), {x: x, y: y} = this.getLayoutStartPoint(), value = axis.positionToData({
|
|
60
|
+
_getDatumAtPoint(axis, point) {
|
|
61
|
+
const {x: axisStartX, y: axisStartY} = axis.getLayoutStartPoint(), {x: x, y: y} = this.getLayoutStartPoint();
|
|
62
|
+
return axis.positionToData({
|
|
87
63
|
x: point.x - (axisStartX - x),
|
|
88
64
|
y: point.y - (axisStartY - y)
|
|
89
|
-
})
|
|
90
|
-
x: axis.getCenter().x + this.getLayoutStartPoint().x,
|
|
91
|
-
y: axis.getCenter().y + this.getLayoutStartPoint().y
|
|
92
|
-
};
|
|
93
|
-
return {
|
|
94
|
-
value: value,
|
|
95
|
-
axis: axis,
|
|
96
|
-
center: center,
|
|
97
|
-
innerRadius: axis.getInnerRadius(),
|
|
98
|
-
radius: axis.getOuterRadius(),
|
|
99
|
-
startAngle: axis.startAngle,
|
|
100
|
-
endAngle: axis.endAngle,
|
|
101
|
-
distance: PointService.distancePP(point, axis.getCenter()),
|
|
102
|
-
coord: axis.pointToCoord(point),
|
|
103
|
-
point: point
|
|
104
|
-
};
|
|
65
|
+
});
|
|
105
66
|
}
|
|
106
67
|
_layoutCrosshair(relativeX, relativeY, tooltipData, activeType) {
|
|
107
68
|
let x = relativeX, y = relativeY;
|
|
@@ -124,15 +85,15 @@ export class PolarCrossHair extends BaseCrossHair {
|
|
|
124
85
|
const dimensionData = tooltipData[0], pos = dimensionData.series.dataToPosition(dimensionData.datum[0]);
|
|
125
86
|
x = pos.x, y = pos.y;
|
|
126
87
|
}
|
|
88
|
+
this.clearAxisValue();
|
|
127
89
|
const {angleAxisMap: angleAxisMap, radiusAxisMap: radiusAxisMap} = this._findAllAxisContains(x, y);
|
|
128
|
-
if (0 !== angleAxisMap.size || 0 !== radiusAxisMap.size) this.
|
|
129
|
-
this._currValueRadius.clear(), angleAxisMap && this._getAllAxisValues(angleAxisMap, {
|
|
90
|
+
if (0 !== angleAxisMap.size || 0 !== radiusAxisMap.size) angleAxisMap && this._setAllAxisValues(angleAxisMap, {
|
|
130
91
|
x: x,
|
|
131
92
|
y: y
|
|
132
|
-
},
|
|
93
|
+
}, "categoryField"), radiusAxisMap && this._setAllAxisValues(radiusAxisMap, {
|
|
133
94
|
x: x,
|
|
134
95
|
y: y
|
|
135
|
-
},
|
|
96
|
+
}, "valueField"), this.layoutByValue(3); else {
|
|
136
97
|
if (this.enableRemain) return;
|
|
137
98
|
this.hide();
|
|
138
99
|
}
|
|
@@ -140,91 +101,59 @@ export class PolarCrossHair extends BaseCrossHair {
|
|
|
140
101
|
layoutByValue(tag = 3) {
|
|
141
102
|
if (!this.enable) return;
|
|
142
103
|
const series = getFirstSeries(this._regions, "polar");
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
_isCache: !0
|
|
147
|
-
}), this._cacheRadiusCrossHairInfo = Object.assign(Object.assign({}, radius), {
|
|
148
|
-
_isCache: !0
|
|
149
|
-
})), tag && (this._layoutRadius(radius), this._layoutAngle(angle));
|
|
150
|
-
}
|
|
151
|
-
_layoutAngle(crosshairInfo) {
|
|
152
|
-
var _a;
|
|
153
|
-
if (crosshairInfo._isCache && this.enableRemain) return;
|
|
154
|
-
const container = this.getContainer(), {angle: angle, radius: radius, label: label, center: center, visible: visible} = crosshairInfo;
|
|
155
|
-
if (visible) {
|
|
156
|
-
const crosshairType = "rect" === this._angleHair.type ? "sector" : "line", positionAttrs = layoutAngleCrosshair(this._angleHair, crosshairInfo);
|
|
157
|
-
if (this._angleCrosshair) this._angleCrosshair.setAttributes(positionAttrs); else {
|
|
158
|
-
let crosshair;
|
|
159
|
-
"line" === crosshairType ? crosshair = new LineCrosshair(Object.assign(Object.assign({}, positionAttrs), {
|
|
160
|
-
lineStyle: this._angleHair.style,
|
|
161
|
-
zIndex: this.gridZIndex,
|
|
162
|
-
pickable: !1
|
|
163
|
-
})) : "sector" === crosshairType && (crosshair = new SectorCrosshair(Object.assign(Object.assign({}, positionAttrs), {
|
|
164
|
-
sectorStyle: this._angleHair.style,
|
|
165
|
-
zIndex: this.gridZIndex,
|
|
166
|
-
pickable: !1
|
|
167
|
-
}))), this._angleCrosshair = crosshair, container.add(crosshair);
|
|
168
|
-
}
|
|
169
|
-
if (label.visible) {
|
|
170
|
-
const orient = angleLabelOrientAttribute(angle), labelAttrs = Object.assign(Object.assign(Object.assign(Object.assign({}, polarToCartesian(center, radius + label.offset, angle)), this._angleHair.label), label), {
|
|
171
|
-
textStyle: Object.assign(Object.assign({}, null === (_a = this._angleHair.label) || void 0 === _a ? void 0 : _a.textStyle), {
|
|
172
|
-
textAlign: orient.align,
|
|
173
|
-
textBaseline: orient.baseline
|
|
174
|
-
}),
|
|
175
|
-
zIndex: this.labelZIndex
|
|
176
|
-
});
|
|
177
|
-
this._updateCrosshairLabel(this._angleLabelCrosshair, labelAttrs, (label => {
|
|
178
|
-
label.name = "crosshair-angle-label", this._angleLabelCrosshair = label;
|
|
179
|
-
}));
|
|
180
|
-
} else this._angleLabelCrosshair && this._angleLabelCrosshair.hideAll();
|
|
181
|
-
}
|
|
104
|
+
series && (layoutByValue(this._stateByField, series, this.enableRemain), Object.keys(this._stateByField).forEach((field => {
|
|
105
|
+
this._layoutByField(field);
|
|
106
|
+
})));
|
|
182
107
|
}
|
|
183
|
-
|
|
184
|
-
var _a;
|
|
185
|
-
|
|
186
|
-
|
|
108
|
+
_layoutByField(fieldName) {
|
|
109
|
+
var _a, _b, _c;
|
|
110
|
+
const {cacheInfo: cacheInfo, attributes: attributes, crosshairComp: crosshairComp, labelsComp: labelsComp, coordKey: coordKey} = this._stateByField[fieldName];
|
|
111
|
+
if (!cacheInfo || cacheInfo._isCache && this.enableRemain) return;
|
|
112
|
+
const container = this.getContainer(), {visible: visible, labels: labels, coord: coord, sizeRange: sizeRange, axis: axis} = cacheInfo;
|
|
187
113
|
if (visible) {
|
|
188
|
-
const
|
|
189
|
-
if (
|
|
114
|
+
const layoutStartPoint = this.getLayoutStartPoint(), smooth = null === (_b = null === (_a = this._spec.valueField) || void 0 === _a ? void 0 : _a.line) || void 0 === _b ? void 0 : _b.smooth, positionAttrs = layoutCrosshair(this._stateByField[fieldName], layoutStartPoint, smooth);
|
|
115
|
+
if (crosshairComp) crosshairComp.setAttributes(positionAttrs); else {
|
|
190
116
|
let crosshair;
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
117
|
+
if ("angle" === coordKey) {
|
|
118
|
+
const crosshairType = "rect" === attributes.type ? "sector" : "line";
|
|
119
|
+
"line" === crosshairType ? crosshair = new LineCrosshair(Object.assign(Object.assign({}, positionAttrs), {
|
|
120
|
+
lineStyle: attributes.style,
|
|
121
|
+
zIndex: this.gridZIndex,
|
|
122
|
+
pickable: !1
|
|
123
|
+
})) : "sector" === crosshairType && (crosshair = new SectorCrosshair(Object.assign(Object.assign({}, positionAttrs), {
|
|
124
|
+
sectorStyle: attributes.style,
|
|
125
|
+
zIndex: this.gridZIndex,
|
|
126
|
+
pickable: !1
|
|
127
|
+
})));
|
|
128
|
+
} else {
|
|
129
|
+
crosshair = "polygon" === (smooth ? "circle" : "polygon") ? new PolygonCrosshair(Object.assign(Object.assign({}, positionAttrs), {
|
|
130
|
+
lineStyle: attributes.style,
|
|
131
|
+
zIndex: this.gridZIndex + 1
|
|
132
|
+
})) : new CircleCrosshair(Object.assign(Object.assign({}, positionAttrs), {
|
|
133
|
+
lineStyle: attributes.style,
|
|
134
|
+
zIndex: this.gridZIndex
|
|
135
|
+
}));
|
|
136
|
+
}
|
|
137
|
+
this._stateByField[fieldName].crosshairComp = crosshair, container.add(crosshair);
|
|
198
138
|
}
|
|
139
|
+
const label = labels.all;
|
|
199
140
|
if (label.visible) {
|
|
200
|
-
const
|
|
201
|
-
|
|
141
|
+
const axisCenter = axis.getCenter(), center = {
|
|
142
|
+
x: axisCenter.x + layoutStartPoint.x,
|
|
143
|
+
y: axisCenter.y + layoutStartPoint.y
|
|
144
|
+
}, orient = "angle" === coordKey ? angleLabelOrientAttribute(coord) : radiusLabelOrientAttribute(axis.startAngle), point = "angle" === coordKey ? polarToCartesian(center, sizeRange[1] + label.offset, coord) : polarToCartesian(center, positionAttrs.radius, axis.startAngle), labelAttrs = Object.assign(Object.assign(Object.assign(Object.assign({}, point), attributes.label), label), {
|
|
145
|
+
textStyle: Object.assign(Object.assign({}, null === (_c = attributes.label) || void 0 === _c ? void 0 : _c.textStyle), {
|
|
202
146
|
textAlign: orient.align,
|
|
203
147
|
textBaseline: orient.baseline
|
|
204
148
|
}),
|
|
205
149
|
zIndex: this.labelZIndex
|
|
206
150
|
});
|
|
207
|
-
this._updateCrosshairLabel(
|
|
208
|
-
label.name =
|
|
151
|
+
this._updateCrosshairLabel(labelsComp.all, labelAttrs, (label => {
|
|
152
|
+
label.name = `crosshair-${coordKey}-label`, labelsComp.all = label;
|
|
209
153
|
}));
|
|
210
|
-
} else
|
|
154
|
+
} else labelsComp.all && labelsComp.all.hideAll();
|
|
211
155
|
}
|
|
212
156
|
}
|
|
213
|
-
_parseFieldInfo() {
|
|
214
|
-
var _a;
|
|
215
|
-
const {categoryField: categoryField, valueField: valueField} = this._spec;
|
|
216
|
-
categoryField && categoryField.visible && (this._angleHair = this._parseField(categoryField, "categoryField")),
|
|
217
|
-
valueField && valueField.visible && (this._radiusHair = this._parseField(valueField, "valueField"),
|
|
218
|
-
this._radiusHair.smooth = null === (_a = null == valueField ? void 0 : valueField.line) || void 0 === _a ? void 0 : _a.smooth);
|
|
219
|
-
}
|
|
220
|
-
_updateCrosshairLabel(label, labelAttrs, callback) {
|
|
221
|
-
const container = this.getContainer();
|
|
222
|
-
label ? label.setAttributes(labelAttrs) : (label = new Tag(labelAttrs), null == container || container.add(label),
|
|
223
|
-
callback(label)), limitTagInBounds(label, this._getLimitBounds());
|
|
224
|
-
}
|
|
225
|
-
_getNeedClearVRenderComponents() {
|
|
226
|
-
return [ this._radiusCrosshair, this._radiusLabelCrosshair, this._angleCrosshair, this._angleLabelCrosshair ];
|
|
227
|
-
}
|
|
228
157
|
}
|
|
229
158
|
|
|
230
159
|
PolarCrossHair.specKey = "crosshair", PolarCrossHair.type = ComponentTypeEnum.polarCrosshair;
|