@visactor/vchart 1.7.4 → 1.7.5

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.
Files changed (161) hide show
  1. package/build/es5/index.js +1 -1
  2. package/build/index.js +29256 -32302
  3. package/build/index.min.js +1 -1
  4. package/build/tsconfig.tsbuildinfo +1 -1
  5. package/cjs/chart/base-chart.js +2 -1
  6. package/cjs/chart/base-chart.js.map +1 -1
  7. package/cjs/component/axis/base-axis.d.ts +5 -2
  8. package/cjs/component/axis/base-axis.js +41 -14
  9. package/cjs/component/axis/base-axis.js.map +1 -1
  10. package/cjs/component/axis/cartesian/axis.d.ts +2 -1
  11. package/cjs/component/axis/cartesian/axis.js +10 -28
  12. package/cjs/component/axis/cartesian/axis.js.map +1 -1
  13. package/cjs/component/axis/cartesian/time-axis.js +9 -17
  14. package/cjs/component/axis/cartesian/time-axis.js.map +1 -1
  15. package/cjs/component/axis/mixin/linear-axis-mixin.js +11 -15
  16. package/cjs/component/axis/mixin/linear-axis-mixin.js.map +1 -1
  17. package/cjs/component/axis/polar/axis.d.ts +2 -0
  18. package/cjs/component/axis/polar/axis.js +10 -26
  19. package/cjs/component/axis/polar/axis.js.map +1 -1
  20. package/cjs/component/brush/brush.js +2 -3
  21. package/cjs/component/brush/brush.js.map +1 -1
  22. package/cjs/component/data-zoom/data-zoom/data-zoom.js +26 -24
  23. package/cjs/component/data-zoom/data-zoom/data-zoom.js.map +1 -1
  24. package/cjs/component/geo/projection.js +10 -6
  25. package/cjs/component/geo/projection.js.map +1 -1
  26. package/cjs/component/marker/base-marker.js +4 -10
  27. package/cjs/component/marker/base-marker.js.map +1 -1
  28. package/cjs/component/marker/mark-area/mark-area.js +16 -15
  29. package/cjs/component/marker/mark-area/mark-area.js.map +1 -1
  30. package/cjs/component/marker/mark-line/mark-line.js +22 -21
  31. package/cjs/component/marker/mark-line/mark-line.js.map +1 -1
  32. package/cjs/component/marker/mark-point/mark-point.js +30 -26
  33. package/cjs/component/marker/mark-point/mark-point.js.map +1 -1
  34. package/cjs/core/index.d.ts +1 -1
  35. package/cjs/core/index.js +1 -1
  36. package/cjs/core/index.js.map +1 -1
  37. package/cjs/event/events/dimension/util/cartesian.js +5 -17
  38. package/cjs/event/events/dimension/util/cartesian.js.map +1 -1
  39. package/cjs/event/events/dimension/util/common.d.ts +1 -0
  40. package/cjs/event/events/dimension/util/common.js +9 -1
  41. package/cjs/event/events/dimension/util/common.js.map +1 -1
  42. package/cjs/event/events/dimension/util/polar.js +4 -17
  43. package/cjs/event/events/dimension/util/polar.js.map +1 -1
  44. package/cjs/series/area/area.js +8 -8
  45. package/cjs/series/area/area.js.map +1 -1
  46. package/cjs/series/area/interface.d.ts +2 -2
  47. package/cjs/series/area/interface.js.map +1 -1
  48. package/cjs/series/bar/bar.js +3 -3
  49. package/cjs/series/bar/bar.js.map +1 -1
  50. package/cjs/series/bar/interface.d.ts +2 -2
  51. package/cjs/series/bar/interface.js.map +1 -1
  52. package/cjs/series/circle-packing/circle-packing.js +2 -2
  53. package/cjs/series/circle-packing/circle-packing.js.map +1 -1
  54. package/cjs/series/correlation/correlation.js +30 -26
  55. package/cjs/series/correlation/correlation.js.map +1 -1
  56. package/cjs/series/dot/dot.js +2 -2
  57. package/cjs/series/dot/dot.js.map +1 -1
  58. package/cjs/series/funnel/funnel.js +8 -8
  59. package/cjs/series/funnel/funnel.js.map +1 -1
  60. package/cjs/series/line/interface.d.ts +2 -2
  61. package/cjs/series/line/interface.js.map +1 -1
  62. package/cjs/series/pie/pie.d.ts +2 -0
  63. package/cjs/series/pie/pie.js +29 -23
  64. package/cjs/series/pie/pie.js.map +1 -1
  65. package/cjs/series/rose/rose.d.ts +3 -0
  66. package/cjs/series/rose/rose.js +15 -2
  67. package/cjs/series/rose/rose.js.map +1 -1
  68. package/cjs/series/sankey/sankey.js +8 -7
  69. package/cjs/series/sankey/sankey.js.map +1 -1
  70. package/cjs/series/scatter/interface.d.ts +2 -2
  71. package/cjs/series/scatter/interface.js.map +1 -1
  72. package/cjs/series/word-cloud/base.d.ts +3 -0
  73. package/cjs/series/word-cloud/base.js +86 -73
  74. package/cjs/series/word-cloud/base.js.map +1 -1
  75. package/cjs/series/word-cloud/word-cloud-3d.d.ts +22 -1
  76. package/cjs/series/word-cloud/word-cloud-3d.js +29 -148
  77. package/cjs/series/word-cloud/word-cloud-3d.js.map +1 -1
  78. package/cjs/typings/spec/chart.d.ts +2 -1
  79. package/cjs/typings/spec/chart.js.map +1 -1
  80. package/cjs/util/model.d.ts +1 -0
  81. package/cjs/util/model.js +15 -1
  82. package/cjs/util/model.js.map +1 -1
  83. package/esm/chart/base-chart.js +2 -1
  84. package/esm/chart/base-chart.js.map +1 -1
  85. package/esm/component/axis/base-axis.d.ts +5 -2
  86. package/esm/component/axis/base-axis.js +47 -13
  87. package/esm/component/axis/base-axis.js.map +1 -1
  88. package/esm/component/axis/cartesian/axis.d.ts +2 -1
  89. package/esm/component/axis/cartesian/axis.js +9 -34
  90. package/esm/component/axis/cartesian/axis.js.map +1 -1
  91. package/esm/component/axis/cartesian/time-axis.js +9 -17
  92. package/esm/component/axis/cartesian/time-axis.js.map +1 -1
  93. package/esm/component/axis/mixin/linear-axis-mixin.js +7 -5
  94. package/esm/component/axis/mixin/linear-axis-mixin.js.map +1 -1
  95. package/esm/component/axis/polar/axis.d.ts +2 -0
  96. package/esm/component/axis/polar/axis.js +9 -32
  97. package/esm/component/axis/polar/axis.js.map +1 -1
  98. package/esm/component/brush/brush.js +2 -3
  99. package/esm/component/brush/brush.js.map +1 -1
  100. package/esm/component/data-zoom/data-zoom/data-zoom.js +26 -24
  101. package/esm/component/data-zoom/data-zoom/data-zoom.js.map +1 -1
  102. package/esm/component/geo/projection.js +10 -6
  103. package/esm/component/geo/projection.js.map +1 -1
  104. package/esm/component/marker/base-marker.js +5 -9
  105. package/esm/component/marker/base-marker.js.map +1 -1
  106. package/esm/component/marker/mark-area/mark-area.js +16 -15
  107. package/esm/component/marker/mark-area/mark-area.js.map +1 -1
  108. package/esm/component/marker/mark-line/mark-line.js +22 -21
  109. package/esm/component/marker/mark-line/mark-line.js.map +1 -1
  110. package/esm/component/marker/mark-point/mark-point.js +30 -26
  111. package/esm/component/marker/mark-point/mark-point.js.map +1 -1
  112. package/esm/core/index.d.ts +1 -1
  113. package/esm/core/index.js +1 -1
  114. package/esm/core/index.js.map +1 -1
  115. package/esm/event/events/dimension/util/cartesian.js +7 -18
  116. package/esm/event/events/dimension/util/cartesian.js.map +1 -1
  117. package/esm/event/events/dimension/util/common.d.ts +1 -0
  118. package/esm/event/events/dimension/util/common.js +5 -0
  119. package/esm/event/events/dimension/util/common.js.map +1 -1
  120. package/esm/event/events/dimension/util/polar.js +6 -17
  121. package/esm/event/events/dimension/util/polar.js.map +1 -1
  122. package/esm/series/area/area.js +8 -8
  123. package/esm/series/area/area.js.map +1 -1
  124. package/esm/series/area/interface.d.ts +2 -2
  125. package/esm/series/area/interface.js.map +1 -1
  126. package/esm/series/bar/bar.js +3 -3
  127. package/esm/series/bar/bar.js.map +1 -1
  128. package/esm/series/bar/interface.d.ts +2 -2
  129. package/esm/series/bar/interface.js.map +1 -1
  130. package/esm/series/circle-packing/circle-packing.js +2 -2
  131. package/esm/series/circle-packing/circle-packing.js.map +1 -1
  132. package/esm/series/correlation/correlation.js +30 -26
  133. package/esm/series/correlation/correlation.js.map +1 -1
  134. package/esm/series/dot/dot.js +2 -2
  135. package/esm/series/dot/dot.js.map +1 -1
  136. package/esm/series/funnel/funnel.js +8 -8
  137. package/esm/series/funnel/funnel.js.map +1 -1
  138. package/esm/series/line/interface.d.ts +2 -2
  139. package/esm/series/line/interface.js.map +1 -1
  140. package/esm/series/pie/pie.d.ts +2 -0
  141. package/esm/series/pie/pie.js +26 -19
  142. package/esm/series/pie/pie.js.map +1 -1
  143. package/esm/series/rose/rose.d.ts +3 -0
  144. package/esm/series/rose/rose.js +15 -2
  145. package/esm/series/rose/rose.js.map +1 -1
  146. package/esm/series/sankey/sankey.js +8 -7
  147. package/esm/series/sankey/sankey.js.map +1 -1
  148. package/esm/series/scatter/interface.d.ts +2 -2
  149. package/esm/series/scatter/interface.js.map +1 -1
  150. package/esm/series/word-cloud/base.d.ts +3 -0
  151. package/esm/series/word-cloud/base.js +86 -73
  152. package/esm/series/word-cloud/base.js.map +1 -1
  153. package/esm/series/word-cloud/word-cloud-3d.d.ts +22 -1
  154. package/esm/series/word-cloud/word-cloud-3d.js +29 -153
  155. package/esm/series/word-cloud/word-cloud-3d.js.map +1 -1
  156. package/esm/typings/spec/chart.d.ts +2 -1
  157. package/esm/typings/spec/chart.js.map +1 -1
  158. package/esm/util/model.d.ts +1 -0
  159. package/esm/util/model.js +12 -0
  160. package/esm/util/model.js.map +1 -1
  161. package/package.json +9 -9
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/component/axis/base-axis.ts"],"names":[],"mappings":"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","file":"base-axis.js","sourcesContent":["import type { IBaseScale } from '@visactor/vscale';\n// eslint-disable-next-line no-duplicate-imports\nimport { isContinuous } from '@visactor/vscale';\nimport type { IGroup, IGraphic, IGraphicAttribute } from '@visactor/vrender-core';\n// eslint-disable-next-line no-duplicate-imports\nimport type { AxisItem } from '@visactor/vrender-components';\nimport type { IOrientType, IPolarOrientType, Datum, StringOrNumber, IGroup as ISeriesGroup } from '../../typings';\nimport { BaseComponent } from '../base/base-component';\nimport type { IPolarAxisCommonTheme } from './polar/interface';\nimport type { ICartesianAxisCommonTheme } from './cartesian/interface';\nimport type { CompilableData } from '../../compile/data';\nimport type { IAxis, ICommonAxisSpec, ITick, StatisticsDomain } from './interface';\nimport type { IComponentOption } from '../interface';\nimport { array, get, isArray, isBoolean, isFunction, isNil, isValid, maxInArray } from '@visactor/vutils';\nimport { eachSeries, getSeries } from '../../util/model';\nimport { mergeSpec } from '../../util/spec/merge-spec';\nimport type { ISeries } from '../../series/interface';\nimport { ChartEvent, LayoutZIndex } from '../../constant';\nimport { animationConfig } from '../../animation/utils';\nimport { degreeToRadian, pickWithout, type LooseFunction, isEqual } from '@visactor/vutils';\nimport { DEFAULT_TITLE_STYLE, transformAxisLineStyle } from './util';\nimport { transformAxisLabelStateStyle, transformStateStyle, transformToGraphic } from '../../util/style';\nimport type { ITransformOptions } from '@visactor/vdataset';\nimport {\n GridEnum,\n registerAxis as registerVGrammarAxis,\n registerGrid as registerVGrammarGrid\n} from '@visactor/vgrammar-core';\nimport { ComponentMark, type IComponentMark } from '../../mark/component';\nimport { Factory } from '../../core/factory';\nimport { GroupFadeIn, GroupTransition } from '@visactor/vrender-components';\nimport { GroupFadeOut } from '@visactor/vrender-core';\n\nexport abstract class AxisComponent<T extends ICommonAxisSpec & Record<string, any> = any> // FIXME: 补充公共类型,去掉 Record<string, any>\n extends BaseComponent<T>\n implements IAxis\n{\n static specKey = 'axes';\n specKey = 'axes';\n\n protected _orient: IPolarOrientType | IOrientType;\n getOrient() {\n return this._orient;\n }\n\n protected _scale!: IBaseScale;\n getScale() {\n return this._scale;\n }\n\n protected _scales: IBaseScale[] = [];\n getScales() {\n return this._scales;\n }\n\n protected declare _theme: ICartesianAxisCommonTheme | IPolarAxisCommonTheme;\n\n protected _tickData!: CompilableData;\n getTickData() {\n return this._tickData;\n }\n\n // 与系列的关联关系\n // 优先级:id > index\n // 最终结果:series & region取交集\n protected _seriesUserId?: StringOrNumber[];\n protected _seriesIndex?: number[];\n protected _regionUserId?: StringOrNumber[];\n protected _regionIndex?: number[];\n\n /**\n * if axis will be shown\n */\n protected _visible: boolean = true;\n get visible() {\n return this._visible;\n }\n\n protected _tick: ITick | undefined = undefined;\n protected abstract computeDomain(data: { min: number; max: number; values: any[] }[]): StringOrNumber[];\n abstract valueToPosition(value: any): number;\n protected abstract axisHelper(): any;\n protected abstract getSeriesStatisticsField(s: ISeries): string[];\n protected abstract updateSeriesScale(): void;\n protected abstract collectData(depth: number): { min: number; max: number; values: any[] }[];\n protected abstract _initData(): void;\n abstract transformScaleDomain(): void;\n\n protected _dataFieldText: string;\n protected _axisMark: IComponentMark;\n protected _gridMark: IComponentMark;\n\n constructor(spec: T, options: IComponentOption) {\n super(spec, options);\n this._visible = spec.visible ?? true;\n }\n\n protected _getNeedClearVRenderComponents(): IGraphic[] {\n return [];\n }\n\n getVRenderComponents() {\n return array(this._axisMark?.getProduct()?.getGroupGraphicItem());\n }\n\n created() {\n super.created();\n //series and regions\n this.setSeriesAndRegionsFromSpec();\n // event\n this.initEvent();\n // scales\n this.initScales();\n this.updateSeriesScale();\n // data,当且仅当轴展示的时候处理\n this.getVisible() && this._initData();\n\n if (this._visible) {\n // 创建语法元素\n const axisMark = this._createMark(\n { type: 'component', name: `axis-${this.getOrient()}` },\n {\n componentType: this.getOrient() === 'angle' ? 'circleAxis' : 'axis',\n mode: this._spec.mode,\n noSeparateStyle: true,\n skipTheme: true // skip theme of vgrammar to avoid merge\n }\n );\n this._axisMark = axisMark;\n axisMark.setZIndex(this.layoutZIndex);\n if (isValid(this._spec.id)) {\n axisMark.setUserId(this._spec.id);\n }\n this._marks.addMark(axisMark);\n\n if (this._spec.grid?.visible) {\n const gridMark = this._createMark(\n { type: 'component', name: `axis-${this.getOrient()}-grid` },\n {\n componentType: this.getOrient() === 'angle' ? GridEnum.circleAxisGrid : GridEnum.lineAxisGrid,\n mode: this._spec.mode,\n noSeparateStyle: true,\n skipTheme: true\n }\n );\n gridMark.setZIndex(this._spec.grid?.style?.zIndex ?? this._spec.grid?.zIndex ?? LayoutZIndex.Axis_Grid);\n this._marks.addMark(gridMark);\n this._gridMark = gridMark;\n }\n\n // interactive\n if (isBoolean(this._spec.interactive)) {\n this._marks.forEach(m => m.setInteractive(this._spec.interactive));\n }\n\n // Tip: 支持 spec.animationAppear.axis,并且坐标轴默认关闭动画\n if (\n this._option.animation !== false &&\n get(this._option.getChart().getSpec(), 'animation') !== false &&\n this._spec.animation === true\n ) {\n const axisAnimateConfig = animationConfig(Factory.getAnimationInKey('axis')?.(), {\n appear:\n this._spec.animationAppear ??\n get(this._option.getChart().getSpec(), 'animationAppear.axis') ??\n get(this._option.getChart().getSpec(), 'animationAppear'),\n disappear:\n this._spec.animationDisappear ??\n get(this._option.getChart().getSpec(), 'animationDisappear.axis') ??\n get(this._option.getChart().getSpec(), 'animationDisappear'),\n enter:\n this._spec.animationEnter ??\n get(this._option.getChart().getSpec(), 'animationEnter.axis') ??\n get(this._option.getChart().getSpec(), 'animationEnter'),\n exit:\n this._spec.animationExit ??\n get(this._option.getChart().getSpec(), 'animationExit.axis') ??\n get(this._option.getChart().getSpec(), 'animationExit'),\n update:\n this._spec.animationUpdate ??\n get(this._option.getChart().getSpec(), 'animationUpdate.axis') ??\n get(this._option.getChart().getSpec(), 'animationUpdate')\n });\n // 因为坐标轴的更新动画中处理了 enter,所以需要将 enter 的参数传入\n axisAnimateConfig.update[0].customParameters = {\n enter: axisAnimateConfig.enter[0]\n };\n this._marks.forEach(m => m.setAnimationConfig(axisAnimateConfig));\n }\n }\n }\n\n protected isSeriesDataEnable() {\n let enable = true;\n eachSeries(\n this._regions,\n s => {\n if (isArray(s.getViewDataStatistics()?.latestData)) {\n enable = false;\n }\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n return enable;\n }\n\n protected setSeriesAndRegionsFromSpec() {\n const { seriesId, seriesIndex, regionId, regionIndex } = this._spec;\n isValid(seriesId) && (this._seriesUserId = array(seriesId));\n isValid(regionId) && (this._regionUserId = array(regionId));\n isValid(seriesIndex) && (this._seriesIndex = array(seriesIndex));\n isValid(regionIndex) && (this._regionIndex = array(regionIndex));\n this._regions = this._option.getRegionsInUserIdOrIndex(this._regionUserId as string[], this._regionIndex);\n // _regions 被更新了,layoutBindRegionID 也要更新\n this.layout.layoutBindRegionID = this._regions.map(x => x.id);\n }\n\n getBindSeriesFilter() {\n return {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n };\n }\n\n protected initEvent() {\n this.event.on(\n ChartEvent.scaleUpdate,\n { filter: ({ model }) => model?.id === this.id },\n this.effect.scaleUpdate.bind(this)\n );\n const viewStatistics = getSeries(this._regions, {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n })\n .map(s => s.getViewDataStatistics())\n .filter(v => !!v);\n\n if (viewStatistics.length > 1) {\n this._option.dataSet.multipleDataViewAddListener(viewStatistics, 'change', () => {\n this.updateScaleDomain();\n });\n } else if (viewStatistics.length === 1) {\n viewStatistics[0].target.addListener('change', () => {\n this.updateScaleDomain();\n });\n }\n }\n\n protected updateScaleDomain() {\n // 留给各个类型的 axis 来 override\n }\n\n protected computeData(updateType?: 'domain' | 'range' | 'force'): void {\n if (this._tickData && (updateType === 'force' || !isEqual(this._scale.range(), [0, 1]))) {\n this._tickData.getDataView().reRunAllTransform();\n this._tickData.updateData();\n }\n }\n\n protected initScales() {\n this._scales = [this._scale];\n const groups: ISeriesGroup[] = [];\n eachSeries(\n this._regions,\n s => {\n const g = s.getGroups();\n g && groups.push(g);\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n if (groups.length !== 0) {\n const depth = maxInArray(groups.map(g => g.fields.length));\n for (let i = 1; i < depth; i++) {\n const scale = this._scale.clone();\n this._scales.push(scale);\n }\n }\n // this.updateScaleDomain();\n }\n\n /** Update API **/\n _compareSpec() {\n const result = super._compareSpec();\n result.reRender = true;\n if (this._originalSpec?.type !== this._spec?.type) {\n result.reMake = true;\n return result;\n }\n return result;\n }\n\n protected getLabelFormatMethod() {\n return this._spec.label.formatMethod\n ? (value: any, datum: any, index: number) => this._spec.label.formatMethod(datum.rawValue, datum)\n : null;\n }\n\n protected getLabelItems(length: number) {\n return isArray(this._tickData.getLatestData())\n ? [\n this._tickData\n .getLatestData()\n .map((obj: Datum) => {\n return {\n id: obj.value,\n label: obj.value,\n value: length === 0 ? 0 : this.dataToPosition([obj.value]) / length,\n rawValue: obj.value\n };\n })\n .filter((entry: AxisItem) => entry.value >= 0 && entry.value <= 1)\n ]\n : [];\n }\n\n protected _delegateAxisContainerEvent(component: IGroup) {\n component.addEventListener('*', ((event: any, type: string) =>\n this._delegateEvent(component as unknown as IGraphic, event, type)) as LooseFunction);\n }\n\n protected _getAxisAttributes() {\n const spec = this._spec;\n let titleAngle = spec.title.angle;\n let titleTextStyle;\n if (spec.orient === 'left' || spec.orient === 'right') {\n // 处理纵轴的标题样式\n if (spec.title?.autoRotate && isNil(spec.title.angle)) {\n titleAngle = spec.orient === 'left' ? -90 : 90;\n titleTextStyle = DEFAULT_TITLE_STYLE[spec.orient];\n }\n }\n\n const labelSpec = pickWithout(spec.label, ['style', 'formatMethod', 'state']);\n\n return {\n orient: this.getOrient(),\n select: spec.select,\n hover: spec.hover,\n line: transformAxisLineStyle(spec.domainLine),\n label: {\n style: isFunction(spec.label.style)\n ? (datum: Datum, index: number, data: Datum[], layer?: number) => {\n const style = spec.label.style(datum.rawValue, index, datum, data, layer);\n return transformToGraphic(mergeSpec({}, this._theme.label?.style, style));\n }\n : transformToGraphic(spec.label.style),\n formatMethod: spec.label.formatMethod\n ? (value: any, datum: any, index: number) => {\n return spec.label.formatMethod(datum.rawValue, datum);\n }\n : null,\n state: transformAxisLabelStateStyle(spec.label.state),\n ...labelSpec\n },\n tick: {\n visible: spec.tick.visible,\n length: spec.tick.tickSize,\n inside: spec.tick.inside,\n alignWithLabel: spec.tick.alignWithLabel,\n style: isFunction(spec.tick.style)\n ? (value: number, index: number, datum: Datum, data: Datum[]) => {\n const style = (spec.tick.style as any)(value, index, datum, data);\n return transformToGraphic(mergeSpec({}, this._theme.tick?.style, style));\n }\n : transformToGraphic(spec.tick.style),\n state: transformStateStyle(spec.tick.state),\n dataFilter: spec.tick.dataFilter\n },\n subTick: {\n visible: spec.subTick.visible,\n length: spec.subTick.tickSize,\n inside: spec.subTick.inside,\n count: spec.subTick.tickCount,\n style: isFunction(spec.subTick.style)\n ? (value: number, index: number, datum: Datum, data: Datum[]) => {\n const style = (spec.subTick.style as any)(value, index, datum, data);\n return transformToGraphic(mergeSpec({}, this._theme.subTick?.style, style));\n }\n : transformToGraphic(spec.subTick.style),\n state: transformStateStyle(spec.subTick.state)\n },\n title: {\n visible: spec.title.visible,\n position: spec.title.position,\n space: spec.title.space,\n autoRotate: false, // 默认不对外提供该配置\n angle: titleAngle ? degreeToRadian(titleAngle) : null,\n textStyle: mergeSpec({}, titleTextStyle, transformToGraphic(spec.title.style)),\n padding: spec.title.padding,\n shape: {\n visible: spec.title.shape?.visible,\n space: spec.title.shape?.space,\n style: transformToGraphic(spec.title.shape?.style)\n },\n background: {\n visible: spec.title.background?.visible,\n style: transformToGraphic(spec.title.background?.style)\n },\n state: {\n text: transformStateStyle(spec.title.state),\n shape: transformStateStyle(spec.title.shape?.state),\n background: transformStateStyle(spec.title.background?.state)\n },\n pickable: spec.title.style?.pickable !== false,\n childrenPickable: spec.title.style?.pickable !== false,\n ...spec.title\n },\n panel: {\n visible: spec.background?.visible,\n style: transformToGraphic(spec.background?.style),\n state: transformStateStyle(spec.background?.state)\n }\n };\n }\n\n protected _getGridAttributes() {\n const spec = this._spec;\n return {\n alternateColor: spec.grid.alternateColor,\n alignWithLabel: spec.grid.alignWithLabel,\n style: isFunction(spec.grid.style)\n ? () => {\n return (datum: Datum, index: number) => {\n const style = spec.grid.style(datum.datum?.rawValue, index, datum.datum);\n return transformToGraphic(mergeSpec({}, this._theme.grid?.style, style));\n };\n }\n : transformToGraphic(spec.grid.style),\n subGrid: {\n type: 'line',\n visible: spec.subGrid.visible,\n alternateColor: spec.subGrid.alternateColor,\n style: transformToGraphic(spec.subGrid.style)\n }\n };\n }\n\n addTransformToTickData(options: ITransformOptions, execute?: boolean) {\n this._tickData?.getDataView()?.transform(options, execute);\n }\n\n dataToPosition(values: any[]): number {\n return this._scale.scale(values);\n }\n}\n\nexport const registerAxis = () => {\n registerVGrammarAxis();\n registerVGrammarGrid();\n Factory.registerMark(ComponentMark.type, ComponentMark);\n Factory.registerAnimation('axis', () => ({\n appear: {\n custom: GroupFadeIn\n },\n update: {\n custom: GroupTransition\n },\n exit: {\n custom: GroupFadeOut\n }\n }));\n};\n"]}
1
+ {"version":3,"sources":["../src/component/axis/base-axis.ts"],"names":[],"mappings":"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","file":"base-axis.js","sourcesContent":["import { ticks } from '@visactor/vutils-extension';\nimport type { ITickDataOpt } from '@visactor/vutils-extension';\nimport type { IBaseScale } from '@visactor/vscale';\n// eslint-disable-next-line no-duplicate-imports\nimport type { IGroup, IGraphic } from '@visactor/vrender-core';\n// eslint-disable-next-line no-duplicate-imports\nimport type { AxisItem } from '@visactor/vrender-components';\nimport type {\n IOrientType,\n IPolarOrientType,\n Datum,\n StringOrNumber,\n IGroup as ISeriesGroup,\n CoordinateType\n} from '../../typings';\nimport { BaseComponent } from '../base/base-component';\nimport type { IPolarAxisCommonTheme } from './polar/interface';\nimport type { ICartesianAxisCommonTheme } from './cartesian/interface';\nimport type { CompilableData } from '../../compile/data';\nimport type { IAxis, ICommonAxisSpec, ITick } from './interface';\nimport type { IComponentOption } from '../interface';\nimport { array, get, isArray, isBoolean, isFunction, isNil, isValid, maxInArray } from '@visactor/vutils';\nimport { eachSeries, getSeries } from '../../util/model';\nimport { mergeSpec } from '../../util/spec/merge-spec';\nimport type { ISeries } from '../../series/interface';\nimport { ChartEvent, LayoutZIndex } from '../../constant';\nimport { animationConfig } from '../../animation/utils';\nimport { degreeToRadian, pickWithout, type LooseFunction, isEqual } from '@visactor/vutils';\nimport { DEFAULT_TITLE_STYLE, transformAxisLineStyle } from './util';\nimport { transformAxisLabelStateStyle, transformStateStyle, transformToGraphic } from '../../util/style';\nimport { DataView, type ITransformOptions } from '@visactor/vdataset';\nimport {\n GridEnum,\n registerAxis as registerVGrammarAxis,\n registerGrid as registerVGrammarGrid\n} from '@visactor/vgrammar-core';\nimport { ComponentMark, type IComponentMark } from '../../mark/component';\nimport { Factory } from '../../core/factory';\nimport { GroupFadeIn, GroupTransition } from '@visactor/vrender-components';\nimport { GroupFadeOut } from '@visactor/vrender-core';\nimport { scaleParser } from '../../data/parser/scale';\nimport { registerDataSetInstanceParser, registerDataSetInstanceTransform } from '../../data/register';\n\nexport abstract class AxisComponent<T extends ICommonAxisSpec & Record<string, any> = any> // FIXME: 补充公共类型,去掉 Record<string, any>\n extends BaseComponent<T>\n implements IAxis\n{\n static specKey = 'axes';\n specKey = 'axes';\n\n protected _orient: IPolarOrientType | IOrientType;\n getOrient() {\n return this._orient;\n }\n\n protected _scale!: IBaseScale;\n getScale() {\n return this._scale;\n }\n\n protected _scales: IBaseScale[] = [];\n getScales() {\n return this._scales;\n }\n\n protected declare _theme: ICartesianAxisCommonTheme | IPolarAxisCommonTheme;\n\n protected _tickData!: CompilableData;\n getTickData() {\n return this._tickData;\n }\n\n // 与系列的关联关系\n // 优先级:id > index\n // 最终结果:series & region取交集\n protected _seriesUserId?: StringOrNumber[];\n protected _seriesIndex?: number[];\n protected _regionUserId?: StringOrNumber[];\n protected _regionIndex?: number[];\n\n /**\n * if axis will be shown\n */\n protected _visible: boolean = true;\n get visible() {\n return this._visible;\n }\n\n protected _tick: ITick | undefined = undefined;\n protected abstract computeDomain(data: { min: number; max: number; values: any[] }[]): StringOrNumber[];\n abstract valueToPosition(value: any): number;\n protected abstract axisHelper(): any;\n protected abstract getSeriesStatisticsField(s: ISeries): string[];\n protected abstract updateSeriesScale(): void;\n protected abstract collectData(depth: number): { min: number; max: number; values: any[] }[];\n protected abstract _initData(): void;\n abstract transformScaleDomain(): void;\n\n protected _dataFieldText: string;\n protected _axisMark: IComponentMark;\n protected _gridMark: IComponentMark;\n\n constructor(spec: T, options: IComponentOption) {\n super(spec, options);\n this._visible = spec.visible ?? true;\n }\n\n protected _getNeedClearVRenderComponents(): IGraphic[] {\n return [];\n }\n\n getVRenderComponents() {\n return array(this._axisMark?.getProduct()?.getGroupGraphicItem());\n }\n\n created() {\n super.created();\n //series and regions\n this.setSeriesAndRegionsFromSpec();\n // event\n this.initEvent();\n // scales\n this.initScales();\n this.updateSeriesScale();\n // data,当且仅当轴展示的时候处理\n this.getVisible() && this._initData();\n\n if (this._visible) {\n // 创建语法元素\n const axisMark = this._createMark(\n { type: 'component', name: `axis-${this.getOrient()}` },\n {\n componentType: this.getOrient() === 'angle' ? 'circleAxis' : 'axis',\n mode: this._spec.mode,\n noSeparateStyle: true,\n skipTheme: true // skip theme of vgrammar to avoid merge\n }\n );\n this._axisMark = axisMark;\n axisMark.setZIndex(this.layoutZIndex);\n if (isValid(this._spec.id)) {\n axisMark.setUserId(this._spec.id);\n }\n this._marks.addMark(axisMark);\n\n if (this._spec.grid?.visible) {\n const gridMark = this._createMark(\n { type: 'component', name: `axis-${this.getOrient()}-grid` },\n {\n componentType: this.getOrient() === 'angle' ? GridEnum.circleAxisGrid : GridEnum.lineAxisGrid,\n mode: this._spec.mode,\n noSeparateStyle: true,\n skipTheme: true\n }\n );\n gridMark.setZIndex(this._spec.grid?.style?.zIndex ?? this._spec.grid?.zIndex ?? LayoutZIndex.Axis_Grid);\n this._marks.addMark(gridMark);\n this._gridMark = gridMark;\n }\n\n // interactive\n if (isBoolean(this._spec.interactive)) {\n this._marks.forEach(m => m.setInteractive(this._spec.interactive));\n }\n\n // Tip: 支持 spec.animationAppear.axis,并且坐标轴默认关闭动画\n if (\n this._option.animation !== false &&\n get(this._option.getChart().getSpec(), 'animation') !== false &&\n this._spec.animation === true\n ) {\n const axisAnimateConfig = animationConfig(Factory.getAnimationInKey('axis')?.(), {\n appear:\n this._spec.animationAppear ??\n get(this._option.getChart().getSpec(), 'animationAppear.axis') ??\n get(this._option.getChart().getSpec(), 'animationAppear'),\n disappear:\n this._spec.animationDisappear ??\n get(this._option.getChart().getSpec(), 'animationDisappear.axis') ??\n get(this._option.getChart().getSpec(), 'animationDisappear'),\n enter:\n this._spec.animationEnter ??\n get(this._option.getChart().getSpec(), 'animationEnter.axis') ??\n get(this._option.getChart().getSpec(), 'animationEnter'),\n exit:\n this._spec.animationExit ??\n get(this._option.getChart().getSpec(), 'animationExit.axis') ??\n get(this._option.getChart().getSpec(), 'animationExit'),\n update:\n this._spec.animationUpdate ??\n get(this._option.getChart().getSpec(), 'animationUpdate.axis') ??\n get(this._option.getChart().getSpec(), 'animationUpdate')\n });\n // 因为坐标轴的更新动画中处理了 enter,所以需要将 enter 的参数传入\n axisAnimateConfig.update[0].customParameters = {\n enter: axisAnimateConfig.enter[0]\n };\n this._marks.forEach(m => m.setAnimationConfig(axisAnimateConfig));\n }\n }\n }\n\n protected isSeriesDataEnable() {\n let enable = true;\n eachSeries(\n this._regions,\n s => {\n if (isArray(s.getViewDataStatistics()?.latestData)) {\n enable = false;\n }\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n return enable;\n }\n\n protected setSeriesAndRegionsFromSpec() {\n const { seriesId, seriesIndex, regionId, regionIndex } = this._spec;\n isValid(seriesId) && (this._seriesUserId = array(seriesId));\n isValid(regionId) && (this._regionUserId = array(regionId));\n isValid(seriesIndex) && (this._seriesIndex = array(seriesIndex));\n isValid(regionIndex) && (this._regionIndex = array(regionIndex));\n this._regions = this._option.getRegionsInUserIdOrIndex(this._regionUserId as string[], this._regionIndex);\n // _regions 被更新了,layoutBindRegionID 也要更新\n this.layout.layoutBindRegionID = this._regions.map(x => x.id);\n }\n\n getBindSeriesFilter() {\n return {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n };\n }\n\n protected initEvent() {\n this.event.on(\n ChartEvent.scaleUpdate,\n { filter: ({ model }) => model?.id === this.id },\n this.effect.scaleUpdate.bind(this)\n );\n const viewStatistics = getSeries(this._regions, {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n })\n .map(s => s.getViewDataStatistics())\n .filter(v => !!v);\n\n if (viewStatistics.length > 1) {\n this._option.dataSet.multipleDataViewAddListener(viewStatistics, 'change', () => {\n this.updateScaleDomain();\n });\n } else if (viewStatistics.length === 1) {\n viewStatistics[0].target.addListener('change', () => {\n this.updateScaleDomain();\n });\n }\n }\n\n protected updateScaleDomain() {\n // 留给各个类型的 axis 来 override\n }\n\n protected computeData(updateType?: 'domain' | 'range' | 'force'): void {\n if (this._tickData && (updateType === 'force' || !isEqual(this._scale.range(), [0, 1]))) {\n this._tickData.getDataView().reRunAllTransform();\n this._tickData.updateData();\n }\n }\n\n protected initScales() {\n this._scales = [this._scale];\n const groups: ISeriesGroup[] = [];\n eachSeries(\n this._regions,\n s => {\n const g = s.getGroups();\n g && groups.push(g);\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n if (groups.length !== 0) {\n const depth = maxInArray(groups.map(g => g.fields.length));\n for (let i = 1; i < depth; i++) {\n const scale = this._scale.clone();\n this._scales.push(scale);\n }\n }\n // this.updateScaleDomain();\n }\n\n /** Update API **/\n _compareSpec() {\n const result = super._compareSpec();\n result.reRender = true;\n if (this._originalSpec?.type !== this._spec?.type) {\n result.reMake = true;\n return result;\n }\n return result;\n }\n\n protected getLabelFormatMethod() {\n return this._spec.label.formatMethod\n ? (value: any, datum: any, index: number) => this._spec.label.formatMethod(datum.rawValue, datum)\n : null;\n }\n\n protected getLabelItems(length: number) {\n return isArray(this._tickData.getLatestData())\n ? [\n this._tickData\n .getLatestData()\n .map((obj: Datum) => {\n return {\n id: obj.value,\n label: obj.value,\n value: length === 0 ? 0 : this.dataToPosition([obj.value]) / length,\n rawValue: obj.value\n };\n })\n .filter((entry: AxisItem) => entry.value >= 0 && entry.value <= 1)\n ]\n : [];\n }\n\n protected _delegateAxisContainerEvent(component: IGroup) {\n component.addEventListener('*', ((event: any, type: string) =>\n this._delegateEvent(component as unknown as IGraphic, event, type)) as LooseFunction);\n }\n\n protected _getAxisAttributes() {\n const spec = this._spec;\n let titleAngle = spec.title.angle;\n let titleTextStyle;\n if (spec.orient === 'left' || spec.orient === 'right') {\n // 处理纵轴的标题样式\n if (spec.title?.autoRotate && isNil(spec.title.angle)) {\n titleAngle = spec.orient === 'left' ? -90 : 90;\n titleTextStyle = DEFAULT_TITLE_STYLE[spec.orient];\n }\n }\n\n const labelSpec = pickWithout(spec.label, ['style', 'formatMethod', 'state']);\n const backgroundSpec = spec.background ?? {};\n const titleBackgroundSpec = spec.title.background ?? {};\n return {\n orient: this.getOrient(),\n select: spec.select,\n hover: spec.hover,\n line: transformAxisLineStyle(spec.domainLine),\n label: {\n style: isFunction(spec.label.style)\n ? (datum: Datum, index: number, data: Datum[], layer?: number) => {\n const style = spec.label.style(datum.rawValue, index, datum, data, layer);\n return transformToGraphic(mergeSpec({}, this._theme.label?.style, style));\n }\n : transformToGraphic(spec.label.style),\n formatMethod: spec.label.formatMethod\n ? (value: any, datum: any, index: number) => {\n return spec.label.formatMethod(datum.rawValue, datum);\n }\n : null,\n state: transformAxisLabelStateStyle(spec.label.state),\n ...labelSpec\n },\n tick: {\n visible: spec.tick.visible,\n length: spec.tick.tickSize,\n inside: spec.tick.inside,\n alignWithLabel: spec.tick.alignWithLabel,\n style: isFunction(spec.tick.style)\n ? (value: number, index: number, datum: Datum, data: Datum[]) => {\n const style = (spec.tick.style as any)(value, index, datum, data);\n return transformToGraphic(mergeSpec({}, this._theme.tick?.style, style));\n }\n : transformToGraphic(spec.tick.style),\n state: transformStateStyle(spec.tick.state),\n dataFilter: spec.tick.dataFilter\n },\n subTick: {\n visible: spec.subTick.visible,\n length: spec.subTick.tickSize,\n inside: spec.subTick.inside,\n count: spec.subTick.tickCount,\n style: isFunction(spec.subTick.style)\n ? (value: number, index: number, datum: Datum, data: Datum[]) => {\n const style = (spec.subTick.style as any)(value, index, datum, data);\n return transformToGraphic(mergeSpec({}, this._theme.subTick?.style, style));\n }\n : transformToGraphic(spec.subTick.style),\n state: transformStateStyle(spec.subTick.state)\n },\n title: {\n visible: spec.title.visible,\n position: spec.title.position,\n space: spec.title.space,\n autoRotate: false, // 默认不对外提供该配置\n angle: titleAngle ? degreeToRadian(titleAngle) : null,\n textStyle: mergeSpec({}, titleTextStyle, transformToGraphic(spec.title.style)),\n padding: spec.title.padding,\n shape: {\n visible: spec.title.shape?.visible,\n space: spec.title.shape?.space,\n style: transformToGraphic(spec.title.shape?.style)\n },\n background: {\n visible: titleBackgroundSpec.visible,\n style: transformToGraphic(titleBackgroundSpec.style)\n },\n state: {\n text: transformStateStyle(spec.title.state),\n shape: transformStateStyle(spec.title.shape?.state),\n background: transformStateStyle(titleBackgroundSpec.state)\n },\n pickable: spec.title.style?.pickable !== false,\n childrenPickable: spec.title.style?.pickable !== false,\n ...spec.title\n },\n panel: {\n visible: backgroundSpec.visible,\n style: transformToGraphic(backgroundSpec.style),\n state: transformStateStyle(backgroundSpec.state)\n }\n };\n }\n\n protected _getGridAttributes() {\n const spec = this._spec;\n return {\n alternateColor: spec.grid.alternateColor,\n alignWithLabel: spec.grid.alignWithLabel,\n style: isFunction(spec.grid.style)\n ? () => {\n return (datum: Datum, index: number) => {\n const style = spec.grid.style(datum.datum?.rawValue, index, datum.datum);\n return transformToGraphic(mergeSpec({}, this._theme.grid?.style, style));\n };\n }\n : transformToGraphic(spec.grid.style),\n subGrid: {\n type: 'line',\n visible: spec.subGrid.visible,\n alternateColor: spec.subGrid.alternateColor,\n style: transformToGraphic(spec.subGrid.style)\n }\n };\n }\n\n protected _initTickDataSet<T extends ITickDataOpt>(options: T) {\n registerDataSetInstanceParser(this._option.dataSet, 'scale', scaleParser);\n registerDataSetInstanceTransform(this._option.dataSet, 'ticks', ticks);\n const tickData = new DataView(this._option.dataSet, { name: `${this.type}_${this.id}_ticks` })\n .parse(this._scale, {\n type: 'scale'\n })\n .transform(\n {\n type: 'ticks',\n options\n },\n false\n );\n return tickData;\n }\n\n protected _tickTransformOption(coordinateType: CoordinateType): ITickDataOpt {\n const tick = this._tick || {};\n const label = this._spec.label || {};\n const { tickCount, forceTickCount, tickStep, tickMode } = tick;\n const { style: labelStyle, formatMethod: labelFormatter, minGap: labelGap } = label;\n return {\n sampling: this._spec.sampling !== false,\n tickCount,\n forceTickCount,\n tickStep,\n tickMode,\n\n axisOrientType: this._orient,\n coordinateType: coordinateType,\n\n labelStyle,\n labelFormatter,\n labelGap\n };\n }\n\n addTransformToTickData(options: ITransformOptions, execute?: boolean) {\n this._tickData?.getDataView()?.transform(options, execute);\n }\n\n dataToPosition(values: any[]): number {\n return this._scale.scale(values);\n }\n}\n\nexport const registerAxis = () => {\n registerVGrammarAxis();\n registerVGrammarGrid();\n Factory.registerMark(ComponentMark.type, ComponentMark);\n Factory.registerAnimation('axis', () => ({\n appear: {\n custom: GroupFadeIn\n },\n update: {\n custom: GroupTransition\n },\n exit: {\n custom: GroupFadeOut\n }\n }));\n};\n"]}
@@ -11,6 +11,7 @@ import type { ILayoutRect, ILayoutType } from '../../../typings/layout';
11
11
  import type { IComponentOption } from '../../interface';
12
12
  import { ComponentTypeEnum } from '../../interface/type';
13
13
  import type { IAxis, ITick } from '../interface';
14
+ import type { ICartesianTickDataOpt, CoordinateType } from '@visactor/vutils-extension';
14
15
  import type { DataSet } from '@visactor/vdataset';
15
16
  import { AxisComponent } from '../base-axis';
16
17
  import type { IGraphic } from '@visactor/vrender-core';
@@ -69,7 +70,7 @@ export declare abstract class CartesianAxis<T extends ICartesianAxisCommonSpec =
69
70
  init(option: IModelInitOption): void;
70
71
  setAttrFromSpec(): void;
71
72
  protected getSeriesStatisticsField(s: ICartesianSeries): string[];
72
- protected _initTickData(sampling: boolean): void;
73
+ protected _tickTransformOption(coordinateType: CoordinateType): ICartesianTickDataOpt;
73
74
  protected _initData(): void;
74
75
  protected axisHelper(): IAxisHelper;
75
76
  afterCompile(): void;
@@ -30,14 +30,6 @@ import { HOOK_EVENT } from "@visactor/vgrammar-core";
30
30
 
31
31
  import { isValidCartesianAxis } from "../util";
32
32
 
33
- import { registerDataSetInstanceParser, registerDataSetInstanceTransform } from "../../../data/register";
34
-
35
- import { scaleParser } from "../../../data/parser/scale";
36
-
37
- import { ticks } from "@visactor/vutils-extension";
38
-
39
- import { DataView } from "@visactor/vdataset";
40
-
41
33
  import { CompilableData } from "../../../compile/data/compilable-data";
42
34
 
43
35
  import { AxisComponent } from "../base-axis";
@@ -204,34 +196,17 @@ export class CartesianAxis extends AxisComponent {
204
196
  return f = isXAxis(this.getOrient()) ? s.fieldX : isZAxis(this.getOrient()) ? s.fieldZ : s.fieldY,
205
197
  isContinuous(this._scale.type) ? f : [ f[0] ];
206
198
  }
207
- _initTickData(sampling) {
208
- registerDataSetInstanceParser(this._option.dataSet, "scale", scaleParser), registerDataSetInstanceTransform(this._option.dataSet, "ticks", ticks);
209
- const label = this._spec.label || {}, tick = this._tick || {}, tickData = new DataView(this._option.dataSet, {
210
- name: `${this.type}_${this.id}_ticks`
211
- }).parse(this._scale, {
212
- type: "scale"
213
- }).transform({
214
- type: "ticks",
215
- options: {
216
- sampling: sampling,
217
- tickCount: tick.tickCount,
218
- forceTickCount: tick.forceTickCount,
219
- tickStep: tick.tickStep,
220
- tickMode: tick.tickMode,
221
- noDecimals: tick.noDecimals,
222
- axisOrientType: this._orient,
223
- coordinateType: "cartesian",
224
- labelStyle: label.style,
225
- labelFormatter: label.formatMethod,
226
- labelGap: label.minGap,
227
- labelLastVisible: label.lastVisible,
228
- labelFlush: label.flush
229
- }
230
- }, !1);
231
- tickData.target.addListener("change", this._forceLayout.bind(this)), this._tickData = new CompilableData(this._option, tickData);
199
+ _tickTransformOption(coordinateType) {
200
+ var _a, _b;
201
+ return Object.assign(Object.assign({}, super._tickTransformOption(coordinateType)), {
202
+ noDecimals: this._tick.noDecimals,
203
+ labelLastVisible: null === (_a = this._spec.label) || void 0 === _a ? void 0 : _a.lastVisible,
204
+ labelFlush: null === (_b = this._spec.label) || void 0 === _b ? void 0 : _b.flush
205
+ });
232
206
  }
233
207
  _initData() {
234
- this._initTickData(!1 !== this._spec.sampling);
208
+ const tickData = this._initTickDataSet(this._tickTransformOption("cartesian"));
209
+ tickData.target.addListener("change", this._forceLayout.bind(this)), this._tickData = new CompilableData(this._option, tickData);
235
210
  }
236
211
  axisHelper() {
237
212
  return {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/component/axis/cartesian/axis.ts"],"names":[],"mappings":"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","file":"axis.js","sourcesContent":["import type { IBounds, IBoundsLike } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport type { IEffect, IModelInitOption } from '../../../model/interface';\nimport type { ICartesianSeries } from '../../../series/interface';\nimport type { IRegion } from '../../../region/interface';\nimport type { ICartesianAxisCommonSpec, IAxisHelper, ICartesianAxisCommonTheme } from './interface';\nimport { isArray, isValid, isValidNumber, mergeSpec, eachSeries, isNil, isUndefined } from '../../../util';\nimport type { IOrientType } from '../../../typings/space';\n// eslint-disable-next-line no-duplicate-imports\nimport { Direction } from '../../../typings/space';\nimport type { IBaseScale } from '@visactor/vscale';\n// eslint-disable-next-line no-duplicate-imports\nimport { isContinuous } from '@visactor/vscale';\nimport { Factory } from '../../../core/factory';\nimport { autoAxisType, isXAxis, getOrient, isZAxis, isYAxis, transformInverse } from './util/common';\nimport { ChartEvent, DEFAULT_LAYOUT_RECT_LEVEL, LayoutZIndex, USER_LAYOUT_RECT_LEVEL } from '../../../constant';\nimport { LayoutLevel } from '../../../constant/index';\nimport pluginMap from '../../../plugin/components';\nimport type { StringOrNumber } from '../../../typings/common';\nimport type { IPoint } from '../../../typings/coordinate';\nimport type { ILayoutRect, ILayoutType } from '../../../typings/layout';\nimport type { IComponentOption } from '../../interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { ComponentTypeEnum } from '../../interface/type';\nimport { HOOK_EVENT } from '@visactor/vgrammar-core';\nimport type { LineAxisAttributes } from '@visactor/vrender-components';\n// eslint-disable-next-line no-duplicate-imports\nimport { isValidCartesianAxis } from '../util';\nimport type { IAxis, ITick } from '../interface';\nimport { registerDataSetInstanceParser, registerDataSetInstanceTransform } from '../../../data/register';\nimport { scaleParser } from '../../../data/parser/scale';\nimport type { ICartesianTickDataOpt } from '@visactor/vutils-extension';\n// eslint-disable-next-line no-duplicate-imports\nimport { ticks } from '@visactor/vutils-extension';\nimport type { DataSet } from '@visactor/vdataset';\n// eslint-disable-next-line no-duplicate-imports\nimport { DataView } from '@visactor/vdataset';\nimport { CompilableData } from '../../../compile/data/compilable-data';\nimport { AxisComponent } from '../base-axis';\nimport type { IGraphic, IText } from '@visactor/vrender-core';\n// eslint-disable-next-line no-duplicate-imports\nimport { createText } from '@visactor/vrender-core';\n\nconst CartesianAxisPlugin = [pluginMap.AxisSyncPlugin];\n\nexport abstract class CartesianAxis<T extends ICartesianAxisCommonSpec = ICartesianAxisCommonSpec>\n extends AxisComponent<T>\n implements IAxis\n{\n static type = ComponentTypeEnum.cartesianAxis;\n type = ComponentTypeEnum.cartesianAxis;\n name: string = ComponentTypeEnum.cartesianAxis;\n\n protected readonly _defaultBandPosition = 0.5;\n protected readonly _defaultBandInnerPadding = 0.1;\n protected readonly _defaultBandOuterPadding = 0.3;\n\n // 标记这个布局Item的方向(left->right, right->left, top->bottom, bottom->top)\n declare directionStr?: 'l2r' | 'r2l' | 't2b' | 'b2t';\n\n layoutType: ILayoutType = 'region-relative';\n layoutZIndex: number = LayoutZIndex.Axis;\n layoutLevel: number = LayoutLevel.Axis;\n\n protected _dataSet: DataSet;\n\n layout3dBox?: { width: number; height: number; length: number };\n\n protected _orient: IOrientType = 'left';\n getOrient() {\n return this._orient;\n }\n\n protected _autoIndentOnce: boolean = false;\n protected _hasAutoIndent: boolean = false;\n set autoIndentOnce(v: boolean) {\n this._autoIndentOnce = v;\n }\n\n protected _scales: IBaseScale[] = [];\n getScales() {\n return this._scales;\n }\n\n protected declare _theme: ICartesianAxisCommonTheme;\n\n protected _tick: ITick | undefined = undefined;\n\n private _axisStyle: Partial<LineAxisAttributes>;\n private _latestBounds: IBounds;\n private _verticalLimitSize: number;\n private _unitText: IText;\n\n protected _layoutCache: {\n width: number;\n height: number;\n _lastComputeOutBounds: IBoundsLike;\n } = { width: 0, height: 0, _lastComputeOutBounds: { x1: 0, x2: 0, y1: 0, y2: 0 } };\n\n constructor(spec: T, options: IComponentOption) {\n super(spec, options);\n this._orient = getOrient(spec, ['z']);\n if (isZAxis(this._orient)) {\n this.layoutType = 'absolute';\n }\n this._dataSet = options.dataSet;\n }\n\n static createAxis(spec: any, options: IComponentOption, isHorizontal: boolean = false): IAxis {\n const axisType = spec.type ?? autoAxisType(spec.orient, isHorizontal);\n const componentName = `${CartesianAxis.type}-${axisType}`;\n const C = Factory.getComponentInKey(componentName);\n if (C) {\n return new C(\n {\n ...spec,\n type: axisType\n },\n {\n ...options,\n type: componentName\n }\n ) as IAxis;\n }\n options.onError(`Component ${componentName} not found`);\n return null;\n }\n\n static createComponent(spec: any, options: IComponentOption) {\n const regions = options.getRegionsInIndex();\n if (regions.find(r => r.coordinate !== 'cartesian')) {\n return null;\n }\n let axesSpec = spec[CartesianAxis.specKey];\n if (!axesSpec) {\n return null;\n }\n const isHorizontal = spec.direction === Direction.horizontal;\n if (!isArray(axesSpec)) {\n // 如果非法,或者只有一个z轴就不创建\n if (!isValidCartesianAxis(axesSpec)) {\n return null;\n }\n return CartesianAxis.createAxis(axesSpec, options, isHorizontal);\n }\n // 处理spec\n const zAxis = axesSpec.filter(s => s.orient === 'z')[0];\n let valid = true;\n if (zAxis) {\n const xAxis = axesSpec.filter(s => s.orient === 'bottom')[0];\n const yAxis = axesSpec.filter(s => isYAxis(s.orient))[0];\n // 必须有x和y,且x必须是bottom\n valid = axesSpec.length === 3 && xAxis && yAxis;\n }\n if (!valid) {\n axesSpec = axesSpec.filter(s => s.orient !== 'z');\n }\n const axes: IAxis[] = [];\n axesSpec.forEach((s: any, i: any) => {\n if (!isValidCartesianAxis(s)) {\n return;\n }\n axes.push(\n CartesianAxis.createAxis(\n s,\n {\n ...options,\n specIndex: i\n },\n isHorizontal\n ) as IAxis\n );\n });\n return axes;\n }\n\n initLayout(): void {\n super.initLayout();\n this._layout.autoIndent = this._spec.autoIndent !== false;\n this._layout.layoutOrient = this._orient;\n }\n\n setLayout3dBox(box3d: { width: number; height: number; length: number }) {\n this.layout3dBox = box3d;\n }\n\n effect: IEffect = {\n scaleUpdate: params => {\n this.computeData(params?.value);\n eachSeries(\n this._regions,\n s => {\n const orient = this.getOrient();\n\n if (isXAxis(orient)) {\n (s as ICartesianSeries).setXAxisHelper(this.axisHelper());\n } else if (isYAxis(orient)) {\n (s as ICartesianSeries).setYAxisHelper(this.axisHelper());\n } else if (isZAxis(orient)) {\n (s as ICartesianSeries).setZAxisHelper(this.axisHelper());\n }\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n }\n };\n\n protected abstract computeDomain(data: { min: number; max: number; values: any[] }[]): StringOrNumber[];\n abstract valueToPosition(value: any): number;\n\n protected updateScaleRange() {\n let isScaleChange = false;\n const { width, height } = this.getLayoutRect();\n const inverse = this._spec.inverse;\n let newRange: number[] = [];\n if (isXAxis(this.getOrient())) {\n if (isValidNumber(width)) {\n newRange = inverse ? [width, 0] : [0, width];\n }\n } else if (isZAxis(this.getOrient())) {\n if (isValidNumber(width)) {\n newRange = inverse ? [width, 0] : [0, width];\n this._scale.range(newRange);\n }\n } else {\n if (isValidNumber(height)) {\n newRange = inverse ? [0, height] : [height, 0];\n }\n }\n\n const [start, end] = this._scale.range();\n if (newRange[0] !== start || newRange[1] !== end) {\n isScaleChange = true;\n this._scale.range(newRange);\n }\n\n return isScaleChange;\n }\n\n init(option: IModelInitOption): void {\n super.init(option);\n this.pluginService?.load(CartesianAxisPlugin.map(P => new P()));\n this.callPlugin(plugin => {\n this.pluginService && plugin.onInit && plugin.onInit(this.pluginService, this);\n });\n }\n\n setAttrFromSpec() {\n super.setAttrFromSpec();\n\n if (this.visible) {\n const isX = isXAxis(this.getOrient());\n if (isX) {\n if (isUndefined(this._spec.maxHeight)) {\n this._spec.maxHeight = '30%';\n }\n } else if (isUndefined(this._spec.maxWidth)) {\n this._spec.maxWidth = '30%';\n }\n\n const axisStyle: any = this._getAxisAttributes();\n axisStyle.label.formatMethod = this.getLabelFormatMethod();\n axisStyle.verticalFactor = this.getOrient() === 'top' || this.getOrient() === 'right' ? -1 : 1;\n this._axisStyle = axisStyle;\n }\n this._tick = this._spec.tick;\n }\n\n protected getSeriesStatisticsField(s: ICartesianSeries) {\n let f: string[];\n if (isXAxis(this.getOrient())) {\n f = s.fieldX;\n } else if (isZAxis(this.getOrient())) {\n f = s.fieldZ;\n } else {\n f = s.fieldY;\n }\n if (isContinuous(this._scale.type)) {\n return f;\n }\n return [f[0]];\n }\n\n protected _initTickData(sampling: boolean) {\n registerDataSetInstanceParser(this._option.dataSet, 'scale', scaleParser);\n registerDataSetInstanceTransform(this._option.dataSet, 'ticks', ticks);\n\n const label = this._spec.label || {};\n const tick = this._tick || {};\n const tickData = new DataView(this._option.dataSet, { name: `${this.type}_${this.id}_ticks` })\n .parse(this._scale, {\n type: 'scale'\n })\n .transform(\n {\n type: 'ticks',\n options: {\n sampling,\n tickCount: tick.tickCount,\n forceTickCount: tick.forceTickCount,\n tickStep: tick.tickStep,\n tickMode: tick.tickMode,\n noDecimals: tick.noDecimals,\n\n axisOrientType: this._orient,\n coordinateType: 'cartesian',\n\n labelStyle: label.style,\n labelFormatter: label.formatMethod,\n labelGap: label.minGap,\n\n labelLastVisible: label.lastVisible,\n labelFlush: label.flush\n } as ICartesianTickDataOpt\n },\n false\n );\n tickData.target.addListener('change', this._forceLayout.bind(this));\n\n this._tickData = new CompilableData(this._option, tickData);\n }\n\n protected _initData() {\n this._initTickData(this._spec.sampling !== false); // default do sampling\n }\n\n protected axisHelper(): IAxisHelper {\n const getScale = (depth: number = 0) => {\n return this._scales[depth];\n };\n return {\n isContinuous: isContinuous(this._scale.type),\n dataToPosition: this.dataToPosition.bind(this),\n getScale,\n getAxisType: () => this.type,\n getAxisId: () => this.id,\n isInverse: () => this._spec.inverse === true\n };\n }\n\n /** LifeCycle API**/\n afterCompile() {\n const product = this._axisMark?.getProduct();\n if (product) {\n product.addEventListener(HOOK_EVENT.AFTER_ELEMENT_ENCODE, () => {\n if (this._isLayout === false) {\n // 布局结束之后再进行插件的调用\n // 插件在布局后\n if (isXAxis(this.getOrient())) {\n this.callPlugin(plugin => {\n this.pluginService &&\n plugin.onDidLayoutHorizontal &&\n plugin.onDidLayoutHorizontal(this.pluginService, this);\n });\n } else {\n this.callPlugin(plugin => {\n this.pluginService && plugin.onDidLayoutVertical && plugin.onDidLayoutVertical(this.pluginService, this);\n });\n }\n this._delegateAxisContainerEvent(product.getGroupGraphicItem());\n\n // 更新单位的显示位置\n if (this._unitText) {\n const bounds = product.graphicItem.AABBBounds;\n const pos = isXAxis(this._orient)\n ? {\n x: bounds.x2,\n y: this.getLayoutStartPoint().y\n }\n : {\n x: this.getLayoutStartPoint().x,\n y: bounds.y1\n };\n\n this._unitText.setAttributes(pos);\n }\n }\n });\n }\n this.callPlugin(plugin => {\n this.pluginService && plugin.onDidCompile && plugin.onDidCompile(this.pluginService, this);\n });\n }\n\n onLayoutEnd(ctx: any): void {\n const isRangeChange = this.updateScaleRange();\n if (isRangeChange) {\n this.event.emit(ChartEvent.scaleUpdate, { model: this, value: 'range' });\n // 这里会执行 computeData ,会执行系列scale更新\n } else {\n this.updateSeriesScale();\n }\n super.onLayoutEnd(ctx);\n }\n\n onRender(ctx: any): void {\n // do nothing\n }\n\n changeRegions(regions: IRegion[]): void {\n // do nothing\n }\n\n update(ctx: IComponentOption) {\n // TODO\n }\n\n resize(ctx: IComponentOption) {\n // TODO\n }\n\n protected collectScale() {\n const scales: IBaseScale[] = [];\n eachSeries(\n this._regions,\n s => {\n scales.push(\n this.getOrient() === 'left' || this.getOrient() === 'right'\n ? (s as ICartesianSeries).scaleY\n : (s as ICartesianSeries).scaleX\n );\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n return scales;\n }\n\n protected collectData(depth?: number) {\n const data: { min: number; max: number; values: any[] }[] = [];\n eachSeries(\n this._regions,\n s => {\n let field: string | string[];\n if (depth > 0) {\n field = s.getGroups()?.fields?.[depth];\n } else {\n if (isXAxis(this.getOrient())) {\n field = (s as ICartesianSeries).fieldX2\n ? [...(s as ICartesianSeries).fieldX, (s as ICartesianSeries).fieldX2]\n : (s as ICartesianSeries).fieldX;\n } else if (isZAxis(this.getOrient())) {\n field = (s as ICartesianSeries).fieldZ;\n } else {\n field = (s as ICartesianSeries).fieldY;\n }\n }\n field = (isArray(field) ? (isContinuous(this._scale.type) ? field : [field[0]]) : [field]) as string[];\n if (!depth) {\n this._dataFieldText = s.getFieldAlias(field[0]);\n }\n const seriesData = s.getViewDataStatistics?.();\n if (field) {\n field.forEach(f => {\n if (seriesData?.latestData?.[f]) {\n data.push(seriesData.latestData[f]);\n }\n });\n }\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n return data;\n }\n\n protected updateSeriesScale() {\n const orient = this.getOrient();\n eachSeries(\n this._regions,\n s => {\n if (isXAxis(orient)) {\n (s as ICartesianSeries).setScaleX(this._scale);\n (s as ICartesianSeries).setXAxisHelper(this.axisHelper());\n } else if (isYAxis(orient)) {\n (s as ICartesianSeries).setScaleY(this._scale);\n (s as ICartesianSeries).setYAxisHelper(this.axisHelper());\n } else if (isZAxis(orient)) {\n (s as ICartesianSeries).setScaleZ(this._scale);\n (s as ICartesianSeries).setZAxisHelper(this.axisHelper());\n }\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n }\n\n _transformLayoutPosition = (pos: Partial<IPoint>) => {\n let { x, y } = pos;\n if (isValidNumber(x)) {\n x += Number(this._orient === 'left') * this.getLayoutRect().width;\n }\n if (isValidNumber(y)) {\n y += Number(this._orient === 'top') * this.getLayoutRect().height;\n }\n return { x, y };\n };\n\n _transformLayoutRect = (result: ILayoutRect) => {\n if (!this._visible) {\n return result;\n }\n const bounds = this._latestBounds.clone().translate(-this.getLayoutStartPoint().x, -this.getLayoutStartPoint().y);\n switch (this._layout.layoutOrient) {\n case 'left':\n if (this._layout.layoutRectLevelMap.width === DEFAULT_LAYOUT_RECT_LEVEL) {\n result.width = bounds.x1 < 0 ? -bounds.x1 : 0;\n }\n break;\n case 'right':\n if (this._layout.layoutRectLevelMap.width === DEFAULT_LAYOUT_RECT_LEVEL) {\n result.width = bounds.x2 > 0 ? bounds.x2 : 0;\n }\n break;\n case 'top':\n if (this._layout.layoutRectLevelMap.height === DEFAULT_LAYOUT_RECT_LEVEL) {\n result.height = bounds.y1 < 0 ? -bounds.y1 : 0;\n }\n break;\n case 'bottom':\n if (this._layout.layoutRectLevelMap.height === DEFAULT_LAYOUT_RECT_LEVEL) {\n result.height = bounds.y2 > 0 ? bounds.y2 : 0;\n }\n break;\n default:\n break;\n }\n result.width = Math.ceil(result.width);\n result.height = Math.ceil(result.height);\n return this._layout.setRectInSpec(this._layoutCacheProcessing(result));\n };\n /**\n * bounds 预计算\n * @param rect\n * @returns\n */\n getBoundsInRect(rect: ILayoutRect): IBoundsLike {\n let result: IBoundsLike = { x1: 0, y1: 0, x2: 0, y2: 0 };\n if (!this._visible) {\n return result;\n }\n this._verticalLimitSize = isXAxis(this.getOrient()) ? rect.height : rect.width;\n\n this.setLayoutRect(rect);\n const isChanged = this.updateScaleRange();\n // 防止一直没有计算latestData\n if (isChanged || !isArray(this._tickData.getLatestData())) {\n this.computeData('range');\n }\n const context = { skipLayout: false };\n const isX = isXAxis(this.getOrient());\n if (this.pluginService) {\n isX\n ? this.callPlugin(plugin => {\n plugin.onWillLayoutHorizontal && plugin.onWillLayoutHorizontal(this.pluginService, context, this);\n })\n : this.callPlugin(plugin => {\n plugin.onWillLayoutVertical && plugin.onWillLayoutVertical(this.pluginService, context, this);\n });\n }\n const product = this._axisMark.getProduct();\n let hasBounds = false;\n\n if (!context.skipLayout) {\n const attrs = this._getUpdateAttribute(true);\n const axisComponent = product.getGroupGraphicItem();\n\n const spec = mergeSpec({ ...this.getLayoutStartPoint() }, this._axisStyle, attrs, { line: { visible: false } });\n const updateBounds = axisComponent.getBoundsWithoutRender(spec);\n\n hasBounds = true;\n this._latestBounds = updateBounds;\n if (isFinite(updateBounds.width())) {\n // 因为轴单位在某些区域显示的时候,是不参与轴某个方向的包围盒计算的,\n // 所以不太合适放在轴组件内支持,所以就在 VChart 层的轴组件上通过添加 text 图元支持\n result = this._appendAxisUnit(updateBounds, isX);\n }\n }\n\n if (!hasBounds) {\n this._latestBounds = product.getBounds();\n }\n return result;\n }\n\n updateLayoutAttribute(): void {\n if (!this.visible) {\n return;\n }\n const startPoint = this.getLayoutStartPoint();\n // 正式的更新布局属性\n const { grid: updateGridAttrs, ...updateAxisAttrs } = this._getUpdateAttribute(false);\n const axisProduct = this._axisMark.getProduct(); // 获取语法元素\n const axisAttrs = mergeSpec({ x: startPoint.x, y: startPoint.y }, this._axisStyle, updateAxisAttrs);\n axisProduct.encode(axisAttrs);\n\n if (this._gridMark) {\n const gridProduct = this._gridMark.getProduct(); // 获取语法元素\n gridProduct.encode(mergeSpec({ x: startPoint.x, y: startPoint.y }, this._getGridAttributes(), updateGridAttrs));\n }\n\n super.updateLayoutAttribute();\n }\n\n private _getTitleLimit(isX: boolean) {\n if (this._spec.title.visible && isNil(this._spec.title.style?.maxLineWidth)) {\n const angle = this._axisStyle.title?.angle ?? this._spec.title.style?.angle ?? 0;\n if (isX) {\n const width = this.getLayoutRect().width;\n const cosValue = Math.abs(Math.cos(angle));\n // VRender 接收到的limit是考虑角度计算后的宽度\n // TODO:还需要考虑angle后,高度是否太高,综合计算一个limit,比如高度不能超过图表整体高度的1/4\n return cosValue < 1e-6 ? Infinity : width / cosValue;\n }\n const height = this.getLayoutRect().height;\n const sinValue = Math.abs(Math.sin(angle));\n\n // TODO:还需要考虑angle后,宽度是否太宽,综合计算一个limit,比如宽度度不能超过图表整体宽度的1/4\n return sinValue < 1e-6 ? Infinity : height / sinValue;\n }\n\n return null;\n }\n\n private _getUpdateAttribute(ignoreGrid: boolean) {\n // 获取更新的坐标轴属性\n let regionHeight = 0;\n let regionWidth = 0;\n\n if (!ignoreGrid) {\n const regions = this.getRegions();\n let { x: minX, y: minY } = regions[0].getLayoutStartPoint();\n let maxX = minX + regions[0].getLayoutRect().width;\n let maxY = minY + regions[0].getLayoutRect().height;\n\n for (let index = 1; index < regions.length; index++) {\n const region = regions[index];\n const { x, y } = region.getLayoutStartPoint();\n const { width, height } = region.getLayoutRect();\n\n minX = Math.min(minX, x);\n maxX = Math.max(maxX, width + x);\n minY = Math.min(minY, y);\n maxY = Math.max(maxY, height + y);\n }\n regionHeight = Math.abs(maxY - minY);\n regionWidth = Math.abs(maxX - minX);\n }\n\n const { width, height } = this.getLayoutRect();\n const isX = isXAxis(this._orient);\n const isY = isYAxis(this._orient);\n const isZ = isZAxis(this._orient);\n let end = { x: 0, y: 0 };\n let gridLength = 0;\n let axisLength = 0;\n const depth = this.layout3dBox ? this.layout3dBox.length : 0;\n if (isX) {\n end = { x: width, y: 0 };\n gridLength = regionHeight;\n axisLength = width;\n } else if (isY) {\n end = { x: 0, y: height };\n gridLength = regionWidth;\n axisLength = height;\n }\n if (isZ) {\n const directionStr = this.directionStr ?? 'r2l';\n const depthZ = this.layout3dBox ? this.layout3dBox.width : 0;\n let anchor3d = [0, 0];\n let alpha = -Math.PI / 2;\n let z = 0;\n if (directionStr === 'l2r') {\n z = this.layout3dBox.length;\n anchor3d = [0, 0, 0];\n alpha = Math.PI / 2;\n }\n const items = this.getLabelItems(width);\n const axisAttrs: any = {\n start: { x: 0, y: 0 },\n end: { x: depth, y: 0 },\n z: z,\n alpha,\n anchor3d,\n title: {\n text: this._spec.title.text || this._dataFieldText,\n maxWidth: this._getTitleLimit(isX)\n },\n items\n };\n if (!ignoreGrid) {\n axisAttrs.grid = {\n type: 'line',\n start: { x: 0, y: 0 },\n end: { x: depth, y: 0 },\n items: items[0],\n verticalFactor: this._axisStyle.verticalFactor,\n depth: depthZ,\n length: regionHeight,\n z: z,\n alpha,\n anchor3d\n };\n }\n return axisAttrs;\n }\n let verticalMinSize = isX ? this.layout.minHeight : this.layout.minWidth;\n if (\n (isX && this._layout.layoutRectLevelMap.height === USER_LAYOUT_RECT_LEVEL) ||\n (isY && this._layout.layoutRectLevelMap.width === USER_LAYOUT_RECT_LEVEL)\n ) {\n verticalMinSize = this._verticalLimitSize;\n }\n const items = this.getLabelItems(axisLength);\n const attrs: any = {\n start: { x: 0, y: 0 },\n end,\n title: {\n text: this._spec.title.text || this._dataFieldText,\n maxWidth: this._getTitleLimit(isX)\n },\n items,\n verticalLimitSize: this._verticalLimitSize,\n verticalMinSize\n };\n if (!ignoreGrid) {\n attrs.grid = {\n type: 'line',\n start: { x: 0, y: 0 },\n end,\n items: items[0],\n verticalFactor: this._axisStyle.verticalFactor,\n depth,\n length: gridLength\n };\n }\n\n return attrs;\n }\n\n protected initEvent() {\n super.initEvent();\n\n if (this.visible) {\n // 布局结束之后处理 0 基线问题\n this.event.on(ChartEvent.layoutEnd, this._fixAxisOnZero);\n // 图表resize后,需要正常布局,清除布局缓存\n this.event.on(ChartEvent.layoutRectUpdate, () => {\n this._clearLayoutCache();\n });\n }\n }\n\n private _fixAxisOnZero = () => {\n // 在布局结束之后调整坐标轴零基线\n const { onZero, visible } = this._spec.domainLine;\n if (this.visible && onZero && visible !== false) {\n const { onZeroAxisId, onZeroAxisIndex } = this._spec.domainLine;\n const axesComponents = this._option.getComponentsByKey('axes') as IAxis[];\n const isX = isXAxis(this.getOrient());\n\n // 判断坐标轴是否可用\n const isValidAxis = (item: any) => {\n return (\n (isX ? !isXAxis(item.orient) : isXAxis(item.orient)) &&\n isContinuous(item.getScale().type) &&\n item\n .getTickData()\n .getLatestData()\n ?.find((d: any) => d.value === 0)\n );\n };\n const relativeAxes = axesComponents.filter(item => isValidAxis(item));\n if (relativeAxes.length) {\n let bindAxis;\n if (isValid(onZeroAxisId)) {\n bindAxis = relativeAxes.find(axis => axis.id === onZeroAxisId);\n } else if (isValid(onZeroAxisIndex)) {\n const indexAxis = axesComponents[onZeroAxisIndex];\n if (isValidAxis(indexAxis)) {\n bindAxis = indexAxis;\n }\n } else {\n // 默认绑定第一条的相对坐标轴\n bindAxis = relativeAxes[0];\n }\n if (bindAxis) {\n const axisMark = this._axisMark.getProduct();\n // 找到了绑定的 axis,获取基线的位置\n const position = bindAxis.valueToPosition(0);\n // 获取偏移量\n if (isX) {\n axisMark.encode({\n line: {\n ...this._axisStyle.line,\n dy: this._orient === 'bottom' ? -(bindAxis.getScale().range()[0] - position) : position\n }\n });\n } else {\n axisMark.encode({\n line: {\n ...this._axisStyle.line,\n dx: this._orient === 'left' ? position : -(bindAxis.getScale().range()[1] - position)\n }\n });\n }\n }\n }\n }\n };\n\n protected _layoutCacheProcessing(rect: ILayoutRect) {\n ['width', 'height'].forEach(key => {\n if (rect[key] < this._layoutCache[key]) {\n rect[key] = this._layoutCache[key];\n } else {\n this._layoutCache[key] = rect[key];\n }\n });\n\n // outBounds\n if (this._autoIndentOnce && this._hasAutoIndent) {\n // use cache\n ['x1', 'x2', 'y1', 'y2'].forEach(key => {\n this.layout.getLastComputeOutBounds()[key] = this._layoutCache._lastComputeOutBounds[key];\n });\n } else {\n this._hasAutoIndent = true;\n ['x1', 'x2', 'y1', 'y2'].forEach(key => {\n if (this.layout.getLastComputeOutBounds()[key] < this._layoutCache._lastComputeOutBounds[key]) {\n this.layout.getLastComputeOutBounds()[key] = this._layoutCache._lastComputeOutBounds[key];\n } else {\n this._layoutCache._lastComputeOutBounds[key] = this.layout.getLastComputeOutBounds()[key];\n }\n });\n }\n\n return rect;\n }\n\n _clearLayoutCache() {\n this._hasAutoIndent = false;\n this._layoutCache.width = 0;\n this._layoutCache.height = 0;\n this._layoutCache._lastComputeOutBounds = { x1: 0, x2: 0, y1: 0, y2: 0 };\n }\n\n onDataUpdate(): void {\n // clear layout cache\n this._clearLayoutCache();\n }\n\n protected _transformSpec() {\n // change spec by default logic\n const chartSpec = this._option.getChart().getSpec();\n this._spec.inverse = transformInverse(this._spec, chartSpec.direction === Direction.horizontal);\n }\n\n private _appendAxisUnit(bounds: IBounds, isX: boolean) {\n if (this._spec.unit && this._spec.unit.visible) {\n const { text, style } = this._spec.unit;\n let pos;\n let unitTextStyle: any;\n if (isX) {\n pos = {\n x: bounds.x2,\n y: this.getLayoutStartPoint().y\n };\n unitTextStyle = {\n textAlign: 'left',\n textBaseline: 'middle'\n };\n } else {\n pos = {\n x: this.getLayoutStartPoint().x,\n y: bounds.y1\n };\n unitTextStyle = {\n textAlign: this._orient === 'left' ? 'left' : 'right',\n textBaseline: 'bottom'\n };\n }\n\n unitTextStyle = {\n ...unitTextStyle,\n ...style,\n x: pos.x,\n y: pos.y,\n text\n };\n if (this._unitText) {\n this._unitText.setAttributes(unitTextStyle);\n } else {\n this._unitText = createText(unitTextStyle);\n this._unitText.name = 'axis-unit';\n this.getContainer()?.add(this._unitText);\n }\n\n // 左轴\n const textBounds = this._unitText.AABBBounds;\n if (!isX) {\n bounds.x1 += textBounds.x1 < bounds.x1 ? textBounds.x1 - bounds.x1 : 0;\n bounds.y1 += textBounds.y1 < bounds.y1 ? textBounds.y1 - bounds.y1 : 0;\n } else {\n bounds.x2 += textBounds.x2 > bounds.x2 ? textBounds.x2 - bounds.x2 : 0;\n bounds.y2 += textBounds.y2 > bounds.y2 ? textBounds.y2 - bounds.y2 : 0;\n }\n }\n\n return bounds;\n }\n\n protected _getNeedClearVRenderComponents(): IGraphic[] {\n return this._unitText ? [this._unitText] : [];\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/component/axis/cartesian/axis.ts"],"names":[],"mappings":"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","file":"axis.js","sourcesContent":["import type { IBounds, IBoundsLike } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport type { IEffect, IModelInitOption } from '../../../model/interface';\nimport type { ICartesianSeries } from '../../../series/interface';\nimport type { IRegion } from '../../../region/interface';\nimport type { ICartesianAxisCommonSpec, IAxisHelper, ICartesianAxisCommonTheme } from './interface';\nimport { isArray, isValid, isValidNumber, mergeSpec, eachSeries, isNil, isUndefined } from '../../../util';\nimport type { IOrientType } from '../../../typings/space';\n// eslint-disable-next-line no-duplicate-imports\nimport { Direction } from '../../../typings/space';\nimport type { IBaseScale } from '@visactor/vscale';\n// eslint-disable-next-line no-duplicate-imports\nimport { isContinuous } from '@visactor/vscale';\nimport { Factory } from '../../../core/factory';\nimport { autoAxisType, isXAxis, getOrient, isZAxis, isYAxis, transformInverse } from './util/common';\nimport { ChartEvent, DEFAULT_LAYOUT_RECT_LEVEL, LayoutZIndex, USER_LAYOUT_RECT_LEVEL } from '../../../constant';\nimport { LayoutLevel } from '../../../constant/index';\nimport pluginMap from '../../../plugin/components';\nimport type { StringOrNumber } from '../../../typings/common';\nimport type { IPoint } from '../../../typings/coordinate';\nimport type { ILayoutRect, ILayoutType } from '../../../typings/layout';\nimport type { IComponentOption } from '../../interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { ComponentTypeEnum } from '../../interface/type';\nimport { HOOK_EVENT } from '@visactor/vgrammar-core';\nimport type { LineAxisAttributes } from '@visactor/vrender-components';\n// eslint-disable-next-line no-duplicate-imports\nimport { isValidCartesianAxis } from '../util';\nimport type { IAxis, ITick } from '../interface';\nimport type { ICartesianTickDataOpt, CoordinateType } from '@visactor/vutils-extension';\n// eslint-disable-next-line no-duplicate-imports\nimport type { DataSet } from '@visactor/vdataset';\n// eslint-disable-next-line no-duplicate-imports\nimport { CompilableData } from '../../../compile/data/compilable-data';\nimport { AxisComponent } from '../base-axis';\nimport type { IGraphic, IText } from '@visactor/vrender-core';\n// eslint-disable-next-line no-duplicate-imports\nimport { createText } from '@visactor/vrender-core';\n\nconst CartesianAxisPlugin = [pluginMap.AxisSyncPlugin];\n\nexport abstract class CartesianAxis<T extends ICartesianAxisCommonSpec = ICartesianAxisCommonSpec>\n extends AxisComponent<T>\n implements IAxis\n{\n static type = ComponentTypeEnum.cartesianAxis;\n type = ComponentTypeEnum.cartesianAxis;\n name: string = ComponentTypeEnum.cartesianAxis;\n\n protected readonly _defaultBandPosition = 0.5;\n protected readonly _defaultBandInnerPadding = 0.1;\n protected readonly _defaultBandOuterPadding = 0.3;\n\n // 标记这个布局Item的方向(left->right, right->left, top->bottom, bottom->top)\n declare directionStr?: 'l2r' | 'r2l' | 't2b' | 'b2t';\n\n layoutType: ILayoutType = 'region-relative';\n layoutZIndex: number = LayoutZIndex.Axis;\n layoutLevel: number = LayoutLevel.Axis;\n\n protected _dataSet: DataSet;\n\n layout3dBox?: { width: number; height: number; length: number };\n\n protected _orient: IOrientType = 'left';\n getOrient() {\n return this._orient;\n }\n\n protected _autoIndentOnce: boolean = false;\n protected _hasAutoIndent: boolean = false;\n set autoIndentOnce(v: boolean) {\n this._autoIndentOnce = v;\n }\n\n protected _scales: IBaseScale[] = [];\n getScales() {\n return this._scales;\n }\n\n protected declare _theme: ICartesianAxisCommonTheme;\n\n protected _tick: ITick | undefined = undefined;\n\n private _axisStyle: Partial<LineAxisAttributes>;\n private _latestBounds: IBounds;\n private _verticalLimitSize: number;\n private _unitText: IText;\n\n protected _layoutCache: {\n width: number;\n height: number;\n _lastComputeOutBounds: IBoundsLike;\n } = { width: 0, height: 0, _lastComputeOutBounds: { x1: 0, x2: 0, y1: 0, y2: 0 } };\n\n constructor(spec: T, options: IComponentOption) {\n super(spec, options);\n this._orient = getOrient(spec, ['z']);\n if (isZAxis(this._orient)) {\n this.layoutType = 'absolute';\n }\n this._dataSet = options.dataSet;\n }\n\n static createAxis(spec: any, options: IComponentOption, isHorizontal: boolean = false): IAxis {\n const axisType = spec.type ?? autoAxisType(spec.orient, isHorizontal);\n const componentName = `${CartesianAxis.type}-${axisType}`;\n const C = Factory.getComponentInKey(componentName);\n if (C) {\n return new C(\n {\n ...spec,\n type: axisType\n },\n {\n ...options,\n type: componentName\n }\n ) as IAxis;\n }\n options.onError(`Component ${componentName} not found`);\n return null;\n }\n\n static createComponent(spec: any, options: IComponentOption) {\n const regions = options.getRegionsInIndex();\n if (regions.find(r => r.coordinate !== 'cartesian')) {\n return null;\n }\n let axesSpec = spec[CartesianAxis.specKey];\n if (!axesSpec) {\n return null;\n }\n const isHorizontal = spec.direction === Direction.horizontal;\n if (!isArray(axesSpec)) {\n // 如果非法,或者只有一个z轴就不创建\n if (!isValidCartesianAxis(axesSpec)) {\n return null;\n }\n return CartesianAxis.createAxis(axesSpec, options, isHorizontal);\n }\n // 处理spec\n const zAxis = axesSpec.filter(s => s.orient === 'z')[0];\n let valid = true;\n if (zAxis) {\n const xAxis = axesSpec.filter(s => s.orient === 'bottom')[0];\n const yAxis = axesSpec.filter(s => isYAxis(s.orient))[0];\n // 必须有x和y,且x必须是bottom\n valid = axesSpec.length === 3 && xAxis && yAxis;\n }\n if (!valid) {\n axesSpec = axesSpec.filter(s => s.orient !== 'z');\n }\n const axes: IAxis[] = [];\n axesSpec.forEach((s: any, i: any) => {\n if (!isValidCartesianAxis(s)) {\n return;\n }\n axes.push(\n CartesianAxis.createAxis(\n s,\n {\n ...options,\n specIndex: i\n },\n isHorizontal\n ) as IAxis\n );\n });\n return axes;\n }\n\n initLayout(): void {\n super.initLayout();\n this._layout.autoIndent = this._spec.autoIndent !== false;\n this._layout.layoutOrient = this._orient;\n }\n\n setLayout3dBox(box3d: { width: number; height: number; length: number }) {\n this.layout3dBox = box3d;\n }\n\n effect: IEffect = {\n scaleUpdate: params => {\n this.computeData(params?.value);\n eachSeries(\n this._regions,\n s => {\n const orient = this.getOrient();\n\n if (isXAxis(orient)) {\n (s as ICartesianSeries).setXAxisHelper(this.axisHelper());\n } else if (isYAxis(orient)) {\n (s as ICartesianSeries).setYAxisHelper(this.axisHelper());\n } else if (isZAxis(orient)) {\n (s as ICartesianSeries).setZAxisHelper(this.axisHelper());\n }\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n }\n };\n\n protected abstract computeDomain(data: { min: number; max: number; values: any[] }[]): StringOrNumber[];\n abstract valueToPosition(value: any): number;\n\n protected updateScaleRange() {\n let isScaleChange = false;\n const { width, height } = this.getLayoutRect();\n const inverse = this._spec.inverse;\n let newRange: number[] = [];\n if (isXAxis(this.getOrient())) {\n if (isValidNumber(width)) {\n newRange = inverse ? [width, 0] : [0, width];\n }\n } else if (isZAxis(this.getOrient())) {\n if (isValidNumber(width)) {\n newRange = inverse ? [width, 0] : [0, width];\n this._scale.range(newRange);\n }\n } else {\n if (isValidNumber(height)) {\n newRange = inverse ? [0, height] : [height, 0];\n }\n }\n\n const [start, end] = this._scale.range();\n if (newRange[0] !== start || newRange[1] !== end) {\n isScaleChange = true;\n this._scale.range(newRange);\n }\n\n return isScaleChange;\n }\n\n init(option: IModelInitOption): void {\n super.init(option);\n this.pluginService?.load(CartesianAxisPlugin.map(P => new P()));\n this.callPlugin(plugin => {\n this.pluginService && plugin.onInit && plugin.onInit(this.pluginService, this);\n });\n }\n\n setAttrFromSpec() {\n super.setAttrFromSpec();\n\n if (this.visible) {\n const isX = isXAxis(this.getOrient());\n if (isX) {\n if (isUndefined(this._spec.maxHeight)) {\n this._spec.maxHeight = '30%';\n }\n } else if (isUndefined(this._spec.maxWidth)) {\n this._spec.maxWidth = '30%';\n }\n\n const axisStyle: any = this._getAxisAttributes();\n axisStyle.label.formatMethod = this.getLabelFormatMethod();\n axisStyle.verticalFactor = this.getOrient() === 'top' || this.getOrient() === 'right' ? -1 : 1;\n this._axisStyle = axisStyle;\n }\n this._tick = this._spec.tick;\n }\n\n protected getSeriesStatisticsField(s: ICartesianSeries) {\n let f: string[];\n if (isXAxis(this.getOrient())) {\n f = s.fieldX;\n } else if (isZAxis(this.getOrient())) {\n f = s.fieldZ;\n } else {\n f = s.fieldY;\n }\n if (isContinuous(this._scale.type)) {\n return f;\n }\n return [f[0]];\n }\n\n protected _tickTransformOption(coordinateType: CoordinateType) {\n return {\n ...super._tickTransformOption(coordinateType),\n noDecimals: this._tick.noDecimals,\n labelLastVisible: this._spec.label?.lastVisible,\n labelFlush: this._spec.label?.flush\n } as ICartesianTickDataOpt;\n }\n\n protected _initData() {\n const tickData = this._initTickDataSet(this._tickTransformOption('cartesian'));\n tickData.target.addListener('change', this._forceLayout.bind(this));\n this._tickData = new CompilableData(this._option, tickData);\n }\n\n protected axisHelper(): IAxisHelper {\n const getScale = (depth: number = 0) => {\n return this._scales[depth];\n };\n return {\n isContinuous: isContinuous(this._scale.type),\n dataToPosition: this.dataToPosition.bind(this),\n getScale,\n getAxisType: () => this.type,\n getAxisId: () => this.id,\n isInverse: () => this._spec.inverse === true\n };\n }\n\n /** LifeCycle API**/\n afterCompile() {\n const product = this._axisMark?.getProduct();\n if (product) {\n product.addEventListener(HOOK_EVENT.AFTER_ELEMENT_ENCODE, () => {\n if (this._isLayout === false) {\n // 布局结束之后再进行插件的调用\n // 插件在布局后\n if (isXAxis(this.getOrient())) {\n this.callPlugin(plugin => {\n this.pluginService &&\n plugin.onDidLayoutHorizontal &&\n plugin.onDidLayoutHorizontal(this.pluginService, this);\n });\n } else {\n this.callPlugin(plugin => {\n this.pluginService && plugin.onDidLayoutVertical && plugin.onDidLayoutVertical(this.pluginService, this);\n });\n }\n this._delegateAxisContainerEvent(product.getGroupGraphicItem());\n\n // 更新单位的显示位置\n if (this._unitText) {\n const bounds = product.graphicItem.AABBBounds;\n const pos = isXAxis(this._orient)\n ? {\n x: bounds.x2,\n y: this.getLayoutStartPoint().y\n }\n : {\n x: this.getLayoutStartPoint().x,\n y: bounds.y1\n };\n\n this._unitText.setAttributes(pos);\n }\n }\n });\n }\n this.callPlugin(plugin => {\n this.pluginService && plugin.onDidCompile && plugin.onDidCompile(this.pluginService, this);\n });\n }\n\n onLayoutEnd(ctx: any): void {\n const isRangeChange = this.updateScaleRange();\n if (isRangeChange) {\n this.event.emit(ChartEvent.scaleUpdate, { model: this, value: 'range' });\n // 这里会执行 computeData ,会执行系列scale更新\n } else {\n this.updateSeriesScale();\n }\n super.onLayoutEnd(ctx);\n }\n\n onRender(ctx: any): void {\n // do nothing\n }\n\n changeRegions(regions: IRegion[]): void {\n // do nothing\n }\n\n update(ctx: IComponentOption) {\n // TODO\n }\n\n resize(ctx: IComponentOption) {\n // TODO\n }\n\n protected collectScale() {\n const scales: IBaseScale[] = [];\n eachSeries(\n this._regions,\n s => {\n scales.push(\n this.getOrient() === 'left' || this.getOrient() === 'right'\n ? (s as ICartesianSeries).scaleY\n : (s as ICartesianSeries).scaleX\n );\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n return scales;\n }\n\n protected collectData(depth?: number) {\n const data: { min: number; max: number; values: any[] }[] = [];\n eachSeries(\n this._regions,\n s => {\n let field: string | string[];\n if (depth > 0) {\n field = s.getGroups()?.fields?.[depth];\n } else {\n if (isXAxis(this.getOrient())) {\n field = (s as ICartesianSeries).fieldX2\n ? [...(s as ICartesianSeries).fieldX, (s as ICartesianSeries).fieldX2]\n : (s as ICartesianSeries).fieldX;\n } else if (isZAxis(this.getOrient())) {\n field = (s as ICartesianSeries).fieldZ;\n } else {\n field = (s as ICartesianSeries).fieldY;\n }\n }\n field = (isArray(field) ? (isContinuous(this._scale.type) ? field : [field[0]]) : [field]) as string[];\n if (!depth) {\n this._dataFieldText = s.getFieldAlias(field[0]);\n }\n const seriesData = s.getViewDataStatistics?.();\n if (field) {\n field.forEach(f => {\n if (seriesData?.latestData?.[f]) {\n data.push(seriesData.latestData[f]);\n }\n });\n }\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n return data;\n }\n\n protected updateSeriesScale() {\n const orient = this.getOrient();\n eachSeries(\n this._regions,\n s => {\n if (isXAxis(orient)) {\n (s as ICartesianSeries).setScaleX(this._scale);\n (s as ICartesianSeries).setXAxisHelper(this.axisHelper());\n } else if (isYAxis(orient)) {\n (s as ICartesianSeries).setScaleY(this._scale);\n (s as ICartesianSeries).setYAxisHelper(this.axisHelper());\n } else if (isZAxis(orient)) {\n (s as ICartesianSeries).setScaleZ(this._scale);\n (s as ICartesianSeries).setZAxisHelper(this.axisHelper());\n }\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n }\n\n _transformLayoutPosition = (pos: Partial<IPoint>) => {\n let { x, y } = pos;\n if (isValidNumber(x)) {\n x += Number(this._orient === 'left') * this.getLayoutRect().width;\n }\n if (isValidNumber(y)) {\n y += Number(this._orient === 'top') * this.getLayoutRect().height;\n }\n return { x, y };\n };\n\n _transformLayoutRect = (result: ILayoutRect) => {\n if (!this._visible) {\n return result;\n }\n const bounds = this._latestBounds.clone().translate(-this.getLayoutStartPoint().x, -this.getLayoutStartPoint().y);\n switch (this._layout.layoutOrient) {\n case 'left':\n if (this._layout.layoutRectLevelMap.width === DEFAULT_LAYOUT_RECT_LEVEL) {\n result.width = bounds.x1 < 0 ? -bounds.x1 : 0;\n }\n break;\n case 'right':\n if (this._layout.layoutRectLevelMap.width === DEFAULT_LAYOUT_RECT_LEVEL) {\n result.width = bounds.x2 > 0 ? bounds.x2 : 0;\n }\n break;\n case 'top':\n if (this._layout.layoutRectLevelMap.height === DEFAULT_LAYOUT_RECT_LEVEL) {\n result.height = bounds.y1 < 0 ? -bounds.y1 : 0;\n }\n break;\n case 'bottom':\n if (this._layout.layoutRectLevelMap.height === DEFAULT_LAYOUT_RECT_LEVEL) {\n result.height = bounds.y2 > 0 ? bounds.y2 : 0;\n }\n break;\n default:\n break;\n }\n result.width = Math.ceil(result.width);\n result.height = Math.ceil(result.height);\n return this._layout.setRectInSpec(this._layoutCacheProcessing(result));\n };\n /**\n * bounds 预计算\n * @param rect\n * @returns\n */\n getBoundsInRect(rect: ILayoutRect): IBoundsLike {\n let result: IBoundsLike = { x1: 0, y1: 0, x2: 0, y2: 0 };\n if (!this._visible) {\n return result;\n }\n this._verticalLimitSize = isXAxis(this.getOrient()) ? rect.height : rect.width;\n\n this.setLayoutRect(rect);\n const isChanged = this.updateScaleRange();\n // 防止一直没有计算latestData\n if (isChanged || !isArray(this._tickData.getLatestData())) {\n this.computeData('range');\n }\n const context = { skipLayout: false };\n const isX = isXAxis(this.getOrient());\n if (this.pluginService) {\n isX\n ? this.callPlugin(plugin => {\n plugin.onWillLayoutHorizontal && plugin.onWillLayoutHorizontal(this.pluginService, context, this);\n })\n : this.callPlugin(plugin => {\n plugin.onWillLayoutVertical && plugin.onWillLayoutVertical(this.pluginService, context, this);\n });\n }\n const product = this._axisMark.getProduct();\n let hasBounds = false;\n\n if (!context.skipLayout) {\n const attrs = this._getUpdateAttribute(true);\n const axisComponent = product.getGroupGraphicItem();\n\n const spec = mergeSpec({ ...this.getLayoutStartPoint() }, this._axisStyle, attrs, { line: { visible: false } });\n const updateBounds = axisComponent.getBoundsWithoutRender(spec);\n\n hasBounds = true;\n this._latestBounds = updateBounds;\n if (isFinite(updateBounds.width())) {\n // 因为轴单位在某些区域显示的时候,是不参与轴某个方向的包围盒计算的,\n // 所以不太合适放在轴组件内支持,所以就在 VChart 层的轴组件上通过添加 text 图元支持\n result = this._appendAxisUnit(updateBounds, isX);\n }\n }\n\n if (!hasBounds) {\n this._latestBounds = product.getBounds();\n }\n return result;\n }\n\n updateLayoutAttribute(): void {\n if (!this.visible) {\n return;\n }\n const startPoint = this.getLayoutStartPoint();\n // 正式的更新布局属性\n const { grid: updateGridAttrs, ...updateAxisAttrs } = this._getUpdateAttribute(false);\n const axisProduct = this._axisMark.getProduct(); // 获取语法元素\n const axisAttrs = mergeSpec({ x: startPoint.x, y: startPoint.y }, this._axisStyle, updateAxisAttrs);\n axisProduct.encode(axisAttrs);\n\n if (this._gridMark) {\n const gridProduct = this._gridMark.getProduct(); // 获取语法元素\n gridProduct.encode(mergeSpec({ x: startPoint.x, y: startPoint.y }, this._getGridAttributes(), updateGridAttrs));\n }\n\n super.updateLayoutAttribute();\n }\n\n private _getTitleLimit(isX: boolean) {\n if (this._spec.title.visible && isNil(this._spec.title.style?.maxLineWidth)) {\n const angle = this._axisStyle.title?.angle ?? this._spec.title.style?.angle ?? 0;\n if (isX) {\n const width = this.getLayoutRect().width;\n const cosValue = Math.abs(Math.cos(angle));\n // VRender 接收到的limit是考虑角度计算后的宽度\n // TODO:还需要考虑angle后,高度是否太高,综合计算一个limit,比如高度不能超过图表整体高度的1/4\n return cosValue < 1e-6 ? Infinity : width / cosValue;\n }\n const height = this.getLayoutRect().height;\n const sinValue = Math.abs(Math.sin(angle));\n\n // TODO:还需要考虑angle后,宽度是否太宽,综合计算一个limit,比如宽度度不能超过图表整体宽度的1/4\n return sinValue < 1e-6 ? Infinity : height / sinValue;\n }\n\n return null;\n }\n\n private _getUpdateAttribute(ignoreGrid: boolean) {\n // 获取更新的坐标轴属性\n let regionHeight = 0;\n let regionWidth = 0;\n\n if (!ignoreGrid) {\n const regions = this.getRegions();\n let { x: minX, y: minY } = regions[0].getLayoutStartPoint();\n let maxX = minX + regions[0].getLayoutRect().width;\n let maxY = minY + regions[0].getLayoutRect().height;\n\n for (let index = 1; index < regions.length; index++) {\n const region = regions[index];\n const { x, y } = region.getLayoutStartPoint();\n const { width, height } = region.getLayoutRect();\n\n minX = Math.min(minX, x);\n maxX = Math.max(maxX, width + x);\n minY = Math.min(minY, y);\n maxY = Math.max(maxY, height + y);\n }\n regionHeight = Math.abs(maxY - minY);\n regionWidth = Math.abs(maxX - minX);\n }\n\n const { width, height } = this.getLayoutRect();\n const isX = isXAxis(this._orient);\n const isY = isYAxis(this._orient);\n const isZ = isZAxis(this._orient);\n let end = { x: 0, y: 0 };\n let gridLength = 0;\n let axisLength = 0;\n const depth = this.layout3dBox ? this.layout3dBox.length : 0;\n if (isX) {\n end = { x: width, y: 0 };\n gridLength = regionHeight;\n axisLength = width;\n } else if (isY) {\n end = { x: 0, y: height };\n gridLength = regionWidth;\n axisLength = height;\n }\n if (isZ) {\n const directionStr = this.directionStr ?? 'r2l';\n const depthZ = this.layout3dBox ? this.layout3dBox.width : 0;\n let anchor3d = [0, 0];\n let alpha = -Math.PI / 2;\n let z = 0;\n if (directionStr === 'l2r') {\n z = this.layout3dBox.length;\n anchor3d = [0, 0, 0];\n alpha = Math.PI / 2;\n }\n const items = this.getLabelItems(width);\n const axisAttrs: any = {\n start: { x: 0, y: 0 },\n end: { x: depth, y: 0 },\n z: z,\n alpha,\n anchor3d,\n title: {\n text: this._spec.title.text || this._dataFieldText,\n maxWidth: this._getTitleLimit(isX)\n },\n items\n };\n if (!ignoreGrid) {\n axisAttrs.grid = {\n type: 'line',\n start: { x: 0, y: 0 },\n end: { x: depth, y: 0 },\n items: items[0],\n verticalFactor: this._axisStyle.verticalFactor,\n depth: depthZ,\n length: regionHeight,\n z: z,\n alpha,\n anchor3d\n };\n }\n return axisAttrs;\n }\n let verticalMinSize = isX ? this.layout.minHeight : this.layout.minWidth;\n if (\n (isX && this._layout.layoutRectLevelMap.height === USER_LAYOUT_RECT_LEVEL) ||\n (isY && this._layout.layoutRectLevelMap.width === USER_LAYOUT_RECT_LEVEL)\n ) {\n verticalMinSize = this._verticalLimitSize;\n }\n const items = this.getLabelItems(axisLength);\n const attrs: any = {\n start: { x: 0, y: 0 },\n end,\n title: {\n text: this._spec.title.text || this._dataFieldText,\n maxWidth: this._getTitleLimit(isX)\n },\n items,\n verticalLimitSize: this._verticalLimitSize,\n verticalMinSize\n };\n if (!ignoreGrid) {\n attrs.grid = {\n type: 'line',\n start: { x: 0, y: 0 },\n end,\n items: items[0],\n verticalFactor: this._axisStyle.verticalFactor,\n depth,\n length: gridLength\n };\n }\n\n return attrs;\n }\n\n protected initEvent() {\n super.initEvent();\n\n if (this.visible) {\n // 布局结束之后处理 0 基线问题\n this.event.on(ChartEvent.layoutEnd, this._fixAxisOnZero);\n // 图表resize后,需要正常布局,清除布局缓存\n this.event.on(ChartEvent.layoutRectUpdate, () => {\n this._clearLayoutCache();\n });\n }\n }\n\n private _fixAxisOnZero = () => {\n // 在布局结束之后调整坐标轴零基线\n const { onZero, visible } = this._spec.domainLine;\n if (this.visible && onZero && visible !== false) {\n const { onZeroAxisId, onZeroAxisIndex } = this._spec.domainLine;\n const axesComponents = this._option.getComponentsByKey('axes') as IAxis[];\n const isX = isXAxis(this.getOrient());\n\n // 判断坐标轴是否可用\n const isValidAxis = (item: any) => {\n return (\n (isX ? !isXAxis(item.orient) : isXAxis(item.orient)) &&\n isContinuous(item.getScale().type) &&\n item\n .getTickData()\n .getLatestData()\n ?.find((d: any) => d.value === 0)\n );\n };\n const relativeAxes = axesComponents.filter(item => isValidAxis(item));\n if (relativeAxes.length) {\n let bindAxis;\n if (isValid(onZeroAxisId)) {\n bindAxis = relativeAxes.find(axis => axis.id === onZeroAxisId);\n } else if (isValid(onZeroAxisIndex)) {\n const indexAxis = axesComponents[onZeroAxisIndex];\n if (isValidAxis(indexAxis)) {\n bindAxis = indexAxis;\n }\n } else {\n // 默认绑定第一条的相对坐标轴\n bindAxis = relativeAxes[0];\n }\n if (bindAxis) {\n const axisMark = this._axisMark.getProduct();\n // 找到了绑定的 axis,获取基线的位置\n const position = bindAxis.valueToPosition(0);\n // 获取偏移量\n if (isX) {\n axisMark.encode({\n line: {\n ...this._axisStyle.line,\n dy: this._orient === 'bottom' ? -(bindAxis.getScale().range()[0] - position) : position\n }\n });\n } else {\n axisMark.encode({\n line: {\n ...this._axisStyle.line,\n dx: this._orient === 'left' ? position : -(bindAxis.getScale().range()[1] - position)\n }\n });\n }\n }\n }\n }\n };\n\n protected _layoutCacheProcessing(rect: ILayoutRect) {\n ['width', 'height'].forEach(key => {\n if (rect[key] < this._layoutCache[key]) {\n rect[key] = this._layoutCache[key];\n } else {\n this._layoutCache[key] = rect[key];\n }\n });\n\n // outBounds\n if (this._autoIndentOnce && this._hasAutoIndent) {\n // use cache\n ['x1', 'x2', 'y1', 'y2'].forEach(key => {\n this.layout.getLastComputeOutBounds()[key] = this._layoutCache._lastComputeOutBounds[key];\n });\n } else {\n this._hasAutoIndent = true;\n ['x1', 'x2', 'y1', 'y2'].forEach(key => {\n if (this.layout.getLastComputeOutBounds()[key] < this._layoutCache._lastComputeOutBounds[key]) {\n this.layout.getLastComputeOutBounds()[key] = this._layoutCache._lastComputeOutBounds[key];\n } else {\n this._layoutCache._lastComputeOutBounds[key] = this.layout.getLastComputeOutBounds()[key];\n }\n });\n }\n\n return rect;\n }\n\n _clearLayoutCache() {\n this._hasAutoIndent = false;\n this._layoutCache.width = 0;\n this._layoutCache.height = 0;\n this._layoutCache._lastComputeOutBounds = { x1: 0, x2: 0, y1: 0, y2: 0 };\n }\n\n onDataUpdate(): void {\n // clear layout cache\n this._clearLayoutCache();\n }\n\n protected _transformSpec() {\n // change spec by default logic\n const chartSpec = this._option.getChart().getSpec();\n this._spec.inverse = transformInverse(this._spec, chartSpec.direction === Direction.horizontal);\n }\n\n private _appendAxisUnit(bounds: IBounds, isX: boolean) {\n if (this._spec.unit && this._spec.unit.visible) {\n const { text, style } = this._spec.unit;\n let pos;\n let unitTextStyle: any;\n if (isX) {\n pos = {\n x: bounds.x2,\n y: this.getLayoutStartPoint().y\n };\n unitTextStyle = {\n textAlign: 'left',\n textBaseline: 'middle'\n };\n } else {\n pos = {\n x: this.getLayoutStartPoint().x,\n y: bounds.y1\n };\n unitTextStyle = {\n textAlign: this._orient === 'left' ? 'left' : 'right',\n textBaseline: 'bottom'\n };\n }\n\n unitTextStyle = {\n ...unitTextStyle,\n ...style,\n x: pos.x,\n y: pos.y,\n text\n };\n if (this._unitText) {\n this._unitText.setAttributes(unitTextStyle);\n } else {\n this._unitText = createText(unitTextStyle);\n this._unitText.name = 'axis-unit';\n this.getContainer()?.add(this._unitText);\n }\n\n // 左轴\n const textBounds = this._unitText.AABBBounds;\n if (!isX) {\n bounds.x1 += textBounds.x1 < bounds.x1 ? textBounds.x1 - bounds.x1 : 0;\n bounds.y1 += textBounds.y1 < bounds.y1 ? textBounds.y1 - bounds.y1 : 0;\n } else {\n bounds.x2 += textBounds.x2 > bounds.x2 ? textBounds.x2 - bounds.x2 : 0;\n bounds.y2 += textBounds.y2 > bounds.y2 ? textBounds.y2 - bounds.y2 : 0;\n }\n }\n\n return bounds;\n }\n\n protected _getNeedClearVRenderComponents(): IGraphic[] {\n return this._unitText ? [this._unitText] : [];\n }\n}\n"]}
@@ -39,27 +39,19 @@ export class CartesianTimeAxis extends CartesianLinearAxis {
39
39
  super.setAttrFromSpec(), this._tick = mergeSpec({}, this._spec.tick, null === (_a = this._spec.layers) || void 0 === _a ? void 0 : _a[0]);
40
40
  }
41
41
  _initData() {
42
- var _a, _b, _c, _d, _e, _f, _g;
42
+ var _a;
43
43
  if (super._initData(), null === (_a = this._spec.layers) || void 0 === _a ? void 0 : _a[1]) {
44
- const label = this._spec.label || {}, layerTickData = new DataView(this._option.dataSet, {
44
+ const layerTickData = new DataView(this._option.dataSet, {
45
45
  name: `${this.type}_${this.id}_layer_1_ticks`
46
46
  }).parse(this._scale, {
47
47
  type: "scale"
48
48
  }).transform({
49
49
  type: "ticks",
50
- options: {
51
- sampling: !1 !== this._spec.sampling,
52
- tickCount: null === (_c = null === (_b = this._spec.layers) || void 0 === _b ? void 0 : _b[1]) || void 0 === _c ? void 0 : _c.tickCount,
53
- forceTickCount: null === (_e = null === (_d = this._spec.layers) || void 0 === _d ? void 0 : _d[1]) || void 0 === _e ? void 0 : _e.forceTickCount,
54
- tickStep: null === (_g = null === (_f = this._spec.layers) || void 0 === _f ? void 0 : _f[1]) || void 0 === _g ? void 0 : _g.tickStep,
55
- axisOrientType: this._orient,
56
- coordinateType: "cartesian",
57
- labelStyle: label.style,
58
- labelFormatter: label.formatMethod,
59
- labelGap: label.minGap,
60
- labelLastVisible: label.lastVisible,
61
- labelFlush: label.flush
62
- }
50
+ options: Object.assign(Object.assign({}, this._tickTransformOption("cartesian")), {
51
+ tickCount: this._spec.layers[1].tickCount,
52
+ forceTickCount: this._spec.layers[1].forceTickCount,
53
+ tickStep: this._spec.layers[1].tickStep
54
+ })
63
55
  }, !1);
64
56
  this._layerTickData = new CompilableData(this._option, layerTickData);
65
57
  }
@@ -69,8 +61,8 @@ export class CartesianTimeAxis extends CartesianLinearAxis {
69
61
  this._layerTickData.updateData());
70
62
  }
71
63
  getLabelFormatMethod() {
72
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
73
- const timeUtil = TimeUtil.getInstance(), timeFormat1 = (null === (_c = null === (_b = null === (_a = this._spec) || void 0 === _a ? void 0 : _a.layers) || void 0 === _b ? void 0 : _b[1]) || void 0 === _c ? void 0 : _c.timeFormat) || "%Y%m%d", timeFormatter1 = "local" === ((null === (_f = null === (_e = null === (_d = this._spec) || void 0 === _d ? void 0 : _d.layers) || void 0 === _e ? void 0 : _e[1]) || void 0 === _f ? void 0 : _f.timeFormatMode) || "local") ? timeUtil.timeFormat : timeUtil.timeUTCFormat, timeFormat0 = (null === (_j = null === (_h = null === (_g = this._spec) || void 0 === _g ? void 0 : _g.layers) || void 0 === _h ? void 0 : _h[0]) || void 0 === _j ? void 0 : _j.timeFormat) || "%Y%m%d", timeFormatter0 = "local" === ((null === (_m = null === (_l = null === (_k = this._spec) || void 0 === _k ? void 0 : _k.layers) || void 0 === _l ? void 0 : _l[0]) || void 0 === _m ? void 0 : _m.timeFormatMode) || "local") ? timeUtil.timeFormat : timeUtil.timeUTCFormat;
64
+ var _a, _b, _c, _d, _e, _f, _g, _h;
65
+ const timeUtil = TimeUtil.getInstance(), timeFormat1 = (null === (_b = null === (_a = this._spec.layers) || void 0 === _a ? void 0 : _a[1]) || void 0 === _b ? void 0 : _b.timeFormat) || "%Y%m%d", timeFormatter1 = "local" === ((null === (_d = null === (_c = this._spec.layers) || void 0 === _c ? void 0 : _c[1]) || void 0 === _d ? void 0 : _d.timeFormatMode) || "local") ? timeUtil.timeFormat : timeUtil.timeUTCFormat, timeFormat0 = (null === (_f = null === (_e = this._spec.layers) || void 0 === _e ? void 0 : _e[0]) || void 0 === _f ? void 0 : _f.timeFormat) || "%Y%m%d", timeFormatter0 = "local" === ((null === (_h = null === (_g = this._spec.layers) || void 0 === _g ? void 0 : _g[0]) || void 0 === _h ? void 0 : _h.timeFormatMode) || "local") ? timeUtil.timeFormat : timeUtil.timeUTCFormat;
74
66
  return (value, datum, index, data, layer) => {
75
67
  var _a;
76
68
  let timeValue;