@orbcharts/core 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.
- package/dist/orbcharts-core.es.js +3271 -2862
- package/dist/orbcharts-core.umd.js +4 -4
- package/dist/src/defaults.d.ts +24 -23
- package/dist/src/utils/d3Scale.d.ts +28 -0
- package/dist/src/utils/gridObservables.d.ts +29 -19
- package/dist/src/utils/index.d.ts +1 -1
- package/dist/src/utils/multiGridObservables.d.ts +2 -2
- package/dist/src/utils/multiValueObservables.d.ts +73 -0
- package/dist/src/utils/orbchartsUtils.d.ts +24 -10
- package/dist/src/utils/relationshipObservables.d.ts +13 -0
- package/dist/src/utils/seriesObservables.d.ts +4 -4
- package/dist/src/utils/treeObservables.d.ts +2 -5
- package/package.json +2 -2
- package/src/GridChart.ts +2 -2
- package/src/MultiGridChart.ts +2 -2
- package/src/MultiValueChart.ts +2 -2
- package/src/RelationshipChart.ts +2 -2
- package/src/SeriesChart.ts +2 -2
- package/src/TreeChart.ts +2 -2
- package/src/base/createBaseChart.ts +13 -13
- package/src/base/validators/chartParamsValidator.ts +6 -6
- package/src/defaults.ts +87 -47
- package/src/grid/computedDataFn.ts +4 -4
- package/src/grid/contextObserverCallback.ts +58 -37
- package/src/grid/dataFormatterValidator.ts +14 -14
- package/src/multiGrid/computedDataFn.ts +2 -2
- package/src/multiValue/computedDataFn.ts +81 -147
- package/src/multiValue/contextObserverCallback.ts +150 -2
- package/src/relationship/computedDataFn.ts +94 -60
- package/src/relationship/contextObserverCallback.ts +68 -0
- package/src/tree/computedDataFn.ts +9 -10
- package/src/tree/contextObserverCallback.ts +6 -9
- package/src/utils/d3Scale.ts +198 -0
- package/src/utils/gridObservables.ts +320 -248
- package/src/utils/index.ts +1 -1
- package/src/utils/multiGridObservables.ts +75 -49
- package/src/utils/multiValueObservables.ts +662 -0
- package/src/utils/observables.ts +30 -12
- package/src/utils/orbchartsUtils.ts +90 -65
- package/src/utils/relationshipObservables.ts +85 -0
- package/src/utils/seriesObservables.ts +7 -7
- package/src/utils/treeObservables.ts +44 -33
- package/src/utils/validator.ts +5 -4
- package/dist/src/utils/d3Utils.d.ts +0 -19
- package/src/utils/d3Utils.ts +0 -108
package/src/defaults.ts
CHANGED
@@ -8,6 +8,7 @@ import type {
|
|
8
8
|
DataRelationship,
|
9
9
|
DataFormatterValueAxis,
|
10
10
|
DataFormatterGroupAxis,
|
11
|
+
DataFormatterAxis,
|
11
12
|
DataFormatterContainer,
|
12
13
|
DataFormatterSeries,
|
13
14
|
DataFormatterGrid,
|
@@ -21,7 +22,7 @@ import type {
|
|
21
22
|
Padding
|
22
23
|
} from '../lib/core-types'
|
23
24
|
|
24
|
-
export const
|
25
|
+
export const DEFAULT_CHART_OPTIONS: ChartOptionsPartial<any> = {
|
25
26
|
// preset: {} // 預設為空
|
26
27
|
width: 'auto',
|
27
28
|
height: 'auto'
|
@@ -42,32 +43,62 @@ export const CHART_OPTIONS_DEFAULT: ChartOptionsPartial<any> = {
|
|
42
43
|
// export const COLORS_DEFAULT = ['#67B7DC', '#6794DC', '#6771DC', '#8067DC', '#A367DC', '#C767DC', '#DC67CE', '#DC67AB', '#DC6788', '#DC6967', '#DC8C67', '#DCAF67']
|
43
44
|
// ['#ff7ab9', '#66dec8', '#84c8ff', '#30ad1b', '#f8c43e', '#fa5640', '#9d79d7', '#ea4f98']
|
44
45
|
|
45
|
-
export const
|
46
|
+
export const DEFAULT_PADDING: Padding = {
|
46
47
|
top: 60,
|
47
48
|
right: 60,
|
48
49
|
bottom: 60,
|
49
50
|
left: 60
|
50
51
|
}
|
51
52
|
|
52
|
-
export const
|
53
|
-
padding:
|
53
|
+
export const DEFAULT_CHART_PARAMS: ChartParams = {
|
54
|
+
padding: DEFAULT_PADDING,
|
54
55
|
highlightTarget: 'datum',
|
55
56
|
highlightDefault: null,
|
56
57
|
colorScheme: 'light',
|
57
58
|
colors: {
|
58
59
|
light: {
|
59
|
-
|
60
|
+
label: [
|
61
|
+
"#6CBAFF",
|
62
|
+
"#FF6C6C",
|
63
|
+
"#F9B052",
|
64
|
+
"#7DD3C4",
|
65
|
+
"#AA93D2",
|
66
|
+
"#0088FF",
|
67
|
+
"#FFBABA",
|
68
|
+
"#86DC72",
|
69
|
+
"#EF76FF",
|
70
|
+
"#C4C4C4"
|
71
|
+
],
|
72
|
+
// label: ['#67B7DC', '#6794DC', '#6771DC', '#8067DC', '#A367DC', '#C767DC', '#DC67CE', '#DC67AB', '#DC6788', '#DC6967', '#DC8C67', '#DCAF67'],
|
73
|
+
// label: ['#F3A356', '#7A60F0', '#38B1AF', '#60A2F0', '#F06062', '#FF383C', '#6580EA', '#079F9C', '#9F65EA', '#EA7465', '#EA7465', '#8657D2', '#59B757', '#2797FF', '#D25786', '#F54BA6', '#4BECF5', '#74FD72', '#CA4BF5', '#EFE26E'],
|
74
|
+
// label: ['#60A2F0', '#F3A356', '#7A60F0', '#38B1AF', '#F06062', '#FF383C', '#6580EA', '#079F9C', '#9F65EA', '#EA7465', '#EA7465', '#8657D2', '#59B757', '#2797FF', '#D25786', '#F54BA6', '#4BECF5', '#74FD72', '#CA4BF5', '#EFE26E'],
|
60
75
|
// primary: '#454545',
|
61
76
|
primary: '#1b1e23',
|
62
77
|
secondary: '#e1e1e1',
|
63
|
-
white: '#ffffff',
|
78
|
+
// white: '#ffffff',
|
79
|
+
labelContrast: ['#ffffff', '#1b1e23'],
|
64
80
|
background: '#ffffff'
|
65
81
|
},
|
66
82
|
dark: {
|
67
|
-
|
83
|
+
label: [
|
84
|
+
"#6CBAFF",
|
85
|
+
"#FF6C6C",
|
86
|
+
"#F9B052",
|
87
|
+
"#7DD3C4",
|
88
|
+
"#AA93D2",
|
89
|
+
"#0088FF",
|
90
|
+
"#FFBABA",
|
91
|
+
"#86DC72",
|
92
|
+
"#EF76FF",
|
93
|
+
"#C4C4C4"
|
94
|
+
],
|
95
|
+
// label: ['#67B7DC', '#6794DC', '#6771DC', '#8067DC', '#A367DC', '#C767DC', '#DC67CE', '#DC67AB', '#DC6788', '#DC6967', '#DC8C67', '#DCAF67'],
|
96
|
+
// label: ['#67B7DC', '#6794DC', '#38B1AF', '#6771DC', '#8067DC', '#A367DC', '#C767DC', '#DC67CE', '#DC67AB', '#DC6788', '#DC6967', '#DC8C67', '#DCAF67'],
|
97
|
+
// label: ['#60A2F0', '#F3A356', '#7A60F0', '#38B1AF', '#F06062', '#FF383C', '#6580EA', '#079F9C', '#9F65EA', '#EA7465', '#EA7465', '#8657D2', '#59B757', '#2797FF', '#D25786', '#F54BA6', '#4BECF5', '#74FD72', '#CA4BF5', '#EFE26E'],
|
68
98
|
primary: '#f0f0f0',
|
69
99
|
secondary: '#e1e1e1',
|
70
|
-
white: '#ffffff',
|
100
|
+
// white: '#ffffff',
|
101
|
+
labelContrast: ['#ffffff', '#1b1e23'],
|
71
102
|
background: '#000000'
|
72
103
|
}
|
73
104
|
},
|
@@ -80,56 +111,62 @@ export const CHART_PARAMS_DEFAULT: ChartParams = {
|
|
80
111
|
transitionEase: 'easeCubic'
|
81
112
|
}
|
82
113
|
|
83
|
-
export const
|
114
|
+
export const DEFAULT_CHART_WIDTH = 800
|
84
115
|
|
85
|
-
export const
|
116
|
+
export const DEFAULT_CHART_HEIGHT = 500
|
86
117
|
|
87
118
|
// -- Data --
|
88
119
|
|
89
|
-
export const
|
120
|
+
export const DEFAULT_DATA_SERIES: DataSeries = []
|
90
121
|
|
91
|
-
export const
|
122
|
+
export const DEFAULT_DATA_GRID: DataGrid = []
|
92
123
|
|
93
|
-
export const
|
124
|
+
export const DEFAULT_DATA_MULTI_GRID: DataMultiGrid = []
|
94
125
|
|
95
|
-
export const
|
126
|
+
export const DEFAULT_DATA_MULTI_VALUE: DataMultiValue = []
|
96
127
|
|
97
|
-
export const
|
128
|
+
export const DEFAULT_DATA_TREE: DataTree = []
|
98
129
|
|
99
|
-
export const
|
130
|
+
export const DEFAULTL_DATA_RELATIONA: DataRelationship = {
|
100
131
|
nodes: [],
|
101
132
|
edges: []
|
102
133
|
}
|
103
134
|
|
104
135
|
// -- Data Formatter --
|
105
136
|
|
106
|
-
export const
|
137
|
+
export const DEFAULT_DATA_FORMATTER_VALUE_AXIS: DataFormatterValueAxis = {
|
107
138
|
position: 'left',
|
108
139
|
scaleDomain: ['auto', 'auto'],
|
109
140
|
scaleRange: [0, 0.9],
|
110
141
|
label: '',
|
111
142
|
}
|
112
143
|
|
113
|
-
export const
|
144
|
+
export const DEFAULT_DATA_FORMATTER_GROUP_AXIS: DataFormatterGroupAxis = {
|
114
145
|
position: 'bottom',
|
115
146
|
scaleDomain: [0, 'max'],
|
116
147
|
scalePadding: 0.5,
|
117
148
|
label: ''
|
118
149
|
}
|
119
150
|
|
120
|
-
export const
|
151
|
+
export const DEFAULT_DATA_FORMATTER_AXIS: DataFormatterAxis = {
|
152
|
+
scaleDomain: ['auto', 'auto'],
|
153
|
+
scaleRange: [0, 0.9],
|
154
|
+
label: '',
|
155
|
+
}
|
156
|
+
|
157
|
+
export const DEFAULT_DATA_FORMATTER_CONTAINER: DataFormatterContainer = {
|
121
158
|
gap: 120,
|
122
159
|
rowAmount: 1,
|
123
160
|
columnAmount: 1
|
124
161
|
}
|
125
162
|
|
126
|
-
export const
|
163
|
+
export const DEFAULT_DATA_FORMATTER_SERIES: DataFormatterSeries = {
|
127
164
|
type: 'series',
|
128
165
|
visibleFilter: (datum, context) => true,
|
129
166
|
sort: null,
|
130
167
|
seriesLabels: [],
|
131
168
|
container: {
|
132
|
-
...
|
169
|
+
...DEFAULT_DATA_FORMATTER_CONTAINER
|
133
170
|
},
|
134
171
|
separateSeries: false,
|
135
172
|
sumSeries: false
|
@@ -147,75 +184,78 @@ export const DATA_FORMATTER_SERIES_DEFAULT: DataFormatterSeries = {
|
|
147
184
|
// ]
|
148
185
|
// },
|
149
186
|
}
|
150
|
-
|
187
|
+
DEFAULT_DATA_FORMATTER_SERIES.visibleFilter.toString = () => `(datum, context) => true`
|
151
188
|
|
152
|
-
export const
|
189
|
+
export const DEFAULT_DATA_FORMATTER_GRID_GRID: DataFormatterGridGrid = {
|
153
190
|
seriesDirection: 'row',
|
154
191
|
rowLabels: [],
|
155
192
|
columnLabels: [],
|
156
|
-
valueAxis: { ...
|
157
|
-
groupAxis: { ...
|
193
|
+
valueAxis: { ...DEFAULT_DATA_FORMATTER_VALUE_AXIS },
|
194
|
+
groupAxis: { ...DEFAULT_DATA_FORMATTER_GROUP_AXIS, },
|
158
195
|
separateSeries: false,
|
159
196
|
// slotIndex: 0,
|
160
197
|
// seriesSlotIndexes: null
|
161
198
|
}
|
162
199
|
|
163
|
-
export const
|
200
|
+
export const DEFAULT_DATA_FORMATTER_GRID: DataFormatterGrid = {
|
164
201
|
type: 'grid',
|
165
202
|
visibleFilter: (datum, context) => true,
|
166
|
-
grid: {
|
167
|
-
...
|
168
|
-
},
|
203
|
+
// grid: {
|
204
|
+
...DEFAULT_DATA_FORMATTER_GRID_GRID,
|
205
|
+
// },
|
169
206
|
container: {
|
170
|
-
...
|
207
|
+
...DEFAULT_DATA_FORMATTER_CONTAINER
|
171
208
|
}
|
172
209
|
}
|
173
|
-
|
210
|
+
DEFAULT_DATA_FORMATTER_GRID.visibleFilter.toString = () => `(datum, context) => true`
|
174
211
|
|
175
212
|
// export const DATA_FORMATTER_MULTI_GRID_MULTI_GRID_DEFAULT: DataFormatterMultiGridMultiGrid = {
|
176
|
-
// ...
|
213
|
+
// ...DEFAULT_DATA_FORMATTER_GRID,
|
177
214
|
// slotIndex: 0,
|
178
215
|
// seriesSlotIndexes: null
|
179
216
|
// }
|
180
217
|
|
181
|
-
export const
|
182
|
-
...
|
218
|
+
export const DEFAULT_DATA_FORMATTER_MULTI_GRID_GRID: DataFormatterMultiGridGrid = {
|
219
|
+
...DEFAULT_DATA_FORMATTER_GRID_GRID
|
183
220
|
}
|
184
221
|
|
185
|
-
export const
|
222
|
+
export const DEFAULT_DATA_FORMATTER_MULTI_GRID: DataFormatterMultiGrid = {
|
186
223
|
type: 'multiGrid',
|
187
224
|
visibleFilter: (datum, context) => true,
|
188
225
|
gridList: [
|
189
226
|
{
|
190
|
-
...
|
227
|
+
...DEFAULT_DATA_FORMATTER_MULTI_GRID_GRID
|
191
228
|
},
|
192
229
|
],
|
193
230
|
separateGrid: false,
|
194
231
|
container: {
|
195
|
-
...
|
232
|
+
...DEFAULT_DATA_FORMATTER_CONTAINER
|
196
233
|
}
|
197
234
|
}
|
198
|
-
|
235
|
+
DEFAULT_DATA_FORMATTER_MULTI_GRID.visibleFilter.toString = () => `(datum, context) => true`
|
199
236
|
|
200
|
-
export const
|
237
|
+
export const DEFAULT_DATA_FORMATTER_MULTI_VALUE: DataFormatterMultiValue = {
|
201
238
|
type: 'multiValue',
|
202
239
|
visibleFilter: (datum, context) => true,
|
203
240
|
categoryLabels: [],
|
204
|
-
|
205
|
-
|
206
|
-
|
241
|
+
xAxis: { ...DEFAULT_DATA_FORMATTER_AXIS },
|
242
|
+
yAxis: { ...DEFAULT_DATA_FORMATTER_AXIS },
|
243
|
+
container: {
|
244
|
+
...DEFAULT_DATA_FORMATTER_CONTAINER
|
245
|
+
},
|
246
|
+
separateCategory: false
|
207
247
|
}
|
208
|
-
|
248
|
+
DEFAULT_DATA_FORMATTER_MULTI_VALUE.visibleFilter.toString = () => `(datum, context) => true`
|
209
249
|
|
210
|
-
export const
|
250
|
+
export const DEFAULT_DATA_FORMATTER_TREE: DataFormatterTree = {
|
211
251
|
type: 'tree',
|
212
252
|
visibleFilter: (datum, context) => true,
|
213
253
|
// labelFormat: (datum: any) => (datum && datum.label) ?? '',
|
214
254
|
categoryLabels: []
|
215
255
|
}
|
216
|
-
|
256
|
+
DEFAULT_DATA_FORMATTER_TREE.visibleFilter.toString = () => `(datum, context) => true`
|
217
257
|
|
218
|
-
export const
|
258
|
+
export const DEFAULT_DATA_FORMATTER_RELATIONSHIP: DataFormatterRelationship = {
|
219
259
|
type: 'relationship',
|
220
260
|
visibleFilter: (datum, context) => true,
|
221
261
|
categoryLabels: []
|
@@ -228,5 +268,5 @@ export const DATA_FORMATTER_RELATIONAL_DEFAULT: DataFormatterRelationship = {
|
|
228
268
|
// descriptionFormat: (edge: any) => (edge && edge.label) ?? ''
|
229
269
|
// },
|
230
270
|
}
|
231
|
-
|
271
|
+
DEFAULT_DATA_FORMATTER_RELATIONSHIP.visibleFilter.toString = () => `(datum, context) => true`
|
232
272
|
|
@@ -1,7 +1,7 @@
|
|
1
1
|
// import * as d3 from 'd3'
|
2
2
|
import type { ComputedDataFn, DataGrid, DataGridDatum, DataFormatterGridGrid, ComputedDatumGrid } from '../../lib/core-types'
|
3
3
|
import { formatValueToLabel, createDefaultDatumId, createDefaultSeriesLabel, createDefaultGroupLabel } from '../utils/orbchartsUtils'
|
4
|
-
import {
|
4
|
+
import { getMinMaxValue, transposeData, createGridSeriesLabels, createGridGroupLabels, seriesColorPredicate } from '../utils/orbchartsUtils'
|
5
5
|
|
6
6
|
// 統一 DataGrid 格式、並欄列資料轉置為一致方式
|
7
7
|
export function createTransposedDataGrid (data: DataGrid, dataFormatterGrid: DataFormatterGridGrid): DataGridDatum[][] {
|
@@ -76,16 +76,16 @@ export const computedDataFn: ComputedDataFn<'grid'> = (context) => {
|
|
76
76
|
try {
|
77
77
|
|
78
78
|
// 依seriesDirection轉置資料矩陣
|
79
|
-
const transposedDataGrid = createTransposedDataGrid(data, dataFormatter
|
79
|
+
const transposedDataGrid = createTransposedDataGrid(data, dataFormatter)
|
80
80
|
|
81
81
|
const seriesLabels = createGridSeriesLabels({
|
82
82
|
transposedDataGrid,
|
83
|
-
dataFormatterGrid: dataFormatter
|
83
|
+
dataFormatterGrid: dataFormatter,
|
84
84
|
chartType: 'grid'
|
85
85
|
})
|
86
86
|
const groupLabels = createGridGroupLabels({
|
87
87
|
transposedDataGrid,
|
88
|
-
dataFormatterGrid: dataFormatter
|
88
|
+
dataFormatterGrid: dataFormatter,
|
89
89
|
chartType: 'grid'
|
90
90
|
})
|
91
91
|
|
@@ -7,17 +7,20 @@ import {
|
|
7
7
|
textSizePxObservable } from '../utils/observables'
|
8
8
|
import {
|
9
9
|
gridComputedLayoutDataObservable,
|
10
|
-
gridAxesTransformObservable,
|
11
|
-
gridAxesReverseTransformObservable,
|
12
|
-
gridGraphicTransformObservable,
|
13
|
-
gridGraphicReverseScaleObservable,
|
14
10
|
gridAxesSizeObservable,
|
15
11
|
gridSeriesLabelsObservable,
|
16
12
|
gridVisibleComputedDataObservable,
|
17
13
|
gridVisibleComputedLayoutDataObservable,
|
18
14
|
// isSeriesSeprateObservable,
|
19
15
|
gridContainerPositionObservable,
|
20
|
-
computedStackedDataObservables
|
16
|
+
computedStackedDataObservables,
|
17
|
+
groupScaleDomainValueObservable,
|
18
|
+
filteredMinMaxValueObservable,
|
19
|
+
gridAxesTransformObservable,
|
20
|
+
gridAxesReverseTransformObservable,
|
21
|
+
gridGraphicTransformObservable,
|
22
|
+
gridGraphicReverseScaleObservable,
|
23
|
+
} from '../utils/gridObservables'
|
21
24
|
|
22
25
|
export const contextObserverCallback: ContextObserverCallback<'grid'> = ({ subject, observer }) => {
|
23
26
|
|
@@ -26,7 +29,7 @@ export const contextObserverCallback: ContextObserverCallback<'grid'> = ({ subje
|
|
26
29
|
)
|
27
30
|
|
28
31
|
const isSeriesSeprate$ = observer.fullDataFormatter$.pipe(
|
29
|
-
map(d => d.
|
32
|
+
map(d => d.separateSeries),
|
30
33
|
distinctUntilChanged(),
|
31
34
|
shareReplay(1)
|
32
35
|
)
|
@@ -37,33 +40,6 @@ export const contextObserverCallback: ContextObserverCallback<'grid'> = ({ subje
|
|
37
40
|
layout$: observer.layout$,
|
38
41
|
})
|
39
42
|
|
40
|
-
const gridAxesTransform$ = gridAxesTransformObservable({
|
41
|
-
fullDataFormatter$: observer.fullDataFormatter$,
|
42
|
-
layout$: observer.layout$
|
43
|
-
}).pipe(
|
44
|
-
shareReplay(1)
|
45
|
-
)
|
46
|
-
|
47
|
-
const gridAxesReverseTransform$ = gridAxesReverseTransformObservable({
|
48
|
-
gridAxesTransform$
|
49
|
-
}).pipe(
|
50
|
-
shareReplay(1)
|
51
|
-
)
|
52
|
-
|
53
|
-
const gridGraphicTransform$ = gridGraphicTransformObservable({
|
54
|
-
computedData$: observer.computedData$,
|
55
|
-
fullDataFormatter$: observer.fullDataFormatter$,
|
56
|
-
layout$: observer.layout$
|
57
|
-
}).pipe(
|
58
|
-
shareReplay(1)
|
59
|
-
)
|
60
|
-
|
61
|
-
const gridGraphicReverseScale$ = gridGraphicReverseScaleObservable({
|
62
|
-
gridContainerPosition$: gridContainerPosition$,
|
63
|
-
gridAxesTransform$: gridAxesTransform$,
|
64
|
-
gridGraphicTransform$: gridGraphicTransform$,
|
65
|
-
})
|
66
|
-
|
67
43
|
const gridAxesSize$ = gridAxesSizeObservable({
|
68
44
|
fullDataFormatter$: observer.fullDataFormatter$,
|
69
45
|
layout$: observer.layout$
|
@@ -128,6 +104,49 @@ export const contextObserverCallback: ContextObserverCallback<'grid'> = ({ subje
|
|
128
104
|
shareReplay(1)
|
129
105
|
)
|
130
106
|
|
107
|
+
const groupScaleDomainValue$ = groupScaleDomainValueObservable({
|
108
|
+
computedData$: observer.computedData$,
|
109
|
+
fullDataFormatter$: observer.fullDataFormatter$,
|
110
|
+
}).pipe(
|
111
|
+
shareReplay(1)
|
112
|
+
)
|
113
|
+
|
114
|
+
const filteredMinMaxValue$ = filteredMinMaxValueObservable({
|
115
|
+
computedData$: observer.computedData$,
|
116
|
+
groupScaleDomainValue$: groupScaleDomainValue$,
|
117
|
+
}).pipe(
|
118
|
+
shareReplay(1)
|
119
|
+
)
|
120
|
+
|
121
|
+
const gridAxesTransform$ = gridAxesTransformObservable({
|
122
|
+
fullDataFormatter$: observer.fullDataFormatter$,
|
123
|
+
layout$: observer.layout$
|
124
|
+
}).pipe(
|
125
|
+
shareReplay(1)
|
126
|
+
)
|
127
|
+
|
128
|
+
const gridAxesReverseTransform$ = gridAxesReverseTransformObservable({
|
129
|
+
gridAxesTransform$
|
130
|
+
}).pipe(
|
131
|
+
shareReplay(1)
|
132
|
+
)
|
133
|
+
|
134
|
+
const gridGraphicTransform$ = gridGraphicTransformObservable({
|
135
|
+
computedData$: observer.computedData$,
|
136
|
+
groupScaleDomainValue$: groupScaleDomainValue$,
|
137
|
+
filteredMinMaxValue$: filteredMinMaxValue$,
|
138
|
+
fullDataFormatter$: observer.fullDataFormatter$,
|
139
|
+
layout$: observer.layout$
|
140
|
+
}).pipe(
|
141
|
+
shareReplay(1)
|
142
|
+
)
|
143
|
+
|
144
|
+
const gridGraphicReverseScale$ = gridGraphicReverseScaleObservable({
|
145
|
+
gridContainerPosition$: gridContainerPosition$,
|
146
|
+
gridAxesTransform$: gridAxesTransform$,
|
147
|
+
gridGraphicTransform$: gridGraphicTransform$,
|
148
|
+
})
|
149
|
+
|
131
150
|
|
132
151
|
return {
|
133
152
|
fullParams$: observer.fullParams$,
|
@@ -138,10 +157,6 @@ export const contextObserverCallback: ContextObserverCallback<'grid'> = ({ subje
|
|
138
157
|
textSizePx$,
|
139
158
|
isSeriesSeprate$,
|
140
159
|
gridContainerPosition$,
|
141
|
-
gridAxesTransform$,
|
142
|
-
gridAxesReverseTransform$,
|
143
|
-
gridGraphicTransform$,
|
144
|
-
gridGraphicReverseScale$,
|
145
160
|
gridAxesSize$,
|
146
161
|
gridHighlight$,
|
147
162
|
seriesLabels$,
|
@@ -151,5 +166,11 @@ export const contextObserverCallback: ContextObserverCallback<'grid'> = ({ subje
|
|
151
166
|
visibleComputedData$,
|
152
167
|
visibleComputedLayoutData$,
|
153
168
|
computedStackedData$,
|
169
|
+
groupScaleDomainValue$,
|
170
|
+
filteredMinMaxValue$,
|
171
|
+
gridAxesTransform$,
|
172
|
+
gridAxesReverseTransform$,
|
173
|
+
gridGraphicTransform$,
|
174
|
+
gridGraphicReverseScale$,
|
154
175
|
}
|
155
176
|
}
|
@@ -6,15 +6,15 @@ export const dataFormatterValidator: DataFormatterValidator<'grid'> = (dataForma
|
|
6
6
|
visibleFilter: {
|
7
7
|
toBeTypes: ['Function']
|
8
8
|
},
|
9
|
-
grid: {
|
10
|
-
|
11
|
-
},
|
9
|
+
// grid: {
|
10
|
+
// toBeTypes: ['object']
|
11
|
+
// },
|
12
12
|
container: {
|
13
13
|
toBeTypes: ['object']
|
14
14
|
}
|
15
15
|
})
|
16
|
-
if (dataFormatter.grid) {
|
17
|
-
const visibleFilterResult = validateColumns(dataFormatter
|
16
|
+
// if (dataFormatter.grid) {
|
17
|
+
const visibleFilterResult = validateColumns(dataFormatter, {
|
18
18
|
seriesDirection: {
|
19
19
|
toBe: '"row" | "column"',
|
20
20
|
test: (value) => value === 'row' || value === 'column'
|
@@ -38,11 +38,11 @@ export const dataFormatterValidator: DataFormatterValidator<'grid'> = (dataForma
|
|
38
38
|
if (visibleFilterResult.status === 'error') {
|
39
39
|
return visibleFilterResult
|
40
40
|
}
|
41
|
-
if (dataFormatter.
|
42
|
-
const valueAxisResult = validateColumns(dataFormatter.
|
41
|
+
if (dataFormatter.valueAxis) {
|
42
|
+
const valueAxisResult = validateColumns(dataFormatter.valueAxis, {
|
43
43
|
position: {
|
44
|
-
toBe: '"left" | "right"',
|
45
|
-
test: (value) => value === 'left' || value === 'right'
|
44
|
+
toBe: '"bottom" | "left" | "top" | "right"',
|
45
|
+
test: (value) => value === 'bottom' || value === 'left' || value === 'top' || value === 'right'
|
46
46
|
},
|
47
47
|
scaleDomain: {
|
48
48
|
toBe: '[number | "min" | "auto", number | "max" | "auto"]',
|
@@ -60,11 +60,11 @@ export const dataFormatterValidator: DataFormatterValidator<'grid'> = (dataForma
|
|
60
60
|
return valueAxisResult
|
61
61
|
}
|
62
62
|
}
|
63
|
-
if (dataFormatter.
|
64
|
-
const groupAxisResult = validateColumns(dataFormatter.
|
63
|
+
if (dataFormatter.groupAxis) {
|
64
|
+
const groupAxisResult = validateColumns(dataFormatter.groupAxis, {
|
65
65
|
position: {
|
66
|
-
toBe: '"top" | "
|
67
|
-
test: (value) => value === 'top' || value === '
|
66
|
+
toBe: '"bottom" | "left" | "top" | "right"',
|
67
|
+
test: (value) => value === 'bottom' || value === 'left' || value === 'top' || value === 'right'
|
68
68
|
},
|
69
69
|
scaleDomain: {
|
70
70
|
toBe: '[number, number | "max"]',
|
@@ -81,7 +81,7 @@ export const dataFormatterValidator: DataFormatterValidator<'grid'> = (dataForma
|
|
81
81
|
return groupAxisResult
|
82
82
|
}
|
83
83
|
}
|
84
|
-
}
|
84
|
+
// }
|
85
85
|
if (dataFormatter.container) {
|
86
86
|
const containerResult = validateColumns(dataFormatter.container, {
|
87
87
|
gap: {
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import type { ComputedDataFn, ComputedDatumGrid, DataFormatterGridGrid, ComputedDataMultiGrid } from '../../lib/core-types'
|
2
|
-
import {
|
2
|
+
import { DEFAULT_DATA_FORMATTER_MULTI_GRID_GRID } from '../defaults'
|
3
3
|
import {
|
4
4
|
createDefaultDatumId,
|
5
5
|
seriesColorPredicate,
|
@@ -18,7 +18,7 @@ export const computedDataFn: ComputedDataFn<'multiGrid'> = (context) => {
|
|
18
18
|
let multiGridData: ComputedDataMultiGrid = []
|
19
19
|
|
20
20
|
try {
|
21
|
-
const defaultGrid = dataFormatter.gridList[0] ||
|
21
|
+
const defaultGrid = dataFormatter.gridList[0] || DEFAULT_DATA_FORMATTER_MULTI_GRID_GRID
|
22
22
|
|
23
23
|
// 計算每個grid的dataFormatter
|
24
24
|
const gridDataFormatterList: DataFormatterGridGrid[] = data.map((gridData, gridIndex) => {
|