@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.
- package/dist/orbcharts-plugins-basic/src/base/{BaseBarStack.d.ts → BaseStackedBar.d.ts} +4 -4
- package/dist/orbcharts-plugins-basic/src/grid/defaults.d.ts +3 -3
- package/dist/orbcharts-plugins-basic/src/grid/index.d.ts +2 -2
- package/dist/orbcharts-plugins-basic/src/grid/plugins/StackedBar.d.ts +1 -0
- package/dist/orbcharts-plugins-basic/src/grid/plugins/StackedValueAxis.d.ts +1 -0
- package/dist/orbcharts-plugins-basic/src/index.d.ts +1 -0
- package/dist/orbcharts-plugins-basic/src/multiGrid/defaults.d.ts +4 -4
- package/dist/orbcharts-plugins-basic/src/multiGrid/index.d.ts +3 -3
- package/dist/orbcharts-plugins-basic/src/multiGrid/plugins/MultiStackedBar.d.ts +1 -0
- package/dist/orbcharts-plugins-basic/src/multiGrid/plugins/MultiStackedValueAxis.d.ts +1 -0
- package/dist/orbcharts-plugins-basic/src/multiGrid/plugins/OverlappingStackedValueAxes.d.ts +1 -0
- package/dist/orbcharts-plugins-basic/src/noneData/plugins/Container.d.ts +0 -1
- package/dist/orbcharts-plugins-basic/src/noneData/plugins/Tooltip.d.ts +0 -3
- package/dist/orbcharts-plugins-basic/src/relationship/defaults.d.ts +5 -0
- package/dist/orbcharts-plugins-basic/src/relationship/index.d.ts +4 -0
- package/dist/orbcharts-plugins-basic/src/relationship/plugins/ForceDirected.d.ts +3 -0
- package/dist/orbcharts-plugins-basic/src/relationship/plugins/RelationshipLegend.d.ts +1 -0
- package/dist/orbcharts-plugins-basic/src/relationship/plugins/RelationshipTooltip.d.ts +1 -0
- package/dist/orbcharts-plugins-basic/src/relationship/relationshipObservables.d.ts +1 -0
- package/dist/orbcharts-plugins-basic/src/utils/commonUtils.d.ts +1 -1
- package/dist/orbcharts-plugins-basic/src/utils/d3Utils.d.ts +2 -2
- package/dist/orbcharts-plugins-basic/src/utils/orbchartsUtils.d.ts +1 -1
- package/dist/orbcharts-plugins-basic.es.js +8088 -7413
- package/dist/orbcharts-plugins-basic.umd.js +45 -32
- package/package.json +4 -4
- package/src/base/BaseBars.ts +4 -4
- package/src/base/BaseBarsTriangle.ts +4 -2
- package/src/base/BaseDots.ts +1 -1
- package/src/base/BaseGroupAxis.ts +47 -47
- package/src/base/BaseLegend.ts +4 -4
- package/src/base/BaseLineAreas.ts +1 -1
- package/src/base/{BaseBarStack.ts → BaseStackedBar.ts} +20 -18
- package/src/base/BaseTooltip.ts +1 -1
- package/src/base/BaseValueAxis.ts +55 -55
- package/src/grid/defaults.ts +8 -6
- package/src/grid/gridObservables.ts +32 -32
- package/src/grid/index.ts +2 -2
- package/src/grid/plugins/GridZoom.ts +6 -6
- package/src/grid/plugins/GroupAux.ts +23 -23
- package/src/grid/plugins/{BarStack.ts → StackedBar.ts} +7 -7
- package/src/grid/plugins/{ValueStackAxis.ts → StackedValueAxis.ts} +5 -5
- package/src/index.ts +1 -5
- package/src/multiGrid/defaults.ts +7 -7
- package/src/multiGrid/index.ts +3 -3
- package/src/multiGrid/plugins/MultiBars.ts +1 -1
- package/src/multiGrid/plugins/MultiBarsTriangle.ts +1 -1
- package/src/multiGrid/plugins/MultiGroupAxis.ts +1 -1
- package/src/multiGrid/plugins/{MultiBarStack.ts → MultiStackedBar.ts} +8 -8
- package/src/multiGrid/plugins/{MultiValueStackAxis.ts → MultiStackedValueAxis.ts} +3 -3
- package/src/multiGrid/plugins/MultiValueAxis.ts +1 -1
- package/src/multiGrid/plugins/{OverlappingValueStackAxes.ts → OverlappingStackedValueAxes.ts} +8 -8
- package/src/multiGrid/plugins/OverlappingValueAxes.ts +3 -3
- package/src/multiValue/defaults.ts +10 -6
- package/src/multiValue/multiValueObservables.ts +50 -11
- package/src/multiValue/plugins/ScatterBubbles.ts +6 -3
- package/src/multiValue/plugins/XYAxes.ts +36 -28
- package/src/noneData/plugins/Container.ts +23 -23
- package/src/noneData/plugins/Tooltip.ts +365 -365
- package/src/relationship/defaults.ts +113 -0
- package/src/relationship/index.ts +4 -0
- package/src/relationship/plugins/ForceDirected.ts +1148 -0
- package/src/relationship/plugins/RelationshipLegend.ts +100 -0
- package/src/relationship/plugins/RelationshipTooltip.ts +66 -0
- package/src/relationship/relationshipObservables.ts +50 -0
- package/src/series/defaults.ts +8 -8
- package/src/series/plugins/Bubbles.ts +14 -13
- package/src/series/plugins/PieEventTexts.ts +20 -19
- package/src/tree/defaults.ts +1 -1
- package/src/utils/commonUtils.ts +5 -5
- package/src/utils/d3Utils.ts +2 -2
- package/src/utils/orbchartsUtils.ts +22 -7
- package/dist/orbcharts-plugins-basic/src/grid/plugins/BarStack.d.ts +0 -1
- package/dist/orbcharts-plugins-basic/src/grid/plugins/ValueStackAxis.d.ts +0 -1
- package/dist/orbcharts-plugins-basic/src/multiGrid/plugins/MultiBarStack.d.ts +0 -1
- package/dist/orbcharts-plugins-basic/src/multiGrid/plugins/MultiValueStackAxis.d.ts +0 -1
- package/dist/orbcharts-plugins-basic/src/multiGrid/plugins/OverlappingValueStackAxes.d.ts +0 -1
- /package/dist/orbcharts-plugins-basic/src/relationship/plugins/{Relationship.d.ts → ForceDirectedBubbles.d.ts} +0 -0
- /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 {
|
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 = '
|
17
|
+
const pluginName = 'StackedValueAxis'
|
18
18
|
|
19
|
-
const pluginConfig: DefinePluginConfig<typeof pluginName, typeof
|
19
|
+
const pluginConfig: DefinePluginConfig<typeof pluginName, typeof DEFAULT_STACKED_VALUE_AXIS_PARAMS> = {
|
20
20
|
name: pluginName,
|
21
|
-
defaultParams:
|
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
|
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
|
-
|
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
|
-
|
12
|
+
MultiStackedValueAxisParams,
|
13
13
|
OverlappingValueAxesParams,
|
14
|
-
|
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
|
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
|
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: '
|
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
|
160
|
+
export const DEFAULT_OVERLAPPING_STACKED_VALUE_AXES_PARAMS: OverlappingStackedValueAxesParams = {
|
161
161
|
...DEFAULT_OVERLAPPING_VALUE_AXES_PARAMS
|
162
162
|
}
|
163
163
|
|
package/src/multiGrid/index.ts
CHANGED
@@ -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 {
|
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 {
|
13
|
+
export { MultiStackedValueAxis } from './plugins/MultiStackedValueAxis'
|
14
14
|
export { OverlappingValueAxes } from './plugins/OverlappingValueAxes'
|
15
|
-
export {
|
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.
|
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.
|
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.
|
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 {
|
13
|
-
import {
|
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 = '
|
18
|
+
const pluginName = 'MultiStackedBar'
|
19
19
|
|
20
20
|
const gridClassName = getClassName(pluginName, 'grid')
|
21
21
|
|
22
|
-
const pluginConfig: DefinePluginConfig<typeof pluginName, typeof
|
22
|
+
const pluginConfig: DefinePluginConfig<typeof pluginName, typeof DEFAULT_MULTI_STACKED_BAR_PARAMS> = {
|
23
23
|
name: pluginName,
|
24
|
-
defaultParams:
|
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
|
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.
|
73
|
+
map(d => d.separateSeries),
|
74
74
|
distinctUntilChanged(),
|
75
75
|
shareReplay(1)
|
76
76
|
)
|
77
77
|
|
78
|
-
unsubscribeFnArr[i] =
|
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 = '
|
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
|
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.
|
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.
|
109
|
+
map(d => d.separateSeries),
|
110
110
|
distinctUntilChanged(),
|
111
111
|
shareReplay(1)
|
112
112
|
)
|
package/src/multiGrid/plugins/{OverlappingValueStackAxes.ts → OverlappingStackedValueAxes.ts}
RENAMED
@@ -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 {
|
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 = '
|
24
|
+
const pluginName = 'OverlappingStackedValueAxes'
|
25
25
|
|
26
26
|
const gridClassName = getClassName(pluginName, 'grid')
|
27
27
|
|
28
|
-
const pluginConfig: DefinePluginConfig<typeof pluginName, typeof
|
28
|
+
const pluginConfig: DefinePluginConfig<typeof pluginName, typeof DEFAULT_OVERLAPPING_STACKED_VALUE_AXES_PARAMS> = {
|
29
29
|
name: pluginName,
|
30
|
-
defaultParams:
|
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
|
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: '
|
86
|
-
strokeColorType: '
|
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: '
|
93
|
-
strokeColorType: '
|
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
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
}).pipe(
|
203
|
-
|
204
|
-
|
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
|
-
|
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
|
-
|
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
|
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
|
-
|
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(
|
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(
|
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
|
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
|
550
|
-
// if (
|
551
|
-
//
|
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(
|
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
|
-
|
570
|
-
|
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
|
595
|
-
minValue
|
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
|
-
|
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
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
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
|
-
|
25
|
+
// return function unsubscribe () {
|
26
26
|
|
27
|
-
|
28
|
-
})
|
27
|
+
// }
|
28
|
+
// })
|