@orbcharts/plugins-basic 3.0.0-beta.15 → 3.0.0-beta.17

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 (228) hide show
  1. package/LICENSE +200 -200
  2. package/dist/orbcharts-plugins-basic.es.js +11839 -10485
  3. package/dist/orbcharts-plugins-basic.umd.js +231 -171
  4. package/dist/{orbcharts-plugins-basic/src → src}/base/BaseBars.d.ts +3 -3
  5. package/dist/{orbcharts-plugins-basic/src → src}/base/BaseBarsTriangle.d.ts +3 -3
  6. package/dist/{orbcharts-plugins-basic/src → src}/base/BaseDots.d.ts +3 -3
  7. package/dist/{orbcharts-plugins-basic/src → src}/base/BaseLineAreas.d.ts +3 -3
  8. package/dist/{orbcharts-plugins-basic/src → src}/base/BaseLines.d.ts +3 -3
  9. package/dist/src/base/BaseRacingBars.d.ts +23 -0
  10. package/dist/src/base/BaseRacingLabels.d.ts +20 -0
  11. package/dist/src/base/BaseRacingValueLabels.d.ts +20 -0
  12. package/dist/{orbcharts-plugins-basic/src/base/BaseStackedBar.d.ts → src/base/BaseStackedBars.d.ts} +7 -7
  13. package/dist/{orbcharts-plugins-basic/src → src}/base/BaseValueAxis.d.ts +4 -7
  14. package/dist/src/base/BaseXAxis.d.ts +20 -0
  15. package/dist/src/base/BaseYAxis.d.ts +18 -0
  16. package/dist/{orbcharts-plugins-basic/src → src}/grid/defaults.d.ts +3 -3
  17. package/dist/{orbcharts-plugins-basic/src → src}/grid/gridObservables.d.ts +8 -1
  18. package/dist/{orbcharts-plugins-basic/src → src}/grid/index.d.ts +2 -2
  19. package/dist/src/grid/plugins/GroupZoom.d.ts +1 -0
  20. package/dist/src/grid/plugins/StackedBars.d.ts +1 -0
  21. package/dist/src/index.d.ts +7 -1
  22. package/dist/{orbcharts-plugins-basic/src → src}/multiGrid/defaults.d.ts +2 -2
  23. package/dist/{orbcharts-plugins-basic/src → src}/multiGrid/index.d.ts +1 -1
  24. package/dist/src/multiGrid/plugins/MultiStackedBars.d.ts +1 -0
  25. package/dist/src/multiValue/defaults.d.ts +13 -0
  26. package/dist/{orbcharts-plugins-basic/src → src}/multiValue/index.d.ts +5 -1
  27. package/dist/src/multiValue/multiValueObservables.d.ts +56 -0
  28. package/dist/src/multiValue/plugins/RacingBars.d.ts +1 -0
  29. package/dist/src/multiValue/plugins/RacingCounterTexts.d.ts +3 -0
  30. package/dist/src/multiValue/plugins/RacingValueAxis.d.ts +1 -0
  31. package/dist/src/multiValue/plugins/XAxis.d.ts +1 -0
  32. package/dist/src/multiValue/plugins/XYAxes.d.ts +1 -0
  33. package/dist/src/multiValue/plugins/XZoom.d.ts +1 -0
  34. package/dist/{orbcharts-plugins-basic/src → src}/utils/commonUtils.d.ts +1 -0
  35. package/dist/{orbcharts-plugins-basic/src → src}/utils/d3Graphics.d.ts +2 -1
  36. package/lib/core-types.ts +7 -7
  37. package/lib/core.ts +6 -6
  38. package/lib/plugins-basic-types.ts +6 -6
  39. package/package.json +44 -44
  40. package/src/base/BaseBars.ts +765 -765
  41. package/src/base/BaseBarsTriangle.ts +676 -676
  42. package/src/base/BaseDots.ts +464 -464
  43. package/src/base/BaseGroupAxis.ts +691 -679
  44. package/src/base/BaseLegend.ts +684 -684
  45. package/src/base/BaseLineAreas.ts +629 -629
  46. package/src/base/BaseLines.ts +706 -706
  47. package/src/base/BaseRacingBars.ts +552 -0
  48. package/src/base/BaseRacingLabels.ts +396 -0
  49. package/src/base/BaseRacingValueLabels.ts +403 -0
  50. package/src/base/{BaseStackedBar.ts → BaseStackedBars.ts} +782 -782
  51. package/src/base/BaseTooltip.ts +386 -385
  52. package/src/base/BaseValueAxis.ts +600 -583
  53. package/src/base/BaseXAxis.ts +427 -0
  54. package/src/base/BaseYAxis.ts +389 -0
  55. package/src/base/types.ts +2 -2
  56. package/src/const.ts +30 -30
  57. package/src/grid/defaults.ts +213 -250
  58. package/src/grid/gridObservables.ts +612 -554
  59. package/src/grid/index.ts +16 -16
  60. package/src/grid/plugins/Bars.ts +69 -69
  61. package/src/grid/plugins/BarsPN.ts +66 -66
  62. package/src/grid/plugins/BarsTriangle.ts +73 -73
  63. package/src/grid/plugins/Dots.ts +68 -68
  64. package/src/grid/plugins/GridLegend.ts +107 -107
  65. package/src/grid/plugins/GridTooltip.ts +66 -66
  66. package/src/grid/plugins/GroupAux.ts +1120 -1103
  67. package/src/grid/plugins/GroupAxis.ts +73 -97
  68. package/src/grid/plugins/{GridZoom.ts → GroupZoom.ts} +218 -218
  69. package/src/grid/plugins/LineAreas.ts +65 -65
  70. package/src/grid/plugins/Lines.ts +59 -59
  71. package/src/grid/plugins/{StackedBar.ts → StackedBars.ts} +64 -64
  72. package/src/grid/plugins/StackedValueAxis.ts +96 -96
  73. package/src/grid/plugins/ValueAxis.ts +94 -94
  74. package/src/index.ts +6 -6
  75. package/src/multiGrid/defaults.ts +244 -228
  76. package/src/multiGrid/index.ts +14 -14
  77. package/src/multiGrid/multiGridObservables.ts +50 -49
  78. package/src/multiGrid/plugins/MultiBars.ts +108 -108
  79. package/src/multiGrid/plugins/MultiBarsTriangle.ts +114 -114
  80. package/src/multiGrid/plugins/MultiDots.ts +102 -102
  81. package/src/multiGrid/plugins/MultiGridLegend.ts +169 -159
  82. package/src/multiGrid/plugins/MultiGridTooltip.ts +66 -66
  83. package/src/multiGrid/plugins/MultiGroupAxis.ts +137 -137
  84. package/src/multiGrid/plugins/MultiLineAreas.ts +107 -107
  85. package/src/multiGrid/plugins/MultiLines.ts +101 -101
  86. package/src/multiGrid/plugins/{MultiStackedBar.ts → MultiStackedBars.ts} +106 -106
  87. package/src/multiGrid/plugins/MultiStackedValueAxis.ts +134 -134
  88. package/src/multiGrid/plugins/MultiValueAxis.ts +134 -134
  89. package/src/multiGrid/plugins/OverlappingStackedValueAxes.ts +300 -299
  90. package/src/multiGrid/plugins/OverlappingValueAxes.ts +300 -300
  91. package/src/multiValue/defaults.ts +388 -166
  92. package/src/multiValue/index.ts +13 -9
  93. package/src/multiValue/multiValueObservables.ts +667 -297
  94. package/src/multiValue/plugins/MultiValueLegend.ts +107 -107
  95. package/src/multiValue/plugins/MultiValueTooltip.ts +66 -66
  96. package/src/multiValue/plugins/OrdinalBubbles.ts +0 -0
  97. package/src/multiValue/plugins/OrdinalXAxis.ts +0 -0
  98. package/src/multiValue/plugins/RacingBars.ts +373 -0
  99. package/src/multiValue/plugins/RacingCounterAxis.ts +0 -0
  100. package/src/multiValue/plugins/RacingCounterTexts.ts +300 -0
  101. package/src/multiValue/plugins/RacingValueAxis.ts +115 -0
  102. package/src/multiValue/plugins/RankingAxis_legacy.ts +109 -0
  103. package/src/multiValue/plugins/Scatter.ts +426 -426
  104. package/src/multiValue/plugins/ScatterBubbles.ts +554 -554
  105. package/src/multiValue/plugins/XAxis.ts +108 -0
  106. package/src/multiValue/plugins/XYAux.ts +682 -681
  107. package/src/multiValue/plugins/XYAxes.ts +194 -684
  108. package/src/multiValue/plugins/XYAxes_legacy.ts +684 -0
  109. package/src/multiValue/plugins/{XYZoom.ts → XZoom.ts} +299 -299
  110. package/src/noneData/defaults.ts +102 -102
  111. package/src/noneData/index.ts +3 -3
  112. package/src/noneData/plugins/Container.ts +27 -27
  113. package/src/noneData/plugins/Tooltip.ts +373 -373
  114. package/src/relationship/defaults.ts +220 -218
  115. package/src/relationship/index.ts +5 -5
  116. package/src/relationship/plugins/ForceDirected.ts +1168 -1168
  117. package/src/relationship/plugins/ForceDirectedBubbles.ts +1403 -1403
  118. package/src/relationship/plugins/RelationshipLegend.ts +100 -100
  119. package/src/relationship/plugins/RelationshipTooltip.ts +66 -66
  120. package/src/relationship/relationshipObservables.ts +49 -49
  121. package/src/series/defaults.ts +221 -230
  122. package/src/series/index.ts +9 -9
  123. package/src/series/plugins/Bubbles.ts +636 -620
  124. package/src/series/plugins/Pie.ts +623 -623
  125. package/src/series/plugins/PieEventTexts.ts +284 -284
  126. package/src/series/plugins/PieLabels.ts +640 -640
  127. package/src/series/plugins/Rose.ts +516 -516
  128. package/src/series/plugins/RoseLabels.ts +600 -600
  129. package/src/series/plugins/SeriesLegend.ts +107 -107
  130. package/src/series/plugins/SeriesTooltip.ts +66 -66
  131. package/src/series/seriesObservables.ts +145 -145
  132. package/src/series/seriesUtils.ts +51 -51
  133. package/src/tree/defaults.ts +102 -100
  134. package/src/tree/index.ts +4 -4
  135. package/src/tree/plugins/TreeLegend.ts +100 -100
  136. package/src/tree/plugins/TreeMap.ts +341 -341
  137. package/src/tree/plugins/TreeTooltip.ts +66 -66
  138. package/src/utils/commonUtils.ts +31 -22
  139. package/src/utils/d3Graphics.ts +176 -174
  140. package/src/utils/d3Utils.ts +92 -92
  141. package/src/utils/observables.ts +14 -14
  142. package/src/utils/orbchartsUtils.ts +129 -129
  143. package/tsconfig.base.json +13 -13
  144. package/tsconfig.json +2 -2
  145. package/vite.config.js +22 -22
  146. package/dist/orbcharts-plugins-basic/src/grid/plugins/GridZoom.d.ts +0 -1
  147. package/dist/orbcharts-plugins-basic/src/grid/plugins/StackedBar.d.ts +0 -1
  148. package/dist/orbcharts-plugins-basic/src/index.d.ts +0 -7
  149. package/dist/orbcharts-plugins-basic/src/multiGrid/plugins/MultiStackedBar.d.ts +0 -1
  150. package/dist/orbcharts-plugins-basic/src/multiValue/defaults.d.ts +0 -9
  151. package/dist/orbcharts-plugins-basic/src/multiValue/multiValueObservables.d.ts +0 -33
  152. package/dist/orbcharts-plugins-basic/src/multiValue/plugins/XYZoom.d.ts +0 -1
  153. /package/dist/{orbcharts-plugins-basic/lib → lib}/core-types.d.ts +0 -0
  154. /package/dist/{orbcharts-plugins-basic/lib → lib}/core.d.ts +0 -0
  155. /package/dist/{orbcharts-plugins-basic/lib → lib}/plugins-basic-types.d.ts +0 -0
  156. /package/dist/{orbcharts-plugins-basic/src → src}/base/BaseGroupAxis.d.ts +0 -0
  157. /package/dist/{orbcharts-plugins-basic/src → src}/base/BaseLegend.d.ts +0 -0
  158. /package/dist/{orbcharts-plugins-basic/src → src}/base/BaseTooltip.d.ts +0 -0
  159. /package/dist/{orbcharts-plugins-basic/src → src}/base/types.d.ts +0 -0
  160. /package/dist/{orbcharts-plugins-basic/src → src}/const.d.ts +0 -0
  161. /package/dist/{orbcharts-plugins-basic/src → src}/grid/plugins/Bars.d.ts +0 -0
  162. /package/dist/{orbcharts-plugins-basic/src → src}/grid/plugins/BarsPN.d.ts +0 -0
  163. /package/dist/{orbcharts-plugins-basic/src → src}/grid/plugins/BarsTriangle.d.ts +0 -0
  164. /package/dist/{orbcharts-plugins-basic/src → src}/grid/plugins/Dots.d.ts +0 -0
  165. /package/dist/{orbcharts-plugins-basic/src → src}/grid/plugins/GridLegend.d.ts +0 -0
  166. /package/dist/{orbcharts-plugins-basic/src → src}/grid/plugins/GridTooltip.d.ts +0 -0
  167. /package/dist/{orbcharts-plugins-basic/src → src}/grid/plugins/GroupAux.d.ts +0 -0
  168. /package/dist/{orbcharts-plugins-basic/src → src}/grid/plugins/GroupAxis.d.ts +0 -0
  169. /package/dist/{orbcharts-plugins-basic/src → src}/grid/plugins/LineAreas.d.ts +0 -0
  170. /package/dist/{orbcharts-plugins-basic/src → src}/grid/plugins/Lines.d.ts +0 -0
  171. /package/dist/{orbcharts-plugins-basic/src → src}/grid/plugins/StackedValueAxis.d.ts +0 -0
  172. /package/dist/{orbcharts-plugins-basic/src → src}/grid/plugins/ValueAxis.d.ts +0 -0
  173. /package/dist/{orbcharts-plugins-basic/src → src}/multiGrid/multiGridObservables.d.ts +0 -0
  174. /package/dist/{orbcharts-plugins-basic/src → src}/multiGrid/plugins/MultiBars.d.ts +0 -0
  175. /package/dist/{orbcharts-plugins-basic/src → src}/multiGrid/plugins/MultiBarsTriangle.d.ts +0 -0
  176. /package/dist/{orbcharts-plugins-basic/src → src}/multiGrid/plugins/MultiDots.d.ts +0 -0
  177. /package/dist/{orbcharts-plugins-basic/src → src}/multiGrid/plugins/MultiGridLegend.d.ts +0 -0
  178. /package/dist/{orbcharts-plugins-basic/src → src}/multiGrid/plugins/MultiGridTooltip.d.ts +0 -0
  179. /package/dist/{orbcharts-plugins-basic/src → src}/multiGrid/plugins/MultiGroupAxis.d.ts +0 -0
  180. /package/dist/{orbcharts-plugins-basic/src → src}/multiGrid/plugins/MultiLineAreas.d.ts +0 -0
  181. /package/dist/{orbcharts-plugins-basic/src → src}/multiGrid/plugins/MultiLines.d.ts +0 -0
  182. /package/dist/{orbcharts-plugins-basic/src → src}/multiGrid/plugins/MultiStackedValueAxis.d.ts +0 -0
  183. /package/dist/{orbcharts-plugins-basic/src → src}/multiGrid/plugins/MultiValueAxis.d.ts +0 -0
  184. /package/dist/{orbcharts-plugins-basic/src → src}/multiGrid/plugins/OverlappingStackedValueAxes.d.ts +0 -0
  185. /package/dist/{orbcharts-plugins-basic/src → src}/multiGrid/plugins/OverlappingValueAxes.d.ts +0 -0
  186. /package/dist/{orbcharts-plugins-basic/src → src}/multiValue/plugins/MultiValueLegend.d.ts +0 -0
  187. /package/dist/{orbcharts-plugins-basic/src → src}/multiValue/plugins/MultiValueTooltip.d.ts +0 -0
  188. /package/dist/{orbcharts-plugins-basic/src/multiValue/plugins/Ranking.d.ts → src/multiValue/plugins/OrdinalBubbles.d.ts} +0 -0
  189. /package/dist/{orbcharts-plugins-basic/src/multiValue/plugins/RankingAxis.d.ts → src/multiValue/plugins/OrdinalXAxis.d.ts} +0 -0
  190. /package/dist/{orbcharts-plugins-basic/src/noneData/plugins/Container.d.ts → src/multiValue/plugins/RacingCounterAxis.d.ts} +0 -0
  191. /package/dist/{orbcharts-plugins-basic/src/noneData/plugins/Tooltip.d.ts → src/multiValue/plugins/RankingAxis_legacy.d.ts} +0 -0
  192. /package/dist/{orbcharts-plugins-basic/src → src}/multiValue/plugins/Scatter.d.ts +0 -0
  193. /package/dist/{orbcharts-plugins-basic/src → src}/multiValue/plugins/ScatterBubbles.d.ts +0 -0
  194. /package/dist/{orbcharts-plugins-basic/src → src}/multiValue/plugins/XYAux.d.ts +0 -0
  195. /package/dist/{orbcharts-plugins-basic/src/multiValue/plugins/XYAxes.d.ts → src/multiValue/plugins/XYAxes_legacy.d.ts} +0 -0
  196. /package/dist/{orbcharts-plugins-basic/src → src}/noneData/defaults.d.ts +0 -0
  197. /package/dist/{orbcharts-plugins-basic/src → src}/noneData/index.d.ts +0 -0
  198. /package/dist/{orbcharts-plugins-basic/src/series/plugins/Waffle.d.ts → src/noneData/plugins/Container.d.ts} +0 -0
  199. /package/{src/multiValue/plugins/Ranking.ts → dist/src/noneData/plugins/Tooltip.d.ts} +0 -0
  200. /package/dist/{orbcharts-plugins-basic/src → src}/relationship/defaults.d.ts +0 -0
  201. /package/dist/{orbcharts-plugins-basic/src → src}/relationship/index.d.ts +0 -0
  202. /package/dist/{orbcharts-plugins-basic/src → src}/relationship/plugins/ForceDirected.d.ts +0 -0
  203. /package/dist/{orbcharts-plugins-basic/src → src}/relationship/plugins/ForceDirectedBubbles.d.ts +0 -0
  204. /package/dist/{orbcharts-plugins-basic/src → src}/relationship/plugins/RelationshipLegend.d.ts +0 -0
  205. /package/dist/{orbcharts-plugins-basic/src → src}/relationship/plugins/RelationshipTooltip.d.ts +0 -0
  206. /package/dist/{orbcharts-plugins-basic/src → src}/relationship/relationshipObservables.d.ts +0 -0
  207. /package/dist/{orbcharts-plugins-basic/src → src}/series/defaults.d.ts +0 -0
  208. /package/dist/{orbcharts-plugins-basic/src → src}/series/index.d.ts +0 -0
  209. /package/dist/{orbcharts-plugins-basic/src → src}/series/plugins/Bubbles.d.ts +0 -0
  210. /package/dist/{orbcharts-plugins-basic/src → src}/series/plugins/Pie.d.ts +0 -0
  211. /package/dist/{orbcharts-plugins-basic/src → src}/series/plugins/PieEventTexts.d.ts +0 -0
  212. /package/dist/{orbcharts-plugins-basic/src → src}/series/plugins/PieLabels.d.ts +0 -0
  213. /package/dist/{orbcharts-plugins-basic/src → src}/series/plugins/Rose.d.ts +0 -0
  214. /package/dist/{orbcharts-plugins-basic/src → src}/series/plugins/RoseLabels.d.ts +0 -0
  215. /package/dist/{orbcharts-plugins-basic/src → src}/series/plugins/SeriesLegend.d.ts +0 -0
  216. /package/dist/{orbcharts-plugins-basic/src → src}/series/plugins/SeriesTooltip.d.ts +0 -0
  217. /package/{src/multiValue/plugins/RankingAxis.ts → dist/src/series/plugins/Waffle.d.ts} +0 -0
  218. /package/dist/{orbcharts-plugins-basic/src → src}/series/seriesObservables.d.ts +0 -0
  219. /package/dist/{orbcharts-plugins-basic/src → src}/series/seriesUtils.d.ts +0 -0
  220. /package/dist/{orbcharts-plugins-basic/src → src}/tree/defaults.d.ts +0 -0
  221. /package/dist/{orbcharts-plugins-basic/src → src}/tree/index.d.ts +0 -0
  222. /package/dist/{orbcharts-plugins-basic/src → src}/tree/plugins/TreeLegend.d.ts +0 -0
  223. /package/dist/{orbcharts-plugins-basic/src → src}/tree/plugins/TreeMap.d.ts +0 -0
  224. /package/dist/{orbcharts-plugins-basic/src → src}/tree/plugins/TreeTooltip.d.ts +0 -0
  225. /package/dist/{orbcharts-plugins-basic/src → src}/utils/d3Utils.d.ts +0 -0
  226. /package/dist/{orbcharts-plugins-basic/src → src}/utils/observables.d.ts +0 -0
  227. /package/dist/{orbcharts-plugins-basic/src → src}/utils/orbchartsUtils.d.ts +0 -0
  228. /package/dist/{orbcharts-plugins-basic/vite.config.d.ts → vite.config.d.ts} +0 -0
@@ -1,98 +1,74 @@
1
- import {
2
- Subject,
3
- takeUntil,
4
- map,
5
- distinctUntilChanged,
6
- shareReplay
7
- } from 'rxjs'
8
- import type { DefinePluginConfig } from '../../../lib/core-types'
9
- import {
10
- defineGridPlugin } from '../../../lib/core'
11
- import { DEFAULT_GROUP_AXIS_PARAMS } from '../defaults'
12
- import { createBaseGroupAxis } from '../../base/BaseGroupAxis'
13
- import { LAYER_INDEX_OF_AXIS } from '../../const'
14
-
15
- const pluginName = 'GroupAxis'
16
-
17
- const pluginConfig: DefinePluginConfig<typeof pluginName, typeof DEFAULT_GROUP_AXIS_PARAMS> = {
18
- name: pluginName,
19
- defaultParams: DEFAULT_GROUP_AXIS_PARAMS,
20
- layerIndex: LAYER_INDEX_OF_AXIS,
21
- validator: (params, { validateColumns }) => {
22
- const result = validateColumns(params, {
23
- labelOffset: {
24
- toBe: '[number, number]',
25
- test: (value: any) => {
26
- return Array.isArray(value)
27
- && value.length === 2
28
- && typeof value[0] === 'number'
29
- && typeof value[1] === 'number'
30
- }
31
- },
32
- labelColorType: {
33
- toBeOption: 'ColorType',
34
- },
35
- axisLineVisible: {
36
- toBeTypes: ['boolean']
37
- },
38
- axisLineColorType: {
39
- toBeOption: 'ColorType',
40
- },
41
- ticks: {
42
- toBe: 'number | null | "all"',
43
- test: (value: any) => {
44
- return value === null || value === 'all' || typeof value === 'number'
45
- }
46
- },
47
- tickFormat: {
48
- toBeTypes: ['string', 'Function']
49
- },
50
- tickLineVisible: {
51
- toBeTypes: ['boolean']
52
- },
53
- tickPadding: {
54
- toBeTypes: ['number']
55
- },
56
- tickFullLine: {
57
- toBeTypes: ['boolean']
58
- },
59
- tickFullLineDasharray: {
60
- toBeTypes: ['string']
61
- },
62
- tickColorType: {
63
- toBeOption: 'ColorType',
64
- },
65
- tickTextRotate: {
66
- toBeTypes: ['number']
67
- },
68
- tickTextColorType: {
69
- toBeOption: 'ColorType',
70
- }
71
- })
72
- return result
73
- }
74
- }
75
-
76
- export const GroupAxis = defineGridPlugin(pluginConfig)(({ selection, name, observer, subject }) => {
77
-
78
- const destroy$ = new Subject()
79
-
80
- const unsubscribeBaseGroupAxis = createBaseGroupAxis(pluginName, {
81
- selection,
82
- computedData$: observer.computedData$,
83
- fullParams$: observer.fullParams$,
84
- fullDataFormatter$: observer.fullDataFormatter$,
85
- fullChartParams$: observer.fullChartParams$,
86
- gridAxesTransform$: observer.gridAxesTransform$,
87
- gridAxesReverseTransform$: observer.gridAxesReverseTransform$,
88
- gridAxesSize$: observer.gridAxesSize$,
89
- gridContainerPosition$: observer.gridContainerPosition$,
90
- isSeriesSeprate$: observer.isSeriesSeprate$,
91
- textSizePx$: observer.textSizePx$,
92
- })
93
-
94
- return () => {
95
- destroy$.next(undefined)
96
- unsubscribeBaseGroupAxis()
97
- }
1
+ import {
2
+ Subject,
3
+ takeUntil,
4
+ map,
5
+ distinctUntilChanged,
6
+ shareReplay
7
+ } from 'rxjs'
8
+ import type { DefinePluginConfig } from '../../../lib/core-types'
9
+ import {
10
+ defineGridPlugin } from '../../../lib/core'
11
+ import { DEFAULT_GROUP_AXIS_PARAMS } from '../defaults'
12
+ import { createBaseGroupAxis } from '../../base/BaseGroupAxis'
13
+ import { LAYER_INDEX_OF_AXIS } from '../../const'
14
+
15
+ const pluginName = 'GroupAxis'
16
+
17
+ const pluginConfig: DefinePluginConfig<typeof pluginName, typeof DEFAULT_GROUP_AXIS_PARAMS> = {
18
+ name: pluginName,
19
+ defaultParams: DEFAULT_GROUP_AXIS_PARAMS,
20
+ layerIndex: LAYER_INDEX_OF_AXIS,
21
+ validator: (params, { validateColumns }) => {
22
+ const result = validateColumns(params, {
23
+ labelOffset: {
24
+ toBe: '[number, number]',
25
+ test: (value: any) => {
26
+ return Array.isArray(value)
27
+ && value.length === 2
28
+ && typeof value[0] === 'number'
29
+ && typeof value[1] === 'number'
30
+ }
31
+ },
32
+ labelColorType: {
33
+ toBeOption: 'ColorType',
34
+ },
35
+ axisLineVisible: {
36
+ toBeTypes: ['boolean']
37
+ },
38
+ axisLineColorType: {
39
+ toBeOption: 'ColorType',
40
+ },
41
+ ticks: {
42
+ toBe: 'number | null | "all"',
43
+ test: (value: any) => {
44
+ return value === null || value === 'all' || typeof value === 'number'
45
+ }
46
+ },
47
+ })
48
+ return result
49
+ }
50
+ }
51
+
52
+ export const GroupAxis = defineGridPlugin(pluginConfig)(({ selection, name, observer, subject }) => {
53
+
54
+ const destroy$ = new Subject()
55
+
56
+ const unsubscribeBaseGroupAxis = createBaseGroupAxis(pluginName, {
57
+ selection,
58
+ computedData$: observer.computedData$,
59
+ fullParams$: observer.fullParams$,
60
+ fullDataFormatter$: observer.fullDataFormatter$,
61
+ fullChartParams$: observer.fullChartParams$,
62
+ gridAxesTransform$: observer.gridAxesTransform$,
63
+ gridAxesReverseTransform$: observer.gridAxesReverseTransform$,
64
+ gridAxesSize$: observer.gridAxesSize$,
65
+ gridContainerPosition$: observer.gridContainerPosition$,
66
+ isSeriesSeprate$: observer.isSeriesSeprate$,
67
+ textSizePx$: observer.textSizePx$,
68
+ })
69
+
70
+ return () => {
71
+ destroy$.next(undefined)
72
+ unsubscribeBaseGroupAxis()
73
+ }
98
74
  })
@@ -1,219 +1,219 @@
1
- import * as d3 from 'd3'
2
- import {
3
- Observable,
4
- combineLatest,
5
- switchMap,
6
- distinctUntilChanged,
7
- first,
8
- map,
9
- takeUntil,
10
- debounceTime,
11
- Subject } from 'rxjs'
12
- import type { DefinePluginConfig } from '../../../lib/core-types'
13
- import type { DataFormatterGrid } from '../../../lib/core-types'
14
- import {
15
- defineGridPlugin, createValueToAxisScale } from '../../../lib/core'
16
- import { DEFAULT_GRID_ZOOM_PARAMS } from '../defaults'
17
- import { getClassName, getUniID } from '../../utils/orbchartsUtils'
18
- import { LAYER_INDEX_OF_ROOT } from '../../const'
19
-
20
- const pluginName = 'GridZoom'
21
- const rectClassName = getClassName(pluginName, 'rect')
22
-
23
- const pluginConfig: DefinePluginConfig<typeof pluginName, typeof DEFAULT_GRID_ZOOM_PARAMS> = {
24
- name: pluginName,
25
- defaultParams: DEFAULT_GRID_ZOOM_PARAMS,
26
- layerIndex: LAYER_INDEX_OF_ROOT,
27
- validator: (params, { validateColumns }) => {
28
- return {
29
- status: 'success',
30
- columnName: '',
31
- expectToBe: ''
32
- }
33
- }
34
- }
35
-
36
- export const GridZoom = defineGridPlugin(pluginConfig)(({ selection, rootSelection, name, observer, subject }) => {
37
-
38
- const destroy$ = new Subject()
39
-
40
- // const rootRectSelection: d3.Selection<SVGRectElement, any, any, any> = rootSelection
41
- // .append('rect')
42
- // .classed(rectClassName, true)
43
- // .attr('opacity', 0)
44
-
45
- // 紀錄zoom最後一次的transform
46
- let lastTransform = {
47
- k: 1,
48
- x: 0,
49
- y: 0
50
- }
51
- // let lastDomain: [number, number] = [0, 0]
52
-
53
- // observer.layout$.pipe(
54
- // takeUntil(destroy$),
55
- // ).subscribe(d => {
56
- // rootRectSelection
57
- // .attr('width', d.width)
58
- // .attr('height', d.height)
59
- // .attr('x', d.left)
60
- // .attr('y', d.top)
61
- // })
62
-
63
- const groupMaxIndex$ = observer.computedData$.pipe(
64
- map(d => d[0] ? d[0].length - 1 : 0),
65
- distinctUntilChanged()
66
- )
67
-
68
- // const fullDataFormatterEvent$: Subject<DataFormatterGrid> = new Subject()
69
- // fullDataFormatterEvent$
70
- // .pipe(
71
- // takeUntil(destroy$),
72
- // debounceTime(50)
73
- // )
74
- // .subscribe(fullDataFormatter => {
75
- // store.fullDataFormatter$.next(fullDataFormatter)
76
- // })
77
-
78
- const initGroupAxis$ = observer.fullDataFormatter$.pipe(
79
- map(d => d.groupAxis),
80
- // 只用第一次資料來計算scale才不會造成每次變動都受到影響
81
- first()
82
- )
83
-
84
-
85
- const initGroupScale$ = combineLatest({
86
- initGroupAxis: initGroupAxis$,
87
- // fullDataFormatter: observer.fullDataFormatter$,
88
- groupMaxIndex: groupMaxIndex$,
89
- layout: observer.layout$,
90
- axisSize: observer.gridAxesSize$
91
- }).pipe(
92
- takeUntil(destroy$),
93
- switchMap(async (d) => d),
94
- map(data => {
95
- // const groupMin = 0
96
- const groupScaleDomainMin = data.initGroupAxis.scaleDomain[0] - data.initGroupAxis.scalePadding
97
- const groupScaleDomainMax = data.initGroupAxis.scaleDomain[1] === 'max'
98
- ? data.groupMaxIndex + data.initGroupAxis.scalePadding
99
- : data.initGroupAxis.scaleDomain[1] as number + data.initGroupAxis.scalePadding
100
-
101
- const groupScale: d3.ScaleLinear<number, number> = createValueToAxisScale({
102
- maxValue: data.groupMaxIndex,
103
- minValue: 0,
104
- axisWidth: data.axisSize.width,
105
- scaleDomain: [groupScaleDomainMin, groupScaleDomainMax],
106
- scaleRange: [0, 1]
107
- })
108
-
109
- return groupScale
110
- })
111
- )
112
-
113
- combineLatest({
114
- initGroupScale: initGroupScale$,
115
- // initGroupAxis: initGroupAxis$,
116
- // fullDataFormatter: fullDataFormatter$.pipe(first()), // 只用第一次資料來計算scale才不會造成每次變動都受到影響
117
- fullDataFormatter: observer.fullDataFormatter$,
118
- groupMaxIndex: groupMaxIndex$,
119
- // layout: observer.layout$,
120
- // axisSize: observer.gridAxesSize$
121
- }).pipe(
122
- takeUntil(destroy$),
123
- switchMap(async (d) => d),
124
- ).subscribe(data => {
125
- const groupMinIndex = 0
126
-
127
- const shadowScale = data.initGroupScale.copy()
128
-
129
- const zoom = d3.zoom()
130
- // .scaleExtent([1, data.groupMaxIndex])
131
- // .translateExtent([[0, 0], [data.layout.rootWidth, data.layout.rootWidth]])
132
- .on("zoom", function zoomed(event) {
133
- // debugger
134
- // console.log('event', event)
135
- const t = event.transform;
136
-
137
- // if (event.sourceEvent.type === 'mousemove') {
138
- // // 當進行平移時,反向計算 x 軸
139
- // const dx = event.transform.x - currentTransform.x; // 本次平移增量
140
- // const reversedX = currentTransform.x - dx; // 反向累積平移
141
- // // 更新變換狀態
142
- // currentTransform = d3.zoomIdentity
143
- // .translate(reversedX, event.transform.y)
144
- // .scale(event.transform.k);
145
- // } else {
146
- // // 縮放操作:只更新縮放比例
147
- // currentTransform = d3.zoomIdentity
148
- // .translate(currentTransform.x, currentTransform.y)
149
- // .scale(event.transform.k);
150
- // }
151
- // console.log('currentTransform', currentTransform)
152
-
153
- // console.log('t.x', t.x)
154
- const mapGroupindex = (d: number) => {
155
- const n = Math.round(d)
156
- return Math.min(data.groupMaxIndex, Math.max(groupMinIndex, n));
157
- }
158
-
159
- const zoomedDomain = data.fullDataFormatter.groupAxis.position === 'bottom' || data.fullDataFormatter.groupAxis.position === 'top'
160
- ? t.rescaleX(shadowScale)
161
- .domain()
162
- .map(mapGroupindex)
163
- : t.rescaleY(shadowScale)
164
- .domain()
165
- .map(mapGroupindex)
166
-
167
-
168
- // domain超過極限值
169
- if (zoomedDomain[0] <= groupMinIndex && zoomedDomain[1] >= data.groupMaxIndex) {
170
- // 繼續縮小
171
- if (t.k < lastTransform.k) {
172
- // 維持前一次的transform
173
- t.k = lastTransform.k
174
- t.x = lastTransform.x
175
- t.y = lastTransform.y
176
- }
177
- // domain間距小於1
178
- } else if ((zoomedDomain[1] - zoomedDomain[0]) <= 1) {
179
- // 繼續放大
180
- if (t.k > lastTransform.k) {
181
- // 維持前一次的transform
182
- t.k = lastTransform.k
183
- t.x = lastTransform.x
184
- t.y = lastTransform.y
185
- }
186
- }
187
-
188
- // 紀錄transform
189
- lastTransform.k = t.k
190
- lastTransform.x = t.x
191
- lastTransform.y = t.y
192
-
193
-
194
- const newDataFormatter: DataFormatterGrid = {
195
- ...data.fullDataFormatter,
196
- // grid: {
197
- // ...data.fullDataFormatter.grid,
198
- groupAxis: {
199
- ...data.fullDataFormatter.groupAxis,
200
- scaleDomain: zoomedDomain
201
- }
202
- // }
203
- }
204
- subject.dataFormatter$.next(newDataFormatter)
205
- })
206
-
207
- // 傳入外層selection
208
- // subject.selection.call(zoom as any)
209
- rootSelection.call(zoom)
210
-
211
- })
212
-
213
- return () => {
214
- destroy$.next(undefined)
215
- // rootRectSelection.remove()
216
-
217
- rootSelection.call(d3.zoom().on('zoom', null))
218
- }
1
+ import * as d3 from 'd3'
2
+ import {
3
+ Observable,
4
+ combineLatest,
5
+ switchMap,
6
+ distinctUntilChanged,
7
+ first,
8
+ map,
9
+ takeUntil,
10
+ debounceTime,
11
+ Subject } from 'rxjs'
12
+ import type { DefinePluginConfig } from '../../../lib/core-types'
13
+ import type { DataFormatterGrid } from '../../../lib/core-types'
14
+ import {
15
+ defineGridPlugin, createValueToAxisScale } from '../../../lib/core'
16
+ import { DEFAULT_GRID_ZOOM_PARAMS } from '../defaults'
17
+ import { getClassName, getUniID } from '../../utils/orbchartsUtils'
18
+ import { LAYER_INDEX_OF_ROOT } from '../../const'
19
+
20
+ const pluginName = 'GroupZoom'
21
+ const rectClassName = getClassName(pluginName, 'rect')
22
+
23
+ const pluginConfig: DefinePluginConfig<typeof pluginName, typeof DEFAULT_GRID_ZOOM_PARAMS> = {
24
+ name: pluginName,
25
+ defaultParams: DEFAULT_GRID_ZOOM_PARAMS,
26
+ layerIndex: LAYER_INDEX_OF_ROOT,
27
+ validator: (params, { validateColumns }) => {
28
+ return {
29
+ status: 'success',
30
+ columnName: '',
31
+ expectToBe: ''
32
+ }
33
+ }
34
+ }
35
+
36
+ export const GroupZoom = defineGridPlugin(pluginConfig)(({ selection, rootSelection, name, observer, subject }) => {
37
+
38
+ const destroy$ = new Subject()
39
+
40
+ // const rootRectSelection: d3.Selection<SVGRectElement, any, any, any> = rootSelection
41
+ // .append('rect')
42
+ // .classed(rectClassName, true)
43
+ // .attr('opacity', 0)
44
+
45
+ // 紀錄zoom最後一次的transform
46
+ let lastTransform = {
47
+ k: 1,
48
+ x: 0,
49
+ y: 0
50
+ }
51
+ // let lastDomain: [number, number] = [0, 0]
52
+
53
+ // observer.layout$.pipe(
54
+ // takeUntil(destroy$),
55
+ // ).subscribe(d => {
56
+ // rootRectSelection
57
+ // .attr('width', d.width)
58
+ // .attr('height', d.height)
59
+ // .attr('x', d.left)
60
+ // .attr('y', d.top)
61
+ // })
62
+
63
+ const groupMaxIndex$ = observer.computedData$.pipe(
64
+ map(d => d[0] ? d[0].length - 1 : 0),
65
+ distinctUntilChanged()
66
+ )
67
+
68
+ // const fullDataFormatterEvent$: Subject<DataFormatterGrid> = new Subject()
69
+ // fullDataFormatterEvent$
70
+ // .pipe(
71
+ // takeUntil(destroy$),
72
+ // debounceTime(50)
73
+ // )
74
+ // .subscribe(fullDataFormatter => {
75
+ // store.fullDataFormatter$.next(fullDataFormatter)
76
+ // })
77
+
78
+ const initGroupAxis$ = observer.fullDataFormatter$.pipe(
79
+ map(d => d.groupAxis),
80
+ // 只用第一次資料來計算scale才不會造成每次變動都受到影響
81
+ first()
82
+ )
83
+
84
+
85
+ const initGroupScale$ = combineLatest({
86
+ initGroupAxis: initGroupAxis$,
87
+ // fullDataFormatter: observer.fullDataFormatter$,
88
+ groupMaxIndex: groupMaxIndex$,
89
+ layout: observer.layout$,
90
+ axisSize: observer.gridAxesSize$
91
+ }).pipe(
92
+ takeUntil(destroy$),
93
+ switchMap(async (d) => d),
94
+ map(data => {
95
+ // const groupMin = 0
96
+ const groupScaleDomainMin = data.initGroupAxis.scaleDomain[0] - data.initGroupAxis.scalePadding
97
+ const groupScaleDomainMax = data.initGroupAxis.scaleDomain[1] === 'max'
98
+ ? data.groupMaxIndex + data.initGroupAxis.scalePadding
99
+ : data.initGroupAxis.scaleDomain[1] as number + data.initGroupAxis.scalePadding
100
+
101
+ const groupScale: d3.ScaleLinear<number, number> = createValueToAxisScale({
102
+ maxValue: data.groupMaxIndex,
103
+ minValue: 0,
104
+ axisWidth: data.axisSize.width,
105
+ scaleDomain: [groupScaleDomainMin, groupScaleDomainMax],
106
+ scaleRange: [0, 1]
107
+ })
108
+
109
+ return groupScale
110
+ })
111
+ )
112
+
113
+ combineLatest({
114
+ initGroupScale: initGroupScale$,
115
+ // initGroupAxis: initGroupAxis$,
116
+ // fullDataFormatter: fullDataFormatter$.pipe(first()), // 只用第一次資料來計算scale才不會造成每次變動都受到影響
117
+ fullDataFormatter: observer.fullDataFormatter$,
118
+ groupMaxIndex: groupMaxIndex$,
119
+ // layout: observer.layout$,
120
+ // axisSize: observer.gridAxesSize$
121
+ }).pipe(
122
+ takeUntil(destroy$),
123
+ switchMap(async (d) => d),
124
+ ).subscribe(data => {
125
+ const groupMinIndex = 0
126
+
127
+ const shadowScale = data.initGroupScale.copy()
128
+
129
+ const zoom = d3.zoom()
130
+ // .scaleExtent([1, data.groupMaxIndex])
131
+ // .translateExtent([[0, 0], [data.layout.rootWidth, data.layout.rootWidth]])
132
+ .on("zoom", function zoomed(event) {
133
+ // debugger
134
+ // console.log('event', event)
135
+ const t = event.transform;
136
+
137
+ // if (event.sourceEvent.type === 'mousemove') {
138
+ // // 當進行平移時,反向計算 x 軸
139
+ // const dx = event.transform.x - currentTransform.x; // 本次平移增量
140
+ // const reversedX = currentTransform.x - dx; // 反向累積平移
141
+ // // 更新變換狀態
142
+ // currentTransform = d3.zoomIdentity
143
+ // .translate(reversedX, event.transform.y)
144
+ // .scale(event.transform.k);
145
+ // } else {
146
+ // // 縮放操作:只更新縮放比例
147
+ // currentTransform = d3.zoomIdentity
148
+ // .translate(currentTransform.x, currentTransform.y)
149
+ // .scale(event.transform.k);
150
+ // }
151
+ // console.log('currentTransform', currentTransform)
152
+
153
+ // console.log('t.x', t.x)
154
+ const mapGroupindex = (d: number) => {
155
+ const n = Math.round(d)
156
+ return Math.min(data.groupMaxIndex, Math.max(groupMinIndex, n));
157
+ }
158
+
159
+ const zoomedDomain = data.fullDataFormatter.groupAxis.position === 'bottom' || data.fullDataFormatter.groupAxis.position === 'top'
160
+ ? t.rescaleX(shadowScale)
161
+ .domain()
162
+ .map(mapGroupindex)
163
+ : t.rescaleY(shadowScale)
164
+ .domain()
165
+ .map(mapGroupindex)
166
+
167
+
168
+ // domain超過極限值
169
+ if (zoomedDomain[0] <= groupMinIndex && zoomedDomain[1] >= data.groupMaxIndex) {
170
+ // 繼續縮小
171
+ if (t.k < lastTransform.k) {
172
+ // 維持前一次的transform
173
+ t.k = lastTransform.k
174
+ t.x = lastTransform.x
175
+ t.y = lastTransform.y
176
+ }
177
+ // domain間距小於1
178
+ } else if ((zoomedDomain[1] - zoomedDomain[0]) <= 1) {
179
+ // 繼續放大
180
+ if (t.k > lastTransform.k) {
181
+ // 維持前一次的transform
182
+ t.k = lastTransform.k
183
+ t.x = lastTransform.x
184
+ t.y = lastTransform.y
185
+ }
186
+ }
187
+
188
+ // 紀錄transform
189
+ lastTransform.k = t.k
190
+ lastTransform.x = t.x
191
+ lastTransform.y = t.y
192
+
193
+
194
+ const newDataFormatter: DataFormatterGrid = {
195
+ ...data.fullDataFormatter,
196
+ // grid: {
197
+ // ...data.fullDataFormatter.grid,
198
+ groupAxis: {
199
+ ...data.fullDataFormatter.groupAxis,
200
+ scaleDomain: zoomedDomain
201
+ }
202
+ // }
203
+ }
204
+ subject.dataFormatter$.next(newDataFormatter)
205
+ })
206
+
207
+ // 傳入外層selection
208
+ // subject.selection.call(zoom as any)
209
+ rootSelection.call(zoom)
210
+
211
+ })
212
+
213
+ return () => {
214
+ destroy$.next(undefined)
215
+ // rootRectSelection.remove()
216
+
217
+ rootSelection.call(d3.zoom().on('zoom', null))
218
+ }
219
219
  })