@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/polar.ts"],"names":[],"mappings":"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","file":"polar.js","sourcesContent":["/* eslint-disable no-duplicate-imports */\nimport type { IPolarSeries } from '../../series/interface/series';\nimport type { IComponentOption } from '../interface';\nimport { ComponentTypeEnum } from '../interface/type';\nimport type { AxisCurrentValueMap, IPolarCrosshairInfo, IPolarCrosshairSpec } from './interface';\nimport { isDiscrete } from '@visactor/vscale';\nimport { Tag } from '@visactor/vrender-components';\nimport { LineCrosshair, SectorCrosshair, CircleCrosshair, PolygonCrosshair } from '@visactor/vrender-components';\nimport type { IPolarAxis } from '../axis/polar/interface';\nimport type { IPoint, StringOrNumber, TooltipActiveType, TooltipData } from '../../typings';\nimport type { IAxisInfo, IHair, IHairRadius } from './base';\nimport { BaseCrossHair } from './base';\nimport type { Maybe } from '@visactor/vutils';\nimport { polarToCartesian, PointService, isArray, isNil } from '@visactor/vutils';\nimport type { IGraphic, IGroup, INode } from '@visactor/vrender-core';\nimport { angleLabelOrientAttribute, radiusLabelOrientAttribute } from '../../util/math';\nimport { limitTagInBounds } from './utils';\nimport { Factory } from '../../core/factory';\nimport { LayoutType } from './config';\nimport type { IModelSpecInfo } from '../../model/interface';\nimport { layoutByValue, layoutAngleCrosshair, layoutRadiusCrosshair } from './utils/polar';\nimport { getFirstSeries } from '../../util';\nimport type { IDimensionData, IDimensionInfo } from '../../event/events/dimension/interface';\nimport { getSpecInfo } from '../util';\n\nexport class PolarCrossHair<T extends IPolarCrosshairSpec = IPolarCrosshairSpec> extends BaseCrossHair<T> {\n static specKey = 'crosshair';\n\n static type = ComponentTypeEnum.polarCrosshair;\n type = ComponentTypeEnum.polarCrosshair;\n name: string = ComponentTypeEnum.polarCrosshair;\n private _currValueAngle: AxisCurrentValueMap;\n private _currValueRadius: AxisCurrentValueMap;\n\n private _angleHair: IHair | undefined;\n private _radiusHair: IHairRadius | undefined;\n\n private _cacheAngleCrossHairInfo: IPolarCrosshairInfo | undefined;\n private _cacheRadiusCrossHairInfo: IPolarCrosshairInfo | undefined;\n\n private _radiusCrosshair: IGroup;\n private _radiusLabelCrosshair: Tag;\n private _angleCrosshair: IGroup;\n private _angleLabelCrosshair: Tag;\n\n static getSpecInfo(chartSpec: any): Maybe<IModelSpecInfo[]> {\n return getSpecInfo<IPolarCrosshairSpec>(chartSpec, this.specKey, this.type, (s: IPolarCrosshairSpec) => {\n return (s.categoryField && s.categoryField.visible !== false) || (s.valueField && s.valueField.visible !== false);\n });\n }\n\n constructor(spec: T, options: IComponentOption) {\n super(spec, options);\n this._currValueAngle = new Map();\n this._currValueRadius = new Map();\n }\n\n protected _showDefaultCrosshairBySpec() {\n const { categoryField, valueField } = this._spec as IPolarCrosshairSpec;\n if (categoryField?.visible && categoryField.defaultSelect) {\n const { axisIndex, datum } = categoryField.defaultSelect;\n this._defaultCrosshair(axisIndex, datum, LayoutType.VERTICAL);\n }\n if (valueField?.visible && valueField.defaultSelect) {\n const { axisIndex, datum } = valueField.defaultSelect;\n this._defaultCrosshair(axisIndex, datum, LayoutType.HORIZONTAL);\n }\n }\n\n private _defaultCrosshair(axisIndex: number, datum: StringOrNumber, tag: number) {\n const axis = this._option.getComponentsByKey('axes').find(c => c.getSpecIndex() === axisIndex) as IPolarAxis;\n if (!axis) {\n return;\n }\n // 横轴\n if (tag === LayoutType.VERTICAL) {\n this._currValueAngle.clear();\n // 根据数值拿到对应的坐标点\n const polarCoord = {\n angle: axis.valueToPosition(datum),\n radius: axis.getOuterRadius()\n };\n const canvasPosition = axis.coordToPoint(polarCoord);\n this._currValueAngle.set(axisIndex, this._getValueByAxis(axis, canvasPosition));\n } else {\n this._currValueRadius.clear();\n // 根据数值拿到对应的坐标点\n const polarCoord = {\n angle: axis.startAngle,\n radius: axis.valueToPosition(datum)\n };\n const canvasPosition = axis.coordToPoint(polarCoord);\n this._currValueRadius.set(axisIndex, this._getValueByAxis(axis, canvasPosition));\n }\n this.layoutByValue(LayoutType.ALL);\n }\n\n hide() {\n this._radiusCrosshair && this._radiusCrosshair.hideAll();\n this._radiusLabelCrosshair && this._radiusLabelCrosshair.hideAll();\n this._angleCrosshair && this._angleCrosshair.hideAll();\n this._angleLabelCrosshair && this._angleLabelCrosshair.hideAll();\n }\n\n /**\n * 查找所有落在x和y区域的轴\n * @param relativeX\n * @param relativeY\n */\n private _findAllAxisContains(relativeX: number, relativeY: number) {\n const angleAxisMap = this._getAxisInfoByField<IPolarAxis>('category');\n const radiusAxisMap = this._getAxisInfoByField<IPolarAxis>('value');\n return {\n angleAxisMap: this._filterAxisByPoint<IPolarAxis>(angleAxisMap, relativeX, relativeY),\n radiusAxisMap: this._filterAxisByPoint<IPolarAxis>(radiusAxisMap, relativeX, relativeY)\n };\n }\n\n /**\n * 根据位置获取所有轴上的value\n * @param axisMap\n * @param p\n * @returns\n */\n private _getAllAxisValues(axisMap: IAxisInfo<IPolarAxis>, point: IPoint, currValue: AxisCurrentValueMap): 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, this._getValueByAxis(axis, point));\n });\n return true;\n }\n\n private _getValueByAxis(axis: IPolarAxis, point: IPoint) {\n const { x: axisStartX, y: axisStartY } = axis.getLayoutStartPoint();\n const { x, y } = this.getLayoutStartPoint();\n const value = axis.positionToData({\n x: point.x - (axisStartX - x),\n y: point.y - (axisStartY - y)\n });\n\n const center = {\n x: axis.getCenter().x + this.getLayoutStartPoint().x,\n y: axis.getCenter().y + this.getLayoutStartPoint().y\n };\n\n return {\n value,\n axis,\n center,\n innerRadius: axis.getInnerRadius(),\n radius: axis.getOuterRadius(),\n startAngle: axis.startAngle,\n endAngle: axis.endAngle,\n distance: PointService.distancePP(point, axis.getCenter()),\n coord: axis.pointToCoord(point),\n point\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 if (dimensionInfo.axis) {\n const triggerCoord = (dimensionInfo.axis as IPolarAxis).pointToCoord({ x, y });\n const isRadius = dimensionInfo.axis.getOrient() === 'radius';\n const coord = isRadius\n ? {\n radius: dimensionInfo.position,\n angle: triggerCoord.angle\n }\n : {\n radius: triggerCoord.radius,\n angle: dimensionInfo.position\n };\n const uniformPos = (dimensionInfo.axis as IPolarAxis).coordToPoint(coord);\n x = uniformPos.x;\n y = uniformPos.y;\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 { angleAxisMap, radiusAxisMap } = this._findAllAxisContains(x, y);\n if (angleAxisMap.size === 0 && radiusAxisMap.size === 0) {\n if (this.enableRemain) {\n return;\n }\n // 隐藏\n this.hide();\n return;\n }\n // 删除之前的currValue\n this._currValueAngle.clear();\n this._currValueRadius.clear();\n // 将数据保存到这个对象中,如果不存在,就直接不执行后续逻辑\n angleAxisMap && this._getAllAxisValues(angleAxisMap, { x, y }, this._currValueAngle);\n radiusAxisMap && this._getAllAxisValues(radiusAxisMap, { x, y }, this._currValueRadius);\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, 'polar') as IPolarSeries;\n if (!series) {\n return;\n }\n\n const { angle, radius } = layoutByValue(\n series,\n this._currValueAngle,\n this._currValueRadius,\n this._angleHair,\n this._radiusHair,\n this.enableRemain,\n this._cacheAngleCrossHairInfo,\n this._cacheRadiusCrossHairInfo\n );\n\n if (this.enableRemain) {\n this._cacheAngleCrossHairInfo = { ...angle, _isCache: true };\n this._cacheRadiusCrossHairInfo = { ...radius, _isCache: true };\n }\n\n if (tag) {\n LayoutType.HORIZONTAL && this._layoutRadius(radius);\n LayoutType.VERTICAL && this._layoutAngle(angle);\n }\n }\n\n private _layoutAngle(crosshairInfo: IPolarCrosshairInfo) {\n if (crosshairInfo._isCache && this.enableRemain) {\n return;\n }\n\n const container = this.getContainer();\n const { angle, radius, label, center, visible } = crosshairInfo;\n if (visible) {\n const crosshairType = this._angleHair.type === 'rect' ? 'sector' : 'line';\n const positionAttrs = layoutAngleCrosshair(this._angleHair, crosshairInfo);\n\n if (this._angleCrosshair) {\n this._angleCrosshair.setAttributes(positionAttrs as unknown as any);\n } else {\n let crosshair;\n // 创建\n if (crosshairType === 'line') {\n crosshair = new LineCrosshair({\n ...(positionAttrs as { start: IPoint; end: IPoint }),\n lineStyle: this._angleHair.style,\n zIndex: this.gridZIndex,\n pickable: false\n });\n } else if (crosshairType === 'sector') {\n crosshair = new SectorCrosshair({\n ...(positionAttrs as {\n center: IPoint;\n innerRadius: number;\n radius: number;\n startAngle: number;\n endAngle: number;\n }),\n sectorStyle: this._angleHair.style,\n zIndex: this.gridZIndex,\n pickable: false\n });\n }\n this._angleCrosshair = crosshair as unknown as IGroup;\n // 添加至场景树\n container.add(crosshair as unknown as INode);\n }\n\n // 文本\n if (label.visible) {\n const orient = angleLabelOrientAttribute(angle);\n const labelAttrs = {\n ...polarToCartesian(center, radius + label.offset, angle),\n ...this._angleHair.label,\n ...label,\n textStyle: {\n ...this._angleHair.label?.textStyle,\n textAlign: orient.align,\n textBaseline: orient.baseline\n },\n zIndex: this.labelZIndex\n };\n this._updateCrosshairLabel(this._angleLabelCrosshair, labelAttrs, label => {\n label.name = 'crosshair-angle-label';\n this._angleLabelCrosshair = label;\n });\n } else {\n this._angleLabelCrosshair && this._angleLabelCrosshair.hideAll();\n }\n }\n }\n\n private _layoutRadius(crosshairInfo: IPolarCrosshairInfo) {\n if (crosshairInfo._isCache && this.enableRemain) {\n return;\n }\n\n const { center, startAngle, label, visible } = crosshairInfo;\n const container = this.getContainer();\n if (visible) {\n const crosshairType = this._radiusHair.smooth ? 'circle' : 'polygon';\n const positionAttrs = layoutRadiusCrosshair(this._radiusHair, crosshairInfo);\n const polygonRadius = positionAttrs.radius;\n\n if (this._radiusCrosshair) {\n this._radiusCrosshair.setAttributes(positionAttrs as unknown as any);\n } else {\n let crosshair;\n if (crosshairType === 'polygon') {\n crosshair = new PolygonCrosshair({\n ...positionAttrs,\n lineStyle: this._radiusHair.style,\n zIndex: this.gridZIndex + 1 // 样式优化:线盖在面上\n });\n } else {\n crosshair = new CircleCrosshair({\n ...positionAttrs,\n lineStyle: this._radiusHair.style,\n zIndex: this.gridZIndex\n });\n }\n this._radiusCrosshair = crosshair as unknown as IGroup;\n // 添加至场景树\n container.add(crosshair as unknown as INode);\n }\n\n // 文本\n if (label.visible) {\n const orient = radiusLabelOrientAttribute(startAngle);\n const labelAttrs = {\n ...polarToCartesian(center, polygonRadius, startAngle),\n ...this._radiusHair.label,\n ...label,\n textStyle: {\n ...this._radiusHair.label?.textStyle,\n textAlign: orient.align,\n textBaseline: orient.baseline\n },\n zIndex: this.labelZIndex\n };\n this._updateCrosshairLabel(this._radiusLabelCrosshair, labelAttrs, label => {\n label.name = 'crosshair-radius-label';\n this._radiusLabelCrosshair = label;\n });\n } else {\n this._radiusLabelCrosshair && this._radiusLabelCrosshair.hideAll();\n }\n }\n }\n\n protected _parseFieldInfo() {\n const { categoryField, valueField } = this._spec as IPolarCrosshairSpec;\n if (categoryField && categoryField.visible) {\n this._angleHair = this._parseField(categoryField, 'categoryField');\n }\n if (valueField && valueField.visible) {\n this._radiusHair = this._parseField(valueField, 'valueField');\n this._radiusHair.smooth = valueField?.line?.smooth;\n }\n }\n\n private _updateCrosshairLabel(label: Tag, labelAttrs: any, callback: (label: Tag) => void) {\n // 文本\n const container = this.getContainer();\n if (label) {\n label.setAttributes(labelAttrs);\n } else {\n label = new Tag(labelAttrs);\n container?.add(label as unknown as INode);\n callback(label);\n }\n limitTagInBounds(label, this._getLimitBounds());\n }\n\n protected _getNeedClearVRenderComponents(): IGraphic[] {\n return [\n this._radiusCrosshair,\n this._radiusLabelCrosshair,\n this._angleCrosshair,\n this._angleLabelCrosshair\n ] as unknown as IGroup[];\n }\n}\n\nexport const registerPolarCrossHair = () => {\n Factory.registerComponent(PolarCrossHair.type, PolarCrossHair);\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/component/crosshair/polar.ts"],"names":[],"mappings":"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","file":"polar.js","sourcesContent":["/* eslint-disable no-duplicate-imports */\nimport type { IPolarSeries } from '../../series/interface/series';\nimport type { IComponentOption } from '../interface';\nimport { ComponentTypeEnum } from '../interface/type';\nimport type { IPolarCrosshairSpec } from './interface';\nimport type { PolygonCrosshairAttrs, CircleCrosshairAttrs } from '@visactor/vrender-components';\nimport { LineCrosshair, SectorCrosshair, CircleCrosshair, PolygonCrosshair } from '@visactor/vrender-components';\nimport type { IPolarAxis } from '../axis/polar/interface';\nimport type { IPoint, IPolarOrientType, StringOrNumber, TooltipActiveType, TooltipData } from '../../typings';\nimport { BaseCrossHair } from './base';\nimport type { Maybe } from '@visactor/vutils';\nimport { polarToCartesian } from '@visactor/vutils';\nimport type { IGroup, INode } from '@visactor/vrender-core';\nimport { angleLabelOrientAttribute, radiusLabelOrientAttribute } from '../../util/math';\nimport { Factory } from '../../core/factory';\nimport { LayoutType } from './config';\nimport type { IModelSpecInfo } from '../../model/interface';\nimport { layoutByValue, layoutCrosshair } from './utils/polar';\nimport { getFirstSeries } from '../../util';\nimport type { IDimensionData, IDimensionInfo } from '../../event/events/dimension/interface';\nimport { getSpecInfo } from '../util';\nimport type { IAxis } from '../axis';\n\nexport class PolarCrossHair<T extends IPolarCrosshairSpec = IPolarCrosshairSpec> extends BaseCrossHair<T> {\n static specKey = 'crosshair';\n\n static type = ComponentTypeEnum.polarCrosshair;\n type = ComponentTypeEnum.polarCrosshair;\n name: string = ComponentTypeEnum.polarCrosshair;\n\n static getSpecInfo(chartSpec: any): Maybe<IModelSpecInfo[]> {\n return getSpecInfo<IPolarCrosshairSpec>(chartSpec, this.specKey, this.type, (s: IPolarCrosshairSpec) => {\n return (s.categoryField && s.categoryField.visible !== false) || (s.valueField && s.valueField.visible !== false);\n });\n }\n\n constructor(spec: T, options: IComponentOption) {\n super(spec, options);\n\n this._stateByField = {\n categoryField: {\n coordKey: 'angle',\n anotherAxisKey: 'radius',\n currentValue: new Map(),\n labelsComp: {\n all: null\n }\n },\n valueField: {\n coordKey: 'radius',\n anotherAxisKey: 'angle',\n currentValue: new Map(),\n labelsComp: {\n all: null\n }\n }\n };\n }\n\n /**\n * set axis value of crosshair\n */\n setAxisValue(datum: StringOrNumber, axis: IAxis) {\n if ((axis.getOrient() as unknown as IPolarOrientType) === 'radius') {\n this._stateByField.valueField.currentValue.set(axis.getSpecIndex(), {\n datum,\n axis\n });\n } else {\n this._stateByField.categoryField.currentValue.set(axis.getSpecIndex(), {\n datum,\n axis\n });\n }\n }\n /**\n * 查找所有落在x和y区域的轴\n * @param relativeX\n * @param relativeY\n */\n private _findAllAxisContains(relativeX: number, relativeY: number) {\n const angleAxisMap = this._getAxisInfoByField<IPolarAxis>('category');\n const radiusAxisMap = this._getAxisInfoByField<IPolarAxis>('value');\n return {\n angleAxisMap: this._filterAxisByPoint<IPolarAxis>(angleAxisMap, relativeX, relativeY),\n radiusAxisMap: this._filterAxisByPoint<IPolarAxis>(radiusAxisMap, relativeX, relativeY)\n };\n }\n\n protected _getDatumAtPoint(axis: IPolarAxis, point: IPoint) {\n const { x: axisStartX, y: axisStartY } = axis.getLayoutStartPoint();\n const { x, y } = this.getLayoutStartPoint();\n const datum = axis.positionToData({\n x: point.x - (axisStartX - x),\n y: point.y - (axisStartY - y)\n });\n\n return datum;\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 if (dimensionInfo.axis) {\n const triggerCoord = (dimensionInfo.axis as IPolarAxis).pointToCoord({ x, y });\n const isRadius = dimensionInfo.axis.getOrient() === 'radius';\n const coord = isRadius\n ? {\n radius: dimensionInfo.position,\n angle: triggerCoord.angle\n }\n : {\n radius: triggerCoord.radius,\n angle: dimensionInfo.position\n };\n const uniformPos = (dimensionInfo.axis as IPolarAxis).coordToPoint(coord);\n x = uniformPos.x;\n y = uniformPos.y;\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 // 找到所有的包含这个点的轴\n const { angleAxisMap, radiusAxisMap } = this._findAllAxisContains(x, y);\n if (angleAxisMap.size === 0 && radiusAxisMap.size === 0) {\n if (this.enableRemain) {\n return;\n }\n // 隐藏\n this.hide();\n return;\n }\n\n // 将数据保存到这个对象中,如果不存在,就直接不执行后续逻辑\n angleAxisMap && this._setAllAxisValues(angleAxisMap, { x, y }, 'categoryField');\n radiusAxisMap && this._setAllAxisValues(radiusAxisMap, { x, y }, 'valueField');\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, 'polar') as IPolarSeries;\n if (!series) {\n return;\n }\n\n layoutByValue(this._stateByField, series, this.enableRemain);\n\n Object.keys(this._stateByField).forEach(field => {\n this._layoutByField(field);\n });\n }\n\n private _layoutByField(fieldName: string) {\n const { cacheInfo, attributes, crosshairComp, labelsComp, coordKey } = this._stateByField[fieldName];\n if (!cacheInfo || (cacheInfo._isCache && this.enableRemain)) {\n return;\n }\n\n const container = this.getContainer();\n const { visible, labels, coord, sizeRange, axis } = cacheInfo;\n if (visible) {\n const layoutStartPoint = this.getLayoutStartPoint();\n const smooth = this._spec.valueField?.line?.smooth;\n const positionAttrs = layoutCrosshair(this._stateByField[fieldName], layoutStartPoint, smooth);\n\n if (crosshairComp) {\n crosshairComp.setAttributes(positionAttrs as unknown as any);\n } else {\n let crosshair;\n\n if (coordKey === 'angle') {\n const crosshairType = attributes.type === 'rect' ? 'sector' : 'line';\n // 创建\n if (crosshairType === 'line') {\n crosshair = new LineCrosshair({\n ...(positionAttrs as { start: IPoint; end: IPoint }),\n lineStyle: attributes.style,\n zIndex: this.gridZIndex,\n pickable: false\n });\n } else if (crosshairType === 'sector') {\n crosshair = new SectorCrosshair({\n ...(positionAttrs as {\n center: IPoint;\n innerRadius: number;\n radius: number;\n startAngle: number;\n endAngle: number;\n }),\n sectorStyle: attributes.style,\n zIndex: this.gridZIndex,\n pickable: false\n });\n }\n } else {\n const crosshairType = smooth ? 'circle' : 'polygon';\n\n if (crosshairType === 'polygon') {\n crosshair = new PolygonCrosshair({\n ...(positionAttrs as PolygonCrosshairAttrs),\n lineStyle: attributes.style,\n zIndex: this.gridZIndex + 1 // 样式优化:线盖在面上\n });\n } else {\n crosshair = new CircleCrosshair({\n ...(positionAttrs as CircleCrosshairAttrs),\n lineStyle: attributes.style,\n zIndex: this.gridZIndex\n });\n }\n }\n this._stateByField[fieldName].crosshairComp = crosshair as unknown as IGroup;\n // 添加至场景树\n container.add(crosshair as unknown as INode);\n }\n\n const label = labels.all;\n // 文本\n if (label.visible) {\n const axisCenter = (axis as IPolarAxis).getCenter();\n const center = {\n x: axisCenter.x + layoutStartPoint.x,\n y: axisCenter.y + layoutStartPoint.y\n };\n const orient =\n coordKey === 'angle'\n ? angleLabelOrientAttribute(coord)\n : radiusLabelOrientAttribute((axis as IPolarAxis).startAngle);\n const point =\n coordKey === 'angle'\n ? polarToCartesian(center, sizeRange[1] + label.offset, coord)\n : polarToCartesian(center, positionAttrs.radius, (axis as IPolarAxis).startAngle);\n\n const labelAttrs = {\n ...point,\n ...attributes.label,\n ...label,\n textStyle: {\n ...attributes.label?.textStyle,\n textAlign: orient.align,\n textBaseline: orient.baseline\n },\n zIndex: this.labelZIndex\n };\n this._updateCrosshairLabel(labelsComp.all, labelAttrs, label => {\n label.name = `crosshair-${coordKey}-label`;\n labelsComp.all = label;\n });\n } else {\n labelsComp.all && labelsComp.all.hideAll();\n }\n }\n }\n}\n\nexport const registerPolarCrossHair = () => {\n Factory.registerComponent(PolarCrossHair.type, PolarCrossHair);\n};\n"]}
|
|
@@ -1,34 +1,13 @@
|
|
|
1
1
|
import type { ICartesianSeries } from '../../../series';
|
|
2
2
|
import type { ILayoutPoint } from '../../../typings';
|
|
3
|
-
import type {
|
|
4
|
-
|
|
5
|
-
export declare const
|
|
6
|
-
x: ICrosshairInfoX;
|
|
7
|
-
y: ICrosshairInfoY;
|
|
8
|
-
offsetWidth: number;
|
|
9
|
-
offsetHeight: number;
|
|
10
|
-
bandWidth: number;
|
|
11
|
-
bandHeight: number;
|
|
12
|
-
};
|
|
13
|
-
export declare const layoutVerticalCrosshair: (xHair: IHair, crosshairInfo: ICrosshairInfoX, bandWidth: number, offsetWidth: number) => {
|
|
14
|
-
visible: boolean;
|
|
15
|
-
start: {
|
|
16
|
-
x: number;
|
|
17
|
-
y: number;
|
|
18
|
-
};
|
|
19
|
-
end: {
|
|
20
|
-
x: number;
|
|
21
|
-
y: number;
|
|
22
|
-
};
|
|
23
|
-
};
|
|
24
|
-
export declare const layoutHorizontalCrosshair: (yHair: IHair, crosshairInfo: ICrosshairInfoY, bandHeight: number, offsetHeight: number) => {
|
|
3
|
+
import type { CrossHairStateByField, CrossHairStateItem } from '../interface';
|
|
4
|
+
export declare const layoutByValue: (stateByField: CrossHairStateByField, series: ICartesianSeries, layoutStartPoint: ILayoutPoint, enableRemain?: boolean) => CrossHairStateByField;
|
|
5
|
+
export declare const layoutCrosshair: (stateItem: CrossHairStateItem) => {
|
|
25
6
|
visible: boolean;
|
|
26
7
|
start: {
|
|
27
|
-
x: number;
|
|
28
|
-
y: number;
|
|
8
|
+
[x: string]: number;
|
|
29
9
|
};
|
|
30
10
|
end: {
|
|
31
|
-
x: number;
|
|
32
|
-
y: number;
|
|
11
|
+
[x: string]: number;
|
|
33
12
|
};
|
|
34
13
|
};
|
|
@@ -2,152 +2,93 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: !0
|
|
5
|
-
}), exports.
|
|
5
|
+
}), exports.layoutCrosshair = exports.layoutByValue = void 0;
|
|
6
6
|
|
|
7
|
-
const vscale_1 = require("@visactor/vscale"), common_1 = require("./common"), util_1 = require("../../axis/util"), vutils_1 = require("@visactor/vutils"), util_2 = require("../../util"), layoutByValue = (
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
xAxis = item.axis;
|
|
18
|
-
}
|
|
19
|
-
if (currValueY.size) {
|
|
20
|
-
const item = Array.from(currValueY.values())[0];
|
|
21
|
-
y = item.axis.getScale().scale(item.value) + item.axis.getLayoutStartPoint().y - layoutStartPoint.y,
|
|
22
|
-
yAxis = item.axis;
|
|
7
|
+
const vscale_1 = require("@visactor/vscale"), common_1 = require("./common"), util_1 = require("../../axis/util"), vutils_1 = require("@visactor/vutils"), util_2 = require("../../util"), layoutByValue = (stateByField, series, layoutStartPoint, enableRemain = !1) => (layoutStartPoint || (layoutStartPoint = {
|
|
8
|
+
x: 0,
|
|
9
|
+
y: 0
|
|
10
|
+
}), Object.keys(stateByField).forEach((field => {
|
|
11
|
+
const {currentValue: currentValue, cacheInfo: cacheInfo, labelsComp: labelsComp, attributes: attributes, coordKey: coordKey} = stateByField[field];
|
|
12
|
+
let axis = null, coord = 0;
|
|
13
|
+
if (currentValue.size) {
|
|
14
|
+
const item = Array.from(currentValue.values())[0];
|
|
15
|
+
coord = item.axis.getScale().scale(item.datum) + item.axis.getLayoutStartPoint()[coordKey] - layoutStartPoint[coordKey],
|
|
16
|
+
axis = item.axis;
|
|
23
17
|
}
|
|
24
|
-
const
|
|
25
|
-
vutils_1.isValid)(
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
rightPos: 0,
|
|
32
|
-
topPos: 0,
|
|
33
|
-
x: 0,
|
|
34
|
-
bottom: {
|
|
35
|
-
visible: !1,
|
|
36
|
-
text: "",
|
|
37
|
-
dx: 0,
|
|
38
|
-
dy: 0
|
|
39
|
-
},
|
|
40
|
-
top: {
|
|
18
|
+
const isVisible = !!currentValue.size && Number.isFinite(coord), useCache = enableRemain && !isVisible && (0,
|
|
19
|
+
vutils_1.isValid)(cacheInfo), newCacheInfo = useCache ? cacheInfo : {
|
|
20
|
+
coordRange: [ 0, 0 ],
|
|
21
|
+
sizeRange: [ 0, 0 ],
|
|
22
|
+
coord: coord,
|
|
23
|
+
labelsTextStyle: {},
|
|
24
|
+
labels: labelsComp ? Object.keys(labelsComp).reduce(((res, labelKey) => (res[labelKey] = {
|
|
41
25
|
visible: !1,
|
|
42
26
|
text: "",
|
|
43
27
|
dx: 0,
|
|
44
28
|
dy: 0
|
|
45
|
-
},
|
|
46
|
-
visible:
|
|
47
|
-
axis:
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
y: 0,
|
|
54
|
-
left: {
|
|
55
|
-
visible: !1,
|
|
56
|
-
text: "",
|
|
57
|
-
dx: 0,
|
|
58
|
-
dy: 0
|
|
59
|
-
},
|
|
60
|
-
right: {
|
|
61
|
-
visible: !1,
|
|
62
|
-
text: "",
|
|
63
|
-
dx: 0,
|
|
64
|
-
dy: 0
|
|
65
|
-
},
|
|
66
|
-
visible: yVisible,
|
|
67
|
-
axis: yAxis
|
|
68
|
-
});
|
|
69
|
-
let bandHeight, offsetWidth = 0, offsetHeight = 0;
|
|
70
|
-
if (xHair && currValueX.forEach((({axis: axis, value: value}) => {
|
|
71
|
-
var _a;
|
|
72
|
-
value = null != value ? value : "";
|
|
73
|
-
let niceLabelFormatter = null;
|
|
74
|
-
const xScale = axis.getScale();
|
|
75
|
-
if ((0, vscale_1.isDiscrete)(xScale.type)) bandWidth = xScale.bandwidth(), 0 === bandWidth && xScale.step && (offsetWidth = xScale.step()); else if ((0,
|
|
76
|
-
vscale_1.isContinuous)(xScale.type)) {
|
|
77
|
-
const fieldX = series.fieldX[0], fieldX2 = series.fieldX2, datum = (0, common_1.getDatumByValue)(series.getViewData().latestData, +value, fieldX, fieldX2);
|
|
78
|
-
if (datum) {
|
|
79
|
-
const startX = series.dataToPositionX(datum);
|
|
80
|
-
fieldX2 ? (bandWidth = Math.abs(startX - series.dataToPositionX1(datum)), value = `${datum[fieldX]} ~ ${datum[fieldX2]}`) : bandWidth = 1,
|
|
81
|
-
x = startX;
|
|
82
|
-
}
|
|
83
|
-
niceLabelFormatter = axis.niceLabelFormatter;
|
|
84
|
-
}
|
|
85
|
-
if (xCrossHairInfo && (null === (_a = xHair.label) || void 0 === _a ? void 0 : _a.visible) && !xUseCache) {
|
|
86
|
-
const labelOffset = (0, util_1.getAxisLabelOffset)(axis.getSpec());
|
|
87
|
-
"bottom" === axis.getOrient() ? (xCrossHairInfo.bottom.visible = !0, xCrossHairInfo.bottom.defaultFormatter = niceLabelFormatter,
|
|
88
|
-
xCrossHairInfo.bottom.text = value, xCrossHairInfo.bottom.dx = 0, xCrossHairInfo.bottom.dy = labelOffset) : "top" === axis.getOrient() && (xCrossHairInfo.top.visible = !0,
|
|
89
|
-
xCrossHairInfo.top.defaultFormatter = niceLabelFormatter, xCrossHairInfo.top.text = value,
|
|
90
|
-
xCrossHairInfo.top.dx = 0, xCrossHairInfo.top.dy = -labelOffset);
|
|
91
|
-
}
|
|
92
|
-
})), yHair && currValueY.forEach((({axis: axis, value: value}) => {
|
|
29
|
+
}, res)), {}) : null,
|
|
30
|
+
visible: isVisible,
|
|
31
|
+
axis: axis
|
|
32
|
+
};
|
|
33
|
+
let bandSize;
|
|
34
|
+
newCacheInfo && (newCacheInfo._isCache = useCache);
|
|
35
|
+
let offsetSize = 0;
|
|
36
|
+
if (attributes && currentValue.forEach((({axis: axis, datum: value = ""}) => {
|
|
93
37
|
var _a;
|
|
94
|
-
value = null != value ? value : "";
|
|
95
38
|
let niceLabelFormatter = null;
|
|
96
|
-
const
|
|
97
|
-
if ((0, vscale_1.isDiscrete)(
|
|
98
|
-
vscale_1.isContinuous)(
|
|
99
|
-
const
|
|
39
|
+
const scale = axis.getScale();
|
|
40
|
+
if ((0, vscale_1.isDiscrete)(scale.type)) bandSize = scale.bandwidth(), 0 === bandSize && scale.step && (offsetSize = scale.step()); else if ((0,
|
|
41
|
+
vscale_1.isContinuous)(scale.type)) {
|
|
42
|
+
const field1 = "xField" === field ? series.fieldX[0] : series.fieldY[0], field2 = "xField" === field ? series.fieldX2 : series.fieldY2, datum = (0,
|
|
43
|
+
common_1.getDatumByValue)(series.getViewData().latestData, +value, field1, field2);
|
|
100
44
|
if (datum) {
|
|
101
|
-
const
|
|
102
|
-
|
|
103
|
-
|
|
45
|
+
const startX = "xField" === field ? series.dataToPositionX(datum) : series.dataToPositionY(datum);
|
|
46
|
+
field2 ? (bandSize = Math.abs(startX - ("xField" === field ? series.dataToPositionX1(datum) : series.dataToPositionY1(datum))),
|
|
47
|
+
value = `${datum[field1]} ~ ${datum[field2]}`) : bandSize = 1, coord = startX;
|
|
104
48
|
}
|
|
105
49
|
niceLabelFormatter = axis.niceLabelFormatter;
|
|
106
50
|
}
|
|
107
|
-
if (
|
|
108
|
-
const labelOffset = (0, util_1.getAxisLabelOffset)(axis.getSpec());
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
51
|
+
if (newCacheInfo && (null === (_a = attributes.label) || void 0 === _a ? void 0 : _a.visible) && !useCache) {
|
|
52
|
+
const labelOffset = (0, util_1.getAxisLabelOffset)(axis.getSpec()), axisOrient = axis.getOrient();
|
|
53
|
+
newCacheInfo.labels[axisOrient] && (newCacheInfo.labels[axisOrient].visible = !0,
|
|
54
|
+
newCacheInfo.labels[axisOrient].text = value, "left" === axisOrient ? (newCacheInfo.labels[axisOrient].dx = -labelOffset,
|
|
55
|
+
newCacheInfo.labelsTextStyle[axisOrient] = {
|
|
56
|
+
textAlign: "right",
|
|
57
|
+
textBaseline: "middle"
|
|
58
|
+
}) : "right" === axisOrient ? (newCacheInfo.labels[axisOrient].dx = labelOffset,
|
|
59
|
+
newCacheInfo.labelsTextStyle[axisOrient] = {
|
|
60
|
+
textAlign: "left",
|
|
61
|
+
textBaseline: "middle"
|
|
62
|
+
}) : "top" === axisOrient ? (newCacheInfo.labels[axisOrient].y = 0, newCacheInfo.labels[axisOrient].dy = -labelOffset,
|
|
63
|
+
newCacheInfo.labelsTextStyle[axisOrient] = {
|
|
64
|
+
textAlign: "center",
|
|
65
|
+
textBaseline: "bottom"
|
|
66
|
+
}) : "bottom" === axisOrient && (newCacheInfo.labels[axisOrient].dy = labelOffset,
|
|
67
|
+
newCacheInfo.labelsTextStyle[axisOrient] = {
|
|
68
|
+
textAlign: "center",
|
|
69
|
+
textBaseline: "top"
|
|
70
|
+
}), newCacheInfo.labels[axisOrient].defaultFormatter = niceLabelFormatter);
|
|
113
71
|
}
|
|
114
|
-
})),
|
|
115
|
-
const
|
|
72
|
+
})), newCacheInfo && !useCache) {
|
|
73
|
+
const region = {
|
|
116
74
|
x1: 1 / 0,
|
|
117
75
|
y1: 1 / 0,
|
|
118
76
|
x2: -1 / 0,
|
|
119
77
|
y2: -1 / 0
|
|
120
78
|
};
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
x1: 1 / 0,
|
|
131
|
-
y1: 1 / 0,
|
|
132
|
-
x2: -1 / 0,
|
|
133
|
-
y2: -1 / 0
|
|
134
|
-
};
|
|
135
|
-
if (setRegionArea(yRegion, currValueY), yCrossHairInfo.leftPos = yRegion.x1, yCrossHairInfo.topPos = yRegion.y1,
|
|
136
|
-
yCrossHairInfo.bottomPos = yRegion.y2, yCrossHairInfo.width = yRegion.x2 - yRegion.x1,
|
|
137
|
-
yCrossHairInfo.y = y + layoutStartPoint.y, yHair && yHair.label) {
|
|
138
|
-
const {left: left, right: right} = yCrossHairInfo;
|
|
139
|
-
left.visible && setFormattedCrosshairLabel(left, "left", yHair.label), right.visible && setFormattedCrosshairLabel(right, "right", yHair.label);
|
|
140
|
-
}
|
|
79
|
+
setRegionArea(region, currentValue), "xField" === field ? (newCacheInfo.coordRange = [ region.x1, region.x2 ],
|
|
80
|
+
newCacheInfo.sizeRange = [ region.y1, region.y2 ], newCacheInfo.coord = coord + layoutStartPoint.x,
|
|
81
|
+
newCacheInfo.labels && (newCacheInfo.labels.top.y = region.y1, newCacheInfo.labels.bottom.y = region.y2)) : (newCacheInfo.coordRange = [ region.y1, region.y2 ],
|
|
82
|
+
newCacheInfo.sizeRange = [ region.x1, region.x2 ], newCacheInfo.coord = coord + layoutStartPoint.y,
|
|
83
|
+
newCacheInfo.labels && (newCacheInfo.labels.left.x = region.x1, newCacheInfo.labels.right.x = region.x2)),
|
|
84
|
+
(newCacheInfo.coord < newCacheInfo.coordRange[0] || newCacheInfo.coord > newCacheInfo.coordRange[1]) && (newCacheInfo.visible = !1),
|
|
85
|
+
attributes && attributes.label && Object.keys(newCacheInfo.labels).forEach((labelKey => {
|
|
86
|
+
newCacheInfo.labels[labelKey].visible && setFormattedCrosshairLabel(newCacheInfo.labels[labelKey], labelKey, attributes.label);
|
|
87
|
+
}));
|
|
141
88
|
}
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
offsetWidth: offsetWidth,
|
|
146
|
-
offsetHeight: offsetHeight,
|
|
147
|
-
bandWidth: null != bandWidth ? bandWidth : 0,
|
|
148
|
-
bandHeight: null != bandHeight ? bandHeight : 0
|
|
149
|
-
};
|
|
150
|
-
};
|
|
89
|
+
stateByField[field].bandSize = null != bandSize ? bandSize : 0, stateByField[field].offsetSize = offsetSize,
|
|
90
|
+
stateByField[field].cacheInfo = newCacheInfo;
|
|
91
|
+
})), stateByField);
|
|
151
92
|
|
|
152
93
|
exports.layoutByValue = layoutByValue;
|
|
153
94
|
|
|
@@ -161,74 +102,45 @@ const setFormattedCrosshairLabel = (labelInfo, position, labelSpec) => {
|
|
|
161
102
|
}, setRegionArea = (outRegion, currentValue) => {
|
|
162
103
|
currentValue.forEach((({axis: axis}) => {
|
|
163
104
|
axis.getRegions().forEach((r => {
|
|
164
|
-
|
|
165
|
-
outRegion.
|
|
166
|
-
outRegion.
|
|
105
|
+
const {x: x, y: y} = r.getLayoutStartPoint(), {width: width, height: height} = r.getLayoutRect();
|
|
106
|
+
outRegion.x1 = Math.min(outRegion.x1, x), outRegion.y1 = Math.min(outRegion.y1, y),
|
|
107
|
+
outRegion.x2 = Math.max(outRegion.x2, x + width), outRegion.y2 = Math.max(outRegion.y2, y + height);
|
|
167
108
|
}));
|
|
168
109
|
}));
|
|
169
|
-
},
|
|
170
|
-
const {
|
|
110
|
+
}, layoutCrosshair = stateItem => {
|
|
111
|
+
const {cacheInfo: cacheInfo, attributes: attributes, bandSize: bandSize, offsetSize: offsetSize, coordKey: coordKey, anotherAxisKey: anotherAxisKey} = stateItem, {coord: coord, sizeRange: sizeRange} = cacheInfo, type = attributes.type;
|
|
171
112
|
let positionAttribute;
|
|
172
|
-
if ("line" === type)
|
|
173
|
-
|
|
174
|
-
start: {
|
|
175
|
-
x: x + bandWidth / 2,
|
|
176
|
-
y: topPos
|
|
177
|
-
},
|
|
178
|
-
end: {
|
|
179
|
-
x: x + bandWidth / 2,
|
|
180
|
-
y: topPos + height
|
|
181
|
-
}
|
|
182
|
-
}; else if ("rect" === type) {
|
|
183
|
-
const extend = getRectSize(xHair, bandWidth, crosshairInfo.axis), {leftPos: leftPos, rightPos: rightPos} = crosshairInfo;
|
|
113
|
+
if ("line" === type) {
|
|
114
|
+
const pos = coord + bandSize / 2;
|
|
184
115
|
positionAttribute = {
|
|
185
116
|
visible: !0,
|
|
186
117
|
start: {
|
|
187
|
-
|
|
188
|
-
|
|
118
|
+
[coordKey]: pos,
|
|
119
|
+
[anotherAxisKey]: sizeRange[0]
|
|
189
120
|
},
|
|
190
121
|
end: {
|
|
191
|
-
|
|
192
|
-
|
|
122
|
+
[coordKey]: pos,
|
|
123
|
+
[anotherAxisKey]: sizeRange[1]
|
|
193
124
|
}
|
|
194
125
|
};
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
};
|
|
198
|
-
|
|
199
|
-
exports.layoutVerticalCrosshair = layoutVerticalCrosshair;
|
|
200
|
-
|
|
201
|
-
const layoutHorizontalCrosshair = (yHair, crosshairInfo, bandHeight, offsetHeight) => {
|
|
202
|
-
const {leftPos: leftPos, width: width, y: y} = crosshairInfo, type = yHair.type;
|
|
203
|
-
let positionAttribute;
|
|
204
|
-
if ("line" === type) positionAttribute = {
|
|
205
|
-
visible: !0,
|
|
206
|
-
start: {
|
|
207
|
-
x: leftPos,
|
|
208
|
-
y: y + bandHeight / 2
|
|
209
|
-
},
|
|
210
|
-
end: {
|
|
211
|
-
x: leftPos + width,
|
|
212
|
-
y: y + bandHeight / 2
|
|
213
|
-
}
|
|
214
|
-
}; else if ("rect" === type) {
|
|
215
|
-
const extend = getRectSize(yHair, bandHeight, crosshairInfo.axis), {topPos: topPos, bottomPos: bottomPos} = crosshairInfo;
|
|
126
|
+
} else if ("rect" === type) {
|
|
127
|
+
const extend = getRectSize(attributes, bandSize, cacheInfo.axis), {coordRange: coordRange} = cacheInfo;
|
|
216
128
|
positionAttribute = {
|
|
217
129
|
visible: !0,
|
|
218
130
|
start: {
|
|
219
|
-
|
|
220
|
-
|
|
131
|
+
[coordKey]: Math.max(coord - extend / 2 - offsetSize / 2, coordRange[0]),
|
|
132
|
+
[anotherAxisKey]: sizeRange[0]
|
|
221
133
|
},
|
|
222
134
|
end: {
|
|
223
|
-
|
|
224
|
-
|
|
135
|
+
[coordKey]: Math.min(coord + bandSize + extend / 2 + offsetSize / 2, coordRange[1]),
|
|
136
|
+
[anotherAxisKey]: sizeRange[1]
|
|
225
137
|
}
|
|
226
138
|
};
|
|
227
139
|
}
|
|
228
140
|
return positionAttribute;
|
|
229
141
|
};
|
|
230
142
|
|
|
231
|
-
exports.
|
|
143
|
+
exports.layoutCrosshair = layoutCrosshair;
|
|
232
144
|
|
|
233
145
|
const getRectSize = (hair, bandSize, axis) => {
|
|
234
146
|
var _a, _b, _c;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/component/crosshair/utils/cartesian.ts"],"names":[],"mappings":"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","file":"cartesian.js","sourcesContent":["import type { BandScale } from '@visactor/vscale';\n// eslint-disable-next-line no-duplicate-imports\nimport { isContinuous, isDiscrete } from '@visactor/vscale';\nimport type { ICartesianSeries } from '../../../series';\nimport type { ILayoutPoint, StringOrNumber } from '../../../typings';\nimport type { IBound, IHair } from '../base';\nimport { LayoutType } from '../config';\nimport type { AxisCurrentValueMap, ICrosshairInfoX, ICrosshairInfoY, ICrosshairLabelInfo } from '../interface';\nimport { getDatumByValue } from './common';\nimport { getAxisLabelOffset } from '../../axis/util';\nimport { isValid } from '@visactor/vutils';\nimport type { IAxis, ILinearAxis } from '../../axis';\nimport { getFormatFunction } from '../../util';\n\nexport const layoutByValue = (\n tag: number = LayoutType.ALL,\n series: ICartesianSeries,\n layoutStartPoint: ILayoutPoint,\n currValueX: AxisCurrentValueMap,\n currValueY: AxisCurrentValueMap,\n xHair: IHair,\n yHair: IHair,\n enableRemain: boolean = false,\n cacheXCrossHairInfo?: ICrosshairInfoX,\n cacheYCrossHairInfo?: ICrosshairInfoY\n) => {\n const layoutX = tag & LayoutType.VERTICAL;\n const layoutY = tag & LayoutType.HORIZONTAL;\n\n if (!layoutStartPoint) {\n layoutStartPoint = { x: 0, y: 0 };\n }\n\n // 计算x和y的坐标\n let xAxis = null;\n let yAxis = null;\n let x = 0;\n let y = 0;\n if (currValueX.size) {\n const item = Array.from(currValueX.values())[0];\n x = item.axis.getScale().scale(item.value) + item.axis.getLayoutStartPoint().x - layoutStartPoint.x;\n xAxis = item.axis;\n }\n if (currValueY.size) {\n const item = Array.from(currValueY.values())[0];\n y = item.axis.getScale().scale(item.value) + item.axis.getLayoutStartPoint().y - layoutStartPoint.y;\n yAxis = item.axis;\n }\n\n const xVisible = !!currValueX.size && Number.isFinite(x);\n const yVisible = !!currValueY.size && Number.isFinite(y);\n const xUseCache = enableRemain && !xVisible && isValid(cacheXCrossHairInfo);\n const yUseCache = enableRemain && !yVisible && isValid(cacheYCrossHairInfo);\n\n let xCrossHairInfo: ICrosshairInfoX;\n if (layoutX) {\n xCrossHairInfo = xUseCache\n ? cacheXCrossHairInfo\n : {\n height: 0,\n leftPos: 0,\n rightPos: 0,\n topPos: 0,\n x: 0,\n bottom: { visible: false, text: '', dx: 0, dy: 0 },\n top: { visible: false, text: '', dx: 0, dy: 0 },\n visible: xVisible,\n axis: xAxis\n };\n }\n\n let yCrossHairInfo: ICrosshairInfoY;\n if (layoutY) {\n yCrossHairInfo = yUseCache\n ? cacheYCrossHairInfo\n : {\n width: 0,\n leftPos: 0,\n topPos: 0,\n bottomPos: 0,\n y: 0,\n left: { visible: false, text: '', dx: 0, dy: 0 },\n right: { visible: false, text: '', dx: 0, dy: 0 },\n visible: yVisible,\n axis: yAxis\n };\n }\n\n let bandWidth;\n let offsetWidth: number = 0;\n let bandHeight;\n let offsetHeight: number = 0;\n\n // 计算x轴和y轴的数据,只允许最多一对x和一对y\n if (xHair) {\n currValueX.forEach(({ axis, value }) => {\n value = value ?? '';\n let niceLabelFormatter: (value: StringOrNumber) => StringOrNumber = null;\n const xScale = axis.getScale();\n if (isDiscrete(xScale.type)) {\n bandWidth = (xScale as BandScale).bandwidth();\n\n if (bandWidth === 0 && (xScale as BandScale).step) {\n offsetWidth = (xScale as BandScale).step();\n }\n } else if (isContinuous(xScale.type)) {\n const fieldX = series.fieldX[0];\n const fieldX2 = series.fieldX2;\n const datum = getDatumByValue(series.getViewData().latestData, +value, fieldX, fieldX2);\n if (datum) {\n const startX = series.dataToPositionX(datum);\n if (fieldX2) {\n bandWidth = Math.abs(startX - series.dataToPositionX1(datum));\n value = `${datum[fieldX]} ~ ${datum[fieldX2]}`;\n } else {\n bandWidth = 1;\n }\n x = startX;\n }\n niceLabelFormatter = (axis as ILinearAxis).niceLabelFormatter;\n }\n if (xCrossHairInfo && xHair.label?.visible && !xUseCache) {\n const labelOffset = getAxisLabelOffset(axis.getSpec());\n if (axis.getOrient() === 'bottom') {\n xCrossHairInfo.bottom.visible = true;\n xCrossHairInfo.bottom.defaultFormatter = niceLabelFormatter;\n xCrossHairInfo.bottom.text = value;\n xCrossHairInfo.bottom.dx = 0;\n xCrossHairInfo.bottom.dy = labelOffset;\n } else if (axis.getOrient() === 'top') {\n xCrossHairInfo.top.visible = true;\n xCrossHairInfo.top.defaultFormatter = niceLabelFormatter;\n xCrossHairInfo.top.text = value;\n xCrossHairInfo.top.dx = 0;\n xCrossHairInfo.top.dy = -labelOffset;\n }\n }\n });\n }\n\n if (yHair) {\n currValueY.forEach(({ axis, value }) => {\n value = value ?? '';\n let niceLabelFormatter: (value: StringOrNumber) => StringOrNumber = null;\n const yScale = axis.getScale();\n if (isDiscrete(yScale.type)) {\n bandHeight = (yScale as BandScale).bandwidth();\n\n if (bandHeight === 0 && (yScale as BandScale).step) {\n offsetHeight = (yScale as BandScale).step();\n }\n } else if (isContinuous(yScale.type)) {\n const fieldY = series.fieldY[0];\n const fieldY2 = series.fieldY2;\n const datum = getDatumByValue(series.getViewData().latestData, +value, fieldY, fieldY2);\n if (datum) {\n const startY = series.dataToPositionY(datum);\n if (fieldY2) {\n bandHeight = Math.abs(startY - series.dataToPositionY1(datum));\n value = `${datum[fieldY]} ~ ${datum[fieldY2]}`;\n } else {\n bandHeight = 1;\n }\n y = startY;\n }\n niceLabelFormatter = (axis as ILinearAxis).niceLabelFormatter;\n }\n if (yCrossHairInfo && yHair.label?.visible && !yUseCache) {\n const labelOffset = getAxisLabelOffset(axis.getSpec());\n if (axis.getOrient() === 'left') {\n yCrossHairInfo.left.visible = true;\n yCrossHairInfo.left.defaultFormatter = niceLabelFormatter;\n yCrossHairInfo.left.text = value;\n yCrossHairInfo.left.dx = -labelOffset;\n yCrossHairInfo.left.dy = 0;\n } else if (axis.getOrient() === 'right') {\n yCrossHairInfo.right.visible = true;\n yCrossHairInfo.right.defaultFormatter = niceLabelFormatter;\n yCrossHairInfo.right.text = value;\n yCrossHairInfo.right.dx = labelOffset;\n yCrossHairInfo.right.dy = 0;\n }\n }\n });\n }\n\n if (xCrossHairInfo && !xUseCache) {\n const xRegion = { x1: Infinity, y1: Infinity, x2: -Infinity, y2: -Infinity };\n setRegionArea(xRegion, currValueX);\n xCrossHairInfo.leftPos = xRegion.x1;\n xCrossHairInfo.rightPos = xRegion.x2;\n xCrossHairInfo.topPos = xRegion.y1;\n xCrossHairInfo.height = xRegion.y2 - xRegion.y1;\n xCrossHairInfo.x = x + layoutStartPoint.x;\n\n if (xHair && xHair.label) {\n const { top, bottom } = xCrossHairInfo;\n if (top.visible) {\n setFormattedCrosshairLabel(top, 'top', xHair.label);\n }\n if (bottom.visible) {\n setFormattedCrosshairLabel(bottom, 'bottom', xHair.label);\n }\n }\n }\n\n if (yCrossHairInfo && !yUseCache) {\n const yRegion = { x1: Infinity, y1: Infinity, x2: -Infinity, y2: -Infinity };\n setRegionArea(yRegion, currValueY);\n yCrossHairInfo.leftPos = yRegion.x1;\n yCrossHairInfo.topPos = yRegion.y1;\n yCrossHairInfo.bottomPos = yRegion.y2;\n yCrossHairInfo.width = yRegion.x2 - yRegion.x1;\n yCrossHairInfo.y = y + layoutStartPoint.y;\n\n if (yHair && yHair.label) {\n const { left, right } = yCrossHairInfo;\n if (left.visible) {\n setFormattedCrosshairLabel(left, 'left', yHair.label);\n }\n if (right.visible) {\n setFormattedCrosshairLabel(right, 'right', yHair.label);\n }\n }\n }\n\n return {\n x: layoutX && xCrossHairInfo ? xCrossHairInfo : undefined,\n y: layoutY && yCrossHairInfo ? yCrossHairInfo : undefined,\n offsetWidth,\n offsetHeight,\n bandWidth: bandWidth ?? 0,\n bandHeight: bandHeight ?? 0\n };\n};\n\nconst setFormattedCrosshairLabel = (labelInfo: ICrosshairLabelInfo, position: string, labelSpec: IHair['label']) => {\n const { formatMethod, formatter } = labelSpec;\n const { formatFunc, args } = getFormatFunction(formatMethod, formatter, labelInfo.text, {\n label: labelInfo.text,\n position\n });\n if (formatFunc) {\n labelInfo.text = formatFunc(...args);\n } else if (labelInfo.defaultFormatter) {\n labelInfo.text = labelInfo.defaultFormatter(labelInfo.text);\n }\n};\n\n// 计算x轴和y轴对应的region区域\nconst setRegionArea = (outRegion: IBound, currentValue: AxisCurrentValueMap) => {\n currentValue.forEach(({ axis }) => {\n const regions = axis.getRegions();\n regions.forEach(r => {\n outRegion.x1 = Math.min(outRegion.x1, r.getLayoutStartPoint().x);\n outRegion.y1 = Math.min(outRegion.y1, r.getLayoutStartPoint().y);\n outRegion.x2 = Math.max(outRegion.x2, r.getLayoutStartPoint().x + r.getLayoutRect().width);\n outRegion.y2 = Math.max(outRegion.y2, r.getLayoutStartPoint().y + r.getLayoutRect().height);\n });\n });\n};\n\nexport const layoutVerticalCrosshair = (\n xHair: IHair,\n crosshairInfo: ICrosshairInfoX,\n bandWidth: number,\n offsetWidth: number\n) => {\n const { x, topPos, height } = crosshairInfo;\n\n // 外部设置的size\n const type = xHair.type;\n let positionAttribute;\n if (type === 'line') {\n positionAttribute = {\n visible: true,\n start: { x: x + bandWidth / 2, y: topPos },\n end: { x: x + bandWidth / 2, y: topPos + height }\n };\n } else if (type === 'rect') {\n const extend = getRectSize(xHair, bandWidth, crosshairInfo.axis);\n const { leftPos, rightPos } = crosshairInfo;\n\n positionAttribute = {\n visible: true,\n start: { x: Math.max(x - extend / 2 - offsetWidth / 2, leftPos), y: topPos },\n end: { x: Math.min(x + bandWidth + extend / 2 + offsetWidth / 2, rightPos), y: topPos + height }\n };\n }\n\n return positionAttribute;\n};\n\nexport const layoutHorizontalCrosshair = (\n yHair: IHair,\n crosshairInfo: ICrosshairInfoY,\n bandHeight: number,\n offsetHeight: number\n) => {\n const { leftPos, width, y } = crosshairInfo;\n\n // 外部设置的size\n const type = yHair.type;\n let positionAttribute;\n if (type === 'line') {\n positionAttribute = {\n visible: true,\n start: { x: leftPos, y: y + bandHeight / 2 },\n end: { x: leftPos + width, y: y + bandHeight / 2 }\n };\n } else if (type === 'rect') {\n const extend = getRectSize(yHair, bandHeight, crosshairInfo.axis);\n const { topPos, bottomPos } = crosshairInfo;\n\n positionAttribute = {\n visible: true,\n start: { x: leftPos, y: Math.max(y - extend / 2 - offsetHeight / 2, topPos) },\n end: { x: leftPos + width, y: Math.min(y + bandHeight + extend / 2 + offsetHeight / 2, bottomPos) }\n };\n }\n\n return positionAttribute;\n};\n\nconst getRectSize = (hair: IHair, bandSize: number, axis: IAxis) => {\n // 外部设置的size\n let extend = 0;\n if (hair.style?.sizePercent) {\n extend = (hair.style.sizePercent - 1) * bandSize;\n } else if (typeof hair.style?.size === 'number') {\n extend = hair.style.size - bandSize;\n } else if (typeof hair.style?.size === 'function') {\n const axisRect = axis.getLayoutRect();\n extend = hair.style.size(axisRect, axis) - bandSize;\n }\n\n return extend;\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/component/crosshair/utils/cartesian.ts"],"names":[],"mappings":"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","file":"cartesian.js","sourcesContent":["import type { BandScale } from '@visactor/vscale';\n// eslint-disable-next-line no-duplicate-imports\nimport { isContinuous, isDiscrete } from '@visactor/vscale';\nimport type { ICartesianSeries } from '../../../series';\nimport type { ILayoutPoint, StringOrNumber } from '../../../typings';\nimport type {\n AxisCurrentValueMap,\n CrossHairStateByField,\n CrossHairStateItem,\n IBound,\n ICrosshairInfo,\n ICrosshairLabelInfo,\n IHair\n} from '../interface';\nimport { getDatumByValue } from './common';\nimport { getAxisLabelOffset } from '../../axis/util';\nimport { isValid } from '@visactor/vutils';\nimport type { IAxis, ILinearAxis } from '../../axis';\nimport { getFormatFunction } from '../../util';\n\nexport const layoutByValue = (\n stateByField: CrossHairStateByField,\n series: ICartesianSeries,\n layoutStartPoint: ILayoutPoint,\n enableRemain: boolean = false\n) => {\n if (!layoutStartPoint) {\n layoutStartPoint = { x: 0, y: 0 };\n }\n\n Object.keys(stateByField).forEach(field => {\n const { currentValue, cacheInfo, labelsComp, attributes, coordKey } = stateByField[field];\n let axis = null;\n let coord = 0;\n\n if (currentValue.size) {\n const item = Array.from(currentValue.values())[0];\n coord =\n item.axis.getScale().scale(item.datum) +\n item.axis.getLayoutStartPoint()[coordKey as 'x' | 'y'] -\n layoutStartPoint[coordKey as 'x' | 'y'];\n axis = item.axis;\n }\n const isVisible = !!currentValue.size && Number.isFinite(coord);\n const useCache = enableRemain && !isVisible && isValid(cacheInfo);\n const newCacheInfo: ICrosshairInfo = useCache\n ? cacheInfo\n : {\n coordRange: [0, 0],\n sizeRange: [0, 0],\n coord,\n labelsTextStyle: {},\n labels: labelsComp\n ? Object.keys(labelsComp).reduce((res: Record<string, ICrosshairLabelInfo>, labelKey: string) => {\n res[labelKey] = { visible: false, text: '', dx: 0, dy: 0 };\n\n return res;\n }, {})\n : null,\n visible: isVisible,\n axis\n };\n if (newCacheInfo) {\n newCacheInfo._isCache = useCache;\n }\n let bandSize;\n let offsetSize: number = 0;\n\n // 计算x轴和y轴的数据,只允许最多一对x和一对y\n if (attributes) {\n currentValue.forEach(({ axis, datum: value = '' }) => {\n let niceLabelFormatter: (value: StringOrNumber) => StringOrNumber = null;\n const scale = axis.getScale();\n if (isDiscrete(scale.type)) {\n bandSize = (scale as BandScale).bandwidth();\n\n if (bandSize === 0 && (scale as BandScale).step) {\n offsetSize = (scale as BandScale).step();\n }\n } else if (isContinuous(scale.type)) {\n const field1 = field === 'xField' ? series.fieldX[0] : series.fieldY[0]; // todo\n const field2 = field === 'xField' ? series.fieldX2 : series.fieldY2; // todo\n const datum = getDatumByValue(series.getViewData().latestData, +value, field1, field2);\n if (datum) {\n const startX = field === 'xField' ? series.dataToPositionX(datum) : series.dataToPositionY(datum);\n if (field2) {\n bandSize = Math.abs(\n startX - (field === 'xField' ? series.dataToPositionX1(datum) : series.dataToPositionY1(datum))\n );\n value = `${datum[field1]} ~ ${datum[field2]}`;\n } else {\n bandSize = 1;\n }\n coord = startX;\n }\n niceLabelFormatter = (axis as ILinearAxis).niceLabelFormatter;\n }\n if (newCacheInfo && attributes.label?.visible && !useCache) {\n const labelOffset = getAxisLabelOffset(axis.getSpec());\n const axisOrient = axis.getOrient();\n\n if (newCacheInfo.labels[axisOrient]) {\n newCacheInfo.labels[axisOrient].visible = true;\n newCacheInfo.labels[axisOrient].text = value;\n if (axisOrient === 'left') {\n newCacheInfo.labels[axisOrient].dx = -labelOffset;\n newCacheInfo.labelsTextStyle[axisOrient] = {\n textAlign: 'right',\n textBaseline: 'middle'\n };\n } else if (axisOrient === 'right') {\n newCacheInfo.labels[axisOrient].dx = labelOffset;\n newCacheInfo.labelsTextStyle[axisOrient] = {\n textAlign: 'left',\n textBaseline: 'middle'\n };\n } else if (axisOrient === 'top') {\n newCacheInfo.labels[axisOrient].y = 0;\n newCacheInfo.labels[axisOrient].dy = -labelOffset;\n newCacheInfo.labelsTextStyle[axisOrient] = {\n textAlign: 'center',\n textBaseline: 'bottom'\n };\n } else if (axisOrient === 'bottom') {\n newCacheInfo.labels[axisOrient].dy = labelOffset;\n newCacheInfo.labelsTextStyle[axisOrient] = {\n textAlign: 'center',\n textBaseline: 'top'\n };\n }\n newCacheInfo.labels[axisOrient].defaultFormatter = niceLabelFormatter;\n }\n }\n });\n }\n\n if (newCacheInfo && !useCache) {\n const region = { x1: Infinity, y1: Infinity, x2: -Infinity, y2: -Infinity };\n setRegionArea(region, currentValue);\n if (field === 'xField') {\n newCacheInfo.coordRange = [region.x1, region.x2];\n newCacheInfo.sizeRange = [region.y1, region.y2];\n newCacheInfo.coord = coord + layoutStartPoint.x;\n if (newCacheInfo.labels) {\n newCacheInfo.labels.top.y = region.y1;\n newCacheInfo.labels.bottom.y = region.y2;\n }\n } else {\n newCacheInfo.coordRange = [region.y1, region.y2]; // todo\n newCacheInfo.sizeRange = [region.x1, region.x2];\n newCacheInfo.coord = coord + layoutStartPoint.y;\n\n if (newCacheInfo.labels) {\n newCacheInfo.labels.left.x = region.x1;\n newCacheInfo.labels.right.x = region.x2;\n }\n }\n\n if (newCacheInfo.coord < newCacheInfo.coordRange[0] || newCacheInfo.coord > newCacheInfo.coordRange[1]) {\n newCacheInfo.visible = false;\n }\n\n if (attributes && attributes.label) {\n Object.keys(newCacheInfo.labels).forEach(labelKey => {\n if (newCacheInfo.labels[labelKey].visible) {\n setFormattedCrosshairLabel(newCacheInfo.labels[labelKey], labelKey, attributes.label);\n }\n });\n }\n }\n\n stateByField[field].bandSize = bandSize ?? 0;\n stateByField[field].offsetSize = offsetSize;\n stateByField[field].cacheInfo = newCacheInfo;\n });\n\n return stateByField;\n};\n\nconst setFormattedCrosshairLabel = (labelInfo: ICrosshairLabelInfo, position: string, labelSpec: IHair['label']) => {\n const { formatMethod, formatter } = labelSpec;\n const { formatFunc, args } = getFormatFunction(formatMethod, formatter, labelInfo.text, {\n label: labelInfo.text,\n position\n });\n if (formatFunc) {\n labelInfo.text = formatFunc(...args);\n } else if (labelInfo.defaultFormatter) {\n labelInfo.text = labelInfo.defaultFormatter(labelInfo.text);\n }\n};\n\n// 计算x轴和y轴对应的region区域\nconst setRegionArea = (outRegion: IBound, currentValue: AxisCurrentValueMap) => {\n currentValue.forEach(({ axis }) => {\n const regions = axis.getRegions();\n regions.forEach(r => {\n const { x, y } = r.getLayoutStartPoint();\n const { width, height } = r.getLayoutRect();\n\n outRegion.x1 = Math.min(outRegion.x1, x);\n outRegion.y1 = Math.min(outRegion.y1, y);\n outRegion.x2 = Math.max(outRegion.x2, x + width);\n outRegion.y2 = Math.max(outRegion.y2, y + height);\n });\n });\n};\n\nexport const layoutCrosshair = (stateItem: CrossHairStateItem) => {\n const { cacheInfo, attributes, bandSize, offsetSize, coordKey, anotherAxisKey } = stateItem;\n const { coord, sizeRange } = cacheInfo;\n\n // 外部设置的size\n const type = attributes.type;\n let positionAttribute;\n if (type === 'line') {\n const pos = coord + bandSize / 2;\n\n positionAttribute = {\n visible: true,\n start: { [coordKey]: pos, [anotherAxisKey]: sizeRange[0] },\n end: { [coordKey]: pos, [anotherAxisKey]: sizeRange[1] }\n };\n } else if (type === 'rect') {\n const extend = getRectSize(attributes, bandSize, cacheInfo.axis);\n const { coordRange } = cacheInfo;\n\n positionAttribute = {\n visible: true,\n start: {\n [coordKey]: Math.max(coord - extend / 2 - offsetSize / 2, coordRange[0]),\n [anotherAxisKey]: sizeRange[0]\n },\n end: {\n [coordKey]: Math.min(coord + bandSize + extend / 2 + offsetSize / 2, coordRange[1]),\n [anotherAxisKey]: sizeRange[1]\n }\n };\n }\n\n return positionAttribute;\n};\n\nconst getRectSize = (hair: IHair, bandSize: number, axis: IAxis) => {\n // 外部设置的size\n let extend = 0;\n if (hair.style?.sizePercent) {\n extend = (hair.style.sizePercent - 1) * bandSize;\n } else if (typeof hair.style?.size === 'number') {\n extend = hair.style.size - bandSize;\n } else if (typeof hair.style?.size === 'function') {\n const axisRect = axis.getLayoutRect();\n extend = hair.style.size(axisRect, axis) - bandSize;\n }\n\n return extend;\n};\n"]}
|
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
import type { IPolarSeries } from '../../../series';
|
|
2
|
-
import type {
|
|
3
|
-
import type {
|
|
4
|
-
export declare const layoutByValue: (
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
2
|
+
import type { CrossHairStateByField, CrossHairStateItem } from '../interface';
|
|
3
|
+
import type { ILayoutPoint } from '../../../typings/layout';
|
|
4
|
+
export declare const layoutByValue: (stateByField: CrossHairStateByField, series: IPolarSeries, enableRemain?: boolean) => void;
|
|
5
|
+
export declare const layoutCrosshair: (stateItem: CrossHairStateItem, layoutStartPoint: ILayoutPoint, smooth?: boolean) => {
|
|
6
|
+
center: {
|
|
7
|
+
x: number;
|
|
8
|
+
y: number;
|
|
9
|
+
};
|
|
10
10
|
innerRadius: number;
|
|
11
11
|
radius: number;
|
|
12
12
|
startAngle: number;
|
|
13
13
|
endAngle: number;
|
|
14
14
|
start?: undefined;
|
|
15
15
|
end?: undefined;
|
|
16
|
+
sides?: undefined;
|
|
16
17
|
} | {
|
|
17
18
|
start: {
|
|
18
19
|
x: number;
|
|
@@ -27,11 +28,17 @@ export declare const layoutAngleCrosshair: (angleHair: IHair, crosshairInfo: IPo
|
|
|
27
28
|
radius?: undefined;
|
|
28
29
|
startAngle?: undefined;
|
|
29
30
|
endAngle?: undefined;
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
center:
|
|
31
|
+
sides?: undefined;
|
|
32
|
+
} | {
|
|
33
|
+
center: {
|
|
34
|
+
x: number;
|
|
35
|
+
y: number;
|
|
36
|
+
};
|
|
33
37
|
startAngle: number;
|
|
34
38
|
endAngle: number;
|
|
35
39
|
radius: number;
|
|
36
40
|
sides: number;
|
|
41
|
+
innerRadius?: undefined;
|
|
42
|
+
start?: undefined;
|
|
43
|
+
end?: undefined;
|
|
37
44
|
};
|