@orbcharts/core 3.0.0-alpha.68 → 3.0.0-beta.10
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 +3239 -2854
- 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 +63 -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,38 @@ 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: ['#67B7DC', '#6794DC', '#6771DC', '#8067DC', '#A367DC', '#C767DC', '#DC67CE', '#DC67AB', '#DC6788', '#DC6967', '#DC8C67', '#DCAF67'],
|
61
|
+
// label: ['#F3A356', '#7A60F0', '#38B1AF', '#60A2F0', '#F06062', '#FF383C', '#6580EA', '#079F9C', '#9F65EA', '#EA7465', '#EA7465', '#8657D2', '#59B757', '#2797FF', '#D25786', '#F54BA6', '#4BECF5', '#74FD72', '#CA4BF5', '#EFE26E'],
|
62
|
+
// label: ['#60A2F0', '#F3A356', '#7A60F0', '#38B1AF', '#F06062', '#FF383C', '#6580EA', '#079F9C', '#9F65EA', '#EA7465', '#EA7465', '#8657D2', '#59B757', '#2797FF', '#D25786', '#F54BA6', '#4BECF5', '#74FD72', '#CA4BF5', '#EFE26E'],
|
60
63
|
// primary: '#454545',
|
61
64
|
primary: '#1b1e23',
|
62
65
|
secondary: '#e1e1e1',
|
63
|
-
white: '#ffffff',
|
66
|
+
// white: '#ffffff',
|
67
|
+
labelContrast: ['#ffffff', '#1b1e23'],
|
64
68
|
background: '#ffffff'
|
65
69
|
},
|
66
70
|
dark: {
|
67
|
-
|
71
|
+
label: ['#67B7DC', '#6794DC', '#6771DC', '#8067DC', '#A367DC', '#C767DC', '#DC67CE', '#DC67AB', '#DC6788', '#DC6967', '#DC8C67', '#DCAF67'],
|
72
|
+
// label: ['#67B7DC', '#6794DC', '#38B1AF', '#6771DC', '#8067DC', '#A367DC', '#C767DC', '#DC67CE', '#DC67AB', '#DC6788', '#DC6967', '#DC8C67', '#DCAF67'],
|
73
|
+
// label: ['#60A2F0', '#F3A356', '#7A60F0', '#38B1AF', '#F06062', '#FF383C', '#6580EA', '#079F9C', '#9F65EA', '#EA7465', '#EA7465', '#8657D2', '#59B757', '#2797FF', '#D25786', '#F54BA6', '#4BECF5', '#74FD72', '#CA4BF5', '#EFE26E'],
|
68
74
|
primary: '#f0f0f0',
|
69
75
|
secondary: '#e1e1e1',
|
70
|
-
white: '#ffffff',
|
76
|
+
// white: '#ffffff',
|
77
|
+
labelContrast: ['#ffffff', '#1b1e23'],
|
71
78
|
background: '#000000'
|
72
79
|
}
|
73
80
|
},
|
@@ -80,56 +87,62 @@ export const CHART_PARAMS_DEFAULT: ChartParams = {
|
|
80
87
|
transitionEase: 'easeCubic'
|
81
88
|
}
|
82
89
|
|
83
|
-
export const
|
90
|
+
export const DEFAULT_CHART_WIDTH = 800
|
84
91
|
|
85
|
-
export const
|
92
|
+
export const DEFAULT_CHART_HEIGHT = 500
|
86
93
|
|
87
94
|
// -- Data --
|
88
95
|
|
89
|
-
export const
|
96
|
+
export const DEFAULT_DATA_SERIES: DataSeries = []
|
90
97
|
|
91
|
-
export const
|
98
|
+
export const DEFAULT_DATA_GRID: DataGrid = []
|
92
99
|
|
93
|
-
export const
|
100
|
+
export const DEFAULT_DATA_MULTI_GRID: DataMultiGrid = []
|
94
101
|
|
95
|
-
export const
|
102
|
+
export const DEFAULT_DATA_MULTI_VALUE: DataMultiValue = []
|
96
103
|
|
97
|
-
export const
|
104
|
+
export const DEFAULT_DATA_TREE: DataTree = []
|
98
105
|
|
99
|
-
export const
|
106
|
+
export const DEFAULTL_DATA_RELATIONA: DataRelationship = {
|
100
107
|
nodes: [],
|
101
108
|
edges: []
|
102
109
|
}
|
103
110
|
|
104
111
|
// -- Data Formatter --
|
105
112
|
|
106
|
-
export const
|
113
|
+
export const DEFAULT_DATA_FORMATTER_VALUE_AXIS: DataFormatterValueAxis = {
|
107
114
|
position: 'left',
|
108
115
|
scaleDomain: ['auto', 'auto'],
|
109
116
|
scaleRange: [0, 0.9],
|
110
117
|
label: '',
|
111
118
|
}
|
112
119
|
|
113
|
-
export const
|
120
|
+
export const DEFAULT_DATA_FORMATTER_GROUP_AXIS: DataFormatterGroupAxis = {
|
114
121
|
position: 'bottom',
|
115
122
|
scaleDomain: [0, 'max'],
|
116
123
|
scalePadding: 0.5,
|
117
124
|
label: ''
|
118
125
|
}
|
119
126
|
|
120
|
-
export const
|
127
|
+
export const DEFAULT_DATA_FORMATTER_AXIS: DataFormatterAxis = {
|
128
|
+
scaleDomain: ['auto', 'auto'],
|
129
|
+
scaleRange: [0, 0.9],
|
130
|
+
label: '',
|
131
|
+
}
|
132
|
+
|
133
|
+
export const DEFAULT_DATA_FORMATTER_CONTAINER: DataFormatterContainer = {
|
121
134
|
gap: 120,
|
122
135
|
rowAmount: 1,
|
123
136
|
columnAmount: 1
|
124
137
|
}
|
125
138
|
|
126
|
-
export const
|
139
|
+
export const DEFAULT_DATA_FORMATTER_SERIES: DataFormatterSeries = {
|
127
140
|
type: 'series',
|
128
141
|
visibleFilter: (datum, context) => true,
|
129
142
|
sort: null,
|
130
143
|
seriesLabels: [],
|
131
144
|
container: {
|
132
|
-
...
|
145
|
+
...DEFAULT_DATA_FORMATTER_CONTAINER
|
133
146
|
},
|
134
147
|
separateSeries: false,
|
135
148
|
sumSeries: false
|
@@ -147,75 +160,78 @@ export const DATA_FORMATTER_SERIES_DEFAULT: DataFormatterSeries = {
|
|
147
160
|
// ]
|
148
161
|
// },
|
149
162
|
}
|
150
|
-
|
163
|
+
DEFAULT_DATA_FORMATTER_SERIES.visibleFilter.toString = () => `(datum, context) => true`
|
151
164
|
|
152
|
-
export const
|
165
|
+
export const DEFAULT_DATA_FORMATTER_GRID_GRID: DataFormatterGridGrid = {
|
153
166
|
seriesDirection: 'row',
|
154
167
|
rowLabels: [],
|
155
168
|
columnLabels: [],
|
156
|
-
valueAxis: { ...
|
157
|
-
groupAxis: { ...
|
169
|
+
valueAxis: { ...DEFAULT_DATA_FORMATTER_VALUE_AXIS },
|
170
|
+
groupAxis: { ...DEFAULT_DATA_FORMATTER_GROUP_AXIS, },
|
158
171
|
separateSeries: false,
|
159
172
|
// slotIndex: 0,
|
160
173
|
// seriesSlotIndexes: null
|
161
174
|
}
|
162
175
|
|
163
|
-
export const
|
176
|
+
export const DEFAULT_DATA_FORMATTER_GRID: DataFormatterGrid = {
|
164
177
|
type: 'grid',
|
165
178
|
visibleFilter: (datum, context) => true,
|
166
|
-
grid: {
|
167
|
-
...
|
168
|
-
},
|
179
|
+
// grid: {
|
180
|
+
...DEFAULT_DATA_FORMATTER_GRID_GRID,
|
181
|
+
// },
|
169
182
|
container: {
|
170
|
-
...
|
183
|
+
...DEFAULT_DATA_FORMATTER_CONTAINER
|
171
184
|
}
|
172
185
|
}
|
173
|
-
|
186
|
+
DEFAULT_DATA_FORMATTER_GRID.visibleFilter.toString = () => `(datum, context) => true`
|
174
187
|
|
175
188
|
// export const DATA_FORMATTER_MULTI_GRID_MULTI_GRID_DEFAULT: DataFormatterMultiGridMultiGrid = {
|
176
|
-
// ...
|
189
|
+
// ...DEFAULT_DATA_FORMATTER_GRID,
|
177
190
|
// slotIndex: 0,
|
178
191
|
// seriesSlotIndexes: null
|
179
192
|
// }
|
180
193
|
|
181
|
-
export const
|
182
|
-
...
|
194
|
+
export const DEFAULT_DATA_FORMATTER_MULTI_GRID_GRID: DataFormatterMultiGridGrid = {
|
195
|
+
...DEFAULT_DATA_FORMATTER_GRID_GRID
|
183
196
|
}
|
184
197
|
|
185
|
-
export const
|
198
|
+
export const DEFAULT_DATA_FORMATTER_MULTI_GRID: DataFormatterMultiGrid = {
|
186
199
|
type: 'multiGrid',
|
187
200
|
visibleFilter: (datum, context) => true,
|
188
201
|
gridList: [
|
189
202
|
{
|
190
|
-
...
|
203
|
+
...DEFAULT_DATA_FORMATTER_MULTI_GRID_GRID
|
191
204
|
},
|
192
205
|
],
|
193
206
|
separateGrid: false,
|
194
207
|
container: {
|
195
|
-
...
|
208
|
+
...DEFAULT_DATA_FORMATTER_CONTAINER
|
196
209
|
}
|
197
210
|
}
|
198
|
-
|
211
|
+
DEFAULT_DATA_FORMATTER_MULTI_GRID.visibleFilter.toString = () => `(datum, context) => true`
|
199
212
|
|
200
|
-
export const
|
213
|
+
export const DEFAULT_DATA_FORMATTER_MULTI_VALUE: DataFormatterMultiValue = {
|
201
214
|
type: 'multiValue',
|
202
215
|
visibleFilter: (datum, context) => true,
|
203
216
|
categoryLabels: [],
|
204
|
-
|
205
|
-
|
206
|
-
|
217
|
+
xAxis: { ...DEFAULT_DATA_FORMATTER_AXIS },
|
218
|
+
yAxis: { ...DEFAULT_DATA_FORMATTER_AXIS },
|
219
|
+
container: {
|
220
|
+
...DEFAULT_DATA_FORMATTER_CONTAINER
|
221
|
+
},
|
222
|
+
separateCategory: false
|
207
223
|
}
|
208
|
-
|
224
|
+
DEFAULT_DATA_FORMATTER_MULTI_VALUE.visibleFilter.toString = () => `(datum, context) => true`
|
209
225
|
|
210
|
-
export const
|
226
|
+
export const DEFAULT_DATA_FORMATTER_TREE: DataFormatterTree = {
|
211
227
|
type: 'tree',
|
212
228
|
visibleFilter: (datum, context) => true,
|
213
229
|
// labelFormat: (datum: any) => (datum && datum.label) ?? '',
|
214
230
|
categoryLabels: []
|
215
231
|
}
|
216
|
-
|
232
|
+
DEFAULT_DATA_FORMATTER_TREE.visibleFilter.toString = () => `(datum, context) => true`
|
217
233
|
|
218
|
-
export const
|
234
|
+
export const DEFAULT_DATA_FORMATTER_RELATIONSHIP: DataFormatterRelationship = {
|
219
235
|
type: 'relationship',
|
220
236
|
visibleFilter: (datum, context) => true,
|
221
237
|
categoryLabels: []
|
@@ -228,5 +244,5 @@ export const DATA_FORMATTER_RELATIONAL_DEFAULT: DataFormatterRelationship = {
|
|
228
244
|
// descriptionFormat: (edge: any) => (edge && edge.label) ?? ''
|
229
245
|
// },
|
230
246
|
}
|
231
|
-
|
247
|
+
DEFAULT_DATA_FORMATTER_RELATIONSHIP.visibleFilter.toString = () => `(datum, context) => true`
|
232
248
|
|
@@ -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) => {
|