@visactor/vseed 0.1.6 → 0.1.7

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 (70) hide show
  1. package/dist/builder/builder/builder.d.ts +0 -2
  2. package/dist/index.cjs +327 -313
  3. package/dist/index.cjs.map +1 -1
  4. package/dist/index.js +327 -313
  5. package/dist/index.js.map +1 -1
  6. package/dist/pipeline/advanced/chart/pipes/encoding/bar.d.ts +19 -0
  7. package/dist/pipeline/advanced/chart/pipes/encoding/column.d.ts +9 -9
  8. package/dist/pipeline/advanced/chart/pipes/encoding/dualAxis.d.ts +19 -0
  9. package/dist/pipeline/advanced/chart/pipes/encoding/funnel.d.ts +17 -0
  10. package/dist/pipeline/advanced/chart/pipes/encoding/heatmap.d.ts +19 -0
  11. package/dist/pipeline/advanced/chart/pipes/encoding/line.d.ts +3 -2
  12. package/dist/pipeline/advanced/chart/pipes/encoding/pie.d.ts +18 -0
  13. package/dist/pipeline/advanced/chart/pipes/encoding/radar.d.ts +19 -0
  14. package/dist/pipeline/advanced/chart/pipes/encoding/rose.d.ts +19 -0
  15. package/dist/pipeline/advanced/chart/pipes/encoding/scatter.d.ts +18 -0
  16. package/dist/pipeline/advanced/table/pipes/{init/autoDimensions.d.ts → default/defaultDimensions.d.ts} +1 -1
  17. package/dist/pipeline/advanced/table/pipes/{init/autoMeasures.d.ts → default/defaultMeasureName.d.ts} +1 -1
  18. package/dist/pipeline/advanced/table/pipes/default/defaultMeasures.d.ts +5 -0
  19. package/dist/pipeline/advanced/table/pipes/default/index.d.ts +3 -0
  20. package/dist/pipeline/advanced/table/pipes/encoding/index.d.ts +1 -0
  21. package/dist/pipeline/advanced/table/pipes/{init/autoPivotMeasures.d.ts → encoding/pivotTable.d.ts} +1 -1
  22. package/dist/pipeline/advanced/table/pipes/index.d.ts +3 -0
  23. package/dist/pipeline/advanced/table/pipes/init/index.d.ts +0 -3
  24. package/dist/types/advancedVSeed.d.ts +0 -5
  25. package/dist/types/chartType/area/area.d.ts +1 -2
  26. package/dist/types/chartType/area/zArea.d.ts +0 -5
  27. package/dist/types/chartType/areaPercent/areaPercent.d.ts +1 -3
  28. package/dist/types/chartType/areaPercent/zAreaPercent.d.ts +0 -5
  29. package/dist/types/chartType/bar/bar.d.ts +17 -1
  30. package/dist/types/chartType/bar/zBar.d.ts +0 -5
  31. package/dist/types/chartType/barParallel/barParallel.d.ts +17 -1
  32. package/dist/types/chartType/barParallel/zBarParallel.d.ts +0 -5
  33. package/dist/types/chartType/barPercent/barPercent.d.ts +17 -1
  34. package/dist/types/chartType/barPercent/zBarPercent.d.ts +0 -5
  35. package/dist/types/chartType/column/column.d.ts +2 -2
  36. package/dist/types/chartType/column/zColumn.d.ts +0 -5
  37. package/dist/types/chartType/columnParallel/columnParallel.d.ts +2 -3
  38. package/dist/types/chartType/columnParallel/zColumnParallel.d.ts +0 -5
  39. package/dist/types/chartType/columnPercent/columnPercent.d.ts +2 -2
  40. package/dist/types/chartType/columnPercent/zColumnPercent.d.ts +0 -5
  41. package/dist/types/chartType/donut/donut.d.ts +16 -1
  42. package/dist/types/chartType/donut/zDonut.d.ts +0 -5
  43. package/dist/types/chartType/dualAxis/dualAxis.d.ts +17 -1
  44. package/dist/types/chartType/dualAxis/zDualAxis.d.ts +0 -5
  45. package/dist/types/chartType/funnel/funnel.d.ts +15 -1
  46. package/dist/types/chartType/funnel/zFunnel.d.ts +0 -5
  47. package/dist/types/chartType/heatmap/heatmap.d.ts +17 -1
  48. package/dist/types/chartType/heatmap/zHeatmap.d.ts +0 -5
  49. package/dist/types/chartType/line/line.d.ts +8 -12
  50. package/dist/types/chartType/line/zLine.d.ts +0 -5
  51. package/dist/types/chartType/pie/pie.d.ts +16 -1
  52. package/dist/types/chartType/pie/zPie.d.ts +0 -5
  53. package/dist/types/chartType/pivotTable/pivotTable.d.ts +10 -3
  54. package/dist/types/chartType/pivotTable/zPivotTable.d.ts +0 -5
  55. package/dist/types/chartType/radar/radar.d.ts +17 -1
  56. package/dist/types/chartType/radar/zRadar.d.ts +0 -5
  57. package/dist/types/chartType/rose/rose.d.ts +17 -1
  58. package/dist/types/chartType/rose/zRose.d.ts +0 -5
  59. package/dist/types/chartType/roseParallel/roseParallel.d.ts +17 -1
  60. package/dist/types/chartType/roseParallel/zRoseParallel.d.ts +0 -5
  61. package/dist/types/chartType/scatter/scatter.d.ts +16 -1
  62. package/dist/types/chartType/scatter/zScatter.d.ts +0 -5
  63. package/dist/types/chartType/table/table.d.ts +2 -0
  64. package/dist/types/chartType/table/zTable.d.ts +0 -5
  65. package/dist/types/properties/dimensions/dimensions.d.ts +0 -4
  66. package/dist/types/properties/dimensions/zDimensions.d.ts +0 -15
  67. package/dist/types/zVseed.d.ts +0 -100
  68. package/dist/umd/index.js +327 -313
  69. package/dist/umd/index.js.map +1 -1
  70. package/package.json +2 -2
package/dist/index.js CHANGED
@@ -167,33 +167,35 @@ const initAdvancedVSeed = (advancedVSeed, context)=>{
167
167
  locale: locale || 'zh-CN'
168
168
  };
169
169
  };
170
- const autoMeasures = (advancedVSeed, context)=>{
171
- const result = {
172
- ...advancedVSeed
173
- };
170
+ const defaultMeasures_defaultMeasures = (advancedVSeed, context)=>{
174
171
  const { vseed } = context;
175
172
  const { measures, dataset } = vseed;
173
+ if (measures && measures.length > 0) return {
174
+ ...advancedVSeed,
175
+ measures
176
+ };
176
177
  if (!dataset) throw new Error('dataset is required');
177
- if (0 === dataset.length) return result;
178
- if (measures) {
179
- result.measures = measures;
180
- return result;
181
- }
178
+ if (0 === dataset.length) return {
179
+ ...advancedVSeed,
180
+ measures: []
181
+ };
182
182
  const top100dataset = dataset.slice(0, 100);
183
183
  const sample = top100dataset.reduce((prev, cur)=>({
184
184
  ...prev,
185
185
  ...cur
186
186
  }), {});
187
- result.measures = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
187
+ const defaultMeasures = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
188
188
  '',
189
189
  null,
190
190
  void 0
191
191
  ].includes(key)).map((measure)=>({
192
192
  id: measure,
193
- alias: measure,
194
- encoding: 'column'
193
+ alias: measure
195
194
  }));
196
- return result;
195
+ return {
196
+ ...advancedVSeed,
197
+ measures: defaultMeasures
198
+ };
197
199
  };
198
200
  const preorderTraverse = (tree, callback)=>{
199
201
  if (!tree || 0 === tree.length) return;
@@ -247,37 +249,36 @@ const findAllMeasures = (measures = [])=>{
247
249
  });
248
250
  return result;
249
251
  };
250
- const autoDimensions = (advancedVSeed, context)=>{
252
+ const defaultDimensions = (advancedVSeed, context)=>{
251
253
  const result = {
252
254
  ...advancedVSeed
253
255
  };
254
256
  const { vseed } = context;
255
257
  const { dimensions, dataset } = vseed;
256
- const measures = findAllMeasures(advancedVSeed.measures);
258
+ if (dimensions && dimensions.length > 0) return {
259
+ ...result,
260
+ dimensions
261
+ };
257
262
  if (!dataset) throw new Error('dataset is required');
258
263
  if (0 === dataset.length) return result;
259
- if (dimensions) {
260
- result.dimensions = dimensions.map((dim)=>({
261
- location: 'dimension',
262
- ...dim
263
- }));
264
- return result;
265
- }
264
+ const measures = findAllMeasures(advancedVSeed.measures);
266
265
  const top100dataset = dataset.slice(0, 100);
267
266
  const sample = top100dataset.reduce((prev, cur)=>({
268
267
  ...prev,
269
268
  ...cur
270
269
  }), {});
271
- result.dimensions = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'string' == typeof item[key]) && ![
270
+ const newDimensions = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'string' == typeof item[key]) && ![
272
271
  '',
273
272
  null,
274
273
  void 0
275
274
  ].includes(key) && !measures.some((measure)=>measure.id === key)).map((dim)=>({
276
275
  id: dim,
277
- alias: dim,
278
- encoding: 'column'
276
+ alias: dim
279
277
  }));
280
- return result;
278
+ return {
279
+ ...result,
280
+ dimensions: newDimensions
281
+ };
281
282
  };
282
283
  const records_records = (advancedVSeed, context)=>{
283
284
  const { vseed } = context;
@@ -349,8 +350,8 @@ const mergeArray = (arr, themeItem)=>{
349
350
  };
350
351
  const tableAdvancedPipeline = [
351
352
  initAdvancedVSeed,
352
- autoMeasures,
353
- autoDimensions,
353
+ defaultMeasures_defaultMeasures,
354
+ defaultDimensions,
354
355
  records_records,
355
356
  tableConfig_tableConfig,
356
357
  theme_theme
@@ -571,9 +572,9 @@ const bodyStyle = (spec, context)=>{
571
572
  borderColor: borderColor,
572
573
  borderLineWidth: 1,
573
574
  padding: [
574
- 8.6,
575
+ 8,
575
576
  12,
576
- 8.6,
577
+ 8,
577
578
  12
578
579
  ],
579
580
  textAlign: 'right',
@@ -686,35 +687,6 @@ const registerTable = ()=>{
686
687
  Builder._advancedPipelineMap.table = tableAdvancedPipeline;
687
688
  Builder._specPipelineMap.table = tableSpecPipeline;
688
689
  };
689
- const autoPivotMeasures = (advancedVSeed, context)=>{
690
- const result = {
691
- ...advancedVSeed
692
- };
693
- const { vseed } = context;
694
- const { dataset } = vseed;
695
- const measures = findAllMeasures(vseed.measures);
696
- if (!dataset) throw new Error('dataset is required');
697
- if (0 === dataset.length) return result;
698
- if (vseed.measures) {
699
- result.measures = findAllMeasures(measures);
700
- return result;
701
- }
702
- const top100dataset = dataset.slice(0, 100);
703
- const sample = top100dataset.reduce((prev, cur)=>({
704
- ...prev,
705
- ...cur
706
- }), {});
707
- result.measures = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
708
- '',
709
- null,
710
- void 0
711
- ].includes(key)).map((measure)=>({
712
- id: measure,
713
- alias: measure,
714
- encoding: 'detail'
715
- }));
716
- return result;
717
- };
718
690
  const ORIGINAL_DATA = '__OriginalData__';
719
691
  const Separator = '-';
720
692
  const FoldMeasureName = '__MeaName__';
@@ -731,88 +703,62 @@ const AngleEncoding = '__Dim_Angle__';
731
703
  const DetailEncoding = '__Dim_Detail__';
732
704
  const ColorEncoding = '__Dim_Color__';
733
705
  const ColorIdEncoding = '__Dim_ColorId__';
734
- const findAllDimensions = (dimensions = [])=>{
735
- if (!dimensions) return [];
736
- const result = [];
737
- preorderTraverse(dimensions, (node)=>{
738
- if (!('children' in node)) result.push(node);
739
- return false;
740
- });
741
- return result;
742
- };
743
- const autoPivotDimensions = (advancedVSeed, context)=>{
706
+ const defaultMeasureName = (advancedVSeed)=>{
744
707
  const result = {
745
708
  ...advancedVSeed
746
709
  };
747
- const { vseed } = context;
748
- const { dimensions, dataset } = vseed;
749
- const measures = findAllMeasures(advancedVSeed.measures);
750
710
  const MeaName = {
751
711
  id: MeasureName,
752
712
  alias: intl.i18n`指标名称`
753
713
  };
754
- if (!dataset) throw new Error('dataset is required');
755
- if (0 === dataset.length) return result;
756
- if (dimensions) {
757
- const newDimensions = findAllDimensions(dimensions);
758
- if (!newDimensions.some((dim)=>dim.id === MeasureName)) newDimensions.push(MeaName);
759
- result.dimensions = newDimensions.map((item, index)=>{
760
- if ('row' === item.encoding || 'column' === item.encoding) return item;
761
- if ('rowDimension' === item.location || 'columnDimension' === item.location) return item;
762
- return {
763
- ...item,
764
- encoding: index % 2 === 0 ? 'column' : 'row'
765
- };
766
- });
767
- return result;
768
- }
769
- const top100dataset = dataset.slice(0, 100);
770
- const sample = top100dataset.reduce((prev, cur)=>({
771
- ...prev,
772
- ...cur
773
- }), {});
774
- const newDimensions = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'string' == typeof item[key]) && ![
775
- '',
776
- null,
777
- void 0
778
- ].includes(key) && !measures.some((measure)=>measure.id === key));
779
- result.dimensions = newDimensions.map((dim)=>({
780
- id: dim,
781
- alias: dim
782
- }));
783
- result.dimensions.push(MeaName);
784
- result.dimensions = result.dimensions.map((dim, index)=>({
785
- ...dim,
786
- encoding: index % 2 === 0 ? 'column' : 'row'
787
- }));
714
+ if (!result.dimensions?.some((dim)=>dim.id === MeasureName)) result.dimensions?.push(MeaName);
788
715
  return result;
789
716
  };
790
- const pivotTableConfig = (advancedVSeed, context)=>{
791
- const { vseed } = context;
792
- const { chartType } = vseed;
793
- const result = {
794
- ...advancedVSeed
795
- };
796
- const config = pick(vseed, [
797
- 'backgroundColor',
798
- 'bodyFontSize',
799
- 'bodyFontColor',
800
- 'bodyBackgroundColor',
801
- 'headerFontSize',
802
- 'headerFontColor',
803
- 'headerBackgroundColor',
804
- 'hoverHeaderBackgroundColor',
805
- 'hoverHeaderInlineBackgroundColor',
806
- 'selectedBorderColor',
807
- 'selectedBackgroundColor'
808
- ]);
809
- result.config = {
810
- ...result.config || {},
811
- [chartType]: {
812
- ...config
813
- }
717
+ const encodingForPivotTable = (advancedVSeed)=>{
718
+ const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
719
+ const measures = findAllMeasures(vseedMeasures);
720
+ const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
721
+ const hasMeasureEncoding = measures.some((item)=>item.encoding);
722
+ const encoding = {};
723
+ if (hasDimensionEncoding) generateDimensionEncoding(dimensions, encoding);
724
+ else generateDefaultDimensionEncoding(dimensions, encoding);
725
+ if (hasMeasureEncoding) generateMeasureEncoding(measures, encoding);
726
+ else generateDefaultMeasureEncoding(measures, encoding);
727
+ return {
728
+ ...advancedVSeed,
729
+ encoding
814
730
  };
815
- return result;
731
+ };
732
+ const generateDefaultDimensionEncoding = (dimensions, encoding)=>{
733
+ const uniqueDimIds = unique(dimensions.map((d)=>d.id));
734
+ encoding.tooltip = uniqueDimIds;
735
+ encoding.row = [];
736
+ encoding.column = [];
737
+ uniqueDimIds.forEach((item, index)=>{
738
+ if (index % 2 === 0) encoding.column.push(item);
739
+ else encoding.row.push(item);
740
+ });
741
+ };
742
+ const generateDimensionEncoding = (dimensions, encoding)=>{
743
+ const uniqueDimIds = unique(dimensions.map((d)=>d.id));
744
+ encoding.tooltip = uniqueDimIds;
745
+ encoding.row = [];
746
+ encoding.column = [];
747
+ dimensions.forEach((dim, index)=>{
748
+ const id = dim.id;
749
+ if ('row' === dim.encoding) encoding.row.push(id);
750
+ else if ('column' === dim.encoding) encoding.column.push(id);
751
+ else if (index % 2 === 0) encoding.column.push(id);
752
+ else encoding.row.push(id);
753
+ });
754
+ };
755
+ const generateDefaultMeasureEncoding = (measures, encoding)=>{
756
+ encoding.tooltip = unique(measures.map((item)=>item.id));
757
+ encoding.detail = unique(measures.filter((item)=>'detail' === item.encoding || !item.encoding).map((item)=>item.id));
758
+ };
759
+ const generateMeasureEncoding = (measures, encoding)=>{
760
+ encoding.tooltip = measures.map((item)=>item.id);
761
+ encoding.detail = unique(measures.filter((item)=>'detail' === item.encoding || !item.encoding).map((item)=>item.id));
816
762
  };
817
763
  const foldMeasures = (dataset, measures, options)=>{
818
764
  const { measureId, measureName, measureValue, colorMeasureId } = options || {};
@@ -892,10 +838,39 @@ const reshapePivotTable = (advancedVSeed, context)=>{
892
838
  measures
893
839
  };
894
840
  };
841
+ const pivotTableConfig = (advancedVSeed, context)=>{
842
+ const { vseed } = context;
843
+ const { chartType } = vseed;
844
+ const result = {
845
+ ...advancedVSeed
846
+ };
847
+ const config = pick(vseed, [
848
+ 'backgroundColor',
849
+ 'bodyFontSize',
850
+ 'bodyFontColor',
851
+ 'bodyBackgroundColor',
852
+ 'headerFontSize',
853
+ 'headerFontColor',
854
+ 'headerBackgroundColor',
855
+ 'hoverHeaderBackgroundColor',
856
+ 'hoverHeaderInlineBackgroundColor',
857
+ 'selectedBorderColor',
858
+ 'selectedBackgroundColor'
859
+ ]);
860
+ result.config = {
861
+ ...result.config || {},
862
+ [chartType]: {
863
+ ...config
864
+ }
865
+ };
866
+ return result;
867
+ };
895
868
  const pivotTableAdvancedPipeline = [
896
869
  initAdvancedVSeed,
897
- autoPivotMeasures,
898
- autoPivotDimensions,
870
+ defaultMeasures_defaultMeasures,
871
+ defaultDimensions,
872
+ defaultMeasureName,
873
+ encodingForPivotTable,
899
874
  reshapePivotTable,
900
875
  pivotTableConfig,
901
876
  theme_theme
@@ -942,8 +917,9 @@ const initPivotTable = (spec, context)=>{
942
917
  };
943
918
  const pivotColumns = (spec, context)=>{
944
919
  const { advancedVSeed } = context;
920
+ const { encoding } = advancedVSeed;
945
921
  const dimensions = advancedVSeed.dimensions;
946
- const columns = dimensions.filter((item)=>'columnDimension' === item['location'] || 'column' === item['encoding']);
922
+ const columns = dimensions.filter((item)=>encoding.column?.includes(item.id));
947
923
  return {
948
924
  ...spec,
949
925
  columns: columns.map((item)=>({
@@ -956,7 +932,8 @@ const pivotColumns = (spec, context)=>{
956
932
  const pivotRows = (spec, context)=>{
957
933
  const { advancedVSeed } = context;
958
934
  const dimensions = advancedVSeed.dimensions;
959
- const rows = dimensions.filter((item)=>'rowDimension' === item['location'] || 'row' === item['encoding']);
935
+ const { encoding } = advancedVSeed;
936
+ const rows = dimensions.filter((item)=>encoding.row?.includes(item.id));
960
937
  return {
961
938
  ...spec,
962
939
  rows: rows.map((item)=>({
@@ -989,6 +966,7 @@ const pivotIndicators = (spec, context)=>{
989
966
  const pivotIndicators_fieldFormat = (measures, foldInfo, locale)=>(value, col, row, table)=>{
990
967
  if (!isNumber(col) || !isNumber(row) || !table) return value;
991
968
  const datum = table.getCellOriginRecord(col, row);
969
+ if (!datum[0]) return value;
992
970
  const { measureId: foldMeasureId } = foldInfo;
993
971
  const measureId = datum[0][foldMeasureId];
994
972
  const node = findMeasureById(measures, measureId);
@@ -1018,9 +996,9 @@ const rowHeaderStyle = (spec, context)=>{
1018
996
  borderColor: borderColor,
1019
997
  borderLineWidth: 1,
1020
998
  padding: [
1021
- 8.6,
999
+ 8,
1022
1000
  12,
1023
- 8.6,
1001
+ 8,
1024
1002
  12
1025
1003
  ],
1026
1004
  textAlign: 'left',
@@ -1148,7 +1126,7 @@ const initAdvancedVSeed_initAdvancedVSeed = (advancedVSeed, context)=>{
1148
1126
  locale: locale || 'zh-CN'
1149
1127
  };
1150
1128
  };
1151
- const defaultMeasures_defaultMeasures = (advancedVSeed, context)=>{
1129
+ const default_defaultMeasures_defaultMeasures = (advancedVSeed, context)=>{
1152
1130
  const { vseed } = context;
1153
1131
  const { measures, dataset } = vseed;
1154
1132
  if (measures && measures.length > 0) return {
@@ -1178,7 +1156,7 @@ const defaultMeasures_defaultMeasures = (advancedVSeed, context)=>{
1178
1156
  measures: defaultMeasures
1179
1157
  };
1180
1158
  };
1181
- const defaultDimensions = (advancedVSeed, context)=>{
1159
+ const defaultDimensions_defaultDimensions = (advancedVSeed, context)=>{
1182
1160
  const result = {
1183
1161
  ...advancedVSeed
1184
1162
  };
@@ -1209,7 +1187,7 @@ const defaultDimensions = (advancedVSeed, context)=>{
1209
1187
  dimensions: newDimensions
1210
1188
  };
1211
1189
  };
1212
- const defaultMeasureName = (advancedVSeed)=>{
1190
+ const defaultMeasureName_defaultMeasureName = (advancedVSeed)=>{
1213
1191
  const result = {
1214
1192
  ...advancedVSeed
1215
1193
  };
@@ -1226,16 +1204,16 @@ const encodingForLine = (advancedVSeed)=>{
1226
1204
  const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
1227
1205
  const hasMeasureEncoding = measures.some((item)=>item.encoding);
1228
1206
  const encoding = {};
1229
- if (hasDimensionEncoding) generateDimensionEncoding(dimensions, encoding);
1230
- else generateDefaultDimensionEncoding(dimensions, encoding);
1231
- if (hasMeasureEncoding) generateMeasureEncoding(measures, encoding);
1232
- else generateDefaultMeasureEncoding(measures, encoding);
1207
+ if (hasDimensionEncoding) line_generateDimensionEncoding(dimensions, encoding);
1208
+ else line_generateDefaultDimensionEncoding(dimensions, encoding);
1209
+ if (hasMeasureEncoding) line_generateMeasureEncoding(measures, encoding);
1210
+ else line_generateDefaultMeasureEncoding(measures, encoding);
1233
1211
  return {
1234
1212
  ...advancedVSeed,
1235
1213
  encoding
1236
1214
  };
1237
1215
  };
1238
- const generateDefaultDimensionEncoding = (dimensions, encoding)=>{
1216
+ const line_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
1239
1217
  const uniqueDimIds = unique(dimensions.map((d)=>d.id));
1240
1218
  encoding.x = uniqueDimIds.slice(0, 1);
1241
1219
  encoding.color = uniqueDimIds.slice(1);
@@ -1245,7 +1223,7 @@ const generateDefaultDimensionEncoding = (dimensions, encoding)=>{
1245
1223
  encoding.row = [];
1246
1224
  encoding.column = [];
1247
1225
  };
1248
- const generateDimensionEncoding = (dimensions, encoding)=>{
1226
+ const line_generateDimensionEncoding = (dimensions, encoding)=>{
1249
1227
  encoding.x = unique(dimensions.filter((item)=>'xAxis' === item.encoding).map((item)=>item.id));
1250
1228
  encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
1251
1229
  encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
@@ -1255,12 +1233,15 @@ const generateDimensionEncoding = (dimensions, encoding)=>{
1255
1233
  if (0 === encoding.color.length) encoding.color = [
1256
1234
  MeasureName
1257
1235
  ];
1236
+ if (0 === encoding.detail.length) encoding.detail = [
1237
+ MeasureName
1238
+ ];
1258
1239
  };
1259
- const generateDefaultMeasureEncoding = (measures, encoding)=>{
1240
+ const line_generateDefaultMeasureEncoding = (measures, encoding)=>{
1260
1241
  encoding.tooltip = unique(measures.map((item)=>item.id));
1261
1242
  encoding.y = unique(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
1262
1243
  };
1263
- const generateMeasureEncoding = (measures, encoding)=>{
1244
+ const line_generateMeasureEncoding = (measures, encoding)=>{
1264
1245
  encoding.tooltip = measures.map((item)=>item.id);
1265
1246
  encoding.y = unique(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
1266
1247
  const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
@@ -1300,7 +1281,7 @@ const isPivotChart = (vseed)=>{
1300
1281
  }
1301
1282
  if ('dualAxis' === vseed.chartType || 'scatter' === vseed.chartType) {
1302
1283
  const { dimensions = [] } = vseed;
1303
- const hasRowOrColumnDimension = dimensions && dimensions.some((dimension)=>'rowDimension' === dimension.location || 'columnDimension' === dimension.location);
1284
+ const hasRowOrColumnDimension = dimensions && dimensions.some((dimension)=>'row' === dimension.encoding || 'column' === dimension.encoding);
1304
1285
  if (hasRowOrColumnDimension) return true;
1305
1286
  if ('scatter' === vseed.chartType) {
1306
1287
  if (isMeasureTreeWithChildren(vseed)) {
@@ -1320,7 +1301,7 @@ const isPivotChart = (vseed)=>{
1320
1301
  return false;
1321
1302
  }
1322
1303
  const { measures = [], dimensions = [] } = vseed;
1323
- const hasRowOrColumnDimension = dimensions && dimensions.some((dimension)=>'rowDimension' === dimension.location || 'columnDimension' === dimension.location);
1304
+ const hasRowOrColumnDimension = dimensions && dimensions.some((dimension)=>'row' === dimension.encoding || 'column' === dimension.encoding);
1324
1305
  const hasMeasureGroup = measures && measures.some((measure)=>measure && measure.children);
1325
1306
  return hasRowOrColumnDimension || hasMeasureGroup;
1326
1307
  };
@@ -1715,9 +1696,9 @@ const annotation_annotation = (advancedVSeed, context)=>{
1715
1696
  };
1716
1697
  const lineAdvancedPipeline = [
1717
1698
  initAdvancedVSeed_initAdvancedVSeed,
1718
- defaultMeasures_defaultMeasures,
1719
- defaultDimensions,
1720
- defaultMeasureName,
1699
+ default_defaultMeasures_defaultMeasures,
1700
+ defaultDimensions_defaultDimensions,
1701
+ defaultMeasureName_defaultMeasureName,
1721
1702
  encodingForLine,
1722
1703
  buildMeasures,
1723
1704
  pivotAdapter([
@@ -2771,7 +2752,7 @@ const annotationPoint_annotationPoint = (spec, context)=>{
2771
2752
  const annotationVerticalLine_annotationVerticalLine = (spec, context)=>{
2772
2753
  const { advancedVSeed } = context;
2773
2754
  const { annotation, datasetReshapeInfo } = advancedVSeed;
2774
- const { unfoldInfo } = datasetReshapeInfo[0];
2755
+ const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
2775
2756
  if (!annotation || !annotation.annotationVerticalLine) return spec;
2776
2757
  const { annotationVerticalLine } = annotation;
2777
2758
  const annotationVerticalLineList = Array.isArray(annotationVerticalLine) ? annotationVerticalLine : [
@@ -2851,9 +2832,9 @@ const annotationVerticalLine_annotationVerticalLine = (spec, context)=>{
2851
2832
  }
2852
2833
  const selectedData = selectorPoint ? dataset.filter((datum)=>selector_selector(datum, selectorPoint)) : [];
2853
2834
  return selectedData.map((datum)=>{
2854
- const x = unfoldInfo.encodingX;
2855
- if (!x) return {};
2856
- return generateOneMarkLine(datum[x]);
2835
+ if (datum[unfoldInfo.encodingX]) return generateOneMarkLine(datum[unfoldInfo.encodingX]);
2836
+ if (datum[foldInfo.measureValue]) return generateOneMarkLine(datum[foldInfo.measureValue]);
2837
+ return {};
2857
2838
  });
2858
2839
  });
2859
2840
  const specMarkLine = spec.markLine || [];
@@ -2869,10 +2850,10 @@ const annotationVerticalLine_annotationVerticalLine = (spec, context)=>{
2869
2850
  const annotationHorizontalLine_annotationHorizontalLine = (spec, context)=>{
2870
2851
  const { advancedVSeed } = context;
2871
2852
  const { annotation, datasetReshapeInfo } = advancedVSeed;
2872
- const { unfoldInfo } = datasetReshapeInfo[0];
2853
+ const { foldInfo, unfoldInfo } = datasetReshapeInfo[0];
2873
2854
  if (!annotation || !annotation.annotationHorizontalLine) return spec;
2874
2855
  const { annotationHorizontalLine } = annotation;
2875
- const annotationVerticalLineList = Array.isArray(annotationHorizontalLine) ? annotationHorizontalLine : [
2856
+ const annotationHorizontalLineList = Array.isArray(annotationHorizontalLine) ? annotationHorizontalLine : [
2876
2857
  annotationHorizontalLine
2877
2858
  ];
2878
2859
  const positionMap = {
@@ -2883,8 +2864,8 @@ const annotationHorizontalLine_annotationHorizontalLine = (spec, context)=>{
2883
2864
  insideMiddle: 'insideMiddleTop',
2884
2865
  insideEnd: 'insideEndTop'
2885
2866
  };
2886
- const markLine = annotationVerticalLineList.flatMap((annotationVerticalLine)=>{
2887
- const { selector: selectorPoint, yValue, text = '', textPosition = 'insideEnd', textColor = '#ffffff', textFontSize = 12, textFontWeight = 400, textAlign = 'right', textBaseline = 'top', lineColor = '#212121', lineStyle = 'dashed', lineVisible = true, lineWidth = 1, textBackgroundVisible = true, textBackgroundColor = '#212121', textBackgroundBorderColor = '#212121', textBackgroundBorderRadius = 4, textBackgroundBorderWidth = 1, textBackgroundPadding = 2 } = annotationVerticalLine;
2867
+ const markLine = annotationHorizontalLineList.flatMap((annotationHorizontalLine)=>{
2868
+ const { selector: selectorPoint, yValue, text = '', textPosition = 'insideEnd', textColor = '#ffffff', textFontSize = 12, textFontWeight = 400, textAlign = 'right', textBaseline = 'top', lineColor = '#212121', lineStyle = 'dashed', lineVisible = true, lineWidth = 1, textBackgroundVisible = true, textBackgroundColor = '#212121', textBackgroundBorderColor = '#212121', textBackgroundBorderRadius = 4, textBackgroundBorderWidth = 1, textBackgroundPadding = 2 } = annotationHorizontalLine;
2888
2869
  const dataset = advancedVSeed.dataset.flat();
2889
2870
  const generateOneMarkLine = (y)=>({
2890
2871
  y,
@@ -2949,9 +2930,9 @@ const annotationHorizontalLine_annotationHorizontalLine = (spec, context)=>{
2949
2930
  }
2950
2931
  const selectedData = selectorPoint ? dataset.filter((datum)=>selector_selector(datum, selectorPoint)) : [];
2951
2932
  return selectedData.map((datum)=>{
2952
- const y = unfoldInfo.encodingY;
2953
- if (!y) return {};
2954
- return generateOneMarkLine(datum[y]);
2933
+ if (datum[unfoldInfo.encodingY]) return generateOneMarkLine(datum[unfoldInfo.encodingY]);
2934
+ if (datum[foldInfo.measureValue]) return generateOneMarkLine(datum[foldInfo.measureValue]);
2935
+ return {};
2955
2936
  });
2956
2937
  });
2957
2938
  const specMarkLine = spec.markLine || [];
@@ -3315,7 +3296,7 @@ const pivotRowDimensions = (spec, context)=>{
3315
3296
  const { advancedVSeed } = context;
3316
3297
  const dimensions = advancedVSeed.dimensions;
3317
3298
  if (!dimensions) return result;
3318
- const rowDimensions = dimensions.filter((dim)=>'rowDimension' === dim.location || 'row' === dim.encoding);
3299
+ const rowDimensions = dimensions.filter((dim)=>'row' === dim.encoding);
3319
3300
  const rows = rowDimensions.map((dim)=>({
3320
3301
  dimensionKey: dim.id,
3321
3302
  title: dim.alias || dim.id
@@ -3332,7 +3313,7 @@ const pivotColumnDimensions = (spec, context)=>{
3332
3313
  const { advancedVSeed } = context;
3333
3314
  const dimensions = advancedVSeed.dimensions;
3334
3315
  if (!dimensions) return result;
3335
- const columnDimensions = dimensions.filter((dim)=>'columnDimension' === dim.location || 'column' === dim.encoding);
3316
+ const columnDimensions = dimensions.filter((dim)=>'column' === dim.encoding);
3336
3317
  const columns = columnDimensions.map((dim)=>({
3337
3318
  dimensionKey: dim.id,
3338
3319
  title: dim.alias || dim.id
@@ -3641,6 +3622,9 @@ const column_generateDimensionEncoding = (dimensions, encoding)=>{
3641
3622
  if (0 === encoding.color.length) encoding.color = [
3642
3623
  MeasureName
3643
3624
  ];
3625
+ if (0 === encoding.detail.length) encoding.detail = [
3626
+ MeasureName
3627
+ ];
3644
3628
  };
3645
3629
  const column_generateDefaultMeasureEncoding = (measures, encoding)=>{
3646
3630
  encoding.tooltip = unique(measures.map((item)=>item.id));
@@ -3655,9 +3639,9 @@ const column_generateMeasureEncoding = (measures, encoding)=>{
3655
3639
  };
3656
3640
  const columnAdvancedPipeline = [
3657
3641
  initAdvancedVSeed_initAdvancedVSeed,
3658
- defaultMeasures_defaultMeasures,
3659
- defaultDimensions,
3660
- defaultMeasureName,
3642
+ default_defaultMeasures_defaultMeasures,
3643
+ defaultDimensions_defaultDimensions,
3644
+ defaultMeasureName_defaultMeasureName,
3661
3645
  encodingForColumn,
3662
3646
  buildMeasures,
3663
3647
  pivotAdapter([
@@ -4019,9 +4003,9 @@ const registerColumn = ()=>{
4019
4003
  };
4020
4004
  const columnParallelAdvancedPipeline = [
4021
4005
  initAdvancedVSeed_initAdvancedVSeed,
4022
- defaultMeasures_defaultMeasures,
4023
- defaultDimensions,
4024
- defaultMeasureName,
4006
+ default_defaultMeasures_defaultMeasures,
4007
+ defaultDimensions_defaultDimensions,
4008
+ defaultMeasureName_defaultMeasureName,
4025
4009
  encodingForColumn,
4026
4010
  buildMeasures,
4027
4011
  pivotAdapter([
@@ -4118,9 +4102,9 @@ const registerColumnParallel = ()=>{
4118
4102
  };
4119
4103
  const columnPercentAdvancedPipeline = [
4120
4104
  initAdvancedVSeed_initAdvancedVSeed,
4121
- defaultMeasures_defaultMeasures,
4122
- defaultDimensions,
4123
- defaultMeasureName,
4105
+ default_defaultMeasures_defaultMeasures,
4106
+ defaultDimensions_defaultDimensions,
4107
+ defaultMeasureName_defaultMeasureName,
4124
4108
  encodingForColumn,
4125
4109
  buildMeasures,
4126
4110
  pivotAdapter([
@@ -4214,10 +4198,6 @@ const encodingForBar = (advancedVSeed)=>{
4214
4198
  encoding
4215
4199
  };
4216
4200
  };
4217
- const bar_generateDefaultMeasureEncoding = (measures, encoding)=>{
4218
- encoding.tooltip = unique(measures.map((item)=>item.id));
4219
- encoding.x = unique(measures.filter((item)=>'xAxis' === item.encoding || !item.encoding).map((item)=>item.id));
4220
- };
4221
4201
  const bar_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
4222
4202
  const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
4223
4203
  const uniqueDimIds = unique(dimensions.map((d)=>d.id));
@@ -4229,13 +4209,6 @@ const bar_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
4229
4209
  encoding.row = [];
4230
4210
  encoding.column = [];
4231
4211
  };
4232
- const bar_generateMeasureEncoding = (measures, encoding)=>{
4233
- encoding.tooltip = measures.map((item)=>item.id);
4234
- encoding.x = unique(measures.filter((item)=>'xAxis' === item.encoding || !item.encoding).map((item)=>item.id));
4235
- const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
4236
- if (color.length > 0) encoding.color = color;
4237
- return encoding;
4238
- };
4239
4212
  const bar_generateDimensionEncoding = (dimensions, encoding)=>{
4240
4213
  encoding.y = unique(dimensions.filter((item)=>'yAxis' === item.encoding).map((item)=>item.id));
4241
4214
  encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
@@ -4246,7 +4219,20 @@ const bar_generateDimensionEncoding = (dimensions, encoding)=>{
4246
4219
  if (0 === encoding.color.length) encoding.color = [
4247
4220
  MeasureName
4248
4221
  ];
4249
- if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.y?.includes(item.id)).map((item)=>item.id);
4222
+ if (0 === encoding.detail.length) encoding.detail = [
4223
+ MeasureName
4224
+ ];
4225
+ };
4226
+ const bar_generateDefaultMeasureEncoding = (measures, encoding)=>{
4227
+ encoding.tooltip = unique(measures.map((item)=>item.id));
4228
+ encoding.x = unique(measures.filter((item)=>'xAxis' === item.encoding || !item.encoding).map((item)=>item.id));
4229
+ };
4230
+ const bar_generateMeasureEncoding = (measures, encoding)=>{
4231
+ encoding.tooltip = measures.map((item)=>item.id);
4232
+ encoding.x = unique(measures.filter((item)=>'xAxis' === item.encoding || !item.encoding).map((item)=>item.id));
4233
+ const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
4234
+ if (color.length > 0) encoding.color = color;
4235
+ return encoding;
4250
4236
  };
4251
4237
  const sortYBandAxis = (advancedVSeed, context)=>{
4252
4238
  const result = {
@@ -4266,9 +4252,9 @@ const sortYBandAxis = (advancedVSeed, context)=>{
4266
4252
  };
4267
4253
  const barAdvancedPipeline = [
4268
4254
  initAdvancedVSeed_initAdvancedVSeed,
4269
- defaultMeasures_defaultMeasures,
4270
- defaultDimensions,
4271
- defaultMeasureName,
4255
+ default_defaultMeasures_defaultMeasures,
4256
+ defaultDimensions_defaultDimensions,
4257
+ defaultMeasureName_defaultMeasureName,
4272
4258
  encodingForBar,
4273
4259
  buildMeasures,
4274
4260
  pivotAdapter([
@@ -4621,9 +4607,9 @@ const registerBar = ()=>{
4621
4607
  };
4622
4608
  const barParallelAdvancedPipeline = [
4623
4609
  initAdvancedVSeed_initAdvancedVSeed,
4624
- defaultMeasures_defaultMeasures,
4625
- defaultDimensions,
4626
- defaultMeasureName,
4610
+ default_defaultMeasures_defaultMeasures,
4611
+ defaultDimensions_defaultDimensions,
4612
+ defaultMeasureName_defaultMeasureName,
4627
4613
  encodingForBar,
4628
4614
  buildMeasures,
4629
4615
  pivotAdapter([
@@ -4719,9 +4705,9 @@ const registerBarParallel = ()=>{
4719
4705
  };
4720
4706
  const barPercentAdvancedPipeline = [
4721
4707
  initAdvancedVSeed_initAdvancedVSeed,
4722
- defaultMeasures_defaultMeasures,
4723
- defaultDimensions,
4724
- defaultMeasureName,
4708
+ default_defaultMeasures_defaultMeasures,
4709
+ defaultDimensions_defaultDimensions,
4710
+ defaultMeasureName_defaultMeasureName,
4725
4711
  encodingForBar,
4726
4712
  buildMeasures,
4727
4713
  pivotAdapter([
@@ -4792,9 +4778,9 @@ const registerBarPercent = ()=>{
4792
4778
  };
4793
4779
  const areaAdvancedPipeline = [
4794
4780
  initAdvancedVSeed_initAdvancedVSeed,
4795
- defaultMeasures_defaultMeasures,
4796
- defaultDimensions,
4797
- defaultMeasureName,
4781
+ default_defaultMeasures_defaultMeasures,
4782
+ defaultDimensions_defaultDimensions,
4783
+ defaultMeasureName_defaultMeasureName,
4798
4784
  encodingForLine,
4799
4785
  buildMeasures,
4800
4786
  pivotAdapter([
@@ -4952,9 +4938,9 @@ const registerArea = ()=>{
4952
4938
  };
4953
4939
  const areaPercentAdvancedPipeline = [
4954
4940
  initAdvancedVSeed_initAdvancedVSeed,
4955
- defaultMeasures_defaultMeasures,
4956
- defaultDimensions,
4957
- defaultMeasureName,
4941
+ default_defaultMeasures_defaultMeasures,
4942
+ defaultDimensions_defaultDimensions,
4943
+ defaultMeasureName_defaultMeasureName,
4958
4944
  encodingForLine,
4959
4945
  buildMeasures,
4960
4946
  pivotAdapter([
@@ -5045,10 +5031,6 @@ const encodingForScatter = (advancedVSeed)=>{
5045
5031
  encoding
5046
5032
  };
5047
5033
  };
5048
- const scatter_generateDefaultMeasureEncoding = (measures, encoding)=>{
5049
- encoding.tooltip = unique(measures.map((item)=>item.id));
5050
- encoding.y = unique(measures.filter((item)=>'xAxis' === item.encoding || 'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
5051
- };
5052
5034
  const scatter_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
5053
5035
  const dimensionsWithoutMeasureName = dimensions.filter((item)=>item.id !== MeasureName);
5054
5036
  const uniqueDimIds = unique(dimensionsWithoutMeasureName.map((d)=>d.id));
@@ -5059,19 +5041,27 @@ const scatter_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
5059
5041
  encoding.row = [];
5060
5042
  encoding.column = [];
5061
5043
  };
5062
- const scatter_generateMeasureEncoding = (measures, encoding)=>{
5063
- encoding.tooltip = measures.map((item)=>item.id);
5064
- encoding.y = unique(measures.filter((item)=>'xAxis' === item.encoding || 'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
5065
- const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
5066
- if (color.length > 0) encoding.color = color;
5067
- };
5068
5044
  const scatter_generateDimensionEncoding = (dimensions, encoding)=>{
5069
5045
  encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
5070
5046
  encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
5071
5047
  if (0 === encoding.color.length) encoding.color = [
5072
5048
  MeasureName
5073
5049
  ];
5074
- if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
5050
+ if (0 === encoding.detail.length) encoding.detail = [
5051
+ MeasureName
5052
+ ];
5053
+ };
5054
+ const scatter_generateDefaultMeasureEncoding = (measures, encoding)=>{
5055
+ encoding.tooltip = unique(measures.map((item)=>item.id));
5056
+ encoding.y = unique(measures.filter((item)=>'xAxis' === item.encoding || 'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
5057
+ };
5058
+ const scatter_generateMeasureEncoding = (measures, encoding)=>{
5059
+ encoding.tooltip = measures.map((item)=>item.id);
5060
+ encoding.y = unique(measures.filter((item)=>'xAxis' === item.encoding || 'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
5061
+ const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
5062
+ if (color.length > 0) encoding.color = [
5063
+ color[0]
5064
+ ];
5075
5065
  };
5076
5066
  const buildMeasuresForScatter = (advancedVSeed, context)=>{
5077
5067
  const { vseed } = context;
@@ -5099,7 +5089,7 @@ const basicMeasuresToScatterMeasures = (basicMeasures)=>{
5099
5089
  const isXAxis = encoding.includes('xAxis');
5100
5090
  if (isYAxis) yMeasures.push(item);
5101
5091
  else if (isXAxis) xMeasures.push(item);
5102
- else if (0 === index) yMeasures.push(item);
5092
+ else if (0 !== index) yMeasures.push(item);
5103
5093
  else xMeasures.push(item);
5104
5094
  }
5105
5095
  return [
@@ -5167,7 +5157,7 @@ const buildMeasuresForScatter_generateMeasuresByParentId = (measures)=>{
5167
5157
  const isEmpty = !encoding.length;
5168
5158
  if (isY) scatterChart.yMeasures.push(item);
5169
5159
  else if (isX) scatterChart.xMeasures.push(item);
5170
- else if (isEmpty) if (0 === scatterChart.yMeasures.length) scatterChart.yMeasures.push(item);
5160
+ else if (isEmpty) if (0 !== scatterChart.yMeasures.length) scatterChart.yMeasures.push(item);
5171
5161
  else scatterChart.xMeasures.push(item);
5172
5162
  });
5173
5163
  return scatterMeasuresToMeasureTree(scatterMeasures);
@@ -5302,9 +5292,9 @@ const pivotReshapeWithScatterEncoding = (advancedVSeed, context)=>{
5302
5292
  };
5303
5293
  const scatterAdvancedPipeline = [
5304
5294
  initAdvancedVSeed_initAdvancedVSeed,
5305
- defaultMeasures_defaultMeasures,
5306
- defaultDimensions,
5307
- defaultMeasureName,
5295
+ default_defaultMeasures_defaultMeasures,
5296
+ defaultDimensions_defaultDimensions,
5297
+ defaultMeasureName_defaultMeasureName,
5308
5298
  encodingForScatter,
5309
5299
  buildMeasuresForScatter,
5310
5300
  pivotAdapter([
@@ -5466,10 +5456,6 @@ const encodingForDualAxis = (advancedVSeed)=>{
5466
5456
  encoding
5467
5457
  };
5468
5458
  };
5469
- const dualAxis_generateDefaultMeasureEncoding = (measures, encoding)=>{
5470
- encoding.tooltip = unique(measures.map((item)=>item.id));
5471
- encoding.y = unique(measures.filter((item)=>'primaryYAxis' === item.encoding || 'secondaryYAxis' === item.encoding || !item.encoding).map((item)=>item.id));
5472
- };
5473
5459
  const dualAxis_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
5474
5460
  const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
5475
5461
  const uniqueDimIds = unique(dimensions.map((d)=>d.id));
@@ -5481,13 +5467,6 @@ const dualAxis_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
5481
5467
  encoding.row = [];
5482
5468
  encoding.column = [];
5483
5469
  };
5484
- const dualAxis_generateMeasureEncoding = (measures, encoding)=>{
5485
- encoding.tooltip = measures.map((item)=>item.id);
5486
- encoding.y = unique(measures.filter((item)=>'primaryYAxis' === item.encoding || 'secondaryYAxis' === item.encoding || !item.encoding).map((item)=>item.id));
5487
- const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
5488
- if (color.length > 0) encoding.color = color;
5489
- return encoding;
5490
- };
5491
5470
  const dualAxis_generateDimensionEncoding = (dimensions, encoding)=>{
5492
5471
  encoding.x = unique(dimensions.filter((item)=>'xAxis' === item.encoding).map((item)=>item.id));
5493
5472
  encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
@@ -5498,7 +5477,20 @@ const dualAxis_generateDimensionEncoding = (dimensions, encoding)=>{
5498
5477
  if (0 === encoding.color.length) encoding.color = [
5499
5478
  MeasureName
5500
5479
  ];
5501
- if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
5480
+ if (0 === encoding.detail.length) encoding.detail = [
5481
+ MeasureName
5482
+ ];
5483
+ };
5484
+ const dualAxis_generateDefaultMeasureEncoding = (measures, encoding)=>{
5485
+ encoding.tooltip = unique(measures.map((item)=>item.id));
5486
+ encoding.y = unique(measures.filter((item)=>'primaryYAxis' === item.encoding || 'secondaryYAxis' === item.encoding || !item.encoding).map((item)=>item.id));
5487
+ };
5488
+ const dualAxis_generateMeasureEncoding = (measures, encoding)=>{
5489
+ encoding.tooltip = measures.map((item)=>item.id);
5490
+ encoding.y = unique(measures.filter((item)=>'primaryYAxis' === item.encoding || 'secondaryYAxis' === item.encoding || !item.encoding).map((item)=>item.id));
5491
+ const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
5492
+ if (color.length > 0) encoding.color = color;
5493
+ return encoding;
5502
5494
  };
5503
5495
  const buildMeasuresForDualAxis = (advancedVSeed, context)=>{
5504
5496
  const { vseed } = context;
@@ -5752,9 +5744,9 @@ const dualAxisConfig = (advancedVSeed, context)=>{
5752
5744
  };
5753
5745
  const dualAxisAdvancedPipeline = [
5754
5746
  initAdvancedVSeed_initAdvancedVSeed,
5755
- defaultMeasures_defaultMeasures,
5756
- defaultDimensions,
5757
- defaultMeasureName,
5747
+ default_defaultMeasures_defaultMeasures,
5748
+ defaultDimensions_defaultDimensions,
5749
+ defaultMeasureName_defaultMeasureName,
5758
5750
  encodingForDualAxis,
5759
5751
  buildMeasuresForDualAxis,
5760
5752
  pivotAdapter([
@@ -6604,10 +6596,6 @@ const encodingForPie = (advancedVSeed)=>{
6604
6596
  encoding
6605
6597
  };
6606
6598
  };
6607
- const pie_generateDefaultMeasureEncoding = (measures, encoding)=>{
6608
- encoding.tooltip = unique(measures.map((item)=>item.id));
6609
- encoding.angle = unique(measures.filter((item)=>'angle' === item.encoding || !item.encoding).map((item)=>item.id));
6610
- };
6611
6599
  const pie_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
6612
6600
  const uniqueDimIds = unique(dimensions.map((d)=>d.id));
6613
6601
  encoding.color = uniqueDimIds.slice(0);
@@ -6617,25 +6605,31 @@ const pie_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
6617
6605
  encoding.row = [];
6618
6606
  encoding.column = [];
6619
6607
  };
6620
- const pie_generateMeasureEncoding = (measures, encoding)=>{
6621
- encoding.tooltip = measures.map((item)=>item.id);
6622
- encoding.angle = unique(measures.filter((item)=>'angle' === item.encoding || !item.encoding).map((item)=>item.id));
6623
- const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
6624
- if (color.length > 0) encoding.color = color;
6625
- };
6626
6608
  const pie_generateDimensionEncoding = (dimensions, encoding)=>{
6627
6609
  encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
6628
6610
  encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
6629
6611
  if (0 === encoding.color.length) encoding.color = [
6630
6612
  MeasureName
6631
6613
  ];
6632
- if (0 === encoding.detail.length) encoding.detail = dimensions.map((item)=>item.id);
6614
+ if (0 === encoding.detail.length) encoding.detail = [
6615
+ MeasureName
6616
+ ];
6617
+ };
6618
+ const pie_generateDefaultMeasureEncoding = (measures, encoding)=>{
6619
+ encoding.tooltip = unique(measures.map((item)=>item.id));
6620
+ encoding.angle = unique(measures.filter((item)=>'angle' === item.encoding || !item.encoding).map((item)=>item.id));
6621
+ };
6622
+ const pie_generateMeasureEncoding = (measures, encoding)=>{
6623
+ encoding.tooltip = measures.map((item)=>item.id);
6624
+ encoding.angle = unique(measures.filter((item)=>'angle' === item.encoding || !item.encoding).map((item)=>item.id));
6625
+ const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
6626
+ if (color.length > 0) encoding.color = color;
6633
6627
  };
6634
6628
  const pieAdvancedPipeline = [
6635
6629
  initAdvancedVSeed_initAdvancedVSeed,
6636
- defaultMeasures_defaultMeasures,
6637
- defaultDimensions,
6638
- defaultMeasureName,
6630
+ default_defaultMeasures_defaultMeasures,
6631
+ defaultDimensions_defaultDimensions,
6632
+ defaultMeasureName_defaultMeasureName,
6639
6633
  encodingForPie,
6640
6634
  buildMeasures,
6641
6635
  pivotAdapter([
@@ -6753,9 +6747,9 @@ const registerPie = ()=>{
6753
6747
  };
6754
6748
  const donutAdvancedPipeline = [
6755
6749
  initAdvancedVSeed_initAdvancedVSeed,
6756
- defaultMeasures_defaultMeasures,
6757
- defaultDimensions,
6758
- defaultMeasureName,
6750
+ default_defaultMeasures_defaultMeasures,
6751
+ defaultDimensions_defaultDimensions,
6752
+ defaultMeasureName_defaultMeasureName,
6759
6753
  buildMeasures,
6760
6754
  encodingForPie,
6761
6755
  pivotAdapter([
@@ -6848,10 +6842,6 @@ const encodingForRose = (advancedVSeed)=>{
6848
6842
  encoding
6849
6843
  };
6850
6844
  };
6851
- const rose_generateDefaultMeasureEncoding = (measures, encoding)=>{
6852
- encoding.tooltip = unique(measures.map((item)=>item.id));
6853
- encoding.radius = unique(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
6854
- };
6855
6845
  const rose_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
6856
6846
  const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
6857
6847
  const uniqueDimIds = unique(dimensions.map((d)=>d.id));
@@ -6863,12 +6853,6 @@ const rose_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
6863
6853
  encoding.row = [];
6864
6854
  encoding.column = [];
6865
6855
  };
6866
- const rose_generateMeasureEncoding = (measures, encoding)=>{
6867
- encoding.tooltip = measures.map((item)=>item.id);
6868
- encoding.radius = unique(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
6869
- const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
6870
- if (color.length > 0) encoding.color = color;
6871
- };
6872
6856
  const rose_generateDimensionEncoding = (dimensions, encoding)=>{
6873
6857
  encoding.angle = unique(dimensions.filter((item)=>'angle' === item.encoding).map((item)=>item.id));
6874
6858
  encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
@@ -6879,13 +6863,25 @@ const rose_generateDimensionEncoding = (dimensions, encoding)=>{
6879
6863
  if (0 === encoding.color.length) encoding.color = [
6880
6864
  MeasureName
6881
6865
  ];
6882
- if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.angle?.includes(item.id)).map((item)=>item.id);
6866
+ if (0 === encoding.detail.length) encoding.detail = [
6867
+ MeasureName
6868
+ ];
6869
+ };
6870
+ const rose_generateDefaultMeasureEncoding = (measures, encoding)=>{
6871
+ encoding.tooltip = unique(measures.map((item)=>item.id));
6872
+ encoding.radius = unique(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
6873
+ };
6874
+ const rose_generateMeasureEncoding = (measures, encoding)=>{
6875
+ encoding.tooltip = measures.map((item)=>item.id);
6876
+ encoding.radius = unique(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
6877
+ const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
6878
+ if (color.length > 0) encoding.color = color;
6883
6879
  };
6884
6880
  const roseAdvancedPipeline = [
6885
6881
  initAdvancedVSeed_initAdvancedVSeed,
6886
- defaultMeasures_defaultMeasures,
6887
- defaultDimensions,
6888
- defaultMeasureName,
6882
+ default_defaultMeasures_defaultMeasures,
6883
+ defaultDimensions_defaultDimensions,
6884
+ defaultMeasureName_defaultMeasureName,
6889
6885
  encodingForRose,
6890
6886
  buildMeasures,
6891
6887
  pivotAdapter([
@@ -7083,9 +7079,9 @@ const registerRose = ()=>{
7083
7079
  };
7084
7080
  const roseParallelAdvancedPipeline = [
7085
7081
  initAdvancedVSeed_initAdvancedVSeed,
7086
- defaultMeasures_defaultMeasures,
7087
- defaultDimensions,
7088
- defaultMeasureName,
7082
+ default_defaultMeasures_defaultMeasures,
7083
+ defaultDimensions_defaultDimensions,
7084
+ defaultMeasureName_defaultMeasureName,
7089
7085
  encodingForRose,
7090
7086
  buildMeasures,
7091
7087
  pivotAdapter([
@@ -7208,10 +7204,6 @@ const encodingForRadar = (advancedVSeed)=>{
7208
7204
  encoding
7209
7205
  };
7210
7206
  };
7211
- const radar_generateDefaultMeasureEncoding = (measures, encoding)=>{
7212
- encoding.tooltip = unique(measures.map((item)=>item.id));
7213
- encoding.radius = unique(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
7214
- };
7215
7207
  const radar_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
7216
7208
  const uniqueDimIds = unique(dimensions.map((d)=>d.id));
7217
7209
  encoding.angle = uniqueDimIds.slice(0, 1);
@@ -7222,12 +7214,6 @@ const radar_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
7222
7214
  encoding.row = [];
7223
7215
  encoding.column = [];
7224
7216
  };
7225
- const radar_generateMeasureEncoding = (measures, encoding)=>{
7226
- encoding.tooltip = measures.map((item)=>item.id);
7227
- encoding.radius = unique(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
7228
- const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7229
- if (color.length > 0) encoding.color = color;
7230
- };
7231
7217
  const radar_generateDimensionEncoding = (dimensions, encoding)=>{
7232
7218
  encoding.angle = unique(dimensions.filter((item)=>'angle' === item.encoding).map((item)=>item.id));
7233
7219
  encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
@@ -7238,12 +7224,25 @@ const radar_generateDimensionEncoding = (dimensions, encoding)=>{
7238
7224
  if (0 === encoding.color.length) encoding.color = [
7239
7225
  MeasureName
7240
7226
  ];
7227
+ if (0 === encoding.detail.length) encoding.detail = [
7228
+ MeasureName
7229
+ ];
7230
+ };
7231
+ const radar_generateDefaultMeasureEncoding = (measures, encoding)=>{
7232
+ encoding.tooltip = unique(measures.map((item)=>item.id));
7233
+ encoding.radius = unique(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
7234
+ };
7235
+ const radar_generateMeasureEncoding = (measures, encoding)=>{
7236
+ encoding.tooltip = measures.map((item)=>item.id);
7237
+ encoding.radius = unique(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
7238
+ const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7239
+ if (color.length > 0) encoding.color = color;
7241
7240
  };
7242
7241
  const radarAdvancedPipeline = [
7243
7242
  initAdvancedVSeed_initAdvancedVSeed,
7244
- defaultMeasures_defaultMeasures,
7245
- defaultDimensions,
7246
- defaultMeasureName,
7243
+ default_defaultMeasures_defaultMeasures,
7244
+ defaultDimensions_defaultDimensions,
7245
+ defaultMeasureName_defaultMeasureName,
7247
7246
  encodingForRadar,
7248
7247
  buildMeasures,
7249
7248
  pivotAdapter([
@@ -7394,10 +7393,6 @@ const encodingForFunnel = (advancedVSeed)=>{
7394
7393
  encoding
7395
7394
  };
7396
7395
  };
7397
- const funnel_generateDefaultMeasureEncoding = (measures, encoding)=>{
7398
- encoding.tooltip = unique(measures.map((item)=>item.id));
7399
- encoding.size = unique(measures.filter((item)=>'size' === item.encoding || !item.encoding).map((item)=>item.id));
7400
- };
7401
7396
  const funnel_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
7402
7397
  const uniqueDimIds = unique(dimensions.map((d)=>d.id));
7403
7398
  encoding.color = uniqueDimIds.slice(0);
@@ -7407,25 +7402,33 @@ const funnel_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
7407
7402
  encoding.row = [];
7408
7403
  encoding.column = [];
7409
7404
  };
7410
- const funnel_generateMeasureEncoding = (measures, encoding)=>{
7411
- encoding.tooltip = measures.map((item)=>item.id);
7412
- encoding.size = unique(measures.filter((item)=>'size' === item.encoding || !item.encoding).map((item)=>item.id));
7413
- const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7414
- if (color.length > 0) encoding.color = color;
7415
- };
7416
7405
  const funnel_generateDimensionEncoding = (dimensions, encoding)=>{
7417
7406
  encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7418
7407
  encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
7419
7408
  if (0 === encoding.color.length) encoding.color = [
7420
7409
  MeasureName
7421
7410
  ];
7422
- if (0 === encoding.detail.length) encoding.detail = dimensions.map((item)=>item.id);
7411
+ if (0 === encoding.detail.length) encoding.detail = [
7412
+ MeasureName
7413
+ ];
7414
+ };
7415
+ const funnel_generateDefaultMeasureEncoding = (measures, encoding)=>{
7416
+ encoding.tooltip = unique(measures.map((item)=>item.id));
7417
+ encoding.size = unique(measures.filter((item)=>'size' === item.encoding || !item.encoding).map((item)=>item.id));
7418
+ };
7419
+ const funnel_generateMeasureEncoding = (measures, encoding)=>{
7420
+ encoding.tooltip = measures.map((item)=>item.id);
7421
+ encoding.size = unique(measures.filter((item)=>'size' === item.encoding || !item.encoding).map((item)=>item.id));
7422
+ const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7423
+ if (color.length > 0) encoding.color = [
7424
+ color[0]
7425
+ ];
7423
7426
  };
7424
7427
  const funnelAdvancedPipeline = [
7425
7428
  initAdvancedVSeed_initAdvancedVSeed,
7426
- defaultMeasures_defaultMeasures,
7427
- defaultDimensions,
7428
- defaultMeasureName,
7429
+ default_defaultMeasures_defaultMeasures,
7430
+ defaultDimensions_defaultDimensions,
7431
+ defaultMeasureName_defaultMeasureName,
7429
7432
  encodingForFunnel,
7430
7433
  buildMeasures,
7431
7434
  pivotAdapter([
@@ -7555,10 +7558,6 @@ const encodingForHeatmap = (advancedVSeed)=>{
7555
7558
  encoding
7556
7559
  };
7557
7560
  };
7558
- const heatmap_generateDefaultMeasureEncoding = (measures, encoding)=>{
7559
- encoding.tooltip = unique(measures.map((item)=>item.id));
7560
- encoding.color = unique(measures.filter((item)=>'color' === item.encoding || !item.encoding).map((item)=>item.id));
7561
- };
7562
7561
  const heatmap_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
7563
7562
  const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
7564
7563
  const uniqueDimIds = unique(dimensions.map((d)=>d.id));
@@ -7571,12 +7570,6 @@ const heatmap_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
7571
7570
  encoding.row = [];
7572
7571
  encoding.column = [];
7573
7572
  };
7574
- const heatmap_generateMeasureEncoding = (measures, encoding)=>{
7575
- encoding.tooltip = measures.map((item)=>item.id);
7576
- const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7577
- if (color.length > 0) encoding.color = color;
7578
- return encoding;
7579
- };
7580
7573
  const heatmap_generateDimensionEncoding = (dimensions, encoding)=>{
7581
7574
  encoding.x = unique(dimensions.filter((item)=>'xAxis' === item.encoding).map((item)=>item.id));
7582
7575
  encoding.y = unique(dimensions.filter((item)=>'yAxis' === item.encoding).map((item)=>item.id));
@@ -7590,13 +7583,30 @@ const heatmap_generateDimensionEncoding = (dimensions, encoding)=>{
7590
7583
  if (0 === encoding.color.length) encoding.color = [
7591
7584
  MeasureName
7592
7585
  ];
7593
- if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
7586
+ if (0 === encoding.detail.length) encoding.detail = [
7587
+ MeasureName
7588
+ ];
7589
+ };
7590
+ const heatmap_generateDefaultMeasureEncoding = (measures, encoding)=>{
7591
+ encoding.tooltip = unique(measures.map((item)=>item.id));
7592
+ const colorDims = unique(measures.filter((item)=>'color' === item.encoding || !item.encoding).map((item)=>item.id));
7593
+ if (colorDims.length > 0) encoding.color = [
7594
+ colorDims[0]
7595
+ ];
7596
+ };
7597
+ const heatmap_generateMeasureEncoding = (measures, encoding)=>{
7598
+ encoding.tooltip = measures.map((item)=>item.id);
7599
+ const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7600
+ if (color.length > 0) encoding.color = [
7601
+ color[0]
7602
+ ];
7603
+ return encoding;
7594
7604
  };
7595
7605
  const heatmapAdvancedPipeline = [
7596
7606
  initAdvancedVSeed_initAdvancedVSeed,
7597
- defaultMeasures_defaultMeasures,
7598
- defaultDimensions,
7599
- defaultMeasureName,
7607
+ default_defaultMeasures_defaultMeasures,
7608
+ defaultDimensions_defaultDimensions,
7609
+ defaultMeasureName_defaultMeasureName,
7600
7610
  encodingForHeatmap,
7601
7611
  buildMeasures,
7602
7612
  pivotAdapter([
@@ -8392,6 +8402,15 @@ const updateAdvanced = (chartType, advancedPipe)=>{
8392
8402
  const updateSpec = (chartType, specPipe)=>{
8393
8403
  Builder._customSpecPipe[chartType] = specPipe;
8394
8404
  };
8405
+ const findAllDimensions = (dimensions = [])=>{
8406
+ if (!dimensions) return [];
8407
+ const result = [];
8408
+ preorderTraverse(dimensions, (node)=>{
8409
+ if (!('children' in node)) result.push(node);
8410
+ return false;
8411
+ });
8412
+ return result;
8413
+ };
8395
8414
  const zChartType = z["enum"]([
8396
8415
  'table',
8397
8416
  'pivotTable',
@@ -8435,11 +8454,6 @@ const zDataset = z.array(zDatum);
8435
8454
  const zDimension = z.object({
8436
8455
  id: z.string(),
8437
8456
  alias: z.string().optional(),
8438
- location: z["enum"]([
8439
- 'dimension',
8440
- 'rowDimension',
8441
- 'columnDimension'
8442
- ]).default('dimension'),
8443
8457
  encoding: z["enum"]([
8444
8458
  'xAxis',
8445
8459
  'yAxis',