@orbcharts/plugins-basic 3.0.0-beta.6 → 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 (78) hide show
  1. package/dist/orbcharts-plugins-basic/src/base/{BaseBarStack.d.ts → BaseStackedBar.d.ts} +4 -4
  2. package/dist/orbcharts-plugins-basic/src/grid/defaults.d.ts +3 -3
  3. package/dist/orbcharts-plugins-basic/src/grid/index.d.ts +2 -2
  4. package/dist/orbcharts-plugins-basic/src/grid/plugins/StackedBar.d.ts +1 -0
  5. package/dist/orbcharts-plugins-basic/src/grid/plugins/StackedValueAxis.d.ts +1 -0
  6. package/dist/orbcharts-plugins-basic/src/index.d.ts +1 -0
  7. package/dist/orbcharts-plugins-basic/src/multiGrid/defaults.d.ts +4 -4
  8. package/dist/orbcharts-plugins-basic/src/multiGrid/index.d.ts +3 -3
  9. package/dist/orbcharts-plugins-basic/src/multiGrid/plugins/MultiStackedBar.d.ts +1 -0
  10. package/dist/orbcharts-plugins-basic/src/multiGrid/plugins/MultiStackedValueAxis.d.ts +1 -0
  11. package/dist/orbcharts-plugins-basic/src/multiGrid/plugins/OverlappingStackedValueAxes.d.ts +1 -0
  12. package/dist/orbcharts-plugins-basic/src/noneData/plugins/Container.d.ts +0 -1
  13. package/dist/orbcharts-plugins-basic/src/noneData/plugins/Tooltip.d.ts +0 -3
  14. package/dist/orbcharts-plugins-basic/src/relationship/defaults.d.ts +5 -0
  15. package/dist/orbcharts-plugins-basic/src/relationship/index.d.ts +4 -0
  16. package/dist/orbcharts-plugins-basic/src/relationship/plugins/ForceDirected.d.ts +3 -0
  17. package/dist/orbcharts-plugins-basic/src/relationship/plugins/RelationshipLegend.d.ts +1 -0
  18. package/dist/orbcharts-plugins-basic/src/relationship/plugins/RelationshipTooltip.d.ts +1 -0
  19. package/dist/orbcharts-plugins-basic/src/relationship/relationshipObservables.d.ts +1 -0
  20. package/dist/orbcharts-plugins-basic/src/utils/commonUtils.d.ts +1 -1
  21. package/dist/orbcharts-plugins-basic/src/utils/d3Utils.d.ts +2 -2
  22. package/dist/orbcharts-plugins-basic/src/utils/orbchartsUtils.d.ts +1 -1
  23. package/dist/orbcharts-plugins-basic.es.js +8088 -7413
  24. package/dist/orbcharts-plugins-basic.umd.js +45 -32
  25. package/package.json +4 -4
  26. package/src/base/BaseBars.ts +4 -4
  27. package/src/base/BaseBarsTriangle.ts +4 -2
  28. package/src/base/BaseDots.ts +1 -1
  29. package/src/base/BaseGroupAxis.ts +47 -47
  30. package/src/base/BaseLegend.ts +4 -4
  31. package/src/base/BaseLineAreas.ts +1 -1
  32. package/src/base/{BaseBarStack.ts → BaseStackedBar.ts} +20 -18
  33. package/src/base/BaseTooltip.ts +1 -1
  34. package/src/base/BaseValueAxis.ts +55 -55
  35. package/src/grid/defaults.ts +8 -6
  36. package/src/grid/gridObservables.ts +32 -32
  37. package/src/grid/index.ts +2 -2
  38. package/src/grid/plugins/GridZoom.ts +6 -6
  39. package/src/grid/plugins/GroupAux.ts +23 -23
  40. package/src/grid/plugins/{BarStack.ts → StackedBar.ts} +7 -7
  41. package/src/grid/plugins/{ValueStackAxis.ts → StackedValueAxis.ts} +5 -5
  42. package/src/index.ts +1 -5
  43. package/src/multiGrid/defaults.ts +7 -7
  44. package/src/multiGrid/index.ts +3 -3
  45. package/src/multiGrid/plugins/MultiBars.ts +1 -1
  46. package/src/multiGrid/plugins/MultiBarsTriangle.ts +1 -1
  47. package/src/multiGrid/plugins/MultiGroupAxis.ts +1 -1
  48. package/src/multiGrid/plugins/{MultiBarStack.ts → MultiStackedBar.ts} +8 -8
  49. package/src/multiGrid/plugins/{MultiValueStackAxis.ts → MultiStackedValueAxis.ts} +3 -3
  50. package/src/multiGrid/plugins/MultiValueAxis.ts +1 -1
  51. package/src/multiGrid/plugins/{OverlappingValueStackAxes.ts → OverlappingStackedValueAxes.ts} +8 -8
  52. package/src/multiGrid/plugins/OverlappingValueAxes.ts +3 -3
  53. package/src/multiValue/defaults.ts +10 -6
  54. package/src/multiValue/multiValueObservables.ts +50 -11
  55. package/src/multiValue/plugins/ScatterBubbles.ts +6 -3
  56. package/src/multiValue/plugins/XYAxes.ts +36 -28
  57. package/src/noneData/plugins/Container.ts +23 -23
  58. package/src/noneData/plugins/Tooltip.ts +365 -365
  59. package/src/relationship/defaults.ts +113 -0
  60. package/src/relationship/index.ts +4 -0
  61. package/src/relationship/plugins/ForceDirected.ts +1148 -0
  62. package/src/relationship/plugins/RelationshipLegend.ts +100 -0
  63. package/src/relationship/plugins/RelationshipTooltip.ts +66 -0
  64. package/src/relationship/relationshipObservables.ts +50 -0
  65. package/src/series/defaults.ts +8 -8
  66. package/src/series/plugins/Bubbles.ts +14 -13
  67. package/src/series/plugins/PieEventTexts.ts +20 -19
  68. package/src/tree/defaults.ts +1 -1
  69. package/src/utils/commonUtils.ts +5 -5
  70. package/src/utils/d3Utils.ts +2 -2
  71. package/src/utils/orbchartsUtils.ts +22 -7
  72. package/dist/orbcharts-plugins-basic/src/grid/plugins/BarStack.d.ts +0 -1
  73. package/dist/orbcharts-plugins-basic/src/grid/plugins/ValueStackAxis.d.ts +0 -1
  74. package/dist/orbcharts-plugins-basic/src/multiGrid/plugins/MultiBarStack.d.ts +0 -1
  75. package/dist/orbcharts-plugins-basic/src/multiGrid/plugins/MultiValueStackAxis.d.ts +0 -1
  76. package/dist/orbcharts-plugins-basic/src/multiGrid/plugins/OverlappingValueStackAxes.d.ts +0 -1
  77. /package/dist/orbcharts-plugins-basic/src/relationship/plugins/{Relationship.d.ts → ForceDirectedBubbles.d.ts} +0 -0
  78. /package/src/relationship/plugins/{Relationship.ts → ForceDirectedBubbles.ts} +0 -0
@@ -10,15 +10,15 @@ import {
10
10
  import type { DefinePluginConfig } from '../../../lib/core-types'
11
11
  import {
12
12
  defineGridPlugin } from '../../../lib/core'
13
- import { DEFAULT_VALUE_STACK_AXIS_PARAMS } from '../defaults'
13
+ import { DEFAULT_STACKED_VALUE_AXIS_PARAMS } from '../defaults'
14
14
  import { LAYER_INDEX_OF_AXIS } from '../../const'
15
15
  import { createBaseValueAxis } from '../../base/BaseValueAxis'
16
16
 
17
- const pluginName = 'ValueStackAxis'
17
+ const pluginName = 'StackedValueAxis'
18
18
 
19
- const pluginConfig: DefinePluginConfig<typeof pluginName, typeof DEFAULT_VALUE_STACK_AXIS_PARAMS> = {
19
+ const pluginConfig: DefinePluginConfig<typeof pluginName, typeof DEFAULT_STACKED_VALUE_AXIS_PARAMS> = {
20
20
  name: pluginName,
21
- defaultParams: DEFAULT_VALUE_STACK_AXIS_PARAMS,
21
+ defaultParams: DEFAULT_STACKED_VALUE_AXIS_PARAMS,
22
22
  layerIndex: LAYER_INDEX_OF_AXIS,
23
23
  validator: (params, { validateColumns }) => {
24
24
  const result = validateColumns(params, {
@@ -72,7 +72,7 @@ const pluginConfig: DefinePluginConfig<typeof pluginName, typeof DEFAULT_VALUE_S
72
72
  }
73
73
  }
74
74
 
75
- export const ValueStackAxis = defineGridPlugin(pluginConfig)(({ selection, name, observer, subject }) => {
75
+ export const StackedValueAxis = defineGridPlugin(pluginConfig)(({ selection, name, observer, subject }) => {
76
76
 
77
77
  const destroy$ = new Subject()
78
78
 
package/src/index.ts CHANGED
@@ -1,11 +1,7 @@
1
- // export { default as container } from './noneDataPlugins/container'
2
- // export { default as pie } from './seriesPlugins/pie'
3
- // export { default as pieEventTexts } from './seriesPlugins/pieEventTexts'
4
- // export { default as pieLabels } from './seriesPlugins/pieLabels'
5
-
6
1
  export * from './grid'
7
2
  export * from './multiGrid'
8
3
  export * from './multiValue'
9
4
  export * from './noneData'
5
+ export * from './relationship'
10
6
  export * from './series'
11
7
  export * from './tree'
@@ -1,7 +1,7 @@
1
1
  import type {
2
2
  MultiGridLegendParams,
3
3
  MultiBarsParams,
4
- MultiBarStackParams,
4
+ MultiStackedBarParams,
5
5
  MultiBarsTriangleParams,
6
6
  MultiLinesParams,
7
7
  MultiLineAreasParams,
@@ -9,9 +9,9 @@ import type {
9
9
  MultiGroupAxisParams,
10
10
  MultiGridTooltipParams,
11
11
  MultiValueAxisParams,
12
- MultiValueStackAxisParams,
12
+ MultiStackedValueAxisParams,
13
13
  OverlappingValueAxesParams,
14
- OverlappingValueStackAxesParams
14
+ OverlappingStackedValueAxesParams
15
15
  } from '../../lib/plugins-basic-types'
16
16
  import { measureTextWidth } from '../utils/commonUtils'
17
17
 
@@ -73,7 +73,7 @@ export const DEFAULT_MULTI_VALUE_AXIS_PARAMS: MultiValueAxisParams = {
73
73
  gridIndexes: [0]
74
74
  }
75
75
 
76
- export const DEFAULT_MULTI_VALUE_STACK_AXIS_PARAMS: MultiValueStackAxisParams = {
76
+ export const DEFAULT_MULTI_STACKED_VALUE_AXIS_PARAMS: MultiStackedValueAxisParams = {
77
77
  ...DEFAULT_MULTI_VALUE_AXIS_PARAMS
78
78
  }
79
79
 
@@ -85,7 +85,7 @@ export const DEFAULT_MULTI_BARS_PARAMS: MultiBarsParams = {
85
85
  gridIndexes: [0]
86
86
  }
87
87
 
88
- export const DEFAULT_MULTI_BAR_STACK_PARAMS: MultiBarStackParams = {
88
+ export const DEFAULT_MULTI_STACKED_BAR_PARAMS: MultiStackedBarParams = {
89
89
  barWidth: 0,
90
90
  barGroupPadding: 10,
91
91
  barRadius: false,
@@ -115,7 +115,7 @@ export const DEFAULT_MULTI_LINE_AREAS_PARAMS: MultiLineAreasParams = {
115
115
  export const DEFAULT_MULTI_DOTS_PARAMS: MultiDotsParams = {
116
116
  radius: 4,
117
117
  fillColorType: 'white',
118
- strokeColorType: 'series',
118
+ strokeColorType: 'label',
119
119
  strokeWidth: 2,
120
120
  onlyShowHighlighted: false,
121
121
  gridIndexes: [1]
@@ -157,7 +157,7 @@ export const DEFAULT_OVERLAPPING_VALUE_AXES_PARAMS: OverlappingValueAxesParams =
157
157
  gridIndexes: [0, 1]
158
158
  }
159
159
 
160
- export const DEFAULT_OVERLAPPING_VALUE_STACK_AXES_PARAMS: OverlappingValueStackAxesParams = {
160
+ export const DEFAULT_OVERLAPPING_STACKED_VALUE_AXES_PARAMS: OverlappingStackedValueAxesParams = {
161
161
  ...DEFAULT_OVERLAPPING_VALUE_AXES_PARAMS
162
162
  }
163
163
 
@@ -2,7 +2,7 @@ export * from './defaults'
2
2
  // export * from './types'
3
3
  export { MultiGridLegend } from './plugins/MultiGridLegend'
4
4
  export { MultiBars } from './plugins/MultiBars'
5
- export { MultiBarStack } from './plugins/MultiBarStack'
5
+ export { MultiStackedBar } from './plugins/MultiStackedBar'
6
6
  export { MultiBarsTriangle } from './plugins/MultiBarsTriangle'
7
7
  export { MultiLines } from './plugins/MultiLines'
8
8
  export { MultiLineAreas } from './plugins/MultiLineAreas'
@@ -10,6 +10,6 @@ export { MultiDots } from './plugins/MultiDots'
10
10
  export { MultiGroupAxis } from './plugins/MultiGroupAxis'
11
11
  export { MultiValueAxis } from './plugins/MultiValueAxis'
12
12
  export { MultiGridTooltip } from './plugins/MultiGridTooltip'
13
- export { MultiValueStackAxis } from './plugins/MultiValueStackAxis'
13
+ export { MultiStackedValueAxis } from './plugins/MultiStackedValueAxis'
14
14
  export { OverlappingValueAxes } from './plugins/OverlappingValueAxes'
15
- export { OverlappingValueStackAxes } from './plugins/OverlappingValueStackAxes'
15
+ export { OverlappingStackedValueAxes } from './plugins/OverlappingStackedValueAxes'
@@ -73,7 +73,7 @@ export const MultiBars = defineMultiGridPlugin(pluginConfig)(({ selection, name,
73
73
 
74
74
  const isSeriesSeprate$ = d.dataFormatter$.pipe(
75
75
  takeUntil(destroy$),
76
- map(d => d.grid.separateSeries),
76
+ map(d => d.separateSeries),
77
77
  distinctUntilChanged(),
78
78
  shareReplay(1)
79
79
  )
@@ -79,7 +79,7 @@ export const MultiBarsTriangle = defineMultiGridPlugin(pluginConfig)(({ selectio
79
79
 
80
80
  const isSeriesSeprate$ = d.dataFormatter$.pipe(
81
81
  takeUntil(destroy$),
82
- map(d => d.grid.separateSeries),
82
+ map(d => d.separateSeries),
83
83
  distinctUntilChanged(),
84
84
  shareReplay(1)
85
85
  )
@@ -109,7 +109,7 @@ export const MultiGroupAxis = defineMultiGridPlugin(pluginConfig)(({ selection,
109
109
 
110
110
  const isSeriesSeprate$ = d.dataFormatter$.pipe(
111
111
  takeUntil(destroy$),
112
- map(d => d.grid.separateSeries),
112
+ map(d => d.separateSeries),
113
113
  distinctUntilChanged(),
114
114
  shareReplay(1)
115
115
  )
@@ -9,19 +9,19 @@ import {
9
9
  import type { DefinePluginConfig } from '../../../lib/core-types'
10
10
  import {
11
11
  defineMultiGridPlugin } from '../../../lib/core'
12
- import { DEFAULT_MULTI_BAR_STACK_PARAMS } from '../defaults'
13
- import { createBaseBarStack } from '../../base/BaseBarStack'
12
+ import { DEFAULT_MULTI_STACKED_BAR_PARAMS } from '../defaults'
13
+ import { createBaseStackedBar } from '../../base/BaseStackedBar'
14
14
  import { multiGridPluginDetailObservables } from '../multiGridObservables'
15
15
  import { getClassName, getUniID } from '../../utils/orbchartsUtils'
16
16
  import { LAYER_INDEX_OF_GRAPHIC } from '../../const'
17
17
 
18
- const pluginName = 'MultiBarStack'
18
+ const pluginName = 'MultiStackedBar'
19
19
 
20
20
  const gridClassName = getClassName(pluginName, 'grid')
21
21
 
22
- const pluginConfig: DefinePluginConfig<typeof pluginName, typeof DEFAULT_MULTI_BAR_STACK_PARAMS> = {
22
+ const pluginConfig: DefinePluginConfig<typeof pluginName, typeof DEFAULT_MULTI_STACKED_BAR_PARAMS> = {
23
23
  name: pluginName,
24
- defaultParams: DEFAULT_MULTI_BAR_STACK_PARAMS,
24
+ defaultParams: DEFAULT_MULTI_STACKED_BAR_PARAMS,
25
25
  layerIndex: LAYER_INDEX_OF_GRAPHIC,
26
26
  validator: (params, { validateColumns }) => {
27
27
  const result = validateColumns(params, {
@@ -45,7 +45,7 @@ const pluginConfig: DefinePluginConfig<typeof pluginName, typeof DEFAULT_MULTI_B
45
45
  }
46
46
  }
47
47
 
48
- export const MultiBarStack = defineMultiGridPlugin(pluginConfig)(({ selection, name, subject, observer }) => {
48
+ export const MultiStackedBar = defineMultiGridPlugin(pluginConfig)(({ selection, name, subject, observer }) => {
49
49
  const destroy$ = new Subject()
50
50
 
51
51
  const unsubscribeFnArr: (() => void)[] = []
@@ -70,12 +70,12 @@ export const MultiBarStack = defineMultiGridPlugin(pluginConfig)(({ selection, n
70
70
 
71
71
  const isSeriesSeprate$ = d.dataFormatter$.pipe(
72
72
  takeUntil(destroy$),
73
- map(d => d.grid.separateSeries),
73
+ map(d => d.separateSeries),
74
74
  distinctUntilChanged(),
75
75
  shareReplay(1)
76
76
  )
77
77
 
78
- unsubscribeFnArr[i] = createBaseBarStack(pluginName, {
78
+ unsubscribeFnArr[i] = createBaseStackedBar(pluginName, {
79
79
  selection: gridSelection,
80
80
  computedData$: d.computedData$,
81
81
  visibleComputedData$: d.visibleComputedData$,
@@ -15,7 +15,7 @@ import { multiGridPluginDetailObservables } from '../multiGridObservables'
15
15
  import { getClassName, getUniID } from '../../utils/orbchartsUtils'
16
16
  import { LAYER_INDEX_OF_AXIS } from '../../const'
17
17
 
18
- const pluginName = 'MultiValueStackAxis'
18
+ const pluginName = 'MultiStackedValueAxis'
19
19
 
20
20
  const gridClassName = getClassName(pluginName, 'grid')
21
21
 
@@ -81,7 +81,7 @@ const pluginConfig: DefinePluginConfig<typeof pluginName, typeof DEFAULT_MULTI_V
81
81
  }
82
82
  }
83
83
 
84
- export const MultiValueStackAxis = defineMultiGridPlugin(pluginConfig)(({ selection, name, subject, observer }) => {
84
+ export const MultiStackedValueAxis = defineMultiGridPlugin(pluginConfig)(({ selection, name, subject, observer }) => {
85
85
  const destroy$ = new Subject()
86
86
 
87
87
  const unsubscribeFnArr: (() => void)[] = []
@@ -106,7 +106,7 @@ export const MultiValueStackAxis = defineMultiGridPlugin(pluginConfig)(({ select
106
106
 
107
107
  const isSeriesSeprate$ = d.dataFormatter$.pipe(
108
108
  takeUntil(destroy$),
109
- map(d => d.grid.separateSeries),
109
+ map(d => d.separateSeries),
110
110
  distinctUntilChanged(),
111
111
  shareReplay(1)
112
112
  )
@@ -106,7 +106,7 @@ export const MultiValueAxis = defineMultiGridPlugin(pluginConfig)(({ selection,
106
106
 
107
107
  const isSeriesSeprate$ = d.dataFormatter$.pipe(
108
108
  takeUntil(destroy$),
109
- map(d => d.grid.separateSeries),
109
+ map(d => d.separateSeries),
110
110
  distinctUntilChanged(),
111
111
  shareReplay(1)
112
112
  )
@@ -14,20 +14,20 @@ import type { DefinePluginConfig } from '../../../lib/core-types'
14
14
  import type { ContextObserverMultiGrid, DataFormatterGrid, DataFormatterTypeMap, Layout } from '../../../lib/core-types'
15
15
  import {
16
16
  defineMultiGridPlugin } from '../../../lib/core'
17
- import { DEFAULT_OVERLAPPING_VALUE_STACK_AXES_PARAMS } from '../defaults'
17
+ import { DEFAULT_OVERLAPPING_STACKED_VALUE_AXES_PARAMS } from '../defaults'
18
18
  import { createBaseValueAxis } from '../../base/BaseValueAxis'
19
19
  import { multiGridPluginDetailObservables } from '../multiGridObservables'
20
20
  import { getClassName, getUniID } from '../../utils/orbchartsUtils'
21
21
  import { gridAxesTransformObservable, gridAxesReverseTransformObservable, gridContainerPositionObservable } from '../../../lib/core'
22
22
  import { LAYER_INDEX_OF_AXIS } from '../../const'
23
23
 
24
- const pluginName = 'OverlappingValueStackAxes'
24
+ const pluginName = 'OverlappingStackedValueAxes'
25
25
 
26
26
  const gridClassName = getClassName(pluginName, 'grid')
27
27
 
28
- const pluginConfig: DefinePluginConfig<typeof pluginName, typeof DEFAULT_OVERLAPPING_VALUE_STACK_AXES_PARAMS> = {
28
+ const pluginConfig: DefinePluginConfig<typeof pluginName, typeof DEFAULT_OVERLAPPING_STACKED_VALUE_AXES_PARAMS> = {
29
29
  name: pluginName,
30
- defaultParams: DEFAULT_OVERLAPPING_VALUE_STACK_AXES_PARAMS,
30
+ defaultParams: DEFAULT_OVERLAPPING_STACKED_VALUE_AXES_PARAMS,
31
31
  layerIndex: LAYER_INDEX_OF_AXIS,
32
32
  validator: (params, { validateColumns }) => {
33
33
  const result = validateColumns(params, {
@@ -153,7 +153,7 @@ const pluginConfig: DefinePluginConfig<typeof pluginName, typeof DEFAULT_OVERLAP
153
153
  }
154
154
 
155
155
  // 第一個圖軸使用堆疊的資料,第二個圖軸使用原始資料
156
- export const OverlappingValueStackAxes = defineMultiGridPlugin(pluginConfig)(({ selection, name, subject, observer }) => {
156
+ export const OverlappingStackedValueAxes = defineMultiGridPlugin(pluginConfig)(({ selection, name, subject, observer }) => {
157
157
  const destroy$ = new Subject()
158
158
 
159
159
  const unsubscribeFnArr: (() => void)[] = []
@@ -195,13 +195,13 @@ export const OverlappingValueStackAxes = defineMultiGridPlugin(pluginConfig)(({
195
195
  return <DataFormatterGrid>{
196
196
  type: 'grid',
197
197
  visibleFilter: data.fullDataFormatter.visibleFilter as any,
198
- grid: {
198
+ // grid: {
199
199
  ...data.fullDataFormatter.gridList[data.secondGridIndex],
200
200
  valueAxis: {
201
201
  ...data.fullDataFormatter.gridList[data.secondGridIndex].valueAxis,
202
202
  position: reversePosition
203
- }
204
- },
203
+ },
204
+ // },
205
205
  container: {
206
206
  ...data.fullDataFormatter.container
207
207
  }
@@ -196,13 +196,13 @@ export const OverlappingValueAxes = defineMultiGridPlugin(pluginConfig)(({ selec
196
196
  return <DataFormatterGrid>{
197
197
  type: 'grid',
198
198
  visibleFilter: data.fullDataFormatter.visibleFilter as any,
199
- grid: {
199
+ // grid: {
200
200
  ...data.fullDataFormatter.gridList[data.secondGridIndex],
201
201
  valueAxis: {
202
202
  ...data.fullDataFormatter.gridList[data.secondGridIndex].valueAxis,
203
203
  position: reversePosition
204
- }
205
- },
204
+ },
205
+ // },
206
206
  container: {
207
207
  ...data.fullDataFormatter.container
208
208
  }
@@ -82,15 +82,15 @@ DEFAULT_MULTI_VALUE_TOOLTIP_PARAMS.renderFn.toString = () => `(eventData, { styl
82
82
 
83
83
  export const DEFAULT_SCATTER_PARAMS: ScatterParams = {
84
84
  radius: 5,
85
- fillColorType: 'series',
86
- strokeColorType: 'series',
85
+ fillColorType: 'label',
86
+ strokeColorType: 'label',
87
87
  strokeWidth: 0,
88
88
  }
89
89
 
90
90
  export const DEFAULT_SCATTER_BUBBLES_PARAMS: ScatterBubblesParams = {
91
91
  // radius: 5,
92
- fillColorType: 'series',
93
- strokeColorType: 'series',
92
+ fillColorType: 'label',
93
+ strokeColorType: 'label',
94
94
  strokeWidth: 0,
95
95
  valueLinearOpacity: [0.8, 0.8],
96
96
  arcScaleType: 'area',
@@ -134,7 +134,8 @@ export const DEFAULT_X_Y_AXES_PARAMS: XYAxesParams = {
134
134
  axisLineVisible: false,
135
135
  axisLineColorType: 'primary',
136
136
  ticks: null,
137
- tickFormat: ',.0f',
137
+ // tickFormat: ',.0f',
138
+ tickFormat: v => v,
138
139
  tickLineVisible: true,
139
140
  tickPadding: 20,
140
141
  tickFullLine: true,
@@ -148,7 +149,8 @@ export const DEFAULT_X_Y_AXES_PARAMS: XYAxesParams = {
148
149
  axisLineVisible: false,
149
150
  axisLineColorType: 'primary',
150
151
  ticks: null,
151
- tickFormat: ',.0f',
152
+ // tickFormat: ',.0f',
153
+ tickFormat: v => v,
152
154
  tickLineVisible: true,
153
155
  tickPadding: 20,
154
156
  tickFullLine: true,
@@ -157,6 +159,8 @@ export const DEFAULT_X_Y_AXES_PARAMS: XYAxesParams = {
157
159
  tickTextColorType: 'primary'
158
160
  }
159
161
  }
162
+ DEFAULT_X_Y_AXES_PARAMS.xAxis.tickFormat.toString = () => `v => v`
163
+ DEFAULT_X_Y_AXES_PARAMS.yAxis.tickFormat.toString = () => `v => v`
160
164
 
161
165
  export const DEFAULT_X_Y_ZOOM_PARAMS: XYZoomParams = {
162
166
 
@@ -193,15 +193,54 @@ export const multiValueXYPositionObservable = ({ rootSelection, fullDataFormatte
193
193
  shareReplay(1)
194
194
  )
195
195
 
196
- const xyScale$ = combineLatest({
197
- layout: layout$,
198
- filteredMinMaxXYData: filteredMinMaxXYData$,
199
- fullDataFormatter: fullDataFormatter$,
200
- columnAmount: columnAmount$,
201
- rowAmount: rowAmount$
202
- }).pipe(
203
- switchMap(async d => d),
204
- map(data => {
196
+ // const xyScale$ = combineLatest({
197
+ // layout: layout$,
198
+ // filteredMinMaxXYData: filteredMinMaxXYData$,
199
+ // fullDataFormatter: fullDataFormatter$,
200
+ // columnAmount: columnAmount$,
201
+ // rowAmount: rowAmount$
202
+ // }).pipe(
203
+ // switchMap(async d => d),
204
+ // map(data => {
205
+ // const xScale = createAxisToValueScale({
206
+ // maxValue: data.filteredMinMaxXYData.maxXDatum.value[0],
207
+ // minValue: data.filteredMinMaxXYData.minXDatum.value[0],
208
+ // axisWidth: data.layout.width,
209
+ // scaleDomain: data.fullDataFormatter.xAxis.scaleDomain,
210
+ // scaleRange: data.fullDataFormatter.xAxis.scaleRange,
211
+ // })
212
+ // const yScale = createAxisToValueScale({
213
+ // maxValue: data.filteredMinMaxXYData.maxYDatum.value[1],
214
+ // minValue: data.filteredMinMaxXYData.minYDatum.value[1],
215
+ // axisWidth: data.layout.height,
216
+ // scaleDomain: data.fullDataFormatter.yAxis.scaleDomain,
217
+ // scaleRange: data.fullDataFormatter.yAxis.scaleRange,
218
+ // reverse: true
219
+ // })
220
+ // return { xScale, yScale }
221
+ // })
222
+ // )
223
+
224
+ const xyScale$: Observable<{
225
+ xScale: d3.ScaleLinear<number, number, never>;
226
+ yScale: d3.ScaleLinear<number, number, never>;
227
+ }> = new Observable(subscriber => {
228
+ combineLatest({
229
+ layout: layout$,
230
+ filteredMinMaxXYData: filteredMinMaxXYData$,
231
+ fullDataFormatter: fullDataFormatter$,
232
+ columnAmount: columnAmount$,
233
+ rowAmount: rowAmount$
234
+ }).pipe(
235
+ switchMap(async d => d),
236
+ ).subscribe(data => {
237
+ if (!data.filteredMinMaxXYData.minXDatum || !data.filteredMinMaxXYData.maxXDatum
238
+ || data.filteredMinMaxXYData.minXDatum.value[0] == null || data.filteredMinMaxXYData.maxXDatum.value[0] == null
239
+ || !data.filteredMinMaxXYData.minYDatum || !data.filteredMinMaxXYData.maxYDatum
240
+ || data.filteredMinMaxXYData.minYDatum.value[1] == null || data.filteredMinMaxXYData.maxYDatum.value[1] == null
241
+ ) {
242
+ return
243
+ }
205
244
  const xScale = createAxisToValueScale({
206
245
  maxValue: data.filteredMinMaxXYData.maxXDatum.value[0],
207
246
  minValue: data.filteredMinMaxXYData.minXDatum.value[0],
@@ -217,9 +256,9 @@ export const multiValueXYPositionObservable = ({ rootSelection, fullDataFormatte
217
256
  scaleRange: data.fullDataFormatter.yAxis.scaleRange,
218
257
  reverse: true
219
258
  })
220
- return { xScale, yScale }
259
+ subscriber.next({ xScale, yScale })
221
260
  })
222
- )
261
+ })
223
262
 
224
263
  const axisValue$ = combineLatest({
225
264
  fullDataFormatter: fullDataFormatter$,
@@ -2,6 +2,7 @@ import * as d3 from 'd3'
2
2
  import {
3
3
  combineLatest,
4
4
  map,
5
+ filter,
5
6
  switchMap,
6
7
  takeUntil,
7
8
  distinctUntilChanged,
@@ -25,7 +26,7 @@ import type {
25
26
  } from '../../../lib/core-types'
26
27
  import {
27
28
  defineMultiValuePlugin,
28
- getMinAndMax
29
+ getMinMax
29
30
  } from '../../../lib/core'
30
31
  import type { ScatterBubblesParams } from '../../../lib/plugins-basic-types'
31
32
  import { DEFAULT_SCATTER_BUBBLES_PARAMS } from '../defaults'
@@ -298,7 +299,7 @@ export const ScatterBubbles = defineMultiValuePlugin(pluginConfig)(({ selection,
298
299
  const filteredMinMaxValue$ = observer.filteredMinMaxXYData$.pipe(
299
300
  takeUntil(destroy$),
300
301
  map(data => {
301
- return getMinAndMax(data.datumList.flat().map(d => d.value[2] ?? 0))
302
+ return getMinMax(data.datumList.flat().map(d => d.value[2] ?? 0))
302
303
  })
303
304
  )
304
305
 
@@ -332,7 +333,8 @@ export const ScatterBubbles = defineMultiValuePlugin(pluginConfig)(({ selection,
332
333
  takeUntil(destroy$),
333
334
  map(data => {
334
335
  return data.reduce((acc, current) => acc + current, 0)
335
- })
336
+ }),
337
+ filter(data => data > 0) // 避免後續計算scale的時候發生問題
336
338
  )
337
339
 
338
340
  const radiusScale$ = combineLatest({
@@ -343,6 +345,7 @@ export const ScatterBubbles = defineMultiValuePlugin(pluginConfig)(({ selection,
343
345
  takeUntil(destroy$),
344
346
  switchMap(async (d) => d),
345
347
  map(data => {
348
+ // console.log({ totalR: data.totalR, totalValue: data.totalValue })
346
349
  return d3.scalePow()
347
350
  .domain([0, data.totalValue])
348
351
  .range([0, data.totalR])
@@ -19,7 +19,7 @@ import type {
19
19
  import {
20
20
  defineMultiValuePlugin,
21
21
  createValueToAxisScale,
22
- getMinAndMax
22
+ getMinMax
23
23
  } from '../../../lib/core'
24
24
  import type { XYAxesParams
25
25
  } from '../../../lib/plugins-basic-types'
@@ -295,8 +295,6 @@ function renderXAxis ({ selection, xAxisClassName, fullParams, layout, fullDataF
295
295
  .classed(xAxisClassName, true)
296
296
  .attr('transform', `translate(0, ${layout.height})`)
297
297
 
298
- const valueLength = minMaxXY.maxY - minMaxXY.minY
299
-
300
298
  // const _xScale = d3.scaleLinear()
301
299
  // .domain([0, 150])
302
300
  // .range([416.5, 791.349])
@@ -307,11 +305,7 @@ function renderXAxis ({ selection, xAxisClassName, fullParams, layout, fullDataF
307
305
  // 設定Y軸刻度
308
306
  const xAxis = d3.axisBottom(xScale)
309
307
  .scale(xScale)
310
- .ticks(valueLength > fullParams.xAxis.ticks
311
- ? fullParams.xAxis.ticks
312
- : ((minMaxXY.minY === 0 && minMaxXY.maxY === 0)
313
- ? 1
314
- : Math.ceil(valueLength))) // 刻度分段數量
308
+ .ticks(fullParams.xAxis.ticks) // 刻度分段數量
315
309
  .tickFormat(d => parseTickFormatValue(d, fullParams.xAxis.tickFormat))
316
310
  .tickSize(fullParams.xAxis.tickFullLine == true
317
311
  ? -layout.height
@@ -379,8 +373,6 @@ function renderYAxis ({ selection, yAxisClassName, fullParams, layout, fullDataF
379
373
  .join('g')
380
374
  .classed(yAxisClassName, true)
381
375
 
382
- const valueLength = minMaxXY.maxY - minMaxXY.minY
383
-
384
376
  // const _yScale = d3.scaleLinear()
385
377
  // .domain([0, 150])
386
378
  // .range([416.5, 791.349])
@@ -391,11 +383,7 @@ function renderYAxis ({ selection, yAxisClassName, fullParams, layout, fullDataF
391
383
  // 設定Y軸刻度
392
384
  const yAxis = d3.axisLeft(yScale)
393
385
  .scale(yScale)
394
- .ticks(valueLength > fullParams.yAxis.ticks
395
- ? fullParams.yAxis.ticks
396
- : ((minMaxXY.minY === 0 && minMaxXY.maxY === 0)
397
- ? 1
398
- : Math.ceil(valueLength))) // 刻度分段數量
386
+ .ticks(fullParams.xAxis.ticks) // 刻度分段數量
399
387
  .tickFormat(d => parseTickFormatValue(d, fullParams.yAxis.tickFormat))
400
388
  .tickSize(fullParams.yAxis.tickFullLine == true
401
389
  ? -layout.width
@@ -522,7 +510,7 @@ export const XYAxes = defineMultiValuePlugin(pluginConfig)(({ selection, name, o
522
510
  distinctUntilChanged()
523
511
  )
524
512
 
525
- // const minAndMax$: Observable<[number, number]> = new Observable(subscriber => {
513
+ // const minMax$: Observable<[number, number]> = new Observable(subscriber => {
526
514
  // combineLatest({
527
515
  // fullDataFormatter: observer.fullDataFormatter$,
528
516
  // computedData: observer.computedData$
@@ -546,11 +534,11 @@ export const XYAxes = defineMultiValuePlugin(pluginConfig)(({ selection, name, o
546
534
  // })
547
535
  // })
548
536
 
549
- // const filteredMinAndMax = getMinAndMax(filteredData.flat().map(d => d.value[1]))
550
- // if (filteredMinAndMax[0] === filteredMinAndMax[1]) {
551
- // filteredMinAndMax[0] = filteredMinAndMax[1] - 1 // 避免最大及最小值相同造成無法計算scale
537
+ // const filteredMinMax = getMinMax(filteredData.flat().map(d => d.value[1]))
538
+ // if (filteredMinMax[0] === filteredMinMax[1]) {
539
+ // filteredMinMax[0] = filteredMinMax[1] - 1 // 避免最大及最小值相同造成無法計算scale
552
540
  // }
553
- // subscriber.next(filteredMinAndMax)
541
+ // subscriber.next(filteredMinMax)
554
542
  // })
555
543
  // })
556
544
 
@@ -564,12 +552,21 @@ export const XYAxes = defineMultiValuePlugin(pluginConfig)(({ selection, name, o
564
552
  takeUntil(destroy$),
565
553
  switchMap(async (d) => d),
566
554
  ).subscribe(data => {
567
-
555
+ if (!data.filteredMinMaxXYData.minXDatum || !data.filteredMinMaxXYData.maxXDatum
556
+ || data.filteredMinMaxXYData.minXDatum.value[0] == null || data.filteredMinMaxXYData.maxXDatum.value[0] == null
557
+ ) {
558
+ return
559
+ }
560
+ let maxValue = data.filteredMinMaxXYData.maxXDatum.value[0]
561
+ let minValue = data.filteredMinMaxXYData.minXDatum.value[0]
562
+ if (maxValue === minValue && maxValue === 0) {
563
+ // 避免最大及最小值同等於 0 造成無法計算scale
564
+ maxValue = 1
565
+ }
566
+
568
567
  const xScale: d3.ScaleLinear<number, number> = createValueToAxisScale({
569
- // maxValue: data.minMaxXY.maxX,
570
- // minValue: data.minMaxXY.minX,
571
- maxValue: data.filteredMinMaxXYData.maxYDatum.value[1],
572
- minValue: data.filteredMinMaxXYData.minYDatum.value[0],
568
+ maxValue,
569
+ minValue,
573
570
  axisWidth: data.layout.width,
574
571
  scaleDomain: data.fullDataFormatter.xAxis.scaleDomain,
575
572
  scaleRange: data.fullDataFormatter.xAxis.scaleRange,
@@ -589,10 +586,21 @@ export const XYAxes = defineMultiValuePlugin(pluginConfig)(({ selection, name, o
589
586
  takeUntil(destroy$),
590
587
  switchMap(async (d) => d),
591
588
  ).subscribe(data => {
592
-
589
+ if (!data.filteredMinMaxXYData.minYDatum || !data.filteredMinMaxXYData.maxYDatum
590
+ || data.filteredMinMaxXYData.minYDatum.value[1] == null || data.filteredMinMaxXYData.maxYDatum.value[1] == null
591
+ ) {
592
+ return
593
+ }
594
+ let maxValue = data.filteredMinMaxXYData.maxYDatum.value[1]
595
+ let minValue = data.filteredMinMaxXYData.minYDatum.value[1]
596
+ if (maxValue === minValue && maxValue === 0) {
597
+ // 避免最大及最小值同等於 0 造成無法計算scale
598
+ maxValue = 1
599
+ }
600
+
593
601
  const yScale: d3.ScaleLinear<number, number> = createValueToAxisScale({
594
- maxValue: data.filteredMinMaxXYData.maxYDatum.value[1],
595
- minValue: data.filteredMinMaxXYData.minYDatum.value[0],
602
+ maxValue,
603
+ minValue,
596
604
  axisWidth: data.layout.height,
597
605
  scaleDomain: data.fullDataFormatter.yAxis.scaleDomain,
598
606
  scaleRange: data.fullDataFormatter.yAxis.scaleRange,
@@ -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
+ // })