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

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 (181) hide show
  1. package/dist/{src → orbcharts-plugins-basic/src}/base/BaseBars.d.ts +2 -2
  2. package/dist/{src → orbcharts-plugins-basic/src}/base/BaseBarsTriangle.d.ts +2 -2
  3. package/dist/{src → orbcharts-plugins-basic/src}/base/BaseDots.d.ts +2 -2
  4. package/dist/{src → orbcharts-plugins-basic/src}/base/BaseGroupAxis.d.ts +2 -2
  5. package/dist/{src → orbcharts-plugins-basic/src}/base/BaseLegend.d.ts +1 -1
  6. package/dist/{src → orbcharts-plugins-basic/src}/base/BaseLineAreas.d.ts +3 -3
  7. package/dist/{src → orbcharts-plugins-basic/src}/base/BaseLines.d.ts +3 -3
  8. package/dist/{src/base/BaseBarStack.d.ts → orbcharts-plugins-basic/src/base/BaseStackedBar.d.ts} +6 -6
  9. package/dist/{src → orbcharts-plugins-basic/src}/base/BaseValueAxis.d.ts +3 -2
  10. package/dist/{src → orbcharts-plugins-basic/src}/grid/defaults.d.ts +4 -4
  11. package/dist/{src → orbcharts-plugins-basic/src}/grid/gridObservables.d.ts +5 -5
  12. package/dist/{src → orbcharts-plugins-basic/src}/grid/index.d.ts +2 -2
  13. package/dist/orbcharts-plugins-basic/src/grid/plugins/StackedBar.d.ts +1 -0
  14. package/dist/orbcharts-plugins-basic/src/grid/plugins/StackedValueAxis.d.ts +1 -0
  15. package/dist/orbcharts-plugins-basic/src/index.d.ts +7 -0
  16. package/dist/{src → orbcharts-plugins-basic/src}/multiGrid/defaults.d.ts +4 -4
  17. package/dist/{src → orbcharts-plugins-basic/src}/multiGrid/index.d.ts +3 -3
  18. package/dist/orbcharts-plugins-basic/src/multiGrid/plugins/MultiStackedBar.d.ts +1 -0
  19. package/dist/orbcharts-plugins-basic/src/multiGrid/plugins/MultiStackedValueAxis.d.ts +1 -0
  20. package/dist/orbcharts-plugins-basic/src/multiGrid/plugins/OverlappingStackedValueAxes.d.ts +1 -0
  21. package/dist/orbcharts-plugins-basic/src/multiValue/defaults.d.ts +9 -0
  22. package/dist/orbcharts-plugins-basic/src/multiValue/index.d.ts +8 -0
  23. package/dist/orbcharts-plugins-basic/src/multiValue/multiValueObservables.d.ts +33 -0
  24. package/dist/orbcharts-plugins-basic/src/multiValue/plugins/MultiValueLegend.d.ts +1 -0
  25. package/dist/orbcharts-plugins-basic/src/multiValue/plugins/MultiValueTooltip.d.ts +1 -0
  26. package/dist/orbcharts-plugins-basic/src/multiValue/plugins/Scatter.d.ts +3 -0
  27. package/dist/orbcharts-plugins-basic/src/multiValue/plugins/ScatterBubbles.d.ts +3 -0
  28. package/dist/orbcharts-plugins-basic/src/multiValue/plugins/XYAux.d.ts +3 -0
  29. package/dist/orbcharts-plugins-basic/src/multiValue/plugins/XYAxes.d.ts +3 -0
  30. package/dist/orbcharts-plugins-basic/src/multiValue/plugins/XYZoom.d.ts +1 -0
  31. package/dist/orbcharts-plugins-basic/src/relationship/defaults.d.ts +6 -0
  32. package/dist/orbcharts-plugins-basic/src/relationship/index.d.ts +5 -0
  33. package/dist/orbcharts-plugins-basic/src/relationship/plugins/ForceDirected.d.ts +3 -0
  34. package/dist/orbcharts-plugins-basic/src/relationship/plugins/ForceDirectedBubbles.d.ts +3 -0
  35. package/dist/orbcharts-plugins-basic/src/relationship/plugins/RelationshipLegend.d.ts +1 -0
  36. package/dist/orbcharts-plugins-basic/src/relationship/plugins/RelationshipTooltip.d.ts +1 -0
  37. package/dist/orbcharts-plugins-basic/src/relationship/relationshipObservables.d.ts +1 -0
  38. package/dist/{src → orbcharts-plugins-basic/src}/series/seriesObservables.d.ts +3 -3
  39. package/dist/{src → orbcharts-plugins-basic/src}/utils/commonUtils.d.ts +1 -1
  40. package/dist/{src → orbcharts-plugins-basic/src}/utils/d3Utils.d.ts +2 -2
  41. package/dist/{src → orbcharts-plugins-basic/src}/utils/observables.d.ts +1 -1
  42. package/dist/{src → orbcharts-plugins-basic/src}/utils/orbchartsUtils.d.ts +3 -3
  43. package/dist/orbcharts-plugins-basic.es.js +13327 -10361
  44. package/dist/orbcharts-plugins-basic.umd.js +99 -49
  45. package/dist/src/index.d.ts +1 -5
  46. package/package.json +4 -4
  47. package/src/base/BaseBars.ts +5 -5
  48. package/src/base/BaseBarsTriangle.ts +6 -4
  49. package/src/base/BaseDots.ts +3 -54
  50. package/src/base/BaseGroupAxis.ts +50 -50
  51. package/src/base/BaseLegend.ts +25 -21
  52. package/src/base/BaseLineAreas.ts +4 -4
  53. package/src/base/BaseLines.ts +3 -3
  54. package/src/base/{BaseBarStack.ts → BaseStackedBar.ts} +22 -20
  55. package/src/base/BaseTooltip.ts +5 -2
  56. package/src/base/BaseValueAxis.ts +84 -81
  57. package/src/grid/defaults.ts +15 -13
  58. package/src/grid/gridObservables.ts +56 -47
  59. package/src/grid/index.ts +2 -2
  60. package/src/grid/plugins/GridLegend.ts +2 -2
  61. package/src/grid/plugins/GridZoom.ts +20 -20
  62. package/src/grid/plugins/GroupAux.ts +216 -211
  63. package/src/grid/plugins/{BarStack.ts → StackedBar.ts} +7 -7
  64. package/src/grid/plugins/{ValueStackAxis.ts → StackedValueAxis.ts} +6 -5
  65. package/src/grid/plugins/ValueAxis.ts +1 -0
  66. package/src/index.ts +2 -5
  67. package/src/multiGrid/defaults.ts +11 -11
  68. package/src/multiGrid/index.ts +3 -3
  69. package/src/multiGrid/plugins/MultiBars.ts +1 -1
  70. package/src/multiGrid/plugins/MultiBarsTriangle.ts +1 -1
  71. package/src/multiGrid/plugins/MultiGridLegend.ts +2 -2
  72. package/src/multiGrid/plugins/MultiGroupAxis.ts +1 -1
  73. package/src/multiGrid/plugins/{MultiBarStack.ts → MultiStackedBar.ts} +8 -8
  74. package/src/multiGrid/plugins/{MultiValueStackAxis.ts → MultiStackedValueAxis.ts} +4 -3
  75. package/src/multiGrid/plugins/MultiValueAxis.ts +2 -1
  76. package/src/multiGrid/plugins/{OverlappingValueStackAxes.ts → OverlappingStackedValueAxes.ts} +9 -8
  77. package/src/multiGrid/plugins/OverlappingValueAxes.ts +4 -3
  78. package/src/multiValue/defaults.ts +167 -0
  79. package/src/multiValue/index.ts +9 -0
  80. package/src/multiValue/multiValueObservables.ts +297 -0
  81. package/src/multiValue/plugins/MultiValueLegend.ts +107 -0
  82. package/src/multiValue/plugins/MultiValueTooltip.ts +66 -0
  83. package/src/multiValue/plugins/Scatter.ts +426 -0
  84. package/src/multiValue/plugins/ScatterBubbles.ts +554 -0
  85. package/src/multiValue/plugins/XYAux.ts +682 -0
  86. package/src/multiValue/plugins/XYAxes.ts +685 -0
  87. package/src/multiValue/plugins/XYZoom.ts +300 -0
  88. package/src/noneData/plugins/Container.ts +23 -23
  89. package/src/noneData/plugins/Tooltip.ts +365 -365
  90. package/src/relationship/defaults.ts +197 -0
  91. package/src/relationship/index.ts +5 -0
  92. package/src/relationship/plugins/ForceDirected.ts +1169 -0
  93. package/src/relationship/plugins/ForceDirectedBubbles.ts +1394 -0
  94. package/src/relationship/plugins/RelationshipLegend.ts +100 -0
  95. package/src/relationship/plugins/RelationshipTooltip.ts +66 -0
  96. package/src/relationship/relationshipObservables.ts +50 -0
  97. package/src/series/defaults.ts +13 -12
  98. package/src/series/plugins/Bubbles.ts +22 -22
  99. package/src/series/plugins/Pie.ts +2 -2
  100. package/src/series/plugins/PieEventTexts.ts +22 -21
  101. package/src/series/plugins/PieLabels.ts +2 -2
  102. package/src/series/plugins/Rose.ts +2 -2
  103. package/src/series/plugins/RoseLabels.ts +2 -2
  104. package/src/series/plugins/SeriesLegend.ts +4 -4
  105. package/src/series/seriesObservables.ts +3 -3
  106. package/src/tree/defaults.ts +3 -3
  107. package/src/tree/plugins/TreeLegend.ts +3 -10
  108. package/src/utils/commonUtils.ts +5 -5
  109. package/src/utils/d3Utils.ts +4 -3
  110. package/src/utils/observables.ts +2 -2
  111. package/src/utils/orbchartsUtils.ts +28 -12
  112. package/dist/src/grid/plugins/BarStack.d.ts +0 -1
  113. package/dist/src/grid/plugins/ValueStackAxis.d.ts +0 -1
  114. package/dist/src/multiGrid/plugins/MultiBarStack.d.ts +0 -1
  115. package/dist/src/multiGrid/plugins/MultiValueStackAxis.d.ts +0 -1
  116. package/dist/src/multiGrid/plugins/OverlappingValueStackAxes.d.ts +0 -1
  117. package/dist/src/multiValue/plugins/Scatter.d.ts +0 -0
  118. package/dist/src/multiValue/plugins/ScatterAxes.d.ts +0 -0
  119. package/dist/src/noneData/plugins/Container.d.ts +0 -1
  120. package/dist/src/noneData/plugins/Tooltip.d.ts +0 -3
  121. package/dist/src/relationship/index.d.ts +0 -0
  122. package/dist/src/relationship/plugins/Relationship.d.ts +0 -0
  123. package/src/base/BaseGroupArea.ts +0 -0
  124. package/src/multiValue/plugins/ScatterAxes.ts +0 -0
  125. package/src/relationship/plugins/Relationship.ts +0 -0
  126. /package/dist/{lib → orbcharts-plugins-basic/lib}/core-types.d.ts +0 -0
  127. /package/dist/{lib → orbcharts-plugins-basic/lib}/core.d.ts +0 -0
  128. /package/dist/{lib → orbcharts-plugins-basic/lib}/plugins-basic-types.d.ts +0 -0
  129. /package/dist/{src → orbcharts-plugins-basic/src}/base/BaseTooltip.d.ts +0 -0
  130. /package/dist/{src → orbcharts-plugins-basic/src}/base/types.d.ts +0 -0
  131. /package/dist/{src → orbcharts-plugins-basic/src}/const.d.ts +0 -0
  132. /package/dist/{src → orbcharts-plugins-basic/src}/grid/plugins/Bars.d.ts +0 -0
  133. /package/dist/{src → orbcharts-plugins-basic/src}/grid/plugins/BarsPN.d.ts +0 -0
  134. /package/dist/{src → orbcharts-plugins-basic/src}/grid/plugins/BarsTriangle.d.ts +0 -0
  135. /package/dist/{src → orbcharts-plugins-basic/src}/grid/plugins/Dots.d.ts +0 -0
  136. /package/dist/{src → orbcharts-plugins-basic/src}/grid/plugins/GridLegend.d.ts +0 -0
  137. /package/dist/{src → orbcharts-plugins-basic/src}/grid/plugins/GridTooltip.d.ts +0 -0
  138. /package/dist/{src → orbcharts-plugins-basic/src}/grid/plugins/GridZoom.d.ts +0 -0
  139. /package/dist/{src → orbcharts-plugins-basic/src}/grid/plugins/GroupAux.d.ts +0 -0
  140. /package/dist/{src → orbcharts-plugins-basic/src}/grid/plugins/GroupAxis.d.ts +0 -0
  141. /package/dist/{src → orbcharts-plugins-basic/src}/grid/plugins/LineAreas.d.ts +0 -0
  142. /package/dist/{src → orbcharts-plugins-basic/src}/grid/plugins/Lines.d.ts +0 -0
  143. /package/dist/{src → orbcharts-plugins-basic/src}/grid/plugins/ValueAxis.d.ts +0 -0
  144. /package/dist/{src → orbcharts-plugins-basic/src}/multiGrid/multiGridObservables.d.ts +0 -0
  145. /package/dist/{src → orbcharts-plugins-basic/src}/multiGrid/plugins/MultiBars.d.ts +0 -0
  146. /package/dist/{src → orbcharts-plugins-basic/src}/multiGrid/plugins/MultiBarsTriangle.d.ts +0 -0
  147. /package/dist/{src → orbcharts-plugins-basic/src}/multiGrid/plugins/MultiDots.d.ts +0 -0
  148. /package/dist/{src → orbcharts-plugins-basic/src}/multiGrid/plugins/MultiGridLegend.d.ts +0 -0
  149. /package/dist/{src → orbcharts-plugins-basic/src}/multiGrid/plugins/MultiGridTooltip.d.ts +0 -0
  150. /package/dist/{src → orbcharts-plugins-basic/src}/multiGrid/plugins/MultiGroupAxis.d.ts +0 -0
  151. /package/dist/{src → orbcharts-plugins-basic/src}/multiGrid/plugins/MultiLineAreas.d.ts +0 -0
  152. /package/dist/{src → orbcharts-plugins-basic/src}/multiGrid/plugins/MultiLines.d.ts +0 -0
  153. /package/dist/{src → orbcharts-plugins-basic/src}/multiGrid/plugins/MultiValueAxis.d.ts +0 -0
  154. /package/dist/{src → orbcharts-plugins-basic/src}/multiGrid/plugins/OverlappingValueAxes.d.ts +0 -0
  155. /package/dist/{src/grid → orbcharts-plugins-basic/src/multiValue}/plugins/Ranking.d.ts +0 -0
  156. /package/dist/{src/grid → orbcharts-plugins-basic/src/multiValue}/plugins/RankingAxis.d.ts +0 -0
  157. /package/dist/{src → orbcharts-plugins-basic/src}/noneData/defaults.d.ts +0 -0
  158. /package/dist/{src → orbcharts-plugins-basic/src}/noneData/index.d.ts +0 -0
  159. /package/dist/{src/base/BaseGroupArea.d.ts → orbcharts-plugins-basic/src/noneData/plugins/Container.d.ts} +0 -0
  160. /package/dist/{src/multiValue/index.d.ts → orbcharts-plugins-basic/src/noneData/plugins/Tooltip.d.ts} +0 -0
  161. /package/dist/{src → orbcharts-plugins-basic/src}/series/defaults.d.ts +0 -0
  162. /package/dist/{src → orbcharts-plugins-basic/src}/series/index.d.ts +0 -0
  163. /package/dist/{src → orbcharts-plugins-basic/src}/series/plugins/Bubbles.d.ts +0 -0
  164. /package/dist/{src → orbcharts-plugins-basic/src}/series/plugins/Pie.d.ts +0 -0
  165. /package/dist/{src → orbcharts-plugins-basic/src}/series/plugins/PieEventTexts.d.ts +0 -0
  166. /package/dist/{src → orbcharts-plugins-basic/src}/series/plugins/PieLabels.d.ts +0 -0
  167. /package/dist/{src → orbcharts-plugins-basic/src}/series/plugins/Rose.d.ts +0 -0
  168. /package/dist/{src → orbcharts-plugins-basic/src}/series/plugins/RoseLabels.d.ts +0 -0
  169. /package/dist/{src → orbcharts-plugins-basic/src}/series/plugins/SeriesLegend.d.ts +0 -0
  170. /package/dist/{src → orbcharts-plugins-basic/src}/series/plugins/SeriesTooltip.d.ts +0 -0
  171. /package/dist/{src → orbcharts-plugins-basic/src}/series/plugins/Waffle.d.ts +0 -0
  172. /package/dist/{src → orbcharts-plugins-basic/src}/series/seriesUtils.d.ts +0 -0
  173. /package/dist/{src → orbcharts-plugins-basic/src}/tree/defaults.d.ts +0 -0
  174. /package/dist/{src → orbcharts-plugins-basic/src}/tree/index.d.ts +0 -0
  175. /package/dist/{src → orbcharts-plugins-basic/src}/tree/plugins/TreeLegend.d.ts +0 -0
  176. /package/dist/{src → orbcharts-plugins-basic/src}/tree/plugins/TreeMap.d.ts +0 -0
  177. /package/dist/{src → orbcharts-plugins-basic/src}/tree/plugins/TreeTooltip.d.ts +0 -0
  178. /package/dist/{src → orbcharts-plugins-basic/src}/utils/d3Graphics.d.ts +0 -0
  179. /package/dist/{vite.config.d.ts → orbcharts-plugins-basic/vite.config.d.ts} +0 -0
  180. /package/src/{grid → multiValue}/plugins/Ranking.ts +0 -0
  181. /package/src/{grid → multiValue}/plugins/RankingAxis.ts +0 -0
@@ -0,0 +1,300 @@
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 { DataFormatterMultiValue } from '../../../lib/core-types'
14
+ import {
15
+ defineMultiValuePlugin, createValueToAxisScale } from '../../../lib/core'
16
+ import { DEFAULT_X_Y_ZOOM_PARAMS } from '../defaults'
17
+ import { getClassName, getUniID } from '../../utils/orbchartsUtils'
18
+ import { LAYER_INDEX_OF_ROOT } from '../../const'
19
+
20
+ const pluginName = 'XYZoom'
21
+ const rectClassName = getClassName(pluginName, 'rect')
22
+
23
+ const pluginConfig: DefinePluginConfig<typeof pluginName, typeof DEFAULT_X_Y_ZOOM_PARAMS> = {
24
+ name: pluginName,
25
+ defaultParams: DEFAULT_X_Y_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 XYZoom = defineMultiValuePlugin(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 groupMax$ = observer.computedData$.pipe(
64
+ // map(d => d[0] ? d[0].length - 1 : 0),
65
+ // distinctUntilChanged()
66
+ // )
67
+
68
+ // const fullDataFormatterEvent$: Subject<DataFormatterMultiValue> = 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 initXAxis$ = observer.fullDataFormatter$.pipe(
79
+ map(d => d.xAxis),
80
+ // 只用第一次資料來計算scale才不會造成每次變動都受到影響
81
+ first()
82
+ )
83
+
84
+ const initYAxis$ = observer.fullDataFormatter$.pipe(
85
+ map(d => d.yAxis),
86
+ // 只用第一次資料來計算scale才不會造成每次變動都受到影響
87
+ first()
88
+ )
89
+
90
+
91
+ // const groupScale$ = combineLatest({
92
+ // initXAxis: initXAxis$,
93
+ // fullDataFormatter: observer.fullDataFormatter$,
94
+ // groupMax: groupMax$,
95
+ // layout: observer.layout$,
96
+ // // axisSize: observer.gridAxesSize$
97
+ // }).pipe(
98
+ // takeUntil(destroy$),
99
+ // switchMap(async (d) => d),
100
+ // map(data => {
101
+ // // const groupMin = 0
102
+ // const groupScaleDomainMin = data.initXAxis.scaleDomain[0] - data.initXAxis.scalePadding
103
+ // const groupScaleDomainMax = data.initXAxis.scaleDomain[1] === 'max'
104
+ // ? data.groupMax + data.initXAxis.scalePadding
105
+ // : data.initXAxis.scaleDomain[1] as number + data.initXAxis.scalePadding
106
+
107
+ // const groupScale: d3.ScaleLinear<number, number> = createValueToAxisScale({
108
+ // maxValue: data.groupMax,
109
+ // minValue: 0,
110
+ // axisWidth: data.layout.width,
111
+ // scaleDomain: [groupScaleDomainMin, groupScaleDomainMax],
112
+ // scaleRange: [0, 1]
113
+ // })
114
+
115
+ // return groupScale
116
+ // })
117
+ // )
118
+ const initXScale$: Observable<d3.ScaleLinear<number, number>> = new Observable(subscriber => {
119
+ combineLatest({
120
+ initXAxis: initXAxis$,
121
+ layout: observer.layout$,
122
+ minMaxXY: observer.minMaxXY$
123
+ }).pipe(
124
+ takeUntil(destroy$),
125
+ switchMap(async (d) => d),
126
+ ).subscribe(data => {
127
+
128
+ const xScale: d3.ScaleLinear<number, number> = createValueToAxisScale({
129
+ maxValue: data.minMaxXY.maxX,
130
+ minValue: data.minMaxXY.minX,
131
+ axisWidth: data.layout.width,
132
+ scaleDomain: data.initXAxis.scaleDomain,
133
+ scaleRange: data.initXAxis.scaleRange,
134
+ })
135
+
136
+ subscriber.next(xScale)
137
+ })
138
+ })
139
+
140
+ const initYScale$: Observable<d3.ScaleLinear<number, number>> = new Observable(subscriber => {
141
+ combineLatest({
142
+ initYAxis: initYAxis$,
143
+ layout: observer.layout$,
144
+ minMaxXY: observer.minMaxXY$
145
+ }).pipe(
146
+ takeUntil(destroy$),
147
+ switchMap(async (d) => d),
148
+ ).subscribe(data => {
149
+
150
+ const yScale: d3.ScaleLinear<number, number> = createValueToAxisScale({
151
+ maxValue: data.minMaxXY.maxY,
152
+ minValue: data.minMaxXY.minY,
153
+ axisWidth: data.layout.height,
154
+ scaleDomain: data.initYAxis.scaleDomain,
155
+ scaleRange: data.initYAxis.scaleRange,
156
+ reverse: true
157
+ })
158
+
159
+ subscriber.next(yScale)
160
+ })
161
+ })
162
+
163
+ const minMaxScaleDomain$ = combineLatest({
164
+ initXAxis: initXAxis$,
165
+ initYAxis: initYAxis$,
166
+ minMaxXY: observer.minMaxXY$
167
+ }).pipe(
168
+ takeUntil(destroy$),
169
+ switchMap(async (d) => d),
170
+ map(data => {
171
+ let minX = data.minMaxXY.minX
172
+ let maxX = data.minMaxXY.maxX
173
+ let minY = data.minMaxXY.minY
174
+ let maxY = data.minMaxXY.maxY
175
+
176
+ // 原始設定為auto時要額外判斷
177
+ if (data.initXAxis.scaleDomain[0] === 'auto' && minX > 0) {
178
+ minX = 0
179
+ }
180
+ if (data.initXAxis.scaleDomain[1] === 'auto' && maxX < 0) {
181
+ maxX = 0
182
+ }
183
+ if (data.initYAxis.scaleDomain[0] === 'auto' && minY > 0) {
184
+ minY = 0
185
+ }
186
+ if (data.initYAxis.scaleDomain[1] === 'auto' && maxY < 0) {
187
+ maxY = 0
188
+ }
189
+
190
+ return {
191
+ minX,
192
+ maxX,
193
+ minY,
194
+ maxY
195
+ }
196
+ }),
197
+ )
198
+
199
+ combineLatest({
200
+ initXScale: initXScale$,
201
+ // initXAxis: initXAxis$,
202
+ // fullDataFormatter: fullDataFormatter$.pipe(first()), // 只用第一次資料來計算scale才不會造成每次變動都受到影響
203
+ fullDataFormatter: observer.fullDataFormatter$,
204
+ // groupMax: groupMax$,
205
+ // minMaxXY: observer.minMaxXY$,
206
+ minMaxScaleDomain: minMaxScaleDomain$,
207
+ // layout: observer.layout$,
208
+ // axisSize: observer.gridAxesSize$
209
+ }).pipe(
210
+ takeUntil(destroy$),
211
+ switchMap(async (d) => d),
212
+ ).subscribe(data => {
213
+ // const groupMin = 0
214
+
215
+ const shadowScale = data.initXScale.copy()
216
+
217
+ const zoom = d3.zoom()
218
+ // .scaleExtent([1, data.groupMaxIndex])
219
+ // .translateExtent([[0, 0], [data.layout.rootWidth, data.layout.rootWidth]])
220
+ .on("zoom", function zoomed(event) {
221
+ // debugger
222
+ // console.log('event', event)
223
+ const t = event.transform;
224
+
225
+ // if (event.sourceEvent.type === 'mousemove') {
226
+ // // 當進行平移時,反向計算 x 軸
227
+ // const dx = event.transform.x - currentTransform.x; // 本次平移增量
228
+ // const reversedX = currentTransform.x - dx; // 反向累積平移
229
+ // // 更新變換狀態
230
+ // currentTransform = d3.zoomIdentity
231
+ // .translate(reversedX, event.transform.y)
232
+ // .scale(event.transform.k);
233
+ // } else {
234
+ // // 縮放操作:只更新縮放比例
235
+ // currentTransform = d3.zoomIdentity
236
+ // .translate(currentTransform.x, currentTransform.y)
237
+ // .scale(event.transform.k);
238
+ // }
239
+ // console.log('currentTransform', currentTransform)
240
+
241
+ // console.log('t.x', t.x)
242
+ const mapGroupindex = (d: number) => {
243
+ const n = Math.round(d)
244
+ return Math.min(data.minMaxScaleDomain.maxX, Math.max(data.minMaxScaleDomain.minX, n));
245
+ }
246
+
247
+ const zoomedDomain = t.rescaleX(shadowScale)
248
+ .domain()
249
+ .map(mapGroupindex)
250
+
251
+
252
+ // domain超過極限值
253
+ if (zoomedDomain[0] <= data.minMaxScaleDomain.minX && zoomedDomain[1] >= data.minMaxScaleDomain.maxX) {
254
+ // 繼續縮小
255
+ if (t.k < lastTransform.k) {
256
+ // 維持前一次的transform
257
+ t.k = lastTransform.k
258
+ t.x = lastTransform.x
259
+ t.y = lastTransform.y
260
+ }
261
+ // domain間距小於1
262
+ } else if ((zoomedDomain[1] - zoomedDomain[0]) <= 1) {
263
+ // 繼續放大
264
+ if (t.k > lastTransform.k) {
265
+ // 維持前一次的transform
266
+ t.k = lastTransform.k
267
+ t.x = lastTransform.x
268
+ t.y = lastTransform.y
269
+ }
270
+ }
271
+
272
+ // 紀錄transform
273
+ lastTransform.k = t.k
274
+ lastTransform.x = t.x
275
+ lastTransform.y = t.y
276
+
277
+ // console.log(zoomedDomain)
278
+ const newDataFormatter: DataFormatterMultiValue = {
279
+ ...data.fullDataFormatter,
280
+ xAxis: {
281
+ ...data.fullDataFormatter.xAxis,
282
+ scaleDomain: zoomedDomain
283
+ }
284
+ }
285
+ subject.dataFormatter$.next(newDataFormatter)
286
+ })
287
+
288
+ // 傳入外層selection
289
+ // subject.selection.call(zoom as any)
290
+ rootSelection.call(zoom)
291
+
292
+ })
293
+
294
+ return () => {
295
+ destroy$.next(undefined)
296
+ // rootRectSelection.remove()
297
+
298
+ rootSelection.call(d3.zoom().on('zoom', null))
299
+ }
300
+ })
@@ -1,28 +1,28 @@
1
- import * as d3 from 'd3'
2
- import type { DefinePluginConfig } from '../../../lib/core-types'
3
- import {
4
- defineNoneDataPlugin } from '../../../lib/core'
5
- import { CONTAINER_PLUGIN_PARAMS } from '../defaults'
6
- import { LAYER_INDEX_OF_BG } from '../../const'
1
+ // import * as d3 from 'd3'
2
+ // import type { DefinePluginConfig } from '../../../lib/core-types'
3
+ // import {
4
+ // defineNoneDataPlugin } from '../../../lib/core'
5
+ // import { CONTAINER_PLUGIN_PARAMS } from '../defaults'
6
+ // import { LAYER_INDEX_OF_BG } from '../../const'
7
7
 
8
- const pluginName = 'Container'
8
+ // const pluginName = 'Container'
9
9
 
10
- const pluginConfig: DefinePluginConfig<typeof pluginName, typeof CONTAINER_PLUGIN_PARAMS> = {
11
- name: pluginName,
12
- defaultParams: CONTAINER_PLUGIN_PARAMS,
13
- layerIndex: LAYER_INDEX_OF_BG,
14
- validator: (params, { validateColumns }) => {
15
- return {
16
- status: 'success',
17
- columnName: '',
18
- expectToBe: '',
19
- }
20
- }
21
- }
10
+ // const pluginConfig: DefinePluginConfig<typeof pluginName, typeof CONTAINER_PLUGIN_PARAMS> = {
11
+ // name: pluginName,
12
+ // defaultParams: CONTAINER_PLUGIN_PARAMS,
13
+ // layerIndex: LAYER_INDEX_OF_BG,
14
+ // validator: (params, { validateColumns }) => {
15
+ // return {
16
+ // status: 'success',
17
+ // columnName: '',
18
+ // expectToBe: '',
19
+ // }
20
+ // }
21
+ // }
22
22
 
23
- export const Container = defineNoneDataPlugin(pluginConfig)(({ selection }) => {
23
+ // export const Container = defineNoneDataPlugin(pluginConfig)(({ selection }) => {
24
24
 
25
- return function unsubscribe () {
25
+ // return function unsubscribe () {
26
26
 
27
- }
28
- })
27
+ // }
28
+ // })