@orbcharts/plugins-basic 3.0.0-beta.7 → 3.0.0-beta.8

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 (126) hide show
  1. package/LICENSE +200 -200
  2. package/dist/orbcharts-plugins-basic/src/base/{BaseBarStack.d.ts → BaseStackedBar.d.ts} +4 -4
  3. package/dist/orbcharts-plugins-basic/src/grid/defaults.d.ts +3 -3
  4. package/dist/orbcharts-plugins-basic/src/grid/index.d.ts +2 -2
  5. package/dist/orbcharts-plugins-basic/src/grid/plugins/StackedBar.d.ts +1 -0
  6. package/dist/orbcharts-plugins-basic/src/grid/plugins/StackedValueAxis.d.ts +1 -0
  7. package/dist/orbcharts-plugins-basic/src/index.d.ts +1 -0
  8. package/dist/orbcharts-plugins-basic/src/multiGrid/defaults.d.ts +4 -4
  9. package/dist/orbcharts-plugins-basic/src/multiGrid/index.d.ts +3 -3
  10. package/dist/orbcharts-plugins-basic/src/multiGrid/plugins/MultiStackedBar.d.ts +1 -0
  11. package/dist/orbcharts-plugins-basic/src/multiGrid/plugins/MultiStackedValueAxis.d.ts +1 -0
  12. package/dist/orbcharts-plugins-basic/src/multiGrid/plugins/OverlappingStackedValueAxes.d.ts +1 -0
  13. package/dist/orbcharts-plugins-basic/src/noneData/plugins/Container.d.ts +0 -1
  14. package/dist/orbcharts-plugins-basic/src/noneData/plugins/Tooltip.d.ts +0 -3
  15. package/dist/orbcharts-plugins-basic/src/relationship/defaults.d.ts +5 -0
  16. package/dist/orbcharts-plugins-basic/src/relationship/index.d.ts +4 -0
  17. package/dist/orbcharts-plugins-basic/src/relationship/plugins/ForceDirected.d.ts +3 -0
  18. package/dist/orbcharts-plugins-basic/src/relationship/plugins/RelationshipLegend.d.ts +1 -0
  19. package/dist/orbcharts-plugins-basic/src/relationship/plugins/RelationshipTooltip.d.ts +1 -0
  20. package/dist/orbcharts-plugins-basic/src/relationship/relationshipObservables.d.ts +1 -0
  21. package/dist/orbcharts-plugins-basic/src/utils/commonUtils.d.ts +1 -1
  22. package/dist/orbcharts-plugins-basic/src/utils/orbchartsUtils.d.ts +1 -1
  23. package/dist/orbcharts-plugins-basic.es.js +8122 -7467
  24. package/dist/orbcharts-plugins-basic.umd.js +45 -32
  25. package/lib/core-types.ts +7 -7
  26. package/lib/core.ts +6 -6
  27. package/lib/plugins-basic-types.ts +6 -6
  28. package/package.json +44 -44
  29. package/src/base/BaseBars.ts +765 -765
  30. package/src/base/BaseBarsTriangle.ts +676 -676
  31. package/src/base/BaseDots.ts +464 -464
  32. package/src/base/BaseGroupAxis.ts +679 -679
  33. package/src/base/BaseLegend.ts +684 -684
  34. package/src/base/BaseLineAreas.ts +629 -629
  35. package/src/base/BaseLines.ts +706 -706
  36. package/src/base/{BaseBarStack.ts → BaseStackedBar.ts} +782 -782
  37. package/src/base/BaseTooltip.ts +385 -385
  38. package/src/base/BaseValueAxis.ts +583 -583
  39. package/src/base/types.ts +2 -2
  40. package/src/const.ts +30 -30
  41. package/src/grid/defaults.ts +246 -246
  42. package/src/grid/gridObservables.ts +554 -554
  43. package/src/grid/index.ts +16 -16
  44. package/src/grid/plugins/Bars.ts +69 -69
  45. package/src/grid/plugins/BarsPN.ts +66 -66
  46. package/src/grid/plugins/BarsTriangle.ts +73 -73
  47. package/src/grid/plugins/Dots.ts +68 -68
  48. package/src/grid/plugins/GridLegend.ts +107 -107
  49. package/src/grid/plugins/GridTooltip.ts +66 -66
  50. package/src/grid/plugins/GridZoom.ts +218 -218
  51. package/src/grid/plugins/GroupAux.ts +1103 -1103
  52. package/src/grid/plugins/GroupAxis.ts +97 -97
  53. package/src/grid/plugins/LineAreas.ts +65 -65
  54. package/src/grid/plugins/Lines.ts +59 -59
  55. package/src/grid/plugins/{BarStack.ts → StackedBar.ts} +64 -64
  56. package/src/grid/plugins/{ValueStackAxis.ts → StackedValueAxis.ts} +96 -96
  57. package/src/grid/plugins/ValueAxis.ts +94 -94
  58. package/src/index.ts +6 -10
  59. package/src/multiGrid/defaults.ts +224 -224
  60. package/src/multiGrid/index.ts +15 -15
  61. package/src/multiGrid/multiGridObservables.ts +49 -49
  62. package/src/multiGrid/plugins/MultiBars.ts +108 -108
  63. package/src/multiGrid/plugins/MultiBarsTriangle.ts +114 -114
  64. package/src/multiGrid/plugins/MultiDots.ts +102 -102
  65. package/src/multiGrid/plugins/MultiGridLegend.ts +159 -159
  66. package/src/multiGrid/plugins/MultiGridTooltip.ts +66 -66
  67. package/src/multiGrid/plugins/MultiGroupAxis.ts +137 -137
  68. package/src/multiGrid/plugins/MultiLineAreas.ts +107 -107
  69. package/src/multiGrid/plugins/MultiLines.ts +101 -101
  70. package/src/multiGrid/plugins/{MultiBarStack.ts → MultiStackedBar.ts} +106 -106
  71. package/src/multiGrid/plugins/{MultiValueStackAxis.ts → MultiStackedValueAxis.ts} +134 -134
  72. package/src/multiGrid/plugins/MultiValueAxis.ts +134 -134
  73. package/src/multiGrid/plugins/{OverlappingValueStackAxes.ts → OverlappingStackedValueAxes.ts} +299 -299
  74. package/src/multiGrid/plugins/OverlappingValueAxes.ts +300 -300
  75. package/src/multiValue/defaults.ts +166 -166
  76. package/src/multiValue/index.ts +8 -8
  77. package/src/multiValue/multiValueObservables.ts +297 -297
  78. package/src/multiValue/plugins/MultiValueLegend.ts +107 -107
  79. package/src/multiValue/plugins/MultiValueTooltip.ts +66 -66
  80. package/src/multiValue/plugins/Scatter.ts +426 -426
  81. package/src/multiValue/plugins/ScatterBubbles.ts +554 -554
  82. package/src/multiValue/plugins/XYAux.ts +681 -681
  83. package/src/multiValue/plugins/XYAxes.ts +684 -684
  84. package/src/multiValue/plugins/XYZoom.ts +299 -299
  85. package/src/noneData/defaults.ts +102 -102
  86. package/src/noneData/index.ts +3 -3
  87. package/src/noneData/plugins/Container.ts +28 -28
  88. package/src/noneData/plugins/Tooltip.ts +374 -374
  89. package/src/relationship/defaults.ts +113 -0
  90. package/src/relationship/index.ts +4 -0
  91. package/src/relationship/plugins/ForceDirected.ts +1148 -0
  92. package/src/relationship/plugins/RelationshipLegend.ts +100 -0
  93. package/src/relationship/plugins/RelationshipTooltip.ts +66 -0
  94. package/src/relationship/relationshipObservables.ts +50 -0
  95. package/src/series/defaults.ts +206 -206
  96. package/src/series/index.ts +9 -9
  97. package/src/series/plugins/Bubbles.ts +604 -603
  98. package/src/series/plugins/Pie.ts +623 -623
  99. package/src/series/plugins/PieEventTexts.ts +284 -283
  100. package/src/series/plugins/PieLabels.ts +640 -640
  101. package/src/series/plugins/Rose.ts +516 -516
  102. package/src/series/plugins/RoseLabels.ts +600 -600
  103. package/src/series/plugins/SeriesLegend.ts +107 -107
  104. package/src/series/plugins/SeriesTooltip.ts +66 -66
  105. package/src/series/seriesObservables.ts +145 -145
  106. package/src/series/seriesUtils.ts +51 -51
  107. package/src/tree/defaults.ts +78 -78
  108. package/src/tree/index.ts +4 -4
  109. package/src/tree/plugins/TreeLegend.ts +100 -100
  110. package/src/tree/plugins/TreeMap.ts +333 -333
  111. package/src/tree/plugins/TreeTooltip.ts +66 -66
  112. package/src/utils/commonUtils.ts +21 -21
  113. package/src/utils/d3Graphics.ts +174 -174
  114. package/src/utils/d3Utils.ts +74 -74
  115. package/src/utils/observables.ts +14 -14
  116. package/src/utils/orbchartsUtils.ts +115 -115
  117. package/tsconfig.base.json +13 -13
  118. package/tsconfig.json +2 -2
  119. package/vite.config.js +22 -22
  120. package/dist/orbcharts-plugins-basic/src/grid/plugins/BarStack.d.ts +0 -1
  121. package/dist/orbcharts-plugins-basic/src/grid/plugins/ValueStackAxis.d.ts +0 -1
  122. package/dist/orbcharts-plugins-basic/src/multiGrid/plugins/MultiBarStack.d.ts +0 -1
  123. package/dist/orbcharts-plugins-basic/src/multiGrid/plugins/MultiValueStackAxis.d.ts +0 -1
  124. package/dist/orbcharts-plugins-basic/src/multiGrid/plugins/OverlappingValueStackAxes.d.ts +0 -1
  125. /package/dist/orbcharts-plugins-basic/src/relationship/plugins/{Relationship.d.ts → ForceDirectedBubbles.d.ts} +0 -0
  126. /package/src/relationship/plugins/{Relationship.ts → ForceDirectedBubbles.ts} +0 -0
@@ -1,101 +1,101 @@
1
- import * as d3 from 'd3'
2
- import {
3
- map,
4
- takeUntil,
5
- Subject } from 'rxjs'
6
- import type { DefinePluginConfig } from '../../../lib/core-types'
7
- import {
8
- defineMultiGridPlugin } from '../../../lib/core'
9
- import { DEFAULT_MULTI_LINES_PARAMS } from '../defaults'
10
- import { createBaseLines } from '../../base/BaseLines'
11
- import { multiGridPluginDetailObservables } from '../multiGridObservables'
12
- import { getClassName, getUniID } from '../../utils/orbchartsUtils'
13
- import { LAYER_INDEX_OF_GRAPHIC } from '../../const'
14
-
15
- const pluginName = 'MultiLines'
16
-
17
- const gridClassName = getClassName(pluginName, 'grid')
18
-
19
- const pluginConfig: DefinePluginConfig<typeof pluginName, typeof DEFAULT_MULTI_LINES_PARAMS> = {
20
- name: pluginName,
21
- defaultParams: DEFAULT_MULTI_LINES_PARAMS,
22
- layerIndex: LAYER_INDEX_OF_GRAPHIC,
23
- validator: (params, { validateColumns }) => {
24
- const result = validateColumns(params, {
25
- gridIndexes: {
26
- toBe: 'number[] | "all"',
27
- test: (value: any) => {
28
- return value === 'all' || (Array.isArray(value) && value.every((v: any) => typeof v === 'number'))
29
- }
30
- },
31
- lineCurve: {
32
- toBeTypes: ['string']
33
- },
34
- lineWidth: {
35
- toBeTypes: ['number']
36
- },
37
- })
38
- return result
39
- }
40
- }
41
-
42
- export const MultiLines = defineMultiGridPlugin(pluginConfig)(({ selection, rootSelection, name, subject, observer }) => {
43
- const destroy$ = new Subject()
44
-
45
- const unsubscribeFnArr: (() => void)[] = []
46
-
47
- // 攤平所有grid的containerPosition
48
- const allContainerPosition$ = observer.multiGridContainerPosition$.pipe(
49
- takeUntil(destroy$),
50
- map(data => {
51
- return data.flat()
52
- })
53
- )
54
-
55
- const multiGridPluginDetail$ = multiGridPluginDetailObservables(observer)
56
-
57
- multiGridPluginDetail$
58
- .pipe(
59
- takeUntil(destroy$)
60
- )
61
- .subscribe(data => {
62
- // 每次重新計算時,清除之前的訂閱
63
- unsubscribeFnArr.forEach(fn => fn())
64
-
65
- selection.selectAll(`g.${gridClassName}`)
66
- .data(data)
67
- .join('g')
68
- .attr('class', gridClassName)
69
- .each((d, i, g) => {
70
-
71
- const gridSelection = d3.select(g[i])
72
-
73
- unsubscribeFnArr[i] = createBaseLines(pluginName, {
74
- selection: gridSelection,
75
- computedData$: d.computedData$,
76
- computedLayoutData$: d.computedLayoutData$,
77
- visibleComputedData$: d.visibleComputedData$,
78
- visibleComputedLayoutData$: d.visibleComputedLayoutData$,
79
- seriesLabels$: d.seriesLabels$,
80
- SeriesDataMap$: d.SeriesDataMap$,
81
- GroupDataMap$: d.GroupDataMap$,
82
- fullDataFormatter$: d.dataFormatter$,
83
- fullParams$: observer.fullParams$,
84
- fullChartParams$: observer.fullChartParams$,
85
- gridAxesTransform$: d.gridAxesTransform$,
86
- gridGraphicTransform$: d.gridGraphicTransform$,
87
- gridAxesSize$: d.gridAxesSize$,
88
- gridHighlight$: d.gridHighlight$,
89
- gridContainerPosition$: d.gridContainerPosition$,
90
- allContainerPosition$,
91
- layout$: observer.layout$,
92
- event$: subject.event$ as Subject<any>,
93
- })
94
- })
95
- })
96
-
97
- return () => {
98
- destroy$.next(undefined)
99
- unsubscribeFnArr.forEach(fn => fn())
100
- }
101
- })
1
+ import * as d3 from 'd3'
2
+ import {
3
+ map,
4
+ takeUntil,
5
+ Subject } from 'rxjs'
6
+ import type { DefinePluginConfig } from '../../../lib/core-types'
7
+ import {
8
+ defineMultiGridPlugin } from '../../../lib/core'
9
+ import { DEFAULT_MULTI_LINES_PARAMS } from '../defaults'
10
+ import { createBaseLines } from '../../base/BaseLines'
11
+ import { multiGridPluginDetailObservables } from '../multiGridObservables'
12
+ import { getClassName, getUniID } from '../../utils/orbchartsUtils'
13
+ import { LAYER_INDEX_OF_GRAPHIC } from '../../const'
14
+
15
+ const pluginName = 'MultiLines'
16
+
17
+ const gridClassName = getClassName(pluginName, 'grid')
18
+
19
+ const pluginConfig: DefinePluginConfig<typeof pluginName, typeof DEFAULT_MULTI_LINES_PARAMS> = {
20
+ name: pluginName,
21
+ defaultParams: DEFAULT_MULTI_LINES_PARAMS,
22
+ layerIndex: LAYER_INDEX_OF_GRAPHIC,
23
+ validator: (params, { validateColumns }) => {
24
+ const result = validateColumns(params, {
25
+ gridIndexes: {
26
+ toBe: 'number[] | "all"',
27
+ test: (value: any) => {
28
+ return value === 'all' || (Array.isArray(value) && value.every((v: any) => typeof v === 'number'))
29
+ }
30
+ },
31
+ lineCurve: {
32
+ toBeTypes: ['string']
33
+ },
34
+ lineWidth: {
35
+ toBeTypes: ['number']
36
+ },
37
+ })
38
+ return result
39
+ }
40
+ }
41
+
42
+ export const MultiLines = defineMultiGridPlugin(pluginConfig)(({ selection, rootSelection, name, subject, observer }) => {
43
+ const destroy$ = new Subject()
44
+
45
+ const unsubscribeFnArr: (() => void)[] = []
46
+
47
+ // 攤平所有grid的containerPosition
48
+ const allContainerPosition$ = observer.multiGridContainerPosition$.pipe(
49
+ takeUntil(destroy$),
50
+ map(data => {
51
+ return data.flat()
52
+ })
53
+ )
54
+
55
+ const multiGridPluginDetail$ = multiGridPluginDetailObservables(observer)
56
+
57
+ multiGridPluginDetail$
58
+ .pipe(
59
+ takeUntil(destroy$)
60
+ )
61
+ .subscribe(data => {
62
+ // 每次重新計算時,清除之前的訂閱
63
+ unsubscribeFnArr.forEach(fn => fn())
64
+
65
+ selection.selectAll(`g.${gridClassName}`)
66
+ .data(data)
67
+ .join('g')
68
+ .attr('class', gridClassName)
69
+ .each((d, i, g) => {
70
+
71
+ const gridSelection = d3.select(g[i])
72
+
73
+ unsubscribeFnArr[i] = createBaseLines(pluginName, {
74
+ selection: gridSelection,
75
+ computedData$: d.computedData$,
76
+ computedLayoutData$: d.computedLayoutData$,
77
+ visibleComputedData$: d.visibleComputedData$,
78
+ visibleComputedLayoutData$: d.visibleComputedLayoutData$,
79
+ seriesLabels$: d.seriesLabels$,
80
+ SeriesDataMap$: d.SeriesDataMap$,
81
+ GroupDataMap$: d.GroupDataMap$,
82
+ fullDataFormatter$: d.dataFormatter$,
83
+ fullParams$: observer.fullParams$,
84
+ fullChartParams$: observer.fullChartParams$,
85
+ gridAxesTransform$: d.gridAxesTransform$,
86
+ gridGraphicTransform$: d.gridGraphicTransform$,
87
+ gridAxesSize$: d.gridAxesSize$,
88
+ gridHighlight$: d.gridHighlight$,
89
+ gridContainerPosition$: d.gridContainerPosition$,
90
+ allContainerPosition$,
91
+ layout$: observer.layout$,
92
+ event$: subject.event$ as Subject<any>,
93
+ })
94
+ })
95
+ })
96
+
97
+ return () => {
98
+ destroy$.next(undefined)
99
+ unsubscribeFnArr.forEach(fn => fn())
100
+ }
101
+ })
@@ -1,106 +1,106 @@
1
- import * as d3 from 'd3'
2
- import {
3
- Subject,
4
- map,
5
- distinctUntilChanged,
6
- shareReplay,
7
- takeUntil
8
- } from 'rxjs'
9
- import type { DefinePluginConfig } from '../../../lib/core-types'
10
- import {
11
- defineMultiGridPlugin } from '../../../lib/core'
12
- import { DEFAULT_MULTI_BAR_STACK_PARAMS } from '../defaults'
13
- import { createBaseBarStack } from '../../base/BaseBarStack'
14
- import { multiGridPluginDetailObservables } from '../multiGridObservables'
15
- import { getClassName, getUniID } from '../../utils/orbchartsUtils'
16
- import { LAYER_INDEX_OF_GRAPHIC } from '../../const'
17
-
18
- const pluginName = 'MultiBarStack'
19
-
20
- const gridClassName = getClassName(pluginName, 'grid')
21
-
22
- const pluginConfig: DefinePluginConfig<typeof pluginName, typeof DEFAULT_MULTI_BAR_STACK_PARAMS> = {
23
- name: pluginName,
24
- defaultParams: DEFAULT_MULTI_BAR_STACK_PARAMS,
25
- layerIndex: LAYER_INDEX_OF_GRAPHIC,
26
- validator: (params, { validateColumns }) => {
27
- const result = validateColumns(params, {
28
- gridIndexes: {
29
- toBe: 'number[] | "all"',
30
- test: (value: any) => {
31
- return value === 'all' || (Array.isArray(value) && value.every((v: any) => typeof v === 'number'))
32
- }
33
- },
34
- barWidth: {
35
- toBeTypes: ['number']
36
- },
37
- barGroupPadding: {
38
- toBeTypes: ['number']
39
- },
40
- barRadius: {
41
- toBeTypes: ['number', 'boolean']
42
- }
43
- })
44
- return result
45
- }
46
- }
47
-
48
- export const MultiBarStack = defineMultiGridPlugin(pluginConfig)(({ selection, name, subject, observer }) => {
49
- const destroy$ = new Subject()
50
-
51
- const unsubscribeFnArr: (() => void)[] = []
52
-
53
- const multiGridPluginDetail$ = multiGridPluginDetailObservables(observer)
54
-
55
- multiGridPluginDetail$
56
- .pipe(
57
- takeUntil(destroy$)
58
- )
59
- .subscribe(data => {
60
- // 每次重新計算時,清除之前的訂閱
61
- unsubscribeFnArr.forEach(fn => fn())
62
-
63
- selection.selectAll(`g.${gridClassName}`)
64
- .data(data)
65
- .join('g')
66
- .attr('class', gridClassName)
67
- .each((d, i, g) => {
68
-
69
- const gridSelection = d3.select(g[i])
70
-
71
- const isSeriesSeprate$ = d.dataFormatter$.pipe(
72
- takeUntil(destroy$),
73
- map(d => d.grid.separateSeries),
74
- distinctUntilChanged(),
75
- shareReplay(1)
76
- )
77
-
78
- unsubscribeFnArr[i] = createBaseBarStack(pluginName, {
79
- selection: gridSelection,
80
- computedData$: d.computedData$,
81
- visibleComputedData$: d.visibleComputedData$,
82
- computedLayoutData$: d.computedLayoutData$,
83
- visibleComputedLayoutData$: d.visibleComputedLayoutData$,
84
- seriesLabels$: d.seriesLabels$,
85
- SeriesDataMap$: d.SeriesDataMap$,
86
- GroupDataMap$: d.GroupDataMap$,
87
- fullParams$: observer.fullParams$,
88
- fullDataFormatter$: d.dataFormatter$,
89
- fullChartParams$: observer.fullChartParams$,
90
- gridAxesTransform$: d.gridAxesTransform$,
91
- gridGraphicTransform$: d.gridGraphicTransform$,
92
- gridGraphicReverseScale$: d.gridGraphicReverseScale$,
93
- gridAxesSize$: d.gridAxesSize$,
94
- gridHighlight$: d.gridHighlight$,
95
- gridContainerPosition$: d.gridContainerPosition$,
96
- isSeriesSeprate$,
97
- event$: subject.event$ as Subject<any>,
98
- })
99
- })
100
- })
101
-
102
- return () => {
103
- destroy$.next(undefined)
104
- unsubscribeFnArr.forEach(fn => fn())
105
- }
106
- })
1
+ import * as d3 from 'd3'
2
+ import {
3
+ Subject,
4
+ map,
5
+ distinctUntilChanged,
6
+ shareReplay,
7
+ takeUntil
8
+ } from 'rxjs'
9
+ import type { DefinePluginConfig } from '../../../lib/core-types'
10
+ import {
11
+ defineMultiGridPlugin } from '../../../lib/core'
12
+ import { DEFAULT_MULTI_STACKED_BAR_PARAMS } from '../defaults'
13
+ import { createBaseStackedBar } from '../../base/BaseStackedBar'
14
+ import { multiGridPluginDetailObservables } from '../multiGridObservables'
15
+ import { getClassName, getUniID } from '../../utils/orbchartsUtils'
16
+ import { LAYER_INDEX_OF_GRAPHIC } from '../../const'
17
+
18
+ const pluginName = 'MultiStackedBar'
19
+
20
+ const gridClassName = getClassName(pluginName, 'grid')
21
+
22
+ const pluginConfig: DefinePluginConfig<typeof pluginName, typeof DEFAULT_MULTI_STACKED_BAR_PARAMS> = {
23
+ name: pluginName,
24
+ defaultParams: DEFAULT_MULTI_STACKED_BAR_PARAMS,
25
+ layerIndex: LAYER_INDEX_OF_GRAPHIC,
26
+ validator: (params, { validateColumns }) => {
27
+ const result = validateColumns(params, {
28
+ gridIndexes: {
29
+ toBe: 'number[] | "all"',
30
+ test: (value: any) => {
31
+ return value === 'all' || (Array.isArray(value) && value.every((v: any) => typeof v === 'number'))
32
+ }
33
+ },
34
+ barWidth: {
35
+ toBeTypes: ['number']
36
+ },
37
+ barGroupPadding: {
38
+ toBeTypes: ['number']
39
+ },
40
+ barRadius: {
41
+ toBeTypes: ['number', 'boolean']
42
+ }
43
+ })
44
+ return result
45
+ }
46
+ }
47
+
48
+ export const MultiStackedBar = defineMultiGridPlugin(pluginConfig)(({ selection, name, subject, observer }) => {
49
+ const destroy$ = new Subject()
50
+
51
+ const unsubscribeFnArr: (() => void)[] = []
52
+
53
+ const multiGridPluginDetail$ = multiGridPluginDetailObservables(observer)
54
+
55
+ multiGridPluginDetail$
56
+ .pipe(
57
+ takeUntil(destroy$)
58
+ )
59
+ .subscribe(data => {
60
+ // 每次重新計算時,清除之前的訂閱
61
+ unsubscribeFnArr.forEach(fn => fn())
62
+
63
+ selection.selectAll(`g.${gridClassName}`)
64
+ .data(data)
65
+ .join('g')
66
+ .attr('class', gridClassName)
67
+ .each((d, i, g) => {
68
+
69
+ const gridSelection = d3.select(g[i])
70
+
71
+ const isSeriesSeprate$ = d.dataFormatter$.pipe(
72
+ takeUntil(destroy$),
73
+ map(d => d.separateSeries),
74
+ distinctUntilChanged(),
75
+ shareReplay(1)
76
+ )
77
+
78
+ unsubscribeFnArr[i] = createBaseStackedBar(pluginName, {
79
+ selection: gridSelection,
80
+ computedData$: d.computedData$,
81
+ visibleComputedData$: d.visibleComputedData$,
82
+ computedLayoutData$: d.computedLayoutData$,
83
+ visibleComputedLayoutData$: d.visibleComputedLayoutData$,
84
+ seriesLabels$: d.seriesLabels$,
85
+ SeriesDataMap$: d.SeriesDataMap$,
86
+ GroupDataMap$: d.GroupDataMap$,
87
+ fullParams$: observer.fullParams$,
88
+ fullDataFormatter$: d.dataFormatter$,
89
+ fullChartParams$: observer.fullChartParams$,
90
+ gridAxesTransform$: d.gridAxesTransform$,
91
+ gridGraphicTransform$: d.gridGraphicTransform$,
92
+ gridGraphicReverseScale$: d.gridGraphicReverseScale$,
93
+ gridAxesSize$: d.gridAxesSize$,
94
+ gridHighlight$: d.gridHighlight$,
95
+ gridContainerPosition$: d.gridContainerPosition$,
96
+ isSeriesSeprate$,
97
+ event$: subject.event$ as Subject<any>,
98
+ })
99
+ })
100
+ })
101
+
102
+ return () => {
103
+ destroy$.next(undefined)
104
+ unsubscribeFnArr.forEach(fn => fn())
105
+ }
106
+ })