@visactor/vseed 0.0.39 → 0.1.0
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/builder/builder/builder.d.ts +61 -671
- package/dist/builder/register/chartType/index.d.ts +0 -1
- package/dist/dataReshape/constant.d.ts +17 -2
- package/dist/dataReshape/dataReshapeByEncoding.d.ts +11 -0
- package/dist/dataReshape/index.d.ts +3 -7
- package/dist/dataReshape/unfoldDimensions.d.ts +12 -14
- package/dist/index.cjs +1139 -1875
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1086 -1831
- package/dist/index.js.map +1 -1
- package/dist/pipeline/advanced/chart/pipeline/index.d.ts +0 -1
- package/dist/pipeline/advanced/chart/pipes/analysis/index.d.ts +3 -1
- package/dist/pipeline/advanced/chart/pipes/analysis/sort.d.ts +0 -4
- package/dist/pipeline/advanced/chart/pipes/{encoding/encodingAR.d.ts → analysis/sortLegend.d.ts} +1 -1
- package/dist/pipeline/advanced/chart/pipes/analysis/sortXBand.d.ts +3 -0
- package/dist/pipeline/advanced/chart/pipes/{encoding/encodingPie.d.ts → analysis/sortYBand.d.ts} +1 -1
- package/dist/pipeline/advanced/chart/pipes/encoding/{encodingFunnel.d.ts → bar.d.ts} +1 -1
- package/dist/pipeline/advanced/chart/pipes/encoding/{encodingAreaRange.d.ts → column.d.ts} +1 -1
- package/dist/pipeline/advanced/chart/pipes/encoding/dualAxis.d.ts +2 -0
- package/dist/pipeline/advanced/chart/pipes/encoding/funnel.d.ts +2 -0
- package/dist/pipeline/advanced/chart/pipes/encoding/heatmap.d.ts +2 -0
- package/dist/pipeline/advanced/chart/pipes/encoding/index.d.ts +8 -9
- package/dist/pipeline/advanced/chart/pipes/encoding/{encodingMatrix.d.ts → pie.d.ts} +1 -1
- package/dist/pipeline/advanced/chart/pipes/encoding/radar.d.ts +2 -0
- package/dist/pipeline/advanced/chart/pipes/encoding/rose.d.ts +2 -0
- package/dist/pipeline/advanced/chart/pipes/encoding/scatter.d.ts +2 -0
- package/dist/pipeline/advanced/chart/pipes/init/autoScatterMeasures.d.ts +2 -0
- package/dist/pipeline/advanced/chart/pipes/init/index.d.ts +2 -1
- package/dist/pipeline/advanced/chart/pipes/reshape/index.d.ts +4 -12
- package/dist/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithDualEncoding.d.ts +2 -0
- package/dist/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithEncoding.d.ts +2 -0
- package/dist/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithScatterEncoding.d.ts +2 -0
- package/dist/pipeline/advanced/chart/pipes/reshape/reshapeWithDualEncoding.d.ts +2 -0
- package/dist/pipeline/advanced/chart/pipes/reshape/reshapeWithEncoding.d.ts +2 -0
- package/dist/pipeline/advanced/chart/pipes/reshape/reshapeWithScatterEncoding.d.ts +2 -0
- package/dist/pipeline/spec/chart/pipeline/index.d.ts +0 -1
- package/dist/pipeline/spec/chart/pipes/color/index.d.ts +0 -1
- package/dist/pipeline/spec/chart/pipes/{color/linearColor.d.ts → dataset/datasetScatter.d.ts} +1 -1
- package/dist/pipeline/spec/chart/pipes/dataset/index.d.ts +1 -0
- package/dist/pipeline/spec/chart/pipes/init/index.d.ts +1 -2
- package/dist/pipeline/spec/chart/pipes/legend/index.d.ts +0 -1
- package/dist/pipeline/spec/chart/pipes/tooltip/index.d.ts +0 -1
- package/dist/types/advancedVSeed.d.ts +26 -311
- package/dist/types/chartType/area/area.d.ts +10 -1
- package/dist/types/chartType/area/zArea.d.ts +14 -0
- package/dist/types/chartType/areaPercent/areaPercent.d.ts +10 -1
- package/dist/types/chartType/areaPercent/zAreaPercent.d.ts +14 -0
- package/dist/types/chartType/bar/bar.d.ts +19 -30
- package/dist/types/chartType/bar/zBar.d.ts +14 -0
- package/dist/types/chartType/barParallel/barParallel.d.ts +18 -30
- package/dist/types/chartType/barParallel/zBarParallel.d.ts +14 -0
- package/dist/types/chartType/barPercent/barPercent.d.ts +16 -21
- package/dist/types/chartType/barPercent/zBarPercent.d.ts +14 -0
- package/dist/types/chartType/column/column.d.ts +16 -28
- package/dist/types/chartType/column/zColumn.d.ts +14 -0
- package/dist/types/chartType/columnParallel/columnParallel.d.ts +19 -27
- package/dist/types/chartType/columnParallel/zColumnParallel.d.ts +14 -0
- package/dist/types/chartType/columnPercent/columnPercent.d.ts +16 -25
- package/dist/types/chartType/columnPercent/zColumnPercent.d.ts +14 -0
- package/dist/types/chartType/donut/donut.d.ts +10 -1
- package/dist/types/chartType/donut/zDonut.d.ts +14 -0
- package/dist/types/chartType/dualAxis/dualAxis.d.ts +9 -1
- package/dist/types/chartType/funnel/funnel.d.ts +9 -1
- package/dist/types/chartType/funnel/zFunnel.d.ts +14 -0
- package/dist/types/chartType/heatmap/heatmap.d.ts +10 -1
- package/dist/types/chartType/index.d.ts +0 -1
- package/dist/types/chartType/line/line.d.ts +14 -10
- package/dist/types/chartType/line/zLine.d.ts +14 -0
- package/dist/types/chartType/pie/pie.d.ts +10 -1
- package/dist/types/chartType/pie/zPie.d.ts +14 -0
- package/dist/types/chartType/radar/radar.d.ts +10 -1
- package/dist/types/chartType/radar/zRadar.d.ts +14 -0
- package/dist/types/chartType/rose/rose.d.ts +10 -1
- package/dist/types/chartType/rose/zRose.d.ts +14 -0
- package/dist/types/chartType/roseParallel/roseParallel.d.ts +10 -1
- package/dist/types/chartType/roseParallel/zRoseParallel.d.ts +14 -0
- package/dist/types/chartType/scatter/scatter.d.ts +88 -5
- package/dist/types/chartType/scatter/zScatter.d.ts +155 -0
- package/dist/types/index.d.ts +2 -1
- package/dist/types/properties/chartType/chartType.d.ts +1 -3
- package/dist/types/properties/config/config.d.ts +0 -307
- package/dist/types/properties/datasetReshapeInfo/datasetReshapeInfo.d.ts +13 -38
- package/dist/types/properties/datasetReshapeInfo/index.d.ts +1 -1
- package/dist/types/properties/datasetReshapeInfo/zDatasetReshapeInfo.d.ts +43 -0
- package/dist/types/properties/encoding/encoding.d.ts +49 -16
- package/dist/types/properties/encoding/index.d.ts +2 -2
- package/dist/types/properties/encoding/zEncoding.d.ts +29 -0
- package/dist/types/properties/measures/index.d.ts +4 -2
- package/dist/types/properties/measures/scatterMeasures.d.ts +6 -0
- package/dist/types/properties/measures/zScatterMeasures.d.ts +283 -0
- package/dist/types/properties/theme/customTheme.d.ts +0 -306
- package/dist/types/vseed.d.ts +2 -16816
- package/dist/types/zVseed.d.ts +15738 -0
- package/dist/umd/index.js +1113 -1855
- package/dist/umd/index.js.map +1 -1
- package/package.json +13 -5
- package/dist/builder/register/chartType/areaRange.d.ts +0 -1
- package/dist/dataReshape/dataReshapeFor1D.d.ts +0 -19
- package/dist/dataReshape/dataReshapeFor1D1M.d.ts +0 -19
- package/dist/dataReshape/dataReshapeFor1D2M.d.ts +0 -19
- package/dist/dataReshape/dataReshapeFor2D1M.d.ts +0 -19
- package/dist/dataReshape/dataReshapeFor2D1M0Name.d.ts +0 -19
- package/dist/dataReshape/unfoldZeroDimensions.d.ts +0 -10
- package/dist/pipeline/advanced/chart/pipeline/areaRange.d.ts +0 -2
- package/dist/pipeline/advanced/chart/pipes/encoding/encodingRose.d.ts +0 -2
- package/dist/pipeline/advanced/chart/pipes/encoding/encodingXY.d.ts +0 -2
- package/dist/pipeline/advanced/chart/pipes/encoding/encodingXYY.d.ts +0 -2
- package/dist/pipeline/advanced/chart/pipes/encoding/encodingYX.d.ts +0 -2
- package/dist/pipeline/advanced/chart/pipes/encoding/encodingYY.d.ts +0 -2
- package/dist/pipeline/advanced/chart/pipes/init/autoMeasuresBy2M1Group.d.ts +0 -8
- package/dist/pipeline/advanced/chart/pipes/reshape/pivotReshapeTo1D.d.ts +0 -8
- package/dist/pipeline/advanced/chart/pipes/reshape/pivotReshapeTo1D1M.d.ts +0 -8
- package/dist/pipeline/advanced/chart/pipes/reshape/pivotReshapeTo1D2M.d.ts +0 -8
- package/dist/pipeline/advanced/chart/pipes/reshape/pivotReshapeTo2D1M.d.ts +0 -8
- package/dist/pipeline/advanced/chart/pipes/reshape/pivotReshapeTo2D1M0Name.d.ts +0 -8
- package/dist/pipeline/advanced/chart/pipes/reshape/pivotReshapeTo2D2M.d.ts +0 -8
- package/dist/pipeline/advanced/chart/pipes/reshape/reshapeTo1D.d.ts +0 -8
- package/dist/pipeline/advanced/chart/pipes/reshape/reshapeTo1D1M.d.ts +0 -8
- package/dist/pipeline/advanced/chart/pipes/reshape/reshapeTo1D2M.d.ts +0 -8
- package/dist/pipeline/advanced/chart/pipes/reshape/reshapeTo2D1M.d.ts +0 -8
- package/dist/pipeline/advanced/chart/pipes/reshape/reshapeTo2D1M0Name.d.ts +0 -8
- package/dist/pipeline/advanced/chart/pipes/reshape/reshapeTo2D2M.d.ts +0 -8
- package/dist/pipeline/spec/chart/pipeline/areaRange.d.ts +0 -1
- package/dist/pipeline/spec/chart/pipes/init/areaRange.d.ts +0 -4
- package/dist/pipeline/spec/chart/pipes/legend/colorLegend.d.ts +0 -2
- package/dist/pipeline/spec/chart/pipes/tooltip/tooltipAreaRange.d.ts +0 -2
- package/dist/types/chartType/areaRange/areaRange.d.ts +0 -151
- package/dist/types/chartType/areaRange/index.d.ts +0 -2
- package/dist/types/chartType/areaRange/zAreaRange.d.ts +0 -1427
- /package/dist/pipeline/spec/chart/pipes/init/{initDualAxis.d.ts → dualAxis.d.ts} +0 -0
package/dist/umd/index.js
CHANGED
@@ -40,14 +40,16 @@
|
|
40
40
|
isTable: ()=>isTable,
|
41
41
|
zDonut: ()=>zDonut,
|
42
42
|
zDualMeasures: ()=>zDualMeasures,
|
43
|
-
|
43
|
+
XEncoding: ()=>XEncoding,
|
44
44
|
findFirstMeasure: ()=>findFirstMeasure,
|
45
45
|
scatterAdvancedPipeline: ()=>scatterAdvancedPipeline,
|
46
|
+
zPie: ()=>zPie,
|
46
47
|
zRoseConfig: ()=>zRoseConfig,
|
47
48
|
updateSpec: ()=>updateSpec,
|
48
49
|
zCrosshairRect: ()=>zCrosshairRect,
|
49
50
|
scatterSpecPipeline: ()=>scatterSpecPipeline,
|
50
51
|
intl: ()=>intl,
|
52
|
+
zScatterMeasures: ()=>zScatterMeasures,
|
51
53
|
columnPercentAdvancedPipeline: ()=>columnPercentAdvancedPipeline,
|
52
54
|
zColumnConfig: ()=>zColumnConfig,
|
53
55
|
zAnnotation: ()=>zAnnotation,
|
@@ -57,12 +59,11 @@
|
|
57
59
|
pivotTableAdvancedPipeline: ()=>pivotTableAdvancedPipeline,
|
58
60
|
isMeasures: ()=>isMeasures,
|
59
61
|
zYBandAxis: ()=>zYBandAxis,
|
60
|
-
dataReshapeFor1D2M: ()=>dataReshapeFor1D2M,
|
61
62
|
zAnnotationHorizontalLine: ()=>zAnnotationHorizontalLine,
|
63
|
+
zYLinearAxis: ()=>zYLinearAxis,
|
62
64
|
zMarkStyle: ()=>zMarkStyle,
|
63
65
|
registerFunnel: ()=>registerFunnel,
|
64
66
|
Separator: ()=>Separator,
|
65
|
-
zYLinearAxis: ()=>zYLinearAxis,
|
66
67
|
columnAdvancedPipeline: ()=>columnAdvancedPipeline,
|
67
68
|
zLabel: ()=>zLabel,
|
68
69
|
registerColumn: ()=>registerColumn,
|
@@ -75,16 +76,16 @@
|
|
75
76
|
zDimensionTree: ()=>zDimensionTree,
|
76
77
|
roseParallelSpecPipeline: ()=>roseParallelSpecPipeline,
|
77
78
|
zLineStyle: ()=>zLineStyle,
|
78
|
-
dataReshapeFor1D1M: ()=>dataReshapeFor1D1M,
|
79
79
|
registerArea: ()=>registerArea,
|
80
80
|
zRoseParallel: ()=>zRoseParallel,
|
81
|
+
MeasureName: ()=>MeasureName,
|
81
82
|
zDataset: ()=>zDataset,
|
82
83
|
UnfoldDimensionGroupId: ()=>UnfoldDimensionGroupId,
|
83
84
|
zNumFormat: ()=>zNumFormat,
|
84
85
|
barPercentAdvancedPipeline: ()=>barPercentAdvancedPipeline,
|
85
86
|
findAllDimensions: ()=>findAllDimensions,
|
87
|
+
FoldYMeasureValue: ()=>FoldYMeasureValue,
|
86
88
|
findDimensionById: ()=>findDimensionById,
|
87
|
-
zAreaRangeConfig: ()=>zAreaRangeConfig,
|
88
89
|
zPivotTableConfig: ()=>zPivotTableConfig,
|
89
90
|
zArea: ()=>zArea,
|
90
91
|
zColumnParallel: ()=>zColumnParallel,
|
@@ -96,25 +97,26 @@
|
|
96
97
|
registerAreaPercent: ()=>registerAreaPercent,
|
97
98
|
zHeatmap: ()=>zHeatmap,
|
98
99
|
zBarPercent: ()=>zBarPercent,
|
100
|
+
zScatterMeasure: ()=>zScatterMeasure,
|
99
101
|
zTheme: ()=>zTheme,
|
100
102
|
zDatum: ()=>zDatum,
|
101
103
|
barAdvancedPipeline: ()=>barAdvancedPipeline,
|
102
104
|
zCustomThemeConfig: ()=>zCustomThemeConfig,
|
103
105
|
registerColumnPercent: ()=>registerColumnPercent,
|
104
106
|
registerHeatmap: ()=>registerHeatmap,
|
105
|
-
registerAreaRange: ()=>registerAreaRange,
|
106
|
-
roseSpecPipeline: ()=>roseSpecPipeline,
|
107
|
-
dataReshapeFor2D1M0Name: ()=>dataReshapeFor2D1M0Name,
|
108
107
|
registerBarPercent: ()=>registerBarPercent,
|
108
|
+
roseSpecPipeline: ()=>roseSpecPipeline,
|
109
|
+
ColorIdEncoding: ()=>ColorIdEncoding,
|
110
|
+
zCrosshairLine: ()=>zCrosshairLine,
|
109
111
|
registerLightTheme: ()=>registerLightTheme,
|
110
112
|
roseAdvancedPipeline: ()=>roseAdvancedPipeline,
|
111
113
|
zBarParallel: ()=>zBarParallel,
|
112
114
|
registerDarkTheme: ()=>registerDarkTheme,
|
113
115
|
registerPivotTable: ()=>registerPivotTable,
|
114
116
|
isPartialDatumSelector: ()=>isPartialDatumSelector,
|
117
|
+
pieSpecPipeline: ()=>pieSpecPipeline,
|
115
118
|
isDimensionGroup: ()=>isDimensionGroup,
|
116
119
|
dualAxisSpecPipeline: ()=>dualAxisSpecPipeline,
|
117
|
-
pieSpecPipeline: ()=>pieSpecPipeline,
|
118
120
|
tableAdvancedPipeline: ()=>tableAdvancedPipeline,
|
119
121
|
barSpecPipeline: ()=>barSpecPipeline,
|
120
122
|
zAnnotationVerticalLine: ()=>zAnnotationVerticalLine,
|
@@ -123,15 +125,15 @@
|
|
123
125
|
unfoldDimensions: ()=>unfoldDimensions,
|
124
126
|
roseParallelAdvancedPipeline: ()=>roseParallelAdvancedPipeline,
|
125
127
|
registerTable: ()=>registerTable,
|
126
|
-
|
128
|
+
Builder: ()=>Builder,
|
127
129
|
isMeasureGroup: ()=>isMeasureGroup,
|
128
|
-
|
130
|
+
YEncoding: ()=>YEncoding,
|
129
131
|
registerAll: ()=>registerAll,
|
130
132
|
registerBar: ()=>registerBar,
|
131
133
|
isVChart: ()=>isVChart,
|
132
134
|
radarSpecPipeline: ()=>radarSpecPipeline,
|
133
|
-
|
134
|
-
|
135
|
+
findFirstDimension: ()=>findFirstDimension,
|
136
|
+
autoFormatter: ()=>autoFormatter,
|
135
137
|
zMeasureTree: ()=>zMeasureTree,
|
136
138
|
zPieConfig: ()=>zPieConfig,
|
137
139
|
registerLine: ()=>registerLine,
|
@@ -165,8 +167,9 @@
|
|
165
167
|
zRadarConfig: ()=>zRadarConfig,
|
166
168
|
zAnnotationArea: ()=>zAnnotationArea,
|
167
169
|
zStackCornerRadius: ()=>zStackCornerRadius,
|
168
|
-
|
170
|
+
DetailEncoding: ()=>DetailEncoding,
|
169
171
|
zRose: ()=>zRose,
|
172
|
+
zUnfoldInfo: ()=>zUnfoldInfo,
|
170
173
|
columnParallelSpecPipeline: ()=>columnParallelSpecPipeline,
|
171
174
|
i18n: ()=>i18n,
|
172
175
|
zPointStyle: ()=>zPointStyle,
|
@@ -188,30 +191,30 @@
|
|
188
191
|
FoldPrimaryMeasureValue: ()=>FoldPrimaryMeasureValue,
|
189
192
|
zTableConfig: ()=>zTableConfig,
|
190
193
|
zXBandAxis: ()=>zXBandAxis,
|
191
|
-
dataReshapeFor1D: ()=>dataReshapeFor1D,
|
192
194
|
zColumnPercentConfig: ()=>zColumnPercentConfig,
|
193
195
|
findMeasureById: ()=>findMeasureById,
|
194
196
|
zVSeed: ()=>zVSeed,
|
197
|
+
AngleEncoding: ()=>AngleEncoding,
|
195
198
|
areaPercentAdvancedPipeline: ()=>areaPercentAdvancedPipeline,
|
196
199
|
radarAdvancedPipeline: ()=>radarAdvancedPipeline,
|
197
|
-
zBackgroundColor: ()=>zBackgroundColor,
|
198
200
|
zAreaPercentConfig: ()=>zAreaPercentConfig,
|
201
|
+
zBackgroundColor: ()=>zBackgroundColor,
|
199
202
|
registerBarParallel: ()=>registerBarParallel,
|
200
203
|
registerRadar: ()=>registerRadar,
|
201
|
-
|
204
|
+
zEncodings: ()=>zEncodings,
|
202
205
|
isDimension: ()=>isDimension,
|
203
206
|
pivotTableSpecPipeline: ()=>pivotTableSpecPipeline,
|
204
|
-
|
205
|
-
|
207
|
+
zLocale: ()=>zLocale,
|
208
|
+
FoldXMeasureValue: ()=>FoldXMeasureValue,
|
206
209
|
dualAxisAdvancedPipeline: ()=>dualAxisAdvancedPipeline,
|
207
210
|
registerScatter: ()=>registerScatter,
|
208
|
-
|
209
|
-
|
211
|
+
zEncoding: ()=>zEncoding,
|
212
|
+
ColorEncoding: ()=>ColorEncoding,
|
210
213
|
autoNumFormatter: ()=>autoNumFormatter,
|
211
|
-
|
214
|
+
measureDepth: ()=>measureDepth,
|
212
215
|
tableSpecPipeline: ()=>tableSpecPipeline,
|
216
|
+
zAdvancedVSeed: ()=>zAdvancedVSeed,
|
213
217
|
zConfig: ()=>zConfig,
|
214
|
-
zEncoding: ()=>zEncoding,
|
215
218
|
zBarStyle: ()=>zBarStyle,
|
216
219
|
zMeasure: ()=>zMeasure,
|
217
220
|
zRoseParallelConfig: ()=>zRoseParallelConfig,
|
@@ -222,20 +225,20 @@
|
|
222
225
|
donutAdvancedPipeline: ()=>donutAdvancedPipeline,
|
223
226
|
zColumnPercent: ()=>zColumnPercent,
|
224
227
|
registerPie: ()=>registerPie,
|
225
|
-
dataReshapeFor2D1M: ()=>dataReshapeFor2D1M,
|
226
228
|
foldMeasures: ()=>foldMeasures,
|
227
229
|
isPivotTable: ()=>isPivotTable,
|
228
230
|
zFunnel: ()=>zFunnel,
|
229
231
|
zScatter: ()=>zScatter,
|
232
|
+
zScatterConfig: ()=>zScatterConfig,
|
230
233
|
zBarParallelConfig: ()=>zBarParallelConfig,
|
231
234
|
barParallelAdvancedPipeline: ()=>barParallelAdvancedPipeline,
|
232
235
|
FoldMeasureValue: ()=>FoldMeasureValue,
|
233
236
|
barPercentSpecPipeline: ()=>barPercentSpecPipeline,
|
234
237
|
lineAdvancedPipeline: ()=>lineAdvancedPipeline,
|
235
|
-
|
238
|
+
dataReshapeByEncoding: ()=>dataReshapeByEncoding,
|
236
239
|
lineSpecPipeline: ()=>lineSpecPipeline,
|
237
240
|
isDimensions: ()=>isDimensions,
|
238
|
-
|
241
|
+
zBarPercentConfig: ()=>zBarPercentConfig,
|
239
242
|
createFormatter: ()=>createFormatter,
|
240
243
|
zDimensionGroup: ()=>zDimensionGroup,
|
241
244
|
isMeasureSelector: ()=>isMeasureSelector,
|
@@ -1494,13 +1497,26 @@
|
|
1494
1497
|
const isVChart = (vseed)=>!isVTable(vseed);
|
1495
1498
|
const isPivotChart = (vseed)=>{
|
1496
1499
|
if (isVTable(vseed)) return false;
|
1497
|
-
if ('dualAxis' === vseed.chartType) {
|
1498
|
-
|
1499
|
-
|
1500
|
-
|
1501
|
-
|
1500
|
+
if ('dualAxis' === vseed.chartType || 'scatter' === vseed.chartType) {
|
1501
|
+
const { dimensions = [] } = vseed;
|
1502
|
+
const hasRowOrColumnDimension = dimensions && dimensions.some((dimension)=>'rowDimension' === dimension.location || 'columnDimension' === dimension.location);
|
1503
|
+
if (hasRowOrColumnDimension) return true;
|
1504
|
+
if ('scatter' === vseed.chartType) {
|
1505
|
+
if (vseed.measures) {
|
1506
|
+
const depth = measureDepth(vseed.measures);
|
1507
|
+
if (3 === depth) return true;
|
1508
|
+
return false;
|
1509
|
+
}
|
1510
|
+
if (vseed.scatterMeasures && vseed.scatterMeasures.length > 1) return true;
|
1511
|
+
}
|
1512
|
+
if ('dualAxis' === vseed.chartType) {
|
1513
|
+
if (vseed.measures) {
|
1514
|
+
const depth = measureDepth(vseed.measures);
|
1515
|
+
if (3 === depth) return true;
|
1516
|
+
return false;
|
1517
|
+
}
|
1518
|
+
if (vseed.dualMeasures && vseed.dualMeasures.length > 1) return true;
|
1502
1519
|
}
|
1503
|
-
if (vseed.dualMeasures && vseed.dualMeasures.length > 1) return true;
|
1504
1520
|
return false;
|
1505
1521
|
}
|
1506
1522
|
const { measures = [], dimensions = [] } = vseed;
|
@@ -1579,6 +1595,24 @@
|
|
1579
1595
|
alias: '',
|
1580
1596
|
children: []
|
1581
1597
|
});
|
1598
|
+
const ORIGINAL_DATA = '__OriginalData__';
|
1599
|
+
const Separator = '-';
|
1600
|
+
const FoldMeasureName = '__MeaName__';
|
1601
|
+
const FoldMeasureId = '__MeaId__';
|
1602
|
+
const FoldMeasureValue = '__MeaValue__';
|
1603
|
+
const MeasureName = FoldMeasureName;
|
1604
|
+
const FoldPrimaryMeasureValue = '__MeaPrimaryValue__';
|
1605
|
+
const FoldSecondaryMeasureValue = '__MeaSecondaryValue__';
|
1606
|
+
const FoldXMeasureValue = '__MeaXValue__';
|
1607
|
+
const FoldYMeasureValue = '__MeaYValue__';
|
1608
|
+
const XEncoding = '__Dim_X__';
|
1609
|
+
const YEncoding = '__Dim_Y__';
|
1610
|
+
const AngleEncoding = '__Dim_Angle__';
|
1611
|
+
const DetailEncoding = '__Dim_Detail__';
|
1612
|
+
const ColorEncoding = '__Dim_Color__';
|
1613
|
+
const ColorIdEncoding = '__Dim_ColorId__';
|
1614
|
+
const UnfoldDimensionGroup = '__DimGroup__';
|
1615
|
+
const UnfoldDimensionGroupId = '__DimGroupID__';
|
1582
1616
|
const autoDimensions_autoDimensions = (advancedVSeed, context)=>{
|
1583
1617
|
const result = {
|
1584
1618
|
...advancedVSeed
|
@@ -1586,6 +1620,10 @@
|
|
1586
1620
|
const { vseed } = context;
|
1587
1621
|
const { dimensions, dataset } = vseed;
|
1588
1622
|
const measures = findAllMeasures(advancedVSeed.measures);
|
1623
|
+
const MeaName = {
|
1624
|
+
id: MeasureName,
|
1625
|
+
alias: intl.i18n`指标名称`
|
1626
|
+
};
|
1589
1627
|
if (!dataset) throw new Error('dataset is required');
|
1590
1628
|
if (0 === dataset.length) return result;
|
1591
1629
|
if (dimensions) {
|
@@ -1593,6 +1631,8 @@
|
|
1593
1631
|
location: 'dimension',
|
1594
1632
|
...dim
|
1595
1633
|
}));
|
1634
|
+
if (result.dimensions.some((dim)=>dim.id === MeasureName)) return result;
|
1635
|
+
result.dimensions.push(MeaName);
|
1596
1636
|
return result;
|
1597
1637
|
}
|
1598
1638
|
const top100dataset = dataset.slice(0, 100);
|
@@ -1609,23 +1649,51 @@
|
|
1609
1649
|
alias: dim,
|
1610
1650
|
location: 'dimension'
|
1611
1651
|
}));
|
1652
|
+
result.dimensions.push(MeaName);
|
1612
1653
|
return result;
|
1613
1654
|
};
|
1655
|
+
const encodingForColumn = (advancedVSeed, context)=>{
|
1656
|
+
const { vseed } = context;
|
1657
|
+
const { dimensions } = advancedVSeed;
|
1658
|
+
if (!dimensions) return advancedVSeed;
|
1659
|
+
const encoding = vseed.encoding;
|
1660
|
+
if (encoding) {
|
1661
|
+
const x = encoding.x || [];
|
1662
|
+
const detail = encoding.detail || [];
|
1663
|
+
const color = encoding.color || [];
|
1664
|
+
const mergedDetail = [
|
1665
|
+
...color.filter((d)=>!x.includes(d)),
|
1666
|
+
...detail
|
1667
|
+
];
|
1668
|
+
return {
|
1669
|
+
...advancedVSeed,
|
1670
|
+
encoding: {
|
1671
|
+
...encoding,
|
1672
|
+
detail: mergedDetail
|
1673
|
+
}
|
1674
|
+
};
|
1675
|
+
}
|
1676
|
+
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
1677
|
+
const mergedEncoding = {
|
1678
|
+
x: dimensions.slice(0, 1).map((item)=>item.id),
|
1679
|
+
color: dimensions.slice(1).map((item)=>item.id),
|
1680
|
+
detail: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
|
1681
|
+
tooltip: dimensions.map((item)=>item.id),
|
1682
|
+
label: [],
|
1683
|
+
row: [],
|
1684
|
+
column: []
|
1685
|
+
};
|
1686
|
+
return {
|
1687
|
+
...advancedVSeed,
|
1688
|
+
encoding: mergedEncoding
|
1689
|
+
};
|
1690
|
+
};
|
1614
1691
|
const pivotAdapter = (pipeline, pivotPipeline)=>(advancedVSeed, context)=>{
|
1615
1692
|
const { vseed } = context;
|
1616
1693
|
const usePivotChart = isPivotChart(vseed);
|
1617
1694
|
if (usePivotChart) return execPipeline(pivotPipeline, context, advancedVSeed);
|
1618
1695
|
return execPipeline(pipeline, context, advancedVSeed);
|
1619
1696
|
};
|
1620
|
-
const FoldMeasureName = '__MeaName__';
|
1621
|
-
const FoldMeasureId = '__MeaId__';
|
1622
|
-
const FoldMeasureValue = '__MeaValue__';
|
1623
|
-
const FoldPrimaryMeasureValue = '__MeaPrimaryValue__';
|
1624
|
-
const FoldSecondaryMeasureValue = '__MeaSecondaryValue__';
|
1625
|
-
const UnfoldDimensionGroup = '__DimGroup__';
|
1626
|
-
const UnfoldDimensionGroupId = '__DimGroupID__';
|
1627
|
-
const Separator = '-';
|
1628
|
-
const ORIGINAL_DATA = '__OriginalData__';
|
1629
1697
|
function chunk_AIG3BDKO_i(...e) {
|
1630
1698
|
return chunk_WIMGWYZL_u(chunk_AIG3BDKO_n, e);
|
1631
1699
|
}
|
@@ -1676,79 +1744,53 @@
|
|
1676
1744
|
foldInfo
|
1677
1745
|
};
|
1678
1746
|
};
|
1679
|
-
const unfoldDimensions = (dataset, dimensions,
|
1680
|
-
|
1681
|
-
const dimensionsToBeUnfolded = dimensions.slice(unfoldStartIndex);
|
1747
|
+
const unfoldDimensions = (dataset, dimensions, encoding, options)=>{
|
1748
|
+
const { foldMeasureId, separator, colorItemAsId } = options;
|
1682
1749
|
const unfoldInfo = {
|
1683
|
-
|
1684
|
-
|
1750
|
+
encodingAngle: AngleEncoding,
|
1751
|
+
encodingX: XEncoding,
|
1752
|
+
encodingY: YEncoding,
|
1753
|
+
encodingDetail: DetailEncoding,
|
1754
|
+
encodingColor: ColorEncoding,
|
1755
|
+
encodingColorId: ColorIdEncoding,
|
1685
1756
|
colorItems: [],
|
1686
1757
|
colorIdMap: {}
|
1687
1758
|
};
|
1688
|
-
|
1689
|
-
|
1690
|
-
|
1691
|
-
|
1692
|
-
|
1693
|
-
|
1694
|
-
|
1695
|
-
|
1696
|
-
};
|
1697
|
-
const colorItems = [];
|
1698
|
-
const colorMap = {};
|
1759
|
+
const { color, x, y, detail, angle } = encoding;
|
1760
|
+
const angleDimensions = angle ? dimensions.filter((dim)=>angle.includes(dim.id)) : [];
|
1761
|
+
const xDimensions = x ? dimensions.filter((dim)=>x.includes(dim.id)) : [];
|
1762
|
+
const yDimensions = y ? dimensions.filter((dim)=>y.includes(dim.id)) : [];
|
1763
|
+
const colorDimensions = color ? dimensions.filter((dim)=>color.includes(dim.id)) : [];
|
1764
|
+
const detailDimensions = detail ? dimensions.filter((dim)=>detail.includes(dim.id)) : [];
|
1765
|
+
const colorItems = new Set();
|
1766
|
+
const colorIdMap = {};
|
1699
1767
|
for(let i = 0; i < dataset.length; i++){
|
1700
1768
|
const datum = dataset[i];
|
1701
|
-
|
1702
|
-
|
1703
|
-
|
1704
|
-
|
1705
|
-
|
1706
|
-
datum[
|
1707
|
-
datum[
|
1708
|
-
|
1709
|
-
|
1769
|
+
applyEncoding(AngleEncoding, angleDimensions, datum, separator);
|
1770
|
+
applyEncoding(XEncoding, xDimensions, datum, separator);
|
1771
|
+
applyEncoding(YEncoding, yDimensions, datum, separator);
|
1772
|
+
applyEncoding(ColorEncoding, colorDimensions, datum, separator);
|
1773
|
+
applyEncoding(DetailEncoding, detailDimensions, datum, separator);
|
1774
|
+
if (!datum[ColorEncoding]) continue;
|
1775
|
+
const measureId = String(datum[foldMeasureId]);
|
1776
|
+
const colorItem = String(datum[ColorEncoding]);
|
1777
|
+
const colorId = colorItemAsId ? colorItem : measureId ? [
|
1778
|
+
colorItem,
|
1779
|
+
measureId
|
1780
|
+
].join(separator) : colorItem;
|
1781
|
+
datum[ColorIdEncoding] = colorId;
|
1782
|
+
colorIdMap[colorId] = colorItem;
|
1783
|
+
colorItems.add(colorId);
|
1710
1784
|
}
|
1711
|
-
unfoldInfo.colorItems =
|
1712
|
-
unfoldInfo.colorIdMap =
|
1785
|
+
unfoldInfo.colorItems = Array.from(colorItems);
|
1786
|
+
unfoldInfo.colorIdMap = colorIdMap;
|
1713
1787
|
return {
|
1714
1788
|
dataset,
|
1715
1789
|
unfoldInfo
|
1716
1790
|
};
|
1717
1791
|
};
|
1718
|
-
const
|
1719
|
-
|
1720
|
-
const unfoldInfo = {
|
1721
|
-
groupName: unfoldGroupName,
|
1722
|
-
groupId: unfoldGroupId,
|
1723
|
-
colorItems: [],
|
1724
|
-
colorIdMap: {}
|
1725
|
-
};
|
1726
|
-
if (0 === measures.length) return {
|
1727
|
-
dataset,
|
1728
|
-
unfoldInfo: {
|
1729
|
-
groupName: unfoldGroupName,
|
1730
|
-
groupId: unfoldGroupId,
|
1731
|
-
colorItems: [],
|
1732
|
-
colorIdMap: {}
|
1733
|
-
}
|
1734
|
-
};
|
1735
|
-
const colorItems = [];
|
1736
|
-
const colorMap = {};
|
1737
|
-
for(let i = 0; i < dataset.length; i++){
|
1738
|
-
const datum = dataset[i];
|
1739
|
-
const colorName = measureName;
|
1740
|
-
const colorId = measureName;
|
1741
|
-
datum[unfoldGroupName] = colorName;
|
1742
|
-
datum[unfoldGroupId] = colorId;
|
1743
|
-
colorItems.push(colorId);
|
1744
|
-
colorMap[colorId] = colorName;
|
1745
|
-
}
|
1746
|
-
unfoldInfo.colorItems = chunk_QJLMYOTX_i(colorItems);
|
1747
|
-
unfoldInfo.colorIdMap = colorMap;
|
1748
|
-
return {
|
1749
|
-
dataset,
|
1750
|
-
unfoldInfo
|
1751
|
-
};
|
1792
|
+
const applyEncoding = (encoding, dimensions, datum, separator)=>{
|
1793
|
+
if (encoding && dimensions.length) datum[encoding] = dimensions.map((dim)=>String(datum[dim.id])).join(separator);
|
1752
1794
|
};
|
1753
1795
|
const emptyReshapeResult = {
|
1754
1796
|
dataset: [],
|
@@ -1759,69 +1801,47 @@
|
|
1759
1801
|
measureValue: ''
|
1760
1802
|
},
|
1761
1803
|
unfoldInfo: {
|
1762
|
-
|
1763
|
-
|
1804
|
+
encodingAngle: AngleEncoding,
|
1805
|
+
encodingX: XEncoding,
|
1806
|
+
encodingY: YEncoding,
|
1807
|
+
encodingDetail: DetailEncoding,
|
1808
|
+
encodingColor: ColorEncoding,
|
1809
|
+
encodingColorId: ColorIdEncoding,
|
1764
1810
|
colorItems: [],
|
1765
1811
|
colorIdMap: {}
|
1766
1812
|
}
|
1767
1813
|
};
|
1768
|
-
const
|
1769
|
-
const { foldMeasureId = FoldMeasureId, foldMeasureName = FoldMeasureName, foldMeasureValue = FoldMeasureValue,
|
1814
|
+
const dataReshapeByEncoding = (dataset, dimensions, measures, encoding, options)=>{
|
1815
|
+
const { foldMeasureId = FoldMeasureId, foldMeasureName = FoldMeasureName, foldMeasureValue = FoldMeasureValue, colorItemAsId = false } = options || {};
|
1770
1816
|
if (0 === dimensions.length && 0 === measures.length) return emptyReshapeResult;
|
1771
1817
|
const { dataset: foldedDataset, foldInfo } = foldMeasures(dataset, measures, foldMeasureId, foldMeasureName, foldMeasureValue);
|
1772
|
-
|
1773
|
-
|
1774
|
-
|
1775
|
-
|
1776
|
-
|
1777
|
-
|
1778
|
-
|
1779
|
-
|
1780
|
-
|
1781
|
-
|
1782
|
-
unfoldInfo
|
1783
|
-
};
|
1784
|
-
}
|
1785
|
-
{
|
1786
|
-
const onlyOneMeasure = 1 === measures.length;
|
1787
|
-
const onlyOneDimension = 1 === dimensions.length;
|
1788
|
-
const dims = [
|
1789
|
-
...dimensions
|
1790
|
-
];
|
1791
|
-
if (!onlyOneMeasure || onlyOneDimension) dims.push({
|
1792
|
-
id: foldMeasureName,
|
1793
|
-
alias: i18n`指标名称`,
|
1794
|
-
location: 'dimension'
|
1795
|
-
});
|
1796
|
-
const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, dims, [
|
1797
|
-
{
|
1798
|
-
id: foldMeasureValue,
|
1799
|
-
alias: i18n`指标值`
|
1800
|
-
}
|
1801
|
-
], 1, unfoldDimensionGroup, unfoldDimensionGroupId, foldMeasureId);
|
1802
|
-
return {
|
1803
|
-
dataset: finalDataset,
|
1804
|
-
foldInfo,
|
1805
|
-
unfoldInfo
|
1806
|
-
};
|
1807
|
-
}
|
1818
|
+
const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, dimensions, encoding, {
|
1819
|
+
foldMeasureId,
|
1820
|
+
separator: Separator,
|
1821
|
+
colorItemAsId
|
1822
|
+
});
|
1823
|
+
return {
|
1824
|
+
dataset: finalDataset,
|
1825
|
+
foldInfo,
|
1826
|
+
unfoldInfo
|
1827
|
+
};
|
1808
1828
|
};
|
1809
|
-
const
|
1829
|
+
const reshapeWithEncoding = (advancedVSeed, context)=>{
|
1810
1830
|
const result = {
|
1811
1831
|
...advancedVSeed
|
1812
1832
|
};
|
1813
1833
|
const { vseed } = context;
|
1814
|
-
const { dataset } = vseed;
|
1815
|
-
const { dimensions, measures } = advancedVSeed;
|
1816
|
-
if (!measures || !dimensions || !dataset) return result;
|
1834
|
+
const { dataset, chartType } = vseed;
|
1835
|
+
const { dimensions, measures, encoding } = advancedVSeed;
|
1836
|
+
if (!measures || !dimensions || !dataset || !encoding) return result;
|
1817
1837
|
if (0 === measures.length) throw new Error('measures can not be empty');
|
1818
|
-
const { dataset: newDatasets, foldInfo, unfoldInfo } =
|
1838
|
+
const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, measures, encoding);
|
1819
1839
|
return {
|
1820
1840
|
...result,
|
1821
1841
|
dataset: newDatasets,
|
1822
1842
|
datasetReshapeInfo: [
|
1823
1843
|
{
|
1824
|
-
id:
|
1844
|
+
id: String(chartType),
|
1825
1845
|
index: 0,
|
1826
1846
|
foldInfo,
|
1827
1847
|
unfoldInfo
|
@@ -1831,31 +1851,27 @@
|
|
1831
1851
|
measures
|
1832
1852
|
};
|
1833
1853
|
};
|
1834
|
-
const
|
1854
|
+
const pivotReshapeWithEncoding = (advancedVSeed, context)=>{
|
1835
1855
|
const result = {
|
1836
1856
|
...advancedVSeed
|
1837
1857
|
};
|
1838
1858
|
const { vseed } = context;
|
1839
1859
|
const { dataset } = vseed;
|
1840
|
-
const { measures } = advancedVSeed;
|
1841
|
-
|
1842
|
-
if (
|
1860
|
+
const { dimensions, measures, encoding } = advancedVSeed;
|
1861
|
+
if (!measures || !dimensions || !dataset || !encoding) return result;
|
1862
|
+
if (0 === measures.length) throw new Error('measures can not be empty');
|
1843
1863
|
const measureGroups = [];
|
1844
1864
|
if (measures) measures.forEach((measure)=>{
|
1845
1865
|
if (measure.children && measure.children.length > 0) measureGroups.push(measure);
|
1846
1866
|
});
|
1847
|
-
const
|
1848
|
-
const newDatasets = [];
|
1867
|
+
const datasets = [];
|
1849
1868
|
const datasetReshapeInfo = [];
|
1850
1869
|
measureGroups.forEach((measureGroup, index)=>{
|
1851
1870
|
const measures = measureGroup.children;
|
1852
1871
|
if (!measures) return;
|
1853
1872
|
const groupId = measureGroup.id;
|
1854
|
-
const { dataset: newSubDataset, foldInfo, unfoldInfo } =
|
1855
|
-
|
1856
|
-
foldMeasureName: FoldMeasureName,
|
1857
|
-
foldMeasureValue: FoldMeasureValue + groupId,
|
1858
|
-
unfoldDimensionGroup: UnfoldDimensionGroup
|
1873
|
+
const { dataset: newSubDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, measures, encoding, {
|
1874
|
+
foldMeasureValue: `${FoldMeasureValue}${groupId}`
|
1859
1875
|
});
|
1860
1876
|
const reshapeInfo = {
|
1861
1877
|
id: groupId,
|
@@ -1863,52 +1879,15 @@
|
|
1863
1879
|
foldInfo,
|
1864
1880
|
unfoldInfo
|
1865
1881
|
};
|
1866
|
-
|
1882
|
+
datasets.push(newSubDataset);
|
1867
1883
|
datasetReshapeInfo.push(reshapeInfo);
|
1868
1884
|
});
|
1869
1885
|
return {
|
1870
1886
|
...result,
|
1871
|
-
dataset:
|
1887
|
+
dataset: datasets,
|
1872
1888
|
datasetReshapeInfo: datasetReshapeInfo
|
1873
1889
|
};
|
1874
1890
|
};
|
1875
|
-
const encodingXY = (advancedVSeed)=>{
|
1876
|
-
const result = {
|
1877
|
-
...advancedVSeed
|
1878
|
-
};
|
1879
|
-
const { datasetReshapeInfo, dimensions } = advancedVSeed;
|
1880
|
-
if (!datasetReshapeInfo || !dimensions) return result;
|
1881
|
-
const xDimension = dimensions.find((item)=>'rowDimension' !== item.location && 'columnDimension' !== item.location) || dimensions[0];
|
1882
|
-
const isZeroDimension = 0 === dimensions.length;
|
1883
|
-
const encoding = datasetReshapeInfo.reduce((prev, cur)=>{
|
1884
|
-
const { foldInfo, unfoldInfo } = cur;
|
1885
|
-
const x = [
|
1886
|
-
isZeroDimension ? foldInfo.measureName : xDimension?.id
|
1887
|
-
];
|
1888
|
-
const y = [
|
1889
|
-
foldInfo.measureValue
|
1890
|
-
];
|
1891
|
-
const group = [
|
1892
|
-
unfoldInfo.groupId
|
1893
|
-
];
|
1894
|
-
const color = [
|
1895
|
-
foldInfo.measureName
|
1896
|
-
];
|
1897
|
-
return [
|
1898
|
-
...prev,
|
1899
|
-
{
|
1900
|
-
x,
|
1901
|
-
y,
|
1902
|
-
group,
|
1903
|
-
color
|
1904
|
-
}
|
1905
|
-
];
|
1906
|
-
}, []);
|
1907
|
-
return {
|
1908
|
-
...result,
|
1909
|
-
encoding
|
1910
|
-
};
|
1911
|
-
};
|
1912
1891
|
function chunk_NFFV4IQT_m(...r) {
|
1913
1892
|
return chunk_WIMGWYZL_u(chunk_NFFV4IQT_o, r);
|
1914
1893
|
}
|
@@ -1923,42 +1902,46 @@
|
|
1923
1902
|
...advancedVSeed
|
1924
1903
|
};
|
1925
1904
|
const { vseed } = context;
|
1926
|
-
const { sort: sortAxis
|
1927
|
-
const {
|
1928
|
-
const
|
1905
|
+
const { sort: sortAxis } = vseed;
|
1906
|
+
const { datasetReshapeInfo, dataset } = advancedVSeed;
|
1907
|
+
const { unfoldInfo } = datasetReshapeInfo[0];
|
1908
|
+
const xField = unfoldInfo.encodingX;
|
1929
1909
|
if (!sortAxis || !xField) return advancedVSeed;
|
1930
1910
|
if (!result.analysis) result.analysis = {};
|
1931
1911
|
if (!result.analysis.orderMapping) result.analysis.orderMapping = {};
|
1932
|
-
const axisOrderResult = calcOrder(sortAxis, xField, dataset);
|
1912
|
+
const axisOrderResult = calcOrder(sortAxis, xField, dataset.flat(2));
|
1933
1913
|
result.analysis.orderMapping[xField] = axisOrderResult;
|
1934
1914
|
return result;
|
1935
1915
|
};
|
1936
|
-
const
|
1937
|
-
|
1938
|
-
|
1939
|
-
|
1940
|
-
const
|
1941
|
-
|
1942
|
-
|
1943
|
-
|
1944
|
-
|
1945
|
-
|
1946
|
-
|
1947
|
-
|
1948
|
-
|
1949
|
-
|
1916
|
+
const calcOrder = (sortConfig, id, dataset)=>{
|
1917
|
+
if (sortConfig.customOrder) return sortConfig.customOrder;
|
1918
|
+
const order = sortConfig.order || 'asc';
|
1919
|
+
const orderBy = sortConfig.orderBy;
|
1920
|
+
const res = chunk_NFFV4IQT_m(dataset, (a, b)=>{
|
1921
|
+
const aValue = a[orderBy || id];
|
1922
|
+
const bValue = b[orderBy || id];
|
1923
|
+
if ('asc' === order) {
|
1924
|
+
if (aValue < bValue) return -1;
|
1925
|
+
if (aValue > bValue) return 1;
|
1926
|
+
return 0;
|
1927
|
+
}
|
1928
|
+
if (aValue > bValue) return -1;
|
1929
|
+
if (aValue < bValue) return 1;
|
1930
|
+
return 0;
|
1931
|
+
});
|
1932
|
+
return chunk_QJLMYOTX_i(res.map((item)=>item[id]));
|
1950
1933
|
};
|
1951
|
-
const
|
1934
|
+
const sortLegend_sortLegend = (advancedVSeed, context)=>{
|
1952
1935
|
const result = {
|
1953
1936
|
...advancedVSeed
|
1954
1937
|
};
|
1955
1938
|
const { vseed } = context;
|
1956
1939
|
const { sortLegend } = vseed;
|
1957
|
-
const { datasetReshapeInfo } = advancedVSeed;
|
1958
|
-
const
|
1940
|
+
const { datasetReshapeInfo, dataset } = advancedVSeed;
|
1941
|
+
const colorId = datasetReshapeInfo?.[0]?.unfoldInfo?.encodingColorId;
|
1959
1942
|
const colorIdMap = datasetReshapeInfo?.[0]?.unfoldInfo?.colorIdMap;
|
1960
1943
|
const colorItems = datasetReshapeInfo?.[0]?.unfoldInfo?.colorItems;
|
1961
|
-
if (!sortLegend || !
|
1944
|
+
if (!sortLegend || !colorId || !colorIdMap || !colorItems) return advancedVSeed;
|
1962
1945
|
if (!result.analysis) result.analysis = {};
|
1963
1946
|
if (!result.analysis.orderMapping) result.analysis.orderMapping = {};
|
1964
1947
|
if (sortLegend.customOrder) {
|
@@ -1967,15 +1950,14 @@
|
|
1967
1950
|
return pre;
|
1968
1951
|
}, {});
|
1969
1952
|
const orderRes = sortLegend.customOrder.map((itemNameOrId)=>nameMap[itemNameOrId] ? nameMap[itemNameOrId] : itemNameOrId);
|
1970
|
-
result.analysis.orderMapping[
|
1953
|
+
result.analysis.orderMapping[colorId] = orderRes;
|
1971
1954
|
return result;
|
1972
1955
|
}
|
1973
|
-
const
|
1974
|
-
|
1975
|
-
result.analysis.orderMapping[groupField] = orderRes;
|
1956
|
+
const orderRes = sortLegend_calcOrder(sortLegend, colorId, dataset?.flat(2) || []);
|
1957
|
+
result.analysis.orderMapping[colorId] = orderRes;
|
1976
1958
|
return result;
|
1977
1959
|
};
|
1978
|
-
const
|
1960
|
+
const sortLegend_calcOrder = (sortConfig, id, dataset)=>{
|
1979
1961
|
if (sortConfig.customOrder) return sortConfig.customOrder;
|
1980
1962
|
const order = sortConfig.order || 'asc';
|
1981
1963
|
const orderBy = sortConfig.orderBy;
|
@@ -2107,14 +2089,14 @@
|
|
2107
2089
|
initAdvancedVSeed_initAdvancedVSeed,
|
2108
2090
|
autoMeasures_autoMeasures,
|
2109
2091
|
autoDimensions_autoDimensions,
|
2092
|
+
encodingForColumn,
|
2110
2093
|
pivotAdapter([
|
2111
|
-
|
2094
|
+
reshapeWithEncoding
|
2112
2095
|
], [
|
2113
|
-
|
2096
|
+
pivotReshapeWithEncoding
|
2114
2097
|
]),
|
2115
|
-
encodingXY,
|
2116
2098
|
sortXBandAxis,
|
2117
|
-
|
2099
|
+
sortLegend_sortLegend,
|
2118
2100
|
lineConfig,
|
2119
2101
|
theme_theme,
|
2120
2102
|
markStyle_markStyle,
|
@@ -2125,13 +2107,13 @@
|
|
2125
2107
|
...spec
|
2126
2108
|
};
|
2127
2109
|
const { advancedVSeed } = context;
|
2128
|
-
const {
|
2129
|
-
|
2110
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
2111
|
+
const { foldInfo, unfoldInfo } = datasetReshapeInfo[0];
|
2130
2112
|
result.type = 'line';
|
2131
2113
|
result.direction = 'vertical';
|
2132
|
-
result.xField =
|
2133
|
-
result.yField =
|
2134
|
-
result.seriesField =
|
2114
|
+
result.xField = unfoldInfo.encodingX;
|
2115
|
+
result.yField = foldInfo.measureValue;
|
2116
|
+
result.seriesField = unfoldInfo.encodingColorId;
|
2135
2117
|
result.padding = 0;
|
2136
2118
|
result.region = [
|
2137
2119
|
{
|
@@ -2207,11 +2189,12 @@
|
|
2207
2189
|
};
|
2208
2190
|
const datasetXY = (spec, context)=>{
|
2209
2191
|
const { advancedVSeed, vseed } = context;
|
2210
|
-
const {
|
2192
|
+
const { analysis, datasetReshapeInfo } = advancedVSeed;
|
2193
|
+
const { unfoldInfo } = datasetReshapeInfo[0];
|
2211
2194
|
const orderMapping = analysis?.orderMapping || {};
|
2212
|
-
const angle =
|
2213
|
-
const x =
|
2214
|
-
const
|
2195
|
+
const angle = unfoldInfo.encodingAngle;
|
2196
|
+
const x = unfoldInfo.encodingX;
|
2197
|
+
const colorId = unfoldInfo.encodingColorId;
|
2215
2198
|
const id = datasetReshapeInfo[0].id;
|
2216
2199
|
const fields = {};
|
2217
2200
|
if (angle) fields[angle] = {
|
@@ -2228,14 +2211,14 @@
|
|
2228
2211
|
sortIndex: 0
|
2229
2212
|
};
|
2230
2213
|
}
|
2231
|
-
if (
|
2232
|
-
const order = orderMapping[
|
2233
|
-
if (order) fields[
|
2214
|
+
if (colorId) {
|
2215
|
+
const order = orderMapping[colorId];
|
2216
|
+
if (order) fields[colorId] = {
|
2234
2217
|
sortIndex: 0,
|
2235
2218
|
domain: order,
|
2236
2219
|
lockStatisticsByDomain: true
|
2237
2220
|
};
|
2238
|
-
else fields[
|
2221
|
+
else fields[colorId] = {
|
2239
2222
|
sortIndex: 0
|
2240
2223
|
};
|
2241
2224
|
}
|
@@ -2488,7 +2471,7 @@
|
|
2488
2471
|
} } = baseConfig;
|
2489
2472
|
const { enable } = tooltip;
|
2490
2473
|
const { measureId, measureValue, measureName } = datasetReshapeInfo[0].foldInfo;
|
2491
|
-
const {
|
2474
|
+
const { encodingColor: colorName } = datasetReshapeInfo[0].unfoldInfo;
|
2492
2475
|
result.tooltip = {
|
2493
2476
|
visible: enable,
|
2494
2477
|
mark: {
|
@@ -2509,7 +2492,7 @@
|
|
2509
2492
|
{
|
2510
2493
|
visible: true,
|
2511
2494
|
hasShape: true,
|
2512
|
-
key: (datum)=>datum && datum[measureName ||
|
2495
|
+
key: (datum)=>datum && datum[measureName || colorName] || '',
|
2513
2496
|
value: (datum)=>{
|
2514
2497
|
if (!datum) return '';
|
2515
2498
|
const value = datum[measureValue];
|
@@ -2531,7 +2514,7 @@
|
|
2531
2514
|
content: [
|
2532
2515
|
{
|
2533
2516
|
visible: true,
|
2534
|
-
key: (datum)=>datum && datum[
|
2517
|
+
key: (datum)=>datum && datum[colorName] || '',
|
2535
2518
|
value: (datum)=>{
|
2536
2519
|
if (!datum) return '';
|
2537
2520
|
const value = datum[measureValue];
|
@@ -2869,7 +2852,8 @@
|
|
2869
2852
|
const pointStateHover = (spec, context)=>{
|
2870
2853
|
const point = spec.point || {};
|
2871
2854
|
const { advancedVSeed } = context;
|
2872
|
-
const {
|
2855
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
2856
|
+
const { unfoldInfo } = datasetReshapeInfo[0];
|
2873
2857
|
const result = {
|
2874
2858
|
...spec,
|
2875
2859
|
point: {
|
@@ -2880,7 +2864,7 @@
|
|
2880
2864
|
scaleX: 1.4,
|
2881
2865
|
scaleY: 1.4,
|
2882
2866
|
stroke: (datum, context)=>{
|
2883
|
-
const field =
|
2867
|
+
const field = unfoldInfo.encodingColorId;
|
2884
2868
|
const color = context.seriesColor(datum[field]);
|
2885
2869
|
return color;
|
2886
2870
|
},
|
@@ -2910,7 +2894,8 @@
|
|
2910
2894
|
};
|
2911
2895
|
const lineStyle_lineStyle = (spec, context)=>{
|
2912
2896
|
const { advancedVSeed } = context;
|
2913
|
-
const { markStyle,
|
2897
|
+
const { markStyle, datasetReshapeInfo, dataset } = advancedVSeed;
|
2898
|
+
const { unfoldInfo } = datasetReshapeInfo[0];
|
2914
2899
|
const { lineStyle } = markStyle;
|
2915
2900
|
if (!lineStyle) return spec;
|
2916
2901
|
const result = {
|
@@ -2919,8 +2904,8 @@
|
|
2919
2904
|
const lineStyles = Array.isArray(lineStyle) ? lineStyle : [
|
2920
2905
|
lineStyle
|
2921
2906
|
];
|
2922
|
-
const
|
2923
|
-
const lineGroups = chunk_HVPVHFDT_i(dataset, (d)=>d[
|
2907
|
+
const colorId = unfoldInfo.encodingColorId;
|
2908
|
+
const lineGroups = chunk_HVPVHFDT_i(dataset, (d)=>d[colorId ?? '']);
|
2924
2909
|
const customMap = lineStyles.reduce((result, style, index)=>{
|
2925
2910
|
const { lineColor, lineColorOpacity, lineSmooth, lineStyle, lineWidth = 2, lineVisible = true } = style;
|
2926
2911
|
const dashSegment = 2 * lineWidth;
|
@@ -2941,7 +2926,7 @@
|
|
2941
2926
|
[`custom${index + 1}`]: {
|
2942
2927
|
level: index + 1,
|
2943
2928
|
filter: (datum)=>{
|
2944
|
-
const lineData = lineGroups[datum[
|
2929
|
+
const lineData = lineGroups[datum[colorId ?? '']];
|
2945
2930
|
for (const d of lineData)if (selector_selector(d, style.selector)) return true;
|
2946
2931
|
return false;
|
2947
2932
|
},
|
@@ -3039,7 +3024,8 @@
|
|
3039
3024
|
}
|
3040
3025
|
const annotationVerticalLine_annotationVerticalLine = (spec, context)=>{
|
3041
3026
|
const { advancedVSeed } = context;
|
3042
|
-
const { annotation,
|
3027
|
+
const { annotation, datasetReshapeInfo } = advancedVSeed;
|
3028
|
+
const { unfoldInfo } = datasetReshapeInfo[0];
|
3043
3029
|
if (!annotation || !annotation.annotationVerticalLine) return spec;
|
3044
3030
|
const { annotationVerticalLine } = annotation;
|
3045
3031
|
const annotationVerticalLineList = Array.isArray(annotationVerticalLine) ? annotationVerticalLine : [
|
@@ -3119,7 +3105,7 @@
|
|
3119
3105
|
}
|
3120
3106
|
const selectedData = selectorPoint ? dataset.filter((datum)=>selector_selector(datum, selectorPoint)) : [];
|
3121
3107
|
return selectedData.map((datum)=>{
|
3122
|
-
const x =
|
3108
|
+
const x = unfoldInfo.encodingX;
|
3123
3109
|
if (!x) return {};
|
3124
3110
|
return generateOneMarkLine(datum[x]);
|
3125
3111
|
});
|
@@ -3136,7 +3122,8 @@
|
|
3136
3122
|
};
|
3137
3123
|
const annotationHorizontalLine_annotationHorizontalLine = (spec, context)=>{
|
3138
3124
|
const { advancedVSeed } = context;
|
3139
|
-
const { annotation,
|
3125
|
+
const { annotation, datasetReshapeInfo } = advancedVSeed;
|
3126
|
+
const { unfoldInfo } = datasetReshapeInfo[0];
|
3140
3127
|
if (!annotation || !annotation.annotationHorizontalLine) return spec;
|
3141
3128
|
const { annotationHorizontalLine } = annotation;
|
3142
3129
|
const annotationVerticalLineList = Array.isArray(annotationHorizontalLine) ? annotationHorizontalLine : [
|
@@ -3216,7 +3203,7 @@
|
|
3216
3203
|
}
|
3217
3204
|
const selectedData = selectorPoint ? dataset.filter((datum)=>selector_selector(datum, selectorPoint)) : [];
|
3218
3205
|
return selectedData.map((datum)=>{
|
3219
|
-
const y =
|
3206
|
+
const y = unfoldInfo.encodingY;
|
3220
3207
|
if (!y) return {};
|
3221
3208
|
return generateOneMarkLine(datum[y]);
|
3222
3209
|
});
|
@@ -3497,13 +3484,10 @@
|
|
3497
3484
|
...spec
|
3498
3485
|
};
|
3499
3486
|
const { advancedVSeed } = context;
|
3500
|
-
const { measures, datasetReshapeInfo,
|
3487
|
+
const { measures, datasetReshapeInfo, dataset } = advancedVSeed;
|
3501
3488
|
const colorItems = chunk_QJLMYOTX_i(datasetReshapeInfo.flatMap((d)=>d.unfoldInfo.colorItems));
|
3502
3489
|
const indicators = datasetReshapeInfo.map((reshapeInfo, index)=>{
|
3503
3490
|
const measure = measures?.find((d)=>d.id === reshapeInfo.id);
|
3504
|
-
const newEncoding = [
|
3505
|
-
encoding[index]
|
3506
|
-
];
|
3507
3491
|
const newDataset = dataset[index];
|
3508
3492
|
const newDatasetReshapeInfo = [
|
3509
3493
|
{
|
@@ -3519,8 +3503,7 @@
|
|
3519
3503
|
advancedVSeed: {
|
3520
3504
|
...advancedVSeed,
|
3521
3505
|
datasetReshapeInfo: newDatasetReshapeInfo,
|
3522
|
-
dataset: newDataset
|
3523
|
-
encoding: newEncoding
|
3506
|
+
dataset: newDataset
|
3524
3507
|
}
|
3525
3508
|
};
|
3526
3509
|
const chartSpec = execPipeline(chartPipeline, newContext, {});
|
@@ -3706,7 +3689,7 @@
|
|
3706
3689
|
}
|
3707
3690
|
},
|
3708
3691
|
label: {
|
3709
|
-
formatMethod: (value)=>colorIdMap[
|
3692
|
+
formatMethod: (value)=>colorIdMap[value] ?? value,
|
3710
3693
|
style: {
|
3711
3694
|
fontSize: labelFontSize,
|
3712
3695
|
fill: labelFontColor,
|
@@ -3789,151 +3772,18 @@
|
|
3789
3772
|
Builder._advancedPipelineMap.line = lineAdvancedPipeline;
|
3790
3773
|
Builder._specPipelineMap.line = lineSpecPipeline;
|
3791
3774
|
};
|
3792
|
-
const dataReshapeFor2D1M_emptyReshapeResult = {
|
3793
|
-
dataset: [],
|
3794
|
-
foldInfo: {
|
3795
|
-
foldMap: {},
|
3796
|
-
measureId: '',
|
3797
|
-
measureName: '',
|
3798
|
-
measureValue: ''
|
3799
|
-
},
|
3800
|
-
unfoldInfo: {
|
3801
|
-
groupName: '',
|
3802
|
-
groupId: '',
|
3803
|
-
colorItems: [],
|
3804
|
-
colorIdMap: {}
|
3805
|
-
}
|
3806
|
-
};
|
3807
|
-
const dataReshapeFor2D1M = (dataset, dimensions, measures, options)=>{
|
3808
|
-
const { foldMeasureId = FoldMeasureId, foldMeasureName = FoldMeasureName, foldMeasureValue = FoldMeasureValue, unfoldDimensionGroup = UnfoldDimensionGroup, unfoldDimensionGroupId = UnfoldDimensionGroupId } = options || {};
|
3809
|
-
if (0 === dimensions.length && 0 === measures.length) return dataReshapeFor2D1M_emptyReshapeResult;
|
3810
|
-
const { dataset: foldedDataset, foldInfo } = foldMeasures(dataset, measures, foldMeasureId, foldMeasureName, foldMeasureValue);
|
3811
|
-
if (0 === dimensions.length) {
|
3812
|
-
const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, [
|
3813
|
-
{
|
3814
|
-
id: foldMeasureId,
|
3815
|
-
alias: i18n`指标Id`,
|
3816
|
-
location: 'dimension'
|
3817
|
-
},
|
3818
|
-
{
|
3819
|
-
id: foldMeasureName,
|
3820
|
-
alias: i18n`指标名称`,
|
3821
|
-
location: 'dimension'
|
3822
|
-
}
|
3823
|
-
], [
|
3824
|
-
{
|
3825
|
-
id: foldMeasureValue,
|
3826
|
-
alias: i18n`指标值`
|
3827
|
-
}
|
3828
|
-
], 1, unfoldDimensionGroup, unfoldDimensionGroupId, foldMeasureId);
|
3829
|
-
return {
|
3830
|
-
dataset: finalDataset,
|
3831
|
-
foldInfo,
|
3832
|
-
unfoldInfo
|
3833
|
-
};
|
3834
|
-
}
|
3835
|
-
{
|
3836
|
-
const onlyOneMeasure = 1 === measures.length;
|
3837
|
-
const onlyOneDimension = 1 === dimensions.length;
|
3838
|
-
const dims = [
|
3839
|
-
...dimensions
|
3840
|
-
];
|
3841
|
-
if (!onlyOneMeasure || onlyOneDimension) dims.push({
|
3842
|
-
id: foldMeasureName,
|
3843
|
-
alias: i18n`指标名称`,
|
3844
|
-
location: 'dimension'
|
3845
|
-
});
|
3846
|
-
const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, dims, [
|
3847
|
-
{
|
3848
|
-
id: foldMeasureValue,
|
3849
|
-
alias: i18n`指标值`
|
3850
|
-
}
|
3851
|
-
], 1, unfoldDimensionGroup, unfoldDimensionGroupId, foldMeasureId);
|
3852
|
-
return {
|
3853
|
-
dataset: finalDataset,
|
3854
|
-
foldInfo,
|
3855
|
-
unfoldInfo
|
3856
|
-
};
|
3857
|
-
}
|
3858
|
-
};
|
3859
|
-
const reshapeTo2D1M = (advancedVSeed, context)=>{
|
3860
|
-
const result = {
|
3861
|
-
...advancedVSeed
|
3862
|
-
};
|
3863
|
-
const { vseed } = context;
|
3864
|
-
const { dataset } = vseed;
|
3865
|
-
const { dimensions, measures } = advancedVSeed;
|
3866
|
-
if (!measures || !dimensions || !dataset) return result;
|
3867
|
-
if (0 === measures.length) throw new Error('measures can not be empty');
|
3868
|
-
const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor2D1M(dataset, dimensions, measures);
|
3869
|
-
return {
|
3870
|
-
...result,
|
3871
|
-
dataset: newDatasets,
|
3872
|
-
datasetReshapeInfo: [
|
3873
|
-
{
|
3874
|
-
id: '2D1M',
|
3875
|
-
index: 0,
|
3876
|
-
foldInfo,
|
3877
|
-
unfoldInfo
|
3878
|
-
}
|
3879
|
-
],
|
3880
|
-
dimensions,
|
3881
|
-
measures
|
3882
|
-
};
|
3883
|
-
};
|
3884
|
-
const pivotReshapeTo2D1M = (advancedVSeed, context)=>{
|
3885
|
-
const result = {
|
3886
|
-
...advancedVSeed
|
3887
|
-
};
|
3888
|
-
const { vseed } = context;
|
3889
|
-
const { dataset } = vseed;
|
3890
|
-
const { measures } = advancedVSeed;
|
3891
|
-
const dimensions = advancedVSeed.dimensions;
|
3892
|
-
if (!measures || !dimensions) return result;
|
3893
|
-
const measureGroups = [];
|
3894
|
-
if (measures) measures.forEach((measure)=>{
|
3895
|
-
if (measure.children && measure.children.length > 0) measureGroups.push(measure);
|
3896
|
-
});
|
3897
|
-
const commonDimensions = dimensions.filter((dim)=>'dimension' === dim.location);
|
3898
|
-
const newDatasets = [];
|
3899
|
-
const datasetReshapeInfo = [];
|
3900
|
-
measureGroups.forEach((measureGroup, index)=>{
|
3901
|
-
const measures = measureGroup.children;
|
3902
|
-
if (!measures) return;
|
3903
|
-
const groupId = measureGroup.id;
|
3904
|
-
const { dataset: newSubDataset, foldInfo, unfoldInfo } = dataReshapeFor2D1M(dataset, commonDimensions, measures, {
|
3905
|
-
foldMeasureId: FoldMeasureId,
|
3906
|
-
foldMeasureName: FoldMeasureName,
|
3907
|
-
foldMeasureValue: FoldMeasureValue + groupId,
|
3908
|
-
unfoldDimensionGroup: UnfoldDimensionGroup
|
3909
|
-
});
|
3910
|
-
const reshapeInfo = {
|
3911
|
-
id: groupId,
|
3912
|
-
index,
|
3913
|
-
foldInfo,
|
3914
|
-
unfoldInfo
|
3915
|
-
};
|
3916
|
-
newDatasets.push(newSubDataset);
|
3917
|
-
datasetReshapeInfo.push(reshapeInfo);
|
3918
|
-
});
|
3919
|
-
return {
|
3920
|
-
...result,
|
3921
|
-
dataset: newDatasets,
|
3922
|
-
datasetReshapeInfo: datasetReshapeInfo
|
3923
|
-
};
|
3924
|
-
};
|
3925
3775
|
const columnAdvancedPipeline = [
|
3926
3776
|
initAdvancedVSeed_initAdvancedVSeed,
|
3927
3777
|
autoMeasures_autoMeasures,
|
3928
3778
|
autoDimensions_autoDimensions,
|
3779
|
+
encodingForColumn,
|
3929
3780
|
pivotAdapter([
|
3930
|
-
|
3781
|
+
reshapeWithEncoding
|
3931
3782
|
], [
|
3932
|
-
|
3783
|
+
pivotReshapeWithEncoding
|
3933
3784
|
]),
|
3934
|
-
encodingXY,
|
3935
3785
|
sortXBandAxis,
|
3936
|
-
|
3786
|
+
sortLegend_sortLegend,
|
3937
3787
|
columnConfig,
|
3938
3788
|
theme_theme,
|
3939
3789
|
markStyle_markStyle,
|
@@ -3944,13 +3794,13 @@
|
|
3944
3794
|
...spec
|
3945
3795
|
};
|
3946
3796
|
const { advancedVSeed } = context;
|
3947
|
-
const {
|
3948
|
-
|
3797
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
3798
|
+
const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
|
3949
3799
|
result.type = 'bar';
|
3950
3800
|
result.direction = 'vertical';
|
3951
|
-
result.xField =
|
3952
|
-
result.yField =
|
3953
|
-
result.seriesField =
|
3801
|
+
result.xField = unfoldInfo.encodingX;
|
3802
|
+
result.yField = foldInfo.measureValue;
|
3803
|
+
result.seriesField = unfoldInfo.encodingColorId;
|
3954
3804
|
result.padding = 0;
|
3955
3805
|
result.region = [
|
3956
3806
|
{
|
@@ -4270,14 +4120,14 @@
|
|
4270
4120
|
initAdvancedVSeed_initAdvancedVSeed,
|
4271
4121
|
autoMeasures_autoMeasures,
|
4272
4122
|
autoDimensions_autoDimensions,
|
4123
|
+
encodingForColumn,
|
4273
4124
|
pivotAdapter([
|
4274
|
-
|
4125
|
+
reshapeWithEncoding
|
4275
4126
|
], [
|
4276
|
-
|
4127
|
+
pivotReshapeWithEncoding
|
4277
4128
|
]),
|
4278
|
-
encodingXY,
|
4279
4129
|
sortXBandAxis,
|
4280
|
-
|
4130
|
+
sortLegend_sortLegend,
|
4281
4131
|
columnParallelConfig,
|
4282
4132
|
theme_theme,
|
4283
4133
|
markStyle_markStyle,
|
@@ -4288,17 +4138,19 @@
|
|
4288
4138
|
...spec
|
4289
4139
|
};
|
4290
4140
|
const { advancedVSeed } = context;
|
4291
|
-
const {
|
4292
|
-
const { unfoldInfo } = datasetReshapeInfo[0];
|
4293
|
-
|
4141
|
+
const { datasetReshapeInfo, dimensions } = advancedVSeed;
|
4142
|
+
const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
|
4143
|
+
const sameDimensionsMode = dimensions.length > 1 && dimensions.every((dim)=>dim.id === dimensions[0].id);
|
4294
4144
|
result.type = 'bar';
|
4295
4145
|
result.direction = 'vertical';
|
4296
|
-
result.xField = [
|
4297
|
-
|
4298
|
-
|
4146
|
+
result.xField = sameDimensionsMode ? [
|
4147
|
+
unfoldInfo.encodingX
|
4148
|
+
] : [
|
4149
|
+
unfoldInfo.encodingX,
|
4150
|
+
unfoldInfo.encodingDetail
|
4299
4151
|
];
|
4300
|
-
result.yField =
|
4301
|
-
result.seriesField =
|
4152
|
+
result.yField = foldInfo.measureValue;
|
4153
|
+
result.seriesField = unfoldInfo.encodingColorId;
|
4302
4154
|
result.padding = 0;
|
4303
4155
|
result.region = [
|
4304
4156
|
{
|
@@ -4365,14 +4217,14 @@
|
|
4365
4217
|
initAdvancedVSeed_initAdvancedVSeed,
|
4366
4218
|
autoMeasures_autoMeasures,
|
4367
4219
|
autoDimensions_autoDimensions,
|
4220
|
+
encodingForColumn,
|
4368
4221
|
pivotAdapter([
|
4369
|
-
|
4222
|
+
reshapeWithEncoding
|
4370
4223
|
], [
|
4371
|
-
|
4224
|
+
pivotReshapeWithEncoding
|
4372
4225
|
]),
|
4373
|
-
encodingXY,
|
4374
4226
|
sortXBandAxis,
|
4375
|
-
|
4227
|
+
sortLegend_sortLegend,
|
4376
4228
|
columnPercentConfig,
|
4377
4229
|
theme_theme,
|
4378
4230
|
markStyle_markStyle,
|
@@ -4442,55 +4294,70 @@
|
|
4442
4294
|
Builder._advancedPipelineMap.columnPercent = columnPercentAdvancedPipeline;
|
4443
4295
|
Builder._specPipelineMap.columnPercent = columnPercentSpecPipeline;
|
4444
4296
|
};
|
4445
|
-
const
|
4446
|
-
const
|
4447
|
-
|
4448
|
-
|
4449
|
-
const
|
4450
|
-
if (
|
4451
|
-
|
4452
|
-
|
4453
|
-
|
4454
|
-
const
|
4455
|
-
|
4456
|
-
|
4457
|
-
];
|
4458
|
-
const x = [
|
4459
|
-
foldInfo.measureValue
|
4460
|
-
];
|
4461
|
-
const group = [
|
4462
|
-
unfoldInfo.groupId
|
4463
|
-
];
|
4464
|
-
const color = [
|
4465
|
-
foldInfo.measureName
|
4297
|
+
const encodingForBar = (advancedVSeed, context)=>{
|
4298
|
+
const { vseed } = context;
|
4299
|
+
const { dimensions } = advancedVSeed;
|
4300
|
+
if (!dimensions) return advancedVSeed;
|
4301
|
+
const encoding = vseed.encoding;
|
4302
|
+
if (encoding) {
|
4303
|
+
const y = encoding.y || [];
|
4304
|
+
const detail = encoding.detail || [];
|
4305
|
+
const color = encoding.color || [];
|
4306
|
+
const mergedDetail = [
|
4307
|
+
...color.filter((d)=>!y.includes(d)),
|
4308
|
+
...detail
|
4466
4309
|
];
|
4467
|
-
return
|
4468
|
-
...
|
4469
|
-
{
|
4470
|
-
|
4471
|
-
|
4472
|
-
group,
|
4473
|
-
color
|
4310
|
+
return {
|
4311
|
+
...advancedVSeed,
|
4312
|
+
encoding: {
|
4313
|
+
...encoding,
|
4314
|
+
detail: mergedDetail
|
4474
4315
|
}
|
4475
|
-
|
4476
|
-
}
|
4316
|
+
};
|
4317
|
+
}
|
4318
|
+
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
4319
|
+
const mergedEncoding = {
|
4320
|
+
y: dimensions.slice(0, 1).map((item)=>item.id),
|
4321
|
+
color: dimensions.slice(1).map((item)=>item.id),
|
4322
|
+
detail: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
|
4323
|
+
tooltip: dimensions.map((item)=>item.id),
|
4324
|
+
label: [],
|
4325
|
+
row: [],
|
4326
|
+
column: []
|
4327
|
+
};
|
4477
4328
|
return {
|
4478
|
-
...
|
4479
|
-
encoding
|
4329
|
+
...advancedVSeed,
|
4330
|
+
encoding: mergedEncoding
|
4331
|
+
};
|
4332
|
+
};
|
4333
|
+
const sortYBandAxis = (advancedVSeed, context)=>{
|
4334
|
+
const result = {
|
4335
|
+
...advancedVSeed
|
4480
4336
|
};
|
4337
|
+
const { vseed } = context;
|
4338
|
+
const { sort: sortAxis } = vseed;
|
4339
|
+
const { datasetReshapeInfo, dataset } = advancedVSeed;
|
4340
|
+
const { unfoldInfo } = datasetReshapeInfo[0];
|
4341
|
+
const yField = unfoldInfo?.encodingY;
|
4342
|
+
if (!sortAxis || !yField) return advancedVSeed;
|
4343
|
+
if (!result.analysis) result.analysis = {};
|
4344
|
+
if (!result.analysis.orderMapping) result.analysis.orderMapping = {};
|
4345
|
+
const axisOrderResult = calcOrder(sortAxis, yField, dataset.flat(2));
|
4346
|
+
result.analysis.orderMapping[yField] = axisOrderResult;
|
4347
|
+
return result;
|
4481
4348
|
};
|
4482
4349
|
const barAdvancedPipeline = [
|
4483
4350
|
initAdvancedVSeed_initAdvancedVSeed,
|
4484
4351
|
autoMeasures_autoMeasures,
|
4485
4352
|
autoDimensions_autoDimensions,
|
4353
|
+
encodingForBar,
|
4486
4354
|
pivotAdapter([
|
4487
|
-
|
4355
|
+
reshapeWithEncoding
|
4488
4356
|
], [
|
4489
|
-
|
4357
|
+
pivotReshapeWithEncoding
|
4490
4358
|
]),
|
4491
|
-
encodingYX,
|
4492
4359
|
sortYBandAxis,
|
4493
|
-
|
4360
|
+
sortLegend_sortLegend,
|
4494
4361
|
barConfig,
|
4495
4362
|
theme_theme,
|
4496
4363
|
markStyle_markStyle,
|
@@ -4501,13 +4368,13 @@
|
|
4501
4368
|
...spec
|
4502
4369
|
};
|
4503
4370
|
const { advancedVSeed } = context;
|
4504
|
-
const {
|
4505
|
-
|
4371
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
4372
|
+
const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
|
4506
4373
|
result.type = 'bar';
|
4507
4374
|
result.direction = 'horizontal';
|
4508
|
-
result.yField =
|
4509
|
-
result.xField =
|
4510
|
-
result.seriesField =
|
4375
|
+
result.yField = unfoldInfo.encodingY;
|
4376
|
+
result.xField = foldInfo.measureValue;
|
4377
|
+
result.seriesField = unfoldInfo.encodingColorId;
|
4511
4378
|
result.padding = 0;
|
4512
4379
|
result.region = [
|
4513
4380
|
{
|
@@ -4519,11 +4386,12 @@
|
|
4519
4386
|
};
|
4520
4387
|
const datasetYX = (spec, context)=>{
|
4521
4388
|
const { advancedVSeed, vseed } = context;
|
4522
|
-
const {
|
4389
|
+
const { analysis, datasetReshapeInfo } = advancedVSeed;
|
4390
|
+
const { unfoldInfo } = datasetReshapeInfo[0];
|
4523
4391
|
const orderMapping = analysis?.orderMapping || {};
|
4524
|
-
const angle =
|
4525
|
-
const y =
|
4526
|
-
const
|
4392
|
+
const angle = unfoldInfo.encodingAngle;
|
4393
|
+
const y = unfoldInfo.encodingY;
|
4394
|
+
const colorId = unfoldInfo.encodingColorId;
|
4527
4395
|
const id = datasetReshapeInfo[0].id;
|
4528
4396
|
const fields = {};
|
4529
4397
|
if (angle) fields[angle] = {
|
@@ -4540,14 +4408,14 @@
|
|
4540
4408
|
sortIndex: 0
|
4541
4409
|
};
|
4542
4410
|
}
|
4543
|
-
if (
|
4544
|
-
const order = orderMapping[
|
4545
|
-
if (order) fields[
|
4411
|
+
if (colorId) {
|
4412
|
+
const order = orderMapping[colorId];
|
4413
|
+
if (order) fields[colorId] = {
|
4546
4414
|
sortIndex: 0,
|
4547
4415
|
domain: order,
|
4548
4416
|
lockStatisticsByDomain: true
|
4549
4417
|
};
|
4550
|
-
else fields[
|
4418
|
+
else fields[colorId] = {
|
4551
4419
|
sortIndex: 0
|
4552
4420
|
};
|
4553
4421
|
}
|
@@ -4835,14 +4703,14 @@
|
|
4835
4703
|
initAdvancedVSeed_initAdvancedVSeed,
|
4836
4704
|
autoMeasures_autoMeasures,
|
4837
4705
|
autoDimensions_autoDimensions,
|
4706
|
+
encodingForBar,
|
4838
4707
|
pivotAdapter([
|
4839
|
-
|
4708
|
+
reshapeWithEncoding
|
4840
4709
|
], [
|
4841
|
-
|
4710
|
+
pivotReshapeWithEncoding
|
4842
4711
|
]),
|
4843
|
-
encodingYX,
|
4844
4712
|
sortYBandAxis,
|
4845
|
-
|
4713
|
+
sortLegend_sortLegend,
|
4846
4714
|
barParallelConfig,
|
4847
4715
|
theme_theme,
|
4848
4716
|
markStyle_markStyle,
|
@@ -4853,17 +4721,19 @@
|
|
4853
4721
|
...spec
|
4854
4722
|
};
|
4855
4723
|
const { advancedVSeed } = context;
|
4856
|
-
const {
|
4857
|
-
const { unfoldInfo } = datasetReshapeInfo[0];
|
4858
|
-
|
4724
|
+
const { datasetReshapeInfo, dimensions } = advancedVSeed;
|
4725
|
+
const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
|
4726
|
+
const sameDimensionsMode = dimensions.length > 1 && dimensions.every((dim)=>dim.id === dimensions[0].id);
|
4859
4727
|
result.type = 'bar';
|
4860
4728
|
result.direction = 'horizontal';
|
4861
|
-
result.yField = [
|
4862
|
-
|
4863
|
-
|
4729
|
+
result.yField = sameDimensionsMode ? [
|
4730
|
+
unfoldInfo.encodingY
|
4731
|
+
] : [
|
4732
|
+
unfoldInfo.encodingY,
|
4733
|
+
unfoldInfo.encodingDetail
|
4864
4734
|
];
|
4865
|
-
result.xField =
|
4866
|
-
result.seriesField =
|
4735
|
+
result.xField = foldInfo.measureValue;
|
4736
|
+
result.seriesField = unfoldInfo.encodingColorId;
|
4867
4737
|
result.padding = 0;
|
4868
4738
|
result.region = [
|
4869
4739
|
{
|
@@ -4929,14 +4799,14 @@
|
|
4929
4799
|
initAdvancedVSeed_initAdvancedVSeed,
|
4930
4800
|
autoMeasures_autoMeasures,
|
4931
4801
|
autoDimensions_autoDimensions,
|
4802
|
+
encodingForBar,
|
4932
4803
|
pivotAdapter([
|
4933
|
-
|
4804
|
+
reshapeWithEncoding
|
4934
4805
|
], [
|
4935
|
-
|
4806
|
+
pivotReshapeWithEncoding
|
4936
4807
|
]),
|
4937
|
-
encodingYX,
|
4938
4808
|
sortYBandAxis,
|
4939
|
-
|
4809
|
+
sortLegend_sortLegend,
|
4940
4810
|
barPercentConfig,
|
4941
4811
|
theme_theme,
|
4942
4812
|
markStyle_markStyle,
|
@@ -5000,14 +4870,14 @@
|
|
5000
4870
|
initAdvancedVSeed_initAdvancedVSeed,
|
5001
4871
|
autoMeasures_autoMeasures,
|
5002
4872
|
autoDimensions_autoDimensions,
|
4873
|
+
encodingForColumn,
|
5003
4874
|
pivotAdapter([
|
5004
|
-
|
4875
|
+
reshapeWithEncoding
|
5005
4876
|
], [
|
5006
|
-
|
4877
|
+
pivotReshapeWithEncoding
|
5007
4878
|
]),
|
5008
|
-
encodingXY,
|
5009
4879
|
sortXBandAxis,
|
5010
|
-
|
4880
|
+
sortLegend_sortLegend,
|
5011
4881
|
areaConfig,
|
5012
4882
|
theme_theme,
|
5013
4883
|
markStyle_markStyle,
|
@@ -5018,13 +4888,13 @@
|
|
5018
4888
|
...spec
|
5019
4889
|
};
|
5020
4890
|
const { advancedVSeed } = context;
|
5021
|
-
const {
|
5022
|
-
|
4891
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
4892
|
+
const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
|
5023
4893
|
result.type = 'area';
|
5024
4894
|
result.direction = 'vertical';
|
5025
|
-
result.
|
5026
|
-
result.
|
5027
|
-
result.seriesField =
|
4895
|
+
result.yField = foldInfo.measureValue;
|
4896
|
+
result.xField = unfoldInfo.encodingX;
|
4897
|
+
result.seriesField = unfoldInfo.encodingColorId;
|
5028
4898
|
result.padding = 0;
|
5029
4899
|
result.region = [
|
5030
4900
|
{
|
@@ -5036,8 +4906,9 @@
|
|
5036
4906
|
};
|
5037
4907
|
const areaStyle_areaStyle = (spec, context)=>{
|
5038
4908
|
const { advancedVSeed } = context;
|
5039
|
-
const { markStyle,
|
4909
|
+
const { markStyle, datasetReshapeInfo, dataset } = advancedVSeed;
|
5040
4910
|
const { areaStyle } = markStyle;
|
4911
|
+
const { unfoldInfo } = datasetReshapeInfo[0];
|
5041
4912
|
if (!areaStyle) return {
|
5042
4913
|
...spec,
|
5043
4914
|
area: {
|
@@ -5050,7 +4921,7 @@
|
|
5050
4921
|
const areaStyles = Array.isArray(areaStyle) ? areaStyle : [
|
5051
4922
|
areaStyle
|
5052
4923
|
];
|
5053
|
-
const group =
|
4924
|
+
const group = unfoldInfo.encodingColorId;
|
5054
4925
|
const areaGroups = chunk_HVPVHFDT_i(dataset, (d)=>d[group ?? '']);
|
5055
4926
|
const customMap = areaStyles.reduce((result, style, index)=>{
|
5056
4927
|
const { areaColor, areaColorOpacity, areaVisible = true } = style;
|
@@ -5144,14 +5015,14 @@
|
|
5144
5015
|
initAdvancedVSeed_initAdvancedVSeed,
|
5145
5016
|
autoMeasures_autoMeasures,
|
5146
5017
|
autoDimensions_autoDimensions,
|
5018
|
+
encodingForColumn,
|
5147
5019
|
pivotAdapter([
|
5148
|
-
|
5020
|
+
reshapeWithEncoding
|
5149
5021
|
], [
|
5150
|
-
|
5022
|
+
pivotReshapeWithEncoding
|
5151
5023
|
]),
|
5152
|
-
encodingXY,
|
5153
5024
|
sortXBandAxis,
|
5154
|
-
|
5025
|
+
sortLegend_sortLegend,
|
5155
5026
|
areaPercentConfig,
|
5156
5027
|
theme_theme,
|
5157
5028
|
markStyle_markStyle,
|
@@ -5216,16 +5087,20 @@
|
|
5216
5087
|
Builder._advancedPipelineMap.areaPercent = areaPercentAdvancedPipeline;
|
5217
5088
|
Builder._specPipelineMap.areaPercent = areaPercentSpecPipeline;
|
5218
5089
|
};
|
5219
|
-
const
|
5090
|
+
const autoScatterMeasures = (advancedVSeed, context)=>{
|
5220
5091
|
const result = {
|
5221
5092
|
...advancedVSeed
|
5222
5093
|
};
|
5223
5094
|
const { vseed } = context;
|
5224
|
-
const {
|
5095
|
+
const { dataset, scatterMeasures, measures } = vseed;
|
5225
5096
|
if (!dataset) throw new Error('dataset is required');
|
5226
5097
|
if (0 === dataset.length) return result;
|
5227
|
-
if (
|
5228
|
-
result.measures =
|
5098
|
+
if (scatterMeasures) {
|
5099
|
+
result.measures = scatterMeasuresToMeasureTree(scatterMeasures);
|
5100
|
+
return result;
|
5101
|
+
}
|
5102
|
+
if (measures && measureDepth(measures) > 1) {
|
5103
|
+
result.measures = measures;
|
5229
5104
|
return result;
|
5230
5105
|
}
|
5231
5106
|
const top100dataset = dataset.slice(0, 100);
|
@@ -5233,7 +5108,7 @@
|
|
5233
5108
|
...prev,
|
5234
5109
|
...cur
|
5235
5110
|
}), {});
|
5236
|
-
const newMeasures = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
|
5111
|
+
const newMeasures = measures || Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
|
5237
5112
|
'',
|
5238
5113
|
null,
|
5239
5114
|
void 0
|
@@ -5241,693 +5116,277 @@
|
|
5241
5116
|
id: measure,
|
5242
5117
|
alias: measure
|
5243
5118
|
}));
|
5244
|
-
result.measures =
|
5119
|
+
if (0 === newMeasures.length) result.measures = [];
|
5120
|
+
else if (1 === newMeasures.length) result.measures = [
|
5121
|
+
{
|
5122
|
+
id: 'primary',
|
5123
|
+
alias: 'primary',
|
5124
|
+
children: newMeasures
|
5125
|
+
}
|
5126
|
+
];
|
5127
|
+
else if (newMeasures.length > 1) result.measures = [
|
5128
|
+
{
|
5129
|
+
id: 'primary',
|
5130
|
+
alias: 'primary',
|
5131
|
+
children: newMeasures.slice(0, 1)
|
5132
|
+
},
|
5133
|
+
{
|
5134
|
+
id: 'secondary',
|
5135
|
+
alias: 'secondary',
|
5136
|
+
children: newMeasures.slice(1)
|
5137
|
+
}
|
5138
|
+
];
|
5245
5139
|
return result;
|
5246
5140
|
};
|
5247
|
-
const
|
5248
|
-
const
|
5249
|
-
|
5250
|
-
|
5251
|
-
|
5252
|
-
|
5253
|
-
|
5254
|
-
|
5255
|
-
|
5256
|
-
|
5257
|
-
|
5258
|
-
|
5259
|
-
|
5260
|
-
|
5261
|
-
|
5262
|
-
|
5141
|
+
const scatterMeasuresToMeasureTree = (scatterMeasures)=>{
|
5142
|
+
const measureTree = scatterMeasures.map((item, index)=>{
|
5143
|
+
const { xMeasures, yMeasures } = item;
|
5144
|
+
const groupChildren = [];
|
5145
|
+
let id = '';
|
5146
|
+
if (xMeasures) {
|
5147
|
+
const arrXMeasures = Array.isArray(xMeasures) ? xMeasures : [
|
5148
|
+
xMeasures
|
5149
|
+
];
|
5150
|
+
const alias = arrXMeasures.map((item)=>item.alias || item.id).toString();
|
5151
|
+
id += alias;
|
5152
|
+
groupChildren.push({
|
5153
|
+
id: `${index}-x`,
|
5154
|
+
alias: arrXMeasures.map((item)=>item.alias || item.id).toString(),
|
5155
|
+
children: arrXMeasures
|
5156
|
+
});
|
5157
|
+
}
|
5158
|
+
if (yMeasures) {
|
5159
|
+
const arrYMeasures = Array.isArray(yMeasures) ? yMeasures : [
|
5160
|
+
yMeasures
|
5161
|
+
];
|
5162
|
+
const alias = arrYMeasures.map((item)=>item.alias || item.id).toString();
|
5163
|
+
id += alias;
|
5164
|
+
groupChildren.push({
|
5165
|
+
id: `${index}-y`,
|
5166
|
+
alias: arrYMeasures.map((item)=>item.alias || item.id).toString(),
|
5167
|
+
children: arrYMeasures
|
5168
|
+
});
|
5169
|
+
}
|
5170
|
+
return {
|
5171
|
+
id,
|
5172
|
+
alias: id,
|
5173
|
+
children: groupChildren
|
5174
|
+
};
|
5263
5175
|
});
|
5264
|
-
|
5265
|
-
|
5266
|
-
foldInfo: {
|
5267
|
-
foldMap: {},
|
5268
|
-
measureId: '',
|
5269
|
-
measureName: '',
|
5270
|
-
measureValue: ''
|
5271
|
-
},
|
5272
|
-
unfoldInfo: {
|
5273
|
-
groupName: '',
|
5274
|
-
groupId: '',
|
5275
|
-
colorItems: [],
|
5276
|
-
colorIdMap: {}
|
5277
|
-
}
|
5176
|
+
if (1 === scatterMeasures.length) return measureTree[0].children || [];
|
5177
|
+
return measureTree;
|
5278
5178
|
};
|
5279
|
-
const
|
5280
|
-
const {
|
5281
|
-
|
5282
|
-
if (
|
5283
|
-
|
5179
|
+
const encodingForScatter = (advancedVSeed, context)=>{
|
5180
|
+
const { vseed } = context;
|
5181
|
+
const { dimensions } = advancedVSeed;
|
5182
|
+
if (!dimensions) return advancedVSeed;
|
5183
|
+
const encoding = vseed.encoding;
|
5184
|
+
if (encoding) {
|
5185
|
+
const detail = encoding.detail || [];
|
5186
|
+
const color = encoding.color || [];
|
5187
|
+
const mergedDetail = chunk_QJLMYOTX_i([
|
5188
|
+
...color,
|
5189
|
+
...detail
|
5190
|
+
]);
|
5284
5191
|
return {
|
5285
|
-
|
5286
|
-
|
5287
|
-
|
5288
|
-
|
5289
|
-
measureName: foldMeasureName,
|
5290
|
-
measureValue: foldMeasureValue
|
5291
|
-
},
|
5292
|
-
unfoldInfo
|
5293
|
-
};
|
5294
|
-
}
|
5295
|
-
{
|
5296
|
-
const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(dataset, [
|
5297
|
-
...dimensions
|
5298
|
-
], [
|
5299
|
-
{
|
5300
|
-
id: foldMeasureValue,
|
5301
|
-
alias: i18n`指标值`
|
5192
|
+
...advancedVSeed,
|
5193
|
+
encoding: {
|
5194
|
+
...encoding,
|
5195
|
+
detail: mergedDetail
|
5302
5196
|
}
|
5303
|
-
], 0, unfoldDimensionGroup, unfoldDimensionGroupId, foldMeasureId);
|
5304
|
-
return {
|
5305
|
-
dataset: finalDataset,
|
5306
|
-
foldInfo: {
|
5307
|
-
foldMap: {},
|
5308
|
-
measureId: foldMeasureId,
|
5309
|
-
measureName: foldMeasureName,
|
5310
|
-
measureValue: foldMeasureValue
|
5311
|
-
},
|
5312
|
-
unfoldInfo
|
5313
5197
|
};
|
5314
5198
|
}
|
5199
|
+
const dimensionsWithoutMeasureName = dimensions.filter((item)=>item.id !== MeasureName);
|
5200
|
+
const mergedEncoding = {
|
5201
|
+
color: dimensions.slice(0).map((item)=>item.id),
|
5202
|
+
detail: dimensionsWithoutMeasureName.slice(0).map((item)=>item.id),
|
5203
|
+
tooltip: dimensionsWithoutMeasureName.map((item)=>item.id),
|
5204
|
+
label: [],
|
5205
|
+
row: [],
|
5206
|
+
column: []
|
5207
|
+
};
|
5208
|
+
return {
|
5209
|
+
...advancedVSeed,
|
5210
|
+
encoding: mergedEncoding
|
5211
|
+
};
|
5315
5212
|
};
|
5316
|
-
const
|
5213
|
+
const reshapeWithScatterEncoding = (advancedVSeed, context)=>{
|
5317
5214
|
const result = {
|
5318
5215
|
...advancedVSeed
|
5319
5216
|
};
|
5320
5217
|
const { vseed } = context;
|
5321
5218
|
const { dataset } = vseed;
|
5322
|
-
const { dimensions, measures } = advancedVSeed;
|
5323
|
-
if (!measures || !dimensions || !dataset) return result;
|
5219
|
+
const { dimensions, measures, encoding, chartType } = advancedVSeed;
|
5220
|
+
if (!measures || !dimensions || !dataset || !encoding) return result;
|
5324
5221
|
if (0 === measures.length) throw new Error('measures can not be empty');
|
5325
|
-
|
5222
|
+
if (measures.length > 2) throw new Error('measures can not be more than 2');
|
5223
|
+
const foldInfoList = [];
|
5224
|
+
const unfoldInfoList = [];
|
5225
|
+
const datasets = [];
|
5226
|
+
const xMeasures = measures[0];
|
5227
|
+
const yMeasures = measures[1] || xMeasures;
|
5228
|
+
if (xMeasures && xMeasures.children) {
|
5229
|
+
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, xMeasures.children, encoding, {
|
5230
|
+
foldMeasureValue: FoldXMeasureValue,
|
5231
|
+
colorItemAsId: true
|
5232
|
+
});
|
5233
|
+
datasets.push(newDataset);
|
5234
|
+
foldInfoList.push(foldInfo);
|
5235
|
+
unfoldInfoList.push(unfoldInfo);
|
5236
|
+
}
|
5237
|
+
if (yMeasures && yMeasures.children) {
|
5238
|
+
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(datasets[0], dimensions, yMeasures.children, encoding, {
|
5239
|
+
foldMeasureValue: FoldYMeasureValue,
|
5240
|
+
colorItemAsId: true
|
5241
|
+
});
|
5242
|
+
datasets[0] = newDataset;
|
5243
|
+
foldInfoList.push(foldInfo);
|
5244
|
+
unfoldInfoList.push(unfoldInfo);
|
5245
|
+
}
|
5246
|
+
const unfoldInfo = {
|
5247
|
+
...unfoldInfoList[0],
|
5248
|
+
colorItems: unfoldInfoList.flatMap((d)=>d.colorItems),
|
5249
|
+
colorIdMap: unfoldInfoList.reduce((prev, cur)=>({
|
5250
|
+
...prev,
|
5251
|
+
...cur.colorIdMap
|
5252
|
+
}), {})
|
5253
|
+
};
|
5326
5254
|
return {
|
5327
5255
|
...result,
|
5328
|
-
dataset:
|
5256
|
+
dataset: datasets[0],
|
5329
5257
|
datasetReshapeInfo: [
|
5330
5258
|
{
|
5331
|
-
id:
|
5259
|
+
id: String(chartType),
|
5332
5260
|
index: 0,
|
5333
|
-
foldInfo,
|
5334
|
-
|
5261
|
+
foldInfo: foldInfoList[0],
|
5262
|
+
foldInfoList: foldInfoList,
|
5263
|
+
unfoldInfo: unfoldInfo
|
5335
5264
|
}
|
5336
5265
|
]
|
5337
5266
|
};
|
5338
5267
|
};
|
5339
|
-
const
|
5268
|
+
const pivotReshapeWithScatterEncoding = (advancedVSeed, context)=>{
|
5340
5269
|
const result = {
|
5341
5270
|
...advancedVSeed
|
5342
5271
|
};
|
5343
5272
|
const { vseed } = context;
|
5344
5273
|
const { dataset } = vseed;
|
5345
|
-
const { measures } = advancedVSeed;
|
5346
|
-
|
5347
|
-
if (!measures || !dimensions) return result;
|
5274
|
+
const { dimensions, measures, encoding, chartType } = advancedVSeed;
|
5275
|
+
if (!measures || !dimensions || !dataset || !encoding) return result;
|
5348
5276
|
const measureGroups = [];
|
5349
|
-
|
5350
|
-
|
5277
|
+
const depth = measureDepth(measures);
|
5278
|
+
if (3 === depth) measures.forEach((measure)=>{
|
5279
|
+
measureGroups.push(measure.children);
|
5351
5280
|
});
|
5352
|
-
|
5281
|
+
else if (2 === depth) measureGroups.push(measures);
|
5282
|
+
const datasetList = [];
|
5353
5283
|
const datasetReshapeInfo = [];
|
5354
|
-
measureGroups.forEach((
|
5355
|
-
|
5356
|
-
if (
|
5357
|
-
const
|
5358
|
-
const
|
5359
|
-
const
|
5360
|
-
|
5361
|
-
|
5362
|
-
|
5363
|
-
|
5364
|
-
|
5284
|
+
measureGroups.forEach((measures, index)=>{
|
5285
|
+
if (0 === measures.length) throw new Error('measures can not be empty');
|
5286
|
+
if (measures.length > 2) throw new Error('measures can not be more than 2');
|
5287
|
+
const foldInfoList = [];
|
5288
|
+
const unfoldInfoList = [];
|
5289
|
+
const datasets = [];
|
5290
|
+
const xMeasures = measures[0];
|
5291
|
+
const yMeasures = measures[1] || xMeasures;
|
5292
|
+
if (xMeasures && xMeasures.children) {
|
5293
|
+
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, xMeasures.children, encoding, {
|
5294
|
+
foldMeasureValue: `${FoldXMeasureValue}${index}`,
|
5295
|
+
colorItemAsId: true
|
5296
|
+
});
|
5297
|
+
datasets.push(newDataset);
|
5298
|
+
foldInfoList.push(foldInfo);
|
5299
|
+
unfoldInfoList.push(unfoldInfo);
|
5300
|
+
}
|
5301
|
+
if (yMeasures && yMeasures.children) {
|
5302
|
+
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, yMeasures.children, encoding, {
|
5303
|
+
foldMeasureValue: `${FoldYMeasureValue}${index}`,
|
5304
|
+
colorItemAsId: true
|
5305
|
+
});
|
5306
|
+
datasets.push(newDataset);
|
5307
|
+
foldInfoList.push(foldInfo);
|
5308
|
+
unfoldInfoList.push(unfoldInfo);
|
5309
|
+
}
|
5310
|
+
const unfoldInfo = {
|
5311
|
+
...unfoldInfoList[0],
|
5312
|
+
colorItems: unfoldInfoList.flatMap((d)=>d.colorItems),
|
5313
|
+
colorIdMap: unfoldInfoList.reduce((prev, cur)=>({
|
5314
|
+
...prev,
|
5315
|
+
...cur.colorIdMap
|
5316
|
+
}), {})
|
5317
|
+
};
|
5365
5318
|
const reshapeInfo = {
|
5366
|
-
id:
|
5319
|
+
id: `${chartType}-${index}`,
|
5367
5320
|
index,
|
5368
|
-
foldInfo,
|
5369
|
-
|
5321
|
+
foldInfo: foldInfoList[0],
|
5322
|
+
foldInfoList: foldInfoList,
|
5323
|
+
unfoldInfo: unfoldInfo
|
5370
5324
|
};
|
5371
|
-
newDatasets.push(newSubDataset);
|
5372
5325
|
datasetReshapeInfo.push(reshapeInfo);
|
5326
|
+
datasetList.push(datasets[0].map((d, index)=>({
|
5327
|
+
...d,
|
5328
|
+
...datasets[1]?.[index] || {}
|
5329
|
+
})));
|
5373
5330
|
});
|
5374
5331
|
return {
|
5375
5332
|
...result,
|
5376
|
-
dataset:
|
5333
|
+
dataset: datasetList,
|
5377
5334
|
datasetReshapeInfo: datasetReshapeInfo
|
5378
5335
|
};
|
5379
5336
|
};
|
5380
|
-
const
|
5381
|
-
const result = {
|
5382
|
-
...advancedVSeed
|
5383
|
-
};
|
5384
|
-
const { datasetReshapeInfo, measures } = advancedVSeed;
|
5385
|
-
if (!datasetReshapeInfo || !measures) return result;
|
5386
|
-
const encoding = datasetReshapeInfo.reduce((prev, cur, index)=>{
|
5387
|
-
const measure = measures[index];
|
5388
|
-
if ('children' in measure) {
|
5389
|
-
const m1 = measure.children?.[0];
|
5390
|
-
const m2 = measure.children?.[1] || m1;
|
5391
|
-
const { foldInfo, unfoldInfo } = cur;
|
5392
|
-
const x = [
|
5393
|
-
unfoldInfo.groupId
|
5394
|
-
];
|
5395
|
-
const y = [
|
5396
|
-
m1?.id,
|
5397
|
-
m2?.id
|
5398
|
-
];
|
5399
|
-
const group = [
|
5400
|
-
unfoldInfo.groupId
|
5401
|
-
];
|
5402
|
-
const color = [
|
5403
|
-
foldInfo.measureName
|
5404
|
-
];
|
5405
|
-
return [
|
5406
|
-
...prev,
|
5407
|
-
{
|
5408
|
-
x,
|
5409
|
-
y,
|
5410
|
-
group,
|
5411
|
-
color
|
5412
|
-
}
|
5413
|
-
];
|
5414
|
-
}
|
5415
|
-
{
|
5416
|
-
const m1 = measures[index];
|
5417
|
-
const m2 = measures[index + 1] || m1;
|
5418
|
-
const { foldInfo, unfoldInfo } = cur;
|
5419
|
-
const x = [
|
5420
|
-
unfoldInfo.groupId
|
5421
|
-
];
|
5422
|
-
const y = [
|
5423
|
-
m1.id,
|
5424
|
-
m2.id
|
5425
|
-
];
|
5426
|
-
const group = [
|
5427
|
-
unfoldInfo.groupId
|
5428
|
-
];
|
5429
|
-
const color = [
|
5430
|
-
foldInfo.measureName
|
5431
|
-
];
|
5432
|
-
return [
|
5433
|
-
...prev,
|
5434
|
-
{
|
5435
|
-
x,
|
5436
|
-
y,
|
5437
|
-
group,
|
5438
|
-
color
|
5439
|
-
}
|
5440
|
-
];
|
5441
|
-
}
|
5442
|
-
}, []);
|
5443
|
-
return {
|
5444
|
-
...result,
|
5445
|
-
encoding
|
5446
|
-
};
|
5447
|
-
};
|
5448
|
-
const areaRangeAdvancedPipeline = [
|
5337
|
+
const scatterAdvancedPipeline = [
|
5449
5338
|
initAdvancedVSeed_initAdvancedVSeed,
|
5450
|
-
|
5339
|
+
autoScatterMeasures,
|
5451
5340
|
autoDimensions_autoDimensions,
|
5341
|
+
encodingForScatter,
|
5452
5342
|
pivotAdapter([
|
5453
|
-
|
5343
|
+
reshapeWithScatterEncoding
|
5454
5344
|
], [
|
5455
|
-
|
5345
|
+
pivotReshapeWithScatterEncoding
|
5456
5346
|
]),
|
5457
|
-
|
5458
|
-
sortXBandAxis,
|
5459
|
-
areaConfig,
|
5347
|
+
scatterConfig,
|
5460
5348
|
theme_theme,
|
5461
5349
|
markStyle_markStyle,
|
5462
5350
|
annotation_annotation
|
5463
5351
|
];
|
5464
|
-
const
|
5352
|
+
const initScatter = (spec, context)=>{
|
5465
5353
|
const result = {
|
5466
|
-
|
5467
|
-
padding: 0,
|
5468
|
-
region: [
|
5469
|
-
{
|
5470
|
-
clip: true
|
5471
|
-
}
|
5472
|
-
]
|
5354
|
+
...spec
|
5473
5355
|
};
|
5474
|
-
|
5475
|
-
|
5476
|
-
|
5356
|
+
const { advancedVSeed } = context;
|
5357
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
5358
|
+
const { unfoldInfo, foldInfoList } = datasetReshapeInfo[0];
|
5359
|
+
result.type = 'scatter';
|
5360
|
+
result.direction = 'vertical';
|
5361
|
+
result.xField = foldInfoList?.[0].measureValue;
|
5362
|
+
if (foldInfoList?.[1]) result.yField = foldInfoList[1].measureValue;
|
5363
|
+
result.seriesField = unfoldInfo.encodingColorId;
|
5364
|
+
result.padding = 0;
|
5365
|
+
result.region = [
|
5366
|
+
{
|
5367
|
+
clip: true
|
5368
|
+
}
|
5369
|
+
];
|
5370
|
+
result.animation = true;
|
5371
|
+
return result;
|
5372
|
+
};
|
5373
|
+
const datasetScatter = (spec, context)=>{
|
5374
|
+
const { advancedVSeed, vseed } = context;
|
5375
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
5376
|
+
const id = datasetReshapeInfo[0].id;
|
5377
|
+
const fields = {};
|
5378
|
+
return {
|
5379
|
+
...spec,
|
5380
|
+
data: {
|
5381
|
+
id,
|
5382
|
+
values: isPivotChart(vseed) ? void 0 : advancedVSeed.dataset.flat(),
|
5383
|
+
fields: fields
|
5384
|
+
}
|
5477
5385
|
};
|
5478
5386
|
};
|
5479
|
-
const
|
5387
|
+
const horizontalCrosshairLine = (spec, context)=>{
|
5480
5388
|
const result = {
|
5481
|
-
|
5482
|
-
padding: 0,
|
5483
|
-
region: [
|
5484
|
-
{
|
5485
|
-
clip: true
|
5486
|
-
}
|
5487
|
-
]
|
5488
|
-
};
|
5489
|
-
const createDualContext = (context, index)=>{
|
5490
|
-
const { advancedVSeed } = context;
|
5491
|
-
const dataset = advancedVSeed.dataset[index];
|
5492
|
-
return {
|
5493
|
-
...context,
|
5494
|
-
advancedVSeed: {
|
5495
|
-
...advancedVSeed,
|
5496
|
-
dataset: dataset
|
5497
|
-
}
|
5498
|
-
};
|
5499
|
-
};
|
5500
|
-
return (_, context)=>{
|
5501
|
-
result.series = args.map((pipeline, index)=>{
|
5502
|
-
const seriesContext = createDualContext(context, index);
|
5503
|
-
return execPipeline(pipeline, seriesContext, {});
|
5504
|
-
});
|
5505
|
-
return result;
|
5506
|
-
};
|
5507
|
-
};
|
5508
|
-
const initAreaRange = (spec, context)=>{
|
5509
|
-
const result = {
|
5510
|
-
...spec
|
5511
|
-
};
|
5512
|
-
const { advancedVSeed } = context;
|
5513
|
-
const { encoding } = advancedVSeed;
|
5514
|
-
if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
|
5515
|
-
const { color } = advancedVSeed.config.areaRange;
|
5516
|
-
result.type = 'rangeArea';
|
5517
|
-
result.direction = 'vertical';
|
5518
|
-
result.stack = false;
|
5519
|
-
result.xField = encoding[0].x[0];
|
5520
|
-
result.yField = [
|
5521
|
-
encoding[0].y[0],
|
5522
|
-
encoding[0].y[1]
|
5523
|
-
];
|
5524
|
-
result.animation = true;
|
5525
|
-
result.area = {
|
5526
|
-
style: {
|
5527
|
-
fill: color.colorScheme?.[0]
|
5528
|
-
}
|
5529
|
-
};
|
5530
|
-
return result;
|
5531
|
-
};
|
5532
|
-
const initAreaRangeLine1 = (spec, context)=>{
|
5533
|
-
const result = {
|
5534
|
-
...spec
|
5535
|
-
};
|
5536
|
-
const { advancedVSeed } = context;
|
5537
|
-
const { encoding } = advancedVSeed;
|
5538
|
-
if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
|
5539
|
-
const { color } = advancedVSeed.config.areaRange;
|
5540
|
-
result.type = 'line';
|
5541
|
-
result.direction = 'vertical';
|
5542
|
-
result.stack = false;
|
5543
|
-
result.xField = encoding[0].x[0];
|
5544
|
-
result.yField = [
|
5545
|
-
encoding[0].y[0]
|
5546
|
-
];
|
5547
|
-
result.animation = true;
|
5548
|
-
result.line = {
|
5549
|
-
style: {
|
5550
|
-
stroke: color.colorScheme?.[0]
|
5551
|
-
}
|
5552
|
-
};
|
5553
|
-
result.point = {
|
5554
|
-
style: {
|
5555
|
-
visible: false,
|
5556
|
-
fill: color.colorScheme?.[0]
|
5557
|
-
}
|
5558
|
-
};
|
5559
|
-
return result;
|
5560
|
-
};
|
5561
|
-
const initAreaRangeLine2 = (spec, context)=>{
|
5562
|
-
const result = {
|
5563
|
-
...spec
|
5564
|
-
};
|
5565
|
-
const { advancedVSeed } = context;
|
5566
|
-
const { encoding } = advancedVSeed;
|
5567
|
-
if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
|
5568
|
-
const { color } = advancedVSeed.config.areaRange;
|
5569
|
-
result.type = 'line';
|
5570
|
-
result.direction = 'vertical';
|
5571
|
-
result.stack = false;
|
5572
|
-
result.xField = encoding[0].x[0];
|
5573
|
-
result.yField = [
|
5574
|
-
encoding[0].y[1]
|
5575
|
-
];
|
5576
|
-
result.animation = true;
|
5577
|
-
result.line = {
|
5578
|
-
style: {
|
5579
|
-
stroke: color.colorScheme?.[0]
|
5580
|
-
}
|
5581
|
-
};
|
5582
|
-
result.point = {
|
5583
|
-
style: {
|
5584
|
-
visible: false,
|
5585
|
-
fill: color.colorScheme?.[0]
|
5586
|
-
}
|
5587
|
-
};
|
5588
|
-
return result;
|
5589
|
-
};
|
5590
|
-
const tooltipDisable = (spec)=>{
|
5591
|
-
const result = {
|
5592
|
-
...spec
|
5593
|
-
};
|
5594
|
-
result.tooltip = {
|
5595
|
-
visible: false
|
5596
|
-
};
|
5597
|
-
return result;
|
5598
|
-
};
|
5599
|
-
const tooltipAreaRange = (spec, context)=>{
|
5600
|
-
const result = {
|
5601
|
-
...spec
|
5602
|
-
};
|
5603
|
-
const { advancedVSeed } = context;
|
5604
|
-
const { measures, datasetReshapeInfo, chartType, locale, encoding } = advancedVSeed;
|
5605
|
-
const baseConfig = advancedVSeed.config[chartType];
|
5606
|
-
const { tooltip = {
|
5607
|
-
enable: true
|
5608
|
-
} } = baseConfig;
|
5609
|
-
const { enable } = tooltip;
|
5610
|
-
const { groupName } = datasetReshapeInfo[0].unfoldInfo;
|
5611
|
-
const y = encoding[0]?.y || [];
|
5612
|
-
result.tooltip = {
|
5613
|
-
visible: enable,
|
5614
|
-
dimension: {
|
5615
|
-
content: [
|
5616
|
-
{
|
5617
|
-
visible: true,
|
5618
|
-
key: (datum)=>datum && datum[groupName] || '',
|
5619
|
-
value: (datum)=>{
|
5620
|
-
if (!datum) return '';
|
5621
|
-
const text = y.map((id)=>{
|
5622
|
-
const value = datum[id];
|
5623
|
-
const measure = findMeasureById(measures, id);
|
5624
|
-
if (!measure) return String(value);
|
5625
|
-
const { format = {}, autoFormat = true } = measure;
|
5626
|
-
if (!chunk_VCYTMP4D_n(format)) {
|
5627
|
-
const formatter = createFormatter(format);
|
5628
|
-
return formatter(value);
|
5629
|
-
}
|
5630
|
-
if (autoFormat) return autoFormatter(value, locale);
|
5631
|
-
return String(value);
|
5632
|
-
});
|
5633
|
-
return text.join(' ~ ');
|
5634
|
-
},
|
5635
|
-
shapeType: 'rectRound'
|
5636
|
-
},
|
5637
|
-
...y.map((id)=>{
|
5638
|
-
const measure = findMeasureById(measures, id);
|
5639
|
-
return {
|
5640
|
-
visible: true,
|
5641
|
-
key: measure?.alias || id,
|
5642
|
-
value: (datum)=>{
|
5643
|
-
if (!datum) return '';
|
5644
|
-
const value = datum[id];
|
5645
|
-
const measure = findMeasureById(measures, id);
|
5646
|
-
if (!measure) return String(value);
|
5647
|
-
const { format = {}, autoFormat = true } = measure;
|
5648
|
-
if (!chunk_VCYTMP4D_n(format)) {
|
5649
|
-
const formatter = createFormatter(format);
|
5650
|
-
return formatter(value);
|
5651
|
-
}
|
5652
|
-
if (autoFormat) return autoFormatter(value, locale);
|
5653
|
-
return String(value);
|
5654
|
-
},
|
5655
|
-
shapeType: 'rectRound'
|
5656
|
-
};
|
5657
|
-
})
|
5658
|
-
]
|
5659
|
-
}
|
5660
|
-
};
|
5661
|
-
return result;
|
5662
|
-
};
|
5663
|
-
const areaRange = [
|
5664
|
-
series([
|
5665
|
-
initAreaRange,
|
5666
|
-
areaStyle_areaStyle
|
5667
|
-
], [
|
5668
|
-
initAreaRangeLine1,
|
5669
|
-
lineStyle_lineStyle,
|
5670
|
-
pointStyle_pointStyle,
|
5671
|
-
pointStateDimensionHover,
|
5672
|
-
tooltipDisable
|
5673
|
-
], [
|
5674
|
-
initAreaRangeLine2,
|
5675
|
-
lineStyle_lineStyle,
|
5676
|
-
pointStyle_pointStyle,
|
5677
|
-
pointStateDimensionHover,
|
5678
|
-
tooltipDisable
|
5679
|
-
]),
|
5680
|
-
datasetXY,
|
5681
|
-
progressive,
|
5682
|
-
background_backgroundColor,
|
5683
|
-
xBand,
|
5684
|
-
yLinear,
|
5685
|
-
label_label,
|
5686
|
-
tooltipAreaRange,
|
5687
|
-
verticalCrosshairLine,
|
5688
|
-
annotationPoint_annotationPoint,
|
5689
|
-
annotationVerticalLine_annotationVerticalLine,
|
5690
|
-
annotationHorizontalLine_annotationHorizontalLine,
|
5691
|
-
annotationArea_annotationArea
|
5692
|
-
];
|
5693
|
-
const pivotAreaRange = [
|
5694
|
-
initPivot,
|
5695
|
-
pivotGridStyle,
|
5696
|
-
pivotIndicators_pivotIndicatorsAsRow,
|
5697
|
-
datasetPivot,
|
5698
|
-
pivotIndicators_pivotIndicators([
|
5699
|
-
series([
|
5700
|
-
initAreaRange,
|
5701
|
-
areaStyle_areaStyle
|
5702
|
-
], [
|
5703
|
-
initAreaRangeLine1,
|
5704
|
-
lineStyle_lineStyle,
|
5705
|
-
pointStyle_pointStyle,
|
5706
|
-
pointStateDimensionHover,
|
5707
|
-
tooltipDisable
|
5708
|
-
], [
|
5709
|
-
initAreaRangeLine2,
|
5710
|
-
lineStyle_lineStyle,
|
5711
|
-
pointStyle_pointStyle,
|
5712
|
-
pointStateDimensionHover,
|
5713
|
-
tooltipDisable
|
5714
|
-
]),
|
5715
|
-
background_backgroundColor,
|
5716
|
-
datasetXY,
|
5717
|
-
progressive,
|
5718
|
-
xBand,
|
5719
|
-
yLinear,
|
5720
|
-
label_label,
|
5721
|
-
tooltipAreaRange,
|
5722
|
-
verticalCrosshairLine,
|
5723
|
-
annotationPoint_annotationPoint,
|
5724
|
-
annotationVerticalLine_annotationVerticalLine,
|
5725
|
-
annotationHorizontalLine_annotationHorizontalLine,
|
5726
|
-
annotationArea_annotationArea
|
5727
|
-
]),
|
5728
|
-
pivotRowDimensions,
|
5729
|
-
pivotColumnDimensions
|
5730
|
-
];
|
5731
|
-
const areaRangeSpecPipeline = [
|
5732
|
-
pivotAdapter_pivotAdapter(areaRange, pivotAreaRange)
|
5733
|
-
];
|
5734
|
-
const registerAreaRange = ()=>{
|
5735
|
-
Builder._advancedPipelineMap.areaRange = areaRangeAdvancedPipeline;
|
5736
|
-
Builder._specPipelineMap.areaRange = areaRangeSpecPipeline;
|
5737
|
-
};
|
5738
|
-
const dataReshapeFor1D2M_emptyReshapeResult = {
|
5739
|
-
dataset: [],
|
5740
|
-
foldInfo: {
|
5741
|
-
foldMap: {},
|
5742
|
-
measureId: '',
|
5743
|
-
measureName: '',
|
5744
|
-
measureValue: ''
|
5745
|
-
},
|
5746
|
-
unfoldInfo: {
|
5747
|
-
groupName: '',
|
5748
|
-
groupId: '',
|
5749
|
-
colorItems: [],
|
5750
|
-
colorIdMap: {}
|
5751
|
-
}
|
5752
|
-
};
|
5753
|
-
const dataReshapeFor1D2M = (dataset, dimensions, measures, options)=>{
|
5754
|
-
const { foldMeasureId = FoldMeasureId, foldMeasureName = FoldMeasureName, foldMeasureValue = FoldMeasureValue, unfoldDimensionGroup = UnfoldDimensionGroup, unfoldDimensionGroupId = UnfoldDimensionGroupId } = options || {};
|
5755
|
-
if (0 === dimensions.length && 0 === measures.length) return dataReshapeFor1D2M_emptyReshapeResult;
|
5756
|
-
const { dataset: foldedDataset, foldInfo } = foldMeasures(dataset, measures.length > 1 ? measures.slice(1) : measures, foldMeasureId, foldMeasureName, foldMeasureValue);
|
5757
|
-
if (0 === dimensions.length) {
|
5758
|
-
const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, [
|
5759
|
-
{
|
5760
|
-
id: foldMeasureValue,
|
5761
|
-
alias: i18n`指标值`,
|
5762
|
-
location: 'dimension'
|
5763
|
-
}
|
5764
|
-
], [
|
5765
|
-
{
|
5766
|
-
id: foldMeasureValue,
|
5767
|
-
alias: i18n`指标值`
|
5768
|
-
}
|
5769
|
-
], 0, unfoldDimensionGroup, unfoldDimensionGroupId, foldMeasureId);
|
5770
|
-
return {
|
5771
|
-
dataset: finalDataset,
|
5772
|
-
foldInfo,
|
5773
|
-
unfoldInfo
|
5774
|
-
};
|
5775
|
-
}
|
5776
|
-
{
|
5777
|
-
const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, [
|
5778
|
-
...dimensions
|
5779
|
-
], [
|
5780
|
-
{
|
5781
|
-
id: foldMeasureValue,
|
5782
|
-
alias: i18n`指标值`
|
5783
|
-
}
|
5784
|
-
], 0, unfoldDimensionGroup, unfoldDimensionGroupId, foldMeasureId);
|
5785
|
-
return {
|
5786
|
-
dataset: finalDataset,
|
5787
|
-
foldInfo,
|
5788
|
-
unfoldInfo
|
5789
|
-
};
|
5790
|
-
}
|
5791
|
-
};
|
5792
|
-
const reshapeTo1D2M = (advancedVSeed, context)=>{
|
5793
|
-
const result = {
|
5794
|
-
...advancedVSeed
|
5795
|
-
};
|
5796
|
-
const { vseed } = context;
|
5797
|
-
const { dataset } = vseed;
|
5798
|
-
const { dimensions, measures } = advancedVSeed;
|
5799
|
-
if (!measures || !dimensions || !dataset) return result;
|
5800
|
-
if (0 === measures.length) throw new Error('measures can not be empty');
|
5801
|
-
const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor1D2M(dataset, dimensions, measures);
|
5802
|
-
return {
|
5803
|
-
...result,
|
5804
|
-
dataset: newDatasets,
|
5805
|
-
datasetReshapeInfo: [
|
5806
|
-
{
|
5807
|
-
id: '1D2M',
|
5808
|
-
index: 0,
|
5809
|
-
foldInfo,
|
5810
|
-
unfoldInfo
|
5811
|
-
}
|
5812
|
-
]
|
5813
|
-
};
|
5814
|
-
};
|
5815
|
-
const pivotReshapeTo1D2M = (advancedVSeed, context)=>{
|
5816
|
-
const result = {
|
5817
|
-
...advancedVSeed
|
5818
|
-
};
|
5819
|
-
const { vseed } = context;
|
5820
|
-
const { dataset } = vseed;
|
5821
|
-
const { measures } = advancedVSeed;
|
5822
|
-
const dimensions = advancedVSeed.dimensions;
|
5823
|
-
if (!measures || !dimensions) return result;
|
5824
|
-
const measureGroups = [];
|
5825
|
-
if (measures) measures.forEach((measure)=>{
|
5826
|
-
if (measure.children && measure.children.length > 0) measureGroups.push(measure);
|
5827
|
-
});
|
5828
|
-
const newDatasets = [];
|
5829
|
-
const datasetReshapeInfo = [];
|
5830
|
-
measureGroups.forEach((measureGroup, index)=>{
|
5831
|
-
const measures = measureGroup.children;
|
5832
|
-
if (!measures) return;
|
5833
|
-
const commonDimensions = dimensions.filter((dim)=>'dimension' === dim.location);
|
5834
|
-
const groupId = measureGroup.id;
|
5835
|
-
const { dataset: newSubDataset, foldInfo, unfoldInfo } = dataReshapeFor1D2M(dataset, commonDimensions, measures, {
|
5836
|
-
foldMeasureId: FoldMeasureId,
|
5837
|
-
foldMeasureName: FoldMeasureName,
|
5838
|
-
foldMeasureValue: FoldMeasureValue + groupId,
|
5839
|
-
unfoldDimensionGroup: UnfoldDimensionGroup
|
5840
|
-
});
|
5841
|
-
const reshapeInfo = {
|
5842
|
-
id: groupId,
|
5843
|
-
index,
|
5844
|
-
foldInfo,
|
5845
|
-
unfoldInfo
|
5846
|
-
};
|
5847
|
-
newDatasets.push(newSubDataset);
|
5848
|
-
datasetReshapeInfo.push(reshapeInfo);
|
5849
|
-
});
|
5850
|
-
return {
|
5851
|
-
...result,
|
5852
|
-
dataset: newDatasets,
|
5853
|
-
datasetReshapeInfo: datasetReshapeInfo
|
5854
|
-
};
|
5855
|
-
};
|
5856
|
-
const encodingYY = (advancedVSeed)=>{
|
5857
|
-
const result = {
|
5858
|
-
...advancedVSeed
|
5859
|
-
};
|
5860
|
-
const { datasetReshapeInfo, measures } = advancedVSeed;
|
5861
|
-
if (!datasetReshapeInfo || !measures) return result;
|
5862
|
-
const firstMeasure = findFirstMeasure(measures);
|
5863
|
-
const encoding = datasetReshapeInfo.reduce((prev, cur)=>{
|
5864
|
-
const { foldInfo, unfoldInfo } = cur;
|
5865
|
-
const x = [
|
5866
|
-
firstMeasure?.id
|
5867
|
-
];
|
5868
|
-
const y = [
|
5869
|
-
foldInfo.measureValue
|
5870
|
-
];
|
5871
|
-
const group = [
|
5872
|
-
unfoldInfo.groupId
|
5873
|
-
];
|
5874
|
-
const color = [
|
5875
|
-
unfoldInfo.groupId
|
5876
|
-
];
|
5877
|
-
return [
|
5878
|
-
...prev,
|
5879
|
-
{
|
5880
|
-
x,
|
5881
|
-
y,
|
5882
|
-
group,
|
5883
|
-
color
|
5884
|
-
}
|
5885
|
-
];
|
5886
|
-
}, []);
|
5887
|
-
return {
|
5888
|
-
...result,
|
5889
|
-
encoding
|
5890
|
-
};
|
5891
|
-
};
|
5892
|
-
const scatterAdvancedPipeline = [
|
5893
|
-
initAdvancedVSeed_initAdvancedVSeed,
|
5894
|
-
autoMeasures_autoMeasures,
|
5895
|
-
autoDimensions_autoDimensions,
|
5896
|
-
pivotAdapter([
|
5897
|
-
reshapeTo1D2M
|
5898
|
-
], [
|
5899
|
-
pivotReshapeTo1D2M
|
5900
|
-
]),
|
5901
|
-
encodingYY,
|
5902
|
-
scatterConfig,
|
5903
|
-
theme_theme,
|
5904
|
-
markStyle_markStyle,
|
5905
|
-
annotation_annotation
|
5906
|
-
];
|
5907
|
-
const initScatter = (spec, context)=>{
|
5908
|
-
const result = {
|
5909
|
-
...spec
|
5910
|
-
};
|
5911
|
-
const { advancedVSeed } = context;
|
5912
|
-
const { encoding } = advancedVSeed;
|
5913
|
-
if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
|
5914
|
-
result.type = 'scatter';
|
5915
|
-
result.direction = 'vertical';
|
5916
|
-
result.xField = encoding[0].x[0];
|
5917
|
-
result.yField = encoding[0].y[0];
|
5918
|
-
result.seriesField = encoding[0].group[0];
|
5919
|
-
result.padding = 0;
|
5920
|
-
result.region = [
|
5921
|
-
{
|
5922
|
-
clip: true
|
5923
|
-
}
|
5924
|
-
];
|
5925
|
-
result.animation = true;
|
5926
|
-
return result;
|
5927
|
-
};
|
5928
|
-
const horizontalCrosshairLine = (spec, context)=>{
|
5929
|
-
const result = {
|
5930
|
-
...spec
|
5389
|
+
...spec
|
5931
5390
|
};
|
5932
5391
|
const { advancedVSeed, vseed } = context;
|
5933
5392
|
const { chartType } = vseed;
|
@@ -5973,7 +5432,7 @@
|
|
5973
5432
|
initScatter,
|
5974
5433
|
color_color,
|
5975
5434
|
background_backgroundColor,
|
5976
|
-
|
5435
|
+
datasetScatter,
|
5977
5436
|
progressive,
|
5978
5437
|
xLinear,
|
5979
5438
|
yLinear,
|
@@ -5998,7 +5457,7 @@
|
|
5998
5457
|
initScatter,
|
5999
5458
|
color_color,
|
6000
5459
|
background_backgroundColor,
|
6001
|
-
|
5460
|
+
datasetScatter,
|
6002
5461
|
progressive,
|
6003
5462
|
xLinear,
|
6004
5463
|
yLinear,
|
@@ -6024,41 +5483,163 @@
|
|
6024
5483
|
Builder._advancedPipelineMap.scatter = scatterAdvancedPipeline;
|
6025
5484
|
Builder._specPipelineMap.scatter = scatterSpecPipeline;
|
6026
5485
|
};
|
6027
|
-
const
|
5486
|
+
const autoDualMeasures = (advancedVSeed, context)=>{
|
5487
|
+
const result = {
|
5488
|
+
...advancedVSeed
|
5489
|
+
};
|
5490
|
+
const { vseed } = context;
|
5491
|
+
const { dataset, dualMeasures, measures } = vseed;
|
5492
|
+
if (!dataset) throw new Error('dataset is required');
|
5493
|
+
if (0 === dataset.length) return result;
|
5494
|
+
if (dualMeasures) {
|
5495
|
+
result.measures = dualMeasuresToMeasureTree(dualMeasures);
|
5496
|
+
return result;
|
5497
|
+
}
|
5498
|
+
if (measures && measureDepth(measures) > 1) {
|
5499
|
+
result.measures = measures;
|
5500
|
+
return result;
|
5501
|
+
}
|
5502
|
+
const top100dataset = dataset.slice(0, 100);
|
5503
|
+
const sample = top100dataset.reduce((prev, cur)=>({
|
5504
|
+
...prev,
|
5505
|
+
...cur
|
5506
|
+
}), {});
|
5507
|
+
const newMeasures = measures || Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
|
5508
|
+
'',
|
5509
|
+
null,
|
5510
|
+
void 0
|
5511
|
+
].includes(key)).map((measure)=>({
|
5512
|
+
id: measure,
|
5513
|
+
alias: measure
|
5514
|
+
}));
|
5515
|
+
if (0 === newMeasures.length) result.measures = [];
|
5516
|
+
else if (1 === newMeasures.length) result.measures = [
|
5517
|
+
{
|
5518
|
+
id: 'primary',
|
5519
|
+
alias: 'primary',
|
5520
|
+
children: newMeasures
|
5521
|
+
}
|
5522
|
+
];
|
5523
|
+
else if (newMeasures.length > 1) result.measures = [
|
5524
|
+
{
|
5525
|
+
id: 'primary',
|
5526
|
+
alias: 'primary',
|
5527
|
+
children: newMeasures.slice(0, 1)
|
5528
|
+
},
|
5529
|
+
{
|
5530
|
+
id: 'secondary',
|
5531
|
+
alias: 'secondary',
|
5532
|
+
children: newMeasures.slice(1)
|
5533
|
+
}
|
5534
|
+
];
|
5535
|
+
return result;
|
5536
|
+
};
|
5537
|
+
const dualMeasuresToMeasureTree = (dualMeasures)=>{
|
5538
|
+
const measureTree = dualMeasures.map((item, index)=>{
|
5539
|
+
const { primaryMeasures, secondaryMeasures } = item;
|
5540
|
+
const groupChildren = [];
|
5541
|
+
let id = '';
|
5542
|
+
if (primaryMeasures) {
|
5543
|
+
const arrPrimaryMeasures = Array.isArray(primaryMeasures) ? primaryMeasures : [
|
5544
|
+
primaryMeasures
|
5545
|
+
];
|
5546
|
+
const alias = arrPrimaryMeasures.map((item)=>item.alias || item.id).toString();
|
5547
|
+
id += alias;
|
5548
|
+
groupChildren.push({
|
5549
|
+
id: `${index}-primary`,
|
5550
|
+
alias: arrPrimaryMeasures.map((item)=>item.alias || item.id).toString(),
|
5551
|
+
children: arrPrimaryMeasures
|
5552
|
+
});
|
5553
|
+
}
|
5554
|
+
if (secondaryMeasures) {
|
5555
|
+
const arrSecondaryMeasures = Array.isArray(secondaryMeasures) ? secondaryMeasures : [
|
5556
|
+
secondaryMeasures
|
5557
|
+
];
|
5558
|
+
const alias = arrSecondaryMeasures.map((item)=>item.alias || item.id).toString();
|
5559
|
+
id += alias;
|
5560
|
+
groupChildren.push({
|
5561
|
+
id: `${index}-secondary`,
|
5562
|
+
alias: arrSecondaryMeasures.map((item)=>item.alias || item.id).toString(),
|
5563
|
+
children: arrSecondaryMeasures
|
5564
|
+
});
|
5565
|
+
}
|
5566
|
+
return {
|
5567
|
+
id,
|
5568
|
+
alias: id,
|
5569
|
+
children: groupChildren
|
5570
|
+
};
|
5571
|
+
});
|
5572
|
+
if (1 === dualMeasures.length) return measureTree[0].children || [];
|
5573
|
+
return measureTree;
|
5574
|
+
};
|
5575
|
+
const encodingForDualAxis = (advancedVSeed, context)=>{
|
5576
|
+
const { vseed } = context;
|
5577
|
+
const { dimensions } = advancedVSeed;
|
5578
|
+
if (!dimensions) return advancedVSeed;
|
5579
|
+
const encoding = vseed.encoding;
|
5580
|
+
if (encoding) {
|
5581
|
+
const x = encoding.x || [];
|
5582
|
+
const detail = encoding.detail || [];
|
5583
|
+
const color = encoding.color || [];
|
5584
|
+
const mergedDetail = [
|
5585
|
+
...color.filter((d)=>!x.includes(d)),
|
5586
|
+
...detail
|
5587
|
+
];
|
5588
|
+
return {
|
5589
|
+
...advancedVSeed,
|
5590
|
+
encoding: {
|
5591
|
+
...encoding,
|
5592
|
+
detail: mergedDetail
|
5593
|
+
}
|
5594
|
+
};
|
5595
|
+
}
|
5596
|
+
const mergedEncoding = {
|
5597
|
+
x: dimensions.slice(0, 1).map((item)=>item.id),
|
5598
|
+
color: dimensions.slice(1).map((item)=>item.id),
|
5599
|
+
detail: dimensions.slice(1).map((item)=>item.id),
|
5600
|
+
tooltip: dimensions.map((item)=>item.id),
|
5601
|
+
label: [],
|
5602
|
+
row: [],
|
5603
|
+
column: []
|
5604
|
+
};
|
5605
|
+
return {
|
5606
|
+
...advancedVSeed,
|
5607
|
+
encoding: mergedEncoding
|
5608
|
+
};
|
5609
|
+
};
|
5610
|
+
const reshapeWithDualEncoding = (advancedVSeed, context)=>{
|
6028
5611
|
const result = {
|
6029
5612
|
...advancedVSeed
|
6030
5613
|
};
|
6031
5614
|
const { vseed } = context;
|
6032
5615
|
const { dataset } = vseed;
|
6033
|
-
const { dimensions, measures } = advancedVSeed;
|
6034
|
-
if (!measures || !dimensions || !dataset) return result;
|
5616
|
+
const { dimensions, measures, encoding, chartType } = advancedVSeed;
|
5617
|
+
if (!measures || !dimensions || !dataset || !encoding) return result;
|
6035
5618
|
if (0 === measures.length) throw new Error('measures can not be empty');
|
6036
5619
|
if (measures.length > 2) throw new Error('measures can not be more than 2');
|
6037
|
-
const commonDimensions = dimensions.filter((dim)=>'dimension' === dim.location);
|
6038
|
-
const datasets = [];
|
6039
5620
|
const foldInfoList = [];
|
6040
5621
|
const unfoldInfoList = [];
|
5622
|
+
const datasets = [];
|
6041
5623
|
const primaryMeasures = measures[0];
|
6042
5624
|
const secondaryMeasures = measures[1] || [];
|
6043
5625
|
if (primaryMeasures && primaryMeasures.children) {
|
6044
|
-
const { dataset:
|
5626
|
+
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, primaryMeasures.children, encoding, {
|
6045
5627
|
foldMeasureValue: FoldPrimaryMeasureValue
|
6046
5628
|
});
|
6047
|
-
datasets.push(
|
5629
|
+
datasets.push(newDataset);
|
6048
5630
|
foldInfoList.push(foldInfo);
|
6049
5631
|
unfoldInfoList.push(unfoldInfo);
|
6050
5632
|
}
|
6051
5633
|
if (secondaryMeasures && secondaryMeasures.children) {
|
6052
|
-
const { dataset:
|
5634
|
+
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, secondaryMeasures.children, encoding, {
|
6053
5635
|
foldMeasureValue: FoldSecondaryMeasureValue
|
6054
5636
|
});
|
6055
|
-
datasets.push(
|
5637
|
+
datasets.push(newDataset);
|
6056
5638
|
foldInfoList.push(foldInfo);
|
6057
5639
|
unfoldInfoList.push(unfoldInfo);
|
6058
5640
|
}
|
6059
5641
|
const unfoldInfo = {
|
6060
|
-
|
6061
|
-
groupId: unfoldInfoList[0].groupId,
|
5642
|
+
...unfoldInfoList[0],
|
6062
5643
|
colorItems: unfoldInfoList.flatMap((d)=>d.colorItems),
|
6063
5644
|
colorIdMap: unfoldInfoList.reduce((prev, cur)=>({
|
6064
5645
|
...prev,
|
@@ -6070,7 +5651,7 @@
|
|
6070
5651
|
dataset: datasets,
|
6071
5652
|
datasetReshapeInfo: [
|
6072
5653
|
{
|
6073
|
-
id:
|
5654
|
+
id: String(chartType),
|
6074
5655
|
index: 0,
|
6075
5656
|
foldInfo: foldInfoList[0],
|
6076
5657
|
foldInfoList: foldInfoList,
|
@@ -6079,46 +5660,48 @@
|
|
6079
5660
|
]
|
6080
5661
|
};
|
6081
5662
|
};
|
6082
|
-
const
|
5663
|
+
const pivotReshapeWithDualEncoding = (advancedVSeed, context)=>{
|
6083
5664
|
const result = {
|
6084
5665
|
...advancedVSeed
|
6085
5666
|
};
|
6086
5667
|
const { vseed } = context;
|
6087
5668
|
const { dataset } = vseed;
|
6088
|
-
const { dimensions, measures } = advancedVSeed;
|
6089
|
-
if (!measures || !dimensions || !dataset) return result;
|
6090
|
-
const commonDimensions = dimensions.filter((dim)=>'dimension' === dim.location);
|
5669
|
+
const { dimensions, measures, encoding, chartType } = advancedVSeed;
|
5670
|
+
if (!measures || !dimensions || !dataset || !encoding) return result;
|
6091
5671
|
const datasetList = [];
|
6092
5672
|
const datasetReshapeInfo = [];
|
6093
|
-
|
6094
|
-
|
5673
|
+
const measureGroups = [];
|
5674
|
+
const depth = measureDepth(measures);
|
5675
|
+
if (3 === depth) measures.forEach((measure)=>{
|
5676
|
+
measureGroups.push(measure.children);
|
5677
|
+
});
|
5678
|
+
else if (2 === depth) measureGroups.push(measures);
|
5679
|
+
measureGroups.forEach((measures, index)=>{
|
6095
5680
|
if (0 === measures.length) throw new Error('measures can not be empty');
|
6096
5681
|
if (measures.length > 2) throw new Error('measures can not be more than 2');
|
6097
|
-
const datasets = [];
|
6098
5682
|
const foldInfoList = [];
|
6099
5683
|
const unfoldInfoList = [];
|
5684
|
+
const datasets = [];
|
6100
5685
|
const primaryMeasures = measures[0];
|
6101
|
-
const secondaryMeasures = measures[1] ||
|
5686
|
+
const secondaryMeasures = measures[1] || [];
|
6102
5687
|
if (primaryMeasures && primaryMeasures.children) {
|
6103
|
-
const { dataset:
|
5688
|
+
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, primaryMeasures.children, encoding, {
|
6104
5689
|
foldMeasureValue: `${FoldPrimaryMeasureValue}${index}`
|
6105
5690
|
});
|
6106
|
-
datasets.push(
|
5691
|
+
datasets.push(newDataset);
|
6107
5692
|
foldInfoList.push(foldInfo);
|
6108
5693
|
unfoldInfoList.push(unfoldInfo);
|
6109
5694
|
}
|
6110
5695
|
if (secondaryMeasures && secondaryMeasures.children) {
|
6111
|
-
const { dataset:
|
5696
|
+
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, secondaryMeasures.children, encoding, {
|
6112
5697
|
foldMeasureValue: `${FoldSecondaryMeasureValue}${index}`
|
6113
5698
|
});
|
6114
|
-
datasets.push(
|
5699
|
+
datasets.push(newDataset);
|
6115
5700
|
foldInfoList.push(foldInfo);
|
6116
5701
|
unfoldInfoList.push(unfoldInfo);
|
6117
5702
|
}
|
6118
|
-
datasetList.push(datasets.flat(2));
|
6119
5703
|
const unfoldInfo = {
|
6120
|
-
|
6121
|
-
groupId: unfoldInfoList[0].groupId,
|
5704
|
+
...unfoldInfoList[0],
|
6122
5705
|
colorItems: unfoldInfoList.flatMap((d)=>d.colorItems),
|
6123
5706
|
colorIdMap: unfoldInfoList.reduce((prev, cur)=>({
|
6124
5707
|
...prev,
|
@@ -6126,53 +5709,19 @@
|
|
6126
5709
|
}), {})
|
6127
5710
|
};
|
6128
5711
|
const reshapeInfo = {
|
6129
|
-
id:
|
5712
|
+
id: `${chartType}-${index}`,
|
6130
5713
|
index,
|
6131
5714
|
foldInfo: foldInfoList[0],
|
6132
|
-
|
6133
|
-
|
5715
|
+
foldInfoList: foldInfoList,
|
5716
|
+
unfoldInfo: unfoldInfo
|
6134
5717
|
};
|
6135
5718
|
datasetReshapeInfo.push(reshapeInfo);
|
5719
|
+
datasetList.push(datasets.flat(2));
|
6136
5720
|
});
|
6137
5721
|
return {
|
6138
5722
|
...result,
|
6139
5723
|
dataset: datasetList,
|
6140
|
-
datasetReshapeInfo
|
6141
|
-
};
|
6142
|
-
};
|
6143
|
-
const encodingXYY = (advancedVSeed)=>{
|
6144
|
-
const result = {
|
6145
|
-
...advancedVSeed
|
6146
|
-
};
|
6147
|
-
const { datasetReshapeInfo, dimensions } = advancedVSeed;
|
6148
|
-
if (!datasetReshapeInfo || !dimensions) return result;
|
6149
|
-
const xDimension = dimensions.find((item)=>'rowDimension' !== item.location && 'columnDimension' !== item.location) || dimensions[0];
|
6150
|
-
const isZeroDimension = 0 === dimensions.length;
|
6151
|
-
const encoding = datasetReshapeInfo.reduce((prev, cur)=>{
|
6152
|
-
const { foldInfoList, unfoldInfo } = cur;
|
6153
|
-
const x = [
|
6154
|
-
isZeroDimension ? foldInfoList[0].measureName : xDimension?.id
|
6155
|
-
];
|
6156
|
-
const y = foldInfoList.map((d)=>d.measureValue);
|
6157
|
-
const group = [
|
6158
|
-
unfoldInfo.groupId
|
6159
|
-
];
|
6160
|
-
const color = [
|
6161
|
-
foldInfoList[0].measureName
|
6162
|
-
];
|
6163
|
-
return [
|
6164
|
-
...prev,
|
6165
|
-
{
|
6166
|
-
x,
|
6167
|
-
y,
|
6168
|
-
group,
|
6169
|
-
color
|
6170
|
-
}
|
6171
|
-
];
|
6172
|
-
}, []);
|
6173
|
-
return {
|
6174
|
-
...result,
|
6175
|
-
encoding
|
5724
|
+
datasetReshapeInfo: datasetReshapeInfo
|
6176
5725
|
};
|
6177
5726
|
};
|
6178
5727
|
const dualAxisConfig = (advancedVSeed, context)=>{
|
@@ -6201,125 +5750,80 @@
|
|
6201
5750
|
};
|
6202
5751
|
return result;
|
6203
5752
|
};
|
6204
|
-
const autoDualMeasures = (advancedVSeed, context)=>{
|
6205
|
-
const result = {
|
6206
|
-
...advancedVSeed
|
6207
|
-
};
|
6208
|
-
const { vseed } = context;
|
6209
|
-
const { dataset, dualMeasures, measures } = vseed;
|
6210
|
-
if (!dataset) throw new Error('dataset is required');
|
6211
|
-
if (0 === dataset.length) return result;
|
6212
|
-
if (dualMeasures) {
|
6213
|
-
result.measures = dualMeasuresToMeasureTree(dualMeasures);
|
6214
|
-
return result;
|
6215
|
-
}
|
6216
|
-
if (measures && measureDepth(measures) > 1) {
|
6217
|
-
result.measures = measures;
|
6218
|
-
return result;
|
6219
|
-
}
|
6220
|
-
const top100dataset = dataset.slice(0, 100);
|
6221
|
-
const sample = top100dataset.reduce((prev, cur)=>({
|
6222
|
-
...prev,
|
6223
|
-
...cur
|
6224
|
-
}), {});
|
6225
|
-
const newMeasures = measures || Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
|
6226
|
-
'',
|
6227
|
-
null,
|
6228
|
-
void 0
|
6229
|
-
].includes(key)).map((measure)=>({
|
6230
|
-
id: measure,
|
6231
|
-
alias: measure
|
6232
|
-
}));
|
6233
|
-
if (0 === newMeasures.length) result.measures = [];
|
6234
|
-
else if (1 === newMeasures.length) result.measures = [
|
6235
|
-
{
|
6236
|
-
id: 'primary',
|
6237
|
-
alias: 'primary',
|
6238
|
-
children: newMeasures
|
6239
|
-
}
|
6240
|
-
];
|
6241
|
-
else if (newMeasures.length > 1) result.measures = [
|
6242
|
-
{
|
6243
|
-
id: 'primary',
|
6244
|
-
alias: 'primary',
|
6245
|
-
children: newMeasures.slice(0, 1)
|
6246
|
-
},
|
6247
|
-
{
|
6248
|
-
id: 'secondary',
|
6249
|
-
alias: 'secondary',
|
6250
|
-
children: newMeasures.slice(1)
|
6251
|
-
}
|
6252
|
-
];
|
6253
|
-
return result;
|
6254
|
-
};
|
6255
|
-
const dualMeasuresToMeasureTree = (dualMeasures)=>{
|
6256
|
-
const measureTree = dualMeasures.map((item, index)=>{
|
6257
|
-
const { primaryMeasures, secondaryMeasures } = item;
|
6258
|
-
const groupChildren = [];
|
6259
|
-
let id = '';
|
6260
|
-
if (primaryMeasures) {
|
6261
|
-
const arrPrimaryMeasures = Array.isArray(primaryMeasures) ? primaryMeasures : [
|
6262
|
-
primaryMeasures
|
6263
|
-
];
|
6264
|
-
const alias = arrPrimaryMeasures.map((item)=>item.alias || item.id).toString();
|
6265
|
-
id += alias;
|
6266
|
-
groupChildren.push({
|
6267
|
-
id: `${index}-primary`,
|
6268
|
-
alias: arrPrimaryMeasures.map((item)=>item.alias || item.id).toString(),
|
6269
|
-
children: arrPrimaryMeasures
|
6270
|
-
});
|
6271
|
-
}
|
6272
|
-
if (secondaryMeasures) {
|
6273
|
-
const arrSecondaryMeasures = Array.isArray(secondaryMeasures) ? secondaryMeasures : [
|
6274
|
-
secondaryMeasures
|
6275
|
-
];
|
6276
|
-
const alias = arrSecondaryMeasures.map((item)=>item.alias || item.id).toString();
|
6277
|
-
id += alias;
|
6278
|
-
groupChildren.push({
|
6279
|
-
id: `${index}-secondary`,
|
6280
|
-
alias: arrSecondaryMeasures.map((item)=>item.alias || item.id).toString(),
|
6281
|
-
children: arrSecondaryMeasures
|
6282
|
-
});
|
6283
|
-
}
|
6284
|
-
return {
|
6285
|
-
id,
|
6286
|
-
alias: id,
|
6287
|
-
children: groupChildren
|
6288
|
-
};
|
6289
|
-
});
|
6290
|
-
if (1 === dualMeasures.length) return measureTree[0].children || [];
|
6291
|
-
return measureTree;
|
6292
|
-
};
|
6293
5753
|
const dualAxisAdvancedPipeline = [
|
6294
5754
|
initAdvancedVSeed_initAdvancedVSeed,
|
6295
5755
|
autoDualMeasures,
|
6296
5756
|
autoDimensions_autoDimensions,
|
5757
|
+
encodingForDualAxis,
|
6297
5758
|
pivotAdapter([
|
6298
|
-
|
5759
|
+
reshapeWithDualEncoding
|
6299
5760
|
], [
|
6300
|
-
|
5761
|
+
pivotReshapeWithDualEncoding
|
6301
5762
|
]),
|
6302
|
-
encodingXYY,
|
6303
5763
|
sortXBandAxis,
|
6304
|
-
|
5764
|
+
sortLegend_sortLegend,
|
6305
5765
|
dualAxisConfig,
|
6306
5766
|
theme_theme,
|
6307
5767
|
markStyle_markStyle,
|
6308
5768
|
annotation_annotation
|
6309
5769
|
];
|
5770
|
+
const series = (...args)=>{
|
5771
|
+
const result = {
|
5772
|
+
type: 'common',
|
5773
|
+
padding: 0,
|
5774
|
+
region: [
|
5775
|
+
{
|
5776
|
+
clip: true
|
5777
|
+
}
|
5778
|
+
]
|
5779
|
+
};
|
5780
|
+
return (_, context)=>{
|
5781
|
+
result.series = args.map((pipeline)=>execPipeline(pipeline, context, {}));
|
5782
|
+
return result;
|
5783
|
+
};
|
5784
|
+
};
|
5785
|
+
const seriesDualAxis = (...args)=>{
|
5786
|
+
const result = {
|
5787
|
+
type: 'common',
|
5788
|
+
padding: 0,
|
5789
|
+
region: [
|
5790
|
+
{
|
5791
|
+
clip: true
|
5792
|
+
}
|
5793
|
+
]
|
5794
|
+
};
|
5795
|
+
const createDualContext = (context, index)=>{
|
5796
|
+
const { advancedVSeed } = context;
|
5797
|
+
const dataset = advancedVSeed.dataset[index];
|
5798
|
+
return {
|
5799
|
+
...context,
|
5800
|
+
advancedVSeed: {
|
5801
|
+
...advancedVSeed,
|
5802
|
+
dataset: dataset
|
5803
|
+
}
|
5804
|
+
};
|
5805
|
+
};
|
5806
|
+
return (_, context)=>{
|
5807
|
+
result.series = args.map((pipeline, index)=>{
|
5808
|
+
const seriesContext = createDualContext(context, index);
|
5809
|
+
return execPipeline(pipeline, seriesContext, {});
|
5810
|
+
});
|
5811
|
+
return result;
|
5812
|
+
};
|
5813
|
+
};
|
6310
5814
|
const initDualAxisPrimary = (spec, context)=>{
|
6311
5815
|
const result = {
|
6312
5816
|
...spec
|
6313
5817
|
};
|
6314
5818
|
const { advancedVSeed } = context;
|
6315
|
-
const {
|
6316
|
-
|
6317
|
-
result.id = `${
|
5819
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
5820
|
+
const { unfoldInfo, foldInfoList, id } = datasetReshapeInfo[0];
|
5821
|
+
result.id = `${id}-primary-series`;
|
6318
5822
|
result.type = 'bar';
|
6319
5823
|
result.direction = 'vertical';
|
6320
|
-
result.xField =
|
6321
|
-
result.
|
6322
|
-
result.
|
5824
|
+
result.xField = unfoldInfo.encodingX;
|
5825
|
+
result.seriesField = unfoldInfo.encodingColorId;
|
5826
|
+
result.yField = foldInfoList?.[0].measureValue;
|
6323
5827
|
result.animation = true;
|
6324
5828
|
return result;
|
6325
5829
|
};
|
@@ -6328,14 +5832,14 @@
|
|
6328
5832
|
...spec
|
6329
5833
|
};
|
6330
5834
|
const { advancedVSeed } = context;
|
6331
|
-
const {
|
6332
|
-
|
6333
|
-
result.id = `${
|
5835
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
5836
|
+
const { unfoldInfo, foldInfoList, id } = datasetReshapeInfo[0];
|
5837
|
+
result.id = `${id}-secondary-series`;
|
6334
5838
|
result.type = 'line';
|
6335
5839
|
result.direction = 'vertical';
|
6336
|
-
result.xField =
|
6337
|
-
result.yField =
|
6338
|
-
result.seriesField =
|
5840
|
+
result.xField = unfoldInfo.encodingX;
|
5841
|
+
if (foldInfoList?.[1]) result.yField = foldInfoList[1].measureValue;
|
5842
|
+
result.seriesField = unfoldInfo.encodingColorId;
|
6339
5843
|
result.animation = true;
|
6340
5844
|
return result;
|
6341
5845
|
};
|
@@ -6367,10 +5871,10 @@
|
|
6367
5871
|
case 'columnParallel':
|
6368
5872
|
{
|
6369
5873
|
const columnSpec = result;
|
6370
|
-
if (Array.isArray(columnSpec.xField)) columnSpec.xField.push(datasetReshapeInfo[0].unfoldInfo.
|
5874
|
+
if (Array.isArray(columnSpec.xField)) columnSpec.xField.push(datasetReshapeInfo[0].unfoldInfo.encodingDetail);
|
6371
5875
|
else if (columnSpec.xField) columnSpec.xField = [
|
6372
5876
|
columnSpec.xField,
|
6373
|
-
datasetReshapeInfo[0].unfoldInfo.
|
5877
|
+
datasetReshapeInfo[0].unfoldInfo.encodingDetail
|
6374
5878
|
];
|
6375
5879
|
columnSpec.type = 'bar';
|
6376
5880
|
result.zIndex = DUAL_AXIS_CHART_COLUMN_Z_INDEX;
|
@@ -6423,10 +5927,10 @@
|
|
6423
5927
|
case 'columnParallel':
|
6424
5928
|
{
|
6425
5929
|
const columnSpec = result;
|
6426
|
-
if (Array.isArray(columnSpec.xField)) columnSpec.xField.push(datasetReshapeInfo[0].unfoldInfo.
|
5930
|
+
if (Array.isArray(columnSpec.xField)) columnSpec.xField.push(datasetReshapeInfo[0].unfoldInfo.encodingDetail);
|
6427
5931
|
else if (columnSpec.xField) columnSpec.xField = [
|
6428
5932
|
columnSpec.xField,
|
6429
|
-
datasetReshapeInfo[0].unfoldInfo.
|
5933
|
+
datasetReshapeInfo[0].unfoldInfo.encodingDetail
|
6430
5934
|
];
|
6431
5935
|
columnSpec.type = 'bar';
|
6432
5936
|
result.zIndex = DUAL_AXIS_CHART_COLUMN_Z_INDEX;
|
@@ -6453,10 +5957,11 @@
|
|
6453
5957
|
};
|
6454
5958
|
const datasetPrimary = (spec, context)=>{
|
6455
5959
|
const { advancedVSeed, vseed } = context;
|
6456
|
-
const {
|
5960
|
+
const { analysis, datasetReshapeInfo } = advancedVSeed;
|
6457
5961
|
const orderMapping = analysis?.orderMapping || {};
|
6458
|
-
const
|
6459
|
-
const
|
5962
|
+
const { unfoldInfo } = datasetReshapeInfo[0];
|
5963
|
+
const x = unfoldInfo.encodingX;
|
5964
|
+
const colorId = unfoldInfo.encodingColorId;
|
6460
5965
|
const id = datasetReshapeInfo[0].id;
|
6461
5966
|
const fields = {};
|
6462
5967
|
if (x) {
|
@@ -6470,14 +5975,14 @@
|
|
6470
5975
|
sortIndex: 0
|
6471
5976
|
};
|
6472
5977
|
}
|
6473
|
-
if (
|
6474
|
-
const order = orderMapping[
|
6475
|
-
if (order) fields[
|
5978
|
+
if (colorId) {
|
5979
|
+
const order = orderMapping[colorId];
|
5980
|
+
if (order) fields[colorId] = {
|
6476
5981
|
sortIndex: 0,
|
6477
5982
|
domain: order,
|
6478
5983
|
lockStatisticsByDomain: true
|
6479
5984
|
};
|
6480
|
-
else fields[
|
5985
|
+
else fields[colorId] = {
|
6481
5986
|
sortIndex: 0
|
6482
5987
|
};
|
6483
5988
|
}
|
@@ -6492,10 +5997,11 @@
|
|
6492
5997
|
};
|
6493
5998
|
const datasetSecondary = (spec, context)=>{
|
6494
5999
|
const { advancedVSeed, vseed } = context;
|
6495
|
-
const {
|
6000
|
+
const { analysis, datasetReshapeInfo } = advancedVSeed;
|
6496
6001
|
const orderMapping = analysis?.orderMapping || {};
|
6497
|
-
const
|
6498
|
-
const
|
6002
|
+
const { unfoldInfo } = datasetReshapeInfo[0];
|
6003
|
+
const x = unfoldInfo.encodingX;
|
6004
|
+
const colorId = unfoldInfo.encodingColorId;
|
6499
6005
|
const id = datasetReshapeInfo[0].id;
|
6500
6006
|
const fields = {};
|
6501
6007
|
if (x) {
|
@@ -6509,14 +6015,14 @@
|
|
6509
6015
|
sortIndex: 0
|
6510
6016
|
};
|
6511
6017
|
}
|
6512
|
-
if (
|
6513
|
-
const order = orderMapping[
|
6514
|
-
if (order) fields[
|
6018
|
+
if (colorId) {
|
6019
|
+
const order = orderMapping[colorId];
|
6020
|
+
if (order) fields[colorId] = {
|
6515
6021
|
sortIndex: 0,
|
6516
6022
|
domain: order,
|
6517
6023
|
lockStatisticsByDomain: true
|
6518
6024
|
};
|
6519
|
-
else fields[
|
6025
|
+
else fields[colorId] = {
|
6520
6026
|
sortIndex: 0
|
6521
6027
|
};
|
6522
6028
|
}
|
@@ -6614,7 +6120,7 @@
|
|
6614
6120
|
const foldInfoList = datasetReshapeInfo[0].foldInfoList;
|
6615
6121
|
const unfoldInfo = datasetReshapeInfo[0].unfoldInfo;
|
6616
6122
|
const { measureId, measureValue, measureName } = foldInfoList[0];
|
6617
|
-
const {
|
6123
|
+
const { encodingColor: colorName } = unfoldInfo;
|
6618
6124
|
result.tooltip = {
|
6619
6125
|
visible: enable,
|
6620
6126
|
mark: {
|
@@ -6635,7 +6141,7 @@
|
|
6635
6141
|
{
|
6636
6142
|
visible: true,
|
6637
6143
|
hasShape: true,
|
6638
|
-
key: (datum)=>datum && datum[measureName ||
|
6144
|
+
key: (datum)=>datum && datum[measureName || colorName] || '',
|
6639
6145
|
value: (datum)=>{
|
6640
6146
|
if (!datum) return '';
|
6641
6147
|
const value = datum[measureValue];
|
@@ -6657,7 +6163,7 @@
|
|
6657
6163
|
content: [
|
6658
6164
|
{
|
6659
6165
|
visible: true,
|
6660
|
-
key: (datum)=>datum && datum[
|
6166
|
+
key: (datum)=>datum && datum[colorName] || '',
|
6661
6167
|
value: (datum)=>{
|
6662
6168
|
if (!datum) return '';
|
6663
6169
|
const value = datum[measureValue];
|
@@ -6694,7 +6200,7 @@
|
|
6694
6200
|
const foldInfoList = datasetReshapeInfo[0].foldInfoList;
|
6695
6201
|
const unfoldInfo = datasetReshapeInfo[0].unfoldInfo;
|
6696
6202
|
const { measureId, measureValue, measureName } = foldInfoList[1];
|
6697
|
-
const {
|
6203
|
+
const { encodingColorId } = unfoldInfo;
|
6698
6204
|
result.tooltip = {
|
6699
6205
|
visible: enable,
|
6700
6206
|
mark: {
|
@@ -6715,7 +6221,7 @@
|
|
6715
6221
|
{
|
6716
6222
|
visible: true,
|
6717
6223
|
hasShape: true,
|
6718
|
-
key: (datum)=>datum && datum[measureName ||
|
6224
|
+
key: (datum)=>datum && datum[measureName || encodingColorId] || '',
|
6719
6225
|
value: (datum)=>{
|
6720
6226
|
if (!datum) return '';
|
6721
6227
|
const value = datum[measureValue];
|
@@ -6737,7 +6243,7 @@
|
|
6737
6243
|
content: [
|
6738
6244
|
{
|
6739
6245
|
visible: true,
|
6740
|
-
key: (datum)=>datum && datum[
|
6246
|
+
key: (datum)=>datum && datum[encodingColorId] || '',
|
6741
6247
|
value: (datum)=>{
|
6742
6248
|
if (!datum) return '';
|
6743
6249
|
const value = datum[measureValue];
|
@@ -6766,16 +6272,16 @@
|
|
6766
6272
|
const { advancedVSeed, vseed } = context;
|
6767
6273
|
const { chartType } = vseed;
|
6768
6274
|
const { locale, datasetReshapeInfo } = advancedVSeed;
|
6769
|
-
const index = datasetReshapeInfo[0]
|
6275
|
+
const { index, id: reshapeInfoId, foldInfoList } = datasetReshapeInfo[0];
|
6770
6276
|
const primaryYAxis = advancedVSeed.config?.[chartType]?.primaryYAxis;
|
6771
6277
|
const yAxisConfig = Array.isArray(primaryYAxis) ? primaryYAxis[index] || primaryYAxis[0] : primaryYAxis;
|
6772
6278
|
const alignTicks = advancedVSeed.config?.[chartType]?.alignTicks;
|
6773
6279
|
const alignTicksConfig = Array.isArray(alignTicks) ? alignTicks[index] || alignTicks[0] : alignTicks;
|
6774
|
-
if (
|
6775
|
-
const id = `${
|
6280
|
+
if (foldInfoList?.[0] && chunk_VCYTMP4D_n(foldInfoList[0].foldMap)) return result;
|
6281
|
+
const id = `${reshapeInfoId}-primary-axis`;
|
6776
6282
|
const seriesIds = [
|
6777
|
-
`${
|
6778
|
-
`${
|
6283
|
+
`${reshapeInfoId}-primary-series`,
|
6284
|
+
`${reshapeInfoId}-secondary-series`
|
6779
6285
|
];
|
6780
6286
|
const seriesId = alignTicksConfig ? seriesIds : seriesIds[0];
|
6781
6287
|
if (!result.axes) result.axes = [];
|
@@ -6863,20 +6369,20 @@
|
|
6863
6369
|
const { advancedVSeed, vseed } = context;
|
6864
6370
|
const { chartType } = vseed;
|
6865
6371
|
const { locale, datasetReshapeInfo } = advancedVSeed;
|
6866
|
-
const index = datasetReshapeInfo[0]
|
6372
|
+
const { index, id: reshapeInfoId, foldInfoList } = datasetReshapeInfo[0];
|
6867
6373
|
const secondaryYAxis = advancedVSeed.config?.[chartType]?.secondaryYAxis;
|
6868
6374
|
const yAxisConfig = Array.isArray(secondaryYAxis) ? secondaryYAxis[index] || secondaryYAxis[0] : secondaryYAxis;
|
6869
6375
|
const alignTicks = advancedVSeed.config?.[chartType]?.alignTicks;
|
6870
6376
|
const alignTicksConfig = Array.isArray(alignTicks) ? alignTicks[index] || alignTicks[0] : alignTicks;
|
6871
|
-
if (chunk_JK3VNB42_n(
|
6377
|
+
if (chunk_JK3VNB42_n(foldInfoList?.[1])) return result;
|
6872
6378
|
const sync = {
|
6873
|
-
axisId: `${
|
6379
|
+
axisId: `${reshapeInfoId}-primary-axis`,
|
6874
6380
|
zeroAlign: true
|
6875
6381
|
};
|
6876
|
-
const id = `${
|
6382
|
+
const id = `${reshapeInfoId}-secondary-axis`;
|
6877
6383
|
const seriesIds = [
|
6878
|
-
`${
|
6879
|
-
`${
|
6384
|
+
`${reshapeInfoId}-primary-series`,
|
6385
|
+
`${reshapeInfoId}-secondary-series`
|
6880
6386
|
];
|
6881
6387
|
const seriesId = alignTicksConfig ? seriesIds : seriesIds[1];
|
6882
6388
|
if (!result.axes) result.axes = [];
|
@@ -7017,210 +6523,74 @@
|
|
7017
6523
|
areaStyle_areaStyle
|
7018
6524
|
], [
|
7019
6525
|
initDualAxisSecondary,
|
7020
|
-
dualChartTypeSecondary,
|
7021
|
-
datasetSecondary,
|
7022
|
-
labelSecondary,
|
7023
|
-
tooltipSecondary,
|
7024
|
-
progressive,
|
7025
|
-
barStyle_barStyle,
|
7026
|
-
pointStyle_pointStyle,
|
7027
|
-
pointStateDimensionHover,
|
7028
|
-
lineStyle_lineStyle,
|
7029
|
-
areaStyle_areaStyle
|
7030
|
-
]),
|
7031
|
-
xBand,
|
7032
|
-
yLinearPrimary,
|
7033
|
-
yLinearSecondary,
|
7034
|
-
color_color,
|
7035
|
-
background_backgroundColor,
|
7036
|
-
verticalCrosshairRect,
|
7037
|
-
annotationPoint_annotationPoint,
|
7038
|
-
annotationVerticalLine_annotationVerticalLine,
|
7039
|
-
annotationHorizontalLine_annotationHorizontalLine,
|
7040
|
-
annotationArea_annotationArea
|
7041
|
-
]),
|
7042
|
-
pivotRowDimensions,
|
7043
|
-
pivotColumnDimensions,
|
7044
|
-
pivotDiscreteLegend
|
7045
|
-
];
|
7046
|
-
const dualAxisSpecPipeline = [
|
7047
|
-
pivotAdapter_pivotAdapter(dualAxis, pivotDualAxis)
|
7048
|
-
];
|
7049
|
-
const registerDualAxis = ()=>{
|
7050
|
-
Builder._advancedPipelineMap.dualAxis = dualAxisAdvancedPipeline;
|
7051
|
-
Builder._specPipelineMap.dualAxis = dualAxisSpecPipeline;
|
7052
|
-
};
|
7053
|
-
const dataReshapeFor1D1M_emptyReshapeResult = {
|
7054
|
-
dataset: [],
|
7055
|
-
foldInfo: {
|
7056
|
-
foldMap: {},
|
7057
|
-
measureId: '',
|
7058
|
-
measureName: '',
|
7059
|
-
measureValue: ''
|
7060
|
-
},
|
7061
|
-
unfoldInfo: {
|
7062
|
-
groupName: '',
|
7063
|
-
groupId: '',
|
7064
|
-
colorItems: [],
|
7065
|
-
colorIdMap: {}
|
7066
|
-
}
|
7067
|
-
};
|
7068
|
-
const dataReshapeFor1D1M = (dataset, dimensions, measures, options)=>{
|
7069
|
-
const { foldMeasureId = FoldMeasureId, foldMeasureName = FoldMeasureName, foldMeasureValue = FoldMeasureValue, unfoldDimensionGroup = UnfoldDimensionGroup, unfoldDimensionGroupId = UnfoldDimensionGroupId } = options || {};
|
7070
|
-
if (0 === dimensions.length && 0 === measures.length) return dataReshapeFor1D1M_emptyReshapeResult;
|
7071
|
-
const { dataset: foldedDataset, foldInfo } = foldMeasures(dataset, measures, foldMeasureId, foldMeasureName, foldMeasureValue);
|
7072
|
-
if (0 === dimensions.length) {
|
7073
|
-
const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, [
|
7074
|
-
{
|
7075
|
-
id: foldMeasureName,
|
7076
|
-
alias: i18n`指标名称`,
|
7077
|
-
location: 'dimension'
|
7078
|
-
}
|
7079
|
-
], [
|
7080
|
-
{
|
7081
|
-
id: foldMeasureValue,
|
7082
|
-
alias: i18n`指标值`
|
7083
|
-
}
|
7084
|
-
], 0, unfoldDimensionGroup, unfoldDimensionGroupId, foldMeasureId);
|
7085
|
-
return {
|
7086
|
-
dataset: finalDataset,
|
7087
|
-
foldInfo,
|
7088
|
-
unfoldInfo
|
7089
|
-
};
|
7090
|
-
}
|
7091
|
-
{
|
7092
|
-
const dims = 1 === measures.length ? [
|
7093
|
-
...dimensions
|
7094
|
-
] : [
|
7095
|
-
...dimensions,
|
7096
|
-
{
|
7097
|
-
id: foldMeasureName,
|
7098
|
-
alias: i18n`指标名称`,
|
7099
|
-
location: 'dimension'
|
7100
|
-
}
|
7101
|
-
];
|
7102
|
-
const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, dims, [
|
7103
|
-
{
|
7104
|
-
id: foldMeasureValue,
|
7105
|
-
alias: i18n`指标值`
|
7106
|
-
}
|
7107
|
-
], 0, unfoldDimensionGroup, unfoldDimensionGroupId, foldMeasureId);
|
7108
|
-
return {
|
7109
|
-
dataset: finalDataset,
|
7110
|
-
foldInfo,
|
7111
|
-
unfoldInfo
|
7112
|
-
};
|
7113
|
-
}
|
7114
|
-
};
|
7115
|
-
const reshapeTo1D1M = (advancedVSeed, context)=>{
|
7116
|
-
const result = {
|
7117
|
-
...advancedVSeed
|
7118
|
-
};
|
7119
|
-
const { vseed } = context;
|
7120
|
-
const { dataset } = vseed;
|
7121
|
-
const { dimensions, measures } = advancedVSeed;
|
7122
|
-
if (!measures || !dimensions || !dataset) return result;
|
7123
|
-
if (0 === measures.length) throw new Error('measures can not be empty');
|
7124
|
-
const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor1D1M(dataset, dimensions, measures);
|
7125
|
-
return {
|
7126
|
-
...result,
|
7127
|
-
dataset: newDatasets,
|
7128
|
-
datasetReshapeInfo: [
|
7129
|
-
{
|
7130
|
-
id: '1D1M',
|
7131
|
-
index: 0,
|
7132
|
-
foldInfo,
|
7133
|
-
unfoldInfo
|
7134
|
-
}
|
7135
|
-
]
|
7136
|
-
};
|
6526
|
+
dualChartTypeSecondary,
|
6527
|
+
datasetSecondary,
|
6528
|
+
labelSecondary,
|
6529
|
+
tooltipSecondary,
|
6530
|
+
progressive,
|
6531
|
+
barStyle_barStyle,
|
6532
|
+
pointStyle_pointStyle,
|
6533
|
+
pointStateDimensionHover,
|
6534
|
+
lineStyle_lineStyle,
|
6535
|
+
areaStyle_areaStyle
|
6536
|
+
]),
|
6537
|
+
xBand,
|
6538
|
+
yLinearPrimary,
|
6539
|
+
yLinearSecondary,
|
6540
|
+
color_color,
|
6541
|
+
background_backgroundColor,
|
6542
|
+
verticalCrosshairRect,
|
6543
|
+
annotationPoint_annotationPoint,
|
6544
|
+
annotationVerticalLine_annotationVerticalLine,
|
6545
|
+
annotationHorizontalLine_annotationHorizontalLine,
|
6546
|
+
annotationArea_annotationArea
|
6547
|
+
]),
|
6548
|
+
pivotRowDimensions,
|
6549
|
+
pivotColumnDimensions,
|
6550
|
+
pivotDiscreteLegend
|
6551
|
+
];
|
6552
|
+
const dualAxisSpecPipeline = [
|
6553
|
+
pivotAdapter_pivotAdapter(dualAxis, pivotDualAxis)
|
6554
|
+
];
|
6555
|
+
const registerDualAxis = ()=>{
|
6556
|
+
Builder._advancedPipelineMap.dualAxis = dualAxisAdvancedPipeline;
|
6557
|
+
Builder._specPipelineMap.dualAxis = dualAxisSpecPipeline;
|
7137
6558
|
};
|
7138
|
-
const
|
7139
|
-
const result = {
|
7140
|
-
...advancedVSeed
|
7141
|
-
};
|
6559
|
+
const encodingForPie = (advancedVSeed, context)=>{
|
7142
6560
|
const { vseed } = context;
|
7143
|
-
const {
|
7144
|
-
|
7145
|
-
const
|
7146
|
-
if (
|
7147
|
-
|
7148
|
-
|
7149
|
-
|
7150
|
-
|
7151
|
-
const newDatasets = [];
|
7152
|
-
const datasetReshapeInfo = [];
|
7153
|
-
measureGroups.forEach((measureGroup, index)=>{
|
7154
|
-
const measures = measureGroup.children;
|
7155
|
-
if (!measures) return;
|
7156
|
-
const commonDimensions = dimensions.filter((dim)=>'dimension' === dim.location);
|
7157
|
-
const groupId = measureGroup.id;
|
7158
|
-
const { dataset: newSubDataset, foldInfo, unfoldInfo } = dataReshapeFor1D1M(dataset, commonDimensions, measures, {
|
7159
|
-
foldMeasureId: FoldMeasureId,
|
7160
|
-
foldMeasureName: FoldMeasureName,
|
7161
|
-
foldMeasureValue: FoldMeasureValue + groupId,
|
7162
|
-
unfoldDimensionGroup: UnfoldDimensionGroup
|
7163
|
-
});
|
7164
|
-
const reshapeInfo = {
|
7165
|
-
id: groupId,
|
7166
|
-
index,
|
7167
|
-
foldInfo,
|
7168
|
-
unfoldInfo
|
7169
|
-
};
|
7170
|
-
newDatasets.push(newSubDataset);
|
7171
|
-
datasetReshapeInfo.push(reshapeInfo);
|
7172
|
-
});
|
7173
|
-
return {
|
7174
|
-
...result,
|
7175
|
-
dataset: newDatasets,
|
7176
|
-
datasetReshapeInfo: datasetReshapeInfo
|
6561
|
+
const { dimensions } = advancedVSeed;
|
6562
|
+
if (!dimensions) return advancedVSeed;
|
6563
|
+
const encoding = vseed.encoding;
|
6564
|
+
if (encoding) return {
|
6565
|
+
...advancedVSeed,
|
6566
|
+
encoding: {
|
6567
|
+
...encoding
|
6568
|
+
}
|
7177
6569
|
};
|
7178
|
-
|
7179
|
-
|
7180
|
-
|
7181
|
-
|
6570
|
+
const mergedEncoding = {
|
6571
|
+
angle: dimensions.slice(0, 1).map((item)=>item.id),
|
6572
|
+
color: dimensions.slice(0).map((item)=>item.id),
|
6573
|
+
detail: dimensions.slice(0).map((item)=>item.id),
|
6574
|
+
tooltip: dimensions.map((item)=>item.id),
|
6575
|
+
label: [],
|
6576
|
+
row: [],
|
6577
|
+
column: []
|
7182
6578
|
};
|
7183
|
-
const { datasetReshapeInfo } = advancedVSeed;
|
7184
|
-
if (!datasetReshapeInfo) return result;
|
7185
|
-
const encoding = datasetReshapeInfo.reduce((prev, cur)=>{
|
7186
|
-
const { foldInfo, unfoldInfo } = cur;
|
7187
|
-
const radius = [
|
7188
|
-
foldInfo.measureValue
|
7189
|
-
];
|
7190
|
-
const angle = [
|
7191
|
-
unfoldInfo.groupId
|
7192
|
-
];
|
7193
|
-
const group = [
|
7194
|
-
unfoldInfo.groupId
|
7195
|
-
];
|
7196
|
-
const color = [
|
7197
|
-
unfoldInfo.groupId
|
7198
|
-
];
|
7199
|
-
return [
|
7200
|
-
...prev,
|
7201
|
-
{
|
7202
|
-
angle,
|
7203
|
-
radius,
|
7204
|
-
group,
|
7205
|
-
color
|
7206
|
-
}
|
7207
|
-
];
|
7208
|
-
}, []);
|
7209
6579
|
return {
|
7210
|
-
...
|
7211
|
-
encoding
|
6580
|
+
...advancedVSeed,
|
6581
|
+
encoding: mergedEncoding
|
7212
6582
|
};
|
7213
6583
|
};
|
7214
6584
|
const pieAdvancedPipeline = [
|
7215
6585
|
initAdvancedVSeed_initAdvancedVSeed,
|
7216
6586
|
autoMeasures_autoMeasures,
|
7217
6587
|
autoDimensions_autoDimensions,
|
6588
|
+
encodingForPie,
|
7218
6589
|
pivotAdapter([
|
7219
|
-
|
6590
|
+
reshapeWithEncoding
|
7220
6591
|
], [
|
7221
|
-
|
6592
|
+
pivotReshapeWithEncoding
|
7222
6593
|
]),
|
7223
|
-
encodingPie,
|
7224
6594
|
pieConfig,
|
7225
6595
|
theme_theme,
|
7226
6596
|
annotation_annotation
|
@@ -7230,15 +6600,15 @@
|
|
7230
6600
|
...spec
|
7231
6601
|
};
|
7232
6602
|
const { advancedVSeed } = context;
|
7233
|
-
const {
|
7234
|
-
|
6603
|
+
const { datasetReshapeInfo, dataset } = advancedVSeed;
|
6604
|
+
const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
|
7235
6605
|
const showStroke = dataset.length <= 30;
|
7236
6606
|
result.type = 'pie';
|
7237
6607
|
result.outerRadius = 0.8;
|
7238
6608
|
result.innerRadius = 0;
|
7239
|
-
result.valueField =
|
7240
|
-
result.categoryField =
|
7241
|
-
result.seriesField =
|
6609
|
+
result.valueField = foldInfo.measureValue;
|
6610
|
+
result.categoryField = unfoldInfo.encodingAngle;
|
6611
|
+
result.seriesField = unfoldInfo.encodingColorId;
|
7242
6612
|
result.padding = 0;
|
7243
6613
|
result.region = [
|
7244
6614
|
{
|
@@ -7307,12 +6677,12 @@
|
|
7307
6677
|
initAdvancedVSeed_initAdvancedVSeed,
|
7308
6678
|
autoMeasures_autoMeasures,
|
7309
6679
|
autoDimensions_autoDimensions,
|
6680
|
+
encodingForPie,
|
7310
6681
|
pivotAdapter([
|
7311
|
-
|
6682
|
+
reshapeWithEncoding
|
7312
6683
|
], [
|
7313
|
-
|
6684
|
+
pivotReshapeWithEncoding
|
7314
6685
|
]),
|
7315
|
-
encodingPie,
|
7316
6686
|
donutConfig,
|
7317
6687
|
theme_theme,
|
7318
6688
|
annotation_annotation
|
@@ -7322,15 +6692,15 @@
|
|
7322
6692
|
...spec
|
7323
6693
|
};
|
7324
6694
|
const { advancedVSeed } = context;
|
7325
|
-
const {
|
7326
|
-
|
6695
|
+
const { datasetReshapeInfo, dataset } = advancedVSeed;
|
6696
|
+
const { foldInfo, unfoldInfo } = datasetReshapeInfo[0];
|
7327
6697
|
const showStroke = dataset.length <= 30;
|
7328
6698
|
result.type = 'pie';
|
7329
6699
|
result.outerRadius = 0.8;
|
7330
6700
|
result.innerRadius = 0.8 * result.outerRadius;
|
7331
|
-
result.valueField =
|
7332
|
-
result.categoryField =
|
7333
|
-
result.seriesField =
|
6701
|
+
result.valueField = foldInfo.measureValue;
|
6702
|
+
result.categoryField = unfoldInfo.encodingDetail;
|
6703
|
+
result.seriesField = unfoldInfo.encodingColorId;
|
7334
6704
|
result.padding = 0;
|
7335
6705
|
result.region = [
|
7336
6706
|
{
|
@@ -7394,54 +6764,52 @@
|
|
7394
6764
|
Builder._advancedPipelineMap.donut = donutAdvancedPipeline;
|
7395
6765
|
Builder._specPipelineMap.donut = donutSpecPipeline;
|
7396
6766
|
};
|
7397
|
-
const
|
7398
|
-
const
|
7399
|
-
|
7400
|
-
|
7401
|
-
const
|
7402
|
-
if (
|
7403
|
-
|
7404
|
-
|
7405
|
-
|
7406
|
-
|
7407
|
-
|
7408
|
-
|
7409
|
-
foldInfo.measureValue
|
7410
|
-
];
|
7411
|
-
const angle = [
|
7412
|
-
isZeroDimension ? foldInfo.measureName : angleDimension?.id
|
7413
|
-
];
|
7414
|
-
const group = [
|
7415
|
-
is1D1M ? angleDimension?.id : unfoldInfo.groupId
|
7416
|
-
];
|
7417
|
-
const color = [
|
7418
|
-
is1D1M ? angleDimension?.id : unfoldInfo.groupId
|
6767
|
+
const encodingForRose = (advancedVSeed, context)=>{
|
6768
|
+
const { vseed } = context;
|
6769
|
+
const { dimensions } = advancedVSeed;
|
6770
|
+
if (!dimensions) return advancedVSeed;
|
6771
|
+
const encoding = vseed.encoding;
|
6772
|
+
if (encoding) {
|
6773
|
+
const angle = encoding.angle || [];
|
6774
|
+
const detail = encoding.detail || [];
|
6775
|
+
const color = encoding.color || [];
|
6776
|
+
const mergedDetail = [
|
6777
|
+
...color.filter((d)=>!angle.includes(d)),
|
6778
|
+
...detail
|
7419
6779
|
];
|
7420
|
-
return
|
7421
|
-
...
|
7422
|
-
{
|
7423
|
-
|
7424
|
-
|
7425
|
-
group,
|
7426
|
-
color
|
6780
|
+
return {
|
6781
|
+
...advancedVSeed,
|
6782
|
+
encoding: {
|
6783
|
+
...encoding,
|
6784
|
+
detail: mergedDetail
|
7427
6785
|
}
|
7428
|
-
|
7429
|
-
}
|
6786
|
+
};
|
6787
|
+
}
|
6788
|
+
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
6789
|
+
const mergedEncoding = {
|
6790
|
+
angle: dimensions.slice(0, 1).map((item)=>item.id),
|
6791
|
+
color: dimensions.slice(1).map((item)=>item.id),
|
6792
|
+
detail: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
|
6793
|
+
tooltip: dimensions.map((item)=>item.id),
|
6794
|
+
label: [],
|
6795
|
+
row: [],
|
6796
|
+
column: []
|
6797
|
+
};
|
7430
6798
|
return {
|
7431
|
-
...
|
7432
|
-
encoding
|
6799
|
+
...advancedVSeed,
|
6800
|
+
encoding: mergedEncoding
|
7433
6801
|
};
|
7434
6802
|
};
|
7435
6803
|
const roseAdvancedPipeline = [
|
7436
6804
|
initAdvancedVSeed_initAdvancedVSeed,
|
7437
6805
|
autoMeasures_autoMeasures,
|
7438
6806
|
autoDimensions_autoDimensions,
|
6807
|
+
encodingForRose,
|
7439
6808
|
pivotAdapter([
|
7440
|
-
|
6809
|
+
reshapeWithEncoding
|
7441
6810
|
], [
|
7442
|
-
|
6811
|
+
pivotReshapeWithEncoding
|
7443
6812
|
]),
|
7444
|
-
encodingRose,
|
7445
6813
|
roseConfig,
|
7446
6814
|
theme_theme,
|
7447
6815
|
markStyle_markStyle,
|
@@ -7452,13 +6820,12 @@
|
|
7452
6820
|
...spec
|
7453
6821
|
};
|
7454
6822
|
const { advancedVSeed } = context;
|
7455
|
-
const {
|
7456
|
-
const { foldInfo } = datasetReshapeInfo[0];
|
7457
|
-
if (!encoding[0].radius || !encoding[0].angle || !encoding[0].group) return result;
|
6823
|
+
const { dataset, datasetReshapeInfo } = advancedVSeed;
|
6824
|
+
const { foldInfo, unfoldInfo } = datasetReshapeInfo[0];
|
7458
6825
|
result.type = 'rose';
|
7459
|
-
result.categoryField =
|
7460
|
-
result.
|
7461
|
-
result.
|
6826
|
+
result.categoryField = unfoldInfo.encodingAngle;
|
6827
|
+
result.seriesField = unfoldInfo.encodingColorId;
|
6828
|
+
result.valueField = foldInfo.measureValue;
|
7462
6829
|
result.padding = 0;
|
7463
6830
|
result.outerRadius = 0.9;
|
7464
6831
|
result.innerRadius = 0;
|
@@ -7606,12 +6973,12 @@
|
|
7606
6973
|
initAdvancedVSeed_initAdvancedVSeed,
|
7607
6974
|
autoMeasures_autoMeasures,
|
7608
6975
|
autoDimensions_autoDimensions,
|
6976
|
+
encodingForRose,
|
7609
6977
|
pivotAdapter([
|
7610
|
-
|
6978
|
+
reshapeWithEncoding
|
7611
6979
|
], [
|
7612
|
-
|
6980
|
+
pivotReshapeWithEncoding
|
7613
6981
|
]),
|
7614
|
-
encodingRose,
|
7615
6982
|
roseParallelConfig,
|
7616
6983
|
theme_theme,
|
7617
6984
|
markStyle_markStyle,
|
@@ -7622,16 +6989,18 @@
|
|
7622
6989
|
...spec
|
7623
6990
|
};
|
7624
6991
|
const { advancedVSeed } = context;
|
7625
|
-
const {
|
6992
|
+
const { datasetReshapeInfo, dataset, dimensions } = advancedVSeed;
|
7626
6993
|
const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
|
7627
|
-
|
6994
|
+
const sameDimensionsMode = dimensions.length > 1 && dimensions.every((dim)=>dim.id === dimensions[0].id);
|
7628
6995
|
result.type = 'rose';
|
7629
|
-
result.categoryField = [
|
7630
|
-
|
7631
|
-
|
6996
|
+
result.categoryField = sameDimensionsMode ? [
|
6997
|
+
unfoldInfo.encodingAngle
|
6998
|
+
] : [
|
6999
|
+
unfoldInfo.encodingAngle,
|
7000
|
+
unfoldInfo.encodingDetail
|
7632
7001
|
];
|
7633
|
-
result.valueField =
|
7634
|
-
result.seriesField =
|
7002
|
+
result.valueField = foldInfo.measureValue;
|
7003
|
+
result.seriesField = unfoldInfo.encodingColorId;
|
7635
7004
|
result.padding = 0;
|
7636
7005
|
result.outerRadius = 0.9;
|
7637
7006
|
result.innerRadius = 0;
|
@@ -7708,54 +7077,52 @@
|
|
7708
7077
|
Builder._advancedPipelineMap.roseParallel = roseParallelAdvancedPipeline;
|
7709
7078
|
Builder._specPipelineMap.roseParallel = roseParallelSpecPipeline;
|
7710
7079
|
};
|
7711
|
-
const
|
7712
|
-
const
|
7713
|
-
|
7714
|
-
|
7715
|
-
const
|
7716
|
-
if (
|
7717
|
-
|
7718
|
-
|
7719
|
-
|
7720
|
-
const
|
7721
|
-
|
7722
|
-
|
7723
|
-
];
|
7724
|
-
const radius = [
|
7725
|
-
foldInfo.measureValue
|
7726
|
-
];
|
7727
|
-
const group = [
|
7728
|
-
unfoldInfo.groupId
|
7729
|
-
];
|
7730
|
-
const color = [
|
7731
|
-
unfoldInfo.groupId
|
7080
|
+
const encodingForRadar = (advancedVSeed, context)=>{
|
7081
|
+
const { vseed } = context;
|
7082
|
+
const { dimensions } = advancedVSeed;
|
7083
|
+
if (!dimensions) return advancedVSeed;
|
7084
|
+
const encoding = vseed.encoding;
|
7085
|
+
if (encoding) {
|
7086
|
+
const angle = encoding.angle || [];
|
7087
|
+
const detail = encoding.detail || [];
|
7088
|
+
const color = encoding.color || [];
|
7089
|
+
const mergedDetail = [
|
7090
|
+
...color.filter((d)=>!angle.includes(d)),
|
7091
|
+
...detail
|
7732
7092
|
];
|
7733
|
-
return
|
7734
|
-
...
|
7735
|
-
{
|
7736
|
-
|
7737
|
-
|
7738
|
-
group,
|
7739
|
-
color
|
7093
|
+
return {
|
7094
|
+
...advancedVSeed,
|
7095
|
+
encoding: {
|
7096
|
+
...encoding,
|
7097
|
+
detail: mergedDetail
|
7740
7098
|
}
|
7741
|
-
|
7742
|
-
}
|
7099
|
+
};
|
7100
|
+
}
|
7101
|
+
const mergedEncoding = {
|
7102
|
+
angle: dimensions.slice(0, 1).map((item)=>item.id),
|
7103
|
+
color: dimensions.slice(1).map((item)=>item.id),
|
7104
|
+
detail: dimensions.slice(1).map((item)=>item.id),
|
7105
|
+
tooltip: dimensions.map((item)=>item.id),
|
7106
|
+
label: [],
|
7107
|
+
row: [],
|
7108
|
+
column: []
|
7109
|
+
};
|
7743
7110
|
return {
|
7744
|
-
...
|
7745
|
-
encoding
|
7111
|
+
...advancedVSeed,
|
7112
|
+
encoding: mergedEncoding
|
7746
7113
|
};
|
7747
7114
|
};
|
7748
7115
|
const radarAdvancedPipeline = [
|
7749
7116
|
initAdvancedVSeed_initAdvancedVSeed,
|
7750
7117
|
autoMeasures_autoMeasures,
|
7751
7118
|
autoDimensions_autoDimensions,
|
7119
|
+
encodingForRadar,
|
7752
7120
|
pivotAdapter([
|
7753
|
-
|
7121
|
+
reshapeWithEncoding
|
7754
7122
|
], [
|
7755
|
-
|
7123
|
+
pivotReshapeWithEncoding
|
7756
7124
|
]),
|
7757
|
-
|
7758
|
-
sort_sortLegend,
|
7125
|
+
sortLegend_sortLegend,
|
7759
7126
|
radarConfig,
|
7760
7127
|
theme_theme,
|
7761
7128
|
markStyle_markStyle,
|
@@ -7766,12 +7133,12 @@
|
|
7766
7133
|
...spec
|
7767
7134
|
};
|
7768
7135
|
const { advancedVSeed } = context;
|
7769
|
-
const {
|
7770
|
-
|
7136
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
7137
|
+
const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
|
7771
7138
|
result.type = 'radar';
|
7772
|
-
result.angleField =
|
7773
|
-
result.radiusField =
|
7774
|
-
result.seriesField =
|
7139
|
+
result.angleField = unfoldInfo.encodingAngle;
|
7140
|
+
result.radiusField = foldInfo.measureValue;
|
7141
|
+
result.seriesField = unfoldInfo.encodingColorId;
|
7775
7142
|
result.padding = 0;
|
7776
7143
|
result.region = [
|
7777
7144
|
{
|
@@ -7883,47 +7250,40 @@
|
|
7883
7250
|
Builder._advancedPipelineMap.radar = radarAdvancedPipeline;
|
7884
7251
|
Builder._specPipelineMap.radar = radarSpecPipeline;
|
7885
7252
|
};
|
7886
|
-
const
|
7887
|
-
const
|
7888
|
-
|
7253
|
+
const encodingForFunnel = (advancedVSeed, context)=>{
|
7254
|
+
const { vseed } = context;
|
7255
|
+
const { dimensions } = advancedVSeed;
|
7256
|
+
if (!dimensions) return advancedVSeed;
|
7257
|
+
const encoding = vseed.encoding;
|
7258
|
+
if (encoding) return {
|
7259
|
+
...advancedVSeed,
|
7260
|
+
encoding: {
|
7261
|
+
...encoding
|
7262
|
+
}
|
7263
|
+
};
|
7264
|
+
const mergedEncoding = {
|
7265
|
+
color: dimensions.slice(0).map((item)=>item.id),
|
7266
|
+
detail: dimensions.slice(0).map((item)=>item.id),
|
7267
|
+
tooltip: dimensions.map((item)=>item.id),
|
7268
|
+
label: [],
|
7269
|
+
row: [],
|
7270
|
+
column: []
|
7889
7271
|
};
|
7890
|
-
const { datasetReshapeInfo } = advancedVSeed;
|
7891
|
-
if (!datasetReshapeInfo) return result;
|
7892
|
-
const encoding = datasetReshapeInfo.reduce((prev, cur)=>{
|
7893
|
-
const { foldInfo, unfoldInfo } = cur;
|
7894
|
-
const size = [
|
7895
|
-
foldInfo.measureValue
|
7896
|
-
];
|
7897
|
-
const group = [
|
7898
|
-
unfoldInfo.groupId
|
7899
|
-
];
|
7900
|
-
const color = [
|
7901
|
-
foldInfo.measureValue
|
7902
|
-
];
|
7903
|
-
return [
|
7904
|
-
...prev,
|
7905
|
-
{
|
7906
|
-
size,
|
7907
|
-
group,
|
7908
|
-
color
|
7909
|
-
}
|
7910
|
-
];
|
7911
|
-
}, []);
|
7912
7272
|
return {
|
7913
|
-
...
|
7914
|
-
encoding
|
7273
|
+
...advancedVSeed,
|
7274
|
+
encoding: mergedEncoding
|
7915
7275
|
};
|
7916
7276
|
};
|
7917
7277
|
const funnelAdvancedPipeline = [
|
7918
7278
|
initAdvancedVSeed_initAdvancedVSeed,
|
7919
7279
|
autoMeasures_autoMeasures,
|
7920
7280
|
autoDimensions_autoDimensions,
|
7281
|
+
encodingForFunnel,
|
7921
7282
|
pivotAdapter([
|
7922
|
-
|
7283
|
+
reshapeWithEncoding
|
7923
7284
|
], [
|
7924
|
-
|
7285
|
+
pivotReshapeWithEncoding
|
7925
7286
|
]),
|
7926
|
-
encodingFunnel,
|
7927
7287
|
funnelConfig,
|
7928
7288
|
theme_theme,
|
7929
7289
|
annotation_annotation
|
@@ -7933,11 +7293,12 @@
|
|
7933
7293
|
...spec
|
7934
7294
|
};
|
7935
7295
|
const { advancedVSeed } = context;
|
7936
|
-
const {
|
7937
|
-
|
7296
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
7297
|
+
const { foldInfo, unfoldInfo } = datasetReshapeInfo[0];
|
7938
7298
|
result.type = 'funnel';
|
7939
|
-
result.valueField =
|
7940
|
-
result.categoryField =
|
7299
|
+
result.valueField = foldInfo.measureValue;
|
7300
|
+
result.categoryField = unfoldInfo.encodingDetail;
|
7301
|
+
result.seriesField = unfoldInfo.encodingColorId;
|
7941
7302
|
result.padding = 0;
|
7942
7303
|
result.isTransform = true;
|
7943
7304
|
result.shape = 'rect';
|
@@ -7952,7 +7313,7 @@
|
|
7952
7313
|
style: {
|
7953
7314
|
cornerRadius: 4,
|
7954
7315
|
fill: {
|
7955
|
-
field:
|
7316
|
+
field: unfoldInfo.encodingColorId,
|
7956
7317
|
scale: 'color'
|
7957
7318
|
}
|
7958
7319
|
},
|
@@ -7968,99 +7329,13 @@
|
|
7968
7329
|
result.animation = true;
|
7969
7330
|
return result;
|
7970
7331
|
};
|
7971
|
-
const linearColor = (spec, context)=>{
|
7972
|
-
const result = {
|
7973
|
-
...spec
|
7974
|
-
};
|
7975
|
-
const { advancedVSeed } = context;
|
7976
|
-
const { datasetReshapeInfo, chartType, encoding } = advancedVSeed;
|
7977
|
-
const baseConfig = advancedVSeed.config[chartType];
|
7978
|
-
if (!baseConfig || !baseConfig.color) return result;
|
7979
|
-
const { color } = baseConfig;
|
7980
|
-
const { colorScheme } = color;
|
7981
|
-
result.color = {
|
7982
|
-
type: 'linear',
|
7983
|
-
domain: [
|
7984
|
-
{
|
7985
|
-
dataId: datasetReshapeInfo[0].id,
|
7986
|
-
fields: encoding?.[0]?.color
|
7987
|
-
}
|
7988
|
-
],
|
7989
|
-
range: colorScheme
|
7990
|
-
};
|
7991
|
-
return result;
|
7992
|
-
};
|
7993
|
-
const colorLegend = (spec, context)=>{
|
7994
|
-
const result = {
|
7995
|
-
...spec
|
7996
|
-
};
|
7997
|
-
const { advancedVSeed } = context;
|
7998
|
-
const { chartType } = advancedVSeed;
|
7999
|
-
const baseConfig = advancedVSeed.config[chartType];
|
8000
|
-
const { encoding } = advancedVSeed;
|
8001
|
-
if (!encoding[0].color) return result;
|
8002
|
-
if (!baseConfig || !baseConfig.legend) return result;
|
8003
|
-
const { legend } = baseConfig;
|
8004
|
-
const { enable, position = 'bottom' } = legend || {};
|
8005
|
-
const orient = [
|
8006
|
-
'bottom',
|
8007
|
-
'bottomLeft',
|
8008
|
-
'bottomRight',
|
8009
|
-
'bl',
|
8010
|
-
'br'
|
8011
|
-
].includes(position) ? 'bottom' : [
|
8012
|
-
'top',
|
8013
|
-
'topLeft',
|
8014
|
-
'topRight',
|
8015
|
-
'tl',
|
8016
|
-
'tr'
|
8017
|
-
].includes(position) ? 'top' : [
|
8018
|
-
'left',
|
8019
|
-
'leftTop',
|
8020
|
-
'leftBottom',
|
8021
|
-
'lt',
|
8022
|
-
'lb'
|
8023
|
-
].includes(position) ? 'left' : 'right';
|
8024
|
-
const legendPosition = [
|
8025
|
-
'topLeft',
|
8026
|
-
'bottomLeft',
|
8027
|
-
'leftTop',
|
8028
|
-
'rightTop',
|
8029
|
-
'lt',
|
8030
|
-
'rt',
|
8031
|
-
'tl',
|
8032
|
-
'bl'
|
8033
|
-
].includes(position) ? 'start' : [
|
8034
|
-
'topRight',
|
8035
|
-
'bottomRight',
|
8036
|
-
'leftBottom',
|
8037
|
-
'rightBottom',
|
8038
|
-
'lb',
|
8039
|
-
'rb',
|
8040
|
-
'rt',
|
8041
|
-
'br'
|
8042
|
-
].includes(position) ? 'end' : 'middle';
|
8043
|
-
result.legends = {
|
8044
|
-
type: 'color',
|
8045
|
-
visible: enable,
|
8046
|
-
orient,
|
8047
|
-
position: legendPosition,
|
8048
|
-
field: encoding[0].color[0],
|
8049
|
-
inverse: !![
|
8050
|
-
'left',
|
8051
|
-
'right'
|
8052
|
-
].includes(orient)
|
8053
|
-
};
|
8054
|
-
return result;
|
8055
|
-
};
|
8056
7332
|
const funnel = [
|
8057
7333
|
initFunnel,
|
8058
|
-
linearColor,
|
8059
7334
|
background_backgroundColor,
|
8060
7335
|
datasetXY,
|
8061
7336
|
label_label,
|
8062
7337
|
tooltip_tooltip,
|
8063
|
-
|
7338
|
+
discreteLegend,
|
8064
7339
|
annotationPoint_annotationPoint,
|
8065
7340
|
annotationVerticalLine_annotationVerticalLine,
|
8066
7341
|
annotationHorizontalLine_annotationHorizontalLine,
|
@@ -8073,12 +7348,11 @@
|
|
8073
7348
|
datasetPivot,
|
8074
7349
|
pivotIndicators_pivotIndicators([
|
8075
7350
|
initFunnel,
|
8076
|
-
linearColor,
|
8077
7351
|
background_backgroundColor,
|
8078
7352
|
datasetXY,
|
8079
7353
|
label_label,
|
8080
7354
|
tooltip_tooltip,
|
8081
|
-
|
7355
|
+
discreteLegend,
|
8082
7356
|
annotationPoint_annotationPoint,
|
8083
7357
|
annotationVerticalLine_annotationVerticalLine,
|
8084
7358
|
annotationHorizontalLine_annotationHorizontalLine,
|
@@ -8094,49 +7368,42 @@
|
|
8094
7368
|
Builder._advancedPipelineMap.funnel = funnelAdvancedPipeline;
|
8095
7369
|
Builder._specPipelineMap.funnel = funnelSpecPipeline;
|
8096
7370
|
};
|
8097
|
-
const
|
8098
|
-
const
|
8099
|
-
|
7371
|
+
const encodingForHeatmap = (advancedVSeed, context)=>{
|
7372
|
+
const { vseed } = context;
|
7373
|
+
const { dimensions } = advancedVSeed;
|
7374
|
+
if (!dimensions) return advancedVSeed;
|
7375
|
+
const encoding = vseed.encoding;
|
7376
|
+
if (encoding) return {
|
7377
|
+
...advancedVSeed,
|
7378
|
+
encoding: {
|
7379
|
+
...encoding
|
7380
|
+
}
|
7381
|
+
};
|
7382
|
+
const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
|
7383
|
+
const mergedEncoding = {
|
7384
|
+
x: dimensions.slice(0, 1).map((item)=>item.id),
|
7385
|
+
y: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
|
7386
|
+
color: dimensions.slice(0).map((item)=>item.id),
|
7387
|
+
tooltip: dimensions.map((item)=>item.id),
|
7388
|
+
label: [],
|
7389
|
+
row: [],
|
7390
|
+
column: []
|
8100
7391
|
};
|
8101
|
-
const { datasetReshapeInfo, dimensions } = advancedVSeed;
|
8102
|
-
if (!datasetReshapeInfo || !dimensions) return result;
|
8103
|
-
const xDimension = dimensions.find((item)=>'rowDimension' !== item.location && 'columnDimension' !== item.location) || dimensions[0];
|
8104
|
-
const isZeroDimension = 0 === dimensions.length;
|
8105
|
-
const encoding = datasetReshapeInfo.reduce((prev, cur)=>{
|
8106
|
-
const { foldInfo, unfoldInfo } = cur;
|
8107
|
-
const x = [
|
8108
|
-
isZeroDimension ? foldInfo.measureName : xDimension?.id
|
8109
|
-
];
|
8110
|
-
const y = [
|
8111
|
-
unfoldInfo.groupName
|
8112
|
-
];
|
8113
|
-
const color = [
|
8114
|
-
foldInfo.measureValue
|
8115
|
-
];
|
8116
|
-
return [
|
8117
|
-
...prev,
|
8118
|
-
{
|
8119
|
-
x,
|
8120
|
-
y,
|
8121
|
-
color
|
8122
|
-
}
|
8123
|
-
];
|
8124
|
-
}, []);
|
8125
7392
|
return {
|
8126
|
-
...
|
8127
|
-
encoding
|
7393
|
+
...advancedVSeed,
|
7394
|
+
encoding: mergedEncoding
|
8128
7395
|
};
|
8129
7396
|
};
|
8130
7397
|
const heatmapAdvancedPipeline = [
|
8131
7398
|
initAdvancedVSeed_initAdvancedVSeed,
|
8132
7399
|
autoMeasures_autoMeasures,
|
8133
7400
|
autoDimensions_autoDimensions,
|
7401
|
+
encodingForHeatmap,
|
8134
7402
|
pivotAdapter([
|
8135
|
-
|
7403
|
+
reshapeWithEncoding
|
8136
7404
|
], [
|
8137
|
-
|
7405
|
+
pivotReshapeWithEncoding
|
8138
7406
|
]),
|
8139
|
-
encodingMatrix,
|
8140
7407
|
sortXBandAxis,
|
8141
7408
|
heatmapConfig,
|
8142
7409
|
theme_theme,
|
@@ -8158,23 +7425,20 @@
|
|
8158
7425
|
...spec
|
8159
7426
|
};
|
8160
7427
|
const { advancedVSeed } = context;
|
8161
|
-
const {
|
8162
|
-
|
7428
|
+
const { datasetReshapeInfo } = advancedVSeed;
|
7429
|
+
const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
|
8163
7430
|
result.type = 'heatmap';
|
8164
7431
|
result.direction = 'vertical';
|
8165
|
-
result.xField =
|
8166
|
-
result.yField =
|
8167
|
-
result.
|
7432
|
+
result.xField = unfoldInfo.encodingX;
|
7433
|
+
result.yField = unfoldInfo.encodingY;
|
7434
|
+
result.seriesField = unfoldInfo.encodingColorId;
|
7435
|
+
result.valueField = foldInfo.measureValue;
|
8168
7436
|
result.padding = 0;
|
8169
7437
|
result.cell = {
|
8170
7438
|
style: {
|
8171
7439
|
shape: 'rect',
|
8172
7440
|
stroke: '#ffffff',
|
8173
|
-
lineWidth: 1
|
8174
|
-
fill: {
|
8175
|
-
field: encoding[0].color[0],
|
8176
|
-
scale: 'color'
|
8177
|
-
}
|
7441
|
+
lineWidth: 1
|
8178
7442
|
}
|
8179
7443
|
};
|
8180
7444
|
result.axes = [
|
@@ -8199,12 +7463,11 @@
|
|
8199
7463
|
};
|
8200
7464
|
const heatmap = [
|
8201
7465
|
initHeatmap,
|
8202
|
-
linearColor,
|
8203
7466
|
background_backgroundColor,
|
8204
7467
|
datasetXY,
|
8205
7468
|
label_label,
|
8206
7469
|
labelColorInversion,
|
8207
|
-
|
7470
|
+
discreteLegend,
|
8208
7471
|
tooltip_tooltip,
|
8209
7472
|
pointStyle_pointStyle,
|
8210
7473
|
pointStateDimensionHover,
|
@@ -8221,12 +7484,11 @@
|
|
8221
7484
|
datasetPivot,
|
8222
7485
|
pivotIndicators_pivotIndicators([
|
8223
7486
|
initHeatmap,
|
8224
|
-
linearColor,
|
8225
7487
|
background_backgroundColor,
|
8226
7488
|
datasetXY,
|
8227
7489
|
label_label,
|
8228
7490
|
labelColorInversion,
|
8229
|
-
|
7491
|
+
discreteLegend,
|
8230
7492
|
tooltip_tooltip,
|
8231
7493
|
pointStyle_pointStyle,
|
8232
7494
|
pointStateDimensionHover,
|
@@ -8494,12 +7756,6 @@
|
|
8494
7756
|
yAxis: linearAxis,
|
8495
7757
|
crosshairLine
|
8496
7758
|
},
|
8497
|
-
areaRange: {
|
8498
|
-
...baseConfig,
|
8499
|
-
xAxis: bandAxis,
|
8500
|
-
yAxis: linearAxis,
|
8501
|
-
crosshairLine
|
8502
|
-
},
|
8503
7759
|
scatter: {
|
8504
7760
|
...baseConfig,
|
8505
7761
|
xAxis: {
|
@@ -8832,12 +8088,6 @@
|
|
8832
8088
|
yAxis: linearAxis,
|
8833
8089
|
crosshairLine: crosshairLine
|
8834
8090
|
},
|
8835
|
-
areaRange: {
|
8836
|
-
...baseConfig,
|
8837
|
-
xAxis: bandAxis,
|
8838
|
-
yAxis: linearAxis,
|
8839
|
-
crosshairLine: crosshairLine
|
8840
|
-
},
|
8841
8091
|
scatter: {
|
8842
8092
|
...baseConfig,
|
8843
8093
|
xAxis: {
|
@@ -8935,7 +8185,6 @@
|
|
8935
8185
|
registerBarPercent();
|
8936
8186
|
registerArea();
|
8937
8187
|
registerAreaPercent();
|
8938
|
-
registerAreaRange();
|
8939
8188
|
registerScatter();
|
8940
8189
|
registerDualAxis();
|
8941
8190
|
registerPie();
|
@@ -12252,7 +11501,6 @@
|
|
12252
11501
|
'barParallel',
|
12253
11502
|
'area',
|
12254
11503
|
'areaPercent',
|
12255
|
-
'areaRange',
|
12256
11504
|
'scatter',
|
12257
11505
|
'dualAxis',
|
12258
11506
|
'rose',
|
@@ -12350,6 +11598,12 @@
|
|
12350
11598
|
secondaryMeasures: schemas_array(zMeasure).or(zMeasure).optional()
|
12351
11599
|
});
|
12352
11600
|
const zDualMeasures = schemas_array(zDualMeasure);
|
11601
|
+
const zScatterMeasure = schemas_object({
|
11602
|
+
id: schemas_string(),
|
11603
|
+
xMeasures: schemas_array(zMeasure).or(zMeasure).optional(),
|
11604
|
+
yMeasures: schemas_array(zMeasure).or(zMeasure).optional()
|
11605
|
+
});
|
11606
|
+
const zScatterMeasures = schemas_array(zScatterMeasure);
|
12353
11607
|
const zFoldInfo = schemas_object({
|
12354
11608
|
foldMap: record(schemas_string(), schemas_string().or(schemas_undefined())),
|
12355
11609
|
measureId: schemas_string(),
|
@@ -12357,10 +11611,14 @@
|
|
12357
11611
|
measureValue: schemas_string()
|
12358
11612
|
});
|
12359
11613
|
const zUnfoldInfo = schemas_object({
|
11614
|
+
encodingX: schemas_string(),
|
11615
|
+
encodingY: schemas_string(),
|
11616
|
+
encodingColor: schemas_string(),
|
11617
|
+
encodingColorId: schemas_string(),
|
11618
|
+
encodingDetail: schemas_string(),
|
11619
|
+
encodingAngle: schemas_string(),
|
12360
11620
|
colorItems: schemas_array(schemas_string()),
|
12361
|
-
|
12362
|
-
colorIdMap: record(schemas_string(), schemas_string()),
|
12363
|
-
groupName: schemas_string()
|
11621
|
+
colorIdMap: record(schemas_string(), schemas_string())
|
12364
11622
|
});
|
12365
11623
|
const zDatasetReshapeInfo = schemas_array(schemas_object({
|
12366
11624
|
id: schemas_string(),
|
@@ -12369,16 +11627,21 @@
|
|
12369
11627
|
foldInfoList: schemas_array(zFoldInfo).nullish(),
|
12370
11628
|
unfoldInfo: zUnfoldInfo
|
12371
11629
|
}));
|
12372
|
-
const zEncoding =
|
11630
|
+
const zEncoding = schemas_object({
|
12373
11631
|
x: schemas_array(schemas_string()).nullish(),
|
12374
11632
|
y: schemas_array(schemas_string()).nullish(),
|
12375
|
-
color: schemas_array(schemas_string()).nullish(),
|
12376
|
-
group: schemas_array(schemas_string()).nullish(),
|
12377
11633
|
angle: schemas_array(schemas_string()).nullish(),
|
12378
11634
|
radius: schemas_array(schemas_string()).nullish(),
|
11635
|
+
detail: schemas_array(schemas_string()).nullish(),
|
11636
|
+
color: schemas_array(schemas_string()).nullish(),
|
11637
|
+
size: schemas_array(schemas_string()).nullish(),
|
12379
11638
|
tooltip: schemas_array(schemas_string()).nullish(),
|
12380
|
-
|
12381
|
-
|
11639
|
+
label: schemas_array(schemas_string()).nullish(),
|
11640
|
+
row: schemas_array(schemas_string()).nullish(),
|
11641
|
+
column: schemas_array(schemas_string()).nullish(),
|
11642
|
+
group: schemas_array(schemas_string()).nullish().describe("\u5DF2\u5F03\u7528, \u8BF7\u4F7F\u7528\u989C\u8272\u66FF\u4EE3")
|
11643
|
+
});
|
11644
|
+
const zEncodings = schemas_array(zEncoding);
|
12382
11645
|
const zXBandAxis = schemas_object({
|
12383
11646
|
visible: schemas_boolean().default(true).nullish(),
|
12384
11647
|
labelAutoHide: schemas_boolean().default(true).nullish(),
|
@@ -12641,7 +11904,6 @@
|
|
12641
11904
|
crosshairLine: zCrosshairLine.nullish()
|
12642
11905
|
});
|
12643
11906
|
const zAreaPercentConfig = zAreaConfig;
|
12644
|
-
const zAreaRangeConfig = zAreaConfig;
|
12645
11907
|
const zDualAxisConfig = schemas_object({
|
12646
11908
|
backgroundColor: zBackgroundColor.nullish(),
|
12647
11909
|
label: zLabel.nullish(),
|
@@ -12696,7 +11958,6 @@
|
|
12696
11958
|
barPercent: zBarPercentConfig.nullish(),
|
12697
11959
|
area: zAreaConfig.nullish(),
|
12698
11960
|
areaPercent: zAreaPercentConfig.nullish(),
|
12699
|
-
areaRange: zAreaRangeConfig.nullish(),
|
12700
11961
|
scatter: zScatterConfig.nullish(),
|
12701
11962
|
dualAxis: zDualAxisConfig.nullish(),
|
12702
11963
|
rose: zRoseConfig.nullish(),
|
@@ -13135,6 +12396,7 @@
|
|
13135
12396
|
const zLine = schemas_object({
|
13136
12397
|
chartType: literal('line'),
|
13137
12398
|
dataset: zDataset.nullish(),
|
12399
|
+
encoding: zEncoding.nullish(),
|
13138
12400
|
dimensions: zDimensions.nullish(),
|
13139
12401
|
measures: zMeasureTree.nullish(),
|
13140
12402
|
backgroundColor: zBackgroundColor.nullish(),
|
@@ -13159,6 +12421,7 @@
|
|
13159
12421
|
const zColumn = schemas_object({
|
13160
12422
|
chartType: literal('column'),
|
13161
12423
|
dataset: zDataset.nullish(),
|
12424
|
+
encoding: zEncoding.nullish(),
|
13162
12425
|
dimensions: zDimensions.nullish(),
|
13163
12426
|
measures: zMeasureTree.nullish(),
|
13164
12427
|
backgroundColor: zBackgroundColor.nullish(),
|
@@ -13181,6 +12444,7 @@
|
|
13181
12444
|
const zColumnParallel = schemas_object({
|
13182
12445
|
chartType: literal('columnParallel'),
|
13183
12446
|
dataset: zDataset.nullish(),
|
12447
|
+
encoding: zEncoding.nullish(),
|
13184
12448
|
dimensions: zDimensions.nullish(),
|
13185
12449
|
measures: zMeasureTree.nullish(),
|
13186
12450
|
backgroundColor: zBackgroundColor.nullish(),
|
@@ -13203,6 +12467,7 @@
|
|
13203
12467
|
const zColumnPercent = schemas_object({
|
13204
12468
|
chartType: literal('columnPercent'),
|
13205
12469
|
dataset: zDataset.nullish(),
|
12470
|
+
encoding: zEncoding.nullish(),
|
13206
12471
|
dimensions: zDimensions.nullish(),
|
13207
12472
|
measures: zMeasureTree.nullish(),
|
13208
12473
|
backgroundColor: zBackgroundColor.nullish(),
|
@@ -13225,6 +12490,7 @@
|
|
13225
12490
|
const zBar = schemas_object({
|
13226
12491
|
chartType: literal('bar'),
|
13227
12492
|
dataset: zDataset.nullish(),
|
12493
|
+
encoding: zEncoding.nullish(),
|
13228
12494
|
dimensions: zDimensions.nullish(),
|
13229
12495
|
measures: zMeasureTree.nullish(),
|
13230
12496
|
backgroundColor: zBackgroundColor.nullish(),
|
@@ -13247,6 +12513,7 @@
|
|
13247
12513
|
const zBarParallel = schemas_object({
|
13248
12514
|
chartType: literal('barParallel'),
|
13249
12515
|
dataset: zDataset.nullish(),
|
12516
|
+
encoding: zEncoding.nullish(),
|
13250
12517
|
dimensions: zDimensions.nullish(),
|
13251
12518
|
measures: zMeasureTree.nullish(),
|
13252
12519
|
backgroundColor: zBackgroundColor.nullish(),
|
@@ -13269,6 +12536,7 @@
|
|
13269
12536
|
const zBarPercent = schemas_object({
|
13270
12537
|
chartType: literal('barPercent'),
|
13271
12538
|
dataset: zDataset.nullish(),
|
12539
|
+
encoding: zEncoding.nullish(),
|
13272
12540
|
dimensions: zDimensions.nullish(),
|
13273
12541
|
measures: zMeasureTree.nullish(),
|
13274
12542
|
backgroundColor: zBackgroundColor.nullish(),
|
@@ -13291,6 +12559,7 @@
|
|
13291
12559
|
const zArea = schemas_object({
|
13292
12560
|
chartType: literal('area'),
|
13293
12561
|
dataset: zDataset.nullish(),
|
12562
|
+
encoding: zEncoding.nullish(),
|
13294
12563
|
dimensions: zDimensions.nullish(),
|
13295
12564
|
measures: zMeasureTree.nullish(),
|
13296
12565
|
backgroundColor: zBackgroundColor.nullish(),
|
@@ -13314,6 +12583,7 @@
|
|
13314
12583
|
const zAreaPercent = schemas_object({
|
13315
12584
|
chartType: literal('areaPercent'),
|
13316
12585
|
dataset: zDataset.nullish(),
|
12586
|
+
encoding: zEncoding.nullish(),
|
13317
12587
|
dimensions: zDimensions.nullish(),
|
13318
12588
|
measures: zMeasureTree.nullish(),
|
13319
12589
|
backgroundColor: zBackgroundColor.nullish(),
|
@@ -13334,31 +12604,13 @@
|
|
13334
12604
|
annotationArea: schemas_array(zAnnotationArea).or(zAnnotationArea).nullish(),
|
13335
12605
|
locale: zLocale.nullish()
|
13336
12606
|
});
|
13337
|
-
const zAreaRange = schemas_object({
|
13338
|
-
chartType: literal('areaRange'),
|
13339
|
-
dataset: zDataset.nullish(),
|
13340
|
-
dimensions: zDimensions.nullish(),
|
13341
|
-
measures: zMeasureTree.nullish(),
|
13342
|
-
backgroundColor: zBackgroundColor.nullish(),
|
13343
|
-
label: zLabel.nullish(),
|
13344
|
-
xAxis: zXBandAxis.nullish(),
|
13345
|
-
yAxis: zYLinearAxis.nullish(),
|
13346
|
-
crosshairLine: zCrosshairLine.nullish(),
|
13347
|
-
theme: zTheme.nullish(),
|
13348
|
-
pointStyle: schemas_array(zPointStyle).or(zPointStyle).nullish(),
|
13349
|
-
lineStyle: schemas_array(zLineStyle).or(zLineStyle).nullish(),
|
13350
|
-
areaStyle: schemas_array(zAreaStyle).or(zAreaStyle).nullish(),
|
13351
|
-
annotationPoint: schemas_array(zAnnotationPoint).or(zAnnotationPoint).nullish(),
|
13352
|
-
annotationVerticalLine: schemas_array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).nullish(),
|
13353
|
-
annotationHorizontalLine: schemas_array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).nullish(),
|
13354
|
-
annotationArea: schemas_array(zAnnotationArea).or(zAnnotationArea).nullish(),
|
13355
|
-
locale: zLocale.nullish()
|
13356
|
-
});
|
13357
12607
|
const zScatter = schemas_object({
|
13358
12608
|
chartType: literal('scatter'),
|
13359
12609
|
dataset: zDataset.nullish(),
|
12610
|
+
encoding: zEncoding.nullish(),
|
13360
12611
|
dimensions: zDimensions.nullish(),
|
13361
12612
|
measures: zMeasureTree.nullish(),
|
12613
|
+
scatterMeasures: zScatterMeasures.nullish(),
|
13362
12614
|
backgroundColor: zBackgroundColor.nullish(),
|
13363
12615
|
color: zColor.nullish(),
|
13364
12616
|
label: zLabel.nullish(),
|
@@ -13408,6 +12660,7 @@
|
|
13408
12660
|
const zRose = schemas_object({
|
13409
12661
|
chartType: literal('rose'),
|
13410
12662
|
dataset: zDataset.nullish(),
|
12663
|
+
encoding: zEncoding.nullish(),
|
13411
12664
|
dimensions: zDimensions.nullish(),
|
13412
12665
|
measures: zMeasureTree.nullish(),
|
13413
12666
|
backgroundColor: zBackgroundColor.nullish(),
|
@@ -13421,6 +12674,7 @@
|
|
13421
12674
|
const zRoseParallel = schemas_object({
|
13422
12675
|
chartType: literal('roseParallel'),
|
13423
12676
|
dataset: zDataset.nullish(),
|
12677
|
+
encoding: zEncoding.nullish(),
|
13424
12678
|
dimensions: zDimensions.nullish(),
|
13425
12679
|
measures: zMeasureTree.nullish(),
|
13426
12680
|
backgroundColor: zBackgroundColor.nullish(),
|
@@ -13434,6 +12688,7 @@
|
|
13434
12688
|
const zPie = schemas_object({
|
13435
12689
|
chartType: literal('pie'),
|
13436
12690
|
dataset: zDataset.nullish(),
|
12691
|
+
encoding: zEncoding.nullish(),
|
13437
12692
|
dimensions: zDimensions.nullish(),
|
13438
12693
|
measures: zMeasureTree.nullish(),
|
13439
12694
|
backgroundColor: zBackgroundColor.nullish(),
|
@@ -13447,6 +12702,7 @@
|
|
13447
12702
|
const zDonut = schemas_object({
|
13448
12703
|
chartType: literal('donut'),
|
13449
12704
|
dataset: zDataset.nullish(),
|
12705
|
+
encoding: zEncoding.nullish(),
|
13450
12706
|
dimensions: zDimensions.nullish(),
|
13451
12707
|
measures: zMeasureTree.nullish(),
|
13452
12708
|
backgroundColor: zBackgroundColor.nullish(),
|
@@ -13460,6 +12716,7 @@
|
|
13460
12716
|
const zRadar = schemas_object({
|
13461
12717
|
chartType: literal('radar'),
|
13462
12718
|
dataset: zDataset.nullish(),
|
12719
|
+
encoding: zEncoding.nullish(),
|
13463
12720
|
dimensions: zDimensions.nullish(),
|
13464
12721
|
measures: zMeasureTree.nullish(),
|
13465
12722
|
backgroundColor: zBackgroundColor.nullish(),
|
@@ -13473,6 +12730,7 @@
|
|
13473
12730
|
const zFunnel = schemas_object({
|
13474
12731
|
chartType: literal('funnel'),
|
13475
12732
|
dataset: zDataset.nullish(),
|
12733
|
+
encoding: zEncoding.nullish(),
|
13476
12734
|
dimensions: zDimensions.nullish(),
|
13477
12735
|
measures: zMeasureTree.nullish(),
|
13478
12736
|
backgroundColor: zBackgroundColor.nullish(),
|
@@ -13508,7 +12766,6 @@
|
|
13508
12766
|
zBarPercent,
|
13509
12767
|
zArea,
|
13510
12768
|
zAreaPercent,
|
13511
|
-
zAreaRange,
|
13512
12769
|
zScatter,
|
13513
12770
|
zDualAxis,
|
13514
12771
|
zPie,
|
@@ -13526,6 +12783,7 @@
|
|
13526
12783
|
dimensions: zDimensionTree,
|
13527
12784
|
measures: zMeasureTree,
|
13528
12785
|
encoding: zEncoding,
|
12786
|
+
encodings: zEncodings,
|
13529
12787
|
config: zConfig,
|
13530
12788
|
analysis: zAnalysis,
|
13531
12789
|
theme: zTheme,
|