@orbcharts/plugins-basic 3.0.0-beta.1 → 3.0.0-beta.10

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 (212) hide show
  1. package/LICENSE +200 -200
  2. package/dist/{src → orbcharts-plugins-basic/src}/base/BaseBars.d.ts +2 -2
  3. package/dist/{src → orbcharts-plugins-basic/src}/base/BaseBarsTriangle.d.ts +2 -2
  4. package/dist/{src → orbcharts-plugins-basic/src}/base/BaseDots.d.ts +2 -2
  5. package/dist/{src → orbcharts-plugins-basic/src}/base/BaseGroupAxis.d.ts +2 -2
  6. package/dist/{src → orbcharts-plugins-basic/src}/base/BaseLegend.d.ts +1 -1
  7. package/dist/{src → orbcharts-plugins-basic/src}/base/BaseLineAreas.d.ts +3 -3
  8. package/dist/{src → orbcharts-plugins-basic/src}/base/BaseLines.d.ts +3 -3
  9. package/dist/{src/base/BaseBarStack.d.ts → orbcharts-plugins-basic/src/base/BaseStackedBar.d.ts} +6 -6
  10. package/dist/{src → orbcharts-plugins-basic/src}/base/BaseValueAxis.d.ts +3 -2
  11. package/dist/{src → orbcharts-plugins-basic/src}/grid/defaults.d.ts +4 -4
  12. package/dist/{src → orbcharts-plugins-basic/src}/grid/gridObservables.d.ts +5 -5
  13. package/dist/{src → orbcharts-plugins-basic/src}/grid/index.d.ts +2 -2
  14. package/dist/orbcharts-plugins-basic/src/grid/plugins/StackedBar.d.ts +1 -0
  15. package/dist/orbcharts-plugins-basic/src/grid/plugins/StackedValueAxis.d.ts +1 -0
  16. package/dist/orbcharts-plugins-basic/src/index.d.ts +7 -0
  17. package/dist/{src → orbcharts-plugins-basic/src}/multiGrid/defaults.d.ts +4 -4
  18. package/dist/{src → orbcharts-plugins-basic/src}/multiGrid/index.d.ts +3 -3
  19. package/dist/orbcharts-plugins-basic/src/multiGrid/plugins/MultiStackedBar.d.ts +1 -0
  20. package/dist/orbcharts-plugins-basic/src/multiGrid/plugins/MultiStackedValueAxis.d.ts +1 -0
  21. package/dist/orbcharts-plugins-basic/src/multiGrid/plugins/OverlappingStackedValueAxes.d.ts +1 -0
  22. package/dist/orbcharts-plugins-basic/src/multiValue/defaults.d.ts +9 -0
  23. package/dist/orbcharts-plugins-basic/src/multiValue/index.d.ts +8 -0
  24. package/dist/orbcharts-plugins-basic/src/multiValue/multiValueObservables.d.ts +33 -0
  25. package/dist/orbcharts-plugins-basic/src/multiValue/plugins/MultiValueLegend.d.ts +1 -0
  26. package/dist/orbcharts-plugins-basic/src/multiValue/plugins/MultiValueTooltip.d.ts +1 -0
  27. package/dist/orbcharts-plugins-basic/src/multiValue/plugins/Scatter.d.ts +3 -0
  28. package/dist/orbcharts-plugins-basic/src/multiValue/plugins/ScatterBubbles.d.ts +3 -0
  29. package/dist/orbcharts-plugins-basic/src/multiValue/plugins/XYAux.d.ts +3 -0
  30. package/dist/orbcharts-plugins-basic/src/multiValue/plugins/XYAxes.d.ts +3 -0
  31. package/dist/orbcharts-plugins-basic/src/multiValue/plugins/XYZoom.d.ts +1 -0
  32. package/dist/orbcharts-plugins-basic/src/relationship/defaults.d.ts +6 -0
  33. package/dist/orbcharts-plugins-basic/src/relationship/index.d.ts +5 -0
  34. package/dist/orbcharts-plugins-basic/src/relationship/plugins/ForceDirected.d.ts +3 -0
  35. package/dist/orbcharts-plugins-basic/src/relationship/plugins/ForceDirectedBubbles.d.ts +3 -0
  36. package/dist/orbcharts-plugins-basic/src/relationship/plugins/RelationshipLegend.d.ts +1 -0
  37. package/dist/orbcharts-plugins-basic/src/relationship/plugins/RelationshipTooltip.d.ts +1 -0
  38. package/dist/orbcharts-plugins-basic/src/relationship/relationshipObservables.d.ts +1 -0
  39. package/dist/{src → orbcharts-plugins-basic/src}/series/seriesObservables.d.ts +3 -3
  40. package/dist/{src → orbcharts-plugins-basic/src}/utils/commonUtils.d.ts +1 -1
  41. package/dist/{src → orbcharts-plugins-basic/src}/utils/d3Utils.d.ts +2 -2
  42. package/dist/{src → orbcharts-plugins-basic/src}/utils/observables.d.ts +1 -1
  43. package/dist/{src → orbcharts-plugins-basic/src}/utils/orbchartsUtils.d.ts +3 -3
  44. package/dist/orbcharts-plugins-basic.es.js +13264 -10298
  45. package/dist/orbcharts-plugins-basic.umd.js +105 -55
  46. package/dist/src/index.d.ts +1 -5
  47. package/lib/core-types.ts +7 -7
  48. package/lib/core.ts +6 -6
  49. package/lib/plugins-basic-types.ts +6 -6
  50. package/package.json +44 -44
  51. package/src/base/BaseBars.ts +765 -765
  52. package/src/base/BaseBarsTriangle.ts +676 -674
  53. package/src/base/BaseDots.ts +464 -515
  54. package/src/base/BaseGroupAxis.ts +679 -679
  55. package/src/base/BaseLegend.ts +684 -680
  56. package/src/base/BaseLineAreas.ts +629 -629
  57. package/src/base/BaseLines.ts +706 -706
  58. package/src/base/{BaseBarStack.ts → BaseStackedBar.ts} +782 -780
  59. package/src/base/BaseTooltip.ts +385 -382
  60. package/src/base/BaseValueAxis.ts +583 -580
  61. package/src/base/types.ts +2 -2
  62. package/src/const.ts +30 -30
  63. package/src/grid/defaults.ts +246 -244
  64. package/src/grid/gridObservables.ts +554 -545
  65. package/src/grid/index.ts +16 -16
  66. package/src/grid/plugins/Bars.ts +69 -69
  67. package/src/grid/plugins/BarsPN.ts +66 -66
  68. package/src/grid/plugins/BarsTriangle.ts +73 -73
  69. package/src/grid/plugins/Dots.ts +68 -68
  70. package/src/grid/plugins/GridLegend.ts +107 -107
  71. package/src/grid/plugins/GridTooltip.ts +66 -66
  72. package/src/grid/plugins/GridZoom.ts +218 -218
  73. package/src/grid/plugins/GroupAux.ts +1103 -1098
  74. package/src/grid/plugins/GroupAxis.ts +97 -97
  75. package/src/grid/plugins/LineAreas.ts +65 -65
  76. package/src/grid/plugins/Lines.ts +59 -59
  77. package/src/grid/plugins/{BarStack.ts → StackedBar.ts} +64 -64
  78. package/src/grid/plugins/{ValueStackAxis.ts → StackedValueAxis.ts} +96 -95
  79. package/src/grid/plugins/ValueAxis.ts +94 -93
  80. package/src/index.ts +6 -9
  81. package/src/multiGrid/defaults.ts +224 -224
  82. package/src/multiGrid/index.ts +15 -15
  83. package/src/multiGrid/multiGridObservables.ts +49 -49
  84. package/src/multiGrid/plugins/MultiBars.ts +108 -108
  85. package/src/multiGrid/plugins/MultiBarsTriangle.ts +114 -114
  86. package/src/multiGrid/plugins/MultiDots.ts +102 -102
  87. package/src/multiGrid/plugins/MultiGridLegend.ts +159 -159
  88. package/src/multiGrid/plugins/MultiGridTooltip.ts +66 -66
  89. package/src/multiGrid/plugins/MultiGroupAxis.ts +137 -137
  90. package/src/multiGrid/plugins/MultiLineAreas.ts +107 -107
  91. package/src/multiGrid/plugins/MultiLines.ts +101 -101
  92. package/src/multiGrid/plugins/{MultiBarStack.ts → MultiStackedBar.ts} +106 -106
  93. package/src/multiGrid/plugins/{MultiValueStackAxis.ts → MultiStackedValueAxis.ts} +134 -133
  94. package/src/multiGrid/plugins/MultiValueAxis.ts +134 -133
  95. package/src/multiGrid/plugins/{OverlappingValueStackAxes.ts → OverlappingStackedValueAxes.ts} +299 -298
  96. package/src/multiGrid/plugins/OverlappingValueAxes.ts +300 -299
  97. package/src/multiValue/defaults.ts +167 -0
  98. package/src/multiValue/index.ts +9 -0
  99. package/src/multiValue/multiValueObservables.ts +297 -0
  100. package/src/multiValue/plugins/MultiValueLegend.ts +107 -0
  101. package/src/multiValue/plugins/MultiValueTooltip.ts +66 -0
  102. package/src/multiValue/plugins/Scatter.ts +426 -0
  103. package/src/multiValue/plugins/ScatterBubbles.ts +554 -0
  104. package/src/multiValue/plugins/XYAux.ts +682 -0
  105. package/src/multiValue/plugins/XYAxes.ts +685 -0
  106. package/src/multiValue/plugins/XYZoom.ts +300 -0
  107. package/src/noneData/defaults.ts +102 -102
  108. package/src/noneData/index.ts +3 -3
  109. package/src/noneData/plugins/Container.ts +28 -28
  110. package/src/noneData/plugins/Tooltip.ts +374 -374
  111. package/src/relationship/defaults.ts +196 -0
  112. package/src/relationship/index.ts +5 -0
  113. package/src/relationship/plugins/ForceDirected.ts +1167 -0
  114. package/src/relationship/plugins/ForceDirectedBubbles.ts +1391 -0
  115. package/src/relationship/plugins/RelationshipLegend.ts +100 -0
  116. package/src/relationship/plugins/RelationshipTooltip.ts +66 -0
  117. package/src/relationship/relationshipObservables.ts +50 -0
  118. package/src/series/defaults.ts +206 -206
  119. package/src/series/index.ts +9 -9
  120. package/src/series/plugins/Bubbles.ts +606 -603
  121. package/src/series/plugins/Pie.ts +623 -623
  122. package/src/series/plugins/PieEventTexts.ts +284 -283
  123. package/src/series/plugins/PieLabels.ts +640 -640
  124. package/src/series/plugins/Rose.ts +516 -516
  125. package/src/series/plugins/RoseLabels.ts +600 -600
  126. package/src/series/plugins/SeriesLegend.ts +107 -107
  127. package/src/series/plugins/SeriesTooltip.ts +66 -66
  128. package/src/series/seriesObservables.ts +145 -145
  129. package/src/series/seriesUtils.ts +51 -51
  130. package/src/tree/defaults.ts +78 -78
  131. package/src/tree/index.ts +4 -4
  132. package/src/tree/plugins/TreeLegend.ts +100 -107
  133. package/src/tree/plugins/TreeMap.ts +333 -333
  134. package/src/tree/plugins/TreeTooltip.ts +66 -66
  135. package/src/utils/commonUtils.ts +21 -21
  136. package/src/utils/d3Graphics.ts +174 -174
  137. package/src/utils/d3Utils.ts +74 -73
  138. package/src/utils/observables.ts +14 -14
  139. package/src/utils/orbchartsUtils.ts +116 -100
  140. package/tsconfig.base.json +13 -13
  141. package/tsconfig.json +2 -2
  142. package/vite.config.js +22 -22
  143. package/dist/src/grid/plugins/BarStack.d.ts +0 -1
  144. package/dist/src/grid/plugins/ValueStackAxis.d.ts +0 -1
  145. package/dist/src/multiGrid/plugins/MultiBarStack.d.ts +0 -1
  146. package/dist/src/multiGrid/plugins/MultiValueStackAxis.d.ts +0 -1
  147. package/dist/src/multiGrid/plugins/OverlappingValueStackAxes.d.ts +0 -1
  148. package/dist/src/multiValue/plugins/Scatter.d.ts +0 -0
  149. package/dist/src/multiValue/plugins/ScatterAxes.d.ts +0 -0
  150. package/dist/src/noneData/plugins/Container.d.ts +0 -1
  151. package/dist/src/noneData/plugins/Tooltip.d.ts +0 -3
  152. package/dist/src/relationship/index.d.ts +0 -0
  153. package/dist/src/relationship/plugins/Relationship.d.ts +0 -0
  154. package/src/base/BaseGroupArea.ts +0 -0
  155. package/src/multiValue/plugins/ScatterAxes.ts +0 -0
  156. package/src/relationship/plugins/Relationship.ts +0 -0
  157. /package/dist/{lib → orbcharts-plugins-basic/lib}/core-types.d.ts +0 -0
  158. /package/dist/{lib → orbcharts-plugins-basic/lib}/core.d.ts +0 -0
  159. /package/dist/{lib → orbcharts-plugins-basic/lib}/plugins-basic-types.d.ts +0 -0
  160. /package/dist/{src → orbcharts-plugins-basic/src}/base/BaseTooltip.d.ts +0 -0
  161. /package/dist/{src → orbcharts-plugins-basic/src}/base/types.d.ts +0 -0
  162. /package/dist/{src → orbcharts-plugins-basic/src}/const.d.ts +0 -0
  163. /package/dist/{src → orbcharts-plugins-basic/src}/grid/plugins/Bars.d.ts +0 -0
  164. /package/dist/{src → orbcharts-plugins-basic/src}/grid/plugins/BarsPN.d.ts +0 -0
  165. /package/dist/{src → orbcharts-plugins-basic/src}/grid/plugins/BarsTriangle.d.ts +0 -0
  166. /package/dist/{src → orbcharts-plugins-basic/src}/grid/plugins/Dots.d.ts +0 -0
  167. /package/dist/{src → orbcharts-plugins-basic/src}/grid/plugins/GridLegend.d.ts +0 -0
  168. /package/dist/{src → orbcharts-plugins-basic/src}/grid/plugins/GridTooltip.d.ts +0 -0
  169. /package/dist/{src → orbcharts-plugins-basic/src}/grid/plugins/GridZoom.d.ts +0 -0
  170. /package/dist/{src → orbcharts-plugins-basic/src}/grid/plugins/GroupAux.d.ts +0 -0
  171. /package/dist/{src → orbcharts-plugins-basic/src}/grid/plugins/GroupAxis.d.ts +0 -0
  172. /package/dist/{src → orbcharts-plugins-basic/src}/grid/plugins/LineAreas.d.ts +0 -0
  173. /package/dist/{src → orbcharts-plugins-basic/src}/grid/plugins/Lines.d.ts +0 -0
  174. /package/dist/{src → orbcharts-plugins-basic/src}/grid/plugins/ValueAxis.d.ts +0 -0
  175. /package/dist/{src → orbcharts-plugins-basic/src}/multiGrid/multiGridObservables.d.ts +0 -0
  176. /package/dist/{src → orbcharts-plugins-basic/src}/multiGrid/plugins/MultiBars.d.ts +0 -0
  177. /package/dist/{src → orbcharts-plugins-basic/src}/multiGrid/plugins/MultiBarsTriangle.d.ts +0 -0
  178. /package/dist/{src → orbcharts-plugins-basic/src}/multiGrid/plugins/MultiDots.d.ts +0 -0
  179. /package/dist/{src → orbcharts-plugins-basic/src}/multiGrid/plugins/MultiGridLegend.d.ts +0 -0
  180. /package/dist/{src → orbcharts-plugins-basic/src}/multiGrid/plugins/MultiGridTooltip.d.ts +0 -0
  181. /package/dist/{src → orbcharts-plugins-basic/src}/multiGrid/plugins/MultiGroupAxis.d.ts +0 -0
  182. /package/dist/{src → orbcharts-plugins-basic/src}/multiGrid/plugins/MultiLineAreas.d.ts +0 -0
  183. /package/dist/{src → orbcharts-plugins-basic/src}/multiGrid/plugins/MultiLines.d.ts +0 -0
  184. /package/dist/{src → orbcharts-plugins-basic/src}/multiGrid/plugins/MultiValueAxis.d.ts +0 -0
  185. /package/dist/{src → orbcharts-plugins-basic/src}/multiGrid/plugins/OverlappingValueAxes.d.ts +0 -0
  186. /package/dist/{src/grid → orbcharts-plugins-basic/src/multiValue}/plugins/Ranking.d.ts +0 -0
  187. /package/dist/{src/grid → orbcharts-plugins-basic/src/multiValue}/plugins/RankingAxis.d.ts +0 -0
  188. /package/dist/{src → orbcharts-plugins-basic/src}/noneData/defaults.d.ts +0 -0
  189. /package/dist/{src → orbcharts-plugins-basic/src}/noneData/index.d.ts +0 -0
  190. /package/dist/{src/base/BaseGroupArea.d.ts → orbcharts-plugins-basic/src/noneData/plugins/Container.d.ts} +0 -0
  191. /package/dist/{src/multiValue/index.d.ts → orbcharts-plugins-basic/src/noneData/plugins/Tooltip.d.ts} +0 -0
  192. /package/dist/{src → orbcharts-plugins-basic/src}/series/defaults.d.ts +0 -0
  193. /package/dist/{src → orbcharts-plugins-basic/src}/series/index.d.ts +0 -0
  194. /package/dist/{src → orbcharts-plugins-basic/src}/series/plugins/Bubbles.d.ts +0 -0
  195. /package/dist/{src → orbcharts-plugins-basic/src}/series/plugins/Pie.d.ts +0 -0
  196. /package/dist/{src → orbcharts-plugins-basic/src}/series/plugins/PieEventTexts.d.ts +0 -0
  197. /package/dist/{src → orbcharts-plugins-basic/src}/series/plugins/PieLabels.d.ts +0 -0
  198. /package/dist/{src → orbcharts-plugins-basic/src}/series/plugins/Rose.d.ts +0 -0
  199. /package/dist/{src → orbcharts-plugins-basic/src}/series/plugins/RoseLabels.d.ts +0 -0
  200. /package/dist/{src → orbcharts-plugins-basic/src}/series/plugins/SeriesLegend.d.ts +0 -0
  201. /package/dist/{src → orbcharts-plugins-basic/src}/series/plugins/SeriesTooltip.d.ts +0 -0
  202. /package/dist/{src → orbcharts-plugins-basic/src}/series/plugins/Waffle.d.ts +0 -0
  203. /package/dist/{src → orbcharts-plugins-basic/src}/series/seriesUtils.d.ts +0 -0
  204. /package/dist/{src → orbcharts-plugins-basic/src}/tree/defaults.d.ts +0 -0
  205. /package/dist/{src → orbcharts-plugins-basic/src}/tree/index.d.ts +0 -0
  206. /package/dist/{src → orbcharts-plugins-basic/src}/tree/plugins/TreeLegend.d.ts +0 -0
  207. /package/dist/{src → orbcharts-plugins-basic/src}/tree/plugins/TreeMap.d.ts +0 -0
  208. /package/dist/{src → orbcharts-plugins-basic/src}/tree/plugins/TreeTooltip.d.ts +0 -0
  209. /package/dist/{src → orbcharts-plugins-basic/src}/utils/d3Graphics.d.ts +0 -0
  210. /package/dist/{vite.config.d.ts → orbcharts-plugins-basic/vite.config.d.ts} +0 -0
  211. /package/src/{grid → multiValue}/plugins/Ranking.ts +0 -0
  212. /package/src/{grid → multiValue}/plugins/RankingAxis.ts +0 -0
@@ -1,159 +1,159 @@
1
- import * as d3 from 'd3'
2
- import {
3
- combineLatest,
4
- map,
5
- switchMap,
6
- takeUntil,
7
- Observable,
8
- Subject } from 'rxjs'
9
- import type { DefinePluginConfig } from '../../../lib/core-types'
10
- import {
11
- defineMultiGridPlugin, mergeOptionsWithDefault } from '../../../lib/core'
12
- import { DEFAULT_MULTI_GRID_LEGEND_PARAMS } from '../defaults'
13
- import { createBaseLegend } from '../../base/BaseLegend'
14
- import type { BaseLegendParams } from '../../../lib/plugins-basic-types'
15
- import { LAYER_INDEX_OF_INFO } from '../../const'
16
-
17
- const pluginName = 'MultiGridLegend'
18
-
19
- const pluginConfig: DefinePluginConfig<typeof pluginName, typeof DEFAULT_MULTI_GRID_LEGEND_PARAMS> = {
20
- name: pluginName,
21
- defaultParams: DEFAULT_MULTI_GRID_LEGEND_PARAMS,
22
- layerIndex: LAYER_INDEX_OF_INFO,
23
- validator: (params, { validateColumns }) => {
24
- const result = validateColumns(params, {
25
- placement: {
26
- toBe: '"top" | "top-start" | "top-end" | "bottom" | "bottom-start" | "bottom-end" | "left" | "left-start" | "left-end" | "right" | "right-start" | "right-end"',
27
- test: (value) => {
28
- return [
29
- 'top', 'top-start', 'top-end',
30
- 'bottom', 'bottom-start', 'bottom-end',
31
- 'left', 'left-start', 'left-end',
32
- 'right', 'right-start', 'right-end'
33
- ].includes(value)
34
- }
35
- },
36
- padding: {
37
- toBeTypes: ['number']
38
- },
39
- backgroundFill: {
40
- toBeOption: 'ColorType',
41
- },
42
- backgroundStroke: {
43
- toBeOption: 'ColorType',
44
- },
45
- gap: {
46
- toBeTypes: ['number']
47
- },
48
- listRectWidth: {
49
- toBeTypes: ['number']
50
- },
51
- listRectHeight: {
52
- toBeTypes: ['number']
53
- },
54
- listRectRadius: {
55
- toBeTypes: ['number']
56
- },
57
- gridList: {
58
- toBeTypes: ['object[]']
59
- },
60
- textColorType: {
61
- toBeOption: 'ColorType',
62
- }
63
- })
64
- if (params.gridList) {
65
- const gridListResult = params.gridList.map((grid, gridIndex) => {
66
- return validateColumns(grid, {
67
- listRectWidth: {
68
- toBeTypes: ['number']
69
- },
70
- listRectHeight: {
71
- toBeTypes: ['number']
72
- },
73
- listRectRadius: {
74
- toBeTypes: ['number']
75
- }
76
- })
77
- })
78
- const errorResult = gridListResult.find(r => r.status === 'error')
79
- if (errorResult) {
80
- return errorResult
81
- }
82
- }
83
- return result
84
- }
85
- }
86
-
87
- export const MultiGridLegend = defineMultiGridPlugin(pluginConfig)(({ selection, rootSelection, observer, subject }) => {
88
-
89
- const destroy$ = new Subject()
90
-
91
- const seriesLabels$ = observer.multiGridEachDetail$.pipe(
92
- takeUntil(destroy$),
93
- map(multiGrid => {
94
- const seriesLabelsObservableArr = multiGrid.map((grid, gridIndex) => {
95
- return grid.SeriesDataMap$.pipe(
96
- // grid內的seriesLabels
97
- map(seriesDataMap => Array.from(seriesDataMap.keys()))
98
- )
99
- })
100
- return seriesLabelsObservableArr
101
- }),
102
- switchMap(seriesLabelsObservableArr => combineLatest(seriesLabelsObservableArr)),
103
- map(data => data.flat())
104
- )
105
-
106
- const seriesList$ = combineLatest({
107
- fullParams: observer.fullParams$,
108
- // multiGrid: observer.multiGridEachDetail$,
109
- computedData: observer.computedData$,
110
- }).pipe(
111
- takeUntil(destroy$),
112
- switchMap(async d => d),
113
- map(data => {
114
- // grid
115
- return data.computedData
116
- .map((gridData, gridIndex) => {
117
- // 這個grid全部series要套用的圖例列點樣式
118
- const gridListStyle = mergeOptionsWithDefault(data.fullParams.gridList[gridIndex] ?? {}, {
119
- listRectWidth: data.fullParams.listRectWidth,
120
- listRectHeight: data.fullParams.listRectHeight,
121
- listRectRadius: data.fullParams.listRectRadius,
122
- })
123
- // series
124
- return gridData.map(d => gridListStyle)
125
- })
126
- .flat()
127
-
128
- })
129
- )
130
-
131
- const fullParams$: Observable<BaseLegendParams> = combineLatest({
132
- fullParams: observer.fullParams$,
133
- seriesList: seriesList$
134
- }).pipe(
135
- takeUntil(destroy$),
136
- switchMap(async d => d),
137
- map(d => {
138
- return {
139
- ...d.fullParams,
140
- seriesList: d.seriesList
141
- }
142
- })
143
- )
144
-
145
- const unsubscribeBaseLegend = createBaseLegend(pluginName, {
146
- rootSelection,
147
- seriesLabels$,
148
- fullParams$,
149
- layout$: observer.layout$,
150
- fullChartParams$: observer.fullChartParams$,
151
- textSizePx$: observer.textSizePx$
152
- })
153
-
154
- return () => {
155
- destroy$.next(undefined)
156
- unsubscribeBaseLegend()
157
- }
158
- })
159
-
1
+ import * as d3 from 'd3'
2
+ import {
3
+ combineLatest,
4
+ map,
5
+ switchMap,
6
+ takeUntil,
7
+ Observable,
8
+ Subject } from 'rxjs'
9
+ import type { DefinePluginConfig } from '../../../lib/core-types'
10
+ import {
11
+ defineMultiGridPlugin, mergeOptionsWithDefault } from '../../../lib/core'
12
+ import { DEFAULT_MULTI_GRID_LEGEND_PARAMS } from '../defaults'
13
+ import { createBaseLegend } from '../../base/BaseLegend'
14
+ import type { BaseLegendParams } from '../../../lib/plugins-basic-types'
15
+ import { LAYER_INDEX_OF_INFO } from '../../const'
16
+
17
+ const pluginName = 'MultiGridLegend'
18
+
19
+ const pluginConfig: DefinePluginConfig<typeof pluginName, typeof DEFAULT_MULTI_GRID_LEGEND_PARAMS> = {
20
+ name: pluginName,
21
+ defaultParams: DEFAULT_MULTI_GRID_LEGEND_PARAMS,
22
+ layerIndex: LAYER_INDEX_OF_INFO,
23
+ validator: (params, { validateColumns }) => {
24
+ const result = validateColumns(params, {
25
+ placement: {
26
+ toBe: '"top" | "top-start" | "top-end" | "bottom" | "bottom-start" | "bottom-end" | "left" | "left-start" | "left-end" | "right" | "right-start" | "right-end"',
27
+ test: (value) => {
28
+ return [
29
+ 'top', 'top-start', 'top-end',
30
+ 'bottom', 'bottom-start', 'bottom-end',
31
+ 'left', 'left-start', 'left-end',
32
+ 'right', 'right-start', 'right-end'
33
+ ].includes(value)
34
+ }
35
+ },
36
+ padding: {
37
+ toBeTypes: ['number']
38
+ },
39
+ backgroundFill: {
40
+ toBeOption: 'ColorType',
41
+ },
42
+ backgroundStroke: {
43
+ toBeOption: 'ColorType',
44
+ },
45
+ gap: {
46
+ toBeTypes: ['number']
47
+ },
48
+ listRectWidth: {
49
+ toBeTypes: ['number']
50
+ },
51
+ listRectHeight: {
52
+ toBeTypes: ['number']
53
+ },
54
+ listRectRadius: {
55
+ toBeTypes: ['number']
56
+ },
57
+ gridList: {
58
+ toBeTypes: ['object[]']
59
+ },
60
+ textColorType: {
61
+ toBeOption: 'ColorType',
62
+ }
63
+ })
64
+ if (params.gridList) {
65
+ const gridListResult = params.gridList.map((grid, gridIndex) => {
66
+ return validateColumns(grid, {
67
+ listRectWidth: {
68
+ toBeTypes: ['number']
69
+ },
70
+ listRectHeight: {
71
+ toBeTypes: ['number']
72
+ },
73
+ listRectRadius: {
74
+ toBeTypes: ['number']
75
+ }
76
+ })
77
+ })
78
+ const errorResult = gridListResult.find(r => r.status === 'error')
79
+ if (errorResult) {
80
+ return errorResult
81
+ }
82
+ }
83
+ return result
84
+ }
85
+ }
86
+
87
+ export const MultiGridLegend = defineMultiGridPlugin(pluginConfig)(({ selection, rootSelection, observer, subject }) => {
88
+
89
+ const destroy$ = new Subject()
90
+
91
+ const seriesLabels$ = observer.multiGridEachDetail$.pipe(
92
+ takeUntil(destroy$),
93
+ map(multiGrid => {
94
+ const seriesLabelsObservableArr = multiGrid.map((grid, gridIndex) => {
95
+ return grid.SeriesDataMap$.pipe(
96
+ // grid內的seriesLabels
97
+ map(seriesDataMap => Array.from(seriesDataMap.keys()))
98
+ )
99
+ })
100
+ return seriesLabelsObservableArr
101
+ }),
102
+ switchMap(seriesLabelsObservableArr => combineLatest(seriesLabelsObservableArr)),
103
+ map(data => data.flat())
104
+ )
105
+
106
+ const seriesList$ = combineLatest({
107
+ fullParams: observer.fullParams$,
108
+ // multiGrid: observer.multiGridEachDetail$,
109
+ computedData: observer.computedData$,
110
+ }).pipe(
111
+ takeUntil(destroy$),
112
+ switchMap(async d => d),
113
+ map(data => {
114
+ // grid
115
+ return data.computedData
116
+ .map((gridData, gridIndex) => {
117
+ // 這個grid全部series要套用的圖例列點樣式
118
+ const gridListStyle = mergeOptionsWithDefault(data.fullParams.gridList[gridIndex] ?? {}, {
119
+ listRectWidth: data.fullParams.listRectWidth,
120
+ listRectHeight: data.fullParams.listRectHeight,
121
+ listRectRadius: data.fullParams.listRectRadius,
122
+ })
123
+ // series
124
+ return gridData.map(d => gridListStyle)
125
+ })
126
+ .flat()
127
+
128
+ })
129
+ )
130
+
131
+ const fullParams$: Observable<BaseLegendParams> = combineLatest({
132
+ fullParams: observer.fullParams$,
133
+ seriesList: seriesList$
134
+ }).pipe(
135
+ takeUntil(destroy$),
136
+ switchMap(async d => d),
137
+ map(d => {
138
+ return {
139
+ ...d.fullParams,
140
+ labelList: d.seriesList
141
+ }
142
+ })
143
+ )
144
+
145
+ const unsubscribeBaseLegend = createBaseLegend(pluginName, {
146
+ rootSelection,
147
+ legendLabels$: seriesLabels$,
148
+ fullParams$,
149
+ layout$: observer.layout$,
150
+ fullChartParams$: observer.fullChartParams$,
151
+ textSizePx$: observer.textSizePx$
152
+ })
153
+
154
+ return () => {
155
+ destroy$.next(undefined)
156
+ unsubscribeBaseLegend()
157
+ }
158
+ })
159
+
@@ -1,66 +1,66 @@
1
- import {
2
- Subject,
3
- } from 'rxjs'
4
- import type { DefinePluginConfig } from '../../../lib/core-types'
5
- import {
6
- defineMultiGridPlugin } from '../../../lib/core'
7
- import { DEFAULT_MULTI_GRID_TOOLTIP_PARAMS } from '../defaults'
8
- import { LAYER_INDEX_OF_TOOLTIP } from '../../const'
9
- import { createBaseTooltip } from '../../base/BaseTooltip'
10
-
11
- const pluginName = 'MultiGridTooltip'
12
-
13
- const pluginConfig: DefinePluginConfig<typeof pluginName, typeof DEFAULT_MULTI_GRID_TOOLTIP_PARAMS> = {
14
- name: pluginName,
15
- defaultParams: DEFAULT_MULTI_GRID_TOOLTIP_PARAMS,
16
- layerIndex: LAYER_INDEX_OF_TOOLTIP,
17
- validator: (params, { validateColumns }) => {
18
- const result = validateColumns(params, {
19
- backgroundColorType: {
20
- toBeOption: 'ColorType',
21
- },
22
- backgroundOpacity: {
23
- toBeTypes: ['number']
24
- },
25
- strokeColorType: {
26
- toBeOption: 'ColorType',
27
- },
28
- offset: {
29
- toBe: '[number, number]',
30
- test: (value: any) => {
31
- return Array.isArray(value)
32
- && value.length === 2
33
- && typeof value[0] === 'number'
34
- && typeof value[1] === 'number'
35
- }
36
- },
37
- padding: {
38
- toBeTypes: ['number']
39
- },
40
- textColorType: {
41
- toBeOption: 'ColorType',
42
- },
43
- renderFn: {
44
- toBeTypes: ['Function']
45
- },
46
- })
47
- return result
48
- }
49
- }
50
-
51
- export const MultiGridTooltip = defineMultiGridPlugin(pluginConfig)(({ selection, rootSelection, name, subject, observer }) => {
52
- const destroy$ = new Subject()
53
-
54
- const unsubscribeTooltip = createBaseTooltip(pluginName, {
55
- rootSelection,
56
- fullParams$: observer.fullParams$,
57
- fullChartParams$: observer.fullChartParams$,
58
- layout$: observer.layout$,
59
- event$: subject.event$,
60
- })
61
-
62
- return () => {
63
- destroy$.next(undefined)
64
- unsubscribeTooltip()
65
- }
66
- })
1
+ import {
2
+ Subject,
3
+ } from 'rxjs'
4
+ import type { DefinePluginConfig } from '../../../lib/core-types'
5
+ import {
6
+ defineMultiGridPlugin } from '../../../lib/core'
7
+ import { DEFAULT_MULTI_GRID_TOOLTIP_PARAMS } from '../defaults'
8
+ import { LAYER_INDEX_OF_TOOLTIP } from '../../const'
9
+ import { createBaseTooltip } from '../../base/BaseTooltip'
10
+
11
+ const pluginName = 'MultiGridTooltip'
12
+
13
+ const pluginConfig: DefinePluginConfig<typeof pluginName, typeof DEFAULT_MULTI_GRID_TOOLTIP_PARAMS> = {
14
+ name: pluginName,
15
+ defaultParams: DEFAULT_MULTI_GRID_TOOLTIP_PARAMS,
16
+ layerIndex: LAYER_INDEX_OF_TOOLTIP,
17
+ validator: (params, { validateColumns }) => {
18
+ const result = validateColumns(params, {
19
+ backgroundColorType: {
20
+ toBeOption: 'ColorType',
21
+ },
22
+ backgroundOpacity: {
23
+ toBeTypes: ['number']
24
+ },
25
+ strokeColorType: {
26
+ toBeOption: 'ColorType',
27
+ },
28
+ offset: {
29
+ toBe: '[number, number]',
30
+ test: (value: any) => {
31
+ return Array.isArray(value)
32
+ && value.length === 2
33
+ && typeof value[0] === 'number'
34
+ && typeof value[1] === 'number'
35
+ }
36
+ },
37
+ padding: {
38
+ toBeTypes: ['number']
39
+ },
40
+ textColorType: {
41
+ toBeOption: 'ColorType',
42
+ },
43
+ renderFn: {
44
+ toBeTypes: ['Function']
45
+ },
46
+ })
47
+ return result
48
+ }
49
+ }
50
+
51
+ export const MultiGridTooltip = defineMultiGridPlugin(pluginConfig)(({ selection, rootSelection, name, subject, observer }) => {
52
+ const destroy$ = new Subject()
53
+
54
+ const unsubscribeTooltip = createBaseTooltip(pluginName, {
55
+ rootSelection,
56
+ fullParams$: observer.fullParams$,
57
+ fullChartParams$: observer.fullChartParams$,
58
+ layout$: observer.layout$,
59
+ event$: subject.event$,
60
+ })
61
+
62
+ return () => {
63
+ destroy$.next(undefined)
64
+ unsubscribeTooltip()
65
+ }
66
+ })