@visactor/vseed 0.0.40 → 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.
Files changed (131) hide show
  1. package/dist/builder/builder/builder.d.ts +61 -671
  2. package/dist/builder/register/chartType/index.d.ts +0 -1
  3. package/dist/dataReshape/constant.d.ts +17 -2
  4. package/dist/dataReshape/dataReshapeByEncoding.d.ts +11 -0
  5. package/dist/dataReshape/index.d.ts +3 -7
  6. package/dist/dataReshape/unfoldDimensions.d.ts +12 -14
  7. package/dist/index.cjs +1130 -1880
  8. package/dist/index.cjs.map +1 -1
  9. package/dist/index.d.ts +1 -1
  10. package/dist/index.js +1076 -1835
  11. package/dist/index.js.map +1 -1
  12. package/dist/pipeline/advanced/chart/pipeline/index.d.ts +0 -1
  13. package/dist/pipeline/advanced/chart/pipes/analysis/index.d.ts +3 -1
  14. package/dist/pipeline/advanced/chart/pipes/analysis/sort.d.ts +0 -4
  15. package/dist/pipeline/advanced/chart/pipes/{encoding/encodingAR.d.ts → analysis/sortLegend.d.ts} +1 -1
  16. package/dist/pipeline/advanced/chart/pipes/analysis/sortXBand.d.ts +3 -0
  17. package/dist/pipeline/advanced/chart/pipes/{encoding/encodingPie.d.ts → analysis/sortYBand.d.ts} +1 -1
  18. package/dist/pipeline/advanced/chart/pipes/encoding/{encodingFunnel.d.ts → bar.d.ts} +1 -1
  19. package/dist/pipeline/advanced/chart/pipes/encoding/{encodingAreaRange.d.ts → column.d.ts} +1 -1
  20. package/dist/pipeline/advanced/chart/pipes/encoding/dualAxis.d.ts +2 -0
  21. package/dist/pipeline/advanced/chart/pipes/encoding/funnel.d.ts +2 -0
  22. package/dist/pipeline/advanced/chart/pipes/encoding/heatmap.d.ts +2 -0
  23. package/dist/pipeline/advanced/chart/pipes/encoding/index.d.ts +8 -9
  24. package/dist/pipeline/advanced/chart/pipes/encoding/{encodingMatrix.d.ts → pie.d.ts} +1 -1
  25. package/dist/pipeline/advanced/chart/pipes/encoding/radar.d.ts +2 -0
  26. package/dist/pipeline/advanced/chart/pipes/encoding/rose.d.ts +2 -0
  27. package/dist/pipeline/advanced/chart/pipes/encoding/scatter.d.ts +2 -0
  28. package/dist/pipeline/advanced/chart/pipes/init/autoScatterMeasures.d.ts +2 -0
  29. package/dist/pipeline/advanced/chart/pipes/init/index.d.ts +2 -1
  30. package/dist/pipeline/advanced/chart/pipes/reshape/index.d.ts +4 -12
  31. package/dist/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithDualEncoding.d.ts +2 -0
  32. package/dist/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithEncoding.d.ts +2 -0
  33. package/dist/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithScatterEncoding.d.ts +2 -0
  34. package/dist/pipeline/advanced/chart/pipes/reshape/reshapeWithDualEncoding.d.ts +2 -0
  35. package/dist/pipeline/advanced/chart/pipes/reshape/reshapeWithEncoding.d.ts +2 -0
  36. package/dist/pipeline/advanced/chart/pipes/reshape/reshapeWithScatterEncoding.d.ts +2 -0
  37. package/dist/pipeline/spec/chart/pipeline/index.d.ts +0 -1
  38. package/dist/pipeline/spec/chart/pipes/color/index.d.ts +0 -1
  39. package/dist/pipeline/spec/chart/pipes/{color/linearColor.d.ts → dataset/datasetScatter.d.ts} +1 -1
  40. package/dist/pipeline/spec/chart/pipes/dataset/index.d.ts +1 -0
  41. package/dist/pipeline/spec/chart/pipes/init/index.d.ts +1 -2
  42. package/dist/pipeline/spec/chart/pipes/legend/index.d.ts +0 -1
  43. package/dist/pipeline/spec/chart/pipes/tooltip/index.d.ts +0 -1
  44. package/dist/types/advancedVSeed.d.ts +26 -311
  45. package/dist/types/chartType/area/area.d.ts +10 -1
  46. package/dist/types/chartType/area/zArea.d.ts +14 -0
  47. package/dist/types/chartType/areaPercent/areaPercent.d.ts +10 -1
  48. package/dist/types/chartType/areaPercent/zAreaPercent.d.ts +14 -0
  49. package/dist/types/chartType/bar/bar.d.ts +19 -30
  50. package/dist/types/chartType/bar/zBar.d.ts +14 -0
  51. package/dist/types/chartType/barParallel/barParallel.d.ts +18 -30
  52. package/dist/types/chartType/barParallel/zBarParallel.d.ts +14 -0
  53. package/dist/types/chartType/barPercent/barPercent.d.ts +16 -21
  54. package/dist/types/chartType/barPercent/zBarPercent.d.ts +14 -0
  55. package/dist/types/chartType/column/column.d.ts +16 -28
  56. package/dist/types/chartType/column/zColumn.d.ts +14 -0
  57. package/dist/types/chartType/columnParallel/columnParallel.d.ts +19 -27
  58. package/dist/types/chartType/columnParallel/zColumnParallel.d.ts +14 -0
  59. package/dist/types/chartType/columnPercent/columnPercent.d.ts +16 -25
  60. package/dist/types/chartType/columnPercent/zColumnPercent.d.ts +14 -0
  61. package/dist/types/chartType/donut/donut.d.ts +10 -1
  62. package/dist/types/chartType/donut/zDonut.d.ts +14 -0
  63. package/dist/types/chartType/dualAxis/dualAxis.d.ts +9 -1
  64. package/dist/types/chartType/funnel/funnel.d.ts +9 -1
  65. package/dist/types/chartType/funnel/zFunnel.d.ts +14 -0
  66. package/dist/types/chartType/heatmap/heatmap.d.ts +10 -1
  67. package/dist/types/chartType/index.d.ts +0 -1
  68. package/dist/types/chartType/line/line.d.ts +14 -10
  69. package/dist/types/chartType/line/zLine.d.ts +14 -0
  70. package/dist/types/chartType/pie/pie.d.ts +10 -1
  71. package/dist/types/chartType/pie/zPie.d.ts +14 -0
  72. package/dist/types/chartType/radar/radar.d.ts +10 -1
  73. package/dist/types/chartType/radar/zRadar.d.ts +14 -0
  74. package/dist/types/chartType/rose/rose.d.ts +10 -1
  75. package/dist/types/chartType/rose/zRose.d.ts +14 -0
  76. package/dist/types/chartType/roseParallel/roseParallel.d.ts +10 -1
  77. package/dist/types/chartType/roseParallel/zRoseParallel.d.ts +14 -0
  78. package/dist/types/chartType/scatter/scatter.d.ts +88 -5
  79. package/dist/types/chartType/scatter/zScatter.d.ts +155 -0
  80. package/dist/types/index.d.ts +2 -1
  81. package/dist/types/properties/chartType/chartType.d.ts +1 -3
  82. package/dist/types/properties/config/config.d.ts +0 -307
  83. package/dist/types/properties/datasetReshapeInfo/datasetReshapeInfo.d.ts +13 -38
  84. package/dist/types/properties/datasetReshapeInfo/index.d.ts +1 -1
  85. package/dist/types/properties/datasetReshapeInfo/zDatasetReshapeInfo.d.ts +43 -0
  86. package/dist/types/properties/encoding/encoding.d.ts +49 -16
  87. package/dist/types/properties/encoding/index.d.ts +2 -2
  88. package/dist/types/properties/encoding/zEncoding.d.ts +29 -0
  89. package/dist/types/properties/measures/index.d.ts +4 -2
  90. package/dist/types/properties/measures/scatterMeasures.d.ts +6 -0
  91. package/dist/types/properties/measures/zScatterMeasures.d.ts +283 -0
  92. package/dist/types/properties/theme/customTheme.d.ts +0 -306
  93. package/dist/types/vseed.d.ts +2 -16816
  94. package/dist/types/zVseed.d.ts +15738 -0
  95. package/dist/umd/index.js +1104 -1860
  96. package/dist/umd/index.js.map +1 -1
  97. package/package.json +13 -5
  98. package/dist/builder/register/chartType/areaRange.d.ts +0 -1
  99. package/dist/dataReshape/dataReshapeFor1D.d.ts +0 -19
  100. package/dist/dataReshape/dataReshapeFor1D1M.d.ts +0 -19
  101. package/dist/dataReshape/dataReshapeFor1D2M.d.ts +0 -19
  102. package/dist/dataReshape/dataReshapeFor2D1M.d.ts +0 -19
  103. package/dist/dataReshape/dataReshapeFor2D1M0Name.d.ts +0 -19
  104. package/dist/dataReshape/unfoldZeroDimensions.d.ts +0 -10
  105. package/dist/pipeline/advanced/chart/pipeline/areaRange.d.ts +0 -2
  106. package/dist/pipeline/advanced/chart/pipes/encoding/encodingRose.d.ts +0 -2
  107. package/dist/pipeline/advanced/chart/pipes/encoding/encodingXY.d.ts +0 -2
  108. package/dist/pipeline/advanced/chart/pipes/encoding/encodingXYY.d.ts +0 -2
  109. package/dist/pipeline/advanced/chart/pipes/encoding/encodingYX.d.ts +0 -2
  110. package/dist/pipeline/advanced/chart/pipes/encoding/encodingYY.d.ts +0 -2
  111. package/dist/pipeline/advanced/chart/pipes/init/autoMeasuresBy2M1Group.d.ts +0 -8
  112. package/dist/pipeline/advanced/chart/pipes/reshape/pivotReshapeTo1D.d.ts +0 -8
  113. package/dist/pipeline/advanced/chart/pipes/reshape/pivotReshapeTo1D1M.d.ts +0 -8
  114. package/dist/pipeline/advanced/chart/pipes/reshape/pivotReshapeTo1D2M.d.ts +0 -8
  115. package/dist/pipeline/advanced/chart/pipes/reshape/pivotReshapeTo2D1M.d.ts +0 -8
  116. package/dist/pipeline/advanced/chart/pipes/reshape/pivotReshapeTo2D1M0Name.d.ts +0 -8
  117. package/dist/pipeline/advanced/chart/pipes/reshape/pivotReshapeTo2D2M.d.ts +0 -8
  118. package/dist/pipeline/advanced/chart/pipes/reshape/reshapeTo1D.d.ts +0 -8
  119. package/dist/pipeline/advanced/chart/pipes/reshape/reshapeTo1D1M.d.ts +0 -8
  120. package/dist/pipeline/advanced/chart/pipes/reshape/reshapeTo1D2M.d.ts +0 -8
  121. package/dist/pipeline/advanced/chart/pipes/reshape/reshapeTo2D1M.d.ts +0 -8
  122. package/dist/pipeline/advanced/chart/pipes/reshape/reshapeTo2D1M0Name.d.ts +0 -8
  123. package/dist/pipeline/advanced/chart/pipes/reshape/reshapeTo2D2M.d.ts +0 -8
  124. package/dist/pipeline/spec/chart/pipeline/areaRange.d.ts +0 -1
  125. package/dist/pipeline/spec/chart/pipes/init/areaRange.d.ts +0 -4
  126. package/dist/pipeline/spec/chart/pipes/legend/colorLegend.d.ts +0 -2
  127. package/dist/pipeline/spec/chart/pipes/tooltip/tooltipAreaRange.d.ts +0 -2
  128. package/dist/types/chartType/areaRange/areaRange.d.ts +0 -151
  129. package/dist/types/chartType/areaRange/index.d.ts +0 -2
  130. package/dist/types/chartType/areaRange/zAreaRange.d.ts +0 -1427
  131. /package/dist/pipeline/spec/chart/pipes/init/{initDualAxis.d.ts → dualAxis.d.ts} +0 -0
package/dist/index.cjs CHANGED
@@ -34,14 +34,16 @@ __webpack_require__.d(__webpack_exports__, {
34
34
  isTable: ()=>isTable,
35
35
  zDonut: ()=>zDonut,
36
36
  zDualMeasures: ()=>zDualMeasures,
37
- zPie: ()=>zPie,
37
+ XEncoding: ()=>XEncoding,
38
38
  findFirstMeasure: ()=>findFirstMeasure,
39
39
  scatterAdvancedPipeline: ()=>scatterAdvancedPipeline,
40
+ zPie: ()=>zPie,
40
41
  zRoseConfig: ()=>zRoseConfig,
41
42
  updateSpec: ()=>updateSpec,
42
43
  zCrosshairRect: ()=>zCrosshairRect,
43
44
  scatterSpecPipeline: ()=>scatterSpecPipeline,
44
45
  intl: ()=>intl,
46
+ zScatterMeasures: ()=>zScatterMeasures,
45
47
  columnPercentAdvancedPipeline: ()=>columnPercentAdvancedPipeline,
46
48
  zColumnConfig: ()=>zColumnConfig,
47
49
  zAnnotation: ()=>zAnnotation,
@@ -51,12 +53,11 @@ __webpack_require__.d(__webpack_exports__, {
51
53
  pivotTableAdvancedPipeline: ()=>pivotTableAdvancedPipeline,
52
54
  isMeasures: ()=>isMeasures,
53
55
  zYBandAxis: ()=>zYBandAxis,
54
- dataReshapeFor1D2M: ()=>dataReshapeFor1D2M,
55
56
  zAnnotationHorizontalLine: ()=>zAnnotationHorizontalLine,
57
+ zYLinearAxis: ()=>zYLinearAxis,
56
58
  zMarkStyle: ()=>zMarkStyle,
57
59
  registerFunnel: ()=>registerFunnel,
58
60
  Separator: ()=>Separator,
59
- zYLinearAxis: ()=>zYLinearAxis,
60
61
  columnAdvancedPipeline: ()=>columnAdvancedPipeline,
61
62
  zLabel: ()=>zLabel,
62
63
  registerColumn: ()=>registerColumn,
@@ -69,16 +70,16 @@ __webpack_require__.d(__webpack_exports__, {
69
70
  zDimensionTree: ()=>zDimensionTree,
70
71
  roseParallelSpecPipeline: ()=>roseParallelSpecPipeline,
71
72
  zLineStyle: ()=>zLineStyle,
72
- dataReshapeFor1D1M: ()=>dataReshapeFor1D1M,
73
73
  registerArea: ()=>registerArea,
74
74
  zRoseParallel: ()=>zRoseParallel,
75
+ MeasureName: ()=>MeasureName,
75
76
  zDataset: ()=>zDataset,
76
77
  UnfoldDimensionGroupId: ()=>UnfoldDimensionGroupId,
77
78
  zNumFormat: ()=>zNumFormat,
78
79
  barPercentAdvancedPipeline: ()=>barPercentAdvancedPipeline,
79
80
  findAllDimensions: ()=>findAllDimensions,
81
+ FoldYMeasureValue: ()=>FoldYMeasureValue,
80
82
  findDimensionById: ()=>findDimensionById,
81
- zAreaRangeConfig: ()=>zAreaRangeConfig,
82
83
  zPivotTableConfig: ()=>zPivotTableConfig,
83
84
  zArea: ()=>zArea,
84
85
  zColumnParallel: ()=>zColumnParallel,
@@ -90,25 +91,26 @@ __webpack_require__.d(__webpack_exports__, {
90
91
  registerAreaPercent: ()=>registerAreaPercent,
91
92
  zHeatmap: ()=>zHeatmap,
92
93
  zBarPercent: ()=>zBarPercent,
94
+ zScatterMeasure: ()=>zScatterMeasure,
93
95
  zTheme: ()=>zTheme,
94
96
  zDatum: ()=>zDatum,
95
97
  barAdvancedPipeline: ()=>barAdvancedPipeline,
96
98
  zCustomThemeConfig: ()=>zCustomThemeConfig,
97
99
  registerColumnPercent: ()=>registerColumnPercent,
98
100
  registerHeatmap: ()=>registerHeatmap,
99
- registerAreaRange: ()=>registerAreaRange,
100
- roseSpecPipeline: ()=>roseSpecPipeline,
101
- dataReshapeFor2D1M0Name: ()=>dataReshapeFor2D1M0Name,
102
101
  registerBarPercent: ()=>registerBarPercent,
102
+ roseSpecPipeline: ()=>roseSpecPipeline,
103
+ ColorIdEncoding: ()=>ColorIdEncoding,
104
+ zCrosshairLine: ()=>zCrosshairLine,
103
105
  registerLightTheme: ()=>registerLightTheme,
104
106
  roseAdvancedPipeline: ()=>roseAdvancedPipeline,
105
107
  zBarParallel: ()=>zBarParallel,
106
108
  registerDarkTheme: ()=>registerDarkTheme,
107
109
  registerPivotTable: ()=>registerPivotTable,
108
110
  isPartialDatumSelector: ()=>isPartialDatumSelector,
111
+ pieSpecPipeline: ()=>pieSpecPipeline,
109
112
  isDimensionGroup: ()=>isDimensionGroup,
110
113
  dualAxisSpecPipeline: ()=>dualAxisSpecPipeline,
111
- pieSpecPipeline: ()=>pieSpecPipeline,
112
114
  tableAdvancedPipeline: ()=>tableAdvancedPipeline,
113
115
  barSpecPipeline: ()=>barSpecPipeline,
114
116
  zAnnotationVerticalLine: ()=>zAnnotationVerticalLine,
@@ -117,15 +119,15 @@ __webpack_require__.d(__webpack_exports__, {
117
119
  unfoldDimensions: ()=>unfoldDimensions,
118
120
  roseParallelAdvancedPipeline: ()=>roseParallelAdvancedPipeline,
119
121
  registerTable: ()=>registerTable,
120
- autoFormatter: ()=>autoFormatter,
122
+ Builder: ()=>Builder,
121
123
  isMeasureGroup: ()=>isMeasureGroup,
122
- findFirstDimension: ()=>findFirstDimension,
124
+ YEncoding: ()=>YEncoding,
123
125
  registerAll: ()=>registerAll,
124
126
  registerBar: ()=>registerBar,
125
127
  isVChart: ()=>isVChart,
126
128
  radarSpecPipeline: ()=>radarSpecPipeline,
127
- Builder: ()=>Builder,
128
- zCrosshairLine: ()=>zCrosshairLine,
129
+ findFirstDimension: ()=>findFirstDimension,
130
+ autoFormatter: ()=>autoFormatter,
129
131
  zMeasureTree: ()=>zMeasureTree,
130
132
  zPieConfig: ()=>zPieConfig,
131
133
  registerLine: ()=>registerLine,
@@ -159,8 +161,9 @@ __webpack_require__.d(__webpack_exports__, {
159
161
  zRadarConfig: ()=>zRadarConfig,
160
162
  zAnnotationArea: ()=>zAnnotationArea,
161
163
  zStackCornerRadius: ()=>zStackCornerRadius,
162
- zUnfoldInfo: ()=>zUnfoldInfo,
164
+ DetailEncoding: ()=>DetailEncoding,
163
165
  zRose: ()=>zRose,
166
+ zUnfoldInfo: ()=>zUnfoldInfo,
164
167
  columnParallelSpecPipeline: ()=>columnParallelSpecPipeline,
165
168
  i18n: ()=>i18n,
166
169
  zPointStyle: ()=>zPointStyle,
@@ -182,30 +185,30 @@ __webpack_require__.d(__webpack_exports__, {
182
185
  FoldPrimaryMeasureValue: ()=>FoldPrimaryMeasureValue,
183
186
  zTableConfig: ()=>zTableConfig,
184
187
  zXBandAxis: ()=>zXBandAxis,
185
- dataReshapeFor1D: ()=>dataReshapeFor1D,
186
188
  zColumnPercentConfig: ()=>zColumnPercentConfig,
187
189
  findMeasureById: ()=>findMeasureById,
188
190
  zVSeed: ()=>zVSeed,
191
+ AngleEncoding: ()=>AngleEncoding,
189
192
  areaPercentAdvancedPipeline: ()=>areaPercentAdvancedPipeline,
190
193
  radarAdvancedPipeline: ()=>radarAdvancedPipeline,
191
- zBackgroundColor: ()=>zBackgroundColor,
192
194
  zAreaPercentConfig: ()=>zAreaPercentConfig,
195
+ zBackgroundColor: ()=>zBackgroundColor,
193
196
  registerBarParallel: ()=>registerBarParallel,
194
197
  registerRadar: ()=>registerRadar,
195
- zLocale: ()=>zLocale,
198
+ zEncodings: ()=>zEncodings,
196
199
  isDimension: ()=>isDimension,
197
200
  pivotTableSpecPipeline: ()=>pivotTableSpecPipeline,
198
- areaRangeSpecPipeline: ()=>areaRangeSpecPipeline,
199
- areaRangeAdvancedPipeline: ()=>areaRangeAdvancedPipeline,
201
+ zLocale: ()=>zLocale,
202
+ FoldXMeasureValue: ()=>FoldXMeasureValue,
200
203
  dualAxisAdvancedPipeline: ()=>dualAxisAdvancedPipeline,
201
204
  registerScatter: ()=>registerScatter,
202
- zAreaRange: ()=>zAreaRange,
203
- measureDepth: ()=>measureDepth,
205
+ zEncoding: ()=>zEncoding,
206
+ ColorEncoding: ()=>ColorEncoding,
204
207
  autoNumFormatter: ()=>autoNumFormatter,
205
- zAdvancedVSeed: ()=>zAdvancedVSeed,
208
+ measureDepth: ()=>measureDepth,
206
209
  tableSpecPipeline: ()=>tableSpecPipeline,
210
+ zAdvancedVSeed: ()=>zAdvancedVSeed,
207
211
  zConfig: ()=>zConfig,
208
- zEncoding: ()=>zEncoding,
209
212
  zBarStyle: ()=>zBarStyle,
210
213
  zMeasure: ()=>zMeasure,
211
214
  zRoseParallelConfig: ()=>zRoseParallelConfig,
@@ -216,20 +219,20 @@ __webpack_require__.d(__webpack_exports__, {
216
219
  donutAdvancedPipeline: ()=>donutAdvancedPipeline,
217
220
  zColumnPercent: ()=>zColumnPercent,
218
221
  registerPie: ()=>registerPie,
219
- dataReshapeFor2D1M: ()=>dataReshapeFor2D1M,
220
222
  foldMeasures: ()=>foldMeasures,
221
223
  isPivotTable: ()=>isPivotTable,
222
224
  zFunnel: ()=>zFunnel,
223
225
  zScatter: ()=>zScatter,
226
+ zScatterConfig: ()=>zScatterConfig,
224
227
  zBarParallelConfig: ()=>zBarParallelConfig,
225
228
  barParallelAdvancedPipeline: ()=>barParallelAdvancedPipeline,
226
229
  FoldMeasureValue: ()=>FoldMeasureValue,
227
230
  barPercentSpecPipeline: ()=>barPercentSpecPipeline,
228
231
  lineAdvancedPipeline: ()=>lineAdvancedPipeline,
229
- zBarPercentConfig: ()=>zBarPercentConfig,
232
+ dataReshapeByEncoding: ()=>dataReshapeByEncoding,
230
233
  lineSpecPipeline: ()=>lineSpecPipeline,
231
234
  isDimensions: ()=>isDimensions,
232
- zScatterConfig: ()=>zScatterConfig,
235
+ zBarPercentConfig: ()=>zBarPercentConfig,
233
236
  createFormatter: ()=>createFormatter,
234
237
  zDimensionGroup: ()=>zDimensionGroup,
235
238
  isMeasureSelector: ()=>isMeasureSelector,
@@ -1320,13 +1323,26 @@ const isVTable = (vseed)=>[
1320
1323
  const isVChart = (vseed)=>!isVTable(vseed);
1321
1324
  const isPivotChart = (vseed)=>{
1322
1325
  if (isVTable(vseed)) return false;
1323
- if ('dualAxis' === vseed.chartType) {
1324
- if (vseed.measures) {
1325
- const depth = measureDepth(vseed.measures);
1326
- if (3 === depth) return true;
1327
- return false;
1326
+ if ('dualAxis' === vseed.chartType || 'scatter' === vseed.chartType) {
1327
+ const { dimensions = [] } = vseed;
1328
+ const hasRowOrColumnDimension = dimensions && dimensions.some((dimension)=>'rowDimension' === dimension.location || 'columnDimension' === dimension.location);
1329
+ if (hasRowOrColumnDimension) return true;
1330
+ if ('scatter' === vseed.chartType) {
1331
+ if (vseed.measures) {
1332
+ const depth = measureDepth(vseed.measures);
1333
+ if (3 === depth) return true;
1334
+ return false;
1335
+ }
1336
+ if (vseed.scatterMeasures && vseed.scatterMeasures.length > 1) return true;
1337
+ }
1338
+ if ('dualAxis' === vseed.chartType) {
1339
+ if (vseed.measures) {
1340
+ const depth = measureDepth(vseed.measures);
1341
+ if (3 === depth) return true;
1342
+ return false;
1343
+ }
1344
+ if (vseed.dualMeasures && vseed.dualMeasures.length > 1) return true;
1328
1345
  }
1329
- if (vseed.dualMeasures && vseed.dualMeasures.length > 1) return true;
1330
1346
  return false;
1331
1347
  }
1332
1348
  const { measures = [], dimensions = [] } = vseed;
@@ -1405,6 +1421,24 @@ const createEmptyMeasureGroup = ()=>({
1405
1421
  alias: '',
1406
1422
  children: []
1407
1423
  });
1424
+ const ORIGINAL_DATA = '__OriginalData__';
1425
+ const Separator = '-';
1426
+ const FoldMeasureName = '__MeaName__';
1427
+ const FoldMeasureId = '__MeaId__';
1428
+ const FoldMeasureValue = '__MeaValue__';
1429
+ const MeasureName = FoldMeasureName;
1430
+ const FoldPrimaryMeasureValue = '__MeaPrimaryValue__';
1431
+ const FoldSecondaryMeasureValue = '__MeaSecondaryValue__';
1432
+ const FoldXMeasureValue = '__MeaXValue__';
1433
+ const FoldYMeasureValue = '__MeaYValue__';
1434
+ const XEncoding = '__Dim_X__';
1435
+ const YEncoding = '__Dim_Y__';
1436
+ const AngleEncoding = '__Dim_Angle__';
1437
+ const DetailEncoding = '__Dim_Detail__';
1438
+ const ColorEncoding = '__Dim_Color__';
1439
+ const ColorIdEncoding = '__Dim_ColorId__';
1440
+ const UnfoldDimensionGroup = '__DimGroup__';
1441
+ const UnfoldDimensionGroupId = '__DimGroupID__';
1408
1442
  const autoDimensions_autoDimensions = (advancedVSeed, context)=>{
1409
1443
  const result = {
1410
1444
  ...advancedVSeed
@@ -1412,6 +1446,10 @@ const autoDimensions_autoDimensions = (advancedVSeed, context)=>{
1412
1446
  const { vseed } = context;
1413
1447
  const { dimensions, dataset } = vseed;
1414
1448
  const measures = findAllMeasures(advancedVSeed.measures);
1449
+ const MeaName = {
1450
+ id: MeasureName,
1451
+ alias: intl.i18n`指标名称`
1452
+ };
1415
1453
  if (!dataset) throw new Error('dataset is required');
1416
1454
  if (0 === dataset.length) return result;
1417
1455
  if (dimensions) {
@@ -1419,6 +1457,8 @@ const autoDimensions_autoDimensions = (advancedVSeed, context)=>{
1419
1457
  location: 'dimension',
1420
1458
  ...dim
1421
1459
  }));
1460
+ if (result.dimensions.some((dim)=>dim.id === MeasureName)) return result;
1461
+ result.dimensions.push(MeaName);
1422
1462
  return result;
1423
1463
  }
1424
1464
  const top100dataset = dataset.slice(0, 100);
@@ -1435,23 +1475,51 @@ const autoDimensions_autoDimensions = (advancedVSeed, context)=>{
1435
1475
  alias: dim,
1436
1476
  location: 'dimension'
1437
1477
  }));
1478
+ result.dimensions.push(MeaName);
1438
1479
  return result;
1439
1480
  };
1481
+ const encodingForColumn = (advancedVSeed, context)=>{
1482
+ const { vseed } = context;
1483
+ const { dimensions } = advancedVSeed;
1484
+ if (!dimensions) return advancedVSeed;
1485
+ const encoding = vseed.encoding;
1486
+ if (encoding) {
1487
+ const x = encoding.x || [];
1488
+ const detail = encoding.detail || [];
1489
+ const color = encoding.color || [];
1490
+ const mergedDetail = [
1491
+ ...color.filter((d)=>!x.includes(d)),
1492
+ ...detail
1493
+ ];
1494
+ return {
1495
+ ...advancedVSeed,
1496
+ encoding: {
1497
+ ...encoding,
1498
+ detail: mergedDetail
1499
+ }
1500
+ };
1501
+ }
1502
+ const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
1503
+ const mergedEncoding = {
1504
+ x: dimensions.slice(0, 1).map((item)=>item.id),
1505
+ color: dimensions.slice(1).map((item)=>item.id),
1506
+ detail: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
1507
+ tooltip: dimensions.map((item)=>item.id),
1508
+ label: [],
1509
+ row: [],
1510
+ column: []
1511
+ };
1512
+ return {
1513
+ ...advancedVSeed,
1514
+ encoding: mergedEncoding
1515
+ };
1516
+ };
1440
1517
  const pivotAdapter = (pipeline, pivotPipeline)=>(advancedVSeed, context)=>{
1441
1518
  const { vseed } = context;
1442
1519
  const usePivotChart = isPivotChart(vseed);
1443
1520
  if (usePivotChart) return execPipeline(pivotPipeline, context, advancedVSeed);
1444
1521
  return execPipeline(pipeline, context, advancedVSeed);
1445
1522
  };
1446
- const FoldMeasureName = '__MeaName__';
1447
- const FoldMeasureId = '__MeaId__';
1448
- const FoldMeasureValue = '__MeaValue__';
1449
- const FoldPrimaryMeasureValue = '__MeaPrimaryValue__';
1450
- const FoldSecondaryMeasureValue = '__MeaSecondaryValue__';
1451
- const UnfoldDimensionGroup = '__DimGroup__';
1452
- const UnfoldDimensionGroupId = '__DimGroupID__';
1453
- const Separator = '-';
1454
- const ORIGINAL_DATA = '__OriginalData__';
1455
1523
  const foldMeasures = (dataset, measures, measureId = FoldMeasureId, measureName = FoldMeasureName, measureValue = FoldMeasureValue)=>{
1456
1524
  const foldInfo = {
1457
1525
  measureId,
@@ -1481,84 +1549,53 @@ const foldMeasures = (dataset, measures, measureId = FoldMeasureId, measureName
1481
1549
  foldInfo
1482
1550
  };
1483
1551
  };
1484
- const unfoldDimensions = (dataset, dimensions, measures, unfoldStartIndex = 0, unfoldGroupName = UnfoldDimensionGroup, unfoldGroupId = UnfoldDimensionGroupId, foldMeasureId = FoldMeasureId, dimensionsSeparator = Separator)=>{
1485
- if (unfoldStartIndex < 0 || unfoldStartIndex >= dimensions.length) throw new Error('unfoldStartIndex is out of range');
1486
- const dimensionsToBeUnfolded = dimensions.slice(unfoldStartIndex);
1487
- const dimensionsToBeRemain = dimensions.slice(0, unfoldStartIndex);
1552
+ const unfoldDimensions = (dataset, dimensions, encoding, options)=>{
1553
+ const { foldMeasureId, separator, colorItemAsId } = options;
1488
1554
  const unfoldInfo = {
1489
- groupName: unfoldGroupName,
1490
- groupId: unfoldGroupId,
1555
+ encodingAngle: AngleEncoding,
1556
+ encodingX: XEncoding,
1557
+ encodingY: YEncoding,
1558
+ encodingDetail: DetailEncoding,
1559
+ encodingColor: ColorEncoding,
1560
+ encodingColorId: ColorIdEncoding,
1491
1561
  colorItems: [],
1492
1562
  colorIdMap: {}
1493
1563
  };
1494
- if (0 === dimensions.length || 0 === measures.length) return {
1495
- dataset,
1496
- unfoldInfo: {
1497
- groupName: unfoldGroupName,
1498
- groupId: unfoldGroupId,
1499
- colorItems: [],
1500
- colorIdMap: {}
1501
- }
1502
- };
1503
- const colorItems = [];
1504
- const colorMap = {};
1564
+ const { color, x, y, detail, angle } = encoding;
1565
+ const angleDimensions = angle ? dimensions.filter((dim)=>angle.includes(dim.id)) : [];
1566
+ const xDimensions = x ? dimensions.filter((dim)=>x.includes(dim.id)) : [];
1567
+ const yDimensions = y ? dimensions.filter((dim)=>y.includes(dim.id)) : [];
1568
+ const colorDimensions = color ? dimensions.filter((dim)=>color.includes(dim.id)) : [];
1569
+ const detailDimensions = detail ? dimensions.filter((dim)=>detail.includes(dim.id)) : [];
1570
+ const colorItems = new Set();
1571
+ const colorIdMap = {};
1505
1572
  for(let i = 0; i < dataset.length; i++){
1506
1573
  const datum = dataset[i];
1507
- const colorName = generateDimGroupName(dimensionsToBeUnfolded, datum, dimensionsSeparator);
1508
- const colorId = datum[foldMeasureId] ? [
1509
- colorName,
1510
- datum[foldMeasureId]
1511
- ].join(dimensionsSeparator) : colorName;
1512
- datum[unfoldGroupName] = colorName;
1513
- datum[unfoldGroupId] = colorId;
1514
- colorItems.push(colorId);
1515
- colorMap[colorId] = colorName;
1516
- if (dimensionsToBeRemain.length > 0) for (const dim of dimensionsToBeRemain){
1517
- const dimValue = datum[dim.id];
1518
- if ('number' == typeof dimValue) datum[dim.id] = String(dimValue);
1519
- }
1574
+ applyEncoding(AngleEncoding, angleDimensions, datum, separator);
1575
+ applyEncoding(XEncoding, xDimensions, datum, separator);
1576
+ applyEncoding(YEncoding, yDimensions, datum, separator);
1577
+ applyEncoding(ColorEncoding, colorDimensions, datum, separator);
1578
+ applyEncoding(DetailEncoding, detailDimensions, datum, separator);
1579
+ if (!datum[ColorEncoding]) continue;
1580
+ const measureId = String(datum[foldMeasureId]);
1581
+ const colorItem = String(datum[ColorEncoding]);
1582
+ const colorId = colorItemAsId ? colorItem : measureId ? [
1583
+ colorItem,
1584
+ measureId
1585
+ ].join(separator) : colorItem;
1586
+ datum[ColorIdEncoding] = colorId;
1587
+ colorIdMap[colorId] = colorItem;
1588
+ colorItems.add(colorId);
1520
1589
  }
1521
- unfoldInfo.colorItems = (0, external_remeda_namespaceObject.unique)(colorItems);
1522
- unfoldInfo.colorIdMap = colorMap;
1590
+ unfoldInfo.colorItems = Array.from(colorItems);
1591
+ unfoldInfo.colorIdMap = colorIdMap;
1523
1592
  return {
1524
1593
  dataset,
1525
1594
  unfoldInfo
1526
1595
  };
1527
1596
  };
1528
- const generateDimGroupName = (dimensionsToBeGrouped, datum, dimensionsSeparator)=>dimensionsToBeGrouped.map((dim)=>String(datum[dim.id])).join(dimensionsSeparator);
1529
- const unfoldZeroDimensions = (dataset, measures, measureName, unfoldGroupName = UnfoldDimensionGroup, unfoldGroupId = UnfoldDimensionGroupId)=>{
1530
- const unfoldInfo = {
1531
- groupName: unfoldGroupName,
1532
- groupId: unfoldGroupId,
1533
- colorItems: [],
1534
- colorIdMap: {}
1535
- };
1536
- if (0 === measures.length) return {
1537
- dataset,
1538
- unfoldInfo: {
1539
- groupName: unfoldGroupName,
1540
- groupId: unfoldGroupId,
1541
- colorItems: [],
1542
- colorIdMap: {}
1543
- }
1544
- };
1545
- const colorItems = [];
1546
- const colorMap = {};
1547
- for(let i = 0; i < dataset.length; i++){
1548
- const datum = dataset[i];
1549
- const colorName = measureName;
1550
- const colorId = measureName;
1551
- datum[unfoldGroupName] = colorName;
1552
- datum[unfoldGroupId] = colorId;
1553
- colorItems.push(colorId);
1554
- colorMap[colorId] = colorName;
1555
- }
1556
- unfoldInfo.colorItems = (0, external_remeda_namespaceObject.unique)(colorItems);
1557
- unfoldInfo.colorIdMap = colorMap;
1558
- return {
1559
- dataset,
1560
- unfoldInfo
1561
- };
1597
+ const applyEncoding = (encoding, dimensions, datum, separator)=>{
1598
+ if (encoding && dimensions.length) datum[encoding] = dimensions.map((dim)=>String(datum[dim.id])).join(separator);
1562
1599
  };
1563
1600
  const emptyReshapeResult = {
1564
1601
  dataset: [],
@@ -1569,69 +1606,47 @@ const emptyReshapeResult = {
1569
1606
  measureValue: ''
1570
1607
  },
1571
1608
  unfoldInfo: {
1572
- groupName: '',
1573
- groupId: '',
1609
+ encodingAngle: AngleEncoding,
1610
+ encodingX: XEncoding,
1611
+ encodingY: YEncoding,
1612
+ encodingDetail: DetailEncoding,
1613
+ encodingColor: ColorEncoding,
1614
+ encodingColorId: ColorIdEncoding,
1574
1615
  colorItems: [],
1575
1616
  colorIdMap: {}
1576
1617
  }
1577
1618
  };
1578
- const dataReshapeFor2D1M0Name = (dataset, dimensions, measures, options)=>{
1579
- const { foldMeasureId = FoldMeasureId, foldMeasureName = FoldMeasureName, foldMeasureValue = FoldMeasureValue, unfoldDimensionGroup = UnfoldDimensionGroup, unfoldDimensionGroupId = UnfoldDimensionGroupId } = options || {};
1619
+ const dataReshapeByEncoding = (dataset, dimensions, measures, encoding, options)=>{
1620
+ const { foldMeasureId = FoldMeasureId, foldMeasureName = FoldMeasureName, foldMeasureValue = FoldMeasureValue, colorItemAsId = false } = options || {};
1580
1621
  if (0 === dimensions.length && 0 === measures.length) return emptyReshapeResult;
1581
1622
  const { dataset: foldedDataset, foldInfo } = foldMeasures(dataset, measures, foldMeasureId, foldMeasureName, foldMeasureValue);
1582
- if (0 === dimensions.length) {
1583
- const { dataset: finalDataset, unfoldInfo } = unfoldZeroDimensions(foldedDataset, [
1584
- {
1585
- id: foldMeasureValue,
1586
- alias: i18n`指标值`
1587
- }
1588
- ], i18n`指标名称`, unfoldDimensionGroup, unfoldDimensionGroupId);
1589
- return {
1590
- dataset: finalDataset,
1591
- foldInfo,
1592
- unfoldInfo
1593
- };
1594
- }
1595
- {
1596
- const onlyOneMeasure = 1 === measures.length;
1597
- const onlyOneDimension = 1 === dimensions.length;
1598
- const dims = [
1599
- ...dimensions
1600
- ];
1601
- if (!onlyOneMeasure || onlyOneDimension) dims.push({
1602
- id: foldMeasureName,
1603
- alias: i18n`指标名称`,
1604
- location: 'dimension'
1605
- });
1606
- const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, dims, [
1607
- {
1608
- id: foldMeasureValue,
1609
- alias: i18n`指标值`
1610
- }
1611
- ], 1, unfoldDimensionGroup, unfoldDimensionGroupId, foldMeasureId);
1612
- return {
1613
- dataset: finalDataset,
1614
- foldInfo,
1615
- unfoldInfo
1616
- };
1617
- }
1623
+ const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, dimensions, encoding, {
1624
+ foldMeasureId,
1625
+ separator: Separator,
1626
+ colorItemAsId
1627
+ });
1628
+ return {
1629
+ dataset: finalDataset,
1630
+ foldInfo,
1631
+ unfoldInfo
1632
+ };
1618
1633
  };
1619
- const reshapeTo2D1M0Name = (advancedVSeed, context)=>{
1634
+ const reshapeWithEncoding = (advancedVSeed, context)=>{
1620
1635
  const result = {
1621
1636
  ...advancedVSeed
1622
1637
  };
1623
1638
  const { vseed } = context;
1624
- const { dataset } = vseed;
1625
- const { dimensions, measures } = advancedVSeed;
1626
- if (!measures || !dimensions || !dataset) return result;
1639
+ const { dataset, chartType } = vseed;
1640
+ const { dimensions, measures, encoding } = advancedVSeed;
1641
+ if (!measures || !dimensions || !dataset || !encoding) return result;
1627
1642
  if (0 === measures.length) throw new Error('measures can not be empty');
1628
- const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor2D1M0Name(dataset, dimensions, measures);
1643
+ const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, measures, encoding);
1629
1644
  return {
1630
1645
  ...result,
1631
1646
  dataset: newDatasets,
1632
1647
  datasetReshapeInfo: [
1633
1648
  {
1634
- id: '2D1M',
1649
+ id: String(chartType),
1635
1650
  index: 0,
1636
1651
  foldInfo,
1637
1652
  unfoldInfo
@@ -1641,31 +1656,27 @@ const reshapeTo2D1M0Name = (advancedVSeed, context)=>{
1641
1656
  measures
1642
1657
  };
1643
1658
  };
1644
- const pivotReshapeTo2D1M0Name = (advancedVSeed, context)=>{
1659
+ const pivotReshapeWithEncoding = (advancedVSeed, context)=>{
1645
1660
  const result = {
1646
1661
  ...advancedVSeed
1647
1662
  };
1648
1663
  const { vseed } = context;
1649
1664
  const { dataset } = vseed;
1650
- const { measures } = advancedVSeed;
1651
- const dimensions = advancedVSeed.dimensions;
1652
- if (!measures || !dimensions) return result;
1665
+ const { dimensions, measures, encoding } = advancedVSeed;
1666
+ if (!measures || !dimensions || !dataset || !encoding) return result;
1667
+ if (0 === measures.length) throw new Error('measures can not be empty');
1653
1668
  const measureGroups = [];
1654
1669
  if (measures) measures.forEach((measure)=>{
1655
1670
  if (measure.children && measure.children.length > 0) measureGroups.push(measure);
1656
1671
  });
1657
- const commonDimensions = dimensions.filter((dim)=>'dimension' === dim.location);
1658
- const newDatasets = [];
1672
+ const datasets = [];
1659
1673
  const datasetReshapeInfo = [];
1660
1674
  measureGroups.forEach((measureGroup, index)=>{
1661
1675
  const measures = measureGroup.children;
1662
1676
  if (!measures) return;
1663
1677
  const groupId = measureGroup.id;
1664
- const { dataset: newSubDataset, foldInfo, unfoldInfo } = dataReshapeFor2D1M0Name(dataset, commonDimensions, measures, {
1665
- foldMeasureId: FoldMeasureId,
1666
- foldMeasureName: FoldMeasureName,
1667
- foldMeasureValue: FoldMeasureValue + groupId,
1668
- unfoldDimensionGroup: UnfoldDimensionGroup
1678
+ const { dataset: newSubDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, measures, encoding, {
1679
+ foldMeasureValue: `${FoldMeasureValue}${groupId}`
1669
1680
  });
1670
1681
  const reshapeInfo = {
1671
1682
  id: groupId,
@@ -1673,93 +1684,60 @@ const pivotReshapeTo2D1M0Name = (advancedVSeed, context)=>{
1673
1684
  foldInfo,
1674
1685
  unfoldInfo
1675
1686
  };
1676
- newDatasets.push(newSubDataset);
1687
+ datasets.push(newSubDataset);
1677
1688
  datasetReshapeInfo.push(reshapeInfo);
1678
1689
  });
1679
1690
  return {
1680
1691
  ...result,
1681
- dataset: newDatasets,
1692
+ dataset: datasets,
1682
1693
  datasetReshapeInfo: datasetReshapeInfo
1683
1694
  };
1684
1695
  };
1685
- const encodingXY = (advancedVSeed)=>{
1686
- const result = {
1687
- ...advancedVSeed
1688
- };
1689
- const { datasetReshapeInfo, dimensions } = advancedVSeed;
1690
- if (!datasetReshapeInfo || !dimensions) return result;
1691
- const xDimension = dimensions.find((item)=>'rowDimension' !== item.location && 'columnDimension' !== item.location) || dimensions[0];
1692
- const isZeroDimension = 0 === dimensions.length;
1693
- const encoding = datasetReshapeInfo.reduce((prev, cur)=>{
1694
- const { foldInfo, unfoldInfo } = cur;
1695
- const x = [
1696
- isZeroDimension ? foldInfo.measureName : xDimension?.id
1697
- ];
1698
- const y = [
1699
- foldInfo.measureValue
1700
- ];
1701
- const group = [
1702
- unfoldInfo.groupId
1703
- ];
1704
- const color = [
1705
- foldInfo.measureName
1706
- ];
1707
- return [
1708
- ...prev,
1709
- {
1710
- x,
1711
- y,
1712
- group,
1713
- color
1714
- }
1715
- ];
1716
- }, []);
1717
- return {
1718
- ...result,
1719
- encoding
1720
- };
1721
- };
1722
1696
  const sortXBandAxis = (advancedVSeed, context)=>{
1723
1697
  const result = {
1724
1698
  ...advancedVSeed
1725
1699
  };
1726
1700
  const { vseed } = context;
1727
- const { sort: sortAxis, dataset } = vseed;
1728
- const { encoding } = advancedVSeed;
1729
- const xField = encoding?.[0]?.x?.[0];
1701
+ const { sort: sortAxis } = vseed;
1702
+ const { datasetReshapeInfo, dataset } = advancedVSeed;
1703
+ const { unfoldInfo } = datasetReshapeInfo[0];
1704
+ const xField = unfoldInfo.encodingX;
1730
1705
  if (!sortAxis || !xField) return advancedVSeed;
1731
1706
  if (!result.analysis) result.analysis = {};
1732
1707
  if (!result.analysis.orderMapping) result.analysis.orderMapping = {};
1733
- const axisOrderResult = calcOrder(sortAxis, xField, dataset);
1708
+ const axisOrderResult = calcOrder(sortAxis, xField, dataset.flat(2));
1734
1709
  result.analysis.orderMapping[xField] = axisOrderResult;
1735
1710
  return result;
1736
1711
  };
1737
- const sortYBandAxis = (advancedVSeed, context)=>{
1738
- const result = {
1739
- ...advancedVSeed
1740
- };
1741
- const { vseed } = context;
1742
- const { sort: sortAxis, dataset } = vseed;
1743
- const { encoding } = advancedVSeed;
1744
- const yField = encoding?.[0]?.y?.[0];
1745
- if (!sortAxis || !yField) return advancedVSeed;
1746
- if (!result.analysis) result.analysis = {};
1747
- if (!result.analysis.orderMapping) result.analysis.orderMapping = {};
1748
- const axisOrderResult = calcOrder(sortAxis, yField, dataset);
1749
- result.analysis.orderMapping[yField] = axisOrderResult;
1750
- return result;
1712
+ const calcOrder = (sortConfig, id, dataset)=>{
1713
+ if (sortConfig.customOrder) return sortConfig.customOrder;
1714
+ const order = sortConfig.order || 'asc';
1715
+ const orderBy = sortConfig.orderBy;
1716
+ const res = (0, external_remeda_namespaceObject.sort)(dataset, (a, b)=>{
1717
+ const aValue = a[orderBy || id];
1718
+ const bValue = b[orderBy || id];
1719
+ if ('asc' === order) {
1720
+ if (aValue < bValue) return -1;
1721
+ if (aValue > bValue) return 1;
1722
+ return 0;
1723
+ }
1724
+ if (aValue > bValue) return -1;
1725
+ if (aValue < bValue) return 1;
1726
+ return 0;
1727
+ });
1728
+ return (0, external_remeda_namespaceObject.unique)(res.map((item)=>item[id]));
1751
1729
  };
1752
- const sort_sortLegend = (advancedVSeed, context)=>{
1730
+ const sortLegend_sortLegend = (advancedVSeed, context)=>{
1753
1731
  const result = {
1754
1732
  ...advancedVSeed
1755
1733
  };
1756
1734
  const { vseed } = context;
1757
1735
  const { sortLegend } = vseed;
1758
- const { datasetReshapeInfo } = advancedVSeed;
1759
- const groupField = datasetReshapeInfo?.[0]?.unfoldInfo?.groupId;
1736
+ const { datasetReshapeInfo, dataset } = advancedVSeed;
1737
+ const colorId = datasetReshapeInfo?.[0]?.unfoldInfo?.encodingColorId;
1760
1738
  const colorIdMap = datasetReshapeInfo?.[0]?.unfoldInfo?.colorIdMap;
1761
1739
  const colorItems = datasetReshapeInfo?.[0]?.unfoldInfo?.colorItems;
1762
- if (!sortLegend || !groupField || !colorIdMap || !colorItems) return advancedVSeed;
1740
+ if (!sortLegend || !colorId || !colorIdMap || !colorItems) return advancedVSeed;
1763
1741
  if (!result.analysis) result.analysis = {};
1764
1742
  if (!result.analysis.orderMapping) result.analysis.orderMapping = {};
1765
1743
  if (sortLegend.customOrder) {
@@ -1768,15 +1746,14 @@ const sort_sortLegend = (advancedVSeed, context)=>{
1768
1746
  return pre;
1769
1747
  }, {});
1770
1748
  const orderRes = sortLegend.customOrder.map((itemNameOrId)=>nameMap[itemNameOrId] ? nameMap[itemNameOrId] : itemNameOrId);
1771
- result.analysis.orderMapping[groupField] = orderRes;
1749
+ result.analysis.orderMapping[colorId] = orderRes;
1772
1750
  return result;
1773
1751
  }
1774
- const dataset = advancedVSeed.dataset?.flat(2);
1775
- const orderRes = calcOrder(sortLegend, groupField, dataset || []);
1776
- result.analysis.orderMapping[groupField] = orderRes;
1752
+ const orderRes = sortLegend_calcOrder(sortLegend, colorId, dataset?.flat(2) || []);
1753
+ result.analysis.orderMapping[colorId] = orderRes;
1777
1754
  return result;
1778
1755
  };
1779
- const calcOrder = (sortConfig, id, dataset)=>{
1756
+ const sortLegend_calcOrder = (sortConfig, id, dataset)=>{
1780
1757
  if (sortConfig.customOrder) return sortConfig.customOrder;
1781
1758
  const order = sortConfig.order || 'asc';
1782
1759
  const orderBy = sortConfig.orderBy;
@@ -1908,14 +1885,14 @@ const lineAdvancedPipeline = [
1908
1885
  initAdvancedVSeed_initAdvancedVSeed,
1909
1886
  autoMeasures_autoMeasures,
1910
1887
  autoDimensions_autoDimensions,
1888
+ encodingForColumn,
1911
1889
  pivotAdapter([
1912
- reshapeTo2D1M0Name
1890
+ reshapeWithEncoding
1913
1891
  ], [
1914
- pivotReshapeTo2D1M0Name
1892
+ pivotReshapeWithEncoding
1915
1893
  ]),
1916
- encodingXY,
1917
1894
  sortXBandAxis,
1918
- sort_sortLegend,
1895
+ sortLegend_sortLegend,
1919
1896
  lineConfig,
1920
1897
  theme_theme,
1921
1898
  markStyle_markStyle,
@@ -1926,13 +1903,13 @@ const initLine = (spec, context)=>{
1926
1903
  ...spec
1927
1904
  };
1928
1905
  const { advancedVSeed } = context;
1929
- const { encoding } = advancedVSeed;
1930
- if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
1906
+ const { datasetReshapeInfo } = advancedVSeed;
1907
+ const { foldInfo, unfoldInfo } = datasetReshapeInfo[0];
1931
1908
  result.type = 'line';
1932
1909
  result.direction = 'vertical';
1933
- result.xField = encoding[0].x[0];
1934
- result.yField = encoding[0].y[0];
1935
- result.seriesField = encoding[0].group[0];
1910
+ result.xField = unfoldInfo.encodingX;
1911
+ result.yField = foldInfo.measureValue;
1912
+ result.seriesField = unfoldInfo.encodingColorId;
1936
1913
  result.padding = 0;
1937
1914
  result.region = [
1938
1915
  {
@@ -2008,11 +1985,12 @@ const background_backgroundColor = (spec, context)=>{
2008
1985
  };
2009
1986
  const datasetXY = (spec, context)=>{
2010
1987
  const { advancedVSeed, vseed } = context;
2011
- const { encoding, analysis, datasetReshapeInfo } = advancedVSeed;
1988
+ const { analysis, datasetReshapeInfo } = advancedVSeed;
1989
+ const { unfoldInfo } = datasetReshapeInfo[0];
2012
1990
  const orderMapping = analysis?.orderMapping || {};
2013
- const angle = encoding[0]?.angle?.[0];
2014
- const x = encoding[0]?.x?.[0];
2015
- const group = encoding[0]?.group?.[0];
1991
+ const angle = unfoldInfo.encodingAngle;
1992
+ const x = unfoldInfo.encodingX;
1993
+ const colorId = unfoldInfo.encodingColorId;
2016
1994
  const id = datasetReshapeInfo[0].id;
2017
1995
  const fields = {};
2018
1996
  if (angle) fields[angle] = {
@@ -2029,14 +2007,14 @@ const datasetXY = (spec, context)=>{
2029
2007
  sortIndex: 0
2030
2008
  };
2031
2009
  }
2032
- if (group) {
2033
- const order = orderMapping[group];
2034
- if (order) fields[group] = {
2010
+ if (colorId) {
2011
+ const order = orderMapping[colorId];
2012
+ if (order) fields[colorId] = {
2035
2013
  sortIndex: 0,
2036
2014
  domain: order,
2037
2015
  lockStatisticsByDomain: true
2038
2016
  };
2039
- else fields[group] = {
2017
+ else fields[colorId] = {
2040
2018
  sortIndex: 0
2041
2019
  };
2042
2020
  }
@@ -2289,7 +2267,7 @@ const tooltip_tooltip = (spec, context)=>{
2289
2267
  } } = baseConfig;
2290
2268
  const { enable } = tooltip;
2291
2269
  const { measureId, measureValue, measureName } = datasetReshapeInfo[0].foldInfo;
2292
- const { groupName } = datasetReshapeInfo[0].unfoldInfo;
2270
+ const { encodingColor: colorName } = datasetReshapeInfo[0].unfoldInfo;
2293
2271
  result.tooltip = {
2294
2272
  visible: enable,
2295
2273
  mark: {
@@ -2310,7 +2288,7 @@ const tooltip_tooltip = (spec, context)=>{
2310
2288
  {
2311
2289
  visible: true,
2312
2290
  hasShape: true,
2313
- key: (datum)=>datum && datum[measureName || groupName] || '',
2291
+ key: (datum)=>datum && datum[measureName || colorName] || '',
2314
2292
  value: (datum)=>{
2315
2293
  if (!datum) return '';
2316
2294
  const value = datum[measureValue];
@@ -2332,7 +2310,7 @@ const tooltip_tooltip = (spec, context)=>{
2332
2310
  content: [
2333
2311
  {
2334
2312
  visible: true,
2335
- key: (datum)=>datum && datum[groupName] || '',
2313
+ key: (datum)=>datum && datum[colorName] || '',
2336
2314
  value: (datum)=>{
2337
2315
  if (!datum) return '';
2338
2316
  const value = datum[measureValue];
@@ -2670,7 +2648,8 @@ const pointStateDimensionHover = (spec)=>{
2670
2648
  const pointStateHover = (spec, context)=>{
2671
2649
  const point = spec.point || {};
2672
2650
  const { advancedVSeed } = context;
2673
- const { encoding } = advancedVSeed;
2651
+ const { datasetReshapeInfo } = advancedVSeed;
2652
+ const { unfoldInfo } = datasetReshapeInfo[0];
2674
2653
  const result = {
2675
2654
  ...spec,
2676
2655
  point: {
@@ -2681,7 +2660,7 @@ const pointStateHover = (spec, context)=>{
2681
2660
  scaleX: 1.4,
2682
2661
  scaleY: 1.4,
2683
2662
  stroke: (datum, context)=>{
2684
- const field = encoding[0]?.group?.[0];
2663
+ const field = unfoldInfo.encodingColorId;
2685
2664
  const color = context.seriesColor(datum[field]);
2686
2665
  return color;
2687
2666
  },
@@ -2695,7 +2674,8 @@ const pointStateHover = (spec, context)=>{
2695
2674
  };
2696
2675
  const lineStyle_lineStyle = (spec, context)=>{
2697
2676
  const { advancedVSeed } = context;
2698
- const { markStyle, encoding, dataset } = advancedVSeed;
2677
+ const { markStyle, datasetReshapeInfo, dataset } = advancedVSeed;
2678
+ const { unfoldInfo } = datasetReshapeInfo[0];
2699
2679
  const { lineStyle } = markStyle;
2700
2680
  if (!lineStyle) return spec;
2701
2681
  const result = {
@@ -2704,8 +2684,8 @@ const lineStyle_lineStyle = (spec, context)=>{
2704
2684
  const lineStyles = Array.isArray(lineStyle) ? lineStyle : [
2705
2685
  lineStyle
2706
2686
  ];
2707
- const group = encoding[0]?.group?.[0];
2708
- const lineGroups = (0, external_remeda_namespaceObject.groupBy)(dataset, (d)=>d[group ?? '']);
2687
+ const colorId = unfoldInfo.encodingColorId;
2688
+ const lineGroups = (0, external_remeda_namespaceObject.groupBy)(dataset, (d)=>d[colorId ?? '']);
2709
2689
  const customMap = lineStyles.reduce((result, style, index)=>{
2710
2690
  const { lineColor, lineColorOpacity, lineSmooth, lineStyle, lineWidth = 2, lineVisible = true } = style;
2711
2691
  const dashSegment = 2 * lineWidth;
@@ -2726,7 +2706,7 @@ const lineStyle_lineStyle = (spec, context)=>{
2726
2706
  [`custom${index + 1}`]: {
2727
2707
  level: index + 1,
2728
2708
  filter: (datum)=>{
2729
- const lineData = lineGroups[datum[group ?? '']];
2709
+ const lineData = lineGroups[datum[colorId ?? '']];
2730
2710
  for (const d of lineData)if (selector_selector(d, style.selector)) return true;
2731
2711
  return false;
2732
2712
  },
@@ -2821,7 +2801,8 @@ const annotationPoint_annotationPoint = (spec, context)=>{
2821
2801
  };
2822
2802
  const annotationVerticalLine_annotationVerticalLine = (spec, context)=>{
2823
2803
  const { advancedVSeed } = context;
2824
- const { annotation, encoding } = advancedVSeed;
2804
+ const { annotation, datasetReshapeInfo } = advancedVSeed;
2805
+ const { unfoldInfo } = datasetReshapeInfo[0];
2825
2806
  if (!annotation || !annotation.annotationVerticalLine) return spec;
2826
2807
  const { annotationVerticalLine } = annotation;
2827
2808
  const annotationVerticalLineList = Array.isArray(annotationVerticalLine) ? annotationVerticalLine : [
@@ -2901,7 +2882,7 @@ const annotationVerticalLine_annotationVerticalLine = (spec, context)=>{
2901
2882
  }
2902
2883
  const selectedData = selectorPoint ? dataset.filter((datum)=>selector_selector(datum, selectorPoint)) : [];
2903
2884
  return selectedData.map((datum)=>{
2904
- const x = encoding[0]?.x?.[0];
2885
+ const x = unfoldInfo.encodingX;
2905
2886
  if (!x) return {};
2906
2887
  return generateOneMarkLine(datum[x]);
2907
2888
  });
@@ -2918,7 +2899,8 @@ const annotationVerticalLine_annotationVerticalLine = (spec, context)=>{
2918
2899
  };
2919
2900
  const annotationHorizontalLine_annotationHorizontalLine = (spec, context)=>{
2920
2901
  const { advancedVSeed } = context;
2921
- const { annotation, encoding } = advancedVSeed;
2902
+ const { annotation, datasetReshapeInfo } = advancedVSeed;
2903
+ const { unfoldInfo } = datasetReshapeInfo[0];
2922
2904
  if (!annotation || !annotation.annotationHorizontalLine) return spec;
2923
2905
  const { annotationHorizontalLine } = annotation;
2924
2906
  const annotationVerticalLineList = Array.isArray(annotationHorizontalLine) ? annotationHorizontalLine : [
@@ -2998,7 +2980,7 @@ const annotationHorizontalLine_annotationHorizontalLine = (spec, context)=>{
2998
2980
  }
2999
2981
  const selectedData = selectorPoint ? dataset.filter((datum)=>selector_selector(datum, selectorPoint)) : [];
3000
2982
  return selectedData.map((datum)=>{
3001
- const y = encoding[0]?.y?.[0];
2983
+ const y = unfoldInfo.encodingY;
3002
2984
  if (!y) return {};
3003
2985
  return generateOneMarkLine(datum[y]);
3004
2986
  });
@@ -3279,13 +3261,10 @@ const pivotIndicators_pivotIndicators = (chartPipeline)=>(spec, context)=>{
3279
3261
  ...spec
3280
3262
  };
3281
3263
  const { advancedVSeed } = context;
3282
- const { measures, datasetReshapeInfo, encoding, dataset } = advancedVSeed;
3264
+ const { measures, datasetReshapeInfo, dataset } = advancedVSeed;
3283
3265
  const colorItems = (0, external_remeda_namespaceObject.unique)(datasetReshapeInfo.flatMap((d)=>d.unfoldInfo.colorItems));
3284
3266
  const indicators = datasetReshapeInfo.map((reshapeInfo, index)=>{
3285
3267
  const measure = measures?.find((d)=>d.id === reshapeInfo.id);
3286
- const newEncoding = [
3287
- encoding[index]
3288
- ];
3289
3268
  const newDataset = dataset[index];
3290
3269
  const newDatasetReshapeInfo = [
3291
3270
  {
@@ -3301,8 +3280,7 @@ const pivotIndicators_pivotIndicators = (chartPipeline)=>(spec, context)=>{
3301
3280
  advancedVSeed: {
3302
3281
  ...advancedVSeed,
3303
3282
  datasetReshapeInfo: newDatasetReshapeInfo,
3304
- dataset: newDataset,
3305
- encoding: newEncoding
3283
+ dataset: newDataset
3306
3284
  }
3307
3285
  };
3308
3286
  const chartSpec = execPipeline(chartPipeline, newContext, {});
@@ -3488,7 +3466,7 @@ const pivotDiscreteLegend = (spec, context)=>{
3488
3466
  }
3489
3467
  },
3490
3468
  label: {
3491
- formatMethod: (value)=>colorIdMap[String(value)] ?? value,
3469
+ formatMethod: (value)=>colorIdMap[value] ?? value,
3492
3470
  style: {
3493
3471
  fontSize: labelFontSize,
3494
3472
  fill: labelFontColor,
@@ -3571,151 +3549,18 @@ const registerLine = ()=>{
3571
3549
  Builder._advancedPipelineMap.line = lineAdvancedPipeline;
3572
3550
  Builder._specPipelineMap.line = lineSpecPipeline;
3573
3551
  };
3574
- const dataReshapeFor2D1M_emptyReshapeResult = {
3575
- dataset: [],
3576
- foldInfo: {
3577
- foldMap: {},
3578
- measureId: '',
3579
- measureName: '',
3580
- measureValue: ''
3581
- },
3582
- unfoldInfo: {
3583
- groupName: '',
3584
- groupId: '',
3585
- colorItems: [],
3586
- colorIdMap: {}
3587
- }
3588
- };
3589
- const dataReshapeFor2D1M = (dataset, dimensions, measures, options)=>{
3590
- const { foldMeasureId = FoldMeasureId, foldMeasureName = FoldMeasureName, foldMeasureValue = FoldMeasureValue, unfoldDimensionGroup = UnfoldDimensionGroup, unfoldDimensionGroupId = UnfoldDimensionGroupId } = options || {};
3591
- if (0 === dimensions.length && 0 === measures.length) return dataReshapeFor2D1M_emptyReshapeResult;
3592
- const { dataset: foldedDataset, foldInfo } = foldMeasures(dataset, measures, foldMeasureId, foldMeasureName, foldMeasureValue);
3593
- if (0 === dimensions.length) {
3594
- const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, [
3595
- {
3596
- id: foldMeasureId,
3597
- alias: i18n`指标Id`,
3598
- location: 'dimension'
3599
- },
3600
- {
3601
- id: foldMeasureName,
3602
- alias: i18n`指标名称`,
3603
- location: 'dimension'
3604
- }
3605
- ], [
3606
- {
3607
- id: foldMeasureValue,
3608
- alias: i18n`指标值`
3609
- }
3610
- ], 1, unfoldDimensionGroup, unfoldDimensionGroupId, foldMeasureId);
3611
- return {
3612
- dataset: finalDataset,
3613
- foldInfo,
3614
- unfoldInfo
3615
- };
3616
- }
3617
- {
3618
- const onlyOneMeasure = 1 === measures.length;
3619
- const onlyOneDimension = 1 === dimensions.length;
3620
- const dims = [
3621
- ...dimensions
3622
- ];
3623
- if (!onlyOneMeasure || onlyOneDimension) dims.push({
3624
- id: foldMeasureName,
3625
- alias: i18n`指标名称`,
3626
- location: 'dimension'
3627
- });
3628
- const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, dims, [
3629
- {
3630
- id: foldMeasureValue,
3631
- alias: i18n`指标值`
3632
- }
3633
- ], 1, unfoldDimensionGroup, unfoldDimensionGroupId, foldMeasureId);
3634
- return {
3635
- dataset: finalDataset,
3636
- foldInfo,
3637
- unfoldInfo
3638
- };
3639
- }
3640
- };
3641
- const reshapeTo2D1M = (advancedVSeed, context)=>{
3642
- const result = {
3643
- ...advancedVSeed
3644
- };
3645
- const { vseed } = context;
3646
- const { dataset } = vseed;
3647
- const { dimensions, measures } = advancedVSeed;
3648
- if (!measures || !dimensions || !dataset) return result;
3649
- if (0 === measures.length) throw new Error('measures can not be empty');
3650
- const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor2D1M(dataset, dimensions, measures);
3651
- return {
3652
- ...result,
3653
- dataset: newDatasets,
3654
- datasetReshapeInfo: [
3655
- {
3656
- id: '2D1M',
3657
- index: 0,
3658
- foldInfo,
3659
- unfoldInfo
3660
- }
3661
- ],
3662
- dimensions,
3663
- measures
3664
- };
3665
- };
3666
- const pivotReshapeTo2D1M = (advancedVSeed, context)=>{
3667
- const result = {
3668
- ...advancedVSeed
3669
- };
3670
- const { vseed } = context;
3671
- const { dataset } = vseed;
3672
- const { measures } = advancedVSeed;
3673
- const dimensions = advancedVSeed.dimensions;
3674
- if (!measures || !dimensions) return result;
3675
- const measureGroups = [];
3676
- if (measures) measures.forEach((measure)=>{
3677
- if (measure.children && measure.children.length > 0) measureGroups.push(measure);
3678
- });
3679
- const commonDimensions = dimensions.filter((dim)=>'dimension' === dim.location);
3680
- const newDatasets = [];
3681
- const datasetReshapeInfo = [];
3682
- measureGroups.forEach((measureGroup, index)=>{
3683
- const measures = measureGroup.children;
3684
- if (!measures) return;
3685
- const groupId = measureGroup.id;
3686
- const { dataset: newSubDataset, foldInfo, unfoldInfo } = dataReshapeFor2D1M(dataset, commonDimensions, measures, {
3687
- foldMeasureId: FoldMeasureId,
3688
- foldMeasureName: FoldMeasureName,
3689
- foldMeasureValue: FoldMeasureValue + groupId,
3690
- unfoldDimensionGroup: UnfoldDimensionGroup
3691
- });
3692
- const reshapeInfo = {
3693
- id: groupId,
3694
- index,
3695
- foldInfo,
3696
- unfoldInfo
3697
- };
3698
- newDatasets.push(newSubDataset);
3699
- datasetReshapeInfo.push(reshapeInfo);
3700
- });
3701
- return {
3702
- ...result,
3703
- dataset: newDatasets,
3704
- datasetReshapeInfo: datasetReshapeInfo
3705
- };
3706
- };
3707
3552
  const columnAdvancedPipeline = [
3708
3553
  initAdvancedVSeed_initAdvancedVSeed,
3709
3554
  autoMeasures_autoMeasures,
3710
3555
  autoDimensions_autoDimensions,
3556
+ encodingForColumn,
3711
3557
  pivotAdapter([
3712
- reshapeTo2D1M
3558
+ reshapeWithEncoding
3713
3559
  ], [
3714
- pivotReshapeTo2D1M
3560
+ pivotReshapeWithEncoding
3715
3561
  ]),
3716
- encodingXY,
3717
3562
  sortXBandAxis,
3718
- sort_sortLegend,
3563
+ sortLegend_sortLegend,
3719
3564
  columnConfig,
3720
3565
  theme_theme,
3721
3566
  markStyle_markStyle,
@@ -3726,13 +3571,13 @@ const initColumn = (spec, context)=>{
3726
3571
  ...spec
3727
3572
  };
3728
3573
  const { advancedVSeed } = context;
3729
- const { encoding } = advancedVSeed;
3730
- if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
3574
+ const { datasetReshapeInfo } = advancedVSeed;
3575
+ const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
3731
3576
  result.type = 'bar';
3732
3577
  result.direction = 'vertical';
3733
- result.xField = encoding[0].x[0];
3734
- result.yField = encoding[0].y[0];
3735
- result.seriesField = encoding[0].group[0];
3578
+ result.xField = unfoldInfo.encodingX;
3579
+ result.yField = foldInfo.measureValue;
3580
+ result.seriesField = unfoldInfo.encodingColorId;
3736
3581
  result.padding = 0;
3737
3582
  result.region = [
3738
3583
  {
@@ -4052,14 +3897,14 @@ const columnParallelAdvancedPipeline = [
4052
3897
  initAdvancedVSeed_initAdvancedVSeed,
4053
3898
  autoMeasures_autoMeasures,
4054
3899
  autoDimensions_autoDimensions,
3900
+ encodingForColumn,
4055
3901
  pivotAdapter([
4056
- reshapeTo2D1M
3902
+ reshapeWithEncoding
4057
3903
  ], [
4058
- pivotReshapeTo2D1M
3904
+ pivotReshapeWithEncoding
4059
3905
  ]),
4060
- encodingXY,
4061
3906
  sortXBandAxis,
4062
- sort_sortLegend,
3907
+ sortLegend_sortLegend,
4063
3908
  columnParallelConfig,
4064
3909
  theme_theme,
4065
3910
  markStyle_markStyle,
@@ -4070,20 +3915,19 @@ const initColumnParallel = (spec, context)=>{
4070
3915
  ...spec
4071
3916
  };
4072
3917
  const { advancedVSeed } = context;
4073
- const { encoding, datasetReshapeInfo, dimensions } = advancedVSeed;
4074
- const { unfoldInfo } = datasetReshapeInfo[0];
4075
- if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
3918
+ const { datasetReshapeInfo, dimensions } = advancedVSeed;
3919
+ const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
4076
3920
  const sameDimensionsMode = dimensions.length > 1 && dimensions.every((dim)=>dim.id === dimensions[0].id);
4077
3921
  result.type = 'bar';
4078
3922
  result.direction = 'vertical';
4079
3923
  result.xField = sameDimensionsMode ? [
4080
- encoding[0].x[0]
3924
+ unfoldInfo.encodingX
4081
3925
  ] : [
4082
- encoding[0].x[0],
4083
- unfoldInfo.groupId
3926
+ unfoldInfo.encodingX,
3927
+ unfoldInfo.encodingDetail
4084
3928
  ];
4085
- result.yField = encoding[0].y[0];
4086
- result.seriesField = encoding[0].group[0];
3929
+ result.yField = foldInfo.measureValue;
3930
+ result.seriesField = unfoldInfo.encodingColorId;
4087
3931
  result.padding = 0;
4088
3932
  result.region = [
4089
3933
  {
@@ -4150,14 +3994,14 @@ const columnPercentAdvancedPipeline = [
4150
3994
  initAdvancedVSeed_initAdvancedVSeed,
4151
3995
  autoMeasures_autoMeasures,
4152
3996
  autoDimensions_autoDimensions,
3997
+ encodingForColumn,
4153
3998
  pivotAdapter([
4154
- reshapeTo2D1M
3999
+ reshapeWithEncoding
4155
4000
  ], [
4156
- pivotReshapeTo2D1M
4001
+ pivotReshapeWithEncoding
4157
4002
  ]),
4158
- encodingXY,
4159
4003
  sortXBandAxis,
4160
- sort_sortLegend,
4004
+ sortLegend_sortLegend,
4161
4005
  columnPercentConfig,
4162
4006
  theme_theme,
4163
4007
  markStyle_markStyle,
@@ -4227,55 +4071,70 @@ const registerColumnPercent = ()=>{
4227
4071
  Builder._advancedPipelineMap.columnPercent = columnPercentAdvancedPipeline;
4228
4072
  Builder._specPipelineMap.columnPercent = columnPercentSpecPipeline;
4229
4073
  };
4230
- const encodingYX = (advancedVSeed)=>{
4231
- const result = {
4232
- ...advancedVSeed
4233
- };
4234
- const { datasetReshapeInfo, dimensions } = advancedVSeed;
4235
- if (!datasetReshapeInfo || !dimensions) return result;
4236
- const yDimension = dimensions.find((item)=>'rowDimension' !== item.location && 'columnDimension' !== item.location) || dimensions[0];
4237
- const isZeroDimension = 0 === dimensions.length;
4238
- const encoding = datasetReshapeInfo.reduce((prev, cur)=>{
4239
- const { foldInfo, unfoldInfo } = cur;
4240
- const y = [
4241
- isZeroDimension ? foldInfo.measureName : yDimension?.id
4242
- ];
4243
- const x = [
4244
- foldInfo.measureValue
4245
- ];
4246
- const group = [
4247
- unfoldInfo.groupId
4248
- ];
4249
- const color = [
4250
- foldInfo.measureName
4074
+ const encodingForBar = (advancedVSeed, context)=>{
4075
+ const { vseed } = context;
4076
+ const { dimensions } = advancedVSeed;
4077
+ if (!dimensions) return advancedVSeed;
4078
+ const encoding = vseed.encoding;
4079
+ if (encoding) {
4080
+ const y = encoding.y || [];
4081
+ const detail = encoding.detail || [];
4082
+ const color = encoding.color || [];
4083
+ const mergedDetail = [
4084
+ ...color.filter((d)=>!y.includes(d)),
4085
+ ...detail
4251
4086
  ];
4252
- return [
4253
- ...prev,
4254
- {
4255
- x,
4256
- y,
4257
- group,
4258
- color
4087
+ return {
4088
+ ...advancedVSeed,
4089
+ encoding: {
4090
+ ...encoding,
4091
+ detail: mergedDetail
4259
4092
  }
4260
- ];
4261
- }, []);
4093
+ };
4094
+ }
4095
+ const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
4096
+ const mergedEncoding = {
4097
+ y: dimensions.slice(0, 1).map((item)=>item.id),
4098
+ color: dimensions.slice(1).map((item)=>item.id),
4099
+ detail: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
4100
+ tooltip: dimensions.map((item)=>item.id),
4101
+ label: [],
4102
+ row: [],
4103
+ column: []
4104
+ };
4262
4105
  return {
4263
- ...result,
4264
- encoding
4106
+ ...advancedVSeed,
4107
+ encoding: mergedEncoding
4108
+ };
4109
+ };
4110
+ const sortYBandAxis = (advancedVSeed, context)=>{
4111
+ const result = {
4112
+ ...advancedVSeed
4265
4113
  };
4114
+ const { vseed } = context;
4115
+ const { sort: sortAxis } = vseed;
4116
+ const { datasetReshapeInfo, dataset } = advancedVSeed;
4117
+ const { unfoldInfo } = datasetReshapeInfo[0];
4118
+ const yField = unfoldInfo?.encodingY;
4119
+ if (!sortAxis || !yField) return advancedVSeed;
4120
+ if (!result.analysis) result.analysis = {};
4121
+ if (!result.analysis.orderMapping) result.analysis.orderMapping = {};
4122
+ const axisOrderResult = calcOrder(sortAxis, yField, dataset.flat(2));
4123
+ result.analysis.orderMapping[yField] = axisOrderResult;
4124
+ return result;
4266
4125
  };
4267
4126
  const barAdvancedPipeline = [
4268
4127
  initAdvancedVSeed_initAdvancedVSeed,
4269
4128
  autoMeasures_autoMeasures,
4270
4129
  autoDimensions_autoDimensions,
4130
+ encodingForBar,
4271
4131
  pivotAdapter([
4272
- reshapeTo2D1M
4132
+ reshapeWithEncoding
4273
4133
  ], [
4274
- pivotReshapeTo2D1M
4134
+ pivotReshapeWithEncoding
4275
4135
  ]),
4276
- encodingYX,
4277
4136
  sortYBandAxis,
4278
- sort_sortLegend,
4137
+ sortLegend_sortLegend,
4279
4138
  barConfig,
4280
4139
  theme_theme,
4281
4140
  markStyle_markStyle,
@@ -4286,13 +4145,13 @@ const initBar = (spec, context)=>{
4286
4145
  ...spec
4287
4146
  };
4288
4147
  const { advancedVSeed } = context;
4289
- const { encoding } = advancedVSeed;
4290
- if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
4148
+ const { datasetReshapeInfo } = advancedVSeed;
4149
+ const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
4291
4150
  result.type = 'bar';
4292
4151
  result.direction = 'horizontal';
4293
- result.yField = encoding[0].y?.[0];
4294
- result.xField = encoding[0].x?.[0];
4295
- result.seriesField = encoding[0].group?.[0];
4152
+ result.yField = unfoldInfo.encodingY;
4153
+ result.xField = foldInfo.measureValue;
4154
+ result.seriesField = unfoldInfo.encodingColorId;
4296
4155
  result.padding = 0;
4297
4156
  result.region = [
4298
4157
  {
@@ -4304,11 +4163,12 @@ const initBar = (spec, context)=>{
4304
4163
  };
4305
4164
  const datasetYX = (spec, context)=>{
4306
4165
  const { advancedVSeed, vseed } = context;
4307
- const { encoding, analysis, datasetReshapeInfo } = advancedVSeed;
4166
+ const { analysis, datasetReshapeInfo } = advancedVSeed;
4167
+ const { unfoldInfo } = datasetReshapeInfo[0];
4308
4168
  const orderMapping = analysis?.orderMapping || {};
4309
- const angle = encoding[0]?.angle?.[0];
4310
- const y = encoding[0]?.y?.[0];
4311
- const group = encoding[0]?.group?.[0];
4169
+ const angle = unfoldInfo.encodingAngle;
4170
+ const y = unfoldInfo.encodingY;
4171
+ const colorId = unfoldInfo.encodingColorId;
4312
4172
  const id = datasetReshapeInfo[0].id;
4313
4173
  const fields = {};
4314
4174
  if (angle) fields[angle] = {
@@ -4325,14 +4185,14 @@ const datasetYX = (spec, context)=>{
4325
4185
  sortIndex: 0
4326
4186
  };
4327
4187
  }
4328
- if (group) {
4329
- const order = orderMapping[group];
4330
- if (order) fields[group] = {
4188
+ if (colorId) {
4189
+ const order = orderMapping[colorId];
4190
+ if (order) fields[colorId] = {
4331
4191
  sortIndex: 0,
4332
4192
  domain: order,
4333
4193
  lockStatisticsByDomain: true
4334
4194
  };
4335
- else fields[group] = {
4195
+ else fields[colorId] = {
4336
4196
  sortIndex: 0
4337
4197
  };
4338
4198
  }
@@ -4620,14 +4480,14 @@ const barParallelAdvancedPipeline = [
4620
4480
  initAdvancedVSeed_initAdvancedVSeed,
4621
4481
  autoMeasures_autoMeasures,
4622
4482
  autoDimensions_autoDimensions,
4483
+ encodingForBar,
4623
4484
  pivotAdapter([
4624
- reshapeTo2D1M
4485
+ reshapeWithEncoding
4625
4486
  ], [
4626
- pivotReshapeTo2D1M
4487
+ pivotReshapeWithEncoding
4627
4488
  ]),
4628
- encodingYX,
4629
4489
  sortYBandAxis,
4630
- sort_sortLegend,
4490
+ sortLegend_sortLegend,
4631
4491
  barParallelConfig,
4632
4492
  theme_theme,
4633
4493
  markStyle_markStyle,
@@ -4638,20 +4498,19 @@ const initBarParallel = (spec, context)=>{
4638
4498
  ...spec
4639
4499
  };
4640
4500
  const { advancedVSeed } = context;
4641
- const { encoding, datasetReshapeInfo, dimensions } = advancedVSeed;
4642
- const { unfoldInfo } = datasetReshapeInfo[0];
4643
- if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
4501
+ const { datasetReshapeInfo, dimensions } = advancedVSeed;
4502
+ const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
4644
4503
  const sameDimensionsMode = dimensions.length > 1 && dimensions.every((dim)=>dim.id === dimensions[0].id);
4645
4504
  result.type = 'bar';
4646
4505
  result.direction = 'horizontal';
4647
4506
  result.yField = sameDimensionsMode ? [
4648
- encoding[0].y[0]
4507
+ unfoldInfo.encodingY
4649
4508
  ] : [
4650
- encoding[0].y[0],
4651
- unfoldInfo.groupId
4509
+ unfoldInfo.encodingY,
4510
+ unfoldInfo.encodingDetail
4652
4511
  ];
4653
- result.xField = encoding[0].x[0];
4654
- result.seriesField = encoding[0].group[0];
4512
+ result.xField = foldInfo.measureValue;
4513
+ result.seriesField = unfoldInfo.encodingColorId;
4655
4514
  result.padding = 0;
4656
4515
  result.region = [
4657
4516
  {
@@ -4717,14 +4576,14 @@ const barPercentAdvancedPipeline = [
4717
4576
  initAdvancedVSeed_initAdvancedVSeed,
4718
4577
  autoMeasures_autoMeasures,
4719
4578
  autoDimensions_autoDimensions,
4579
+ encodingForBar,
4720
4580
  pivotAdapter([
4721
- reshapeTo2D1M
4581
+ reshapeWithEncoding
4722
4582
  ], [
4723
- pivotReshapeTo2D1M
4583
+ pivotReshapeWithEncoding
4724
4584
  ]),
4725
- encodingYX,
4726
4585
  sortYBandAxis,
4727
- sort_sortLegend,
4586
+ sortLegend_sortLegend,
4728
4587
  barPercentConfig,
4729
4588
  theme_theme,
4730
4589
  markStyle_markStyle,
@@ -4788,14 +4647,14 @@ const areaAdvancedPipeline = [
4788
4647
  initAdvancedVSeed_initAdvancedVSeed,
4789
4648
  autoMeasures_autoMeasures,
4790
4649
  autoDimensions_autoDimensions,
4650
+ encodingForColumn,
4791
4651
  pivotAdapter([
4792
- reshapeTo2D1M0Name
4652
+ reshapeWithEncoding
4793
4653
  ], [
4794
- pivotReshapeTo2D1M0Name
4654
+ pivotReshapeWithEncoding
4795
4655
  ]),
4796
- encodingXY,
4797
4656
  sortXBandAxis,
4798
- sort_sortLegend,
4657
+ sortLegend_sortLegend,
4799
4658
  areaConfig,
4800
4659
  theme_theme,
4801
4660
  markStyle_markStyle,
@@ -4806,13 +4665,13 @@ const initArea = (spec, context)=>{
4806
4665
  ...spec
4807
4666
  };
4808
4667
  const { advancedVSeed } = context;
4809
- const { encoding } = advancedVSeed;
4810
- if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
4668
+ const { datasetReshapeInfo } = advancedVSeed;
4669
+ const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
4811
4670
  result.type = 'area';
4812
4671
  result.direction = 'vertical';
4813
- result.xField = encoding[0].x[0];
4814
- result.yField = encoding[0].y[0];
4815
- result.seriesField = encoding[0].group[0];
4672
+ result.yField = foldInfo.measureValue;
4673
+ result.xField = unfoldInfo.encodingX;
4674
+ result.seriesField = unfoldInfo.encodingColorId;
4816
4675
  result.padding = 0;
4817
4676
  result.region = [
4818
4677
  {
@@ -4824,8 +4683,9 @@ const initArea = (spec, context)=>{
4824
4683
  };
4825
4684
  const areaStyle_areaStyle = (spec, context)=>{
4826
4685
  const { advancedVSeed } = context;
4827
- const { markStyle, encoding, dataset } = advancedVSeed;
4686
+ const { markStyle, datasetReshapeInfo, dataset } = advancedVSeed;
4828
4687
  const { areaStyle } = markStyle;
4688
+ const { unfoldInfo } = datasetReshapeInfo[0];
4829
4689
  if (!areaStyle) return {
4830
4690
  ...spec,
4831
4691
  area: {
@@ -4838,7 +4698,7 @@ const areaStyle_areaStyle = (spec, context)=>{
4838
4698
  const areaStyles = Array.isArray(areaStyle) ? areaStyle : [
4839
4699
  areaStyle
4840
4700
  ];
4841
- const group = encoding[0]?.group?.[0];
4701
+ const group = unfoldInfo.encodingColorId;
4842
4702
  const areaGroups = (0, external_remeda_namespaceObject.groupBy)(dataset, (d)=>d[group ?? '']);
4843
4703
  const customMap = areaStyles.reduce((result, style, index)=>{
4844
4704
  const { areaColor, areaColorOpacity, areaVisible = true } = style;
@@ -4932,14 +4792,14 @@ const areaPercentAdvancedPipeline = [
4932
4792
  initAdvancedVSeed_initAdvancedVSeed,
4933
4793
  autoMeasures_autoMeasures,
4934
4794
  autoDimensions_autoDimensions,
4795
+ encodingForColumn,
4935
4796
  pivotAdapter([
4936
- reshapeTo2D1M0Name
4797
+ reshapeWithEncoding
4937
4798
  ], [
4938
- pivotReshapeTo2D1M0Name
4799
+ pivotReshapeWithEncoding
4939
4800
  ]),
4940
- encodingXY,
4941
4801
  sortXBandAxis,
4942
- sort_sortLegend,
4802
+ sortLegend_sortLegend,
4943
4803
  areaPercentConfig,
4944
4804
  theme_theme,
4945
4805
  markStyle_markStyle,
@@ -5004,16 +4864,20 @@ const registerAreaPercent = ()=>{
5004
4864
  Builder._advancedPipelineMap.areaPercent = areaPercentAdvancedPipeline;
5005
4865
  Builder._specPipelineMap.areaPercent = areaPercentSpecPipeline;
5006
4866
  };
5007
- const autoMeasuresBy2M1Group = (advancedVSeed, context)=>{
4867
+ const autoScatterMeasures = (advancedVSeed, context)=>{
5008
4868
  const result = {
5009
4869
  ...advancedVSeed
5010
4870
  };
5011
4871
  const { vseed } = context;
5012
- const { measures, dataset } = vseed;
4872
+ const { dataset, scatterMeasures, measures } = vseed;
5013
4873
  if (!dataset) throw new Error('dataset is required');
5014
4874
  if (0 === dataset.length) return result;
5015
- if (measures) {
5016
- result.measures = auto2M1Group(measures);
4875
+ if (scatterMeasures) {
4876
+ result.measures = scatterMeasuresToMeasureTree(scatterMeasures);
4877
+ return result;
4878
+ }
4879
+ if (measures && measureDepth(measures) > 1) {
4880
+ result.measures = measures;
5017
4881
  return result;
5018
4882
  }
5019
4883
  const top100dataset = dataset.slice(0, 100);
@@ -5021,7 +4885,7 @@ const autoMeasuresBy2M1Group = (advancedVSeed, context)=>{
5021
4885
  ...prev,
5022
4886
  ...cur
5023
4887
  }), {});
5024
- const newMeasures = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
4888
+ const newMeasures = measures || Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
5025
4889
  '',
5026
4890
  null,
5027
4891
  void 0
@@ -5029,693 +4893,277 @@ const autoMeasuresBy2M1Group = (advancedVSeed, context)=>{
5029
4893
  id: measure,
5030
4894
  alias: measure
5031
4895
  }));
5032
- result.measures = auto2M1Group(newMeasures);
4896
+ if (0 === newMeasures.length) result.measures = [];
4897
+ else if (1 === newMeasures.length) result.measures = [
4898
+ {
4899
+ id: 'primary',
4900
+ alias: 'primary',
4901
+ children: newMeasures
4902
+ }
4903
+ ];
4904
+ else if (newMeasures.length > 1) result.measures = [
4905
+ {
4906
+ id: 'primary',
4907
+ alias: 'primary',
4908
+ children: newMeasures.slice(0, 1)
4909
+ },
4910
+ {
4911
+ id: 'secondary',
4912
+ alias: 'secondary',
4913
+ children: newMeasures.slice(1)
4914
+ }
4915
+ ];
5033
4916
  return result;
5034
4917
  };
5035
- const auto2M1Group = (measures)=>{
5036
- const allMeasures = findAllMeasures(measures);
5037
- if (allMeasures.length <= 2) return allMeasures;
5038
- const groups = measures.filter((measure)=>'children' in measure);
5039
- const singleMeasures = measures.filter((measure)=>!('children' in measure));
5040
- for(let i = 0; i < singleMeasures.length; i += 2){
5041
- const group = autoMeasuresBy2M1Group_createEmptyMeasureGroup();
5042
- group.children = allMeasures.slice(i, i + 2);
5043
- groups.push(group);
5044
- }
5045
- return groups;
5046
- };
5047
- const autoMeasuresBy2M1Group_createEmptyMeasureGroup = ()=>({
5048
- id: '',
5049
- alias: '',
5050
- children: []
4918
+ const scatterMeasuresToMeasureTree = (scatterMeasures)=>{
4919
+ const measureTree = scatterMeasures.map((item, index)=>{
4920
+ const { xMeasures, yMeasures } = item;
4921
+ const groupChildren = [];
4922
+ let id = '';
4923
+ if (xMeasures) {
4924
+ const arrXMeasures = Array.isArray(xMeasures) ? xMeasures : [
4925
+ xMeasures
4926
+ ];
4927
+ const alias = arrXMeasures.map((item)=>item.alias || item.id).toString();
4928
+ id += alias;
4929
+ groupChildren.push({
4930
+ id: `${index}-x`,
4931
+ alias: arrXMeasures.map((item)=>item.alias || item.id).toString(),
4932
+ children: arrXMeasures
4933
+ });
4934
+ }
4935
+ if (yMeasures) {
4936
+ const arrYMeasures = Array.isArray(yMeasures) ? yMeasures : [
4937
+ yMeasures
4938
+ ];
4939
+ const alias = arrYMeasures.map((item)=>item.alias || item.id).toString();
4940
+ id += alias;
4941
+ groupChildren.push({
4942
+ id: `${index}-y`,
4943
+ alias: arrYMeasures.map((item)=>item.alias || item.id).toString(),
4944
+ children: arrYMeasures
4945
+ });
4946
+ }
4947
+ return {
4948
+ id,
4949
+ alias: id,
4950
+ children: groupChildren
4951
+ };
5051
4952
  });
5052
- const dataReshapeFor1D_emptyReshapeResult = {
5053
- dataset: [],
5054
- foldInfo: {
5055
- foldMap: {},
5056
- measureId: '',
5057
- measureName: '',
5058
- measureValue: ''
5059
- },
5060
- unfoldInfo: {
5061
- groupName: '',
5062
- groupId: '',
5063
- colorItems: [],
5064
- colorIdMap: {}
5065
- }
4953
+ if (1 === scatterMeasures.length) return measureTree[0].children || [];
4954
+ return measureTree;
5066
4955
  };
5067
- const dataReshapeFor1D = (dataset, dimensions, measures, options)=>{
5068
- const { foldMeasureId = FoldMeasureId, foldMeasureName = FoldMeasureName, foldMeasureValue = FoldMeasureValue, unfoldDimensionGroup = UnfoldDimensionGroup, unfoldDimensionGroupId = UnfoldDimensionGroupId } = options || {};
5069
- if (0 === dimensions.length && 0 === measures.length) return dataReshapeFor1D_emptyReshapeResult;
5070
- if (0 === dimensions.length) {
5071
- const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(dataset, [], [], 0, unfoldDimensionGroup, unfoldDimensionGroupId, foldMeasureId);
4956
+ const encodingForScatter = (advancedVSeed, context)=>{
4957
+ const { vseed } = context;
4958
+ const { dimensions } = advancedVSeed;
4959
+ if (!dimensions) return advancedVSeed;
4960
+ const encoding = vseed.encoding;
4961
+ if (encoding) {
4962
+ const detail = encoding.detail || [];
4963
+ const color = encoding.color || [];
4964
+ const mergedDetail = (0, external_remeda_namespaceObject.unique)([
4965
+ ...color,
4966
+ ...detail
4967
+ ]);
5072
4968
  return {
5073
- dataset: finalDataset,
5074
- foldInfo: {
5075
- foldMap: {},
5076
- measureId: foldMeasureId,
5077
- measureName: foldMeasureName,
5078
- measureValue: foldMeasureValue
5079
- },
5080
- unfoldInfo
5081
- };
5082
- }
5083
- {
5084
- const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(dataset, [
5085
- ...dimensions
5086
- ], [
5087
- {
5088
- id: foldMeasureValue,
5089
- alias: i18n`指标值`
4969
+ ...advancedVSeed,
4970
+ encoding: {
4971
+ ...encoding,
4972
+ detail: mergedDetail
5090
4973
  }
5091
- ], 0, unfoldDimensionGroup, unfoldDimensionGroupId, foldMeasureId);
5092
- return {
5093
- dataset: finalDataset,
5094
- foldInfo: {
5095
- foldMap: {},
5096
- measureId: foldMeasureId,
5097
- measureName: foldMeasureName,
5098
- measureValue: foldMeasureValue
5099
- },
5100
- unfoldInfo
5101
4974
  };
5102
4975
  }
4976
+ const dimensionsWithoutMeasureName = dimensions.filter((item)=>item.id !== MeasureName);
4977
+ const mergedEncoding = {
4978
+ color: dimensions.slice(0).map((item)=>item.id),
4979
+ detail: dimensionsWithoutMeasureName.slice(0).map((item)=>item.id),
4980
+ tooltip: dimensionsWithoutMeasureName.map((item)=>item.id),
4981
+ label: [],
4982
+ row: [],
4983
+ column: []
4984
+ };
4985
+ return {
4986
+ ...advancedVSeed,
4987
+ encoding: mergedEncoding
4988
+ };
5103
4989
  };
5104
- const reshapeTo1D = (advancedVSeed, context)=>{
4990
+ const reshapeWithScatterEncoding = (advancedVSeed, context)=>{
5105
4991
  const result = {
5106
4992
  ...advancedVSeed
5107
4993
  };
5108
4994
  const { vseed } = context;
5109
4995
  const { dataset } = vseed;
5110
- const { dimensions, measures } = advancedVSeed;
5111
- if (!measures || !dimensions || !dataset) return result;
4996
+ const { dimensions, measures, encoding, chartType } = advancedVSeed;
4997
+ if (!measures || !dimensions || !dataset || !encoding) return result;
5112
4998
  if (0 === measures.length) throw new Error('measures can not be empty');
5113
- const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor1D(dataset, dimensions, measures);
4999
+ if (measures.length > 2) throw new Error('measures can not be more than 2');
5000
+ const foldInfoList = [];
5001
+ const unfoldInfoList = [];
5002
+ const datasets = [];
5003
+ const xMeasures = measures[0];
5004
+ const yMeasures = measures[1] || xMeasures;
5005
+ if (xMeasures && xMeasures.children) {
5006
+ const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, xMeasures.children, encoding, {
5007
+ foldMeasureValue: FoldXMeasureValue,
5008
+ colorItemAsId: true
5009
+ });
5010
+ datasets.push(newDataset);
5011
+ foldInfoList.push(foldInfo);
5012
+ unfoldInfoList.push(unfoldInfo);
5013
+ }
5014
+ if (yMeasures && yMeasures.children) {
5015
+ const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(datasets[0], dimensions, yMeasures.children, encoding, {
5016
+ foldMeasureValue: FoldYMeasureValue,
5017
+ colorItemAsId: true
5018
+ });
5019
+ datasets[0] = newDataset;
5020
+ foldInfoList.push(foldInfo);
5021
+ unfoldInfoList.push(unfoldInfo);
5022
+ }
5023
+ const unfoldInfo = {
5024
+ ...unfoldInfoList[0],
5025
+ colorItems: unfoldInfoList.flatMap((d)=>d.colorItems),
5026
+ colorIdMap: unfoldInfoList.reduce((prev, cur)=>({
5027
+ ...prev,
5028
+ ...cur.colorIdMap
5029
+ }), {})
5030
+ };
5114
5031
  return {
5115
5032
  ...result,
5116
- dataset: newDatasets,
5033
+ dataset: datasets[0],
5117
5034
  datasetReshapeInfo: [
5118
5035
  {
5119
- id: '1D2M',
5036
+ id: String(chartType),
5120
5037
  index: 0,
5121
- foldInfo,
5122
- unfoldInfo
5038
+ foldInfo: foldInfoList[0],
5039
+ foldInfoList: foldInfoList,
5040
+ unfoldInfo: unfoldInfo
5123
5041
  }
5124
5042
  ]
5125
5043
  };
5126
5044
  };
5127
- const pivotReshapeTo1D = (advancedVSeed, context)=>{
5045
+ const pivotReshapeWithScatterEncoding = (advancedVSeed, context)=>{
5128
5046
  const result = {
5129
5047
  ...advancedVSeed
5130
5048
  };
5131
5049
  const { vseed } = context;
5132
5050
  const { dataset } = vseed;
5133
- const { measures } = advancedVSeed;
5134
- const dimensions = advancedVSeed.dimensions;
5135
- if (!measures || !dimensions) return result;
5051
+ const { dimensions, measures, encoding, chartType } = advancedVSeed;
5052
+ if (!measures || !dimensions || !dataset || !encoding) return result;
5136
5053
  const measureGroups = [];
5137
- if (measures) measures.forEach((measure)=>{
5138
- if (measure.children && measure.children.length > 0) measureGroups.push(measure);
5054
+ const depth = measureDepth(measures);
5055
+ if (3 === depth) measures.forEach((measure)=>{
5056
+ measureGroups.push(measure.children);
5139
5057
  });
5140
- const newDatasets = [];
5058
+ else if (2 === depth) measureGroups.push(measures);
5059
+ const datasetList = [];
5141
5060
  const datasetReshapeInfo = [];
5142
- measureGroups.forEach((measureGroup, index)=>{
5143
- const measures = measureGroup.children;
5144
- if (!measures) return;
5145
- const commonDimensions = dimensions.filter((dim)=>'dimension' === dim.location);
5146
- const groupId = measureGroup.id;
5147
- const { dataset: newSubDataset, foldInfo, unfoldInfo } = dataReshapeFor1D(dataset, commonDimensions, measures, {
5148
- foldMeasureId: FoldMeasureId,
5149
- foldMeasureName: FoldMeasureName,
5150
- foldMeasureValue: FoldMeasureValue + groupId,
5151
- unfoldDimensionGroup: UnfoldDimensionGroup
5152
- });
5061
+ measureGroups.forEach((measures, index)=>{
5062
+ if (0 === measures.length) throw new Error('measures can not be empty');
5063
+ if (measures.length > 2) throw new Error('measures can not be more than 2');
5064
+ const foldInfoList = [];
5065
+ const unfoldInfoList = [];
5066
+ const datasets = [];
5067
+ const xMeasures = measures[0];
5068
+ const yMeasures = measures[1] || xMeasures;
5069
+ if (xMeasures && xMeasures.children) {
5070
+ const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, xMeasures.children, encoding, {
5071
+ foldMeasureValue: `${FoldXMeasureValue}${index}`,
5072
+ colorItemAsId: true
5073
+ });
5074
+ datasets.push(newDataset);
5075
+ foldInfoList.push(foldInfo);
5076
+ unfoldInfoList.push(unfoldInfo);
5077
+ }
5078
+ if (yMeasures && yMeasures.children) {
5079
+ const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, yMeasures.children, encoding, {
5080
+ foldMeasureValue: `${FoldYMeasureValue}${index}`,
5081
+ colorItemAsId: true
5082
+ });
5083
+ datasets.push(newDataset);
5084
+ foldInfoList.push(foldInfo);
5085
+ unfoldInfoList.push(unfoldInfo);
5086
+ }
5087
+ const unfoldInfo = {
5088
+ ...unfoldInfoList[0],
5089
+ colorItems: unfoldInfoList.flatMap((d)=>d.colorItems),
5090
+ colorIdMap: unfoldInfoList.reduce((prev, cur)=>({
5091
+ ...prev,
5092
+ ...cur.colorIdMap
5093
+ }), {})
5094
+ };
5153
5095
  const reshapeInfo = {
5154
- id: groupId,
5096
+ id: `${chartType}-${index}`,
5155
5097
  index,
5156
- foldInfo,
5157
- unfoldInfo
5098
+ foldInfo: foldInfoList[0],
5099
+ foldInfoList: foldInfoList,
5100
+ unfoldInfo: unfoldInfo
5158
5101
  };
5159
- newDatasets.push(newSubDataset);
5160
5102
  datasetReshapeInfo.push(reshapeInfo);
5103
+ datasetList.push(datasets[0].map((d, index)=>({
5104
+ ...d,
5105
+ ...datasets[1]?.[index] || {}
5106
+ })));
5161
5107
  });
5162
5108
  return {
5163
5109
  ...result,
5164
- dataset: newDatasets,
5110
+ dataset: datasetList,
5165
5111
  datasetReshapeInfo: datasetReshapeInfo
5166
5112
  };
5167
5113
  };
5168
- const encodingAreaRange = (advancedVSeed)=>{
5169
- const result = {
5170
- ...advancedVSeed
5171
- };
5172
- const { datasetReshapeInfo, measures } = advancedVSeed;
5173
- if (!datasetReshapeInfo || !measures) return result;
5174
- const encoding = datasetReshapeInfo.reduce((prev, cur, index)=>{
5175
- const measure = measures[index];
5176
- if ('children' in measure) {
5177
- const m1 = measure.children?.[0];
5178
- const m2 = measure.children?.[1] || m1;
5179
- const { foldInfo, unfoldInfo } = cur;
5180
- const x = [
5181
- unfoldInfo.groupId
5182
- ];
5183
- const y = [
5184
- m1?.id,
5185
- m2?.id
5186
- ];
5187
- const group = [
5188
- unfoldInfo.groupId
5189
- ];
5190
- const color = [
5191
- foldInfo.measureName
5192
- ];
5193
- return [
5194
- ...prev,
5195
- {
5196
- x,
5197
- y,
5198
- group,
5199
- color
5200
- }
5201
- ];
5202
- }
5203
- {
5204
- const m1 = measures[index];
5205
- const m2 = measures[index + 1] || m1;
5206
- const { foldInfo, unfoldInfo } = cur;
5207
- const x = [
5208
- unfoldInfo.groupId
5209
- ];
5210
- const y = [
5211
- m1.id,
5212
- m2.id
5213
- ];
5214
- const group = [
5215
- unfoldInfo.groupId
5216
- ];
5217
- const color = [
5218
- foldInfo.measureName
5219
- ];
5220
- return [
5221
- ...prev,
5222
- {
5223
- x,
5224
- y,
5225
- group,
5226
- color
5227
- }
5228
- ];
5229
- }
5230
- }, []);
5231
- return {
5232
- ...result,
5233
- encoding
5234
- };
5235
- };
5236
- const areaRangeAdvancedPipeline = [
5114
+ const scatterAdvancedPipeline = [
5237
5115
  initAdvancedVSeed_initAdvancedVSeed,
5238
- autoMeasuresBy2M1Group,
5116
+ autoScatterMeasures,
5239
5117
  autoDimensions_autoDimensions,
5118
+ encodingForScatter,
5240
5119
  pivotAdapter([
5241
- reshapeTo1D
5120
+ reshapeWithScatterEncoding
5242
5121
  ], [
5243
- pivotReshapeTo1D
5122
+ pivotReshapeWithScatterEncoding
5244
5123
  ]),
5245
- encodingAreaRange,
5246
- sortXBandAxis,
5247
- areaConfig,
5124
+ scatterConfig,
5248
5125
  theme_theme,
5249
5126
  markStyle_markStyle,
5250
5127
  annotation_annotation
5251
5128
  ];
5252
- const series = (...args)=>{
5129
+ const initScatter = (spec, context)=>{
5253
5130
  const result = {
5254
- type: 'common',
5255
- padding: 0,
5256
- region: [
5257
- {
5258
- clip: true
5259
- }
5260
- ]
5131
+ ...spec
5261
5132
  };
5262
- return (_, context)=>{
5263
- result.series = args.map((pipeline)=>execPipeline(pipeline, context, {}));
5264
- return result;
5133
+ const { advancedVSeed } = context;
5134
+ const { datasetReshapeInfo } = advancedVSeed;
5135
+ const { unfoldInfo, foldInfoList } = datasetReshapeInfo[0];
5136
+ result.type = 'scatter';
5137
+ result.direction = 'vertical';
5138
+ result.xField = foldInfoList?.[0].measureValue;
5139
+ if (foldInfoList?.[1]) result.yField = foldInfoList[1].measureValue;
5140
+ result.seriesField = unfoldInfo.encodingColorId;
5141
+ result.padding = 0;
5142
+ result.region = [
5143
+ {
5144
+ clip: true
5145
+ }
5146
+ ];
5147
+ result.animation = true;
5148
+ return result;
5149
+ };
5150
+ const datasetScatter = (spec, context)=>{
5151
+ const { advancedVSeed, vseed } = context;
5152
+ const { datasetReshapeInfo } = advancedVSeed;
5153
+ const id = datasetReshapeInfo[0].id;
5154
+ const fields = {};
5155
+ return {
5156
+ ...spec,
5157
+ data: {
5158
+ id,
5159
+ values: isPivotChart(vseed) ? void 0 : advancedVSeed.dataset.flat(),
5160
+ fields: fields
5161
+ }
5265
5162
  };
5266
5163
  };
5267
- const seriesDualAxis = (...args)=>{
5164
+ const horizontalCrosshairLine = (spec, context)=>{
5268
5165
  const result = {
5269
- type: 'common',
5270
- padding: 0,
5271
- region: [
5272
- {
5273
- clip: true
5274
- }
5275
- ]
5276
- };
5277
- const createDualContext = (context, index)=>{
5278
- const { advancedVSeed } = context;
5279
- const dataset = advancedVSeed.dataset[index];
5280
- return {
5281
- ...context,
5282
- advancedVSeed: {
5283
- ...advancedVSeed,
5284
- dataset: dataset
5285
- }
5286
- };
5287
- };
5288
- return (_, context)=>{
5289
- result.series = args.map((pipeline, index)=>{
5290
- const seriesContext = createDualContext(context, index);
5291
- return execPipeline(pipeline, seriesContext, {});
5292
- });
5293
- return result;
5294
- };
5295
- };
5296
- const initAreaRange = (spec, context)=>{
5297
- const result = {
5298
- ...spec
5299
- };
5300
- const { advancedVSeed } = context;
5301
- const { encoding } = advancedVSeed;
5302
- if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
5303
- const { color } = advancedVSeed.config.areaRange;
5304
- result.type = 'rangeArea';
5305
- result.direction = 'vertical';
5306
- result.stack = false;
5307
- result.xField = encoding[0].x[0];
5308
- result.yField = [
5309
- encoding[0].y[0],
5310
- encoding[0].y[1]
5311
- ];
5312
- result.animation = true;
5313
- result.area = {
5314
- style: {
5315
- fill: color.colorScheme?.[0]
5316
- }
5317
- };
5318
- return result;
5319
- };
5320
- const initAreaRangeLine1 = (spec, context)=>{
5321
- const result = {
5322
- ...spec
5323
- };
5324
- const { advancedVSeed } = context;
5325
- const { encoding } = advancedVSeed;
5326
- if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
5327
- const { color } = advancedVSeed.config.areaRange;
5328
- result.type = 'line';
5329
- result.direction = 'vertical';
5330
- result.stack = false;
5331
- result.xField = encoding[0].x[0];
5332
- result.yField = [
5333
- encoding[0].y[0]
5334
- ];
5335
- result.animation = true;
5336
- result.line = {
5337
- style: {
5338
- stroke: color.colorScheme?.[0]
5339
- }
5340
- };
5341
- result.point = {
5342
- style: {
5343
- visible: false,
5344
- fill: color.colorScheme?.[0]
5345
- }
5346
- };
5347
- return result;
5348
- };
5349
- const initAreaRangeLine2 = (spec, context)=>{
5350
- const result = {
5351
- ...spec
5352
- };
5353
- const { advancedVSeed } = context;
5354
- const { encoding } = advancedVSeed;
5355
- if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
5356
- const { color } = advancedVSeed.config.areaRange;
5357
- result.type = 'line';
5358
- result.direction = 'vertical';
5359
- result.stack = false;
5360
- result.xField = encoding[0].x[0];
5361
- result.yField = [
5362
- encoding[0].y[1]
5363
- ];
5364
- result.animation = true;
5365
- result.line = {
5366
- style: {
5367
- stroke: color.colorScheme?.[0]
5368
- }
5369
- };
5370
- result.point = {
5371
- style: {
5372
- visible: false,
5373
- fill: color.colorScheme?.[0]
5374
- }
5375
- };
5376
- return result;
5377
- };
5378
- const tooltipDisable = (spec)=>{
5379
- const result = {
5380
- ...spec
5381
- };
5382
- result.tooltip = {
5383
- visible: false
5384
- };
5385
- return result;
5386
- };
5387
- const tooltipAreaRange = (spec, context)=>{
5388
- const result = {
5389
- ...spec
5390
- };
5391
- const { advancedVSeed } = context;
5392
- const { measures, datasetReshapeInfo, chartType, locale, encoding } = advancedVSeed;
5393
- const baseConfig = advancedVSeed.config[chartType];
5394
- const { tooltip = {
5395
- enable: true
5396
- } } = baseConfig;
5397
- const { enable } = tooltip;
5398
- const { groupName } = datasetReshapeInfo[0].unfoldInfo;
5399
- const y = encoding[0]?.y || [];
5400
- result.tooltip = {
5401
- visible: enable,
5402
- dimension: {
5403
- content: [
5404
- {
5405
- visible: true,
5406
- key: (datum)=>datum && datum[groupName] || '',
5407
- value: (datum)=>{
5408
- if (!datum) return '';
5409
- const text = y.map((id)=>{
5410
- const value = datum[id];
5411
- const measure = findMeasureById(measures, id);
5412
- if (!measure) return String(value);
5413
- const { format = {}, autoFormat = true } = measure;
5414
- if (!(0, external_remeda_namespaceObject.isEmpty)(format)) {
5415
- const formatter = createFormatter(format);
5416
- return formatter(value);
5417
- }
5418
- if (autoFormat) return autoFormatter(value, locale);
5419
- return String(value);
5420
- });
5421
- return text.join(' ~ ');
5422
- },
5423
- shapeType: 'rectRound'
5424
- },
5425
- ...y.map((id)=>{
5426
- const measure = findMeasureById(measures, id);
5427
- return {
5428
- visible: true,
5429
- key: measure?.alias || id,
5430
- value: (datum)=>{
5431
- if (!datum) return '';
5432
- const value = datum[id];
5433
- const measure = findMeasureById(measures, id);
5434
- if (!measure) return String(value);
5435
- const { format = {}, autoFormat = true } = measure;
5436
- if (!(0, external_remeda_namespaceObject.isEmpty)(format)) {
5437
- const formatter = createFormatter(format);
5438
- return formatter(value);
5439
- }
5440
- if (autoFormat) return autoFormatter(value, locale);
5441
- return String(value);
5442
- },
5443
- shapeType: 'rectRound'
5444
- };
5445
- })
5446
- ]
5447
- }
5448
- };
5449
- return result;
5450
- };
5451
- const areaRange = [
5452
- series([
5453
- initAreaRange,
5454
- areaStyle_areaStyle
5455
- ], [
5456
- initAreaRangeLine1,
5457
- lineStyle_lineStyle,
5458
- pointStyle_pointStyle,
5459
- pointStateDimensionHover,
5460
- tooltipDisable
5461
- ], [
5462
- initAreaRangeLine2,
5463
- lineStyle_lineStyle,
5464
- pointStyle_pointStyle,
5465
- pointStateDimensionHover,
5466
- tooltipDisable
5467
- ]),
5468
- datasetXY,
5469
- progressive,
5470
- background_backgroundColor,
5471
- xBand,
5472
- yLinear,
5473
- label_label,
5474
- tooltipAreaRange,
5475
- verticalCrosshairLine,
5476
- annotationPoint_annotationPoint,
5477
- annotationVerticalLine_annotationVerticalLine,
5478
- annotationHorizontalLine_annotationHorizontalLine,
5479
- annotationArea_annotationArea
5480
- ];
5481
- const pivotAreaRange = [
5482
- initPivot,
5483
- pivotGridStyle,
5484
- pivotIndicators_pivotIndicatorsAsRow,
5485
- datasetPivot,
5486
- pivotIndicators_pivotIndicators([
5487
- series([
5488
- initAreaRange,
5489
- areaStyle_areaStyle
5490
- ], [
5491
- initAreaRangeLine1,
5492
- lineStyle_lineStyle,
5493
- pointStyle_pointStyle,
5494
- pointStateDimensionHover,
5495
- tooltipDisable
5496
- ], [
5497
- initAreaRangeLine2,
5498
- lineStyle_lineStyle,
5499
- pointStyle_pointStyle,
5500
- pointStateDimensionHover,
5501
- tooltipDisable
5502
- ]),
5503
- background_backgroundColor,
5504
- datasetXY,
5505
- progressive,
5506
- xBand,
5507
- yLinear,
5508
- label_label,
5509
- tooltipAreaRange,
5510
- verticalCrosshairLine,
5511
- annotationPoint_annotationPoint,
5512
- annotationVerticalLine_annotationVerticalLine,
5513
- annotationHorizontalLine_annotationHorizontalLine,
5514
- annotationArea_annotationArea
5515
- ]),
5516
- pivotRowDimensions,
5517
- pivotColumnDimensions
5518
- ];
5519
- const areaRangeSpecPipeline = [
5520
- pivotAdapter_pivotAdapter(areaRange, pivotAreaRange)
5521
- ];
5522
- const registerAreaRange = ()=>{
5523
- Builder._advancedPipelineMap.areaRange = areaRangeAdvancedPipeline;
5524
- Builder._specPipelineMap.areaRange = areaRangeSpecPipeline;
5525
- };
5526
- const dataReshapeFor1D2M_emptyReshapeResult = {
5527
- dataset: [],
5528
- foldInfo: {
5529
- foldMap: {},
5530
- measureId: '',
5531
- measureName: '',
5532
- measureValue: ''
5533
- },
5534
- unfoldInfo: {
5535
- groupName: '',
5536
- groupId: '',
5537
- colorItems: [],
5538
- colorIdMap: {}
5539
- }
5540
- };
5541
- const dataReshapeFor1D2M = (dataset, dimensions, measures, options)=>{
5542
- const { foldMeasureId = FoldMeasureId, foldMeasureName = FoldMeasureName, foldMeasureValue = FoldMeasureValue, unfoldDimensionGroup = UnfoldDimensionGroup, unfoldDimensionGroupId = UnfoldDimensionGroupId } = options || {};
5543
- if (0 === dimensions.length && 0 === measures.length) return dataReshapeFor1D2M_emptyReshapeResult;
5544
- const { dataset: foldedDataset, foldInfo } = foldMeasures(dataset, measures.length > 1 ? measures.slice(1) : measures, foldMeasureId, foldMeasureName, foldMeasureValue);
5545
- if (0 === dimensions.length) {
5546
- const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, [
5547
- {
5548
- id: foldMeasureValue,
5549
- alias: i18n`指标值`,
5550
- location: 'dimension'
5551
- }
5552
- ], [
5553
- {
5554
- id: foldMeasureValue,
5555
- alias: i18n`指标值`
5556
- }
5557
- ], 0, unfoldDimensionGroup, unfoldDimensionGroupId, foldMeasureId);
5558
- return {
5559
- dataset: finalDataset,
5560
- foldInfo,
5561
- unfoldInfo
5562
- };
5563
- }
5564
- {
5565
- const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, [
5566
- ...dimensions
5567
- ], [
5568
- {
5569
- id: foldMeasureValue,
5570
- alias: i18n`指标值`
5571
- }
5572
- ], 0, unfoldDimensionGroup, unfoldDimensionGroupId, foldMeasureId);
5573
- return {
5574
- dataset: finalDataset,
5575
- foldInfo,
5576
- unfoldInfo
5577
- };
5578
- }
5579
- };
5580
- const reshapeTo1D2M = (advancedVSeed, context)=>{
5581
- const result = {
5582
- ...advancedVSeed
5583
- };
5584
- const { vseed } = context;
5585
- const { dataset } = vseed;
5586
- const { dimensions, measures } = advancedVSeed;
5587
- if (!measures || !dimensions || !dataset) return result;
5588
- if (0 === measures.length) throw new Error('measures can not be empty');
5589
- const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor1D2M(dataset, dimensions, measures);
5590
- return {
5591
- ...result,
5592
- dataset: newDatasets,
5593
- datasetReshapeInfo: [
5594
- {
5595
- id: '1D2M',
5596
- index: 0,
5597
- foldInfo,
5598
- unfoldInfo
5599
- }
5600
- ]
5601
- };
5602
- };
5603
- const pivotReshapeTo1D2M = (advancedVSeed, context)=>{
5604
- const result = {
5605
- ...advancedVSeed
5606
- };
5607
- const { vseed } = context;
5608
- const { dataset } = vseed;
5609
- const { measures } = advancedVSeed;
5610
- const dimensions = advancedVSeed.dimensions;
5611
- if (!measures || !dimensions) return result;
5612
- const measureGroups = [];
5613
- if (measures) measures.forEach((measure)=>{
5614
- if (measure.children && measure.children.length > 0) measureGroups.push(measure);
5615
- });
5616
- const newDatasets = [];
5617
- const datasetReshapeInfo = [];
5618
- measureGroups.forEach((measureGroup, index)=>{
5619
- const measures = measureGroup.children;
5620
- if (!measures) return;
5621
- const commonDimensions = dimensions.filter((dim)=>'dimension' === dim.location);
5622
- const groupId = measureGroup.id;
5623
- const { dataset: newSubDataset, foldInfo, unfoldInfo } = dataReshapeFor1D2M(dataset, commonDimensions, measures, {
5624
- foldMeasureId: FoldMeasureId,
5625
- foldMeasureName: FoldMeasureName,
5626
- foldMeasureValue: FoldMeasureValue + groupId,
5627
- unfoldDimensionGroup: UnfoldDimensionGroup
5628
- });
5629
- const reshapeInfo = {
5630
- id: groupId,
5631
- index,
5632
- foldInfo,
5633
- unfoldInfo
5634
- };
5635
- newDatasets.push(newSubDataset);
5636
- datasetReshapeInfo.push(reshapeInfo);
5637
- });
5638
- return {
5639
- ...result,
5640
- dataset: newDatasets,
5641
- datasetReshapeInfo: datasetReshapeInfo
5642
- };
5643
- };
5644
- const encodingYY = (advancedVSeed)=>{
5645
- const result = {
5646
- ...advancedVSeed
5647
- };
5648
- const { datasetReshapeInfo, measures } = advancedVSeed;
5649
- if (!datasetReshapeInfo || !measures) return result;
5650
- const firstMeasure = findFirstMeasure(measures);
5651
- const encoding = datasetReshapeInfo.reduce((prev, cur)=>{
5652
- const { foldInfo, unfoldInfo } = cur;
5653
- const x = [
5654
- firstMeasure?.id
5655
- ];
5656
- const y = [
5657
- foldInfo.measureValue
5658
- ];
5659
- const group = [
5660
- unfoldInfo.groupId
5661
- ];
5662
- const color = [
5663
- unfoldInfo.groupId
5664
- ];
5665
- return [
5666
- ...prev,
5667
- {
5668
- x,
5669
- y,
5670
- group,
5671
- color
5672
- }
5673
- ];
5674
- }, []);
5675
- return {
5676
- ...result,
5677
- encoding
5678
- };
5679
- };
5680
- const scatterAdvancedPipeline = [
5681
- initAdvancedVSeed_initAdvancedVSeed,
5682
- autoMeasures_autoMeasures,
5683
- autoDimensions_autoDimensions,
5684
- pivotAdapter([
5685
- reshapeTo1D2M
5686
- ], [
5687
- pivotReshapeTo1D2M
5688
- ]),
5689
- encodingYY,
5690
- scatterConfig,
5691
- theme_theme,
5692
- markStyle_markStyle,
5693
- annotation_annotation
5694
- ];
5695
- const initScatter = (spec, context)=>{
5696
- const result = {
5697
- ...spec
5698
- };
5699
- const { advancedVSeed } = context;
5700
- const { encoding } = advancedVSeed;
5701
- if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
5702
- result.type = 'scatter';
5703
- result.direction = 'vertical';
5704
- result.xField = encoding[0].x[0];
5705
- result.yField = encoding[0].y[0];
5706
- result.seriesField = encoding[0].group[0];
5707
- result.padding = 0;
5708
- result.region = [
5709
- {
5710
- clip: true
5711
- }
5712
- ];
5713
- result.animation = true;
5714
- return result;
5715
- };
5716
- const horizontalCrosshairLine = (spec, context)=>{
5717
- const result = {
5718
- ...spec
5166
+ ...spec
5719
5167
  };
5720
5168
  const { advancedVSeed, vseed } = context;
5721
5169
  const { chartType } = vseed;
@@ -5761,7 +5209,7 @@ const scatter = [
5761
5209
  initScatter,
5762
5210
  color_color,
5763
5211
  background_backgroundColor,
5764
- datasetXY,
5212
+ datasetScatter,
5765
5213
  progressive,
5766
5214
  xLinear,
5767
5215
  yLinear,
@@ -5786,7 +5234,7 @@ const pivotScatter = [
5786
5234
  initScatter,
5787
5235
  color_color,
5788
5236
  background_backgroundColor,
5789
- datasetXY,
5237
+ datasetScatter,
5790
5238
  progressive,
5791
5239
  xLinear,
5792
5240
  yLinear,
@@ -5812,41 +5260,163 @@ const registerScatter = ()=>{
5812
5260
  Builder._advancedPipelineMap.scatter = scatterAdvancedPipeline;
5813
5261
  Builder._specPipelineMap.scatter = scatterSpecPipeline;
5814
5262
  };
5815
- const reshapeTo2D2M = (advancedVSeed, context)=>{
5263
+ const autoDualMeasures = (advancedVSeed, context)=>{
5264
+ const result = {
5265
+ ...advancedVSeed
5266
+ };
5267
+ const { vseed } = context;
5268
+ const { dataset, dualMeasures, measures } = vseed;
5269
+ if (!dataset) throw new Error('dataset is required');
5270
+ if (0 === dataset.length) return result;
5271
+ if (dualMeasures) {
5272
+ result.measures = dualMeasuresToMeasureTree(dualMeasures);
5273
+ return result;
5274
+ }
5275
+ if (measures && measureDepth(measures) > 1) {
5276
+ result.measures = measures;
5277
+ return result;
5278
+ }
5279
+ const top100dataset = dataset.slice(0, 100);
5280
+ const sample = top100dataset.reduce((prev, cur)=>({
5281
+ ...prev,
5282
+ ...cur
5283
+ }), {});
5284
+ const newMeasures = measures || Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
5285
+ '',
5286
+ null,
5287
+ void 0
5288
+ ].includes(key)).map((measure)=>({
5289
+ id: measure,
5290
+ alias: measure
5291
+ }));
5292
+ if (0 === newMeasures.length) result.measures = [];
5293
+ else if (1 === newMeasures.length) result.measures = [
5294
+ {
5295
+ id: 'primary',
5296
+ alias: 'primary',
5297
+ children: newMeasures
5298
+ }
5299
+ ];
5300
+ else if (newMeasures.length > 1) result.measures = [
5301
+ {
5302
+ id: 'primary',
5303
+ alias: 'primary',
5304
+ children: newMeasures.slice(0, 1)
5305
+ },
5306
+ {
5307
+ id: 'secondary',
5308
+ alias: 'secondary',
5309
+ children: newMeasures.slice(1)
5310
+ }
5311
+ ];
5312
+ return result;
5313
+ };
5314
+ const dualMeasuresToMeasureTree = (dualMeasures)=>{
5315
+ const measureTree = dualMeasures.map((item, index)=>{
5316
+ const { primaryMeasures, secondaryMeasures } = item;
5317
+ const groupChildren = [];
5318
+ let id = '';
5319
+ if (primaryMeasures) {
5320
+ const arrPrimaryMeasures = Array.isArray(primaryMeasures) ? primaryMeasures : [
5321
+ primaryMeasures
5322
+ ];
5323
+ const alias = arrPrimaryMeasures.map((item)=>item.alias || item.id).toString();
5324
+ id += alias;
5325
+ groupChildren.push({
5326
+ id: `${index}-primary`,
5327
+ alias: arrPrimaryMeasures.map((item)=>item.alias || item.id).toString(),
5328
+ children: arrPrimaryMeasures
5329
+ });
5330
+ }
5331
+ if (secondaryMeasures) {
5332
+ const arrSecondaryMeasures = Array.isArray(secondaryMeasures) ? secondaryMeasures : [
5333
+ secondaryMeasures
5334
+ ];
5335
+ const alias = arrSecondaryMeasures.map((item)=>item.alias || item.id).toString();
5336
+ id += alias;
5337
+ groupChildren.push({
5338
+ id: `${index}-secondary`,
5339
+ alias: arrSecondaryMeasures.map((item)=>item.alias || item.id).toString(),
5340
+ children: arrSecondaryMeasures
5341
+ });
5342
+ }
5343
+ return {
5344
+ id,
5345
+ alias: id,
5346
+ children: groupChildren
5347
+ };
5348
+ });
5349
+ if (1 === dualMeasures.length) return measureTree[0].children || [];
5350
+ return measureTree;
5351
+ };
5352
+ const encodingForDualAxis = (advancedVSeed, context)=>{
5353
+ const { vseed } = context;
5354
+ const { dimensions } = advancedVSeed;
5355
+ if (!dimensions) return advancedVSeed;
5356
+ const encoding = vseed.encoding;
5357
+ if (encoding) {
5358
+ const x = encoding.x || [];
5359
+ const detail = encoding.detail || [];
5360
+ const color = encoding.color || [];
5361
+ const mergedDetail = [
5362
+ ...color.filter((d)=>!x.includes(d)),
5363
+ ...detail
5364
+ ];
5365
+ return {
5366
+ ...advancedVSeed,
5367
+ encoding: {
5368
+ ...encoding,
5369
+ detail: mergedDetail
5370
+ }
5371
+ };
5372
+ }
5373
+ const mergedEncoding = {
5374
+ x: dimensions.slice(0, 1).map((item)=>item.id),
5375
+ color: dimensions.slice(1).map((item)=>item.id),
5376
+ detail: dimensions.slice(1).map((item)=>item.id),
5377
+ tooltip: dimensions.map((item)=>item.id),
5378
+ label: [],
5379
+ row: [],
5380
+ column: []
5381
+ };
5382
+ return {
5383
+ ...advancedVSeed,
5384
+ encoding: mergedEncoding
5385
+ };
5386
+ };
5387
+ const reshapeWithDualEncoding = (advancedVSeed, context)=>{
5816
5388
  const result = {
5817
5389
  ...advancedVSeed
5818
5390
  };
5819
5391
  const { vseed } = context;
5820
5392
  const { dataset } = vseed;
5821
- const { dimensions, measures } = advancedVSeed;
5822
- if (!measures || !dimensions || !dataset) return result;
5393
+ const { dimensions, measures, encoding, chartType } = advancedVSeed;
5394
+ if (!measures || !dimensions || !dataset || !encoding) return result;
5823
5395
  if (0 === measures.length) throw new Error('measures can not be empty');
5824
5396
  if (measures.length > 2) throw new Error('measures can not be more than 2');
5825
- const commonDimensions = dimensions.filter((dim)=>'dimension' === dim.location);
5826
- const datasets = [];
5827
5397
  const foldInfoList = [];
5828
5398
  const unfoldInfoList = [];
5399
+ const datasets = [];
5829
5400
  const primaryMeasures = measures[0];
5830
5401
  const secondaryMeasures = measures[1] || [];
5831
5402
  if (primaryMeasures && primaryMeasures.children) {
5832
- const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor2D1M(dataset, commonDimensions, primaryMeasures.children, {
5403
+ const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, primaryMeasures.children, encoding, {
5833
5404
  foldMeasureValue: FoldPrimaryMeasureValue
5834
5405
  });
5835
- datasets.push(newDatasets);
5406
+ datasets.push(newDataset);
5836
5407
  foldInfoList.push(foldInfo);
5837
5408
  unfoldInfoList.push(unfoldInfo);
5838
5409
  }
5839
5410
  if (secondaryMeasures && secondaryMeasures.children) {
5840
- const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor2D1M(dataset, commonDimensions, secondaryMeasures.children, {
5411
+ const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, secondaryMeasures.children, encoding, {
5841
5412
  foldMeasureValue: FoldSecondaryMeasureValue
5842
5413
  });
5843
- datasets.push(newDatasets);
5414
+ datasets.push(newDataset);
5844
5415
  foldInfoList.push(foldInfo);
5845
5416
  unfoldInfoList.push(unfoldInfo);
5846
5417
  }
5847
5418
  const unfoldInfo = {
5848
- groupName: unfoldInfoList[0].groupName,
5849
- groupId: unfoldInfoList[0].groupId,
5419
+ ...unfoldInfoList[0],
5850
5420
  colorItems: unfoldInfoList.flatMap((d)=>d.colorItems),
5851
5421
  colorIdMap: unfoldInfoList.reduce((prev, cur)=>({
5852
5422
  ...prev,
@@ -5858,7 +5428,7 @@ const reshapeTo2D2M = (advancedVSeed, context)=>{
5858
5428
  dataset: datasets,
5859
5429
  datasetReshapeInfo: [
5860
5430
  {
5861
- id: '2D2M',
5431
+ id: String(chartType),
5862
5432
  index: 0,
5863
5433
  foldInfo: foldInfoList[0],
5864
5434
  foldInfoList: foldInfoList,
@@ -5867,46 +5437,48 @@ const reshapeTo2D2M = (advancedVSeed, context)=>{
5867
5437
  ]
5868
5438
  };
5869
5439
  };
5870
- const pivotReshapeTo2D2M = (advancedVSeed, context)=>{
5440
+ const pivotReshapeWithDualEncoding = (advancedVSeed, context)=>{
5871
5441
  const result = {
5872
5442
  ...advancedVSeed
5873
5443
  };
5874
5444
  const { vseed } = context;
5875
5445
  const { dataset } = vseed;
5876
- const { dimensions, measures } = advancedVSeed;
5877
- if (!measures || !dimensions || !dataset) return result;
5878
- const commonDimensions = dimensions.filter((dim)=>'dimension' === dim.location);
5446
+ const { dimensions, measures, encoding, chartType } = advancedVSeed;
5447
+ if (!measures || !dimensions || !dataset || !encoding) return result;
5879
5448
  const datasetList = [];
5880
5449
  const datasetReshapeInfo = [];
5881
- measures.forEach((measureGroup, index)=>{
5882
- const measures = measureGroup.children || [];
5450
+ const measureGroups = [];
5451
+ const depth = measureDepth(measures);
5452
+ if (3 === depth) measures.forEach((measure)=>{
5453
+ measureGroups.push(measure.children);
5454
+ });
5455
+ else if (2 === depth) measureGroups.push(measures);
5456
+ measureGroups.forEach((measures, index)=>{
5883
5457
  if (0 === measures.length) throw new Error('measures can not be empty');
5884
5458
  if (measures.length > 2) throw new Error('measures can not be more than 2');
5885
- const datasets = [];
5886
5459
  const foldInfoList = [];
5887
5460
  const unfoldInfoList = [];
5461
+ const datasets = [];
5888
5462
  const primaryMeasures = measures[0];
5889
- const secondaryMeasures = measures[1] || measures[0];
5463
+ const secondaryMeasures = measures[1] || [];
5890
5464
  if (primaryMeasures && primaryMeasures.children) {
5891
- const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor2D1M(dataset, commonDimensions, primaryMeasures.children, {
5465
+ const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, primaryMeasures.children, encoding, {
5892
5466
  foldMeasureValue: `${FoldPrimaryMeasureValue}${index}`
5893
5467
  });
5894
- datasets.push(newDatasets);
5468
+ datasets.push(newDataset);
5895
5469
  foldInfoList.push(foldInfo);
5896
5470
  unfoldInfoList.push(unfoldInfo);
5897
5471
  }
5898
5472
  if (secondaryMeasures && secondaryMeasures.children) {
5899
- const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor2D1M(dataset, commonDimensions, secondaryMeasures.children, {
5473
+ const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, secondaryMeasures.children, encoding, {
5900
5474
  foldMeasureValue: `${FoldSecondaryMeasureValue}${index}`
5901
5475
  });
5902
- datasets.push(newDatasets);
5476
+ datasets.push(newDataset);
5903
5477
  foldInfoList.push(foldInfo);
5904
5478
  unfoldInfoList.push(unfoldInfo);
5905
5479
  }
5906
- datasetList.push(datasets.flat(2));
5907
5480
  const unfoldInfo = {
5908
- groupName: unfoldInfoList[0].groupName,
5909
- groupId: unfoldInfoList[0].groupId,
5481
+ ...unfoldInfoList[0],
5910
5482
  colorItems: unfoldInfoList.flatMap((d)=>d.colorItems),
5911
5483
  colorIdMap: unfoldInfoList.reduce((prev, cur)=>({
5912
5484
  ...prev,
@@ -5914,53 +5486,19 @@ const pivotReshapeTo2D2M = (advancedVSeed, context)=>{
5914
5486
  }), {})
5915
5487
  };
5916
5488
  const reshapeInfo = {
5917
- id: `2D2M-${index}`,
5489
+ id: `${chartType}-${index}`,
5918
5490
  index,
5919
5491
  foldInfo: foldInfoList[0],
5920
- unfoldInfo: unfoldInfo,
5921
- foldInfoList: foldInfoList
5492
+ foldInfoList: foldInfoList,
5493
+ unfoldInfo: unfoldInfo
5922
5494
  };
5923
5495
  datasetReshapeInfo.push(reshapeInfo);
5496
+ datasetList.push(datasets.flat(2));
5924
5497
  });
5925
5498
  return {
5926
5499
  ...result,
5927
5500
  dataset: datasetList,
5928
- datasetReshapeInfo
5929
- };
5930
- };
5931
- const encodingXYY = (advancedVSeed)=>{
5932
- const result = {
5933
- ...advancedVSeed
5934
- };
5935
- const { datasetReshapeInfo, dimensions } = advancedVSeed;
5936
- if (!datasetReshapeInfo || !dimensions) return result;
5937
- const xDimension = dimensions.find((item)=>'rowDimension' !== item.location && 'columnDimension' !== item.location) || dimensions[0];
5938
- const isZeroDimension = 0 === dimensions.length;
5939
- const encoding = datasetReshapeInfo.reduce((prev, cur)=>{
5940
- const { foldInfoList, unfoldInfo } = cur;
5941
- const x = [
5942
- isZeroDimension ? foldInfoList[0].measureName : xDimension?.id
5943
- ];
5944
- const y = foldInfoList.map((d)=>d.measureValue);
5945
- const group = [
5946
- unfoldInfo.groupId
5947
- ];
5948
- const color = [
5949
- foldInfoList[0].measureName
5950
- ];
5951
- return [
5952
- ...prev,
5953
- {
5954
- x,
5955
- y,
5956
- group,
5957
- color
5958
- }
5959
- ];
5960
- }, []);
5961
- return {
5962
- ...result,
5963
- encoding
5501
+ datasetReshapeInfo: datasetReshapeInfo
5964
5502
  };
5965
5503
  };
5966
5504
  const dualAxisConfig = (advancedVSeed, context)=>{
@@ -5989,125 +5527,80 @@ const dualAxisConfig = (advancedVSeed, context)=>{
5989
5527
  };
5990
5528
  return result;
5991
5529
  };
5992
- const autoDualMeasures = (advancedVSeed, context)=>{
5993
- const result = {
5994
- ...advancedVSeed
5995
- };
5996
- const { vseed } = context;
5997
- const { dataset, dualMeasures, measures } = vseed;
5998
- if (!dataset) throw new Error('dataset is required');
5999
- if (0 === dataset.length) return result;
6000
- if (dualMeasures) {
6001
- result.measures = dualMeasuresToMeasureTree(dualMeasures);
6002
- return result;
6003
- }
6004
- if (measures && measureDepth(measures) > 1) {
6005
- result.measures = measures;
6006
- return result;
6007
- }
6008
- const top100dataset = dataset.slice(0, 100);
6009
- const sample = top100dataset.reduce((prev, cur)=>({
6010
- ...prev,
6011
- ...cur
6012
- }), {});
6013
- const newMeasures = measures || Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
6014
- '',
6015
- null,
6016
- void 0
6017
- ].includes(key)).map((measure)=>({
6018
- id: measure,
6019
- alias: measure
6020
- }));
6021
- if (0 === newMeasures.length) result.measures = [];
6022
- else if (1 === newMeasures.length) result.measures = [
6023
- {
6024
- id: 'primary',
6025
- alias: 'primary',
6026
- children: newMeasures
6027
- }
6028
- ];
6029
- else if (newMeasures.length > 1) result.measures = [
6030
- {
6031
- id: 'primary',
6032
- alias: 'primary',
6033
- children: newMeasures.slice(0, 1)
6034
- },
6035
- {
6036
- id: 'secondary',
6037
- alias: 'secondary',
6038
- children: newMeasures.slice(1)
6039
- }
6040
- ];
6041
- return result;
6042
- };
6043
- const dualMeasuresToMeasureTree = (dualMeasures)=>{
6044
- const measureTree = dualMeasures.map((item, index)=>{
6045
- const { primaryMeasures, secondaryMeasures } = item;
6046
- const groupChildren = [];
6047
- let id = '';
6048
- if (primaryMeasures) {
6049
- const arrPrimaryMeasures = Array.isArray(primaryMeasures) ? primaryMeasures : [
6050
- primaryMeasures
6051
- ];
6052
- const alias = arrPrimaryMeasures.map((item)=>item.alias || item.id).toString();
6053
- id += alias;
6054
- groupChildren.push({
6055
- id: `${index}-primary`,
6056
- alias: arrPrimaryMeasures.map((item)=>item.alias || item.id).toString(),
6057
- children: arrPrimaryMeasures
6058
- });
6059
- }
6060
- if (secondaryMeasures) {
6061
- const arrSecondaryMeasures = Array.isArray(secondaryMeasures) ? secondaryMeasures : [
6062
- secondaryMeasures
6063
- ];
6064
- const alias = arrSecondaryMeasures.map((item)=>item.alias || item.id).toString();
6065
- id += alias;
6066
- groupChildren.push({
6067
- id: `${index}-secondary`,
6068
- alias: arrSecondaryMeasures.map((item)=>item.alias || item.id).toString(),
6069
- children: arrSecondaryMeasures
6070
- });
6071
- }
6072
- return {
6073
- id,
6074
- alias: id,
6075
- children: groupChildren
6076
- };
6077
- });
6078
- if (1 === dualMeasures.length) return measureTree[0].children || [];
6079
- return measureTree;
6080
- };
6081
5530
  const dualAxisAdvancedPipeline = [
6082
5531
  initAdvancedVSeed_initAdvancedVSeed,
6083
5532
  autoDualMeasures,
6084
5533
  autoDimensions_autoDimensions,
5534
+ encodingForDualAxis,
6085
5535
  pivotAdapter([
6086
- reshapeTo2D2M
5536
+ reshapeWithDualEncoding
6087
5537
  ], [
6088
- pivotReshapeTo2D2M
5538
+ pivotReshapeWithDualEncoding
6089
5539
  ]),
6090
- encodingXYY,
6091
5540
  sortXBandAxis,
6092
- sort_sortLegend,
5541
+ sortLegend_sortLegend,
6093
5542
  dualAxisConfig,
6094
5543
  theme_theme,
6095
5544
  markStyle_markStyle,
6096
5545
  annotation_annotation
6097
5546
  ];
5547
+ const series = (...args)=>{
5548
+ const result = {
5549
+ type: 'common',
5550
+ padding: 0,
5551
+ region: [
5552
+ {
5553
+ clip: true
5554
+ }
5555
+ ]
5556
+ };
5557
+ return (_, context)=>{
5558
+ result.series = args.map((pipeline)=>execPipeline(pipeline, context, {}));
5559
+ return result;
5560
+ };
5561
+ };
5562
+ const seriesDualAxis = (...args)=>{
5563
+ const result = {
5564
+ type: 'common',
5565
+ padding: 0,
5566
+ region: [
5567
+ {
5568
+ clip: true
5569
+ }
5570
+ ]
5571
+ };
5572
+ const createDualContext = (context, index)=>{
5573
+ const { advancedVSeed } = context;
5574
+ const dataset = advancedVSeed.dataset[index];
5575
+ return {
5576
+ ...context,
5577
+ advancedVSeed: {
5578
+ ...advancedVSeed,
5579
+ dataset: dataset
5580
+ }
5581
+ };
5582
+ };
5583
+ return (_, context)=>{
5584
+ result.series = args.map((pipeline, index)=>{
5585
+ const seriesContext = createDualContext(context, index);
5586
+ return execPipeline(pipeline, seriesContext, {});
5587
+ });
5588
+ return result;
5589
+ };
5590
+ };
6098
5591
  const initDualAxisPrimary = (spec, context)=>{
6099
5592
  const result = {
6100
5593
  ...spec
6101
5594
  };
6102
5595
  const { advancedVSeed } = context;
6103
- const { encoding, datasetReshapeInfo } = advancedVSeed;
6104
- if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
6105
- result.id = `${datasetReshapeInfo[0].id}-primary-series`;
5596
+ const { datasetReshapeInfo } = advancedVSeed;
5597
+ const { unfoldInfo, foldInfoList, id } = datasetReshapeInfo[0];
5598
+ result.id = `${id}-primary-series`;
6106
5599
  result.type = 'bar';
6107
5600
  result.direction = 'vertical';
6108
- result.xField = encoding[0].x[0];
6109
- result.yField = encoding[0].y[0];
6110
- result.seriesField = encoding[0].group[0];
5601
+ result.xField = unfoldInfo.encodingX;
5602
+ result.seriesField = unfoldInfo.encodingColorId;
5603
+ result.yField = foldInfoList?.[0].measureValue;
6111
5604
  result.animation = true;
6112
5605
  return result;
6113
5606
  };
@@ -6116,14 +5609,14 @@ const initDualAxisSecondary = (spec, context)=>{
6116
5609
  ...spec
6117
5610
  };
6118
5611
  const { advancedVSeed } = context;
6119
- const { encoding, datasetReshapeInfo } = advancedVSeed;
6120
- if (!encoding[0].y || !encoding[0].x || !encoding[0].group) return result;
6121
- result.id = `${datasetReshapeInfo[0].id}-secondary-series`;
5612
+ const { datasetReshapeInfo } = advancedVSeed;
5613
+ const { unfoldInfo, foldInfoList, id } = datasetReshapeInfo[0];
5614
+ result.id = `${id}-secondary-series`;
6122
5615
  result.type = 'line';
6123
5616
  result.direction = 'vertical';
6124
- result.xField = encoding[0].x[0];
6125
- result.yField = encoding[0].y[1];
6126
- result.seriesField = encoding[0].group[0];
5617
+ result.xField = unfoldInfo.encodingX;
5618
+ if (foldInfoList?.[1]) result.yField = foldInfoList[1].measureValue;
5619
+ result.seriesField = unfoldInfo.encodingColorId;
6127
5620
  result.animation = true;
6128
5621
  return result;
6129
5622
  };
@@ -6155,10 +5648,10 @@ const dualChartTypePrimary = (spec, context)=>{
6155
5648
  case 'columnParallel':
6156
5649
  {
6157
5650
  const columnSpec = result;
6158
- if (Array.isArray(columnSpec.xField)) columnSpec.xField.push(datasetReshapeInfo[0].unfoldInfo.groupId);
5651
+ if (Array.isArray(columnSpec.xField)) columnSpec.xField.push(datasetReshapeInfo[0].unfoldInfo.encodingDetail);
6159
5652
  else if (columnSpec.xField) columnSpec.xField = [
6160
5653
  columnSpec.xField,
6161
- datasetReshapeInfo[0].unfoldInfo.groupId
5654
+ datasetReshapeInfo[0].unfoldInfo.encodingDetail
6162
5655
  ];
6163
5656
  columnSpec.type = 'bar';
6164
5657
  result.zIndex = DUAL_AXIS_CHART_COLUMN_Z_INDEX;
@@ -6211,10 +5704,10 @@ const dualChartTypeSecondary = (spec, context)=>{
6211
5704
  case 'columnParallel':
6212
5705
  {
6213
5706
  const columnSpec = result;
6214
- if (Array.isArray(columnSpec.xField)) columnSpec.xField.push(datasetReshapeInfo[0].unfoldInfo.groupId);
5707
+ if (Array.isArray(columnSpec.xField)) columnSpec.xField.push(datasetReshapeInfo[0].unfoldInfo.encodingDetail);
6215
5708
  else if (columnSpec.xField) columnSpec.xField = [
6216
5709
  columnSpec.xField,
6217
- datasetReshapeInfo[0].unfoldInfo.groupId
5710
+ datasetReshapeInfo[0].unfoldInfo.encodingDetail
6218
5711
  ];
6219
5712
  columnSpec.type = 'bar';
6220
5713
  result.zIndex = DUAL_AXIS_CHART_COLUMN_Z_INDEX;
@@ -6241,10 +5734,11 @@ const dualChartTypeSecondary = (spec, context)=>{
6241
5734
  };
6242
5735
  const datasetPrimary = (spec, context)=>{
6243
5736
  const { advancedVSeed, vseed } = context;
6244
- const { encoding, analysis, datasetReshapeInfo } = advancedVSeed;
5737
+ const { analysis, datasetReshapeInfo } = advancedVSeed;
6245
5738
  const orderMapping = analysis?.orderMapping || {};
6246
- const x = encoding[0]?.x?.[0];
6247
- const group = encoding[0]?.group?.[0];
5739
+ const { unfoldInfo } = datasetReshapeInfo[0];
5740
+ const x = unfoldInfo.encodingX;
5741
+ const colorId = unfoldInfo.encodingColorId;
6248
5742
  const id = datasetReshapeInfo[0].id;
6249
5743
  const fields = {};
6250
5744
  if (x) {
@@ -6258,14 +5752,14 @@ const datasetPrimary = (spec, context)=>{
6258
5752
  sortIndex: 0
6259
5753
  };
6260
5754
  }
6261
- if (group) {
6262
- const order = orderMapping[group];
6263
- if (order) fields[group] = {
5755
+ if (colorId) {
5756
+ const order = orderMapping[colorId];
5757
+ if (order) fields[colorId] = {
6264
5758
  sortIndex: 0,
6265
5759
  domain: order,
6266
5760
  lockStatisticsByDomain: true
6267
5761
  };
6268
- else fields[group] = {
5762
+ else fields[colorId] = {
6269
5763
  sortIndex: 0
6270
5764
  };
6271
5765
  }
@@ -6280,10 +5774,11 @@ const datasetPrimary = (spec, context)=>{
6280
5774
  };
6281
5775
  const datasetSecondary = (spec, context)=>{
6282
5776
  const { advancedVSeed, vseed } = context;
6283
- const { encoding, analysis, datasetReshapeInfo } = advancedVSeed;
5777
+ const { analysis, datasetReshapeInfo } = advancedVSeed;
6284
5778
  const orderMapping = analysis?.orderMapping || {};
6285
- const x = encoding[0]?.x?.[0];
6286
- const group = encoding[0]?.group?.[0];
5779
+ const { unfoldInfo } = datasetReshapeInfo[0];
5780
+ const x = unfoldInfo.encodingX;
5781
+ const colorId = unfoldInfo.encodingColorId;
6287
5782
  const id = datasetReshapeInfo[0].id;
6288
5783
  const fields = {};
6289
5784
  if (x) {
@@ -6297,14 +5792,14 @@ const datasetSecondary = (spec, context)=>{
6297
5792
  sortIndex: 0
6298
5793
  };
6299
5794
  }
6300
- if (group) {
6301
- const order = orderMapping[group];
6302
- if (order) fields[group] = {
5795
+ if (colorId) {
5796
+ const order = orderMapping[colorId];
5797
+ if (order) fields[colorId] = {
6303
5798
  sortIndex: 0,
6304
5799
  domain: order,
6305
5800
  lockStatisticsByDomain: true
6306
5801
  };
6307
- else fields[group] = {
5802
+ else fields[colorId] = {
6308
5803
  sortIndex: 0
6309
5804
  };
6310
5805
  }
@@ -6402,7 +5897,7 @@ const tooltipPrimary = (spec, context)=>{
6402
5897
  const foldInfoList = datasetReshapeInfo[0].foldInfoList;
6403
5898
  const unfoldInfo = datasetReshapeInfo[0].unfoldInfo;
6404
5899
  const { measureId, measureValue, measureName } = foldInfoList[0];
6405
- const { groupName } = unfoldInfo;
5900
+ const { encodingColor: colorName } = unfoldInfo;
6406
5901
  result.tooltip = {
6407
5902
  visible: enable,
6408
5903
  mark: {
@@ -6423,7 +5918,7 @@ const tooltipPrimary = (spec, context)=>{
6423
5918
  {
6424
5919
  visible: true,
6425
5920
  hasShape: true,
6426
- key: (datum)=>datum && datum[measureName || groupName] || '',
5921
+ key: (datum)=>datum && datum[measureName || colorName] || '',
6427
5922
  value: (datum)=>{
6428
5923
  if (!datum) return '';
6429
5924
  const value = datum[measureValue];
@@ -6445,7 +5940,7 @@ const tooltipPrimary = (spec, context)=>{
6445
5940
  content: [
6446
5941
  {
6447
5942
  visible: true,
6448
- key: (datum)=>datum && datum[groupName] || '',
5943
+ key: (datum)=>datum && datum[colorName] || '',
6449
5944
  value: (datum)=>{
6450
5945
  if (!datum) return '';
6451
5946
  const value = datum[measureValue];
@@ -6482,7 +5977,7 @@ const tooltipSecondary = (spec, context)=>{
6482
5977
  const foldInfoList = datasetReshapeInfo[0].foldInfoList;
6483
5978
  const unfoldInfo = datasetReshapeInfo[0].unfoldInfo;
6484
5979
  const { measureId, measureValue, measureName } = foldInfoList[1];
6485
- const { groupName } = unfoldInfo;
5980
+ const { encodingColorId } = unfoldInfo;
6486
5981
  result.tooltip = {
6487
5982
  visible: enable,
6488
5983
  mark: {
@@ -6503,7 +5998,7 @@ const tooltipSecondary = (spec, context)=>{
6503
5998
  {
6504
5999
  visible: true,
6505
6000
  hasShape: true,
6506
- key: (datum)=>datum && datum[measureName || groupName] || '',
6001
+ key: (datum)=>datum && datum[measureName || encodingColorId] || '',
6507
6002
  value: (datum)=>{
6508
6003
  if (!datum) return '';
6509
6004
  const value = datum[measureValue];
@@ -6525,7 +6020,7 @@ const tooltipSecondary = (spec, context)=>{
6525
6020
  content: [
6526
6021
  {
6527
6022
  visible: true,
6528
- key: (datum)=>datum && datum[groupName] || '',
6023
+ key: (datum)=>datum && datum[encodingColorId] || '',
6529
6024
  value: (datum)=>{
6530
6025
  if (!datum) return '';
6531
6026
  const value = datum[measureValue];
@@ -6554,16 +6049,16 @@ const yLinearPrimary = (spec, context)=>{
6554
6049
  const { advancedVSeed, vseed } = context;
6555
6050
  const { chartType } = vseed;
6556
6051
  const { locale, datasetReshapeInfo } = advancedVSeed;
6557
- const index = datasetReshapeInfo[0].index;
6052
+ const { index, id: reshapeInfoId, foldInfoList } = datasetReshapeInfo[0];
6558
6053
  const primaryYAxis = advancedVSeed.config?.[chartType]?.primaryYAxis;
6559
6054
  const yAxisConfig = Array.isArray(primaryYAxis) ? primaryYAxis[index] || primaryYAxis[0] : primaryYAxis;
6560
6055
  const alignTicks = advancedVSeed.config?.[chartType]?.alignTicks;
6561
6056
  const alignTicksConfig = Array.isArray(alignTicks) ? alignTicks[index] || alignTicks[0] : alignTicks;
6562
- if (datasetReshapeInfo[0].foldInfoList?.[0] && (0, external_remeda_namespaceObject.isEmpty)(datasetReshapeInfo[0].foldInfoList[0].foldMap)) return result;
6563
- const id = `${datasetReshapeInfo[0].id}-primary-axis`;
6057
+ if (foldInfoList?.[0] && (0, external_remeda_namespaceObject.isEmpty)(foldInfoList[0].foldMap)) return result;
6058
+ const id = `${reshapeInfoId}-primary-axis`;
6564
6059
  const seriesIds = [
6565
- `${datasetReshapeInfo[0].id}-primary-series`,
6566
- `${datasetReshapeInfo[0].id}-secondary-series`
6060
+ `${reshapeInfoId}-primary-series`,
6061
+ `${reshapeInfoId}-secondary-series`
6567
6062
  ];
6568
6063
  const seriesId = alignTicksConfig ? seriesIds : seriesIds[0];
6569
6064
  if (!result.axes) result.axes = [];
@@ -6651,20 +6146,20 @@ const yLinearSecondary = (spec, context)=>{
6651
6146
  const { advancedVSeed, vseed } = context;
6652
6147
  const { chartType } = vseed;
6653
6148
  const { locale, datasetReshapeInfo } = advancedVSeed;
6654
- const index = datasetReshapeInfo[0].index;
6149
+ const { index, id: reshapeInfoId, foldInfoList } = datasetReshapeInfo[0];
6655
6150
  const secondaryYAxis = advancedVSeed.config?.[chartType]?.secondaryYAxis;
6656
6151
  const yAxisConfig = Array.isArray(secondaryYAxis) ? secondaryYAxis[index] || secondaryYAxis[0] : secondaryYAxis;
6657
6152
  const alignTicks = advancedVSeed.config?.[chartType]?.alignTicks;
6658
6153
  const alignTicksConfig = Array.isArray(alignTicks) ? alignTicks[index] || alignTicks[0] : alignTicks;
6659
- if ((0, external_remeda_namespaceObject.isNullish)(datasetReshapeInfo[0].foldInfoList?.[1])) return result;
6154
+ if ((0, external_remeda_namespaceObject.isNullish)(foldInfoList?.[1])) return result;
6660
6155
  const sync = {
6661
- axisId: `${datasetReshapeInfo[0].id}-primary-axis`,
6156
+ axisId: `${reshapeInfoId}-primary-axis`,
6662
6157
  zeroAlign: true
6663
6158
  };
6664
- const id = `${datasetReshapeInfo[0].id}-secondary-axis`;
6159
+ const id = `${reshapeInfoId}-secondary-axis`;
6665
6160
  const seriesIds = [
6666
- `${datasetReshapeInfo[0].id}-primary-series`,
6667
- `${datasetReshapeInfo[0].id}-secondary-series`
6161
+ `${reshapeInfoId}-primary-series`,
6162
+ `${reshapeInfoId}-secondary-series`
6668
6163
  ];
6669
6164
  const seriesId = alignTicksConfig ? seriesIds : seriesIds[1];
6670
6165
  if (!result.axes) result.axes = [];
@@ -6805,210 +6300,74 @@ const pivotDualAxis = [
6805
6300
  areaStyle_areaStyle
6806
6301
  ], [
6807
6302
  initDualAxisSecondary,
6808
- dualChartTypeSecondary,
6809
- datasetSecondary,
6810
- labelSecondary,
6811
- tooltipSecondary,
6812
- progressive,
6813
- barStyle_barStyle,
6814
- pointStyle_pointStyle,
6815
- pointStateDimensionHover,
6816
- lineStyle_lineStyle,
6817
- areaStyle_areaStyle
6818
- ]),
6819
- xBand,
6820
- yLinearPrimary,
6821
- yLinearSecondary,
6822
- color_color,
6823
- background_backgroundColor,
6824
- verticalCrosshairRect,
6825
- annotationPoint_annotationPoint,
6826
- annotationVerticalLine_annotationVerticalLine,
6827
- annotationHorizontalLine_annotationHorizontalLine,
6828
- annotationArea_annotationArea
6829
- ]),
6830
- pivotRowDimensions,
6831
- pivotColumnDimensions,
6832
- pivotDiscreteLegend
6833
- ];
6834
- const dualAxisSpecPipeline = [
6835
- pivotAdapter_pivotAdapter(dualAxis, pivotDualAxis)
6836
- ];
6837
- const registerDualAxis = ()=>{
6838
- Builder._advancedPipelineMap.dualAxis = dualAxisAdvancedPipeline;
6839
- Builder._specPipelineMap.dualAxis = dualAxisSpecPipeline;
6840
- };
6841
- const dataReshapeFor1D1M_emptyReshapeResult = {
6842
- dataset: [],
6843
- foldInfo: {
6844
- foldMap: {},
6845
- measureId: '',
6846
- measureName: '',
6847
- measureValue: ''
6848
- },
6849
- unfoldInfo: {
6850
- groupName: '',
6851
- groupId: '',
6852
- colorItems: [],
6853
- colorIdMap: {}
6854
- }
6855
- };
6856
- const dataReshapeFor1D1M = (dataset, dimensions, measures, options)=>{
6857
- const { foldMeasureId = FoldMeasureId, foldMeasureName = FoldMeasureName, foldMeasureValue = FoldMeasureValue, unfoldDimensionGroup = UnfoldDimensionGroup, unfoldDimensionGroupId = UnfoldDimensionGroupId } = options || {};
6858
- if (0 === dimensions.length && 0 === measures.length) return dataReshapeFor1D1M_emptyReshapeResult;
6859
- const { dataset: foldedDataset, foldInfo } = foldMeasures(dataset, measures, foldMeasureId, foldMeasureName, foldMeasureValue);
6860
- if (0 === dimensions.length) {
6861
- const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, [
6862
- {
6863
- id: foldMeasureName,
6864
- alias: i18n`指标名称`,
6865
- location: 'dimension'
6866
- }
6867
- ], [
6868
- {
6869
- id: foldMeasureValue,
6870
- alias: i18n`指标值`
6871
- }
6872
- ], 0, unfoldDimensionGroup, unfoldDimensionGroupId, foldMeasureId);
6873
- return {
6874
- dataset: finalDataset,
6875
- foldInfo,
6876
- unfoldInfo
6877
- };
6878
- }
6879
- {
6880
- const dims = 1 === measures.length ? [
6881
- ...dimensions
6882
- ] : [
6883
- ...dimensions,
6884
- {
6885
- id: foldMeasureName,
6886
- alias: i18n`指标名称`,
6887
- location: 'dimension'
6888
- }
6889
- ];
6890
- const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, dims, [
6891
- {
6892
- id: foldMeasureValue,
6893
- alias: i18n`指标值`
6894
- }
6895
- ], 0, unfoldDimensionGroup, unfoldDimensionGroupId, foldMeasureId);
6896
- return {
6897
- dataset: finalDataset,
6898
- foldInfo,
6899
- unfoldInfo
6900
- };
6901
- }
6902
- };
6903
- const reshapeTo1D1M = (advancedVSeed, context)=>{
6904
- const result = {
6905
- ...advancedVSeed
6906
- };
6907
- const { vseed } = context;
6908
- const { dataset } = vseed;
6909
- const { dimensions, measures } = advancedVSeed;
6910
- if (!measures || !dimensions || !dataset) return result;
6911
- if (0 === measures.length) throw new Error('measures can not be empty');
6912
- const { dataset: newDatasets, foldInfo, unfoldInfo } = dataReshapeFor1D1M(dataset, dimensions, measures);
6913
- return {
6914
- ...result,
6915
- dataset: newDatasets,
6916
- datasetReshapeInfo: [
6917
- {
6918
- id: '1D1M',
6919
- index: 0,
6920
- foldInfo,
6921
- unfoldInfo
6922
- }
6923
- ]
6924
- };
6303
+ dualChartTypeSecondary,
6304
+ datasetSecondary,
6305
+ labelSecondary,
6306
+ tooltipSecondary,
6307
+ progressive,
6308
+ barStyle_barStyle,
6309
+ pointStyle_pointStyle,
6310
+ pointStateDimensionHover,
6311
+ lineStyle_lineStyle,
6312
+ areaStyle_areaStyle
6313
+ ]),
6314
+ xBand,
6315
+ yLinearPrimary,
6316
+ yLinearSecondary,
6317
+ color_color,
6318
+ background_backgroundColor,
6319
+ verticalCrosshairRect,
6320
+ annotationPoint_annotationPoint,
6321
+ annotationVerticalLine_annotationVerticalLine,
6322
+ annotationHorizontalLine_annotationHorizontalLine,
6323
+ annotationArea_annotationArea
6324
+ ]),
6325
+ pivotRowDimensions,
6326
+ pivotColumnDimensions,
6327
+ pivotDiscreteLegend
6328
+ ];
6329
+ const dualAxisSpecPipeline = [
6330
+ pivotAdapter_pivotAdapter(dualAxis, pivotDualAxis)
6331
+ ];
6332
+ const registerDualAxis = ()=>{
6333
+ Builder._advancedPipelineMap.dualAxis = dualAxisAdvancedPipeline;
6334
+ Builder._specPipelineMap.dualAxis = dualAxisSpecPipeline;
6925
6335
  };
6926
- const pivotReshapeTo1D1M = (advancedVSeed, context)=>{
6927
- const result = {
6928
- ...advancedVSeed
6929
- };
6336
+ const encodingForPie = (advancedVSeed, context)=>{
6930
6337
  const { vseed } = context;
6931
- const { dataset } = vseed;
6932
- const { measures } = advancedVSeed;
6933
- const dimensions = advancedVSeed.dimensions;
6934
- if (!measures || !dimensions) return result;
6935
- const measureGroups = [];
6936
- if (measures) measures.forEach((measure)=>{
6937
- if (measure.children && measure.children.length > 0) measureGroups.push(measure);
6938
- });
6939
- const newDatasets = [];
6940
- const datasetReshapeInfo = [];
6941
- measureGroups.forEach((measureGroup, index)=>{
6942
- const measures = measureGroup.children;
6943
- if (!measures) return;
6944
- const commonDimensions = dimensions.filter((dim)=>'dimension' === dim.location);
6945
- const groupId = measureGroup.id;
6946
- const { dataset: newSubDataset, foldInfo, unfoldInfo } = dataReshapeFor1D1M(dataset, commonDimensions, measures, {
6947
- foldMeasureId: FoldMeasureId,
6948
- foldMeasureName: FoldMeasureName,
6949
- foldMeasureValue: FoldMeasureValue + groupId,
6950
- unfoldDimensionGroup: UnfoldDimensionGroup
6951
- });
6952
- const reshapeInfo = {
6953
- id: groupId,
6954
- index,
6955
- foldInfo,
6956
- unfoldInfo
6957
- };
6958
- newDatasets.push(newSubDataset);
6959
- datasetReshapeInfo.push(reshapeInfo);
6960
- });
6961
- return {
6962
- ...result,
6963
- dataset: newDatasets,
6964
- datasetReshapeInfo: datasetReshapeInfo
6338
+ const { dimensions } = advancedVSeed;
6339
+ if (!dimensions) return advancedVSeed;
6340
+ const encoding = vseed.encoding;
6341
+ if (encoding) return {
6342
+ ...advancedVSeed,
6343
+ encoding: {
6344
+ ...encoding
6345
+ }
6965
6346
  };
6966
- };
6967
- const encodingPie = (advancedVSeed)=>{
6968
- const result = {
6969
- ...advancedVSeed
6347
+ const mergedEncoding = {
6348
+ angle: dimensions.slice(0, 1).map((item)=>item.id),
6349
+ color: dimensions.slice(0).map((item)=>item.id),
6350
+ detail: dimensions.slice(0).map((item)=>item.id),
6351
+ tooltip: dimensions.map((item)=>item.id),
6352
+ label: [],
6353
+ row: [],
6354
+ column: []
6970
6355
  };
6971
- const { datasetReshapeInfo } = advancedVSeed;
6972
- if (!datasetReshapeInfo) return result;
6973
- const encoding = datasetReshapeInfo.reduce((prev, cur)=>{
6974
- const { foldInfo, unfoldInfo } = cur;
6975
- const radius = [
6976
- foldInfo.measureValue
6977
- ];
6978
- const angle = [
6979
- unfoldInfo.groupId
6980
- ];
6981
- const group = [
6982
- unfoldInfo.groupId
6983
- ];
6984
- const color = [
6985
- unfoldInfo.groupId
6986
- ];
6987
- return [
6988
- ...prev,
6989
- {
6990
- angle,
6991
- radius,
6992
- group,
6993
- color
6994
- }
6995
- ];
6996
- }, []);
6997
6356
  return {
6998
- ...result,
6999
- encoding
6357
+ ...advancedVSeed,
6358
+ encoding: mergedEncoding
7000
6359
  };
7001
6360
  };
7002
6361
  const pieAdvancedPipeline = [
7003
6362
  initAdvancedVSeed_initAdvancedVSeed,
7004
6363
  autoMeasures_autoMeasures,
7005
6364
  autoDimensions_autoDimensions,
6365
+ encodingForPie,
7006
6366
  pivotAdapter([
7007
- reshapeTo1D1M
6367
+ reshapeWithEncoding
7008
6368
  ], [
7009
- pivotReshapeTo1D1M
6369
+ pivotReshapeWithEncoding
7010
6370
  ]),
7011
- encodingPie,
7012
6371
  pieConfig,
7013
6372
  theme_theme,
7014
6373
  annotation_annotation
@@ -7018,15 +6377,15 @@ const initPie = (spec, context)=>{
7018
6377
  ...spec
7019
6378
  };
7020
6379
  const { advancedVSeed } = context;
7021
- const { encoding, dataset } = advancedVSeed;
7022
- if (!encoding[0].angle || !encoding[0].radius || !encoding[0].group) return result;
6380
+ const { datasetReshapeInfo, dataset } = advancedVSeed;
6381
+ const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
7023
6382
  const showStroke = dataset.length <= 30;
7024
6383
  result.type = 'pie';
7025
6384
  result.outerRadius = 0.8;
7026
6385
  result.innerRadius = 0;
7027
- result.valueField = encoding[0].radius[0];
7028
- result.categoryField = encoding[0].angle[0];
7029
- result.seriesField = encoding[0].group[0];
6386
+ result.valueField = foldInfo.measureValue;
6387
+ result.categoryField = unfoldInfo.encodingAngle;
6388
+ result.seriesField = unfoldInfo.encodingColorId;
7030
6389
  result.padding = 0;
7031
6390
  result.region = [
7032
6391
  {
@@ -7095,12 +6454,12 @@ const donutAdvancedPipeline = [
7095
6454
  initAdvancedVSeed_initAdvancedVSeed,
7096
6455
  autoMeasures_autoMeasures,
7097
6456
  autoDimensions_autoDimensions,
6457
+ encodingForPie,
7098
6458
  pivotAdapter([
7099
- reshapeTo1D1M
6459
+ reshapeWithEncoding
7100
6460
  ], [
7101
- pivotReshapeTo1D1M
6461
+ pivotReshapeWithEncoding
7102
6462
  ]),
7103
- encodingPie,
7104
6463
  donutConfig,
7105
6464
  theme_theme,
7106
6465
  annotation_annotation
@@ -7110,15 +6469,15 @@ const initDonut = (spec, context)=>{
7110
6469
  ...spec
7111
6470
  };
7112
6471
  const { advancedVSeed } = context;
7113
- const { encoding, dataset } = advancedVSeed;
7114
- if (!encoding[0].angle || !encoding[0].radius || !encoding[0].group) return result;
6472
+ const { datasetReshapeInfo, dataset } = advancedVSeed;
6473
+ const { foldInfo, unfoldInfo } = datasetReshapeInfo[0];
7115
6474
  const showStroke = dataset.length <= 30;
7116
6475
  result.type = 'pie';
7117
6476
  result.outerRadius = 0.8;
7118
6477
  result.innerRadius = 0.8 * result.outerRadius;
7119
- result.valueField = encoding[0].radius[0];
7120
- result.categoryField = encoding[0].angle[0];
7121
- result.seriesField = encoding[0].group[0];
6478
+ result.valueField = foldInfo.measureValue;
6479
+ result.categoryField = unfoldInfo.encodingDetail;
6480
+ result.seriesField = unfoldInfo.encodingColorId;
7122
6481
  result.padding = 0;
7123
6482
  result.region = [
7124
6483
  {
@@ -7182,54 +6541,52 @@ const registerDonut = ()=>{
7182
6541
  Builder._advancedPipelineMap.donut = donutAdvancedPipeline;
7183
6542
  Builder._specPipelineMap.donut = donutSpecPipeline;
7184
6543
  };
7185
- const encodingRose = (advancedVSeed)=>{
7186
- const result = {
7187
- ...advancedVSeed
7188
- };
7189
- const { datasetReshapeInfo, dimensions, measures } = advancedVSeed;
7190
- if (!datasetReshapeInfo || !dimensions || !measures) return result;
7191
- const angleDimension = dimensions.find((item)=>'rowDimension' !== item.location && 'columnDimension' !== item.location) || dimensions[0];
7192
- const is1D1M = 1 === dimensions.length && 1 === measures.length;
7193
- const isZeroDimension = 0 === dimensions.length;
7194
- const encoding = datasetReshapeInfo.reduce((prev, cur)=>{
7195
- const { foldInfo, unfoldInfo } = cur;
7196
- const radius = [
7197
- foldInfo.measureValue
7198
- ];
7199
- const angle = [
7200
- isZeroDimension ? foldInfo.measureName : angleDimension?.id
7201
- ];
7202
- const group = [
7203
- is1D1M ? angleDimension?.id : unfoldInfo.groupId
7204
- ];
7205
- const color = [
7206
- is1D1M ? angleDimension?.id : unfoldInfo.groupId
6544
+ const encodingForRose = (advancedVSeed, context)=>{
6545
+ const { vseed } = context;
6546
+ const { dimensions } = advancedVSeed;
6547
+ if (!dimensions) return advancedVSeed;
6548
+ const encoding = vseed.encoding;
6549
+ if (encoding) {
6550
+ const angle = encoding.angle || [];
6551
+ const detail = encoding.detail || [];
6552
+ const color = encoding.color || [];
6553
+ const mergedDetail = [
6554
+ ...color.filter((d)=>!angle.includes(d)),
6555
+ ...detail
7207
6556
  ];
7208
- return [
7209
- ...prev,
7210
- {
7211
- angle,
7212
- radius,
7213
- group,
7214
- color
6557
+ return {
6558
+ ...advancedVSeed,
6559
+ encoding: {
6560
+ ...encoding,
6561
+ detail: mergedDetail
7215
6562
  }
7216
- ];
7217
- }, []);
6563
+ };
6564
+ }
6565
+ const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
6566
+ const mergedEncoding = {
6567
+ angle: dimensions.slice(0, 1).map((item)=>item.id),
6568
+ color: dimensions.slice(1).map((item)=>item.id),
6569
+ detail: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
6570
+ tooltip: dimensions.map((item)=>item.id),
6571
+ label: [],
6572
+ row: [],
6573
+ column: []
6574
+ };
7218
6575
  return {
7219
- ...result,
7220
- encoding
6576
+ ...advancedVSeed,
6577
+ encoding: mergedEncoding
7221
6578
  };
7222
6579
  };
7223
6580
  const roseAdvancedPipeline = [
7224
6581
  initAdvancedVSeed_initAdvancedVSeed,
7225
6582
  autoMeasures_autoMeasures,
7226
6583
  autoDimensions_autoDimensions,
6584
+ encodingForRose,
7227
6585
  pivotAdapter([
7228
- reshapeTo2D1M
6586
+ reshapeWithEncoding
7229
6587
  ], [
7230
- pivotReshapeTo2D1M
6588
+ pivotReshapeWithEncoding
7231
6589
  ]),
7232
- encodingRose,
7233
6590
  roseConfig,
7234
6591
  theme_theme,
7235
6592
  markStyle_markStyle,
@@ -7240,13 +6597,12 @@ const initRose = (spec, context)=>{
7240
6597
  ...spec
7241
6598
  };
7242
6599
  const { advancedVSeed } = context;
7243
- const { encoding, dataset, datasetReshapeInfo } = advancedVSeed;
7244
- const { foldInfo } = datasetReshapeInfo[0];
7245
- if (!encoding[0].radius || !encoding[0].angle || !encoding[0].group) return result;
6600
+ const { dataset, datasetReshapeInfo } = advancedVSeed;
6601
+ const { foldInfo, unfoldInfo } = datasetReshapeInfo[0];
7246
6602
  result.type = 'rose';
7247
- result.categoryField = encoding[0].angle[0];
7248
- result.valueField = encoding[0].radius[0];
7249
- result.seriesField = encoding[0].group[0];
6603
+ result.categoryField = unfoldInfo.encodingAngle;
6604
+ result.seriesField = unfoldInfo.encodingColorId;
6605
+ result.valueField = foldInfo.measureValue;
7250
6606
  result.padding = 0;
7251
6607
  result.outerRadius = 0.9;
7252
6608
  result.innerRadius = 0;
@@ -7394,12 +6750,12 @@ const roseParallelAdvancedPipeline = [
7394
6750
  initAdvancedVSeed_initAdvancedVSeed,
7395
6751
  autoMeasures_autoMeasures,
7396
6752
  autoDimensions_autoDimensions,
6753
+ encodingForRose,
7397
6754
  pivotAdapter([
7398
- reshapeTo2D1M
6755
+ reshapeWithEncoding
7399
6756
  ], [
7400
- pivotReshapeTo2D1M
6757
+ pivotReshapeWithEncoding
7401
6758
  ]),
7402
- encodingRose,
7403
6759
  roseParallelConfig,
7404
6760
  theme_theme,
7405
6761
  markStyle_markStyle,
@@ -7410,19 +6766,18 @@ const initRoseParallel = (spec, context)=>{
7410
6766
  ...spec
7411
6767
  };
7412
6768
  const { advancedVSeed } = context;
7413
- const { encoding, datasetReshapeInfo, dataset, dimensions } = advancedVSeed;
6769
+ const { datasetReshapeInfo, dataset, dimensions } = advancedVSeed;
7414
6770
  const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
7415
- if (!encoding[0].radius || !encoding[0].angle || !encoding[0].group) return result;
7416
6771
  const sameDimensionsMode = dimensions.length > 1 && dimensions.every((dim)=>dim.id === dimensions[0].id);
7417
6772
  result.type = 'rose';
7418
6773
  result.categoryField = sameDimensionsMode ? [
7419
- encoding[0].angle[0]
6774
+ unfoldInfo.encodingAngle
7420
6775
  ] : [
7421
- encoding[0].angle[0],
7422
- unfoldInfo.groupId
6776
+ unfoldInfo.encodingAngle,
6777
+ unfoldInfo.encodingDetail
7423
6778
  ];
7424
- result.valueField = encoding[0].radius[0];
7425
- result.seriesField = encoding[0].group[0];
6779
+ result.valueField = foldInfo.measureValue;
6780
+ result.seriesField = unfoldInfo.encodingColorId;
7426
6781
  result.padding = 0;
7427
6782
  result.outerRadius = 0.9;
7428
6783
  result.innerRadius = 0;
@@ -7499,54 +6854,52 @@ const registerRoseParallel = ()=>{
7499
6854
  Builder._advancedPipelineMap.roseParallel = roseParallelAdvancedPipeline;
7500
6855
  Builder._specPipelineMap.roseParallel = roseParallelSpecPipeline;
7501
6856
  };
7502
- const encodingAR = (advancedVSeed)=>{
7503
- const result = {
7504
- ...advancedVSeed
7505
- };
7506
- const { datasetReshapeInfo, dimensions, measures } = advancedVSeed;
7507
- if (!datasetReshapeInfo || !dimensions || !measures) return result;
7508
- const angleDimension = dimensions.find((item)=>'rowDimension' !== item.location && 'columnDimension' !== item.location) || dimensions[0];
7509
- const isZeroDimension = 0 === dimensions.length;
7510
- const encoding = datasetReshapeInfo.reduce((prev, cur)=>{
7511
- const { foldInfo, unfoldInfo } = cur;
7512
- const angle = [
7513
- isZeroDimension ? foldInfo.measureName : angleDimension?.id
7514
- ];
7515
- const radius = [
7516
- foldInfo.measureValue
7517
- ];
7518
- const group = [
7519
- unfoldInfo.groupId
7520
- ];
7521
- const color = [
7522
- unfoldInfo.groupId
6857
+ const encodingForRadar = (advancedVSeed, context)=>{
6858
+ const { vseed } = context;
6859
+ const { dimensions } = advancedVSeed;
6860
+ if (!dimensions) return advancedVSeed;
6861
+ const encoding = vseed.encoding;
6862
+ if (encoding) {
6863
+ const angle = encoding.angle || [];
6864
+ const detail = encoding.detail || [];
6865
+ const color = encoding.color || [];
6866
+ const mergedDetail = [
6867
+ ...color.filter((d)=>!angle.includes(d)),
6868
+ ...detail
7523
6869
  ];
7524
- return [
7525
- ...prev,
7526
- {
7527
- angle,
7528
- radius,
7529
- group,
7530
- color
6870
+ return {
6871
+ ...advancedVSeed,
6872
+ encoding: {
6873
+ ...encoding,
6874
+ detail: mergedDetail
7531
6875
  }
7532
- ];
7533
- }, []);
6876
+ };
6877
+ }
6878
+ const mergedEncoding = {
6879
+ angle: dimensions.slice(0, 1).map((item)=>item.id),
6880
+ color: dimensions.slice(1).map((item)=>item.id),
6881
+ detail: dimensions.slice(1).map((item)=>item.id),
6882
+ tooltip: dimensions.map((item)=>item.id),
6883
+ label: [],
6884
+ row: [],
6885
+ column: []
6886
+ };
7534
6887
  return {
7535
- ...result,
7536
- encoding
6888
+ ...advancedVSeed,
6889
+ encoding: mergedEncoding
7537
6890
  };
7538
6891
  };
7539
6892
  const radarAdvancedPipeline = [
7540
6893
  initAdvancedVSeed_initAdvancedVSeed,
7541
6894
  autoMeasures_autoMeasures,
7542
6895
  autoDimensions_autoDimensions,
6896
+ encodingForRadar,
7543
6897
  pivotAdapter([
7544
- reshapeTo2D1M0Name
6898
+ reshapeWithEncoding
7545
6899
  ], [
7546
- pivotReshapeTo2D1M0Name
6900
+ pivotReshapeWithEncoding
7547
6901
  ]),
7548
- encodingAR,
7549
- sort_sortLegend,
6902
+ sortLegend_sortLegend,
7550
6903
  radarConfig,
7551
6904
  theme_theme,
7552
6905
  markStyle_markStyle,
@@ -7557,12 +6910,12 @@ const initRadar = (spec, context)=>{
7557
6910
  ...spec
7558
6911
  };
7559
6912
  const { advancedVSeed } = context;
7560
- const { encoding } = advancedVSeed;
7561
- if (!encoding[0].angle || !encoding[0].radius || !encoding[0].group) return result;
6913
+ const { datasetReshapeInfo } = advancedVSeed;
6914
+ const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
7562
6915
  result.type = 'radar';
7563
- result.angleField = encoding[0].angle[0];
7564
- result.radiusField = encoding[0].radius[0];
7565
- result.seriesField = encoding[0].group[0];
6916
+ result.angleField = unfoldInfo.encodingAngle;
6917
+ result.radiusField = foldInfo.measureValue;
6918
+ result.seriesField = unfoldInfo.encodingColorId;
7566
6919
  result.padding = 0;
7567
6920
  result.region = [
7568
6921
  {
@@ -7674,47 +7027,40 @@ const registerRadar = ()=>{
7674
7027
  Builder._advancedPipelineMap.radar = radarAdvancedPipeline;
7675
7028
  Builder._specPipelineMap.radar = radarSpecPipeline;
7676
7029
  };
7677
- const encodingFunnel = (advancedVSeed)=>{
7678
- const result = {
7679
- ...advancedVSeed
7030
+ const encodingForFunnel = (advancedVSeed, context)=>{
7031
+ const { vseed } = context;
7032
+ const { dimensions } = advancedVSeed;
7033
+ if (!dimensions) return advancedVSeed;
7034
+ const encoding = vseed.encoding;
7035
+ if (encoding) return {
7036
+ ...advancedVSeed,
7037
+ encoding: {
7038
+ ...encoding
7039
+ }
7040
+ };
7041
+ const mergedEncoding = {
7042
+ color: dimensions.slice(0).map((item)=>item.id),
7043
+ detail: dimensions.slice(0).map((item)=>item.id),
7044
+ tooltip: dimensions.map((item)=>item.id),
7045
+ label: [],
7046
+ row: [],
7047
+ column: []
7680
7048
  };
7681
- const { datasetReshapeInfo } = advancedVSeed;
7682
- if (!datasetReshapeInfo) return result;
7683
- const encoding = datasetReshapeInfo.reduce((prev, cur)=>{
7684
- const { foldInfo, unfoldInfo } = cur;
7685
- const size = [
7686
- foldInfo.measureValue
7687
- ];
7688
- const group = [
7689
- unfoldInfo.groupId
7690
- ];
7691
- const color = [
7692
- foldInfo.measureValue
7693
- ];
7694
- return [
7695
- ...prev,
7696
- {
7697
- size,
7698
- group,
7699
- color
7700
- }
7701
- ];
7702
- }, []);
7703
7049
  return {
7704
- ...result,
7705
- encoding
7050
+ ...advancedVSeed,
7051
+ encoding: mergedEncoding
7706
7052
  };
7707
7053
  };
7708
7054
  const funnelAdvancedPipeline = [
7709
7055
  initAdvancedVSeed_initAdvancedVSeed,
7710
7056
  autoMeasures_autoMeasures,
7711
7057
  autoDimensions_autoDimensions,
7058
+ encodingForFunnel,
7712
7059
  pivotAdapter([
7713
- reshapeTo1D1M
7060
+ reshapeWithEncoding
7714
7061
  ], [
7715
- pivotReshapeTo1D1M
7062
+ pivotReshapeWithEncoding
7716
7063
  ]),
7717
- encodingFunnel,
7718
7064
  funnelConfig,
7719
7065
  theme_theme,
7720
7066
  annotation_annotation
@@ -7724,11 +7070,12 @@ const initFunnel = (spec, context)=>{
7724
7070
  ...spec
7725
7071
  };
7726
7072
  const { advancedVSeed } = context;
7727
- const { encoding } = advancedVSeed;
7728
- if (!encoding[0].size || !encoding[0].group || !encoding[0].color) return result;
7073
+ const { datasetReshapeInfo } = advancedVSeed;
7074
+ const { foldInfo, unfoldInfo } = datasetReshapeInfo[0];
7729
7075
  result.type = 'funnel';
7730
- result.valueField = encoding[0].size[0];
7731
- result.categoryField = encoding[0].group[0];
7076
+ result.valueField = foldInfo.measureValue;
7077
+ result.categoryField = unfoldInfo.encodingDetail;
7078
+ result.seriesField = unfoldInfo.encodingColorId;
7732
7079
  result.padding = 0;
7733
7080
  result.isTransform = true;
7734
7081
  result.shape = 'rect';
@@ -7743,7 +7090,7 @@ const initFunnel = (spec, context)=>{
7743
7090
  style: {
7744
7091
  cornerRadius: 4,
7745
7092
  fill: {
7746
- field: encoding[0].color[0],
7093
+ field: unfoldInfo.encodingColorId,
7747
7094
  scale: 'color'
7748
7095
  }
7749
7096
  },
@@ -7759,99 +7106,13 @@ const initFunnel = (spec, context)=>{
7759
7106
  result.animation = true;
7760
7107
  return result;
7761
7108
  };
7762
- const linearColor = (spec, context)=>{
7763
- const result = {
7764
- ...spec
7765
- };
7766
- const { advancedVSeed } = context;
7767
- const { datasetReshapeInfo, chartType, encoding } = advancedVSeed;
7768
- const baseConfig = advancedVSeed.config[chartType];
7769
- if (!baseConfig || !baseConfig.color) return result;
7770
- const { color } = baseConfig;
7771
- const { colorScheme } = color;
7772
- result.color = {
7773
- type: 'linear',
7774
- domain: [
7775
- {
7776
- dataId: datasetReshapeInfo[0].id,
7777
- fields: encoding?.[0]?.color
7778
- }
7779
- ],
7780
- range: colorScheme
7781
- };
7782
- return result;
7783
- };
7784
- const colorLegend = (spec, context)=>{
7785
- const result = {
7786
- ...spec
7787
- };
7788
- const { advancedVSeed } = context;
7789
- const { chartType } = advancedVSeed;
7790
- const baseConfig = advancedVSeed.config[chartType];
7791
- const { encoding } = advancedVSeed;
7792
- if (!encoding[0].color) return result;
7793
- if (!baseConfig || !baseConfig.legend) return result;
7794
- const { legend } = baseConfig;
7795
- const { enable, position = 'bottom' } = legend || {};
7796
- const orient = [
7797
- 'bottom',
7798
- 'bottomLeft',
7799
- 'bottomRight',
7800
- 'bl',
7801
- 'br'
7802
- ].includes(position) ? 'bottom' : [
7803
- 'top',
7804
- 'topLeft',
7805
- 'topRight',
7806
- 'tl',
7807
- 'tr'
7808
- ].includes(position) ? 'top' : [
7809
- 'left',
7810
- 'leftTop',
7811
- 'leftBottom',
7812
- 'lt',
7813
- 'lb'
7814
- ].includes(position) ? 'left' : 'right';
7815
- const legendPosition = [
7816
- 'topLeft',
7817
- 'bottomLeft',
7818
- 'leftTop',
7819
- 'rightTop',
7820
- 'lt',
7821
- 'rt',
7822
- 'tl',
7823
- 'bl'
7824
- ].includes(position) ? 'start' : [
7825
- 'topRight',
7826
- 'bottomRight',
7827
- 'leftBottom',
7828
- 'rightBottom',
7829
- 'lb',
7830
- 'rb',
7831
- 'rt',
7832
- 'br'
7833
- ].includes(position) ? 'end' : 'middle';
7834
- result.legends = {
7835
- type: 'color',
7836
- visible: enable,
7837
- orient,
7838
- position: legendPosition,
7839
- field: encoding[0].color[0],
7840
- inverse: !![
7841
- 'left',
7842
- 'right'
7843
- ].includes(orient)
7844
- };
7845
- return result;
7846
- };
7847
7109
  const funnel = [
7848
7110
  initFunnel,
7849
- linearColor,
7850
7111
  background_backgroundColor,
7851
7112
  datasetXY,
7852
7113
  label_label,
7853
7114
  tooltip_tooltip,
7854
- colorLegend,
7115
+ discreteLegend,
7855
7116
  annotationPoint_annotationPoint,
7856
7117
  annotationVerticalLine_annotationVerticalLine,
7857
7118
  annotationHorizontalLine_annotationHorizontalLine,
@@ -7864,12 +7125,11 @@ const pivotFunnel = [
7864
7125
  datasetPivot,
7865
7126
  pivotIndicators_pivotIndicators([
7866
7127
  initFunnel,
7867
- linearColor,
7868
7128
  background_backgroundColor,
7869
7129
  datasetXY,
7870
7130
  label_label,
7871
7131
  tooltip_tooltip,
7872
- colorLegend,
7132
+ discreteLegend,
7873
7133
  annotationPoint_annotationPoint,
7874
7134
  annotationVerticalLine_annotationVerticalLine,
7875
7135
  annotationHorizontalLine_annotationHorizontalLine,
@@ -7885,49 +7145,42 @@ const registerFunnel = ()=>{
7885
7145
  Builder._advancedPipelineMap.funnel = funnelAdvancedPipeline;
7886
7146
  Builder._specPipelineMap.funnel = funnelSpecPipeline;
7887
7147
  };
7888
- const encodingMatrix = (advancedVSeed)=>{
7889
- const result = {
7890
- ...advancedVSeed
7148
+ const encodingForHeatmap = (advancedVSeed, context)=>{
7149
+ const { vseed } = context;
7150
+ const { dimensions } = advancedVSeed;
7151
+ if (!dimensions) return advancedVSeed;
7152
+ const encoding = vseed.encoding;
7153
+ if (encoding) return {
7154
+ ...advancedVSeed,
7155
+ encoding: {
7156
+ ...encoding
7157
+ }
7158
+ };
7159
+ const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
7160
+ const mergedEncoding = {
7161
+ x: dimensions.slice(0, 1).map((item)=>item.id),
7162
+ y: dimensions.slice(onlyMeasureName ? 0 : 1).map((item)=>item.id),
7163
+ color: dimensions.slice(0).map((item)=>item.id),
7164
+ tooltip: dimensions.map((item)=>item.id),
7165
+ label: [],
7166
+ row: [],
7167
+ column: []
7891
7168
  };
7892
- const { datasetReshapeInfo, dimensions } = advancedVSeed;
7893
- if (!datasetReshapeInfo || !dimensions) return result;
7894
- const xDimension = dimensions.find((item)=>'rowDimension' !== item.location && 'columnDimension' !== item.location) || dimensions[0];
7895
- const isZeroDimension = 0 === dimensions.length;
7896
- const encoding = datasetReshapeInfo.reduce((prev, cur)=>{
7897
- const { foldInfo, unfoldInfo } = cur;
7898
- const x = [
7899
- isZeroDimension ? foldInfo.measureName : xDimension?.id
7900
- ];
7901
- const y = [
7902
- unfoldInfo.groupName
7903
- ];
7904
- const color = [
7905
- foldInfo.measureValue
7906
- ];
7907
- return [
7908
- ...prev,
7909
- {
7910
- x,
7911
- y,
7912
- color
7913
- }
7914
- ];
7915
- }, []);
7916
7169
  return {
7917
- ...result,
7918
- encoding
7170
+ ...advancedVSeed,
7171
+ encoding: mergedEncoding
7919
7172
  };
7920
7173
  };
7921
7174
  const heatmapAdvancedPipeline = [
7922
7175
  initAdvancedVSeed_initAdvancedVSeed,
7923
7176
  autoMeasures_autoMeasures,
7924
7177
  autoDimensions_autoDimensions,
7178
+ encodingForHeatmap,
7925
7179
  pivotAdapter([
7926
- reshapeTo2D1M
7180
+ reshapeWithEncoding
7927
7181
  ], [
7928
- pivotReshapeTo2D1M
7182
+ pivotReshapeWithEncoding
7929
7183
  ]),
7930
- encodingMatrix,
7931
7184
  sortXBandAxis,
7932
7185
  heatmapConfig,
7933
7186
  theme_theme,
@@ -7949,23 +7202,20 @@ const initHeatmap = (spec, context)=>{
7949
7202
  ...spec
7950
7203
  };
7951
7204
  const { advancedVSeed } = context;
7952
- const { encoding } = advancedVSeed;
7953
- if (!encoding[0].y || !encoding[0].x || !encoding[0].color) return result;
7205
+ const { datasetReshapeInfo } = advancedVSeed;
7206
+ const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
7954
7207
  result.type = 'heatmap';
7955
7208
  result.direction = 'vertical';
7956
- result.xField = encoding[0].x[0];
7957
- result.yField = encoding[0].y[0];
7958
- result.valueField = encoding[0].color[0];
7209
+ result.xField = unfoldInfo.encodingX;
7210
+ result.yField = unfoldInfo.encodingY;
7211
+ result.seriesField = unfoldInfo.encodingColorId;
7212
+ result.valueField = foldInfo.measureValue;
7959
7213
  result.padding = 0;
7960
7214
  result.cell = {
7961
7215
  style: {
7962
7216
  shape: 'rect',
7963
7217
  stroke: '#ffffff',
7964
- lineWidth: 1,
7965
- fill: {
7966
- field: encoding[0].color[0],
7967
- scale: 'color'
7968
- }
7218
+ lineWidth: 1
7969
7219
  }
7970
7220
  };
7971
7221
  result.axes = [
@@ -7990,12 +7240,11 @@ const initHeatmap = (spec, context)=>{
7990
7240
  };
7991
7241
  const heatmap = [
7992
7242
  initHeatmap,
7993
- linearColor,
7994
7243
  background_backgroundColor,
7995
7244
  datasetXY,
7996
7245
  label_label,
7997
7246
  labelColorInversion,
7998
- colorLegend,
7247
+ discreteLegend,
7999
7248
  tooltip_tooltip,
8000
7249
  pointStyle_pointStyle,
8001
7250
  pointStateDimensionHover,
@@ -8012,12 +7261,11 @@ const pivotHeatmap = [
8012
7261
  datasetPivot,
8013
7262
  pivotIndicators_pivotIndicators([
8014
7263
  initHeatmap,
8015
- linearColor,
8016
7264
  background_backgroundColor,
8017
7265
  datasetXY,
8018
7266
  label_label,
8019
7267
  labelColorInversion,
8020
- colorLegend,
7268
+ discreteLegend,
8021
7269
  tooltip_tooltip,
8022
7270
  pointStyle_pointStyle,
8023
7271
  pointStateDimensionHover,
@@ -8285,12 +7533,6 @@ const lightTheme = ()=>{
8285
7533
  yAxis: linearAxis,
8286
7534
  crosshairLine
8287
7535
  },
8288
- areaRange: {
8289
- ...baseConfig,
8290
- xAxis: bandAxis,
8291
- yAxis: linearAxis,
8292
- crosshairLine
8293
- },
8294
7536
  scatter: {
8295
7537
  ...baseConfig,
8296
7538
  xAxis: {
@@ -8623,12 +7865,6 @@ const darkTheme = ()=>{
8623
7865
  yAxis: linearAxis,
8624
7866
  crosshairLine: crosshairLine
8625
7867
  },
8626
- areaRange: {
8627
- ...baseConfig,
8628
- xAxis: bandAxis,
8629
- yAxis: linearAxis,
8630
- crosshairLine: crosshairLine
8631
- },
8632
7868
  scatter: {
8633
7869
  ...baseConfig,
8634
7870
  xAxis: {
@@ -8726,7 +7962,6 @@ const registerAll = ()=>{
8726
7962
  registerBarPercent();
8727
7963
  registerArea();
8728
7964
  registerAreaPercent();
8729
- registerAreaRange();
8730
7965
  registerScatter();
8731
7966
  registerDualAxis();
8732
7967
  registerPie();
@@ -8761,7 +7996,6 @@ const zChartType = external_zod_namespaceObject.z["enum"]([
8761
7996
  'barParallel',
8762
7997
  'area',
8763
7998
  'areaPercent',
8764
- 'areaRange',
8765
7999
  'scatter',
8766
8000
  'dualAxis',
8767
8001
  'rose',
@@ -8859,6 +8093,12 @@ const zDualMeasure = external_zod_namespaceObject.z.object({
8859
8093
  secondaryMeasures: external_zod_namespaceObject.z.array(zMeasure).or(zMeasure).optional()
8860
8094
  });
8861
8095
  const zDualMeasures = external_zod_namespaceObject.z.array(zDualMeasure);
8096
+ const zScatterMeasure = external_zod_namespaceObject.z.object({
8097
+ id: external_zod_namespaceObject.z.string(),
8098
+ xMeasures: external_zod_namespaceObject.z.array(zMeasure).or(zMeasure).optional(),
8099
+ yMeasures: external_zod_namespaceObject.z.array(zMeasure).or(zMeasure).optional()
8100
+ });
8101
+ const zScatterMeasures = external_zod_namespaceObject.z.array(zScatterMeasure);
8862
8102
  const zFoldInfo = external_zod_namespaceObject.z.object({
8863
8103
  foldMap: external_zod_namespaceObject.z.record(external_zod_namespaceObject.z.string(), external_zod_namespaceObject.z.string().or(external_zod_namespaceObject.z.undefined())),
8864
8104
  measureId: external_zod_namespaceObject.z.string(),
@@ -8866,10 +8106,14 @@ const zFoldInfo = external_zod_namespaceObject.z.object({
8866
8106
  measureValue: external_zod_namespaceObject.z.string()
8867
8107
  });
8868
8108
  const zUnfoldInfo = external_zod_namespaceObject.z.object({
8109
+ encodingX: external_zod_namespaceObject.z.string(),
8110
+ encodingY: external_zod_namespaceObject.z.string(),
8111
+ encodingColor: external_zod_namespaceObject.z.string(),
8112
+ encodingColorId: external_zod_namespaceObject.z.string(),
8113
+ encodingDetail: external_zod_namespaceObject.z.string(),
8114
+ encodingAngle: external_zod_namespaceObject.z.string(),
8869
8115
  colorItems: external_zod_namespaceObject.z.array(external_zod_namespaceObject.z.string()),
8870
- groupId: external_zod_namespaceObject.z.string(),
8871
- colorIdMap: external_zod_namespaceObject.z.record(external_zod_namespaceObject.z.string(), external_zod_namespaceObject.z.string()),
8872
- groupName: external_zod_namespaceObject.z.string()
8116
+ colorIdMap: external_zod_namespaceObject.z.record(external_zod_namespaceObject.z.string(), external_zod_namespaceObject.z.string())
8873
8117
  });
8874
8118
  const zDatasetReshapeInfo = external_zod_namespaceObject.z.array(external_zod_namespaceObject.z.object({
8875
8119
  id: external_zod_namespaceObject.z.string(),
@@ -8878,16 +8122,21 @@ const zDatasetReshapeInfo = external_zod_namespaceObject.z.array(external_zod_na
8878
8122
  foldInfoList: external_zod_namespaceObject.z.array(zFoldInfo).nullish(),
8879
8123
  unfoldInfo: zUnfoldInfo
8880
8124
  }));
8881
- const zEncoding = external_zod_namespaceObject.z.array(external_zod_namespaceObject.z.object({
8125
+ const zEncoding = external_zod_namespaceObject.z.object({
8882
8126
  x: external_zod_namespaceObject.z.array(external_zod_namespaceObject.z.string()).nullish(),
8883
8127
  y: external_zod_namespaceObject.z.array(external_zod_namespaceObject.z.string()).nullish(),
8884
- color: external_zod_namespaceObject.z.array(external_zod_namespaceObject.z.string()).nullish(),
8885
- group: external_zod_namespaceObject.z.array(external_zod_namespaceObject.z.string()).nullish(),
8886
8128
  angle: external_zod_namespaceObject.z.array(external_zod_namespaceObject.z.string()).nullish(),
8887
8129
  radius: external_zod_namespaceObject.z.array(external_zod_namespaceObject.z.string()).nullish(),
8130
+ detail: external_zod_namespaceObject.z.array(external_zod_namespaceObject.z.string()).nullish(),
8131
+ color: external_zod_namespaceObject.z.array(external_zod_namespaceObject.z.string()).nullish(),
8132
+ size: external_zod_namespaceObject.z.array(external_zod_namespaceObject.z.string()).nullish(),
8888
8133
  tooltip: external_zod_namespaceObject.z.array(external_zod_namespaceObject.z.string()).nullish(),
8889
- size: external_zod_namespaceObject.z.array(external_zod_namespaceObject.z.string()).nullish()
8890
- }));
8134
+ label: external_zod_namespaceObject.z.array(external_zod_namespaceObject.z.string()).nullish(),
8135
+ row: external_zod_namespaceObject.z.array(external_zod_namespaceObject.z.string()).nullish(),
8136
+ column: external_zod_namespaceObject.z.array(external_zod_namespaceObject.z.string()).nullish(),
8137
+ group: external_zod_namespaceObject.z.array(external_zod_namespaceObject.z.string()).nullish().describe("\u5DF2\u5F03\u7528, \u8BF7\u4F7F\u7528\u989C\u8272\u66FF\u4EE3")
8138
+ });
8139
+ const zEncodings = external_zod_namespaceObject.z.array(zEncoding);
8891
8140
  const zXBandAxis = external_zod_namespaceObject.z.object({
8892
8141
  visible: external_zod_namespaceObject.z.boolean().default(true).nullish(),
8893
8142
  labelAutoHide: external_zod_namespaceObject.z.boolean().default(true).nullish(),
@@ -9150,7 +8399,6 @@ const zAreaConfig = external_zod_namespaceObject.z.object({
9150
8399
  crosshairLine: zCrosshairLine.nullish()
9151
8400
  });
9152
8401
  const zAreaPercentConfig = zAreaConfig;
9153
- const zAreaRangeConfig = zAreaConfig;
9154
8402
  const zDualAxisConfig = external_zod_namespaceObject.z.object({
9155
8403
  backgroundColor: zBackgroundColor.nullish(),
9156
8404
  label: zLabel.nullish(),
@@ -9205,7 +8453,6 @@ const zConfig = external_zod_namespaceObject.z.object({
9205
8453
  barPercent: zBarPercentConfig.nullish(),
9206
8454
  area: zAreaConfig.nullish(),
9207
8455
  areaPercent: zAreaPercentConfig.nullish(),
9208
- areaRange: zAreaRangeConfig.nullish(),
9209
8456
  scatter: zScatterConfig.nullish(),
9210
8457
  dualAxis: zDualAxisConfig.nullish(),
9211
8458
  rose: zRoseConfig.nullish(),
@@ -9644,6 +8891,7 @@ const zPivotTable = external_zod_namespaceObject.z.object({
9644
8891
  const zLine = external_zod_namespaceObject.z.object({
9645
8892
  chartType: external_zod_namespaceObject.z.literal('line'),
9646
8893
  dataset: zDataset.nullish(),
8894
+ encoding: zEncoding.nullish(),
9647
8895
  dimensions: zDimensions.nullish(),
9648
8896
  measures: zMeasureTree.nullish(),
9649
8897
  backgroundColor: zBackgroundColor.nullish(),
@@ -9668,6 +8916,7 @@ const zLine = external_zod_namespaceObject.z.object({
9668
8916
  const zColumn = external_zod_namespaceObject.z.object({
9669
8917
  chartType: external_zod_namespaceObject.z.literal('column'),
9670
8918
  dataset: zDataset.nullish(),
8919
+ encoding: zEncoding.nullish(),
9671
8920
  dimensions: zDimensions.nullish(),
9672
8921
  measures: zMeasureTree.nullish(),
9673
8922
  backgroundColor: zBackgroundColor.nullish(),
@@ -9690,6 +8939,7 @@ const zColumn = external_zod_namespaceObject.z.object({
9690
8939
  const zColumnParallel = external_zod_namespaceObject.z.object({
9691
8940
  chartType: external_zod_namespaceObject.z.literal('columnParallel'),
9692
8941
  dataset: zDataset.nullish(),
8942
+ encoding: zEncoding.nullish(),
9693
8943
  dimensions: zDimensions.nullish(),
9694
8944
  measures: zMeasureTree.nullish(),
9695
8945
  backgroundColor: zBackgroundColor.nullish(),
@@ -9712,6 +8962,7 @@ const zColumnParallel = external_zod_namespaceObject.z.object({
9712
8962
  const zColumnPercent = external_zod_namespaceObject.z.object({
9713
8963
  chartType: external_zod_namespaceObject.z.literal('columnPercent'),
9714
8964
  dataset: zDataset.nullish(),
8965
+ encoding: zEncoding.nullish(),
9715
8966
  dimensions: zDimensions.nullish(),
9716
8967
  measures: zMeasureTree.nullish(),
9717
8968
  backgroundColor: zBackgroundColor.nullish(),
@@ -9734,6 +8985,7 @@ const zColumnPercent = external_zod_namespaceObject.z.object({
9734
8985
  const zBar = external_zod_namespaceObject.z.object({
9735
8986
  chartType: external_zod_namespaceObject.z.literal('bar'),
9736
8987
  dataset: zDataset.nullish(),
8988
+ encoding: zEncoding.nullish(),
9737
8989
  dimensions: zDimensions.nullish(),
9738
8990
  measures: zMeasureTree.nullish(),
9739
8991
  backgroundColor: zBackgroundColor.nullish(),
@@ -9756,6 +9008,7 @@ const zBar = external_zod_namespaceObject.z.object({
9756
9008
  const zBarParallel = external_zod_namespaceObject.z.object({
9757
9009
  chartType: external_zod_namespaceObject.z.literal('barParallel'),
9758
9010
  dataset: zDataset.nullish(),
9011
+ encoding: zEncoding.nullish(),
9759
9012
  dimensions: zDimensions.nullish(),
9760
9013
  measures: zMeasureTree.nullish(),
9761
9014
  backgroundColor: zBackgroundColor.nullish(),
@@ -9778,6 +9031,7 @@ const zBarParallel = external_zod_namespaceObject.z.object({
9778
9031
  const zBarPercent = external_zod_namespaceObject.z.object({
9779
9032
  chartType: external_zod_namespaceObject.z.literal('barPercent'),
9780
9033
  dataset: zDataset.nullish(),
9034
+ encoding: zEncoding.nullish(),
9781
9035
  dimensions: zDimensions.nullish(),
9782
9036
  measures: zMeasureTree.nullish(),
9783
9037
  backgroundColor: zBackgroundColor.nullish(),
@@ -9800,6 +9054,7 @@ const zBarPercent = external_zod_namespaceObject.z.object({
9800
9054
  const zArea = external_zod_namespaceObject.z.object({
9801
9055
  chartType: external_zod_namespaceObject.z.literal('area'),
9802
9056
  dataset: zDataset.nullish(),
9057
+ encoding: zEncoding.nullish(),
9803
9058
  dimensions: zDimensions.nullish(),
9804
9059
  measures: zMeasureTree.nullish(),
9805
9060
  backgroundColor: zBackgroundColor.nullish(),
@@ -9823,6 +9078,7 @@ const zArea = external_zod_namespaceObject.z.object({
9823
9078
  const zAreaPercent = external_zod_namespaceObject.z.object({
9824
9079
  chartType: external_zod_namespaceObject.z.literal('areaPercent'),
9825
9080
  dataset: zDataset.nullish(),
9081
+ encoding: zEncoding.nullish(),
9826
9082
  dimensions: zDimensions.nullish(),
9827
9083
  measures: zMeasureTree.nullish(),
9828
9084
  backgroundColor: zBackgroundColor.nullish(),
@@ -9843,31 +9099,13 @@ const zAreaPercent = external_zod_namespaceObject.z.object({
9843
9099
  annotationArea: external_zod_namespaceObject.z.array(zAnnotationArea).or(zAnnotationArea).nullish(),
9844
9100
  locale: zLocale.nullish()
9845
9101
  });
9846
- const zAreaRange = external_zod_namespaceObject.z.object({
9847
- chartType: external_zod_namespaceObject.z.literal('areaRange'),
9848
- dataset: zDataset.nullish(),
9849
- dimensions: zDimensions.nullish(),
9850
- measures: zMeasureTree.nullish(),
9851
- backgroundColor: zBackgroundColor.nullish(),
9852
- label: zLabel.nullish(),
9853
- xAxis: zXBandAxis.nullish(),
9854
- yAxis: zYLinearAxis.nullish(),
9855
- crosshairLine: zCrosshairLine.nullish(),
9856
- theme: zTheme.nullish(),
9857
- pointStyle: external_zod_namespaceObject.z.array(zPointStyle).or(zPointStyle).nullish(),
9858
- lineStyle: external_zod_namespaceObject.z.array(zLineStyle).or(zLineStyle).nullish(),
9859
- areaStyle: external_zod_namespaceObject.z.array(zAreaStyle).or(zAreaStyle).nullish(),
9860
- annotationPoint: external_zod_namespaceObject.z.array(zAnnotationPoint).or(zAnnotationPoint).nullish(),
9861
- annotationVerticalLine: external_zod_namespaceObject.z.array(zAnnotationVerticalLine).or(zAnnotationVerticalLine).nullish(),
9862
- annotationHorizontalLine: external_zod_namespaceObject.z.array(zAnnotationHorizontalLine).or(zAnnotationHorizontalLine).nullish(),
9863
- annotationArea: external_zod_namespaceObject.z.array(zAnnotationArea).or(zAnnotationArea).nullish(),
9864
- locale: zLocale.nullish()
9865
- });
9866
9102
  const zScatter = external_zod_namespaceObject.z.object({
9867
9103
  chartType: external_zod_namespaceObject.z.literal('scatter'),
9868
9104
  dataset: zDataset.nullish(),
9105
+ encoding: zEncoding.nullish(),
9869
9106
  dimensions: zDimensions.nullish(),
9870
9107
  measures: zMeasureTree.nullish(),
9108
+ scatterMeasures: zScatterMeasures.nullish(),
9871
9109
  backgroundColor: zBackgroundColor.nullish(),
9872
9110
  color: zColor.nullish(),
9873
9111
  label: zLabel.nullish(),
@@ -9917,6 +9155,7 @@ const zDualAxis = external_zod_namespaceObject.z.object({
9917
9155
  const zRose = external_zod_namespaceObject.z.object({
9918
9156
  chartType: external_zod_namespaceObject.z.literal('rose'),
9919
9157
  dataset: zDataset.nullish(),
9158
+ encoding: zEncoding.nullish(),
9920
9159
  dimensions: zDimensions.nullish(),
9921
9160
  measures: zMeasureTree.nullish(),
9922
9161
  backgroundColor: zBackgroundColor.nullish(),
@@ -9930,6 +9169,7 @@ const zRose = external_zod_namespaceObject.z.object({
9930
9169
  const zRoseParallel = external_zod_namespaceObject.z.object({
9931
9170
  chartType: external_zod_namespaceObject.z.literal('roseParallel'),
9932
9171
  dataset: zDataset.nullish(),
9172
+ encoding: zEncoding.nullish(),
9933
9173
  dimensions: zDimensions.nullish(),
9934
9174
  measures: zMeasureTree.nullish(),
9935
9175
  backgroundColor: zBackgroundColor.nullish(),
@@ -9943,6 +9183,7 @@ const zRoseParallel = external_zod_namespaceObject.z.object({
9943
9183
  const zPie = external_zod_namespaceObject.z.object({
9944
9184
  chartType: external_zod_namespaceObject.z.literal('pie'),
9945
9185
  dataset: zDataset.nullish(),
9186
+ encoding: zEncoding.nullish(),
9946
9187
  dimensions: zDimensions.nullish(),
9947
9188
  measures: zMeasureTree.nullish(),
9948
9189
  backgroundColor: zBackgroundColor.nullish(),
@@ -9956,6 +9197,7 @@ const zPie = external_zod_namespaceObject.z.object({
9956
9197
  const zDonut = external_zod_namespaceObject.z.object({
9957
9198
  chartType: external_zod_namespaceObject.z.literal('donut'),
9958
9199
  dataset: zDataset.nullish(),
9200
+ encoding: zEncoding.nullish(),
9959
9201
  dimensions: zDimensions.nullish(),
9960
9202
  measures: zMeasureTree.nullish(),
9961
9203
  backgroundColor: zBackgroundColor.nullish(),
@@ -9969,6 +9211,7 @@ const zDonut = external_zod_namespaceObject.z.object({
9969
9211
  const zRadar = external_zod_namespaceObject.z.object({
9970
9212
  chartType: external_zod_namespaceObject.z.literal('radar'),
9971
9213
  dataset: zDataset.nullish(),
9214
+ encoding: zEncoding.nullish(),
9972
9215
  dimensions: zDimensions.nullish(),
9973
9216
  measures: zMeasureTree.nullish(),
9974
9217
  backgroundColor: zBackgroundColor.nullish(),
@@ -9982,6 +9225,7 @@ const zRadar = external_zod_namespaceObject.z.object({
9982
9225
  const zFunnel = external_zod_namespaceObject.z.object({
9983
9226
  chartType: external_zod_namespaceObject.z.literal('funnel'),
9984
9227
  dataset: zDataset.nullish(),
9228
+ encoding: zEncoding.nullish(),
9985
9229
  dimensions: zDimensions.nullish(),
9986
9230
  measures: zMeasureTree.nullish(),
9987
9231
  backgroundColor: zBackgroundColor.nullish(),
@@ -10017,7 +9261,6 @@ const zVSeed = external_zod_namespaceObject.z.discriminatedUnion('chartType', [
10017
9261
  zBarPercent,
10018
9262
  zArea,
10019
9263
  zAreaPercent,
10020
- zAreaRange,
10021
9264
  zScatter,
10022
9265
  zDualAxis,
10023
9266
  zPie,
@@ -10035,6 +9278,7 @@ const zAdvancedVSeed = external_zod_namespaceObject.z.object({
10035
9278
  dimensions: zDimensionTree,
10036
9279
  measures: zMeasureTree,
10037
9280
  encoding: zEncoding,
9281
+ encodings: zEncodings,
10038
9282
  config: zConfig,
10039
9283
  analysis: zAnalysis,
10040
9284
  theme: zTheme,
@@ -10043,21 +9287,28 @@ const zAdvancedVSeed = external_zod_namespaceObject.z.object({
10043
9287
  annotation: zAnnotation,
10044
9288
  locale: zLocale
10045
9289
  });
9290
+ exports.AngleEncoding = __webpack_exports__.AngleEncoding;
10046
9291
  exports.Builder = __webpack_exports__.Builder;
9292
+ exports.ColorEncoding = __webpack_exports__.ColorEncoding;
9293
+ exports.ColorIdEncoding = __webpack_exports__.ColorIdEncoding;
9294
+ exports.DetailEncoding = __webpack_exports__.DetailEncoding;
10047
9295
  exports.FoldMeasureId = __webpack_exports__.FoldMeasureId;
10048
9296
  exports.FoldMeasureName = __webpack_exports__.FoldMeasureName;
10049
9297
  exports.FoldMeasureValue = __webpack_exports__.FoldMeasureValue;
10050
9298
  exports.FoldPrimaryMeasureValue = __webpack_exports__.FoldPrimaryMeasureValue;
10051
9299
  exports.FoldSecondaryMeasureValue = __webpack_exports__.FoldSecondaryMeasureValue;
9300
+ exports.FoldXMeasureValue = __webpack_exports__.FoldXMeasureValue;
9301
+ exports.FoldYMeasureValue = __webpack_exports__.FoldYMeasureValue;
9302
+ exports.MeasureName = __webpack_exports__.MeasureName;
10052
9303
  exports.ORIGINAL_DATA = __webpack_exports__.ORIGINAL_DATA;
10053
9304
  exports.Separator = __webpack_exports__.Separator;
10054
9305
  exports.UnfoldDimensionGroup = __webpack_exports__.UnfoldDimensionGroup;
10055
9306
  exports.UnfoldDimensionGroupId = __webpack_exports__.UnfoldDimensionGroupId;
9307
+ exports.XEncoding = __webpack_exports__.XEncoding;
9308
+ exports.YEncoding = __webpack_exports__.YEncoding;
10056
9309
  exports.areaAdvancedPipeline = __webpack_exports__.areaAdvancedPipeline;
10057
9310
  exports.areaPercentAdvancedPipeline = __webpack_exports__.areaPercentAdvancedPipeline;
10058
9311
  exports.areaPercentSpecPipeline = __webpack_exports__.areaPercentSpecPipeline;
10059
- exports.areaRangeAdvancedPipeline = __webpack_exports__.areaRangeAdvancedPipeline;
10060
- exports.areaRangeSpecPipeline = __webpack_exports__.areaRangeSpecPipeline;
10061
9312
  exports.areaSpecPipeline = __webpack_exports__.areaSpecPipeline;
10062
9313
  exports.autoFormatter = __webpack_exports__.autoFormatter;
10063
9314
  exports.autoNumFormatter = __webpack_exports__.autoNumFormatter;
@@ -10076,11 +9327,7 @@ exports.columnSpecPipeline = __webpack_exports__.columnSpecPipeline;
10076
9327
  exports.createFormatter = __webpack_exports__.createFormatter;
10077
9328
  exports.createNumFormatter = __webpack_exports__.createNumFormatter;
10078
9329
  exports.darkTheme = __webpack_exports__.darkTheme;
10079
- exports.dataReshapeFor1D = __webpack_exports__.dataReshapeFor1D;
10080
- exports.dataReshapeFor1D1M = __webpack_exports__.dataReshapeFor1D1M;
10081
- exports.dataReshapeFor1D2M = __webpack_exports__.dataReshapeFor1D2M;
10082
- exports.dataReshapeFor2D1M = __webpack_exports__.dataReshapeFor2D1M;
10083
- exports.dataReshapeFor2D1M0Name = __webpack_exports__.dataReshapeFor2D1M0Name;
9330
+ exports.dataReshapeByEncoding = __webpack_exports__.dataReshapeByEncoding;
10084
9331
  exports.donutAdvancedPipeline = __webpack_exports__.donutAdvancedPipeline;
10085
9332
  exports.donutSpecPipeline = __webpack_exports__.donutSpecPipeline;
10086
9333
  exports.dualAxisAdvancedPipeline = __webpack_exports__.dualAxisAdvancedPipeline;
@@ -10128,7 +9375,6 @@ exports.radarSpecPipeline = __webpack_exports__.radarSpecPipeline;
10128
9375
  exports.registerAll = __webpack_exports__.registerAll;
10129
9376
  exports.registerArea = __webpack_exports__.registerArea;
10130
9377
  exports.registerAreaPercent = __webpack_exports__.registerAreaPercent;
10131
- exports.registerAreaRange = __webpack_exports__.registerAreaRange;
10132
9378
  exports.registerBar = __webpack_exports__.registerBar;
10133
9379
  exports.registerBarParallel = __webpack_exports__.registerBarParallel;
10134
9380
  exports.registerBarPercent = __webpack_exports__.registerBarPercent;
@@ -10172,8 +9418,6 @@ exports.zArea = __webpack_exports__.zArea;
10172
9418
  exports.zAreaConfig = __webpack_exports__.zAreaConfig;
10173
9419
  exports.zAreaPercent = __webpack_exports__.zAreaPercent;
10174
9420
  exports.zAreaPercentConfig = __webpack_exports__.zAreaPercentConfig;
10175
- exports.zAreaRange = __webpack_exports__.zAreaRange;
10176
- exports.zAreaRangeConfig = __webpack_exports__.zAreaRangeConfig;
10177
9421
  exports.zAreaStyle = __webpack_exports__.zAreaStyle;
10178
9422
  exports.zAxis = __webpack_exports__.zAxis;
10179
9423
  exports.zBackgroundColor = __webpack_exports__.zBackgroundColor;
@@ -10213,6 +9457,7 @@ exports.zDualChartType = __webpack_exports__.zDualChartType;
10213
9457
  exports.zDualMeasure = __webpack_exports__.zDualMeasure;
10214
9458
  exports.zDualMeasures = __webpack_exports__.zDualMeasures;
10215
9459
  exports.zEncoding = __webpack_exports__.zEncoding;
9460
+ exports.zEncodings = __webpack_exports__.zEncodings;
10216
9461
  exports.zFoldInfo = __webpack_exports__.zFoldInfo;
10217
9462
  exports.zFunnel = __webpack_exports__.zFunnel;
10218
9463
  exports.zFunnelConfig = __webpack_exports__.zFunnelConfig;
@@ -10244,6 +9489,8 @@ exports.zRoseParallel = __webpack_exports__.zRoseParallel;
10244
9489
  exports.zRoseParallelConfig = __webpack_exports__.zRoseParallelConfig;
10245
9490
  exports.zScatter = __webpack_exports__.zScatter;
10246
9491
  exports.zScatterConfig = __webpack_exports__.zScatterConfig;
9492
+ exports.zScatterMeasure = __webpack_exports__.zScatterMeasure;
9493
+ exports.zScatterMeasures = __webpack_exports__.zScatterMeasures;
10247
9494
  exports.zSort = __webpack_exports__.zSort;
10248
9495
  exports.zSortLegend = __webpack_exports__.zSortLegend;
10249
9496
  exports.zStackCornerRadius = __webpack_exports__.zStackCornerRadius;
@@ -10258,21 +9505,28 @@ exports.zXLinearAxis = __webpack_exports__.zXLinearAxis;
10258
9505
  exports.zYBandAxis = __webpack_exports__.zYBandAxis;
10259
9506
  exports.zYLinearAxis = __webpack_exports__.zYLinearAxis;
10260
9507
  for(var __webpack_i__ in __webpack_exports__)if (-1 === [
9508
+ "AngleEncoding",
10261
9509
  "Builder",
9510
+ "ColorEncoding",
9511
+ "ColorIdEncoding",
9512
+ "DetailEncoding",
10262
9513
  "FoldMeasureId",
10263
9514
  "FoldMeasureName",
10264
9515
  "FoldMeasureValue",
10265
9516
  "FoldPrimaryMeasureValue",
10266
9517
  "FoldSecondaryMeasureValue",
9518
+ "FoldXMeasureValue",
9519
+ "FoldYMeasureValue",
9520
+ "MeasureName",
10267
9521
  "ORIGINAL_DATA",
10268
9522
  "Separator",
10269
9523
  "UnfoldDimensionGroup",
10270
9524
  "UnfoldDimensionGroupId",
9525
+ "XEncoding",
9526
+ "YEncoding",
10271
9527
  "areaAdvancedPipeline",
10272
9528
  "areaPercentAdvancedPipeline",
10273
9529
  "areaPercentSpecPipeline",
10274
- "areaRangeAdvancedPipeline",
10275
- "areaRangeSpecPipeline",
10276
9530
  "areaSpecPipeline",
10277
9531
  "autoFormatter",
10278
9532
  "autoNumFormatter",
@@ -10291,11 +9545,7 @@ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
10291
9545
  "createFormatter",
10292
9546
  "createNumFormatter",
10293
9547
  "darkTheme",
10294
- "dataReshapeFor1D",
10295
- "dataReshapeFor1D1M",
10296
- "dataReshapeFor1D2M",
10297
- "dataReshapeFor2D1M",
10298
- "dataReshapeFor2D1M0Name",
9548
+ "dataReshapeByEncoding",
10299
9549
  "donutAdvancedPipeline",
10300
9550
  "donutSpecPipeline",
10301
9551
  "dualAxisAdvancedPipeline",
@@ -10343,7 +9593,6 @@ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
10343
9593
  "registerAll",
10344
9594
  "registerArea",
10345
9595
  "registerAreaPercent",
10346
- "registerAreaRange",
10347
9596
  "registerBar",
10348
9597
  "registerBarParallel",
10349
9598
  "registerBarPercent",
@@ -10387,8 +9636,6 @@ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
10387
9636
  "zAreaConfig",
10388
9637
  "zAreaPercent",
10389
9638
  "zAreaPercentConfig",
10390
- "zAreaRange",
10391
- "zAreaRangeConfig",
10392
9639
  "zAreaStyle",
10393
9640
  "zAxis",
10394
9641
  "zBackgroundColor",
@@ -10428,6 +9675,7 @@ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
10428
9675
  "zDualMeasure",
10429
9676
  "zDualMeasures",
10430
9677
  "zEncoding",
9678
+ "zEncodings",
10431
9679
  "zFoldInfo",
10432
9680
  "zFunnel",
10433
9681
  "zFunnelConfig",
@@ -10459,6 +9707,8 @@ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
10459
9707
  "zRoseParallelConfig",
10460
9708
  "zScatter",
10461
9709
  "zScatterConfig",
9710
+ "zScatterMeasure",
9711
+ "zScatterMeasures",
10462
9712
  "zSort",
10463
9713
  "zSortLegend",
10464
9714
  "zStackCornerRadius",