@visactor/vchart 1.5.1-alpha.0 → 1.5.1-alpha.1
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 +2 -2
- package/build/index.js +19508 -12771
- package/build/index.min.js +2 -2
- package/build/tsconfig.tsbuildinfo +1 -1
- package/cjs/animation/config.js +5 -5
- package/cjs/animation/config.js.map +1 -1
- package/cjs/animation/spec.d.ts +1 -1
- package/cjs/animation/spec.js.map +1 -1
- package/cjs/chart/base-chart.js +2 -3
- package/cjs/chart/base-chart.js.map +1 -1
- package/cjs/compile/compiler.d.ts +1 -1
- package/cjs/compile/compiler.js.map +1 -1
- package/cjs/compile/interface/compiler.d.ts +1 -1
- package/cjs/compile/interface/compiler.js.map +1 -1
- package/cjs/component/axis/base-axis.d.ts +1 -1
- package/cjs/component/axis/base-axis.js.map +1 -1
- package/cjs/component/axis/interface.d.ts +1 -1
- package/cjs/component/axis/interface.js.map +1 -1
- package/cjs/component/base/base-component.d.ts +1 -1
- package/cjs/component/base/base-component.js.map +1 -1
- package/cjs/component/brush/brush.d.ts +1 -2
- package/cjs/component/brush/brush.js +10 -7
- package/cjs/component/brush/brush.js.map +1 -1
- package/cjs/component/brush/interface.d.ts +1 -1
- package/cjs/component/brush/interface.js.map +1 -1
- package/cjs/component/crosshair/cartesian.d.ts +1 -1
- package/cjs/component/crosshair/cartesian.js.map +1 -1
- package/cjs/component/crosshair/polar.d.ts +1 -1
- package/cjs/component/crosshair/polar.js.map +1 -1
- package/cjs/component/custom-mark/custom-mark.d.ts +1 -1
- package/cjs/component/custom-mark/custom-mark.js.map +1 -1
- package/cjs/component/data-zoom/data-filter-base-component.js +6 -4
- package/cjs/component/data-zoom/data-filter-base-component.js.map +1 -1
- package/cjs/component/data-zoom/data-zoom/data-zoom.d.ts +1 -1
- package/cjs/component/data-zoom/data-zoom/data-zoom.js.map +1 -1
- package/cjs/component/data-zoom/scroll-bar/scroll-bar.d.ts +1 -1
- package/cjs/component/data-zoom/scroll-bar/scroll-bar.js.map +1 -1
- package/cjs/component/geo/geo-coordinate.d.ts +1 -1
- package/cjs/component/geo/geo-coordinate.js.map +1 -1
- package/cjs/component/indicator/indicator.d.ts +1 -1
- package/cjs/component/indicator/indicator.js.map +1 -1
- package/cjs/component/interface/common.d.ts +1 -1
- package/cjs/component/interface/common.js.map +1 -1
- package/cjs/component/label/base-label.d.ts +1 -1
- package/cjs/component/label/base-label.js.map +1 -1
- package/cjs/component/label/label.d.ts +1 -1
- package/cjs/component/label/label.js.map +1 -1
- package/cjs/component/label/util.d.ts +1 -1
- package/cjs/component/label/util.js +2 -2
- package/cjs/component/label/util.js.map +1 -1
- package/cjs/component/legend/base-legend.d.ts +1 -1
- package/cjs/component/legend/base-legend.js.map +1 -1
- package/cjs/component/legend/util.d.ts +1 -1
- package/cjs/component/map-label/component.d.ts +2 -2
- package/cjs/component/map-label/component.js +6 -6
- package/cjs/component/map-label/component.js.map +1 -1
- package/cjs/component/map-label/interface.d.ts +1 -1
- package/cjs/component/map-label/interface.js.map +1 -1
- package/cjs/component/marker/base-marker.d.ts +1 -1
- package/cjs/component/marker/base-marker.js.map +1 -1
- package/cjs/component/marker/interface.d.ts +1 -1
- package/cjs/component/marker/interface.js.map +1 -1
- package/cjs/component/marker/mark-area/mark-area.js.map +1 -1
- package/cjs/component/marker/mark-line/mark-line.js.map +1 -1
- package/cjs/component/marker/mark-point/interface/theme.d.ts +1 -1
- package/cjs/component/marker/mark-point/interface/theme.js.map +1 -1
- package/cjs/component/marker/mark-point/mark-point.js.map +1 -1
- package/cjs/component/player/player.d.ts +1 -1
- package/cjs/component/player/player.js.map +1 -1
- package/cjs/component/player/utils/transform.js.map +1 -1
- package/cjs/component/title/interface/spec.d.ts +1 -1
- package/cjs/component/title/interface/spec.js.map +1 -1
- package/cjs/component/title/title.d.ts +1 -1
- package/cjs/component/title/title.js.map +1 -1
- package/cjs/component/tooltip/handler/base.d.ts +1 -1
- package/cjs/component/tooltip/handler/base.js.map +1 -1
- package/cjs/component/tooltip/handler/canvas/canvas-tooltip-handler.js.map +1 -1
- package/cjs/component/tooltip/handler/dom/model/shape-model.d.ts +1 -1
- package/cjs/component/tooltip/handler/dom/model/shape-model.js +2 -2
- package/cjs/component/tooltip/handler/dom/model/shape-model.js.map +1 -1
- package/cjs/component/tooltip/handler/interface/style.d.ts +1 -1
- package/cjs/component/tooltip/handler/interface/style.js.map +1 -1
- package/cjs/component/tooltip/handler/utils/attribute.js +3 -3
- package/cjs/component/tooltip/handler/utils/attribute.js.map +1 -1
- package/cjs/component/tooltip/interface/theme.d.ts +1 -1
- package/cjs/component/tooltip/interface/theme.js.map +1 -1
- package/cjs/component/tooltip/tooltip.d.ts +1 -1
- package/cjs/component/tooltip/tooltip.js.map +1 -1
- package/cjs/constant/event.d.ts +1 -2
- package/cjs/constant/event.js +1 -2
- package/cjs/constant/event.js.map +1 -1
- package/cjs/core/index.d.ts +1 -1
- package/cjs/core/index.js +1 -1
- package/cjs/core/index.js.map +1 -1
- package/cjs/core/interface.d.ts +1 -1
- package/cjs/core/interface.js.map +1 -1
- package/cjs/core/util.d.ts +1 -1
- package/cjs/core/vchart.d.ts +2 -2
- package/cjs/core/vchart.js.map +1 -1
- package/cjs/event/interface.d.ts +1 -8
- package/cjs/event/interface.js.map +1 -1
- package/cjs/index.d.ts +1 -1
- package/cjs/index.js +2 -2
- package/cjs/index.js.map +1 -1
- package/cjs/series/polar/animation.d.ts +2 -2
- package/cjs/series/polar/animation.js +3 -3
- package/cjs/series/polar/animation.js.map +1 -1
- package/cjs/series/polar/progress-like/progress-like.js +3 -3
- package/cjs/series/polar/progress-like/progress-like.js.map +1 -1
- package/cjs/series/progress/linear/linear.js +3 -3
- package/cjs/series/progress/linear/linear.js.map +1 -1
- package/cjs/series/radar/animation.js +2 -2
- package/cjs/series/radar/animation.js.map +1 -1
- package/cjs/series/scatter/scatter.d.ts +1 -3
- package/cjs/series/scatter/scatter.js +3 -9
- package/cjs/series/scatter/scatter.js.map +1 -1
- package/cjs/series/word-cloud/animation.js +2 -2
- package/cjs/series/word-cloud/animation.js.map +1 -1
- package/cjs/theme/interface.d.ts +1 -1
- package/cjs/theme/interface.js.map +1 -1
- package/cjs/typings/data.d.ts +0 -1
- package/cjs/typings/data.js.map +1 -1
- package/cjs/typings/line-stroke.js.map +1 -1
- package/cjs/typings/shape.d.ts +1 -1
- package/cjs/typings/shape.js.map +1 -1
- package/cjs/typings/visual.d.ts +1 -1
- package/cjs/typings/visual.js.map +1 -1
- package/cjs/util/text.d.ts +1 -1
- package/cjs/util/text.js.map +1 -1
- package/cjs/vchart-all.js +2 -3
- package/cjs/vchart-all.js.map +1 -1
- package/esm/animation/config.js +2 -2
- package/esm/animation/config.js.map +1 -1
- package/esm/animation/spec.d.ts +1 -1
- package/esm/animation/spec.js.map +1 -1
- package/esm/chart/base-chart.js +2 -3
- package/esm/chart/base-chart.js.map +1 -1
- package/esm/compile/compiler.d.ts +1 -1
- package/esm/compile/compiler.js.map +1 -1
- package/esm/compile/interface/compiler.d.ts +1 -1
- package/esm/compile/interface/compiler.js.map +1 -1
- package/esm/component/axis/base-axis.d.ts +1 -1
- package/esm/component/axis/base-axis.js.map +1 -1
- package/esm/component/axis/interface.d.ts +1 -1
- package/esm/component/axis/interface.js.map +1 -1
- package/esm/component/base/base-component.d.ts +1 -1
- package/esm/component/base/base-component.js.map +1 -1
- package/esm/component/brush/brush.d.ts +1 -2
- package/esm/component/brush/brush.js +10 -6
- package/esm/component/brush/brush.js.map +1 -1
- package/esm/component/brush/interface.d.ts +1 -1
- package/esm/component/brush/interface.js.map +1 -1
- package/esm/component/crosshair/cartesian.d.ts +1 -1
- package/esm/component/crosshair/cartesian.js.map +1 -1
- package/esm/component/crosshair/polar.d.ts +1 -1
- package/esm/component/crosshair/polar.js.map +1 -1
- package/esm/component/custom-mark/custom-mark.d.ts +1 -1
- package/esm/component/custom-mark/custom-mark.js.map +1 -1
- package/esm/component/data-zoom/data-filter-base-component.js +6 -4
- package/esm/component/data-zoom/data-filter-base-component.js.map +1 -1
- package/esm/component/data-zoom/data-zoom/data-zoom.d.ts +1 -1
- package/esm/component/data-zoom/data-zoom/data-zoom.js.map +1 -1
- package/esm/component/data-zoom/scroll-bar/scroll-bar.d.ts +1 -1
- package/esm/component/data-zoom/scroll-bar/scroll-bar.js.map +1 -1
- package/esm/component/geo/geo-coordinate.d.ts +1 -1
- package/esm/component/geo/geo-coordinate.js.map +1 -1
- package/esm/component/indicator/indicator.d.ts +1 -1
- package/esm/component/indicator/indicator.js.map +1 -1
- package/esm/component/interface/common.d.ts +1 -1
- package/esm/component/interface/common.js.map +1 -1
- package/esm/component/label/base-label.d.ts +1 -1
- package/esm/component/label/base-label.js.map +1 -1
- package/esm/component/label/label.d.ts +1 -1
- package/esm/component/label/label.js.map +1 -1
- package/esm/component/label/util.d.ts +1 -1
- package/esm/component/label/util.js +1 -1
- package/esm/component/label/util.js.map +1 -1
- package/esm/component/legend/base-legend.d.ts +1 -1
- package/esm/component/legend/base-legend.js.map +1 -1
- package/esm/component/legend/util.d.ts +1 -1
- package/esm/component/map-label/component.d.ts +2 -2
- package/esm/component/map-label/component.js +1 -1
- package/esm/component/map-label/component.js.map +1 -1
- package/esm/component/map-label/interface.d.ts +1 -1
- package/esm/component/map-label/interface.js.map +1 -1
- package/esm/component/marker/base-marker.d.ts +1 -1
- package/esm/component/marker/base-marker.js.map +1 -1
- package/esm/component/marker/interface.d.ts +1 -1
- package/esm/component/marker/interface.js.map +1 -1
- package/esm/component/marker/mark-area/mark-area.js.map +1 -1
- package/esm/component/marker/mark-line/mark-line.js.map +1 -1
- package/esm/component/marker/mark-point/interface/theme.d.ts +1 -1
- package/esm/component/marker/mark-point/interface/theme.js.map +1 -1
- package/esm/component/marker/mark-point/mark-point.js.map +1 -1
- package/esm/component/player/player.d.ts +1 -1
- package/esm/component/player/player.js.map +1 -1
- package/esm/component/player/utils/transform.js.map +1 -1
- package/esm/component/title/interface/spec.d.ts +1 -1
- package/esm/component/title/interface/spec.js.map +1 -1
- package/esm/component/title/title.d.ts +1 -1
- package/esm/component/title/title.js.map +1 -1
- package/esm/component/tooltip/handler/base.d.ts +1 -1
- package/esm/component/tooltip/handler/base.js.map +1 -1
- package/esm/component/tooltip/handler/canvas/canvas-tooltip-handler.js.map +1 -1
- package/esm/component/tooltip/handler/dom/model/shape-model.d.ts +1 -1
- package/esm/component/tooltip/handler/dom/model/shape-model.js +1 -1
- package/esm/component/tooltip/handler/dom/model/shape-model.js.map +1 -1
- package/esm/component/tooltip/handler/interface/style.d.ts +1 -1
- package/esm/component/tooltip/handler/interface/style.js.map +1 -1
- package/esm/component/tooltip/handler/utils/attribute.js +1 -1
- package/esm/component/tooltip/handler/utils/attribute.js.map +1 -1
- package/esm/component/tooltip/interface/theme.d.ts +1 -1
- package/esm/component/tooltip/interface/theme.js.map +1 -1
- package/esm/component/tooltip/tooltip.d.ts +1 -1
- package/esm/component/tooltip/tooltip.js.map +1 -1
- package/esm/constant/event.d.ts +1 -2
- package/esm/constant/event.js +1 -2
- package/esm/constant/event.js.map +1 -1
- package/esm/core/index.d.ts +1 -1
- package/esm/core/index.js +1 -1
- package/esm/core/index.js.map +1 -1
- package/esm/core/interface.d.ts +1 -1
- package/esm/core/interface.js.map +1 -1
- package/esm/core/util.d.ts +1 -1
- package/esm/core/vchart.d.ts +2 -2
- package/esm/core/vchart.js.map +1 -1
- package/esm/event/interface.d.ts +1 -8
- package/esm/event/interface.js.map +1 -1
- package/esm/index.d.ts +1 -1
- package/esm/index.js +1 -1
- package/esm/index.js.map +1 -1
- package/esm/series/polar/animation.d.ts +2 -2
- package/esm/series/polar/animation.js +1 -1
- package/esm/series/polar/animation.js.map +1 -1
- package/esm/series/polar/progress-like/progress-like.js +1 -1
- package/esm/series/polar/progress-like/progress-like.js.map +1 -1
- package/esm/series/progress/linear/linear.js +1 -1
- package/esm/series/progress/linear/linear.js.map +1 -1
- package/esm/series/radar/animation.js +1 -1
- package/esm/series/radar/animation.js.map +1 -1
- package/esm/series/scatter/scatter.d.ts +1 -3
- package/esm/series/scatter/scatter.js +4 -9
- package/esm/series/scatter/scatter.js.map +1 -1
- package/esm/series/word-cloud/animation.js +1 -1
- package/esm/series/word-cloud/animation.js.map +1 -1
- package/esm/theme/interface.d.ts +1 -1
- package/esm/theme/interface.js.map +1 -1
- package/esm/typings/data.d.ts +0 -1
- package/esm/typings/data.js.map +1 -1
- package/esm/typings/line-stroke.js.map +1 -1
- package/esm/typings/shape.d.ts +1 -1
- package/esm/typings/shape.js.map +1 -1
- package/esm/typings/visual.d.ts +1 -1
- package/esm/typings/visual.js.map +1 -1
- package/esm/util/text.d.ts +1 -1
- package/esm/util/text.js.map +1 -1
- package/esm/vchart-all.js +1 -4
- package/esm/vchart-all.js.map +1 -1
- package/package.json +14 -15
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/component/geo/geo-coordinate.ts"],"names":[],"mappings":"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","file":"geo-coordinate.js","sourcesContent":["/* eslint-disable no-duplicate-imports */\nimport type { IPoint } from '../../typings/coordinate';\nimport { Projection } from './projection';\nimport type { IEffect, IModelLayoutOption, IModelRenderOption, ILayoutItem } from '../../model/interface';\nimport type { IComponentOption } from '../interface';\nimport { ComponentTypeEnum } from '../interface';\nimport { BaseComponent } from '../base';\nimport type { IGeoRegionSpec, IRegion, IRegionSpec } from '../../region/interface';\nimport { eachSeries, isNil, mergeSpec } from '../../util';\nimport { ChartEvent, PREFIX } from '../../constant/index';\nimport type { ICartesianSeries, IGeoSeries } from '../../series/interface';\nimport { SeriesTypeEnum } from '../../series/interface/type';\nimport type { IGeoCoordinate, IGeoCoordinateHelper, IGeoCoordinateSpec, IProjectionSpec } from './interface';\nimport type { BaseEventParams, ExtendEventParam, PanEventParam, ZoomEventParam } from '../../event/interface';\nimport type { IChartSpec, StringOrNumber } from '../../typings';\nimport type { IZoomable } from '../../interaction/zoom/zoomable';\nimport { Zoomable } from '../../interaction/zoom/zoomable';\nimport { isValid, mixin } from '@visactor/vutils';\nimport { DEFAULT_MAP_LOOK_UP_KEY } from '../../data/transforms/map';\nimport type { IGroup } from '@visactor/vrender-core';\n\nexport function projectionName(key: string, id: number) {\n return `${PREFIX}_${id}_${key}`;\n}\nexport class GeoCoordinate extends BaseComponent<IGeoRegionSpec> implements IGeoCoordinate {\n static type = ComponentTypeEnum.geoCoordinate;\n type = ComponentTypeEnum.geoCoordinate;\n name: string = ComponentTypeEnum.geoCoordinate;\n\n layoutType: ILayoutItem['layoutType'] = 'absolute';\n\n _longitudeField?: string;\n get longitudeField() {\n return this._longitudeField;\n }\n\n _latitudeField?: string;\n get latitudeField() {\n return this._latitudeField;\n }\n\n protected _projectionSpec: IProjectionSpec = {\n name: projectionName(this.type, this.id),\n type: 'mercator'\n };\n get projectionSpec() {\n return this._projectionSpec;\n }\n setProjection(projectionSpec: IGeoCoordinateSpec['projection']) {\n this._projectionSpec = {\n ...projectionSpec,\n name: this._projectionSpec.name\n };\n }\n\n protected _projection!: Projection;\n\n protected _centerCache: Map<StringOrNumber, { x: number; y: number }>;\n\n private _actualScale = 1;\n\n getZoom() {\n return this._actualScale;\n }\n\n private _evaluated = false;\n private _lastHeight = 0;\n private _lastWidth = 0;\n\n static createComponent(spec: IChartSpec, options: IComponentOption) {\n if (isNil(spec)) {\n return null;\n }\n const result: IGeoCoordinate[] = [];\n spec.region.forEach((r: IRegionSpec, i: number) => {\n if (r.coordinate === 'geo') {\n // 去除 padding 配置,避免重复计算\n const spec = { ...r, padding: 0 } as any;\n const c = new GeoCoordinate(spec, options);\n // FIXME: hack,regions的关联关系不应该在具体的component中处理\n c._regions = options.getRegionsInIndex([i]);\n result.push(c);\n }\n });\n return result;\n }\n\n effect: IEffect = {\n scaleUpdate: () => {\n this.coordinateHelper();\n }\n };\n\n setAttrFromSpec() {\n super.setAttrFromSpec();\n\n if (this._spec.roam) {\n (this as unknown as IZoomable).initZoomable(this.event, this._option.mode);\n }\n\n this._projectionSpec = mergeSpec(this._projectionSpec, this._spec.projection);\n if (this._projectionSpec.zoom > this._spec.zoomLimit?.max) {\n this._projectionSpec.zoom = this._spec.zoomLimit.max;\n }\n if (this._projectionSpec.zoom < this._spec.zoomLimit?.min) {\n this._projectionSpec.zoom = this._spec.zoomLimit.min;\n }\n\n this._actualScale = this._projectionSpec.zoom ?? 1;\n this._longitudeField = this._spec.longitudeField;\n this._latitudeField = this._spec.latitudeField;\n }\n\n // life cycle\n created() {\n super.created();\n this.initProjection();\n this.coordinateHelper();\n this.initEvent();\n this._initCenterCache();\n // FIXME: 这里是在开启缩放时,处理关联的symbol等mark,在地图缩放时应该同步缩放\n // this.rescaleMark();\n }\n\n private _handleChartZoom = (\n params: { zoomDelta: number; zoomX?: number; zoomY?: number },\n event?: BaseEventParams['event']\n ) => {\n let scale = params.zoomDelta;\n // check if the next scale will outrange\n const _lastActualScale = this._actualScale;\n this._actualScale *= scale;\n if (this._actualScale < this._spec.zoomLimit?.min) {\n this._actualScale = this._spec.zoomLimit?.min;\n scale = this._spec.zoomLimit?.min / _lastActualScale;\n } else if (this._actualScale > this._spec.zoomLimit?.max) {\n this._actualScale = this._spec.zoomLimit?.max;\n scale = this._spec.zoomLimit?.max / _lastActualScale;\n }\n if (event) {\n (event as any).zoomDelta = scale;\n }\n this.zoom(scale, [params.zoomX, params.zoomY]);\n return scale;\n };\n\n dispatchZoom(zoomDelta: number, center?: { x: number; y: number }) {\n const scaleCenter = center || {\n x: this.getLayoutStartPoint().x + this.getLayoutRect().width / 2,\n y: this.getLayoutStartPoint().y + this.getLayoutRect().height / 2\n };\n const scale = this._handleChartZoom({ zoomDelta, zoomX: scaleCenter.x, zoomY: scaleCenter.y });\n if (scale !== 1) {\n this.event.emit('zoom', {\n scale,\n scaleCenter,\n model: this\n } as unknown as ExtendEventParam);\n }\n }\n\n initEvent() {\n this.event.on(\n ChartEvent.scaleUpdate,\n { filter: ({ model }) => model?.id === this.id },\n this.effect.scaleUpdate.bind(this)\n );\n\n if (this._spec.roam) {\n (this as unknown as IZoomable).initZoomEventOfRegions(this._regions, null, this._handleChartZoom);\n (this as unknown as IZoomable).initDragEventOfRegions(this._regions, () => true, this.pan);\n\n this._regions.forEach(r => {\n r.getSeries().forEach(s => {\n s.event.on('zoom', e => {\n s.handleZoom(e as ZoomEventParam);\n return true;\n });\n\n s.event.on('panmove', e => {\n s.handlePan(e as PanEventParam);\n return true;\n });\n });\n });\n }\n }\n\n initProjection() {\n this._projection = new Projection(this._projectionSpec);\n if (this._projection.projection === null) {\n this._option?.onError('unsupported projection type!');\n return;\n }\n }\n\n coordinateHelper() {\n const helper: IGeoCoordinateHelper = {\n longitudeField: this._longitudeField,\n latitudeField: this._latitudeField,\n dataToPosition: this.dataToPosition.bind(this),\n dataToLongitude: this.dataToLongitude.bind(this),\n dataToLatitude: this.dataToLatitude.bind(this),\n shape: this.shape.bind(this),\n getCoordinateId: () => this.id\n };\n\n this._regions.forEach(r => {\n r.getSeries().forEach(s => {\n if (s.type === SeriesTypeEnum.map) {\n (s as IGeoSeries).setCoordinateHelper(helper);\n } else {\n // 散点地图\n (s as ICartesianSeries).setXAxisHelper({\n ...helper,\n isContinuous: true,\n dataToPosition: (values: any[], option) => {\n let value = values[0];\n if (isNil(value) && option?.datum) {\n const nameFieldValue = option.datum[(s as ICartesianSeries).getDimensionField()[0]];\n value = this._centerCache.get(nameFieldValue)?.x;\n }\n return this.dataToLongitude(value);\n },\n valueToPosition: (value: any, option) => {\n if (isNil(value) && option?.datum) {\n const nameFieldValue = option.datum[(s as ICartesianSeries).getDimensionField()[0]];\n value = this._centerCache.get(nameFieldValue)?.x;\n }\n return this.dataToLongitude(value);\n },\n getFields: () => [this._longitudeField],\n getAxisType: () => this.type,\n getAxisId: () => this.id,\n isInverse: () => false\n });\n (s as unknown as ICartesianSeries).setYAxisHelper({\n ...helper,\n isContinuous: true,\n dataToPosition: (values: any[], option) => {\n let value = values[0];\n if (isNil(value) && option?.datum) {\n const nameFieldValue = option.datum[(s as ICartesianSeries).getDimensionField()[0]];\n value = this._centerCache.get(nameFieldValue)?.y;\n }\n return this.dataToLatitude(value);\n },\n valueToPosition: (value: any, option) => {\n if (isNil(value) && option?.datum) {\n const nameFieldValue = option.datum[(s as ICartesianSeries).getDimensionField()[0]];\n value = this._centerCache.get(nameFieldValue)?.y;\n }\n return this.dataToLatitude(value);\n },\n getFields: () => [this._latitudeField],\n getAxisType: () => this.type,\n getAxisId: () => this.id,\n isInverse: () => false\n });\n }\n });\n });\n }\n\n onLayoutEnd(ctx: IModelLayoutOption) {\n this.setLayoutRect(this._regions[0].getLayoutRect());\n this.setLayoutStartPosition(this._regions[0].getLayoutStartPoint());\n const { width, height } = this.getLayoutRect();\n if (!this._evaluated) {\n const { translate, scale, center } = this.evaluateProjection([0, 0], [width, height]);\n translate && this._projection.translate(translate);\n scale && this._projection.scale(scale);\n center && this._projection.center(center);\n this._evaluated = true;\n } else {\n const dx = (width - this._lastWidth) / 2;\n const dy = (height - this._lastHeight) / 2;\n this.pan([dx, dy]);\n eachSeries(this._regions, s => {\n // 其他系列会根据 projection 进行 encode.x/y 上的位置更新\n // 只有地图系列,位置不依赖 encode,而是通过 translate 进行更新\n if (s.type === SeriesTypeEnum.map) {\n s.handlePan({ delta: [dx, dy] });\n }\n });\n }\n this._lastWidth = width;\n this._lastHeight = height;\n\n super.onLayoutEnd(ctx);\n }\n onRender(ctx: IModelRenderOption) {\n // do nothing\n }\n\n // region\n changeRegions(regions: IRegion[]): void {\n // do nothing\n }\n\n getVRenderComponents(): IGroup[] {\n return [];\n }\n\n // util\n protected collectFeatures() {\n const features: any[] = [];\n this._regions.forEach(r => {\n r.getSeries().forEach(s => {\n if (s.type === SeriesTypeEnum.map) {\n features.push(...((s as unknown as IGeoSeries).getMapViewData()?.latestData ?? []));\n }\n });\n });\n return features;\n }\n\n // API\n dataToPosition(values: number[] = []): IPoint {\n const point = this._projection?.project([values[0], values[1]]);\n return {\n x: point?.[0],\n y: point?.[1]\n };\n }\n\n dataToLatitude(lat: number): number {\n const point = this._projection?.project([0, lat]);\n return point?.[1];\n }\n\n dataToLongitude(lon: number): number {\n const point = this._projection?.project([lon, 0]);\n return point?.[0];\n }\n\n // interaction\n zoom(p: number, anchor: [number, number] = [0, 0]) {\n let s = this._projection?.scale() ?? 0;\n const t = this._projection?.translate() ?? [0, 0];\n let t_x = t[0];\n let t_y = t[1];\n s = s * p;\n t_x -= (anchor[0] - t_x) * (p - 1);\n t_y -= (anchor[1] - t_y) * (p - 1);\n\n this._projection?.scale(s);\n this._projection?.translate([t_x, t_y]);\n }\n\n pan = (delta: [number, number] = [0, 0]) => {\n const t = this._projection?.translate() ?? [0, 0];\n let t_x = t[0];\n let t_y = t[1];\n t_x += delta[0];\n t_y += delta[1];\n this._projection?.translate([t_x, t_y]);\n };\n\n shape(datum?: any) {\n return this._projection.shape(datum);\n }\n\n /**\n * 根据像素坐标获取经纬度位置\n */\n invert(point: [number, number]) {\n return this._projection.invert(point);\n }\n\n private evaluateProjection(start: [number, number], size: [number, number]) {\n const evaluated = this._projection.evaluate(start, size, this.collectFeatures());\n let translate = evaluated.translate();\n const scale = evaluated.scale() * (this._projectionSpec.zoom ?? 1);\n const center = this._projectionSpec.center;\n center && (translate = [size[0] / 2, size[1] / 2]);\n return { translate, scale, center };\n }\n\n protected _initCenterCache() {\n if (!this._centerCache) {\n this._centerCache = new Map();\n }\n this._regions.forEach(r => {\n r.getSeries().forEach(s => {\n if (s.type === 'map') {\n const mapData = (s as IGeoSeries).getMapViewData()?.latestData ?? [];\n mapData.forEach((feature: any = {}) => {\n const key = feature[s.getDimensionField()[0]] || feature[DEFAULT_MAP_LOOK_UP_KEY];\n const { centroidX, centroidY } = feature;\n if (key && isValid(centroidX * centroidY)) {\n this._centerCache.set(key, { x: centroidX, y: centroidY });\n }\n });\n }\n });\n });\n }\n\n release(): void {\n super.release();\n this._centerCache && this._centerCache.clear();\n this._centerCache = null;\n }\n}\n\nmixin(GeoCoordinate, Zoomable);\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/component/geo/geo-coordinate.ts"],"names":[],"mappings":"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","file":"geo-coordinate.js","sourcesContent":["/* eslint-disable no-duplicate-imports */\nimport type { IPoint } from '../../typings/coordinate';\nimport { Projection } from './projection';\nimport type { IEffect, IModelLayoutOption, IModelRenderOption, ILayoutItem } from '../../model/interface';\nimport type { IComponentOption } from '../interface';\nimport { ComponentTypeEnum } from '../interface';\nimport { BaseComponent } from '../base';\nimport type { IGeoRegionSpec, IRegion, IRegionSpec } from '../../region/interface';\nimport { eachSeries, isNil, mergeSpec } from '../../util';\nimport { ChartEvent, PREFIX } from '../../constant/index';\nimport type { ICartesianSeries, IGeoSeries } from '../../series/interface';\nimport { SeriesTypeEnum } from '../../series/interface/type';\nimport type { IGeoCoordinate, IGeoCoordinateHelper, IGeoCoordinateSpec, IProjectionSpec } from './interface';\nimport type { BaseEventParams, ExtendEventParam, PanEventParam, ZoomEventParam } from '../../event/interface';\nimport type { IChartSpec, StringOrNumber } from '../../typings';\nimport type { IZoomable } from '../../interaction/zoom/zoomable';\nimport { Zoomable } from '../../interaction/zoom/zoomable';\nimport { isValid, mixin } from '@visactor/vutils';\nimport { DEFAULT_MAP_LOOK_UP_KEY } from '../../data/transforms/map';\nimport type { IGroup } from '@visactor/vrender';\n\nexport function projectionName(key: string, id: number) {\n return `${PREFIX}_${id}_${key}`;\n}\nexport class GeoCoordinate extends BaseComponent<IGeoRegionSpec> implements IGeoCoordinate {\n static type = ComponentTypeEnum.geoCoordinate;\n type = ComponentTypeEnum.geoCoordinate;\n name: string = ComponentTypeEnum.geoCoordinate;\n\n layoutType: ILayoutItem['layoutType'] = 'absolute';\n\n _longitudeField?: string;\n get longitudeField() {\n return this._longitudeField;\n }\n\n _latitudeField?: string;\n get latitudeField() {\n return this._latitudeField;\n }\n\n protected _projectionSpec: IProjectionSpec = {\n name: projectionName(this.type, this.id),\n type: 'mercator'\n };\n get projectionSpec() {\n return this._projectionSpec;\n }\n setProjection(projectionSpec: IGeoCoordinateSpec['projection']) {\n this._projectionSpec = {\n ...projectionSpec,\n name: this._projectionSpec.name\n };\n }\n\n protected _projection!: Projection;\n\n protected _centerCache: Map<StringOrNumber, { x: number; y: number }>;\n\n private _actualScale = 1;\n\n getZoom() {\n return this._actualScale;\n }\n\n private _evaluated = false;\n private _lastHeight = 0;\n private _lastWidth = 0;\n\n static createComponent(spec: IChartSpec, options: IComponentOption) {\n if (isNil(spec)) {\n return null;\n }\n const result: IGeoCoordinate[] = [];\n spec.region.forEach((r: IRegionSpec, i: number) => {\n if (r.coordinate === 'geo') {\n // 去除 padding 配置,避免重复计算\n const spec = { ...r, padding: 0 } as any;\n const c = new GeoCoordinate(spec, options);\n // FIXME: hack,regions的关联关系不应该在具体的component中处理\n c._regions = options.getRegionsInIndex([i]);\n result.push(c);\n }\n });\n return result;\n }\n\n effect: IEffect = {\n scaleUpdate: () => {\n this.coordinateHelper();\n }\n };\n\n setAttrFromSpec() {\n super.setAttrFromSpec();\n\n if (this._spec.roam) {\n (this as unknown as IZoomable).initZoomable(this.event, this._option.mode);\n }\n\n this._projectionSpec = mergeSpec(this._projectionSpec, this._spec.projection);\n if (this._projectionSpec.zoom > this._spec.zoomLimit?.max) {\n this._projectionSpec.zoom = this._spec.zoomLimit.max;\n }\n if (this._projectionSpec.zoom < this._spec.zoomLimit?.min) {\n this._projectionSpec.zoom = this._spec.zoomLimit.min;\n }\n\n this._actualScale = this._projectionSpec.zoom ?? 1;\n this._longitudeField = this._spec.longitudeField;\n this._latitudeField = this._spec.latitudeField;\n }\n\n // life cycle\n created() {\n super.created();\n this.initProjection();\n this.coordinateHelper();\n this.initEvent();\n this._initCenterCache();\n // FIXME: 这里是在开启缩放时,处理关联的symbol等mark,在地图缩放时应该同步缩放\n // this.rescaleMark();\n }\n\n private _handleChartZoom = (\n params: { zoomDelta: number; zoomX?: number; zoomY?: number },\n event?: BaseEventParams['event']\n ) => {\n let scale = params.zoomDelta;\n // check if the next scale will outrange\n const _lastActualScale = this._actualScale;\n this._actualScale *= scale;\n if (this._actualScale < this._spec.zoomLimit?.min) {\n this._actualScale = this._spec.zoomLimit?.min;\n scale = this._spec.zoomLimit?.min / _lastActualScale;\n } else if (this._actualScale > this._spec.zoomLimit?.max) {\n this._actualScale = this._spec.zoomLimit?.max;\n scale = this._spec.zoomLimit?.max / _lastActualScale;\n }\n if (event) {\n (event as any).zoomDelta = scale;\n }\n this.zoom(scale, [params.zoomX, params.zoomY]);\n return scale;\n };\n\n dispatchZoom(zoomDelta: number, center?: { x: number; y: number }) {\n const scaleCenter = center || {\n x: this.getLayoutStartPoint().x + this.getLayoutRect().width / 2,\n y: this.getLayoutStartPoint().y + this.getLayoutRect().height / 2\n };\n const scale = this._handleChartZoom({ zoomDelta, zoomX: scaleCenter.x, zoomY: scaleCenter.y });\n if (scale !== 1) {\n this.event.emit('zoom', {\n scale,\n scaleCenter,\n model: this\n } as unknown as ExtendEventParam);\n }\n }\n\n initEvent() {\n this.event.on(\n ChartEvent.scaleUpdate,\n { filter: ({ model }) => model?.id === this.id },\n this.effect.scaleUpdate.bind(this)\n );\n\n if (this._spec.roam) {\n (this as unknown as IZoomable).initZoomEventOfRegions(this._regions, null, this._handleChartZoom);\n (this as unknown as IZoomable).initDragEventOfRegions(this._regions, () => true, this.pan);\n\n this._regions.forEach(r => {\n r.getSeries().forEach(s => {\n s.event.on('zoom', e => {\n s.handleZoom(e as ZoomEventParam);\n return true;\n });\n\n s.event.on('panmove', e => {\n s.handlePan(e as PanEventParam);\n return true;\n });\n });\n });\n }\n }\n\n initProjection() {\n this._projection = new Projection(this._projectionSpec);\n if (this._projection.projection === null) {\n this._option?.onError('unsupported projection type!');\n return;\n }\n }\n\n coordinateHelper() {\n const helper: IGeoCoordinateHelper = {\n longitudeField: this._longitudeField,\n latitudeField: this._latitudeField,\n dataToPosition: this.dataToPosition.bind(this),\n dataToLongitude: this.dataToLongitude.bind(this),\n dataToLatitude: this.dataToLatitude.bind(this),\n shape: this.shape.bind(this),\n getCoordinateId: () => this.id\n };\n\n this._regions.forEach(r => {\n r.getSeries().forEach(s => {\n if (s.type === SeriesTypeEnum.map) {\n (s as IGeoSeries).setCoordinateHelper(helper);\n } else {\n // 散点地图\n (s as ICartesianSeries).setXAxisHelper({\n ...helper,\n isContinuous: true,\n dataToPosition: (values: any[], option) => {\n let value = values[0];\n if (isNil(value) && option?.datum) {\n const nameFieldValue = option.datum[(s as ICartesianSeries).getDimensionField()[0]];\n value = this._centerCache.get(nameFieldValue)?.x;\n }\n return this.dataToLongitude(value);\n },\n valueToPosition: (value: any, option) => {\n if (isNil(value) && option?.datum) {\n const nameFieldValue = option.datum[(s as ICartesianSeries).getDimensionField()[0]];\n value = this._centerCache.get(nameFieldValue)?.x;\n }\n return this.dataToLongitude(value);\n },\n getFields: () => [this._longitudeField],\n getAxisType: () => this.type,\n getAxisId: () => this.id,\n isInverse: () => false\n });\n (s as unknown as ICartesianSeries).setYAxisHelper({\n ...helper,\n isContinuous: true,\n dataToPosition: (values: any[], option) => {\n let value = values[0];\n if (isNil(value) && option?.datum) {\n const nameFieldValue = option.datum[(s as ICartesianSeries).getDimensionField()[0]];\n value = this._centerCache.get(nameFieldValue)?.y;\n }\n return this.dataToLatitude(value);\n },\n valueToPosition: (value: any, option) => {\n if (isNil(value) && option?.datum) {\n const nameFieldValue = option.datum[(s as ICartesianSeries).getDimensionField()[0]];\n value = this._centerCache.get(nameFieldValue)?.y;\n }\n return this.dataToLatitude(value);\n },\n getFields: () => [this._latitudeField],\n getAxisType: () => this.type,\n getAxisId: () => this.id,\n isInverse: () => false\n });\n }\n });\n });\n }\n\n onLayoutEnd(ctx: IModelLayoutOption) {\n this.setLayoutRect(this._regions[0].getLayoutRect());\n this.setLayoutStartPosition(this._regions[0].getLayoutStartPoint());\n const { width, height } = this.getLayoutRect();\n if (!this._evaluated) {\n const { translate, scale, center } = this.evaluateProjection([0, 0], [width, height]);\n translate && this._projection.translate(translate);\n scale && this._projection.scale(scale);\n center && this._projection.center(center);\n this._evaluated = true;\n } else {\n const dx = (width - this._lastWidth) / 2;\n const dy = (height - this._lastHeight) / 2;\n this.pan([dx, dy]);\n eachSeries(this._regions, s => {\n // 其他系列会根据 projection 进行 encode.x/y 上的位置更新\n // 只有地图系列,位置不依赖 encode,而是通过 translate 进行更新\n if (s.type === SeriesTypeEnum.map) {\n s.handlePan({ delta: [dx, dy] });\n }\n });\n }\n this._lastWidth = width;\n this._lastHeight = height;\n\n super.onLayoutEnd(ctx);\n }\n onRender(ctx: IModelRenderOption) {\n // do nothing\n }\n\n // region\n changeRegions(regions: IRegion[]): void {\n // do nothing\n }\n\n getVRenderComponents(): IGroup[] {\n return [];\n }\n\n // util\n protected collectFeatures() {\n const features: any[] = [];\n this._regions.forEach(r => {\n r.getSeries().forEach(s => {\n if (s.type === SeriesTypeEnum.map) {\n features.push(...((s as unknown as IGeoSeries).getMapViewData()?.latestData ?? []));\n }\n });\n });\n return features;\n }\n\n // API\n dataToPosition(values: number[] = []): IPoint {\n const point = this._projection?.project([values[0], values[1]]);\n return {\n x: point?.[0],\n y: point?.[1]\n };\n }\n\n dataToLatitude(lat: number): number {\n const point = this._projection?.project([0, lat]);\n return point?.[1];\n }\n\n dataToLongitude(lon: number): number {\n const point = this._projection?.project([lon, 0]);\n return point?.[0];\n }\n\n // interaction\n zoom(p: number, anchor: [number, number] = [0, 0]) {\n let s = this._projection?.scale() ?? 0;\n const t = this._projection?.translate() ?? [0, 0];\n let t_x = t[0];\n let t_y = t[1];\n s = s * p;\n t_x -= (anchor[0] - t_x) * (p - 1);\n t_y -= (anchor[1] - t_y) * (p - 1);\n\n this._projection?.scale(s);\n this._projection?.translate([t_x, t_y]);\n }\n\n pan = (delta: [number, number] = [0, 0]) => {\n const t = this._projection?.translate() ?? [0, 0];\n let t_x = t[0];\n let t_y = t[1];\n t_x += delta[0];\n t_y += delta[1];\n this._projection?.translate([t_x, t_y]);\n };\n\n shape(datum?: any) {\n return this._projection.shape(datum);\n }\n\n /**\n * 根据像素坐标获取经纬度位置\n */\n invert(point: [number, number]) {\n return this._projection.invert(point);\n }\n\n private evaluateProjection(start: [number, number], size: [number, number]) {\n const evaluated = this._projection.evaluate(start, size, this.collectFeatures());\n let translate = evaluated.translate();\n const scale = evaluated.scale() * (this._projectionSpec.zoom ?? 1);\n const center = this._projectionSpec.center;\n center && (translate = [size[0] / 2, size[1] / 2]);\n return { translate, scale, center };\n }\n\n protected _initCenterCache() {\n if (!this._centerCache) {\n this._centerCache = new Map();\n }\n this._regions.forEach(r => {\n r.getSeries().forEach(s => {\n if (s.type === 'map') {\n const mapData = (s as IGeoSeries).getMapViewData()?.latestData ?? [];\n mapData.forEach((feature: any = {}) => {\n const key = feature[s.getDimensionField()[0]] || feature[DEFAULT_MAP_LOOK_UP_KEY];\n const { centroidX, centroidY } = feature;\n if (key && isValid(centroidX * centroidY)) {\n this._centerCache.set(key, { x: centroidX, y: centroidY });\n }\n });\n }\n });\n });\n }\n\n release(): void {\n super.release();\n this._centerCache && this._centerCache.clear();\n this._centerCache = null;\n }\n}\n\nmixin(GeoCoordinate, Zoomable);\n"]}
|
|
@@ -5,7 +5,7 @@ import { BaseComponent } from '../base';
|
|
|
5
5
|
import type { IRegion } from '../../region/interface';
|
|
6
6
|
import type { IIndicator, IIndicatorSpec, IIndicatorTheme } from './interface';
|
|
7
7
|
import type { Maybe } from '../../typings';
|
|
8
|
-
import type { IGroup } from '@visactor/vrender
|
|
8
|
+
import type { IGroup } from '@visactor/vrender';
|
|
9
9
|
export declare class Indicator<T extends IIndicatorSpec> extends BaseComponent<T> implements IIndicator {
|
|
10
10
|
static speckey: string;
|
|
11
11
|
static type: ComponentTypeEnum;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/component/indicator/indicator.ts"],"names":[],"mappings":"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","file":"indicator.js","sourcesContent":["import { DataView } from '@visactor/vdataset';\nimport type { IComponentOption } from '../interface';\nimport { LayoutLevel, LayoutZIndex } from '../../constant';\n// eslint-disable-next-line no-duplicate-imports\nimport { ComponentTypeEnum } from '../interface';\nimport type { LayoutItem } from '../../model/layout-item';\nimport { BaseComponent } from '../base';\nimport type { IRegion } from '../../region/interface';\nimport type { IIndicator, IIndicatorItemSpec, IIndicatorSpec, IIndicatorTheme } from './interface';\nimport type { Maybe } from '../../typings';\nimport { isValid, isFunction, array, mergeSpec, eachSeries, transformToGraphic, getActualNumValue } from '../../util';\nimport { isEqual } from '@visactor/vutils';\nimport { indicatorMapper } from './util';\nimport type { IModel } from '../../model/interface';\nimport { registerDataSetInstanceTransform } from '../../data/register';\nimport { CompilableData } from '../../compile/data';\nimport { Indicator as IndicatorComponents } from '@visactor/vrender-components';\n// eslint-disable-next-line no-duplicate-imports\nimport type { IndicatorAttributes } from '@visactor/vrender-components';\nimport type { IGraphic, INode, IGroup } from '@visactor/vrender-core';\nimport type { IVisualScale, IVisualSpecStyle, VisualType, FunctionType } from '../../typings/visual';\n\nexport class Indicator<T extends IIndicatorSpec> extends BaseComponent<T> implements IIndicator {\n static speckey = 'indicator';\n static type = ComponentTypeEnum.indicator;\n type = ComponentTypeEnum.indicator;\n name: string = ComponentTypeEnum.indicator;\n\n layoutType: LayoutItem['layoutType'] = 'absolute';\n layoutZIndex: number = LayoutZIndex.Indicator;\n layoutLevel: number = LayoutLevel.Indicator;\n\n private _gap: number = 0;\n\n private _activeDatum: any = null;\n private _displayData!: CompilableData;\n\n private _title: IIndicatorItemSpec;\n private _content: IIndicatorItemSpec[];\n\n private _indicatorComponent: IndicatorComponents;\n private _cacheAttrs: IndicatorAttributes;\n\n protected declare _theme: Maybe<IIndicatorTheme>;\n\n static createComponent(spec: any, options: IComponentOption) {\n if (this.type !== Indicator.type) {\n return null;\n }\n const indicatorSpec = spec.indicator || options.defaultSpec;\n const indicators: IIndicator[] = array(indicatorSpec)\n .filter(s => s && s.visible !== false)\n .map((s, index) => new Indicator(s, { ...options, specIndex: index, specKey: Indicator.speckey }));\n return indicators;\n }\n\n created() {\n super.created();\n // data\n this.initData();\n // event\n this.initEvent();\n }\n\n setAttrFromSpec() {\n super.setAttrFromSpec();\n this._gap = this._spec.gap || 0;\n this._title = this._spec.title;\n this._content = array(this._spec.content);\n this._regions = this._option.getRegionsInUserIdOrIndex(array(this._spec.regionId), array(this._spec.regionIndex));\n }\n\n onRender(ctx: any): void {\n // do nothing\n }\n\n // region\n changeRegions(regions: IRegion[]): void {\n // do nothing\n }\n\n // event\n protected initEvent() {\n const trigger = this._spec.trigger;\n if (trigger === 'none') {\n return;\n }\n\n if (this._spec.trigger === 'hover') {\n this.event.on('hovered', params => {\n if (!params.model || this.isRelativeModel(params.model)) {\n this.updateDatum(params.value[0]);\n }\n });\n this.event.on('unhovered', params => {\n if (!params.model || this.isRelativeModel(params.model)) {\n this.updateDatum(null);\n }\n });\n } else {\n this.event.on('selected', params => {\n if (!params.model || this.isRelativeModel(params.model)) {\n this.updateDatum(params.value[0]);\n }\n });\n this.event.on('unselected', params => {\n if (!params.model || this.isRelativeModel(params.model)) {\n this.updateDatum(null);\n }\n });\n }\n }\n\n private updateDatum(datum: any) {\n this._activeDatum = datum;\n this._displayData.updateData();\n const attrs = this._getIndicatorAttrs();\n this._createOrUpdateIndicatorComponent(attrs);\n }\n\n // data\n private initData() {\n registerDataSetInstanceTransform(this._option.dataSet, 'indicatorFilter', indicatorMapper);\n const displayData = new DataView(this._option.dataSet);\n displayData.transform({\n type: 'indicatorFilter',\n options: {\n title: this._title,\n content: this._content,\n datum: () => this._activeDatum\n }\n });\n\n displayData.target.addListener('change', this.updateDatum.bind(this));\n\n this._displayData = new CompilableData(this._option, displayData);\n }\n\n updateLayoutAttribute(): void {\n const attrs = this._getIndicatorAttrs();\n this._createOrUpdateIndicatorComponent(attrs);\n\n super.updateLayoutAttribute();\n }\n\n private _getIndicatorAttrs() {\n const region = this._regions[0];\n const { width, height } = region.getLayoutRect();\n const { x, y } = region.getLayoutStartPoint();\n\n const contentComponentSpec: IIndicatorItemSpec[] = [];\n array(this._spec.content).forEach((eachItem: IIndicatorItemSpec) => {\n const contentSpec = mergeSpec({}, this._theme.content, eachItem);\n contentComponentSpec.push({\n visible: contentSpec.visible !== false && (contentSpec.field ? this._activeDatum !== null : true),\n space: contentSpec.space || this._gap,\n autoLimit: contentSpec.autoLimit,\n autoFit: contentSpec.autoFit,\n fitPercent: contentSpec.fitPercent,\n style: {\n ...transformToGraphic(contentSpec.style),\n text: this._createText(contentSpec.field, contentSpec.style.text)\n }\n });\n });\n\n return {\n visible: this._spec.visible !== false && (this._spec.fixed !== false || this._activeDatum !== null),\n size: {\n width: width,\n height: height\n },\n zIndex: this.layoutZIndex,\n x: x,\n y: y,\n dx: this._spec.offsetX ? getActualNumValue(this._spec.offsetX, this._computeLayoutRadius()) : 0,\n dy: this._spec.offsetY ? getActualNumValue(this._spec.offsetY, this._computeLayoutRadius()) : 0,\n limitRatio: this._spec.limitRatio || Infinity,\n title: {\n visible: this._spec.title.visible !== false && (!isValid(this._spec.title.field) || this._activeDatum !== null),\n space: this._spec.title.space || this._gap,\n autoLimit: this._spec.title.autoLimit,\n autoFit: this._spec.title.autoFit,\n fitPercent: this._spec.title.fitPercent,\n style: {\n ...transformToGraphic(this._spec.title.style),\n text: this._createText(this._spec.title.field, this._spec.title.style.text)\n }\n },\n content: contentComponentSpec\n } as IndicatorAttributes;\n }\n\n private _createOrUpdateIndicatorComponent(attrs: IndicatorAttributes): IndicatorComponents {\n if (this._indicatorComponent) {\n if (!isEqual(attrs, this._cacheAttrs)) {\n this._indicatorComponent.setAttributes(attrs);\n }\n } else {\n const container = this.getContainer();\n //FIXME:类型“IndicatorAttributes”的参数不能赋给类型“Required<IndicatorAttributes>”的参数\n const indicator = new IndicatorComponents(attrs as any);\n indicator.name = 'indicator';\n container.add(indicator as unknown as INode);\n this._indicatorComponent = indicator;\n this._indicatorComponent.on('*', (event: any, type: string) =>\n this._delegateEvent(this._indicatorComponent as unknown as IGraphic, event, type)\n );\n }\n this._cacheAttrs = attrs;\n return this._indicatorComponent;\n }\n\n private _createText(\n field: string | undefined,\n text:\n | string\n | number\n | string[]\n | IVisualScale\n | VisualType<string>[]\n | FunctionType<string | number | string[]>\n | IVisualSpecStyle<unknown, string | number | string[]>\n | undefined\n ) {\n if (field) {\n return this._activeDatum ? this._activeDatum[field] : '';\n }\n if (isFunction(text)) {\n return text(this._activeDatum, undefined) ?? '';\n }\n return text ?? '';\n }\n\n private _computeLayoutRadius() {\n const region = this._regions[0];\n const { width, height } = region.getLayoutRect();\n return Math.min(width / 2, height / 2);\n }\n\n private isRelativeModel(model: IModel) {\n return eachSeries(this._regions, s => model === s) || this._regions.includes(model as IRegion);\n }\n\n getVRenderComponents(): IGroup[] {\n return [this._indicatorComponent] as unknown as IGroup[];\n }\n\n clear(): void {\n this._cacheAttrs = null;\n super.clear();\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/component/indicator/indicator.ts"],"names":[],"mappings":"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","file":"indicator.js","sourcesContent":["import { DataView } from '@visactor/vdataset';\nimport type { IComponentOption } from '../interface';\nimport { LayoutLevel, LayoutZIndex } from '../../constant';\n// eslint-disable-next-line no-duplicate-imports\nimport { ComponentTypeEnum } from '../interface';\nimport type { LayoutItem } from '../../model/layout-item';\nimport { BaseComponent } from '../base';\nimport type { IRegion } from '../../region/interface';\nimport type { IIndicator, IIndicatorItemSpec, IIndicatorSpec, IIndicatorTheme } from './interface';\nimport type { Maybe } from '../../typings';\nimport { isValid, isFunction, array, mergeSpec, eachSeries, transformToGraphic, getActualNumValue } from '../../util';\nimport { isEqual } from '@visactor/vutils';\nimport { indicatorMapper } from './util';\nimport type { IModel } from '../../model/interface';\nimport { registerDataSetInstanceTransform } from '../../data/register';\nimport { CompilableData } from '../../compile/data';\nimport { Indicator as IndicatorComponents } from '@visactor/vrender-components';\n// eslint-disable-next-line no-duplicate-imports\nimport type { IndicatorAttributes } from '@visactor/vrender-components';\nimport type { IGraphic, IGroup, INode } from '@visactor/vrender';\nimport type { IVisualScale, IVisualSpecStyle, VisualType, FunctionType } from '../../typings/visual';\n\nexport class Indicator<T extends IIndicatorSpec> extends BaseComponent<T> implements IIndicator {\n static speckey = 'indicator';\n static type = ComponentTypeEnum.indicator;\n type = ComponentTypeEnum.indicator;\n name: string = ComponentTypeEnum.indicator;\n\n layoutType: LayoutItem['layoutType'] = 'absolute';\n layoutZIndex: number = LayoutZIndex.Indicator;\n layoutLevel: number = LayoutLevel.Indicator;\n\n private _gap: number = 0;\n\n private _activeDatum: any = null;\n private _displayData!: CompilableData;\n\n private _title: IIndicatorItemSpec;\n private _content: IIndicatorItemSpec[];\n\n private _indicatorComponent: IndicatorComponents;\n private _cacheAttrs: IndicatorAttributes;\n\n protected declare _theme: Maybe<IIndicatorTheme>;\n\n static createComponent(spec: any, options: IComponentOption) {\n if (this.type !== Indicator.type) {\n return null;\n }\n const indicatorSpec = spec.indicator || options.defaultSpec;\n const indicators: IIndicator[] = array(indicatorSpec)\n .filter(s => s && s.visible !== false)\n .map((s, index) => new Indicator(s, { ...options, specIndex: index, specKey: Indicator.speckey }));\n return indicators;\n }\n\n created() {\n super.created();\n // data\n this.initData();\n // event\n this.initEvent();\n }\n\n setAttrFromSpec() {\n super.setAttrFromSpec();\n this._gap = this._spec.gap || 0;\n this._title = this._spec.title;\n this._content = array(this._spec.content);\n this._regions = this._option.getRegionsInUserIdOrIndex(array(this._spec.regionId), array(this._spec.regionIndex));\n }\n\n onRender(ctx: any): void {\n // do nothing\n }\n\n // region\n changeRegions(regions: IRegion[]): void {\n // do nothing\n }\n\n // event\n protected initEvent() {\n const trigger = this._spec.trigger;\n if (trigger === 'none') {\n return;\n }\n\n if (this._spec.trigger === 'hover') {\n this.event.on('hovered', params => {\n if (!params.model || this.isRelativeModel(params.model)) {\n this.updateDatum(params.value[0]);\n }\n });\n this.event.on('unhovered', params => {\n if (!params.model || this.isRelativeModel(params.model)) {\n this.updateDatum(null);\n }\n });\n } else {\n this.event.on('selected', params => {\n if (!params.model || this.isRelativeModel(params.model)) {\n this.updateDatum(params.value[0]);\n }\n });\n this.event.on('unselected', params => {\n if (!params.model || this.isRelativeModel(params.model)) {\n this.updateDatum(null);\n }\n });\n }\n }\n\n private updateDatum(datum: any) {\n this._activeDatum = datum;\n this._displayData.updateData();\n const attrs = this._getIndicatorAttrs();\n this._createOrUpdateIndicatorComponent(attrs);\n }\n\n // data\n private initData() {\n registerDataSetInstanceTransform(this._option.dataSet, 'indicatorFilter', indicatorMapper);\n const displayData = new DataView(this._option.dataSet);\n displayData.transform({\n type: 'indicatorFilter',\n options: {\n title: this._title,\n content: this._content,\n datum: () => this._activeDatum\n }\n });\n\n displayData.target.addListener('change', this.updateDatum.bind(this));\n\n this._displayData = new CompilableData(this._option, displayData);\n }\n\n updateLayoutAttribute(): void {\n const attrs = this._getIndicatorAttrs();\n this._createOrUpdateIndicatorComponent(attrs);\n\n super.updateLayoutAttribute();\n }\n\n private _getIndicatorAttrs() {\n const region = this._regions[0];\n const { width, height } = region.getLayoutRect();\n const { x, y } = region.getLayoutStartPoint();\n\n const contentComponentSpec: IIndicatorItemSpec[] = [];\n array(this._spec.content).forEach((eachItem: IIndicatorItemSpec) => {\n const contentSpec = mergeSpec({}, this._theme.content, eachItem);\n contentComponentSpec.push({\n visible: contentSpec.visible !== false && (contentSpec.field ? this._activeDatum !== null : true),\n space: contentSpec.space || this._gap,\n autoLimit: contentSpec.autoLimit,\n autoFit: contentSpec.autoFit,\n fitPercent: contentSpec.fitPercent,\n style: {\n ...transformToGraphic(contentSpec.style),\n text: this._createText(contentSpec.field, contentSpec.style.text)\n }\n });\n });\n\n return {\n visible: this._spec.visible !== false && (this._spec.fixed !== false || this._activeDatum !== null),\n size: {\n width: width,\n height: height\n },\n zIndex: this.layoutZIndex,\n x: x,\n y: y,\n dx: this._spec.offsetX ? getActualNumValue(this._spec.offsetX, this._computeLayoutRadius()) : 0,\n dy: this._spec.offsetY ? getActualNumValue(this._spec.offsetY, this._computeLayoutRadius()) : 0,\n limitRatio: this._spec.limitRatio || Infinity,\n title: {\n visible: this._spec.title.visible !== false && (!isValid(this._spec.title.field) || this._activeDatum !== null),\n space: this._spec.title.space || this._gap,\n autoLimit: this._spec.title.autoLimit,\n autoFit: this._spec.title.autoFit,\n fitPercent: this._spec.title.fitPercent,\n style: {\n ...transformToGraphic(this._spec.title.style),\n text: this._createText(this._spec.title.field, this._spec.title.style.text)\n }\n },\n content: contentComponentSpec\n } as IndicatorAttributes;\n }\n\n private _createOrUpdateIndicatorComponent(attrs: IndicatorAttributes): IndicatorComponents {\n if (this._indicatorComponent) {\n if (!isEqual(attrs, this._cacheAttrs)) {\n this._indicatorComponent.setAttributes(attrs);\n }\n } else {\n const container = this.getContainer();\n //FIXME:类型“IndicatorAttributes”的参数不能赋给类型“Required<IndicatorAttributes>”的参数\n const indicator = new IndicatorComponents(attrs as any);\n indicator.name = 'indicator';\n container.add(indicator as unknown as INode);\n this._indicatorComponent = indicator;\n this._indicatorComponent.on('*', (event: any, type: string) =>\n this._delegateEvent(this._indicatorComponent as unknown as IGraphic, event, type)\n );\n }\n this._cacheAttrs = attrs;\n return this._indicatorComponent;\n }\n\n private _createText(\n field: string | undefined,\n text:\n | string\n | number\n | string[]\n | IVisualScale\n | VisualType<string>[]\n | FunctionType<string | number | string[]>\n | IVisualSpecStyle<unknown, string | number | string[]>\n | undefined\n ) {\n if (field) {\n return this._activeDatum ? this._activeDatum[field] : '';\n }\n if (isFunction(text)) {\n return text(this._activeDatum, undefined) ?? '';\n }\n return text ?? '';\n }\n\n private _computeLayoutRadius() {\n const region = this._regions[0];\n const { width, height } = region.getLayoutRect();\n return Math.min(width / 2, height / 2);\n }\n\n private isRelativeModel(model: IModel) {\n return eachSeries(this._regions, s => model === s) || this._regions.includes(model as IRegion);\n }\n\n getVRenderComponents(): IGroup[] {\n return [this._indicatorComponent] as unknown as IGroup[];\n }\n\n clear(): void {\n this._cacheAttrs = null;\n super.clear();\n }\n}\n"]}
|
|
@@ -4,7 +4,7 @@ import type { ILayoutItem, IModel, IModelOption } from '../../model/interface';
|
|
|
4
4
|
import type { IRegion } from '../../region/interface';
|
|
5
5
|
import type { ISeries } from '../../series/interface';
|
|
6
6
|
import type { StringOrNumber } from '../../typings';
|
|
7
|
-
import type { IGroup } from '@visactor/vrender
|
|
7
|
+
import type { IGroup } from '@visactor/vrender';
|
|
8
8
|
export interface IComponentOption extends IModelOption {
|
|
9
9
|
getAllRegions: () => IRegion[];
|
|
10
10
|
getRegionsInIndex: (index?: number[]) => IRegion[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/component/interface/common.ts"],"names":[],"mappings":"","file":"common.js","sourcesContent":["import type { ISeriesFilter } from '../../region/interface';\nimport type { IAnimate } from '../../animation/interface';\nimport type { ILayoutItem, IModel, IModelOption } from '../../model/interface';\n// eslint-disable-next-line no-duplicate-imports\nimport type { IRegion } from '../../region/interface';\nimport type { ISeries } from '../../series/interface';\nimport type { StringOrNumber } from '../../typings';\nimport type { IGroup } from '@visactor/vrender
|
|
1
|
+
{"version":3,"sources":["../src/component/interface/common.ts"],"names":[],"mappings":"","file":"common.js","sourcesContent":["import type { ISeriesFilter } from '../../region/interface';\nimport type { IAnimate } from '../../animation/interface';\nimport type { ILayoutItem, IModel, IModelOption } from '../../model/interface';\n// eslint-disable-next-line no-duplicate-imports\nimport type { IRegion } from '../../region/interface';\nimport type { ISeries } from '../../series/interface';\nimport type { StringOrNumber } from '../../typings';\nimport type { IGroup } from '@visactor/vrender';\n/**\n * 组件作为图表辅助阅读等功能的模块,除了model提供的能力之外,还有以下功能特点\n * 支持对多region的绑定。\n * 能够在resize时正常的重新对内部元素布局。\n * 保持数据独立,模块间的依赖关系,能从数据上处理的应当从数据上处理。\n */\n\nexport interface IComponentOption extends IModelOption {\n // 区域\n getAllRegions: () => IRegion[];\n getRegionsInIndex: (index?: number[]) => IRegion[];\n getRegionsInIds: (ids: number[]) => IRegion[];\n getRegionsInUserIdOrIndex: (user_ids?: StringOrNumber[], index?: number[]) => IRegion[];\n defaultSpec?: any;\n // series\n getAllSeries: () => ISeries[];\n getSeriesInIndex: (index?: number[]) => ISeries[];\n getSeriesInIds: (ids?: number[]) => ISeries[];\n getSeriesInUserIdOrIndex: (user_ids?: StringOrNumber[], index?: number[]) => ISeries[];\n // component\n getAllComponents: () => IComponent[];\n getComponentByIndex: (key: string, index: number) => IComponent | undefined;\n getComponentByUserId: (userId: StringOrNumber) => IComponent | undefined;\n getComponentsByKey: (key: string) => IComponent[];\n}\n\nexport interface IComponent extends IModel, ILayoutItem {\n readonly name: string;\n readonly animate?: IAnimate;\n\n // 区域\n getRegions: () => IRegion[];\n getBindSeriesFilter?: () => ISeriesFilter;\n changeRegions: (regions: IRegion[]) => void;\n getVRenderComponents: () => IGroup[];\n\n // 清空,用于更新等场景\n clear: () => void;\n}\n\nexport interface IComponentConstructor {\n type: string;\n createComponent: (spec: any, options: IComponentOption) => IComponent | IComponent[] | undefined;\n new (spec: any, options: IComponentOption): IComponent;\n}\n"]}
|
|
@@ -5,7 +5,7 @@ import type { IRegion } from '../../region/interface';
|
|
|
5
5
|
import type { IModelRenderOption } from '../../model/interface';
|
|
6
6
|
import type { LayoutItem } from '../../model/layout-item';
|
|
7
7
|
import type { ILabelSpec } from './interface';
|
|
8
|
-
import type { IGroup } from '@visactor/vrender
|
|
8
|
+
import type { IGroup } from '@visactor/vrender';
|
|
9
9
|
export declare abstract class BaseLabelComponent<T extends ILabelSpec = ILabelSpec> extends BaseComponent<T> {
|
|
10
10
|
static type: ComponentTypeEnum;
|
|
11
11
|
type: ComponentTypeEnum;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/component/label/base-label.ts"],"names":[],"mappings":";;;AAAA,kCAAwC;AAGxC,4CAAiD;AAIjD,6CAA8C;AAG9C,6CAA2C;AAG3C,MAAsB,kBAAsD,SAAQ,oBAAgB;IAQlG,YAAY,IAAO,EAAE,OAAyB;QAC5C,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAPvB,SAAI,GAAG,6BAAiB,CAAC,KAAK,CAAC;QAC/B,SAAI,GAAW,6BAAiB,CAAC,KAAK,CAAC;QAEvC,eAAU,GAA6B,UAAU,CAAC;QAClD,iBAAY,GAA+B,uBAAY,CAAC,KAAK,CAAC;QAI5D,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACzD,CAAC;IAES,kBAAkB,CAAC,SAAqB;QAChD,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;QAClC,IAAI,WAAW,KAAK,IAAI,EAAE;YACxB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;SACxC;QACD,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC;QAEvE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,CAAC;QAC5D,IAAI,KAAK,KAAK,KAAK,IAAK,KAA+B,CAAC,MAAM,KAAK,KAAK,EAAE;YACxE,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;SACrB;QACD,IAAI,MAAM,KAAK,KAAK,IAAK,MAAiC,CAAC,MAAM,KAAK,KAAK,EAAE;YAC3E,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;SACtB;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,sBAAsB;IAEtB,CAAC;IAGD,YAAY;QACV,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;QACpC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,IAAA,gBAAO,EAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;YAC5C,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;SACtB;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,QAAQ,CAAC,GAAuB;IAEhC,CAAC;IACD,aAAa,CAAC,OAAkB;IAEhC,CAAC;IACD,oBAAoB;QAClB,OAAO,EAAE,CAAC;IACZ,CAAC;;AAtDH,gDAuDC;AAtDQ,uBAAI,GAAG,6BAAiB,CAAC,KAAK,CAAC","file":"base-label.js","sourcesContent":["import { BaseComponent } from '../base';\nimport type { IComponentOption } from '../interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { ComponentTypeEnum } from '../interface';\nimport type { IRegion } from '../../region/interface';\nimport type { IModelRenderOption } from '../../model/interface';\nimport type { LayoutItem } from '../../model/layout-item';\nimport { LayoutZIndex } from '../../constant';\nimport type { ILabelSpec } from './interface';\nimport type { IHoverSpec, ISelectSpec } from '../../interaction/interface';\nimport { isEqual } from '@visactor/vutils';\nimport type { IGroup } from '@visactor/vrender
|
|
1
|
+
{"version":3,"sources":["../src/component/label/base-label.ts"],"names":[],"mappings":";;;AAAA,kCAAwC;AAGxC,4CAAiD;AAIjD,6CAA8C;AAG9C,6CAA2C;AAG3C,MAAsB,kBAAsD,SAAQ,oBAAgB;IAQlG,YAAY,IAAO,EAAE,OAAyB;QAC5C,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAPvB,SAAI,GAAG,6BAAiB,CAAC,KAAK,CAAC;QAC/B,SAAI,GAAW,6BAAiB,CAAC,KAAK,CAAC;QAEvC,eAAU,GAA6B,UAAU,CAAC;QAClD,iBAAY,GAA+B,uBAAY,CAAC,KAAK,CAAC;QAI5D,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACzD,CAAC;IAES,kBAAkB,CAAC,SAAqB;QAChD,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;QAClC,IAAI,WAAW,KAAK,IAAI,EAAE;YACxB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;SACxC;QACD,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC;QAEvE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,CAAC;QAC5D,IAAI,KAAK,KAAK,KAAK,IAAK,KAA+B,CAAC,MAAM,KAAK,KAAK,EAAE;YACxE,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;SACrB;QACD,IAAI,MAAM,KAAK,KAAK,IAAK,MAAiC,CAAC,MAAM,KAAK,KAAK,EAAE;YAC3E,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;SACtB;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,sBAAsB;IAEtB,CAAC;IAGD,YAAY;QACV,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;QACpC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,IAAA,gBAAO,EAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;YAC5C,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;SACtB;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,QAAQ,CAAC,GAAuB;IAEhC,CAAC;IACD,aAAa,CAAC,OAAkB;IAEhC,CAAC;IACD,oBAAoB;QAClB,OAAO,EAAE,CAAC;IACZ,CAAC;;AAtDH,gDAuDC;AAtDQ,uBAAI,GAAG,6BAAiB,CAAC,KAAK,CAAC","file":"base-label.js","sourcesContent":["import { BaseComponent } from '../base';\nimport type { IComponentOption } from '../interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { ComponentTypeEnum } from '../interface';\nimport type { IRegion } from '../../region/interface';\nimport type { IModelRenderOption } from '../../model/interface';\nimport type { LayoutItem } from '../../model/layout-item';\nimport { LayoutZIndex } from '../../constant';\nimport type { ILabelSpec } from './interface';\nimport type { IHoverSpec, ISelectSpec } from '../../interaction/interface';\nimport { isEqual } from '@visactor/vutils';\nimport type { IGroup } from '@visactor/vrender';\n\nexport abstract class BaseLabelComponent<T extends ILabelSpec = ILabelSpec> extends BaseComponent<T> {\n static type = ComponentTypeEnum.label;\n type = ComponentTypeEnum.label;\n name: string = ComponentTypeEnum.label;\n\n layoutType: LayoutItem['layoutType'] = 'absolute';\n layoutZIndex: LayoutItem['layoutZIndex'] = LayoutZIndex.Label;\n\n constructor(spec: T, options: IComponentOption) {\n super(spec, options);\n this._regions = options.getRegionsInIndex([options.specIndex]);\n this.layoutBindRegionID = this._regions.map(x => x.id);\n }\n\n protected _interactiveConfig(labelSpec: ILabelSpec) {\n const { interactive } = labelSpec;\n if (interactive !== true) {\n return { hover: false, select: false };\n }\n const result = { hover: false, select: false, state: labelSpec.state };\n\n const { hover, select } = this._option.getChart().getSpec();\n if (hover !== false || (hover as unknown as IHoverSpec).enable !== false) {\n result.hover = true;\n }\n if (select !== false || (select as unknown as ISelectSpec).enable !== false) {\n result.select = true;\n }\n return result;\n }\n\n setLayoutStartPosition() {\n // do nothing\n }\n\n /** Update API **/\n _compareSpec() {\n const result = super._compareSpec();\n result.reRender = true;\n if (!isEqual(this._originalSpec, this._spec)) {\n result.reMake = true;\n }\n\n return result;\n }\n\n onRender(ctx: IModelRenderOption): void {\n // do nothing\n }\n changeRegions(regions: IRegion[]): void {\n // do nothing\n }\n getVRenderComponents(): IGroup[] {\n return [];\n }\n}\n"]}
|
|
@@ -7,7 +7,7 @@ import type { ISeries } from '../../series/interface';
|
|
|
7
7
|
import { type ILabel, type IMark } from '@visactor/vgrammar-core';
|
|
8
8
|
import type { IComponentMark } from '../../mark/component';
|
|
9
9
|
import { BaseLabelComponent } from './base-label';
|
|
10
|
-
import type { IGroup } from '@visactor/vrender
|
|
10
|
+
import type { IGroup } from '@visactor/vrender';
|
|
11
11
|
import type { ILabelSpec } from './interface';
|
|
12
12
|
import { type ILabelMark } from '../../mark/label';
|
|
13
13
|
import type { ICompilableMark } from '../../compile/mark';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/component/label/label.ts"],"names":[],"mappings":"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","file":"label.js","sourcesContent":["import type { IComponentOption } from '../interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { ComponentTypeEnum } from '../interface';\nimport type { IRegion } from '../../region/interface';\nimport type { IModelInitOption } from '../../model/interface';\nimport type { LayoutItem } from '../../model/layout-item';\nimport { AttributeLevel, ChartEvent, LayoutZIndex, VGRAMMAR_HOOK_EVENT } from '../../constant';\nimport { MarkTypeEnum } from '../../mark/interface';\nimport { eachSeries, mergeSpec } from '../../util';\nimport type { ISeries } from '../../series/interface';\nimport { registerLabel, type IGroupMark, type ILabel, type IMark } from '@visactor/vgrammar-core';\nimport { labelRuleMap, textAttribute } from './util';\nimport type { IComponentMark } from '../../mark/component';\nimport { BaseLabelComponent } from './base-label';\nimport type { LooseFunction } from '@visactor/vutils';\nimport { isArray, pickWithout } from '@visactor/vutils';\nimport type { IGroup, IText } from '@visactor/vrender-core';\nimport type { LabelItem } from '@visactor/vrender-components';\nimport type { ILabelSpec } from './interface';\nimport { VChart } from '../../core';\nimport { LabelMark, type ILabelMark } from '../../mark/label';\nimport type { ICompilableMark } from '../../compile/mark';\n\nexport interface ILabelInfo {\n baseMark: ICompilableMark;\n labelMark: ILabelMark;\n series: ISeries;\n labelSpec: ILabelSpec;\n}\n\nexport interface ILabelComponentContext {\n region: IRegion;\n labelInfo: ILabelInfo[];\n}\n\n// call the register fucntion when register this component to VChart\nregisterLabel();\nVChart.useMark([LabelMark]);\n\nexport class Label<T extends ILabelSpec = ILabelSpec> extends BaseLabelComponent<T> {\n static type = ComponentTypeEnum.label;\n type = ComponentTypeEnum.label;\n name: string = ComponentTypeEnum.label;\n\n layoutType: LayoutItem['layoutType'] = 'absolute';\n layoutZIndex: LayoutItem['layoutZIndex'] = LayoutZIndex.Label;\n\n protected _labelInfoMap: Map<IRegion, ILabelInfo[]>;\n\n protected _labelComponentMap: Map<IComponentMark, ILabelInfo | ILabelInfo[]>;\n\n protected _layoutRule: 'series' | 'region';\n\n constructor(spec: T, options: IComponentOption) {\n super(spec, options);\n this._layoutRule = spec.labelLayout || 'series';\n }\n\n static createComponent(spec: any, options: IComponentOption) {\n const regions = options.getAllRegions();\n const labelComponents = [];\n for (let i = 0; i < regions.length; i++) {\n const marks = regions[i]\n .getSeries()\n .map(s => s.getMarksWithoutRoot())\n .flat();\n const labelVisible = marks.some(mark => {\n return mark.getLabelSpec()?.some(labelSpec => labelSpec.visible);\n });\n if (labelVisible) {\n labelComponents.push(new Label(spec, { ...options, specIndex: i, specKey: 'label' }));\n continue;\n }\n }\n return labelComponents;\n }\n\n init(option: IModelInitOption): void {\n super.init(option);\n this.initEvent();\n this._initTextMark();\n this._initLabelComponent();\n this._initTextMarkStyle();\n }\n\n initEvent() {\n this.event.on(ChartEvent.dataZoomChange, () => {\n this._labelComponentMap.forEach((info, component) => {\n const graphicItem = component.getProduct().getGroupGraphicItem();\n if (graphicItem) {\n graphicItem.disableAnimation();\n }\n });\n this.event.on(VGRAMMAR_HOOK_EVENT.AFTER_MARK_RENDER_END, enableAnimation);\n });\n const enableAnimation = () => {\n this._labelComponentMap.forEach((info, component) => {\n const graphicItem = component.getProduct().getGroupGraphicItem();\n if (graphicItem) {\n graphicItem.enableAnimation();\n }\n });\n this.event.off(VGRAMMAR_HOOK_EVENT.AFTER_MARK_RENDER_END, enableAnimation);\n };\n\n this.event.on('afterElementEncode', eventParams => {\n const mark = eventParams.item;\n\n if (this._option.getChart().getLayoutTag() === false && mark.context?.model === this) {\n this._delegateLabelEvent(mark.getGroupGraphicItem());\n }\n });\n }\n\n protected _delegateLabelEvent(component: IGroup) {\n const textNodes = component\n ?.findAll(node => node.type === 'text', true)\n // label 组件的底层实现是有 text 图元复用的,这里为了避免重复的事件监听\n .filter(text => !(text as any).__vchart_event) as IText[];\n if (textNodes && textNodes.length > 0) {\n textNodes.forEach(text => {\n text.__vchart_event = true;\n text.addEventListener('*', ((event: any, type: string) =>\n this._delegateEvent(component, event, type, text, (text.attribute as LabelItem).data)) as LooseFunction);\n });\n }\n }\n\n protected _initTextMark() {\n if (!this._labelInfoMap) {\n this._labelInfoMap = new Map();\n }\n\n if (!this._labelComponentMap) {\n this._labelComponentMap = new Map();\n }\n eachSeries(this._regions, (s: ISeries) => {\n const marks = s.getMarks();\n const region = s.getRegion();\n\n if (!this._labelInfoMap.get(region)) {\n this._labelInfoMap.set(region, []);\n }\n for (let i = 0; i < marks.length; i++) {\n const mark = marks[i];\n if (mark.getLabelSpec()?.length > 0) {\n mark.getLabelSpec().forEach((labelSpec, index) => {\n if (labelSpec.visible) {\n const info = this._labelInfoMap.get(region);\n const labelMark = this._createMark({\n type: MarkTypeEnum.label,\n name: `${mark.name}-label-${index}`\n }) as ILabelMark;\n labelMark.setTarget(mark);\n info.push({ labelMark, baseMark: mark, series: s, labelSpec });\n }\n });\n }\n }\n });\n }\n\n protected _initLabelComponent() {\n this._labelInfoMap.forEach((regionLabelInfo, region) => {\n if (this._layoutRule === 'region') {\n const component = this._createMark(\n { type: MarkTypeEnum.component, name: `${region.getGroupMark().name}-label-component` },\n {\n componentType: 'label',\n support3d: this._spec.support3d\n }\n );\n if (component) {\n this._marks.addMark(component);\n this._labelComponentMap.set(component, regionLabelInfo);\n }\n } else {\n regionLabelInfo.forEach(labelInfo => {\n const component = this._createMark(\n { type: MarkTypeEnum.component, name: `${labelInfo.labelMark.name}-component` },\n {\n componentType: 'label',\n support3d: labelInfo.baseMark.getSupport3d()\n }\n );\n if (component) {\n this._marks.addMark(component);\n this._labelComponentMap.set(component, labelInfo);\n labelInfo.labelMark.setComponent(component);\n }\n });\n }\n });\n }\n\n protected _initTextMarkStyle() {\n this._labelInfoMap.forEach(labelInfos => {\n labelInfos.forEach(info => {\n const { labelMark, labelSpec, series } = info;\n this.initMarkStyleWithSpec(labelMark, labelSpec);\n series.initLabelMarkStyle?.(labelMark);\n if (labelMark.stateStyle?.normal?.lineWidth) {\n labelMark.setAttribute('stroke', series.getColorAttribute(), 'normal', AttributeLevel.Base_Series);\n }\n });\n });\n }\n\n updateLayoutAttribute(): void {\n super.updateLayoutAttribute();\n this._labelComponentMap.forEach((labelInfo, labelComponent) => {\n if (isArray(labelInfo)) {\n this._updateMultiLabelAttribute(labelInfo, labelComponent);\n } else {\n this._updateSingleLabelAttribute(labelInfo, labelComponent);\n }\n });\n }\n\n protected _updateMultiLabelAttribute(labelInfo: ILabelInfo[], labelComponent: IComponentMark) {\n this._updateLabelComponentAttribute(\n labelComponent.getProduct() as ILabel,\n labelInfo.map(({ baseMark }) => baseMark.getProduct()),\n labelInfo\n );\n }\n\n protected _updateSingleLabelAttribute(labelInfo: ILabelInfo, labelComponent: IComponentMark) {\n const { baseMark } = labelInfo;\n this._updateLabelComponentAttribute(labelComponent.getProduct() as ILabel, baseMark.getProduct(), [labelInfo]);\n }\n\n protected _updateLabelComponentAttribute(component: ILabel, target: IMark | IMark[], labelInfos: ILabelInfo[]) {\n const dependCmp = this._option.getAllComponents().filter(cmp => cmp.type === 'totalLabel');\n component\n .target(target)\n .configure({ interactive: false })\n .depend(dependCmp.map(cmp => cmp.getMarks()[0].getProduct()))\n .labelStyle((mark: IMark, params: Record<string, any>) => {\n const labelInfo = labelInfos[params.labelIndex];\n if (labelInfo) {\n const { baseMark, labelSpec, labelMark } = labelInfo;\n const rule = labelMark.getRule() || baseMark.type;\n const configFunc = labelRuleMap[rule] ?? labelRuleMap.point;\n const interactive = this._interactiveConfig(labelSpec);\n const passiveLabelSpec = pickWithout(labelSpec, ['position', 'style', 'state']);\n /** arc label When setting the centerOffset of the spec, the label also needs to be offset accordingly, and the centerOffset is not in the labelSpec */\n const centerOffset = this._spec?.centerOffset ?? 0;\n return mergeSpec(\n {\n textStyle: { pickable: labelSpec.interactive === true, ...labelSpec.style },\n overlap: {\n avoidMarks: this._option\n .getAllComponents()\n .filter(cmp => cmp.type === 'totalLabel')\n .map(cmp => cmp.getMarks()[0].getProductId())\n }\n },\n configFunc(labelInfo),\n {\n ...passiveLabelSpec,\n ...interactive,\n centerOffset\n }\n );\n }\n })\n .encode((datum, element, params: Record<string, any>) => {\n const labelInfo = labelInfos[params.labelIndex];\n if (labelInfo) {\n const { labelSpec, labelMark } = labelInfos[params.labelIndex];\n return labelMark.skipEncode\n ? { data: datum }\n : textAttribute(labelInfos[params.labelIndex], datum, labelSpec.formatMethod);\n }\n })\n .size(() => labelInfos[0].series.getRegion().getLayoutRect());\n }\n\n compileMarks() {\n this.getMarks().forEach(m => {\n const labelInfo = this._labelComponentMap.get(m);\n let group;\n if (isArray(labelInfo)) {\n group = labelInfo[0].series.getRegion().getGroupMark().getProduct() as IGroupMark;\n } else {\n group = labelInfo.series.getRegion().getGroupMark().getProduct() as IGroupMark;\n }\n m.compile({ group });\n m.getProduct()?.configure({\n context: {\n model: this,\n labelInfo\n }\n });\n });\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/component/label/label.ts"],"names":[],"mappings":"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","file":"label.js","sourcesContent":["import type { IComponentOption } from '../interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { ComponentTypeEnum } from '../interface';\nimport type { IRegion } from '../../region/interface';\nimport type { IModelInitOption } from '../../model/interface';\nimport type { LayoutItem } from '../../model/layout-item';\nimport { AttributeLevel, ChartEvent, LayoutZIndex, VGRAMMAR_HOOK_EVENT } from '../../constant';\nimport { MarkTypeEnum } from '../../mark/interface';\nimport { eachSeries, mergeSpec } from '../../util';\nimport type { ISeries } from '../../series/interface';\nimport { registerLabel, type IGroupMark, type ILabel, type IMark } from '@visactor/vgrammar-core';\nimport { labelRuleMap, textAttribute } from './util';\nimport type { IComponentMark } from '../../mark/component';\nimport { BaseLabelComponent } from './base-label';\nimport type { LooseFunction } from '@visactor/vutils';\nimport { isArray, pickWithout } from '@visactor/vutils';\nimport type { IGroup, IText } from '@visactor/vrender';\nimport type { LabelItem } from '@visactor/vrender-components';\nimport type { ILabelSpec } from './interface';\nimport { VChart } from '../../core';\nimport { LabelMark, type ILabelMark } from '../../mark/label';\nimport type { ICompilableMark } from '../../compile/mark';\n\nexport interface ILabelInfo {\n baseMark: ICompilableMark;\n labelMark: ILabelMark;\n series: ISeries;\n labelSpec: ILabelSpec;\n}\n\nexport interface ILabelComponentContext {\n region: IRegion;\n labelInfo: ILabelInfo[];\n}\n\n// call the register fucntion when register this component to VChart\nregisterLabel();\nVChart.useMark([LabelMark]);\n\nexport class Label<T extends ILabelSpec = ILabelSpec> extends BaseLabelComponent<T> {\n static type = ComponentTypeEnum.label;\n type = ComponentTypeEnum.label;\n name: string = ComponentTypeEnum.label;\n\n layoutType: LayoutItem['layoutType'] = 'absolute';\n layoutZIndex: LayoutItem['layoutZIndex'] = LayoutZIndex.Label;\n\n protected _labelInfoMap: Map<IRegion, ILabelInfo[]>;\n\n protected _labelComponentMap: Map<IComponentMark, ILabelInfo | ILabelInfo[]>;\n\n protected _layoutRule: 'series' | 'region';\n\n constructor(spec: T, options: IComponentOption) {\n super(spec, options);\n this._layoutRule = spec.labelLayout || 'series';\n }\n\n static createComponent(spec: any, options: IComponentOption) {\n const regions = options.getAllRegions();\n const labelComponents = [];\n for (let i = 0; i < regions.length; i++) {\n const marks = regions[i]\n .getSeries()\n .map(s => s.getMarksWithoutRoot())\n .flat();\n const labelVisible = marks.some(mark => {\n return mark.getLabelSpec()?.some(labelSpec => labelSpec.visible);\n });\n if (labelVisible) {\n labelComponents.push(new Label(spec, { ...options, specIndex: i, specKey: 'label' }));\n continue;\n }\n }\n return labelComponents;\n }\n\n init(option: IModelInitOption): void {\n super.init(option);\n this.initEvent();\n this._initTextMark();\n this._initLabelComponent();\n this._initTextMarkStyle();\n }\n\n initEvent() {\n this.event.on(ChartEvent.dataZoomChange, () => {\n this._labelComponentMap.forEach((info, component) => {\n const graphicItem = component.getProduct().getGroupGraphicItem();\n if (graphicItem) {\n graphicItem.disableAnimation();\n }\n });\n this.event.on(VGRAMMAR_HOOK_EVENT.AFTER_MARK_RENDER_END, enableAnimation);\n });\n const enableAnimation = () => {\n this._labelComponentMap.forEach((info, component) => {\n const graphicItem = component.getProduct().getGroupGraphicItem();\n if (graphicItem) {\n graphicItem.enableAnimation();\n }\n });\n this.event.off(VGRAMMAR_HOOK_EVENT.AFTER_MARK_RENDER_END, enableAnimation);\n };\n\n this.event.on('afterElementEncode', eventParams => {\n const mark = eventParams.item;\n\n if (this._option.getChart().getLayoutTag() === false && mark.context?.model === this) {\n this._delegateLabelEvent(mark.getGroupGraphicItem());\n }\n });\n }\n\n protected _delegateLabelEvent(component: IGroup) {\n const textNodes = component\n ?.findAll(node => node.type === 'text', true)\n // label 组件的底层实现是有 text 图元复用的,这里为了避免重复的事件监听\n .filter(text => !(text as any).__vchart_event) as IText[];\n if (textNodes && textNodes.length > 0) {\n textNodes.forEach(text => {\n text.__vchart_event = true;\n text.addEventListener('*', ((event: any, type: string) =>\n this._delegateEvent(component, event, type, text, (text.attribute as LabelItem).data)) as LooseFunction);\n });\n }\n }\n\n protected _initTextMark() {\n if (!this._labelInfoMap) {\n this._labelInfoMap = new Map();\n }\n\n if (!this._labelComponentMap) {\n this._labelComponentMap = new Map();\n }\n eachSeries(this._regions, (s: ISeries) => {\n const marks = s.getMarks();\n const region = s.getRegion();\n\n if (!this._labelInfoMap.get(region)) {\n this._labelInfoMap.set(region, []);\n }\n for (let i = 0; i < marks.length; i++) {\n const mark = marks[i];\n if (mark.getLabelSpec()?.length > 0) {\n mark.getLabelSpec().forEach((labelSpec, index) => {\n if (labelSpec.visible) {\n const info = this._labelInfoMap.get(region);\n const labelMark = this._createMark({\n type: MarkTypeEnum.label,\n name: `${mark.name}-label-${index}`\n }) as ILabelMark;\n labelMark.setTarget(mark);\n info.push({ labelMark, baseMark: mark, series: s, labelSpec });\n }\n });\n }\n }\n });\n }\n\n protected _initLabelComponent() {\n this._labelInfoMap.forEach((regionLabelInfo, region) => {\n if (this._layoutRule === 'region') {\n const component = this._createMark(\n { type: MarkTypeEnum.component, name: `${region.getGroupMark().name}-label-component` },\n {\n componentType: 'label',\n support3d: this._spec.support3d\n }\n );\n if (component) {\n this._marks.addMark(component);\n this._labelComponentMap.set(component, regionLabelInfo);\n }\n } else {\n regionLabelInfo.forEach(labelInfo => {\n const component = this._createMark(\n { type: MarkTypeEnum.component, name: `${labelInfo.labelMark.name}-component` },\n {\n componentType: 'label',\n support3d: labelInfo.baseMark.getSupport3d()\n }\n );\n if (component) {\n this._marks.addMark(component);\n this._labelComponentMap.set(component, labelInfo);\n labelInfo.labelMark.setComponent(component);\n }\n });\n }\n });\n }\n\n protected _initTextMarkStyle() {\n this._labelInfoMap.forEach(labelInfos => {\n labelInfos.forEach(info => {\n const { labelMark, labelSpec, series } = info;\n this.initMarkStyleWithSpec(labelMark, labelSpec);\n series.initLabelMarkStyle?.(labelMark);\n if (labelMark.stateStyle?.normal?.lineWidth) {\n labelMark.setAttribute('stroke', series.getColorAttribute(), 'normal', AttributeLevel.Base_Series);\n }\n });\n });\n }\n\n updateLayoutAttribute(): void {\n super.updateLayoutAttribute();\n this._labelComponentMap.forEach((labelInfo, labelComponent) => {\n if (isArray(labelInfo)) {\n this._updateMultiLabelAttribute(labelInfo, labelComponent);\n } else {\n this._updateSingleLabelAttribute(labelInfo, labelComponent);\n }\n });\n }\n\n protected _updateMultiLabelAttribute(labelInfo: ILabelInfo[], labelComponent: IComponentMark) {\n this._updateLabelComponentAttribute(\n labelComponent.getProduct() as ILabel,\n labelInfo.map(({ baseMark }) => baseMark.getProduct()),\n labelInfo\n );\n }\n\n protected _updateSingleLabelAttribute(labelInfo: ILabelInfo, labelComponent: IComponentMark) {\n const { baseMark } = labelInfo;\n this._updateLabelComponentAttribute(labelComponent.getProduct() as ILabel, baseMark.getProduct(), [labelInfo]);\n }\n\n protected _updateLabelComponentAttribute(component: ILabel, target: IMark | IMark[], labelInfos: ILabelInfo[]) {\n const dependCmp = this._option.getAllComponents().filter(cmp => cmp.type === 'totalLabel');\n component\n .target(target)\n .configure({ interactive: false })\n .depend(dependCmp.map(cmp => cmp.getMarks()[0].getProduct()))\n .labelStyle((mark: IMark, params: Record<string, any>) => {\n const labelInfo = labelInfos[params.labelIndex];\n if (labelInfo) {\n const { baseMark, labelSpec, labelMark } = labelInfo;\n const rule = labelMark.getRule() || baseMark.type;\n const configFunc = labelRuleMap[rule] ?? labelRuleMap.point;\n const interactive = this._interactiveConfig(labelSpec);\n const passiveLabelSpec = pickWithout(labelSpec, ['position', 'style', 'state']);\n /** arc label When setting the centerOffset of the spec, the label also needs to be offset accordingly, and the centerOffset is not in the labelSpec */\n const centerOffset = this._spec?.centerOffset ?? 0;\n return mergeSpec(\n {\n textStyle: { pickable: labelSpec.interactive === true, ...labelSpec.style },\n overlap: {\n avoidMarks: this._option\n .getAllComponents()\n .filter(cmp => cmp.type === 'totalLabel')\n .map(cmp => cmp.getMarks()[0].getProductId())\n }\n },\n configFunc(labelInfo),\n {\n ...passiveLabelSpec,\n ...interactive,\n centerOffset\n }\n );\n }\n })\n .encode((datum, element, params: Record<string, any>) => {\n const labelInfo = labelInfos[params.labelIndex];\n if (labelInfo) {\n const { labelSpec, labelMark } = labelInfos[params.labelIndex];\n return labelMark.skipEncode\n ? { data: datum }\n : textAttribute(labelInfos[params.labelIndex], datum, labelSpec.formatMethod);\n }\n })\n .size(() => labelInfos[0].series.getRegion().getLayoutRect());\n }\n\n compileMarks() {\n this.getMarks().forEach(m => {\n const labelInfo = this._labelComponentMap.get(m);\n let group;\n if (isArray(labelInfo)) {\n group = labelInfo[0].series.getRegion().getGroupMark().getProduct() as IGroupMark;\n } else {\n group = labelInfo.series.getRegion().getGroupMark().getProduct() as IGroupMark;\n }\n m.compile({ group });\n m.getProduct()?.configure({\n context: {\n model: this,\n labelInfo\n }\n });\n });\n }\n}\n"]}
|
|
@@ -41,7 +41,7 @@ export declare function pieLabel(labelInfo: ILabelInfo): {
|
|
|
41
41
|
smartInvert: boolean | import("@visactor/vrender-components").SmartInvertAttrs;
|
|
42
42
|
};
|
|
43
43
|
export declare function stackLabel(labelInfo: ILabelInfo): {
|
|
44
|
-
customLayoutFunc: (labels: LabelItem[]) => import("@visactor/vrender
|
|
44
|
+
customLayoutFunc: (labels: LabelItem[]) => import("@visactor/vrender").IText[];
|
|
45
45
|
dataFilter: (labels: LabelItem[]) => LabelItem[];
|
|
46
46
|
overlap: {
|
|
47
47
|
strategy: any;
|
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: !0
|
|
5
5
|
}), exports.stackLabel = exports.pieLabel = exports.pointLabel = exports.barLabel = exports.symbolLabel = exports.textAttribute = exports.LabelRule = exports.labelRuleMap = void 0;
|
|
6
6
|
|
|
7
|
-
const typings_1 = require("../../typings"), vutils_1 = require("@visactor/vutils"),
|
|
7
|
+
const typings_1 = require("../../typings"), vutils_1 = require("@visactor/vutils"), vrender_1 = require("@visactor/vrender");
|
|
8
8
|
|
|
9
9
|
var LabelRule;
|
|
10
10
|
|
|
@@ -107,7 +107,7 @@ function stackLabel(labelInfo) {
|
|
|
107
107
|
return attribute.x = (datum => series.direction === typings_1.Direction.vertical ? series.totalPositionX(datum, "index", .5) : "middle" === pos ? .5 * (series.totalPositionX(datum, "end") + series.totalPositionY(datum, "start")) : "max" === pos ? series.totalPositionX(datum, datum.end >= datum.start ? "end" : "start") + offset : "min" === pos ? series.totalPositionX(datum, datum.end >= datum.start ? "start" : "end") - offset : series.totalPositionX(datum, "end") + (datum.end >= datum.start ? offset : -offset))(datum),
|
|
108
108
|
attribute.y = (datum => series.direction === typings_1.Direction.vertical ? "middle" === pos ? .5 * (series.totalPositionY(datum, "end") + series.totalPositionY(datum, "start")) : "max" === pos ? series.totalPositionY(datum, datum.end >= datum.start ? "end" : "start") - offset : "min" === pos ? series.totalPositionY(datum, datum.end >= datum.start ? "start" : "end") + offset : series.totalPositionY(datum, "end") + (datum.end >= datum.start ? -offset : offset) : series.totalPositionY(datum, "index", .5))(datum),
|
|
109
109
|
series.direction === typings_1.Direction.vertical ? attribute.textBaseline = "middle" === pos ? pos : "withChange" === pos && datum.end - datum.start >= 0 || "max" === pos ? "bottom" : "top" : attribute.textAlign = "middle" === pos ? "center" : "withChange" === pos && datum.end - datum.start >= 0 || "max" === pos ? "left" : "right",
|
|
110
|
-
(0,
|
|
110
|
+
(0, vrender_1.createText)(Object.assign(Object.assign({}, attribute), {
|
|
111
111
|
id: label.id
|
|
112
112
|
}));
|
|
113
113
|
})),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/component/label/util.ts"],"names":[],"mappings":"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","file":"util.js","sourcesContent":["import type { WaterfallSeries } from './../../series/waterfall/waterfall';\nimport { Direction, type Datum } from '../../typings';\nimport type { ILabelInfo } from './label';\nimport type { BaseLabelAttrs, LabelItem, Strategy } from '@visactor/vrender-components';\nimport type { ICartesianSeries } from '../../series/interface';\nimport { isString } from '@visactor/vutils';\nimport { createText } from '@visactor/vrender-core';\nimport type { IWaterfallSeriesSpec } from '../../series/waterfall/interface';\n\nexport const labelRuleMap = {\n rect: barLabel,\n symbol: symbolLabel,\n arc: pieLabel,\n point: pointLabel,\n\n stackLabel: stackLabel\n};\n\nexport enum LabelRule {\n rect = 'rect',\n symbol = 'symbol',\n arc = 'arc',\n point = 'point',\n stackLabel = 'stackLabel'\n}\n\nexport function textAttribute(\n labelInfo: ILabelInfo,\n datum: Datum,\n formatMethod?: (text: string | string[], datum?: any) => string | string[]\n) {\n const { labelMark, series } = labelInfo;\n const field = series.getMeasureField()[0];\n const textAttribute = { text: datum[field], data: datum } as any;\n\n const attributes = Object.keys(labelMark.stateStyle.normal);\n for (const key of attributes) {\n const attr = labelMark.getAttribute(key as any, datum);\n textAttribute[key] = attr;\n if (key === 'text' && formatMethod) {\n textAttribute[key] = formatMethod(textAttribute[key], datum);\n }\n }\n return textAttribute;\n}\n\n/**\n * symbol 图元标签规则。\n */\nexport function symbolLabel(labelInfo: ILabelInfo) {\n const { series, labelSpec } = labelInfo;\n\n // encode position config\n const defaultPosition = (series as ICartesianSeries).direction === 'horizontal' ? 'right' : 'top';\n const position = labelSpec.position ?? defaultPosition;\n\n // encode overlap config\n let overlap;\n if (labelSpec.overlap === false) {\n overlap = false;\n } else {\n overlap = {\n strategy: labelSpec.overlap?.strategy ?? symbolLabelOverlapStrategy(),\n avoidBaseMark: position !== 'center'\n };\n }\n\n return { position, overlap };\n}\n\nfunction symbolLabelOverlapStrategy() {\n const strategy: Strategy[] = [\n {\n type: 'position',\n position: ['top', 'bottom', 'right', 'left', 'top-right', 'top-left', 'bottom-left', 'bottom-right']\n }\n ];\n\n return strategy;\n}\n\n/**\n *\n */\nexport function barLabel(labelInfo: ILabelInfo) {\n const { series, labelSpec = {} } = labelInfo;\n\n // encode position config\n const labelPosition = labelSpec.position ?? 'outside';\n const direction = (series as ICartesianSeries).direction ?? 'vertical';\n const isInverse =\n (series as ICartesianSeries).direction === 'horizontal'\n ? (series as ICartesianSeries).getXAxisHelper()?.isInverse()\n : (series as ICartesianSeries).getYAxisHelper()?.isInverse();\n\n let position = labelPosition as BaseLabelAttrs['position'];\n\n if (position !== 'inside') {\n position = (data: Datum) => {\n const { data: datum } = data;\n const dataField = series.getMeasureField()[0];\n if (labelPosition === 'outside') {\n const positionMap = { vertical: ['top', 'bottom'], horizontal: ['right', 'left'] };\n const index = (datum?.[dataField] >= 0 && isInverse) || (datum?.[dataField] < 0 && !isInverse) ? 1 : 0;\n return positionMap[direction][index];\n }\n if (labelPosition === 'inside-bottom') {\n return (series as ICartesianSeries).direction === 'horizontal' ? 'inside-left' : 'inside-bottom';\n }\n if (labelPosition === 'inside-top') {\n return (series as ICartesianSeries).direction === 'horizontal' ? 'inside-right' : 'inside-top';\n }\n return labelPosition;\n };\n }\n // encode overlap config\n let overlap;\n if (labelSpec.overlap === false) {\n overlap = false;\n } else {\n overlap = {\n strategy: labelSpec.overlap?.strategy ?? barLabelOverlapStrategy(series as ICartesianSeries)\n };\n }\n\n // encode smartInvert\n let smartInvert = false;\n if (isString(labelPosition) && labelPosition.includes('inside')) {\n smartInvert = true;\n }\n\n return { position, overlap, smartInvert };\n}\n\nfunction barLabelOverlapStrategy(series: ICartesianSeries) {\n const strategy: Strategy[] = [\n {\n type: 'position',\n position: (data: any) => {\n const { data: datum } = data;\n const dataField = series.getMeasureField()[0];\n const isInverse =\n (series as ICartesianSeries).direction === 'horizontal'\n ? (series as ICartesianSeries).getXAxisHelper()?.isInverse()\n : (series as ICartesianSeries).getYAxisHelper()?.isInverse();\n if (isInverse) {\n if (datum?.[dataField] >= 0) {\n return series.direction === 'horizontal' ? ['left', 'inside-left'] : ['bottom', 'inside-bottom'];\n }\n return series.direction === 'horizontal' ? ['right', 'inside-right'] : ['top', 'inside-top'];\n }\n if (datum?.[dataField] >= 0) {\n return series.direction === 'horizontal' ? ['right', 'inside-right'] : ['top', 'inside-top'];\n }\n return series.direction === 'horizontal' ? ['left', 'inside-left'] : ['bottom', 'inside-bottom'];\n }\n }\n ];\n\n return strategy;\n}\n\n/**\n * 无关图元,指定x/y坐标的标签配置规则\n */\nexport function pointLabel(labelInfo: ILabelInfo) {\n const { labelSpec } = labelInfo;\n\n // encode overlap config\n let overlap;\n if (labelSpec.overlap === false) {\n overlap = false;\n } else {\n overlap = {\n avoidBaseMark: false\n };\n }\n\n return { position: 'center', overlap };\n}\n\n/**\n * pie 图元标签配置规则\n */\n\nexport function pieLabel(labelInfo: ILabelInfo) {\n const { labelSpec } = labelInfo;\n // encode position config\n const labelPosition = labelSpec.position ?? 'outside';\n const position = labelPosition as BaseLabelAttrs['position'];\n\n // encode smartInvert\n let smartInvert;\n if (labelSpec.smartInvert) {\n smartInvert = labelSpec.smartInvert;\n } else {\n smartInvert = isString(labelPosition) && labelPosition.includes('inside');\n }\n\n return { position, smartInvert };\n}\n\n/**\n * 瀑布图堆积标签配置规则\n */\n\nexport function stackLabel(labelInfo: ILabelInfo) {\n const series = labelInfo.series as WaterfallSeries;\n const labelSpec = labelInfo.labelSpec || ({} as IWaterfallSeriesSpec['stackLabel']);\n const totalData = series.getTotalData();\n return {\n customLayoutFunc: (labels: LabelItem[]) => {\n return labels.map(label => {\n const pos = labelSpec.position || 'withChange';\n const offset = labelSpec.offset || 0;\n\n const datum = label.data;\n const attribute = textAttribute(labelInfo, datum, labelSpec.formatMethod);\n const x = (datum: any) => {\n if (series.direction === Direction.vertical) {\n return series.totalPositionX(datum, 'index', 0.5);\n }\n if (pos === 'middle') {\n return (series.totalPositionX(datum, 'end') + series.totalPositionY(datum, 'start')) * 0.5;\n } else if (pos === 'max') {\n return series.totalPositionX(datum, datum.end >= datum.start ? 'end' : 'start') + offset;\n } else if (pos === 'min') {\n return series.totalPositionX(datum, datum.end >= datum.start ? 'start' : 'end') - offset;\n }\n return series.totalPositionX(datum, 'end') + (datum.end >= datum.start ? offset : -offset);\n };\n const y = (datum: any) => {\n if (series.direction === Direction.vertical) {\n if (pos === 'middle') {\n return (series.totalPositionY(datum, 'end') + series.totalPositionY(datum, 'start')) * 0.5;\n } else if (pos === 'max') {\n return series.totalPositionY(datum, datum.end >= datum.start ? 'end' : 'start') - offset;\n } else if (pos === 'min') {\n return series.totalPositionY(datum, datum.end >= datum.start ? 'start' : 'end') + offset;\n }\n return series.totalPositionY(datum, 'end') + (datum.end >= datum.start ? -offset : offset);\n }\n return series.totalPositionY(datum, 'index', 0.5);\n };\n attribute.x = x(datum);\n attribute.y = y(datum);\n if (series.direction === Direction.vertical) {\n attribute.textBaseline =\n pos === 'middle'\n ? pos\n : (pos === 'withChange' && datum.end - datum.start >= 0) || pos === 'max'\n ? 'bottom'\n : 'top';\n } else {\n attribute.textAlign =\n pos === 'middle'\n ? 'center'\n : (pos === 'withChange' && datum.end - datum.start >= 0) || pos === 'max'\n ? 'left'\n : 'right';\n }\n return createText({ ...attribute, id: label.id });\n });\n },\n dataFilter: (labels: LabelItem[]) => {\n const result: LabelItem[] = [];\n totalData.forEach((total: any) => {\n const label = labels.find(labelItem => {\n return total.index === labelItem.data?.[series.getDimensionField()[0]];\n });\n if (label) {\n label.data = total;\n result.push(label);\n }\n });\n return result;\n },\n overlap: {\n strategy: [] as any\n }\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/component/label/util.ts"],"names":[],"mappings":";;;AACA,2CAAsD;AAItD,6CAA4C;AAC5C,+CAA+C;AAGlC,QAAA,YAAY,GAAG;IAC1B,IAAI,EAAE,QAAQ;IACd,MAAM,EAAE,WAAW;IACnB,GAAG,EAAE,QAAQ;IACb,KAAK,EAAE,UAAU;IAEjB,UAAU,EAAE,UAAU;CACvB,CAAC;AAEF,IAAY,SAMX;AAND,WAAY,SAAS;IACnB,0BAAa,CAAA;IACb,8BAAiB,CAAA;IACjB,wBAAW,CAAA;IACX,4BAAe,CAAA;IACf,sCAAyB,CAAA;AAC3B,CAAC,EANW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAMpB;AAED,SAAgB,aAAa,CAC3B,SAAqB,EACrB,KAAY,EACZ,YAA0E;IAE1E,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACxC,MAAM,KAAK,GAAG,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1C,MAAM,aAAa,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAS,CAAC;IAEjE,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAC5D,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE;QAC5B,MAAM,IAAI,GAAG,SAAS,CAAC,YAAY,CAAC,GAAU,EAAE,KAAK,CAAC,CAAC;QACvD,aAAa,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;QAC1B,IAAI,GAAG,KAAK,MAAM,IAAI,YAAY,EAAE;YAClC,aAAa,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;SAC9D;KACF;IACD,OAAO,aAAa,CAAC;AACvB,CAAC;AAlBD,sCAkBC;AAKD,SAAgB,WAAW,CAAC,SAAqB;;IAC/C,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,SAAS,CAAC;IAGxC,MAAM,eAAe,GAAI,MAA2B,CAAC,SAAS,KAAK,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;IAClG,MAAM,QAAQ,GAAG,MAAA,SAAS,CAAC,QAAQ,mCAAI,eAAe,CAAC;IAGvD,IAAI,OAAO,CAAC;IACZ,IAAI,SAAS,CAAC,OAAO,KAAK,KAAK,EAAE;QAC/B,OAAO,GAAG,KAAK,CAAC;KACjB;SAAM;QACL,OAAO,GAAG;YACR,QAAQ,EAAE,MAAA,MAAA,SAAS,CAAC,OAAO,0CAAE,QAAQ,mCAAI,0BAA0B,EAAE;YACrE,aAAa,EAAE,QAAQ,KAAK,QAAQ;SACrC,CAAC;KACH;IAED,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;AAC/B,CAAC;AAnBD,kCAmBC;AAED,SAAS,0BAA0B;IACjC,MAAM,QAAQ,GAAe;QAC3B;YACE,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE,cAAc,CAAC;SACrG;KACF,CAAC;IAEF,OAAO,QAAQ,CAAC;AAClB,CAAC;AAKD,SAAgB,QAAQ,CAAC,SAAqB;;IAC5C,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,EAAE,EAAE,GAAG,SAAS,CAAC;IAG7C,MAAM,aAAa,GAAG,MAAA,SAAS,CAAC,QAAQ,mCAAI,SAAS,CAAC;IACtD,MAAM,SAAS,GAAG,MAAC,MAA2B,CAAC,SAAS,mCAAI,UAAU,CAAC;IACvE,MAAM,SAAS,GACZ,MAA2B,CAAC,SAAS,KAAK,YAAY;QACrD,CAAC,CAAC,MAAC,MAA2B,CAAC,cAAc,EAAE,0CAAE,SAAS,EAAE;QAC5D,CAAC,CAAC,MAAC,MAA2B,CAAC,cAAc,EAAE,0CAAE,SAAS,EAAE,CAAC;IAEjE,IAAI,QAAQ,GAAG,aAA2C,CAAC;IAE3D,IAAI,QAAQ,KAAK,QAAQ,EAAE;QACzB,QAAQ,GAAG,CAAC,IAAW,EAAE,EAAE;YACzB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;YAC7B,MAAM,SAAS,GAAG,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC;YAC9C,IAAI,aAAa,KAAK,SAAS,EAAE;gBAC/B,MAAM,WAAW,GAAG,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC;gBACnF,MAAM,KAAK,GAAG,CAAC,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,SAAS,CAAC,KAAI,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,SAAS,CAAC,IAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvG,OAAO,WAAW,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC;aACtC;YACD,IAAI,aAAa,KAAK,eAAe,EAAE;gBACrC,OAAQ,MAA2B,CAAC,SAAS,KAAK,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,eAAe,CAAC;aAClG;YACD,IAAI,aAAa,KAAK,YAAY,EAAE;gBAClC,OAAQ,MAA2B,CAAC,SAAS,KAAK,YAAY,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC;aAChG;YACD,OAAO,aAAa,CAAC;QACvB,CAAC,CAAC;KACH;IAED,IAAI,OAAO,CAAC;IACZ,IAAI,SAAS,CAAC,OAAO,KAAK,KAAK,EAAE;QAC/B,OAAO,GAAG,KAAK,CAAC;KACjB;SAAM;QACL,OAAO,GAAG;YACR,QAAQ,EAAE,MAAA,MAAA,SAAS,CAAC,OAAO,0CAAE,QAAQ,mCAAI,uBAAuB,CAAC,MAA0B,CAAC;SAC7F,CAAC;KACH;IAGD,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,IAAI,IAAA,iBAAQ,EAAC,aAAa,CAAC,IAAI,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;QAC/D,WAAW,GAAG,IAAI,CAAC;KACpB;IAED,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;AAC5C,CAAC;AAhDD,4BAgDC;AAED,SAAS,uBAAuB,CAAC,MAAwB;IACvD,MAAM,QAAQ,GAAe;QAC3B;YACE,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE,CAAC,IAAS,EAAE,EAAE;;gBACtB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;gBAC7B,MAAM,SAAS,GAAG,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC9C,MAAM,SAAS,GACZ,MAA2B,CAAC,SAAS,KAAK,YAAY;oBACrD,CAAC,CAAC,MAAC,MAA2B,CAAC,cAAc,EAAE,0CAAE,SAAS,EAAE;oBAC5D,CAAC,CAAC,MAAC,MAA2B,CAAC,cAAc,EAAE,0CAAE,SAAS,EAAE,CAAC;gBACjE,IAAI,SAAS,EAAE;oBACb,IAAI,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,SAAS,CAAC,KAAI,CAAC,EAAE;wBAC3B,OAAO,MAAM,CAAC,SAAS,KAAK,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;qBAClG;oBACD,OAAO,MAAM,CAAC,SAAS,KAAK,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;iBAC9F;gBACD,IAAI,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,SAAS,CAAC,KAAI,CAAC,EAAE;oBAC3B,OAAO,MAAM,CAAC,SAAS,KAAK,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;iBAC9F;gBACD,OAAO,MAAM,CAAC,SAAS,KAAK,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;YACnG,CAAC;SACF;KACF,CAAC;IAEF,OAAO,QAAQ,CAAC;AAClB,CAAC;AAKD,SAAgB,UAAU,CAAC,SAAqB;IAC9C,MAAM,EAAE,SAAS,EAAE,GAAG,SAAS,CAAC;IAGhC,IAAI,OAAO,CAAC;IACZ,IAAI,SAAS,CAAC,OAAO,KAAK,KAAK,EAAE;QAC/B,OAAO,GAAG,KAAK,CAAC;KACjB;SAAM;QACL,OAAO,GAAG;YACR,aAAa,EAAE,KAAK;SACrB,CAAC;KACH;IAED,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;AACzC,CAAC;AAdD,gCAcC;AAMD,SAAgB,QAAQ,CAAC,SAAqB;;IAC5C,MAAM,EAAE,SAAS,EAAE,GAAG,SAAS,CAAC;IAEhC,MAAM,aAAa,GAAG,MAAA,SAAS,CAAC,QAAQ,mCAAI,SAAS,CAAC;IACtD,MAAM,QAAQ,GAAG,aAA2C,CAAC;IAG7D,IAAI,WAAW,CAAC;IAChB,IAAI,SAAS,CAAC,WAAW,EAAE;QACzB,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC;KACrC;SAAM;QACL,WAAW,GAAG,IAAA,iBAAQ,EAAC,aAAa,CAAC,IAAI,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;KAC3E;IAED,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;AACnC,CAAC;AAfD,4BAeC;AAMD,SAAgB,UAAU,CAAC,SAAqB;IAC9C,MAAM,MAAM,GAAG,SAAS,CAAC,MAAyB,CAAC;IACnD,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,IAAK,EAAyC,CAAC;IACpF,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;IACxC,OAAO;QACL,gBAAgB,EAAE,CAAC,MAAmB,EAAE,EAAE;YACxC,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;gBACxB,MAAM,GAAG,GAAG,SAAS,CAAC,QAAQ,IAAI,YAAY,CAAC;gBAC/C,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,IAAI,CAAC,CAAC;gBAErC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;gBACzB,MAAM,SAAS,GAAG,aAAa,CAAC,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC;gBAC1E,MAAM,CAAC,GAAG,CAAC,KAAU,EAAE,EAAE;oBACvB,IAAI,MAAM,CAAC,SAAS,KAAK,mBAAS,CAAC,QAAQ,EAAE;wBAC3C,OAAO,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;qBACnD;oBACD,IAAI,GAAG,KAAK,QAAQ,EAAE;wBACpB,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,GAAG,GAAG,CAAC;qBAC5F;yBAAM,IAAI,GAAG,KAAK,KAAK,EAAE;wBACxB,OAAO,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC;qBAC1F;yBAAM,IAAI,GAAG,KAAK,KAAK,EAAE;wBACxB,OAAO,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC;qBAC1F;oBACD,OAAO,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBAC7F,CAAC,CAAC;gBACF,MAAM,CAAC,GAAG,CAAC,KAAU,EAAE,EAAE;oBACvB,IAAI,MAAM,CAAC,SAAS,KAAK,mBAAS,CAAC,QAAQ,EAAE;wBAC3C,IAAI,GAAG,KAAK,QAAQ,EAAE;4BACpB,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,GAAG,GAAG,CAAC;yBAC5F;6BAAM,IAAI,GAAG,KAAK,KAAK,EAAE;4BACxB,OAAO,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC;yBAC1F;6BAAM,IAAI,GAAG,KAAK,KAAK,EAAE;4BACxB,OAAO,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC;yBAC1F;wBACD,OAAO,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;qBAC5F;oBACD,OAAO,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;gBACpD,CAAC,CAAC;gBACF,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;gBACvB,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;gBACvB,IAAI,MAAM,CAAC,SAAS,KAAK,mBAAS,CAAC,QAAQ,EAAE;oBAC3C,SAAS,CAAC,YAAY;wBACpB,GAAG,KAAK,QAAQ;4BACd,CAAC,CAAC,GAAG;4BACL,CAAC,CAAC,CAAC,GAAG,KAAK,YAAY,IAAI,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,GAAG,KAAK,KAAK;gCACzE,CAAC,CAAC,QAAQ;gCACV,CAAC,CAAC,KAAK,CAAC;iBACb;qBAAM;oBACL,SAAS,CAAC,SAAS;wBACjB,GAAG,KAAK,QAAQ;4BACd,CAAC,CAAC,QAAQ;4BACV,CAAC,CAAC,CAAC,GAAG,KAAK,YAAY,IAAI,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,GAAG,KAAK,KAAK;gCACzE,CAAC,CAAC,MAAM;gCACR,CAAC,CAAC,OAAO,CAAC;iBACf;gBACD,OAAO,IAAA,oBAAU,kCAAM,SAAS,KAAE,EAAE,EAAE,KAAK,CAAC,EAAE,IAAG,CAAC;YACpD,CAAC,CAAC,CAAC;QACL,CAAC;QACD,UAAU,EAAE,CAAC,MAAmB,EAAE,EAAE;YAClC,MAAM,MAAM,GAAgB,EAAE,CAAC;YAC/B,SAAS,CAAC,OAAO,CAAC,CAAC,KAAU,EAAE,EAAE;gBAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;;oBACpC,OAAO,KAAK,CAAC,KAAK,MAAK,MAAA,SAAS,CAAC,IAAI,0CAAG,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA,CAAC;gBACzE,CAAC,CAAC,CAAC;gBACH,IAAI,KAAK,EAAE;oBACT,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC;oBACnB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBACpB;YACH,CAAC,CAAC,CAAC;YACH,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,OAAO,EAAE;YACP,QAAQ,EAAE,EAAS;SACpB;KACF,CAAC;AACJ,CAAC;AA3ED,gCA2EC","file":"util.js","sourcesContent":["import type { WaterfallSeries } from './../../series/waterfall/waterfall';\nimport { Direction, type Datum } from '../../typings';\nimport type { ILabelInfo } from './label';\nimport type { BaseLabelAttrs, LabelItem, Strategy } from '@visactor/vrender-components';\nimport type { ICartesianSeries } from '../../series/interface';\nimport { isString } from '@visactor/vutils';\nimport { createText } from '@visactor/vrender';\nimport type { IWaterfallSeriesSpec } from '../../series/waterfall/interface';\n\nexport const labelRuleMap = {\n rect: barLabel,\n symbol: symbolLabel,\n arc: pieLabel,\n point: pointLabel,\n\n stackLabel: stackLabel\n};\n\nexport enum LabelRule {\n rect = 'rect',\n symbol = 'symbol',\n arc = 'arc',\n point = 'point',\n stackLabel = 'stackLabel'\n}\n\nexport function textAttribute(\n labelInfo: ILabelInfo,\n datum: Datum,\n formatMethod?: (text: string | string[], datum?: any) => string | string[]\n) {\n const { labelMark, series } = labelInfo;\n const field = series.getMeasureField()[0];\n const textAttribute = { text: datum[field], data: datum } as any;\n\n const attributes = Object.keys(labelMark.stateStyle.normal);\n for (const key of attributes) {\n const attr = labelMark.getAttribute(key as any, datum);\n textAttribute[key] = attr;\n if (key === 'text' && formatMethod) {\n textAttribute[key] = formatMethod(textAttribute[key], datum);\n }\n }\n return textAttribute;\n}\n\n/**\n * symbol 图元标签规则。\n */\nexport function symbolLabel(labelInfo: ILabelInfo) {\n const { series, labelSpec } = labelInfo;\n\n // encode position config\n const defaultPosition = (series as ICartesianSeries).direction === 'horizontal' ? 'right' : 'top';\n const position = labelSpec.position ?? defaultPosition;\n\n // encode overlap config\n let overlap;\n if (labelSpec.overlap === false) {\n overlap = false;\n } else {\n overlap = {\n strategy: labelSpec.overlap?.strategy ?? symbolLabelOverlapStrategy(),\n avoidBaseMark: position !== 'center'\n };\n }\n\n return { position, overlap };\n}\n\nfunction symbolLabelOverlapStrategy() {\n const strategy: Strategy[] = [\n {\n type: 'position',\n position: ['top', 'bottom', 'right', 'left', 'top-right', 'top-left', 'bottom-left', 'bottom-right']\n }\n ];\n\n return strategy;\n}\n\n/**\n *\n */\nexport function barLabel(labelInfo: ILabelInfo) {\n const { series, labelSpec = {} } = labelInfo;\n\n // encode position config\n const labelPosition = labelSpec.position ?? 'outside';\n const direction = (series as ICartesianSeries).direction ?? 'vertical';\n const isInverse =\n (series as ICartesianSeries).direction === 'horizontal'\n ? (series as ICartesianSeries).getXAxisHelper()?.isInverse()\n : (series as ICartesianSeries).getYAxisHelper()?.isInverse();\n\n let position = labelPosition as BaseLabelAttrs['position'];\n\n if (position !== 'inside') {\n position = (data: Datum) => {\n const { data: datum } = data;\n const dataField = series.getMeasureField()[0];\n if (labelPosition === 'outside') {\n const positionMap = { vertical: ['top', 'bottom'], horizontal: ['right', 'left'] };\n const index = (datum?.[dataField] >= 0 && isInverse) || (datum?.[dataField] < 0 && !isInverse) ? 1 : 0;\n return positionMap[direction][index];\n }\n if (labelPosition === 'inside-bottom') {\n return (series as ICartesianSeries).direction === 'horizontal' ? 'inside-left' : 'inside-bottom';\n }\n if (labelPosition === 'inside-top') {\n return (series as ICartesianSeries).direction === 'horizontal' ? 'inside-right' : 'inside-top';\n }\n return labelPosition;\n };\n }\n // encode overlap config\n let overlap;\n if (labelSpec.overlap === false) {\n overlap = false;\n } else {\n overlap = {\n strategy: labelSpec.overlap?.strategy ?? barLabelOverlapStrategy(series as ICartesianSeries)\n };\n }\n\n // encode smartInvert\n let smartInvert = false;\n if (isString(labelPosition) && labelPosition.includes('inside')) {\n smartInvert = true;\n }\n\n return { position, overlap, smartInvert };\n}\n\nfunction barLabelOverlapStrategy(series: ICartesianSeries) {\n const strategy: Strategy[] = [\n {\n type: 'position',\n position: (data: any) => {\n const { data: datum } = data;\n const dataField = series.getMeasureField()[0];\n const isInverse =\n (series as ICartesianSeries).direction === 'horizontal'\n ? (series as ICartesianSeries).getXAxisHelper()?.isInverse()\n : (series as ICartesianSeries).getYAxisHelper()?.isInverse();\n if (isInverse) {\n if (datum?.[dataField] >= 0) {\n return series.direction === 'horizontal' ? ['left', 'inside-left'] : ['bottom', 'inside-bottom'];\n }\n return series.direction === 'horizontal' ? ['right', 'inside-right'] : ['top', 'inside-top'];\n }\n if (datum?.[dataField] >= 0) {\n return series.direction === 'horizontal' ? ['right', 'inside-right'] : ['top', 'inside-top'];\n }\n return series.direction === 'horizontal' ? ['left', 'inside-left'] : ['bottom', 'inside-bottom'];\n }\n }\n ];\n\n return strategy;\n}\n\n/**\n * 无关图元,指定x/y坐标的标签配置规则\n */\nexport function pointLabel(labelInfo: ILabelInfo) {\n const { labelSpec } = labelInfo;\n\n // encode overlap config\n let overlap;\n if (labelSpec.overlap === false) {\n overlap = false;\n } else {\n overlap = {\n avoidBaseMark: false\n };\n }\n\n return { position: 'center', overlap };\n}\n\n/**\n * pie 图元标签配置规则\n */\n\nexport function pieLabel(labelInfo: ILabelInfo) {\n const { labelSpec } = labelInfo;\n // encode position config\n const labelPosition = labelSpec.position ?? 'outside';\n const position = labelPosition as BaseLabelAttrs['position'];\n\n // encode smartInvert\n let smartInvert;\n if (labelSpec.smartInvert) {\n smartInvert = labelSpec.smartInvert;\n } else {\n smartInvert = isString(labelPosition) && labelPosition.includes('inside');\n }\n\n return { position, smartInvert };\n}\n\n/**\n * 瀑布图堆积标签配置规则\n */\n\nexport function stackLabel(labelInfo: ILabelInfo) {\n const series = labelInfo.series as WaterfallSeries;\n const labelSpec = labelInfo.labelSpec || ({} as IWaterfallSeriesSpec['stackLabel']);\n const totalData = series.getTotalData();\n return {\n customLayoutFunc: (labels: LabelItem[]) => {\n return labels.map(label => {\n const pos = labelSpec.position || 'withChange';\n const offset = labelSpec.offset || 0;\n\n const datum = label.data;\n const attribute = textAttribute(labelInfo, datum, labelSpec.formatMethod);\n const x = (datum: any) => {\n if (series.direction === Direction.vertical) {\n return series.totalPositionX(datum, 'index', 0.5);\n }\n if (pos === 'middle') {\n return (series.totalPositionX(datum, 'end') + series.totalPositionY(datum, 'start')) * 0.5;\n } else if (pos === 'max') {\n return series.totalPositionX(datum, datum.end >= datum.start ? 'end' : 'start') + offset;\n } else if (pos === 'min') {\n return series.totalPositionX(datum, datum.end >= datum.start ? 'start' : 'end') - offset;\n }\n return series.totalPositionX(datum, 'end') + (datum.end >= datum.start ? offset : -offset);\n };\n const y = (datum: any) => {\n if (series.direction === Direction.vertical) {\n if (pos === 'middle') {\n return (series.totalPositionY(datum, 'end') + series.totalPositionY(datum, 'start')) * 0.5;\n } else if (pos === 'max') {\n return series.totalPositionY(datum, datum.end >= datum.start ? 'end' : 'start') - offset;\n } else if (pos === 'min') {\n return series.totalPositionY(datum, datum.end >= datum.start ? 'start' : 'end') + offset;\n }\n return series.totalPositionY(datum, 'end') + (datum.end >= datum.start ? -offset : offset);\n }\n return series.totalPositionY(datum, 'index', 0.5);\n };\n attribute.x = x(datum);\n attribute.y = y(datum);\n if (series.direction === Direction.vertical) {\n attribute.textBaseline =\n pos === 'middle'\n ? pos\n : (pos === 'withChange' && datum.end - datum.start >= 0) || pos === 'max'\n ? 'bottom'\n : 'top';\n } else {\n attribute.textAlign =\n pos === 'middle'\n ? 'center'\n : (pos === 'withChange' && datum.end - datum.start >= 0) || pos === 'max'\n ? 'left'\n : 'right';\n }\n return createText({ ...attribute, id: label.id });\n });\n },\n dataFilter: (labels: LabelItem[]) => {\n const result: LabelItem[] = [];\n totalData.forEach((total: any) => {\n const label = labels.find(labelItem => {\n return total.index === labelItem.data?.[series.getDimensionField()[0]];\n });\n if (label) {\n label.data = total;\n result.push(label);\n }\n });\n return result;\n },\n overlap: {\n strategy: [] as any\n }\n };\n}\n"]}
|
|
@@ -6,7 +6,7 @@ import type { LayoutItem } from '../../model/layout-item';
|
|
|
6
6
|
import type { IOrientType, IPoint, StringOrNumber } from '../../typings';
|
|
7
7
|
import { CompilableData } from '../../compile/data';
|
|
8
8
|
import type { ILegend, ILegendCommonSpec } from './interface';
|
|
9
|
-
import type { IGroup } from '@visactor/vrender
|
|
9
|
+
import type { IGroup } from '@visactor/vrender';
|
|
10
10
|
export declare abstract class BaseLegend<T extends ILegendCommonSpec> extends BaseComponent<T> implements ILegend {
|
|
11
11
|
layoutType: LayoutItem['layoutType'];
|
|
12
12
|
layoutZIndex: LayoutItem['layoutZIndex'];
|