@visactor/vseed 0.1.6 → 0.1.8

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 (78) hide show
  1. package/dist/builder/builder/builder.d.ts +0 -2
  2. package/dist/dataReshape/constant.d.ts +2 -0
  3. package/dist/index.cjs +1053 -587
  4. package/dist/index.cjs.map +1 -1
  5. package/dist/index.js +1050 -589
  6. package/dist/index.js.map +1 -1
  7. package/dist/pipeline/advanced/chart/pipes/encoding/bar.d.ts +1 -0
  8. package/dist/pipeline/advanced/chart/pipes/encoding/column.d.ts +1 -19
  9. package/dist/pipeline/advanced/chart/pipes/encoding/dualAxis.d.ts +1 -0
  10. package/dist/pipeline/advanced/chart/pipes/encoding/encodingAdapter.d.ts +2 -0
  11. package/dist/pipeline/advanced/chart/pipes/encoding/funnel.d.ts +1 -0
  12. package/dist/pipeline/advanced/chart/pipes/encoding/heatmap.d.ts +1 -0
  13. package/dist/pipeline/advanced/chart/pipes/encoding/index.d.ts +11 -9
  14. package/dist/pipeline/advanced/chart/pipes/encoding/line.d.ts +1 -17
  15. package/dist/pipeline/advanced/chart/pipes/encoding/pie.d.ts +1 -0
  16. package/dist/pipeline/advanced/chart/pipes/encoding/radar.d.ts +1 -0
  17. package/dist/pipeline/advanced/chart/pipes/encoding/rose.d.ts +1 -0
  18. package/dist/pipeline/advanced/chart/pipes/encoding/scatter.d.ts +1 -0
  19. package/dist/pipeline/advanced/chart/pipes/measures/utils.d.ts +7 -1
  20. package/dist/pipeline/advanced/table/pipes/{init/autoDimensions.d.ts → default/defaultDimensions.d.ts} +1 -1
  21. package/dist/pipeline/advanced/table/pipes/{init/autoMeasures.d.ts → default/defaultMeasureName.d.ts} +1 -1
  22. package/dist/pipeline/advanced/table/pipes/default/defaultMeasures.d.ts +5 -0
  23. package/dist/pipeline/advanced/table/pipes/default/index.d.ts +3 -0
  24. package/dist/pipeline/advanced/table/pipes/encoding/index.d.ts +1 -0
  25. package/dist/pipeline/advanced/table/pipes/{init/autoPivotMeasures.d.ts → encoding/pivotTable.d.ts} +1 -1
  26. package/dist/pipeline/advanced/table/pipes/index.d.ts +3 -0
  27. package/dist/pipeline/advanced/table/pipes/init/index.d.ts +0 -3
  28. package/dist/pipeline/spec/chart/pipes/tooltip/index.d.ts +2 -0
  29. package/dist/pipeline/spec/chart/pipes/tooltip/tooltip.d.ts +21 -1
  30. package/dist/pipeline/spec/chart/pipes/tooltip/tooltipHeatmap.d.ts +15 -0
  31. package/dist/pipeline/spec/chart/pipes/tooltip/tooltipScatter.d.ts +15 -0
  32. package/dist/types/advancedVSeed.d.ts +0 -5
  33. package/dist/types/chartType/area/area.d.ts +8 -29
  34. package/dist/types/chartType/area/zArea.d.ts +0 -5
  35. package/dist/types/chartType/areaPercent/areaPercent.d.ts +8 -30
  36. package/dist/types/chartType/areaPercent/zAreaPercent.d.ts +0 -5
  37. package/dist/types/chartType/bar/bar.d.ts +9 -14
  38. package/dist/types/chartType/bar/zBar.d.ts +0 -5
  39. package/dist/types/chartType/barParallel/barParallel.d.ts +9 -14
  40. package/dist/types/chartType/barParallel/zBarParallel.d.ts +0 -5
  41. package/dist/types/chartType/barPercent/barPercent.d.ts +9 -14
  42. package/dist/types/chartType/barPercent/zBarPercent.d.ts +0 -5
  43. package/dist/types/chartType/column/column.d.ts +9 -30
  44. package/dist/types/chartType/column/zColumn.d.ts +0 -5
  45. package/dist/types/chartType/columnParallel/columnParallel.d.ts +10 -32
  46. package/dist/types/chartType/columnParallel/zColumnParallel.d.ts +0 -5
  47. package/dist/types/chartType/columnPercent/columnPercent.d.ts +9 -30
  48. package/dist/types/chartType/columnPercent/zColumnPercent.d.ts +0 -5
  49. package/dist/types/chartType/donut/donut.d.ts +8 -13
  50. package/dist/types/chartType/donut/zDonut.d.ts +0 -5
  51. package/dist/types/chartType/dualAxis/dualAxis.d.ts +10 -14
  52. package/dist/types/chartType/dualAxis/zDualAxis.d.ts +0 -5
  53. package/dist/types/chartType/funnel/funnel.d.ts +8 -13
  54. package/dist/types/chartType/funnel/zFunnel.d.ts +0 -5
  55. package/dist/types/chartType/heatmap/heatmap.d.ts +9 -14
  56. package/dist/types/chartType/heatmap/zHeatmap.d.ts +0 -5
  57. package/dist/types/chartType/line/line.d.ts +9 -33
  58. package/dist/types/chartType/line/zLine.d.ts +0 -5
  59. package/dist/types/chartType/pie/pie.d.ts +8 -13
  60. package/dist/types/chartType/pie/zPie.d.ts +0 -5
  61. package/dist/types/chartType/pivotTable/pivotTable.d.ts +7 -3
  62. package/dist/types/chartType/pivotTable/zPivotTable.d.ts +0 -5
  63. package/dist/types/chartType/radar/radar.d.ts +8 -14
  64. package/dist/types/chartType/radar/zRadar.d.ts +0 -5
  65. package/dist/types/chartType/rose/rose.d.ts +9 -14
  66. package/dist/types/chartType/rose/zRose.d.ts +0 -5
  67. package/dist/types/chartType/roseParallel/roseParallel.d.ts +9 -14
  68. package/dist/types/chartType/roseParallel/zRoseParallel.d.ts +0 -5
  69. package/dist/types/chartType/scatter/scatter.d.ts +8 -14
  70. package/dist/types/chartType/scatter/zScatter.d.ts +0 -5
  71. package/dist/types/chartType/table/table.d.ts +2 -0
  72. package/dist/types/chartType/table/zTable.d.ts +0 -5
  73. package/dist/types/properties/dimensions/dimensions.d.ts +0 -4
  74. package/dist/types/properties/dimensions/zDimensions.d.ts +0 -15
  75. package/dist/types/zVseed.d.ts +0 -100
  76. package/dist/umd/index.js +1050 -588
  77. package/dist/umd/index.js.map +1 -1
  78. package/package.json +3 -3
package/dist/umd/index.js CHANGED
@@ -62,7 +62,7 @@
62
62
  zYLinearAxis: ()=>zYLinearAxis,
63
63
  zMarkStyle: ()=>zMarkStyle,
64
64
  registerFunnel: ()=>registerFunnel,
65
- Separator: ()=>Separator,
65
+ Separator: ()=>"-",
66
66
  columnAdvancedPipeline: ()=>columnAdvancedPipeline,
67
67
  zLabel: ()=>zLabel,
68
68
  registerColumn: ()=>registerColumn,
@@ -91,12 +91,13 @@
91
91
  FoldMeasureId: ()=>FoldMeasureId,
92
92
  zColumnParallelConfig: ()=>zColumnParallelConfig,
93
93
  donutSpecPipeline: ()=>donutSpecPipeline,
94
+ FoldXMeasureId: ()=>FoldXMeasureId,
94
95
  registerAreaPercent: ()=>registerAreaPercent,
95
- zHeatmap: ()=>zHeatmap,
96
96
  zBarPercent: ()=>zBarPercent,
97
+ zHeatmap: ()=>zHeatmap,
97
98
  zScatterMeasure: ()=>zScatterMeasure,
98
- zTheme: ()=>zTheme,
99
99
  zDatum: ()=>zDatum,
100
+ zTheme: ()=>zTheme,
100
101
  barAdvancedPipeline: ()=>barAdvancedPipeline,
101
102
  zCustomThemeConfig: ()=>zCustomThemeConfig,
102
103
  registerColumnPercent: ()=>registerColumnPercent,
@@ -186,6 +187,7 @@
186
187
  zTableConfig: ()=>zTableConfig,
187
188
  zXBandAxis: ()=>zXBandAxis,
188
189
  zColumnPercentConfig: ()=>zColumnPercentConfig,
190
+ FoldYMeasureId: ()=>FoldYMeasureId,
189
191
  findMeasureById: ()=>findMeasureById,
190
192
  zVSeed: ()=>zVSeed,
191
193
  AngleEncoding: ()=>AngleEncoding,
@@ -491,33 +493,35 @@
491
493
  locale: locale || 'zh-CN'
492
494
  };
493
495
  };
494
- const autoMeasures = (advancedVSeed, context)=>{
495
- const result = {
496
- ...advancedVSeed
497
- };
496
+ const defaultMeasures_defaultMeasures = (advancedVSeed, context)=>{
498
497
  const { vseed } = context;
499
498
  const { measures, dataset } = vseed;
499
+ if (measures && measures.length > 0) return {
500
+ ...advancedVSeed,
501
+ measures
502
+ };
500
503
  if (!dataset) throw new Error('dataset is required');
501
- if (0 === dataset.length) return result;
502
- if (measures) {
503
- result.measures = measures;
504
- return result;
505
- }
504
+ if (0 === dataset.length) return {
505
+ ...advancedVSeed,
506
+ measures: []
507
+ };
506
508
  const top100dataset = dataset.slice(0, 100);
507
509
  const sample = top100dataset.reduce((prev, cur)=>({
508
510
  ...prev,
509
511
  ...cur
510
512
  }), {});
511
- result.measures = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
513
+ const defaultMeasures = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
512
514
  '',
513
515
  null,
514
516
  void 0
515
517
  ].includes(key)).map((measure)=>({
516
518
  id: measure,
517
- alias: measure,
518
- encoding: 'column'
519
+ alias: measure
519
520
  }));
520
- return result;
521
+ return {
522
+ ...advancedVSeed,
523
+ measures: defaultMeasures
524
+ };
521
525
  };
522
526
  const preorderTraverse = (tree, callback)=>{
523
527
  if (!tree || 0 === tree.length) return;
@@ -571,37 +575,36 @@
571
575
  });
572
576
  return result;
573
577
  };
574
- const autoDimensions = (advancedVSeed, context)=>{
578
+ const defaultDimensions = (advancedVSeed, context)=>{
575
579
  const result = {
576
580
  ...advancedVSeed
577
581
  };
578
582
  const { vseed } = context;
579
583
  const { dimensions, dataset } = vseed;
580
- const measures = findAllMeasures(advancedVSeed.measures);
584
+ if (dimensions && dimensions.length > 0) return {
585
+ ...result,
586
+ dimensions
587
+ };
581
588
  if (!dataset) throw new Error('dataset is required');
582
589
  if (0 === dataset.length) return result;
583
- if (dimensions) {
584
- result.dimensions = dimensions.map((dim)=>({
585
- location: 'dimension',
586
- ...dim
587
- }));
588
- return result;
589
- }
590
+ const measures = findAllMeasures(advancedVSeed.measures);
590
591
  const top100dataset = dataset.slice(0, 100);
591
592
  const sample = top100dataset.reduce((prev, cur)=>({
592
593
  ...prev,
593
594
  ...cur
594
595
  }), {});
595
- result.dimensions = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'string' == typeof item[key]) && ![
596
+ const newDimensions = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'string' == typeof item[key]) && ![
596
597
  '',
597
598
  null,
598
599
  void 0
599
600
  ].includes(key) && !measures.some((measure)=>measure.id === key)).map((dim)=>({
600
601
  id: dim,
601
- alias: dim,
602
- encoding: 'column'
602
+ alias: dim
603
603
  }));
604
- return result;
604
+ return {
605
+ ...result,
606
+ dimensions: newDimensions
607
+ };
605
608
  };
606
609
  const records_records = (advancedVSeed, context)=>{
607
610
  const { vseed } = context;
@@ -755,8 +758,8 @@
755
758
  };
756
759
  const tableAdvancedPipeline = [
757
760
  initAdvancedVSeed,
758
- autoMeasures,
759
- autoDimensions,
761
+ defaultMeasures_defaultMeasures,
762
+ defaultDimensions,
760
763
  records_records,
761
764
  tableConfig_tableConfig,
762
765
  theme_theme
@@ -980,9 +983,9 @@
980
983
  borderColor: borderColor,
981
984
  borderLineWidth: 1,
982
985
  padding: [
983
- 8.6,
986
+ 8,
984
987
  12,
985
- 8.6,
988
+ 8,
986
989
  12
987
990
  ],
988
991
  textAlign: 'right',
@@ -1095,37 +1098,7 @@
1095
1098
  Builder._advancedPipelineMap.table = tableAdvancedPipeline;
1096
1099
  Builder._specPipelineMap.table = tableSpecPipeline;
1097
1100
  };
1098
- const autoPivotMeasures = (advancedVSeed, context)=>{
1099
- const result = {
1100
- ...advancedVSeed
1101
- };
1102
- const { vseed } = context;
1103
- const { dataset } = vseed;
1104
- const measures = findAllMeasures(vseed.measures);
1105
- if (!dataset) throw new Error('dataset is required');
1106
- if (0 === dataset.length) return result;
1107
- if (vseed.measures) {
1108
- result.measures = findAllMeasures(measures);
1109
- return result;
1110
- }
1111
- const top100dataset = dataset.slice(0, 100);
1112
- const sample = top100dataset.reduce((prev, cur)=>({
1113
- ...prev,
1114
- ...cur
1115
- }), {});
1116
- result.measures = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
1117
- '',
1118
- null,
1119
- void 0
1120
- ].includes(key)).map((measure)=>({
1121
- id: measure,
1122
- alias: measure,
1123
- encoding: 'detail'
1124
- }));
1125
- return result;
1126
- };
1127
1101
  const ORIGINAL_DATA = '__OriginalData__';
1128
- const Separator = '-';
1129
1102
  const FoldMeasureName = '__MeaName__';
1130
1103
  const FoldMeasureId = '__MeaId__';
1131
1104
  const FoldMeasureValue = '__MeaValue__';
@@ -1134,94 +1107,70 @@
1134
1107
  const FoldSecondaryMeasureValue = '__MeaSecondaryValue__';
1135
1108
  const FoldXMeasureValue = '__MeaXValue__';
1136
1109
  const FoldYMeasureValue = '__MeaYValue__';
1110
+ const FoldXMeasureId = '__MeaXId__';
1111
+ const FoldYMeasureId = '__MeaYId__';
1137
1112
  const XEncoding = '__Dim_X__';
1138
1113
  const YEncoding = '__Dim_Y__';
1139
1114
  const AngleEncoding = '__Dim_Angle__';
1140
1115
  const DetailEncoding = '__Dim_Detail__';
1141
1116
  const ColorEncoding = '__Dim_Color__';
1142
1117
  const ColorIdEncoding = '__Dim_ColorId__';
1143
- const findAllDimensions = (dimensions = [])=>{
1144
- if (!dimensions) return [];
1145
- const result = [];
1146
- preorderTraverse(dimensions, (node)=>{
1147
- if (!('children' in node)) result.push(node);
1148
- return false;
1149
- });
1150
- return result;
1151
- };
1152
- const autoPivotDimensions = (advancedVSeed, context)=>{
1118
+ const defaultMeasureName = (advancedVSeed)=>{
1153
1119
  const result = {
1154
1120
  ...advancedVSeed
1155
1121
  };
1156
- const { vseed } = context;
1157
- const { dimensions, dataset } = vseed;
1158
- const measures = findAllMeasures(advancedVSeed.measures);
1159
1122
  const MeaName = {
1160
1123
  id: MeasureName,
1161
1124
  alias: intl.i18n`指标名称`
1162
1125
  };
1163
- if (!dataset) throw new Error('dataset is required');
1164
- if (0 === dataset.length) return result;
1165
- if (dimensions) {
1166
- const newDimensions = findAllDimensions(dimensions);
1167
- if (!newDimensions.some((dim)=>dim.id === MeasureName)) newDimensions.push(MeaName);
1168
- result.dimensions = newDimensions.map((item, index)=>{
1169
- if ('row' === item.encoding || 'column' === item.encoding) return item;
1170
- if ('rowDimension' === item.location || 'columnDimension' === item.location) return item;
1171
- return {
1172
- ...item,
1173
- encoding: index % 2 === 0 ? 'column' : 'row'
1174
- };
1175
- });
1176
- return result;
1177
- }
1178
- const top100dataset = dataset.slice(0, 100);
1179
- const sample = top100dataset.reduce((prev, cur)=>({
1180
- ...prev,
1181
- ...cur
1182
- }), {});
1183
- const newDimensions = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'string' == typeof item[key]) && ![
1184
- '',
1185
- null,
1186
- void 0
1187
- ].includes(key) && !measures.some((measure)=>measure.id === key));
1188
- result.dimensions = newDimensions.map((dim)=>({
1189
- id: dim,
1190
- alias: dim
1191
- }));
1192
- result.dimensions.push(MeaName);
1193
- result.dimensions = result.dimensions.map((dim, index)=>({
1194
- ...dim,
1195
- encoding: index % 2 === 0 ? 'column' : 'row'
1196
- }));
1126
+ if (!result.dimensions?.some((dim)=>dim.id === MeasureName)) result.dimensions?.push(MeaName);
1197
1127
  return result;
1198
1128
  };
1199
- const pivotTableConfig = (advancedVSeed, context)=>{
1200
- const { vseed } = context;
1201
- const { chartType } = vseed;
1202
- const result = {
1203
- ...advancedVSeed
1204
- };
1205
- const config = chunk_2T7K3PFL_i(vseed, [
1206
- 'backgroundColor',
1207
- 'bodyFontSize',
1208
- 'bodyFontColor',
1209
- 'bodyBackgroundColor',
1210
- 'headerFontSize',
1211
- 'headerFontColor',
1212
- 'headerBackgroundColor',
1213
- 'hoverHeaderBackgroundColor',
1214
- 'hoverHeaderInlineBackgroundColor',
1215
- 'selectedBorderColor',
1216
- 'selectedBackgroundColor'
1217
- ]);
1218
- result.config = {
1219
- ...result.config || {},
1220
- [chartType]: {
1221
- ...config
1222
- }
1129
+ const encodingForPivotTable = (advancedVSeed)=>{
1130
+ const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
1131
+ const measures = findAllMeasures(vseedMeasures);
1132
+ const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
1133
+ const hasMeasureEncoding = measures.some((item)=>item.encoding);
1134
+ const encoding = {};
1135
+ if (hasDimensionEncoding) generateDimensionEncoding(dimensions, encoding);
1136
+ else generateDefaultDimensionEncoding(dimensions, encoding);
1137
+ if (hasMeasureEncoding) generateMeasureEncoding(measures, encoding);
1138
+ else generateDefaultMeasureEncoding(measures, encoding);
1139
+ return {
1140
+ ...advancedVSeed,
1141
+ encoding
1223
1142
  };
1224
- return result;
1143
+ };
1144
+ const generateDefaultDimensionEncoding = (dimensions, encoding)=>{
1145
+ const uniqueDimIds = chunk_QJLMYOTX_i(dimensions.map((d)=>d.id));
1146
+ encoding.tooltip = uniqueDimIds;
1147
+ encoding.row = [];
1148
+ encoding.column = [];
1149
+ uniqueDimIds.forEach((item, index)=>{
1150
+ if (index % 2 === 0) encoding.column.push(item);
1151
+ else encoding.row.push(item);
1152
+ });
1153
+ };
1154
+ const generateDimensionEncoding = (dimensions, encoding)=>{
1155
+ const uniqueDimIds = chunk_QJLMYOTX_i(dimensions.map((d)=>d.id));
1156
+ encoding.tooltip = uniqueDimIds;
1157
+ encoding.row = [];
1158
+ encoding.column = [];
1159
+ dimensions.forEach((dim, index)=>{
1160
+ const id = dim.id;
1161
+ if ('row' === dim.encoding) encoding.row.push(id);
1162
+ else if ('column' === dim.encoding) encoding.column.push(id);
1163
+ else if (index % 2 === 0) encoding.column.push(id);
1164
+ else encoding.row.push(id);
1165
+ });
1166
+ };
1167
+ const generateDefaultMeasureEncoding = (measures, encoding)=>{
1168
+ encoding.tooltip = chunk_QJLMYOTX_i(measures.map((item)=>item.id));
1169
+ encoding.detail = chunk_QJLMYOTX_i(measures.filter((item)=>'detail' === item.encoding || !item.encoding).map((item)=>item.id));
1170
+ };
1171
+ const generateMeasureEncoding = (measures, encoding)=>{
1172
+ encoding.tooltip = measures.map((item)=>item.id);
1173
+ encoding.detail = chunk_QJLMYOTX_i(measures.filter((item)=>'detail' === item.encoding || !item.encoding).map((item)=>item.id));
1225
1174
  };
1226
1175
  function chunk_AIG3BDKO_i(...e) {
1227
1176
  return chunk_WIMGWYZL_u(chunk_AIG3BDKO_n, e);
@@ -1322,10 +1271,39 @@
1322
1271
  measures
1323
1272
  };
1324
1273
  };
1274
+ const pivotTableConfig = (advancedVSeed, context)=>{
1275
+ const { vseed } = context;
1276
+ const { chartType } = vseed;
1277
+ const result = {
1278
+ ...advancedVSeed
1279
+ };
1280
+ const config = chunk_2T7K3PFL_i(vseed, [
1281
+ 'backgroundColor',
1282
+ 'bodyFontSize',
1283
+ 'bodyFontColor',
1284
+ 'bodyBackgroundColor',
1285
+ 'headerFontSize',
1286
+ 'headerFontColor',
1287
+ 'headerBackgroundColor',
1288
+ 'hoverHeaderBackgroundColor',
1289
+ 'hoverHeaderInlineBackgroundColor',
1290
+ 'selectedBorderColor',
1291
+ 'selectedBackgroundColor'
1292
+ ]);
1293
+ result.config = {
1294
+ ...result.config || {},
1295
+ [chartType]: {
1296
+ ...config
1297
+ }
1298
+ };
1299
+ return result;
1300
+ };
1325
1301
  const pivotTableAdvancedPipeline = [
1326
1302
  initAdvancedVSeed,
1327
- autoPivotMeasures,
1328
- autoPivotDimensions,
1303
+ defaultMeasures_defaultMeasures,
1304
+ defaultDimensions,
1305
+ defaultMeasureName,
1306
+ encodingForPivotTable,
1329
1307
  reshapePivotTable,
1330
1308
  pivotTableConfig,
1331
1309
  theme_theme
@@ -1372,8 +1350,9 @@
1372
1350
  };
1373
1351
  const pivotColumns = (spec, context)=>{
1374
1352
  const { advancedVSeed } = context;
1353
+ const { encoding } = advancedVSeed;
1375
1354
  const dimensions = advancedVSeed.dimensions;
1376
- const columns = dimensions.filter((item)=>'columnDimension' === item['location'] || 'column' === item['encoding']);
1355
+ const columns = dimensions.filter((item)=>encoding.column?.includes(item.id));
1377
1356
  return {
1378
1357
  ...spec,
1379
1358
  columns: columns.map((item)=>({
@@ -1386,7 +1365,8 @@
1386
1365
  const pivotRows = (spec, context)=>{
1387
1366
  const { advancedVSeed } = context;
1388
1367
  const dimensions = advancedVSeed.dimensions;
1389
- const rows = dimensions.filter((item)=>'rowDimension' === item['location'] || 'row' === item['encoding']);
1368
+ const { encoding } = advancedVSeed;
1369
+ const rows = dimensions.filter((item)=>encoding.row?.includes(item.id));
1390
1370
  return {
1391
1371
  ...spec,
1392
1372
  rows: rows.map((item)=>({
@@ -1419,6 +1399,7 @@
1419
1399
  const pivotIndicators_fieldFormat = (measures, foldInfo, locale)=>(value, col, row, table)=>{
1420
1400
  if (!chunk_6GTAPB47_e(col) || !chunk_6GTAPB47_e(row) || !table) return value;
1421
1401
  const datum = table.getCellOriginRecord(col, row);
1402
+ if (!datum[0]) return value;
1422
1403
  const { measureId: foldMeasureId } = foldInfo;
1423
1404
  const measureId = datum[0][foldMeasureId];
1424
1405
  const node = findMeasureById(measures, measureId);
@@ -1448,9 +1429,9 @@
1448
1429
  borderColor: borderColor,
1449
1430
  borderLineWidth: 1,
1450
1431
  padding: [
1451
- 8.6,
1432
+ 8,
1452
1433
  12,
1453
- 8.6,
1434
+ 8,
1454
1435
  12
1455
1436
  ],
1456
1437
  textAlign: 'left',
@@ -1578,7 +1559,7 @@
1578
1559
  locale: locale || 'zh-CN'
1579
1560
  };
1580
1561
  };
1581
- const defaultMeasures_defaultMeasures = (advancedVSeed, context)=>{
1562
+ const default_defaultMeasures_defaultMeasures = (advancedVSeed, context)=>{
1582
1563
  const { vseed } = context;
1583
1564
  const { measures, dataset } = vseed;
1584
1565
  if (measures && measures.length > 0) return {
@@ -1608,7 +1589,7 @@
1608
1589
  measures: defaultMeasures
1609
1590
  };
1610
1591
  };
1611
- const defaultDimensions = (advancedVSeed, context)=>{
1592
+ const defaultDimensions_defaultDimensions = (advancedVSeed, context)=>{
1612
1593
  const result = {
1613
1594
  ...advancedVSeed
1614
1595
  };
@@ -1639,7 +1620,7 @@
1639
1620
  dimensions: newDimensions
1640
1621
  };
1641
1622
  };
1642
- const defaultMeasureName = (advancedVSeed)=>{
1623
+ const defaultMeasureName_defaultMeasureName = (advancedVSeed)=>{
1643
1624
  const result = {
1644
1625
  ...advancedVSeed
1645
1626
  };
@@ -1650,51 +1631,78 @@
1650
1631
  if (!result.dimensions?.some((dim)=>dim.id === MeasureName)) result.dimensions?.push(MeaName);
1651
1632
  return result;
1652
1633
  };
1634
+ const encodingAdapter = (noEncodingPipeline, hasEncodingPipeline)=>(advancedVSeed, context)=>{
1635
+ const { dimensions = [], measures = [] } = advancedVSeed;
1636
+ const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
1637
+ const hasMeasureEncoding = measures.some((item)=>item.encoding);
1638
+ const hasEncoding = hasDimensionEncoding || hasMeasureEncoding;
1639
+ if (hasEncoding) return execPipeline(hasEncodingPipeline, context, advancedVSeed);
1640
+ return execPipeline(noEncodingPipeline, context, advancedVSeed);
1641
+ };
1642
+ const defaultEncodingForLine = (advancedVSeed)=>{
1643
+ const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
1644
+ const measures = findAllMeasures(vseedMeasures);
1645
+ const encoding = {};
1646
+ line_generateDefaultDimensionEncoding(dimensions, encoding);
1647
+ line_generateDefaultMeasureEncoding(measures, encoding);
1648
+ return {
1649
+ ...advancedVSeed,
1650
+ encoding
1651
+ };
1652
+ };
1653
1653
  const encodingForLine = (advancedVSeed)=>{
1654
1654
  const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
1655
1655
  const measures = findAllMeasures(vseedMeasures);
1656
1656
  const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
1657
1657
  const hasMeasureEncoding = measures.some((item)=>item.encoding);
1658
1658
  const encoding = {};
1659
- if (hasDimensionEncoding) generateDimensionEncoding(dimensions, encoding);
1660
- else generateDefaultDimensionEncoding(dimensions, encoding);
1661
- if (hasMeasureEncoding) generateMeasureEncoding(measures, encoding);
1662
- else generateDefaultMeasureEncoding(measures, encoding);
1659
+ if (hasDimensionEncoding) line_generateDimensionEncoding(dimensions, encoding);
1660
+ else line_generateDefaultDimensionEncoding(dimensions, encoding);
1661
+ if (hasMeasureEncoding) line_generateMeasureEncoding(measures, encoding);
1662
+ else line_generateDefaultMeasureEncoding(measures, encoding);
1663
1663
  return {
1664
1664
  ...advancedVSeed,
1665
1665
  encoding
1666
1666
  };
1667
1667
  };
1668
- const generateDefaultDimensionEncoding = (dimensions, encoding)=>{
1668
+ const line_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
1669
1669
  const uniqueDimIds = chunk_QJLMYOTX_i(dimensions.map((d)=>d.id));
1670
1670
  encoding.x = uniqueDimIds.slice(0, 1);
1671
1671
  encoding.color = uniqueDimIds.slice(1);
1672
- encoding.tooltip = uniqueDimIds;
1672
+ encoding.tooltip = uniqueDimIds.filter((d)=>d !== MeasureName);
1673
1673
  encoding.detail = [];
1674
1674
  encoding.label = [];
1675
1675
  encoding.row = [];
1676
1676
  encoding.column = [];
1677
1677
  };
1678
- const generateDimensionEncoding = (dimensions, encoding)=>{
1678
+ const line_generateDimensionEncoding = (dimensions, encoding)=>{
1679
1679
  encoding.x = chunk_QJLMYOTX_i(dimensions.filter((item)=>'xAxis' === item.encoding).map((item)=>item.id));
1680
- encoding.color = chunk_QJLMYOTX_i(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
1681
- encoding.detail = chunk_QJLMYOTX_i(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
1682
1680
  if (0 === encoding.x.length) encoding.x = [
1683
1681
  dimensions[0].id
1684
1682
  ];
1683
+ encoding.color = chunk_QJLMYOTX_i(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
1685
1684
  if (0 === encoding.color.length) encoding.color = [
1686
1685
  MeasureName
1687
1686
  ];
1687
+ encoding.detail = chunk_QJLMYOTX_i(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
1688
+ if (0 === encoding.detail.length) encoding.detail = [
1689
+ MeasureName
1690
+ ];
1691
+ encoding.tooltip = chunk_QJLMYOTX_i(dimensions.map((item)=>item.id));
1692
+ encoding.tooltip = encoding.tooltip.filter((d)=>d !== MeasureName);
1688
1693
  };
1689
- const generateDefaultMeasureEncoding = (measures, encoding)=>{
1690
- encoding.tooltip = chunk_QJLMYOTX_i(measures.map((item)=>item.id));
1694
+ const line_generateDefaultMeasureEncoding = (measures, encoding)=>{
1691
1695
  encoding.y = chunk_QJLMYOTX_i(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
1692
1696
  };
1693
- const generateMeasureEncoding = (measures, encoding)=>{
1694
- encoding.tooltip = measures.map((item)=>item.id);
1697
+ const line_generateMeasureEncoding = (measures, encoding)=>{
1695
1698
  encoding.y = chunk_QJLMYOTX_i(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
1696
1699
  const color = chunk_QJLMYOTX_i(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
1697
1700
  if (color.length > 0) encoding.color = color;
1701
+ const tooltip = chunk_QJLMYOTX_i(measures.filter((item)=>'tooltip' === item.encoding).map((item)=>item.id));
1702
+ encoding.tooltip = chunk_QJLMYOTX_i([
1703
+ ...encoding.tooltip || [],
1704
+ ...tooltip
1705
+ ]);
1698
1706
  };
1699
1707
  const isMeasureTreeWithChildren = (vseed)=>{
1700
1708
  const { measures } = vseed;
@@ -1706,6 +1714,37 @@
1706
1714
  if (!measures) return false;
1707
1715
  return measures.some((measure)=>'parentId' in measure);
1708
1716
  };
1717
+ const normalizeMeasureTree = (measures)=>{
1718
+ const createEmptyMeasureGroup = ()=>({
1719
+ id: 'group',
1720
+ alias: '',
1721
+ children: []
1722
+ });
1723
+ let currentGroup = createEmptyMeasureGroup();
1724
+ const measureGroups = [];
1725
+ for (const measure of measures)if ('children' in measure) {
1726
+ if (currentGroup.children?.length) {
1727
+ currentGroup.id = [
1728
+ currentGroup.id,
1729
+ ...currentGroup.children.map((item)=>item.id)
1730
+ ].join('-');
1731
+ currentGroup.alias = currentGroup.children.map((item)=>item.alias).join('-');
1732
+ measureGroups.push(currentGroup);
1733
+ currentGroup = createEmptyMeasureGroup();
1734
+ }
1735
+ measureGroups.push(measure);
1736
+ } else currentGroup.children?.push(measure);
1737
+ if (currentGroup.children?.length) {
1738
+ currentGroup.id = [
1739
+ currentGroup.id,
1740
+ ...currentGroup.children.map((item)=>item.id)
1741
+ ].join('-');
1742
+ currentGroup.alias = currentGroup.children.map((item)=>item.alias).join('-');
1743
+ measureGroups.push(currentGroup);
1744
+ currentGroup = createEmptyMeasureGroup();
1745
+ }
1746
+ return measureGroups;
1747
+ };
1709
1748
  const measureDepth = (measures = [])=>{
1710
1749
  if (!measures) return 0;
1711
1750
  let depth = 1;
@@ -1730,7 +1769,7 @@
1730
1769
  }
1731
1770
  if ('dualAxis' === vseed.chartType || 'scatter' === vseed.chartType) {
1732
1771
  const { dimensions = [] } = vseed;
1733
- const hasRowOrColumnDimension = dimensions && dimensions.some((dimension)=>'rowDimension' === dimension.location || 'columnDimension' === dimension.location);
1772
+ const hasRowOrColumnDimension = dimensions && dimensions.some((dimension)=>'row' === dimension.encoding || 'column' === dimension.encoding);
1734
1773
  if (hasRowOrColumnDimension) return true;
1735
1774
  if ('scatter' === vseed.chartType) {
1736
1775
  if (isMeasureTreeWithChildren(vseed)) {
@@ -1750,14 +1789,14 @@
1750
1789
  return false;
1751
1790
  }
1752
1791
  const { measures = [], dimensions = [] } = vseed;
1753
- const hasRowOrColumnDimension = dimensions && dimensions.some((dimension)=>'rowDimension' === dimension.location || 'columnDimension' === dimension.location);
1792
+ const hasRowOrColumnDimension = dimensions && dimensions.some((dimension)=>'row' === dimension.encoding || 'column' === dimension.encoding);
1754
1793
  const hasMeasureGroup = measures && measures.some((measure)=>measure && measure.children);
1755
1794
  return hasRowOrColumnDimension || hasMeasureGroup;
1756
1795
  };
1757
1796
  const buildMeasures = (advancedVSeed, context)=>{
1758
1797
  const { vseed } = context;
1759
1798
  if (isMeasureTreeWithChildren(vseed)) {
1760
- advancedVSeed.measures = vseed.measures;
1799
+ advancedVSeed.measures = normalizeMeasureTree(vseed.measures);
1761
1800
  return advancedVSeed;
1762
1801
  }
1763
1802
  if (isMeasureTreeWithParentId(vseed)) {
@@ -1873,7 +1912,7 @@
1873
1912
  });
1874
1913
  const { dataset: finalDataset, unfoldInfo } = unfoldDimensions(foldedDataset, dimensions, encoding, {
1875
1914
  foldMeasureId,
1876
- separator: Separator,
1915
+ separator: "-",
1877
1916
  colorItemAsId
1878
1917
  });
1879
1918
  return {
@@ -2168,11 +2207,16 @@
2168
2207
  };
2169
2208
  const lineAdvancedPipeline = [
2170
2209
  initAdvancedVSeed_initAdvancedVSeed,
2171
- defaultMeasures_defaultMeasures,
2172
- defaultDimensions,
2173
- defaultMeasureName,
2174
- encodingForLine,
2175
- buildMeasures,
2210
+ default_defaultMeasures_defaultMeasures,
2211
+ defaultDimensions_defaultDimensions,
2212
+ defaultMeasureName_defaultMeasureName,
2213
+ encodingAdapter([
2214
+ defaultEncodingForLine,
2215
+ buildMeasures
2216
+ ], [
2217
+ encodingForLine,
2218
+ buildMeasures
2219
+ ]),
2176
2220
  pivotAdapter([
2177
2221
  reshapeWithEncoding
2178
2222
  ], [
@@ -2447,10 +2491,6 @@
2447
2491
  ];
2448
2492
  return result;
2449
2493
  };
2450
- const ANNOTATION_Z_INDEX = 1000;
2451
- const LINEAR_AXIS_INNER_OFFSET_TOP = 7;
2452
- const DUAL_AXIS_CHART_COLUMN_Z_INDEX = 1000;
2453
- const DUAL_AXIS_CHART_NON_COLUMN_Z_INDEX = 1001;
2454
2494
  const yLinear = (spec, context)=>{
2455
2495
  const result = {
2456
2496
  ...spec
@@ -2524,7 +2564,7 @@
2524
2564
  }
2525
2565
  },
2526
2566
  innerOffset: {
2527
- top: LINEAR_AXIS_INNER_OFFSET_TOP
2567
+ top: 7
2528
2568
  }
2529
2569
  };
2530
2570
  result.axes = [
@@ -3096,83 +3136,138 @@
3096
3136
  ...spec
3097
3137
  };
3098
3138
  const { advancedVSeed } = context;
3099
- const { measures, datasetReshapeInfo, chartType, locale, dimensions } = advancedVSeed;
3139
+ const { measures, datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed;
3100
3140
  const baseConfig = advancedVSeed.config[chartType];
3101
3141
  const { tooltip = {
3102
3142
  enable: true
3103
3143
  } } = baseConfig;
3104
3144
  const { enable } = tooltip;
3105
- const { measureId, measureValue, measureName } = datasetReshapeInfo[0].foldInfo;
3106
- const { encodingColor: colorName } = datasetReshapeInfo[0].unfoldInfo;
3145
+ const { foldInfo, unfoldInfo } = datasetReshapeInfo[0];
3107
3146
  result.tooltip = {
3108
3147
  visible: enable,
3109
3148
  mark: {
3110
3149
  title: {
3111
- visible: true
3150
+ visible: false
3112
3151
  },
3113
- content: [
3114
- ...dimensions.map((item)=>({
3115
- visible: true,
3116
- hasShape: true,
3117
- shapeType: 'rectRound',
3118
- key: (datum)=>{
3119
- if (item.alias || item.id) return item.alias || item.id;
3120
- return datum && datum[item.id];
3121
- },
3122
- value: (datum)=>datum && datum[item.id]
3123
- })),
3124
- {
3125
- visible: true,
3126
- hasShape: true,
3127
- key: (datum)=>datum && datum[measureName || colorName] || '',
3128
- value: (datum)=>{
3129
- if (!datum) return '';
3130
- const value = datum[measureValue];
3131
- const id = datum[measureId];
3132
- const measure = findMeasureById(measures, id);
3133
- if (!measure) return String(value);
3134
- const { format = {}, autoFormat = true } = measure;
3135
- if (!chunk_VCYTMP4D_n(format)) {
3136
- const formatter = createFormatter(format);
3137
- return formatter(value);
3138
- }
3139
- if (autoFormat) return autoFormatter(value, locale);
3140
- return String(value);
3141
- }
3142
- }
3143
- ]
3152
+ content: createMarkContent(encoding.tooltip || [], dimensions, measures, locale, foldInfo, unfoldInfo)
3144
3153
  },
3145
3154
  dimension: {
3146
- content: [
3147
- {
3148
- visible: true,
3149
- key: (datum)=>datum && datum[colorName] || '',
3150
- value: (datum)=>{
3151
- if (!datum) return '';
3152
- const value = datum[measureValue];
3153
- const id = datum[measureId];
3154
- const measure = findMeasureById(measures, id);
3155
- if (!measure) return String(value);
3156
- const { format = {}, autoFormat = true } = measure;
3157
- if (!chunk_VCYTMP4D_n(format)) {
3158
- const formatter = createFormatter(format);
3159
- return formatter(value);
3160
- }
3161
- if (autoFormat) return autoFormatter(value, locale);
3162
- return String(value);
3163
- },
3164
- shapeType: 'rectRound'
3165
- }
3166
- ]
3155
+ title: {
3156
+ visible: true
3157
+ },
3158
+ content: createDimensionContent(measures, foldInfo, unfoldInfo, locale)
3167
3159
  }
3168
3160
  };
3169
3161
  return result;
3170
3162
  };
3171
- const isSubset = (sub, obj)=>Object.entries(sub).every(([key, value])=>{
3172
- if ('string' == typeof value) return obj[key] === value;
3173
- if ('number' == typeof value) return obj[key] === value;
3174
- return true;
3175
- });
3163
+ const createDimensionContent = (measures, foldInfo, unfoldInfo, locale)=>{
3164
+ const { measureId, measureValue } = foldInfo;
3165
+ const { encodingColor } = unfoldInfo;
3166
+ return [
3167
+ {
3168
+ visible: true,
3169
+ shapeType: 'rectRound',
3170
+ hasShape: true,
3171
+ key: (v)=>{
3172
+ const datum = v;
3173
+ return datum && datum[encodingColor] || '';
3174
+ },
3175
+ value: (v)=>{
3176
+ const datum = v;
3177
+ if (!datum) return '';
3178
+ const value = datum[measureValue];
3179
+ const id = datum[measureId];
3180
+ const measure = findMeasureById(measures, id);
3181
+ if (!measure) return String(value);
3182
+ const { format = {}, autoFormat = true } = measure;
3183
+ if (!chunk_VCYTMP4D_n(format)) {
3184
+ const formatter = createFormatter(format);
3185
+ return formatter(value);
3186
+ }
3187
+ if (autoFormat) return autoFormatter(value, locale);
3188
+ return String(value);
3189
+ }
3190
+ }
3191
+ ];
3192
+ };
3193
+ const createMarkContent = (tooltip, dimensions, measures, locale, foldInfo, unfoldInfo)=>{
3194
+ const dims = dimensions.filter((item)=>tooltip.includes(item.id));
3195
+ const meas = measures.filter((item)=>tooltip.includes(item.id));
3196
+ const dimContent = dims.map((item)=>({
3197
+ visible: true,
3198
+ hasShape: true,
3199
+ shapeType: 'rectRound',
3200
+ key: (v)=>{
3201
+ const datum = v;
3202
+ if (item.alias || item.id) return item.alias || item.id;
3203
+ return datum && datum[item.id];
3204
+ },
3205
+ value: (v)=>{
3206
+ const datum = v;
3207
+ return datum && datum[item.id];
3208
+ }
3209
+ }));
3210
+ const meaContent = meas.map((item)=>({
3211
+ visible: true,
3212
+ hasShape: true,
3213
+ shapeType: 'rectRound',
3214
+ key: item.alias || item.id,
3215
+ value: (v)=>{
3216
+ const datum = v;
3217
+ if (!datum) return '';
3218
+ const id = item.id;
3219
+ if (!datum || !datum[ORIGINAL_DATA] || !datum[ORIGINAL_DATA]) return '';
3220
+ const originalData = datum[ORIGINAL_DATA];
3221
+ const value = originalData[id];
3222
+ const measure = findMeasureById(measures, id);
3223
+ if (!measure) return String(value);
3224
+ const { format = {}, autoFormat = true } = measure;
3225
+ if (!chunk_VCYTMP4D_n(format)) {
3226
+ const formatter = createFormatter(format);
3227
+ return formatter(value);
3228
+ }
3229
+ if (autoFormat) return autoFormatter(value, locale);
3230
+ return String(value);
3231
+ }
3232
+ }));
3233
+ const defaultContent = {
3234
+ visible: true,
3235
+ hasShape: true,
3236
+ shapeType: 'rectRound',
3237
+ key: (v)=>{
3238
+ const { measureName } = foldInfo;
3239
+ const { encodingColor: colorName } = unfoldInfo;
3240
+ const datum = v;
3241
+ return datum && datum[measureName || colorName] || '';
3242
+ },
3243
+ value: (v)=>{
3244
+ const { measureId, measureValue } = foldInfo;
3245
+ const datum = v;
3246
+ if (!datum) return '';
3247
+ const value = datum[measureValue];
3248
+ const id = datum[measureId];
3249
+ const measure = findMeasureById(measures, id);
3250
+ if (!measure) return String(value);
3251
+ const { format = {}, autoFormat = true } = measure;
3252
+ if (!chunk_VCYTMP4D_n(format)) {
3253
+ const formatter = createFormatter(format);
3254
+ return formatter(value);
3255
+ }
3256
+ if (autoFormat) return autoFormatter(value, locale);
3257
+ return String(value);
3258
+ }
3259
+ };
3260
+ return [
3261
+ ...dimContent,
3262
+ defaultContent,
3263
+ ...meaContent
3264
+ ];
3265
+ };
3266
+ const isSubset = (sub, obj)=>Object.entries(sub).every(([key, value])=>{
3267
+ if ('string' == typeof value) return obj[key] === value;
3268
+ if ('number' == typeof value) return obj[key] === value;
3269
+ return true;
3270
+ });
3176
3271
  const annotationPoint_annotationPoint = (spec, context)=>{
3177
3272
  const { advancedVSeed } = context;
3178
3273
  const { annotation } = advancedVSeed;
@@ -3186,7 +3281,7 @@
3186
3281
  const dataset = advancedVSeed.dataset.flat();
3187
3282
  const selectedData = selectorPoint ? dataset.filter((datum)=>selector_selector(datum, selectorPoint)) : [];
3188
3283
  return selectedData.map((datum)=>({
3189
- zIndex: ANNOTATION_Z_INDEX,
3284
+ zIndex: 1000,
3190
3285
  regionRelative: true,
3191
3286
  position: (data, context)=>{
3192
3287
  const targetDatum = data.find((item)=>isSubset(datum, item));
@@ -3243,7 +3338,7 @@
3243
3338
  const annotationVerticalLine_annotationVerticalLine = (spec, context)=>{
3244
3339
  const { advancedVSeed } = context;
3245
3340
  const { annotation, datasetReshapeInfo } = advancedVSeed;
3246
- const { unfoldInfo } = datasetReshapeInfo[0];
3341
+ const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
3247
3342
  if (!annotation || !annotation.annotationVerticalLine) return spec;
3248
3343
  const { annotationVerticalLine } = annotation;
3249
3344
  const annotationVerticalLineList = Array.isArray(annotationVerticalLine) ? annotationVerticalLine : [
@@ -3262,7 +3357,7 @@
3262
3357
  const dataset = advancedVSeed.dataset.flat();
3263
3358
  const generateOneMarkLine = (x)=>({
3264
3359
  x: x,
3265
- zIndex: ANNOTATION_Z_INDEX,
3360
+ zIndex: 1000,
3266
3361
  line: {
3267
3362
  style: {
3268
3363
  visible: lineVisible,
@@ -3323,9 +3418,9 @@
3323
3418
  }
3324
3419
  const selectedData = selectorPoint ? dataset.filter((datum)=>selector_selector(datum, selectorPoint)) : [];
3325
3420
  return selectedData.map((datum)=>{
3326
- const x = unfoldInfo.encodingX;
3327
- if (!x) return {};
3328
- return generateOneMarkLine(datum[x]);
3421
+ if (datum[unfoldInfo.encodingX]) return generateOneMarkLine(datum[unfoldInfo.encodingX]);
3422
+ if (datum[foldInfo.measureValue]) return generateOneMarkLine(datum[foldInfo.measureValue]);
3423
+ return {};
3329
3424
  });
3330
3425
  });
3331
3426
  const specMarkLine = spec.markLine || [];
@@ -3341,10 +3436,10 @@
3341
3436
  const annotationHorizontalLine_annotationHorizontalLine = (spec, context)=>{
3342
3437
  const { advancedVSeed } = context;
3343
3438
  const { annotation, datasetReshapeInfo } = advancedVSeed;
3344
- const { unfoldInfo } = datasetReshapeInfo[0];
3439
+ const { foldInfo, unfoldInfo } = datasetReshapeInfo[0];
3345
3440
  if (!annotation || !annotation.annotationHorizontalLine) return spec;
3346
3441
  const { annotationHorizontalLine } = annotation;
3347
- const annotationVerticalLineList = Array.isArray(annotationHorizontalLine) ? annotationHorizontalLine : [
3442
+ const annotationHorizontalLineList = Array.isArray(annotationHorizontalLine) ? annotationHorizontalLine : [
3348
3443
  annotationHorizontalLine
3349
3444
  ];
3350
3445
  const positionMap = {
@@ -3355,12 +3450,12 @@
3355
3450
  insideMiddle: 'insideMiddleTop',
3356
3451
  insideEnd: 'insideEndTop'
3357
3452
  };
3358
- const markLine = annotationVerticalLineList.flatMap((annotationVerticalLine)=>{
3359
- 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;
3453
+ const markLine = annotationHorizontalLineList.flatMap((annotationHorizontalLine)=>{
3454
+ 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;
3360
3455
  const dataset = advancedVSeed.dataset.flat();
3361
3456
  const generateOneMarkLine = (y)=>({
3362
3457
  y,
3363
- zIndex: ANNOTATION_Z_INDEX,
3458
+ zIndex: 1000,
3364
3459
  line: {
3365
3460
  style: {
3366
3461
  visible: lineVisible,
@@ -3421,9 +3516,9 @@
3421
3516
  }
3422
3517
  const selectedData = selectorPoint ? dataset.filter((datum)=>selector_selector(datum, selectorPoint)) : [];
3423
3518
  return selectedData.map((datum)=>{
3424
- const y = unfoldInfo.encodingY;
3425
- if (!y) return {};
3426
- return generateOneMarkLine(datum[y]);
3519
+ if (datum[unfoldInfo.encodingY]) return generateOneMarkLine(datum[unfoldInfo.encodingY]);
3520
+ if (datum[foldInfo.measureValue]) return generateOneMarkLine(datum[foldInfo.measureValue]);
3521
+ return {};
3427
3522
  });
3428
3523
  });
3429
3524
  const specMarkLine = spec.markLine || [];
@@ -3461,7 +3556,7 @@
3461
3556
  const labelPosition = positionMap[textPosition || 'top'];
3462
3557
  const isBottom = labelPosition.toLocaleLowerCase().includes('bottom');
3463
3558
  return {
3464
- zIndex: ANNOTATION_Z_INDEX,
3559
+ zIndex: 1000,
3465
3560
  regionRelative: true,
3466
3561
  positions: (data, context)=>{
3467
3562
  const positionData = data.filter((item)=>selectedData.some((datum)=>isSubset(datum, item)));
@@ -3787,7 +3882,7 @@
3787
3882
  const { advancedVSeed } = context;
3788
3883
  const dimensions = advancedVSeed.dimensions;
3789
3884
  if (!dimensions) return result;
3790
- const rowDimensions = dimensions.filter((dim)=>'rowDimension' === dim.location || 'row' === dim.encoding);
3885
+ const rowDimensions = dimensions.filter((dim)=>'row' === dim.encoding);
3791
3886
  const rows = rowDimensions.map((dim)=>({
3792
3887
  dimensionKey: dim.id,
3793
3888
  title: dim.alias || dim.id
@@ -3804,7 +3899,7 @@
3804
3899
  const { advancedVSeed } = context;
3805
3900
  const dimensions = advancedVSeed.dimensions;
3806
3901
  if (!dimensions) return result;
3807
- const columnDimensions = dimensions.filter((dim)=>'columnDimension' === dim.location || 'column' === dim.encoding);
3902
+ const columnDimensions = dimensions.filter((dim)=>'column' === dim.encoding);
3808
3903
  const columns = columnDimensions.map((dim)=>({
3809
3904
  dimensionKey: dim.id,
3810
3905
  title: dim.alias || dim.id
@@ -4077,6 +4172,17 @@
4077
4172
  Builder._advancedPipelineMap.line = lineAdvancedPipeline;
4078
4173
  Builder._specPipelineMap.line = lineSpecPipeline;
4079
4174
  };
4175
+ const defaultEncodingForColumn = (advancedVSeed)=>{
4176
+ const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
4177
+ const measures = findAllMeasures(vseedMeasures);
4178
+ const encoding = {};
4179
+ column_generateDefaultDimensionEncoding(dimensions, encoding);
4180
+ column_generateDefaultMeasureEncoding(measures, encoding);
4181
+ return {
4182
+ ...advancedVSeed,
4183
+ encoding
4184
+ };
4185
+ };
4080
4186
  const encodingForColumn = (advancedVSeed)=>{
4081
4187
  const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
4082
4188
  const measures = findAllMeasures(vseedMeasures);
@@ -4098,40 +4204,52 @@
4098
4204
  encoding.x = uniqueDimIds.slice(0, 1);
4099
4205
  encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
4100
4206
  encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
4101
- encoding.tooltip = uniqueDimIds;
4207
+ encoding.tooltip = uniqueDimIds.filter((d)=>d !== MeasureName);
4102
4208
  encoding.label = [];
4103
4209
  encoding.row = [];
4104
4210
  encoding.column = [];
4105
4211
  };
4106
4212
  const column_generateDimensionEncoding = (dimensions, encoding)=>{
4107
4213
  encoding.x = chunk_QJLMYOTX_i(dimensions.filter((item)=>'xAxis' === item.encoding).map((item)=>item.id));
4108
- encoding.color = chunk_QJLMYOTX_i(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
4109
- encoding.detail = chunk_QJLMYOTX_i(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
4110
4214
  if (0 === encoding.x.length) encoding.x = [
4111
4215
  dimensions[0].id
4112
4216
  ];
4217
+ encoding.color = chunk_QJLMYOTX_i(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
4113
4218
  if (0 === encoding.color.length) encoding.color = [
4114
4219
  MeasureName
4115
4220
  ];
4221
+ encoding.detail = chunk_QJLMYOTX_i(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
4222
+ if (0 === encoding.detail.length) encoding.detail = [
4223
+ MeasureName
4224
+ ];
4225
+ encoding.tooltip = chunk_QJLMYOTX_i(dimensions.map((item)=>item.id));
4226
+ encoding.tooltip = encoding.tooltip.filter((d)=>d !== MeasureName);
4116
4227
  };
4117
4228
  const column_generateDefaultMeasureEncoding = (measures, encoding)=>{
4118
- encoding.tooltip = chunk_QJLMYOTX_i(measures.map((item)=>item.id));
4119
4229
  encoding.y = chunk_QJLMYOTX_i(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
4120
4230
  };
4121
4231
  const column_generateMeasureEncoding = (measures, encoding)=>{
4122
- encoding.tooltip = measures.map((item)=>item.id);
4123
4232
  encoding.y = chunk_QJLMYOTX_i(measures.filter((item)=>'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
4124
4233
  const color = chunk_QJLMYOTX_i(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
4125
4234
  if (color.length > 0) encoding.color = color;
4126
- return encoding;
4235
+ const tooltip = chunk_QJLMYOTX_i(measures.filter((item)=>'tooltip' === item.encoding).map((item)=>item.id));
4236
+ encoding.tooltip = chunk_QJLMYOTX_i([
4237
+ ...encoding.tooltip || [],
4238
+ ...tooltip
4239
+ ]);
4127
4240
  };
4128
4241
  const columnAdvancedPipeline = [
4129
4242
  initAdvancedVSeed_initAdvancedVSeed,
4130
- defaultMeasures_defaultMeasures,
4131
- defaultDimensions,
4132
- defaultMeasureName,
4133
- encodingForColumn,
4134
- buildMeasures,
4243
+ default_defaultMeasures_defaultMeasures,
4244
+ defaultDimensions_defaultDimensions,
4245
+ defaultMeasureName_defaultMeasureName,
4246
+ encodingAdapter([
4247
+ defaultEncodingForColumn,
4248
+ buildMeasures
4249
+ ], [
4250
+ encodingForColumn,
4251
+ buildMeasures
4252
+ ]),
4135
4253
  pivotAdapter([
4136
4254
  reshapeWithEncoding
4137
4255
  ], [
@@ -4328,7 +4446,7 @@
4328
4446
  const dataset = advancedVSeed.dataset.flat();
4329
4447
  const selectedData = selectorPoint ? dataset.filter((datum)=>selector_selector(datum, selectorPoint)) : [];
4330
4448
  return {
4331
- zIndex: ANNOTATION_Z_INDEX,
4449
+ zIndex: 1000,
4332
4450
  regionRelative: true,
4333
4451
  positions: (data, context)=>{
4334
4452
  const positionData = data.filter((item)=>selectedData.some((datum)=>isSubset(datum, item)));
@@ -4491,11 +4609,16 @@
4491
4609
  };
4492
4610
  const columnParallelAdvancedPipeline = [
4493
4611
  initAdvancedVSeed_initAdvancedVSeed,
4494
- defaultMeasures_defaultMeasures,
4495
- defaultDimensions,
4496
- defaultMeasureName,
4497
- encodingForColumn,
4498
- buildMeasures,
4612
+ default_defaultMeasures_defaultMeasures,
4613
+ defaultDimensions_defaultDimensions,
4614
+ defaultMeasureName_defaultMeasureName,
4615
+ encodingAdapter([
4616
+ defaultEncodingForColumn,
4617
+ buildMeasures
4618
+ ], [
4619
+ encodingForColumn,
4620
+ buildMeasures
4621
+ ]),
4499
4622
  pivotAdapter([
4500
4623
  reshapeWithEncoding
4501
4624
  ], [
@@ -4590,11 +4713,16 @@
4590
4713
  };
4591
4714
  const columnPercentAdvancedPipeline = [
4592
4715
  initAdvancedVSeed_initAdvancedVSeed,
4593
- defaultMeasures_defaultMeasures,
4594
- defaultDimensions,
4595
- defaultMeasureName,
4596
- encodingForColumn,
4597
- buildMeasures,
4716
+ default_defaultMeasures_defaultMeasures,
4717
+ defaultDimensions_defaultDimensions,
4718
+ defaultMeasureName_defaultMeasureName,
4719
+ encodingAdapter([
4720
+ defaultEncodingForColumn,
4721
+ buildMeasures
4722
+ ], [
4723
+ encodingForColumn,
4724
+ buildMeasures
4725
+ ]),
4598
4726
  pivotAdapter([
4599
4727
  reshapeWithEncoding
4600
4728
  ], [
@@ -4671,6 +4799,17 @@
4671
4799
  Builder._advancedPipelineMap.columnPercent = columnPercentAdvancedPipeline;
4672
4800
  Builder._specPipelineMap.columnPercent = columnPercentSpecPipeline;
4673
4801
  };
4802
+ const defaultEncodingForBar = (advancedVSeed)=>{
4803
+ const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
4804
+ const measures = findAllMeasures(vseedMeasures);
4805
+ const encoding = {};
4806
+ bar_generateDefaultDimensionEncoding(dimensions, encoding);
4807
+ bar_generateDefaultMeasureEncoding(measures, encoding);
4808
+ return {
4809
+ ...advancedVSeed,
4810
+ encoding
4811
+ };
4812
+ };
4674
4813
  const encodingForBar = (advancedVSeed)=>{
4675
4814
  const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
4676
4815
  const measures = findAllMeasures(vseedMeasures);
@@ -4686,39 +4825,45 @@
4686
4825
  encoding
4687
4826
  };
4688
4827
  };
4689
- const bar_generateDefaultMeasureEncoding = (measures, encoding)=>{
4690
- encoding.tooltip = chunk_QJLMYOTX_i(measures.map((item)=>item.id));
4691
- encoding.x = chunk_QJLMYOTX_i(measures.filter((item)=>'xAxis' === item.encoding || !item.encoding).map((item)=>item.id));
4692
- };
4693
4828
  const bar_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
4694
4829
  const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
4695
4830
  const uniqueDimIds = chunk_QJLMYOTX_i(dimensions.map((d)=>d.id));
4696
4831
  encoding.y = uniqueDimIds.slice(0, 1);
4697
4832
  encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
4698
4833
  encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
4699
- encoding.tooltip = uniqueDimIds;
4834
+ encoding.tooltip = uniqueDimIds.filter((d)=>d !== MeasureName);
4700
4835
  encoding.label = [];
4701
4836
  encoding.row = [];
4702
4837
  encoding.column = [];
4703
4838
  };
4704
- const bar_generateMeasureEncoding = (measures, encoding)=>{
4705
- encoding.tooltip = measures.map((item)=>item.id);
4706
- encoding.x = chunk_QJLMYOTX_i(measures.filter((item)=>'xAxis' === item.encoding || !item.encoding).map((item)=>item.id));
4707
- const color = chunk_QJLMYOTX_i(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
4708
- if (color.length > 0) encoding.color = color;
4709
- return encoding;
4710
- };
4711
4839
  const bar_generateDimensionEncoding = (dimensions, encoding)=>{
4712
4840
  encoding.y = chunk_QJLMYOTX_i(dimensions.filter((item)=>'yAxis' === item.encoding).map((item)=>item.id));
4713
- encoding.color = chunk_QJLMYOTX_i(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
4714
- encoding.detail = chunk_QJLMYOTX_i(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
4715
4841
  if (0 === encoding.y.length) encoding.y = [
4716
4842
  dimensions[0].id
4717
4843
  ];
4844
+ encoding.color = chunk_QJLMYOTX_i(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
4718
4845
  if (0 === encoding.color.length) encoding.color = [
4719
4846
  MeasureName
4720
4847
  ];
4721
- if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.y?.includes(item.id)).map((item)=>item.id);
4848
+ encoding.detail = chunk_QJLMYOTX_i(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
4849
+ if (0 === encoding.detail.length) encoding.detail = [
4850
+ MeasureName
4851
+ ];
4852
+ encoding.tooltip = chunk_QJLMYOTX_i(dimensions.map((item)=>item.id));
4853
+ encoding.tooltip = encoding.tooltip.filter((d)=>d !== MeasureName);
4854
+ };
4855
+ const bar_generateDefaultMeasureEncoding = (measures, encoding)=>{
4856
+ encoding.x = chunk_QJLMYOTX_i(measures.filter((item)=>'xAxis' === item.encoding || !item.encoding).map((item)=>item.id));
4857
+ };
4858
+ const bar_generateMeasureEncoding = (measures, encoding)=>{
4859
+ encoding.x = chunk_QJLMYOTX_i(measures.filter((item)=>'xAxis' === item.encoding || !item.encoding).map((item)=>item.id));
4860
+ const color = chunk_QJLMYOTX_i(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
4861
+ if (color.length > 0) encoding.color = color;
4862
+ const tooltip = chunk_QJLMYOTX_i(measures.filter((item)=>'tooltip' === item.encoding).map((item)=>item.id));
4863
+ encoding.tooltip = chunk_QJLMYOTX_i([
4864
+ ...encoding.tooltip || [],
4865
+ ...tooltip
4866
+ ]);
4722
4867
  };
4723
4868
  const sortYBandAxis = (advancedVSeed, context)=>{
4724
4869
  const result = {
@@ -4738,11 +4883,16 @@
4738
4883
  };
4739
4884
  const barAdvancedPipeline = [
4740
4885
  initAdvancedVSeed_initAdvancedVSeed,
4741
- defaultMeasures_defaultMeasures,
4742
- defaultDimensions,
4743
- defaultMeasureName,
4744
- encodingForBar,
4745
- buildMeasures,
4886
+ default_defaultMeasures_defaultMeasures,
4887
+ defaultDimensions_defaultDimensions,
4888
+ defaultMeasureName_defaultMeasureName,
4889
+ encodingAdapter([
4890
+ defaultEncodingForBar,
4891
+ buildMeasures
4892
+ ], [
4893
+ encodingForBar,
4894
+ buildMeasures
4895
+ ]),
4746
4896
  pivotAdapter([
4747
4897
  reshapeWithEncoding
4748
4898
  ], [
@@ -4893,7 +5043,7 @@
4893
5043
  }
4894
5044
  },
4895
5045
  innerOffset: {
4896
- right: LINEAR_AXIS_INNER_OFFSET_TOP
5046
+ right: 7
4897
5047
  }
4898
5048
  };
4899
5049
  result.axes = [
@@ -5093,11 +5243,16 @@
5093
5243
  };
5094
5244
  const barParallelAdvancedPipeline = [
5095
5245
  initAdvancedVSeed_initAdvancedVSeed,
5096
- defaultMeasures_defaultMeasures,
5097
- defaultDimensions,
5098
- defaultMeasureName,
5099
- encodingForBar,
5100
- buildMeasures,
5246
+ default_defaultMeasures_defaultMeasures,
5247
+ defaultDimensions_defaultDimensions,
5248
+ defaultMeasureName_defaultMeasureName,
5249
+ encodingAdapter([
5250
+ defaultEncodingForBar,
5251
+ buildMeasures
5252
+ ], [
5253
+ encodingForBar,
5254
+ buildMeasures
5255
+ ]),
5101
5256
  pivotAdapter([
5102
5257
  reshapeWithEncoding
5103
5258
  ], [
@@ -5191,11 +5346,16 @@
5191
5346
  };
5192
5347
  const barPercentAdvancedPipeline = [
5193
5348
  initAdvancedVSeed_initAdvancedVSeed,
5194
- defaultMeasures_defaultMeasures,
5195
- defaultDimensions,
5196
- defaultMeasureName,
5197
- encodingForBar,
5198
- buildMeasures,
5349
+ default_defaultMeasures_defaultMeasures,
5350
+ defaultDimensions_defaultDimensions,
5351
+ defaultMeasureName_defaultMeasureName,
5352
+ encodingAdapter([
5353
+ defaultEncodingForBar,
5354
+ buildMeasures
5355
+ ], [
5356
+ encodingForBar,
5357
+ buildMeasures
5358
+ ]),
5199
5359
  pivotAdapter([
5200
5360
  reshapeWithEncoding
5201
5361
  ], [
@@ -5264,11 +5424,16 @@
5264
5424
  };
5265
5425
  const areaAdvancedPipeline = [
5266
5426
  initAdvancedVSeed_initAdvancedVSeed,
5267
- defaultMeasures_defaultMeasures,
5268
- defaultDimensions,
5269
- defaultMeasureName,
5270
- encodingForLine,
5271
- buildMeasures,
5427
+ default_defaultMeasures_defaultMeasures,
5428
+ defaultDimensions_defaultDimensions,
5429
+ defaultMeasureName_defaultMeasureName,
5430
+ encodingAdapter([
5431
+ defaultEncodingForLine,
5432
+ buildMeasures
5433
+ ], [
5434
+ encodingForLine,
5435
+ buildMeasures
5436
+ ]),
5272
5437
  pivotAdapter([
5273
5438
  reshapeWithEncoding
5274
5439
  ], [
@@ -5424,11 +5589,16 @@
5424
5589
  };
5425
5590
  const areaPercentAdvancedPipeline = [
5426
5591
  initAdvancedVSeed_initAdvancedVSeed,
5427
- defaultMeasures_defaultMeasures,
5428
- defaultDimensions,
5429
- defaultMeasureName,
5430
- encodingForLine,
5431
- buildMeasures,
5592
+ default_defaultMeasures_defaultMeasures,
5593
+ defaultDimensions_defaultDimensions,
5594
+ defaultMeasureName_defaultMeasureName,
5595
+ encodingAdapter([
5596
+ defaultEncodingForLine,
5597
+ buildMeasures
5598
+ ], [
5599
+ encodingForLine,
5600
+ buildMeasures
5601
+ ]),
5432
5602
  pivotAdapter([
5433
5603
  reshapeWithEncoding
5434
5604
  ], [
@@ -5502,6 +5672,17 @@
5502
5672
  Builder._advancedPipelineMap.areaPercent = areaPercentAdvancedPipeline;
5503
5673
  Builder._specPipelineMap.areaPercent = areaPercentSpecPipeline;
5504
5674
  };
5675
+ const defaultEncodingForScatter = (advancedVSeed)=>{
5676
+ const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
5677
+ const measures = findAllMeasures(vseedMeasures);
5678
+ const encoding = {};
5679
+ scatter_generateDefaultDimensionEncoding(dimensions, encoding);
5680
+ scatter_generateDefaultMeasureEncoding(measures, encoding);
5681
+ return {
5682
+ ...advancedVSeed,
5683
+ encoding
5684
+ };
5685
+ };
5505
5686
  const encodingForScatter = (advancedVSeed)=>{
5506
5687
  const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
5507
5688
  const measures = findAllMeasures(vseedMeasures);
@@ -5517,33 +5698,43 @@
5517
5698
  encoding
5518
5699
  };
5519
5700
  };
5520
- const scatter_generateDefaultMeasureEncoding = (measures, encoding)=>{
5521
- encoding.tooltip = chunk_QJLMYOTX_i(measures.map((item)=>item.id));
5522
- encoding.y = chunk_QJLMYOTX_i(measures.filter((item)=>'xAxis' === item.encoding || 'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
5523
- };
5524
5701
  const scatter_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
5525
5702
  const dimensionsWithoutMeasureName = dimensions.filter((item)=>item.id !== MeasureName);
5526
5703
  const uniqueDimIds = chunk_QJLMYOTX_i(dimensionsWithoutMeasureName.map((d)=>d.id));
5527
5704
  encoding.color = uniqueDimIds.slice(0);
5528
5705
  encoding.detail = uniqueDimIds.slice(0);
5529
- encoding.tooltip = uniqueDimIds;
5706
+ encoding.tooltip = uniqueDimIds.filter((d)=>d !== MeasureName);
5530
5707
  encoding.label = [];
5531
5708
  encoding.row = [];
5532
5709
  encoding.column = [];
5533
5710
  };
5534
- const scatter_generateMeasureEncoding = (measures, encoding)=>{
5535
- encoding.tooltip = measures.map((item)=>item.id);
5536
- encoding.y = chunk_QJLMYOTX_i(measures.filter((item)=>'xAxis' === item.encoding || 'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
5537
- const color = chunk_QJLMYOTX_i(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
5538
- if (color.length > 0) encoding.color = color;
5539
- };
5540
5711
  const scatter_generateDimensionEncoding = (dimensions, encoding)=>{
5541
5712
  encoding.color = chunk_QJLMYOTX_i(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
5542
- encoding.detail = chunk_QJLMYOTX_i(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
5543
5713
  if (0 === encoding.color.length) encoding.color = [
5544
5714
  MeasureName
5545
5715
  ];
5546
- if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
5716
+ encoding.detail = chunk_QJLMYOTX_i(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
5717
+ if (0 === encoding.detail.length) encoding.detail = [
5718
+ MeasureName
5719
+ ];
5720
+ encoding.tooltip = chunk_QJLMYOTX_i(dimensions.map((item)=>item.id));
5721
+ encoding.tooltip = encoding.tooltip.filter((d)=>d !== MeasureName);
5722
+ };
5723
+ const scatter_generateDefaultMeasureEncoding = (measures, encoding)=>{
5724
+ encoding.y = chunk_QJLMYOTX_i(measures.filter((item)=>'xAxis' === item.encoding || 'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
5725
+ };
5726
+ const scatter_generateMeasureEncoding = (measures, encoding)=>{
5727
+ encoding.tooltip = measures.map((item)=>item.id);
5728
+ encoding.y = chunk_QJLMYOTX_i(measures.filter((item)=>'xAxis' === item.encoding || 'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
5729
+ const color = chunk_QJLMYOTX_i(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
5730
+ if (color.length > 0) encoding.color = [
5731
+ color[0]
5732
+ ];
5733
+ const tooltip = chunk_QJLMYOTX_i(measures.filter((item)=>'tooltip' === item.encoding).map((item)=>item.id));
5734
+ encoding.tooltip = chunk_QJLMYOTX_i([
5735
+ ...encoding.tooltip || [],
5736
+ ...tooltip
5737
+ ]);
5547
5738
  };
5548
5739
  const buildMeasuresForScatter = (advancedVSeed, context)=>{
5549
5740
  const { vseed } = context;
@@ -5571,9 +5762,10 @@
5571
5762
  const isXAxis = encoding.includes('xAxis');
5572
5763
  if (isYAxis) yMeasures.push(item);
5573
5764
  else if (isXAxis) xMeasures.push(item);
5574
- else if (0 === index) yMeasures.push(item);
5765
+ else if (0 !== index) yMeasures.push(item);
5575
5766
  else xMeasures.push(item);
5576
5767
  }
5768
+ if (0 === yMeasures.length && xMeasures.length > 0) yMeasures.push(xMeasures[0]);
5577
5769
  return [
5578
5770
  {
5579
5771
  id: 'scatterMeasures',
@@ -5639,7 +5831,7 @@
5639
5831
  const isEmpty = !encoding.length;
5640
5832
  if (isY) scatterChart.yMeasures.push(item);
5641
5833
  else if (isX) scatterChart.xMeasures.push(item);
5642
- else if (isEmpty) if (0 === scatterChart.yMeasures.length) scatterChart.yMeasures.push(item);
5834
+ else if (isEmpty) if (0 !== scatterChart.yMeasures.length) scatterChart.yMeasures.push(item);
5643
5835
  else scatterChart.xMeasures.push(item);
5644
5836
  });
5645
5837
  return scatterMeasuresToMeasureTree(scatterMeasures);
@@ -5662,6 +5854,7 @@
5662
5854
  if (xMeasures && xMeasures.children) {
5663
5855
  const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, T(dimensions, (d)=>d.id), T(xMeasures.children, (d)=>d.id), encoding, {
5664
5856
  foldMeasureValue: FoldXMeasureValue,
5857
+ foldMeasureId: FoldXMeasureId,
5665
5858
  colorItemAsId: true,
5666
5859
  colorMeasureId: getColorMeasureId(advancedVSeed)
5667
5860
  });
@@ -5672,6 +5865,7 @@
5672
5865
  if (yMeasures && yMeasures.children) {
5673
5866
  const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(datasets[0], T(dimensions, (d)=>d.id), T(yMeasures.children, (d)=>d.id), encoding, {
5674
5867
  foldMeasureValue: FoldYMeasureValue,
5868
+ foldMeasureId: FoldYMeasureId,
5675
5869
  colorItemAsId: true,
5676
5870
  colorMeasureId: getColorMeasureId(advancedVSeed)
5677
5871
  });
@@ -5774,11 +5968,16 @@
5774
5968
  };
5775
5969
  const scatterAdvancedPipeline = [
5776
5970
  initAdvancedVSeed_initAdvancedVSeed,
5777
- defaultMeasures_defaultMeasures,
5778
- defaultDimensions,
5779
- defaultMeasureName,
5780
- encodingForScatter,
5781
- buildMeasuresForScatter,
5971
+ default_defaultMeasures_defaultMeasures,
5972
+ defaultDimensions_defaultDimensions,
5973
+ defaultMeasureName_defaultMeasureName,
5974
+ encodingAdapter([
5975
+ defaultEncodingForScatter,
5976
+ buildMeasuresForScatter
5977
+ ], [
5978
+ encodingForScatter,
5979
+ buildMeasuresForScatter
5980
+ ]),
5782
5981
  pivotAdapter([
5783
5982
  reshapeWithScatterEncoding
5784
5983
  ], [
@@ -5824,6 +6023,105 @@
5824
6023
  }
5825
6024
  };
5826
6025
  };
6026
+ const tooltipScatter = (spec, context)=>{
6027
+ const result = {
6028
+ ...spec
6029
+ };
6030
+ const { advancedVSeed } = context;
6031
+ const { measures, datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed;
6032
+ const baseConfig = advancedVSeed.config[chartType];
6033
+ const { tooltip = {
6034
+ enable: true
6035
+ } } = baseConfig;
6036
+ const { enable } = tooltip;
6037
+ const { foldInfoList } = datasetReshapeInfo[0];
6038
+ result.tooltip = {
6039
+ visible: enable,
6040
+ mark: {
6041
+ title: {
6042
+ visible: false
6043
+ },
6044
+ content: tooltipScatter_createMarkContent(encoding.tooltip || [], dimensions, measures, locale, foldInfoList)
6045
+ },
6046
+ dimension: {
6047
+ visible: false
6048
+ }
6049
+ };
6050
+ return result;
6051
+ };
6052
+ const tooltipScatter_createMarkContent = (tooltip, dimensions, measures, locale, foldInfoList)=>{
6053
+ const dims = dimensions.filter((item)=>tooltip.includes(item.id));
6054
+ const meas = measures.filter((item)=>tooltip.includes(item.id));
6055
+ const dimContent = dims.map((item)=>({
6056
+ visible: true,
6057
+ hasShape: true,
6058
+ shapeType: 'rectRound',
6059
+ key: (v)=>{
6060
+ const datum = v;
6061
+ if (item.alias || item.id) return item.alias || item.id;
6062
+ return datum && datum[item.id];
6063
+ },
6064
+ value: (v)=>{
6065
+ const datum = v;
6066
+ return datum && datum[item.id];
6067
+ }
6068
+ }));
6069
+ const meaContent = meas.map((item)=>({
6070
+ visible: true,
6071
+ hasShape: true,
6072
+ shapeType: 'rectRound',
6073
+ key: item.alias || item.id,
6074
+ value: (v)=>{
6075
+ const datum = v;
6076
+ if (!datum) return '';
6077
+ const id = item.id;
6078
+ if (!datum || !datum[ORIGINAL_DATA] || !datum[ORIGINAL_DATA]) return '';
6079
+ const originalData = datum[ORIGINAL_DATA];
6080
+ const value = originalData[id];
6081
+ const measure = findMeasureById(measures, id);
6082
+ if (!measure) return String(value);
6083
+ const { format = {}, autoFormat = true } = measure;
6084
+ if (!chunk_VCYTMP4D_n(format)) {
6085
+ const formatter = createFormatter(format);
6086
+ return formatter(value);
6087
+ }
6088
+ if (autoFormat) return autoFormatter(value, locale);
6089
+ return String(value);
6090
+ }
6091
+ }));
6092
+ const foldMeaContent = foldInfoList.map((foldInfo)=>({
6093
+ visible: true,
6094
+ hasShape: true,
6095
+ shapeType: 'rectRound',
6096
+ key: (v)=>{
6097
+ const { measureId, foldMap } = foldInfo;
6098
+ const datum = v;
6099
+ const id = datum[measureId];
6100
+ return foldMap[id] || id;
6101
+ },
6102
+ value: (v)=>{
6103
+ const { measureId, measureValue } = foldInfo;
6104
+ const datum = v;
6105
+ if (!datum) return '';
6106
+ const value = datum[measureValue];
6107
+ const id = datum[measureId];
6108
+ const measure = findMeasureById(measures, id);
6109
+ if (!measure) return String(value);
6110
+ const { format = {}, autoFormat = true } = measure;
6111
+ if (!chunk_VCYTMP4D_n(format)) {
6112
+ const formatter = createFormatter(format);
6113
+ return formatter(value);
6114
+ }
6115
+ if (autoFormat) return autoFormatter(value, locale);
6116
+ return String(value);
6117
+ }
6118
+ }));
6119
+ return [
6120
+ ...dimContent,
6121
+ ...foldMeaContent,
6122
+ ...meaContent
6123
+ ];
6124
+ };
5827
6125
  const horizontalCrosshairLine = (spec, context)=>{
5828
6126
  const result = {
5829
6127
  ...spec
@@ -5877,7 +6175,7 @@
5877
6175
  xLinear,
5878
6176
  yLinear,
5879
6177
  label_label,
5880
- tooltip_tooltip,
6178
+ tooltipScatter,
5881
6179
  colorAdapter(discreteLegend, colorLegend),
5882
6180
  verticalCrosshairLine,
5883
6181
  horizontalCrosshairLine,
@@ -5902,7 +6200,7 @@
5902
6200
  xLinear,
5903
6201
  yLinear,
5904
6202
  label_label,
5905
- tooltip_tooltip,
6203
+ tooltipScatter,
5906
6204
  verticalCrosshairLine,
5907
6205
  horizontalCrosshairLine,
5908
6206
  colorPointStyleFill(pointStyle_pointStyle),
@@ -5923,6 +6221,17 @@
5923
6221
  Builder._advancedPipelineMap.scatter = scatterAdvancedPipeline;
5924
6222
  Builder._specPipelineMap.scatter = scatterSpecPipeline;
5925
6223
  };
6224
+ const defaultEncodingForDualAxis = (advancedVSeed)=>{
6225
+ const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
6226
+ const measures = findAllMeasures(vseedMeasures);
6227
+ const encoding = {};
6228
+ dualAxis_generateDefaultDimensionEncoding(dimensions, encoding);
6229
+ dualAxis_generateDefaultMeasureEncoding(measures, encoding);
6230
+ return {
6231
+ ...advancedVSeed,
6232
+ encoding
6233
+ };
6234
+ };
5926
6235
  const encodingForDualAxis = (advancedVSeed)=>{
5927
6236
  const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
5928
6237
  const measures = findAllMeasures(vseedMeasures);
@@ -5938,39 +6247,45 @@
5938
6247
  encoding
5939
6248
  };
5940
6249
  };
5941
- const dualAxis_generateDefaultMeasureEncoding = (measures, encoding)=>{
5942
- encoding.tooltip = chunk_QJLMYOTX_i(measures.map((item)=>item.id));
5943
- encoding.y = chunk_QJLMYOTX_i(measures.filter((item)=>'primaryYAxis' === item.encoding || 'secondaryYAxis' === item.encoding || !item.encoding).map((item)=>item.id));
5944
- };
5945
6250
  const dualAxis_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
5946
6251
  const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
5947
6252
  const uniqueDimIds = chunk_QJLMYOTX_i(dimensions.map((d)=>d.id));
5948
6253
  encoding.x = uniqueDimIds.slice(0, 1);
5949
6254
  encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
5950
6255
  encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
5951
- encoding.tooltip = uniqueDimIds;
6256
+ encoding.tooltip = uniqueDimIds.filter((d)=>d !== MeasureName);
5952
6257
  encoding.label = [];
5953
6258
  encoding.row = [];
5954
6259
  encoding.column = [];
5955
6260
  };
5956
- const dualAxis_generateMeasureEncoding = (measures, encoding)=>{
5957
- encoding.tooltip = measures.map((item)=>item.id);
5958
- encoding.y = chunk_QJLMYOTX_i(measures.filter((item)=>'primaryYAxis' === item.encoding || 'secondaryYAxis' === item.encoding || !item.encoding).map((item)=>item.id));
5959
- const color = chunk_QJLMYOTX_i(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
5960
- if (color.length > 0) encoding.color = color;
5961
- return encoding;
5962
- };
5963
6261
  const dualAxis_generateDimensionEncoding = (dimensions, encoding)=>{
5964
6262
  encoding.x = chunk_QJLMYOTX_i(dimensions.filter((item)=>'xAxis' === item.encoding).map((item)=>item.id));
5965
- encoding.color = chunk_QJLMYOTX_i(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
5966
- encoding.detail = chunk_QJLMYOTX_i(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
5967
6263
  if (0 === encoding.x.length) encoding.x = [
5968
6264
  dimensions[0].id
5969
6265
  ];
6266
+ encoding.color = chunk_QJLMYOTX_i(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
5970
6267
  if (0 === encoding.color.length) encoding.color = [
5971
6268
  MeasureName
5972
6269
  ];
5973
- if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
6270
+ encoding.detail = chunk_QJLMYOTX_i(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
6271
+ if (0 === encoding.detail.length) encoding.detail = [
6272
+ MeasureName
6273
+ ];
6274
+ encoding.tooltip = chunk_QJLMYOTX_i(dimensions.map((item)=>item.id));
6275
+ encoding.tooltip = encoding.tooltip.filter((d)=>d !== MeasureName);
6276
+ };
6277
+ const dualAxis_generateDefaultMeasureEncoding = (measures, encoding)=>{
6278
+ encoding.y = chunk_QJLMYOTX_i(measures.filter((item)=>'primaryYAxis' === item.encoding || 'secondaryYAxis' === item.encoding || !item.encoding).map((item)=>item.id));
6279
+ };
6280
+ const dualAxis_generateMeasureEncoding = (measures, encoding)=>{
6281
+ encoding.y = chunk_QJLMYOTX_i(measures.filter((item)=>'primaryYAxis' === item.encoding || 'secondaryYAxis' === item.encoding || !item.encoding).map((item)=>item.id));
6282
+ const color = chunk_QJLMYOTX_i(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
6283
+ if (color.length > 0) encoding.color = color;
6284
+ const tooltip = chunk_QJLMYOTX_i(measures.filter((item)=>'tooltip' === item.encoding).map((item)=>item.id));
6285
+ encoding.tooltip = chunk_QJLMYOTX_i([
6286
+ ...encoding.tooltip || [],
6287
+ ...tooltip
6288
+ ]);
5974
6289
  };
5975
6290
  const buildMeasuresForDualAxis = (advancedVSeed, context)=>{
5976
6291
  const { vseed } = context;
@@ -6224,11 +6539,16 @@
6224
6539
  };
6225
6540
  const dualAxisAdvancedPipeline = [
6226
6541
  initAdvancedVSeed_initAdvancedVSeed,
6227
- defaultMeasures_defaultMeasures,
6228
- defaultDimensions,
6229
- defaultMeasureName,
6230
- encodingForDualAxis,
6231
- buildMeasuresForDualAxis,
6542
+ default_defaultMeasures_defaultMeasures,
6543
+ defaultDimensions_defaultDimensions,
6544
+ defaultMeasureName_defaultMeasureName,
6545
+ encodingAdapter([
6546
+ defaultEncodingForDualAxis,
6547
+ buildMeasuresForDualAxis
6548
+ ], [
6549
+ encodingForDualAxis,
6550
+ buildMeasuresForDualAxis
6551
+ ]),
6232
6552
  pivotAdapter([
6233
6553
  reshapeWithDualEncoding
6234
6554
  ], [
@@ -6320,7 +6640,7 @@
6320
6640
  const dualChartTypePrimary = (spec, context)=>{
6321
6641
  const result = {
6322
6642
  ...spec,
6323
- zIndex: DUAL_AXIS_CHART_NON_COLUMN_Z_INDEX
6643
+ zIndex: 1001
6324
6644
  };
6325
6645
  const { advancedVSeed, vseed } = context;
6326
6646
  const { chartType } = vseed;
@@ -6340,7 +6660,7 @@
6340
6660
  break;
6341
6661
  case 'column':
6342
6662
  result.type = 'bar';
6343
- result.zIndex = DUAL_AXIS_CHART_COLUMN_Z_INDEX;
6663
+ result.zIndex = 1000;
6344
6664
  break;
6345
6665
  case 'columnParallel':
6346
6666
  {
@@ -6351,7 +6671,7 @@
6351
6671
  datasetReshapeInfo[0].unfoldInfo.encodingDetail
6352
6672
  ];
6353
6673
  columnSpec.type = 'bar';
6354
- result.zIndex = DUAL_AXIS_CHART_COLUMN_Z_INDEX;
6674
+ result.zIndex = 1000;
6355
6675
  break;
6356
6676
  }
6357
6677
  case 'columnPercent':
@@ -6376,7 +6696,7 @@
6376
6696
  const dualChartTypeSecondary = (spec, context)=>{
6377
6697
  const result = {
6378
6698
  ...spec,
6379
- zIndex: DUAL_AXIS_CHART_NON_COLUMN_Z_INDEX
6699
+ zIndex: 1001
6380
6700
  };
6381
6701
  const { advancedVSeed, vseed } = context;
6382
6702
  const { chartType } = vseed;
@@ -6396,7 +6716,7 @@
6396
6716
  break;
6397
6717
  case 'column':
6398
6718
  result.type = 'bar';
6399
- result.zIndex = DUAL_AXIS_CHART_COLUMN_Z_INDEX;
6719
+ result.zIndex = 1000;
6400
6720
  break;
6401
6721
  case 'columnParallel':
6402
6722
  {
@@ -6407,7 +6727,7 @@
6407
6727
  datasetReshapeInfo[0].unfoldInfo.encodingDetail
6408
6728
  ];
6409
6729
  columnSpec.type = 'bar';
6410
- result.zIndex = DUAL_AXIS_CHART_COLUMN_Z_INDEX;
6730
+ result.zIndex = 1000;
6411
6731
  break;
6412
6732
  }
6413
6733
  case 'columnPercent':
@@ -6585,7 +6905,7 @@
6585
6905
  ...spec
6586
6906
  };
6587
6907
  const { advancedVSeed } = context;
6588
- const { measures, datasetReshapeInfo, chartType, locale, dimensions } = advancedVSeed;
6908
+ const { measures, datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed;
6589
6909
  const baseConfig = advancedVSeed.config[chartType];
6590
6910
  const { tooltip = {
6591
6911
  enable: true
@@ -6593,68 +6913,19 @@
6593
6913
  const { enable } = tooltip;
6594
6914
  const foldInfoList = datasetReshapeInfo[0].foldInfoList;
6595
6915
  const unfoldInfo = datasetReshapeInfo[0].unfoldInfo;
6596
- const { measureId, measureValue, measureName } = foldInfoList[0];
6597
- const { encodingColor: colorName } = unfoldInfo;
6598
6916
  result.tooltip = {
6599
6917
  visible: enable,
6600
6918
  mark: {
6601
6919
  title: {
6602
- visible: true
6920
+ visible: false
6603
6921
  },
6604
- content: [
6605
- ...dimensions.map((item)=>({
6606
- visible: true,
6607
- hasShape: true,
6608
- shapeType: 'rectRound',
6609
- key: (datum)=>{
6610
- if (item.alias || item.id) return item.alias || item.id;
6611
- return datum && datum[item.id];
6612
- },
6613
- value: (datum)=>datum && datum[item.id]
6614
- })),
6615
- {
6616
- visible: true,
6617
- hasShape: true,
6618
- key: (datum)=>datum && datum[measureName || colorName] || '',
6619
- value: (datum)=>{
6620
- if (!datum) return '';
6621
- const value = datum[measureValue];
6622
- const id = datum[measureId];
6623
- const measure = findMeasureById(measures, id);
6624
- if (!measure) return String(value);
6625
- const { format = {}, autoFormat = true } = measure;
6626
- if (!chunk_VCYTMP4D_n(format)) {
6627
- const formatter = createFormatter(format);
6628
- return formatter(value);
6629
- }
6630
- if (autoFormat) return autoFormatter(value, locale);
6631
- return String(value);
6632
- }
6633
- }
6634
- ]
6922
+ content: createMarkContent(encoding.tooltip || [], dimensions, measures, locale, foldInfoList[0], unfoldInfo)
6635
6923
  },
6636
6924
  dimension: {
6637
- content: [
6638
- {
6639
- visible: true,
6640
- key: (datum)=>datum && datum[colorName] || '',
6641
- value: (datum)=>{
6642
- if (!datum) return '';
6643
- const value = datum[measureValue];
6644
- const id = datum[measureId];
6645
- const measure = findMeasureById(measures, id);
6646
- if (!measure) return String(value);
6647
- const { format = {}, autoFormat = true } = measure;
6648
- if (!chunk_VCYTMP4D_n(format)) {
6649
- const formatter = createFormatter(format);
6650
- return formatter(value);
6651
- }
6652
- if (autoFormat) return autoFormatter(value, locale);
6653
- return String(value);
6654
- },
6655
- shapeType: 'rectRound'
6656
- }
6657
- ]
6925
+ title: {
6926
+ visible: true
6927
+ },
6928
+ content: createDimensionContent(measures, foldInfoList[0], unfoldInfo, locale)
6658
6929
  }
6659
6930
  };
6660
6931
  return result;
@@ -6664,7 +6935,7 @@
6664
6935
  ...spec
6665
6936
  };
6666
6937
  const { advancedVSeed } = context;
6667
- const { measures, datasetReshapeInfo, chartType, locale, dimensions } = advancedVSeed;
6938
+ const { measures, datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed;
6668
6939
  const baseConfig = advancedVSeed.config[chartType];
6669
6940
  const { tooltip = {
6670
6941
  enable: true
@@ -6673,68 +6944,19 @@
6673
6944
  if (chunk_JK3VNB42_n(datasetReshapeInfo[0].foldInfoList?.[1])) return result;
6674
6945
  const foldInfoList = datasetReshapeInfo[0].foldInfoList;
6675
6946
  const unfoldInfo = datasetReshapeInfo[0].unfoldInfo;
6676
- const { measureId, measureValue, measureName } = foldInfoList[1];
6677
- const { encodingColorId } = unfoldInfo;
6678
6947
  result.tooltip = {
6679
6948
  visible: enable,
6680
6949
  mark: {
6681
6950
  title: {
6682
- visible: true
6951
+ visible: false
6683
6952
  },
6684
- content: [
6685
- ...dimensions.map((item)=>({
6686
- visible: true,
6687
- hasShape: true,
6688
- shapeType: 'rectRound',
6689
- key: (datum)=>{
6690
- if (item.alias || item.id) return item.alias || item.id;
6691
- return datum && datum[item.id];
6692
- },
6693
- value: (datum)=>datum && datum[item.id]
6694
- })),
6695
- {
6696
- visible: true,
6697
- hasShape: true,
6698
- key: (datum)=>datum && datum[measureName || encodingColorId] || '',
6699
- value: (datum)=>{
6700
- if (!datum) return '';
6701
- const value = datum[measureValue];
6702
- const id = datum[measureId];
6703
- const measure = findMeasureById(measures, id);
6704
- if (!measure) return String(value);
6705
- const { format = {}, autoFormat = true } = measure;
6706
- if (!chunk_VCYTMP4D_n(format)) {
6707
- const formatter = createFormatter(format);
6708
- return formatter(value);
6709
- }
6710
- if (autoFormat) return autoFormatter(value, locale);
6711
- return String(value);
6712
- }
6713
- }
6714
- ]
6953
+ content: createMarkContent(encoding.tooltip || [], dimensions, measures, locale, foldInfoList[1], unfoldInfo)
6715
6954
  },
6716
6955
  dimension: {
6717
- content: [
6718
- {
6719
- visible: true,
6720
- key: (datum)=>datum && datum[encodingColorId] || '',
6721
- value: (datum)=>{
6722
- if (!datum) return '';
6723
- const value = datum[measureValue];
6724
- const id = datum[measureId];
6725
- const measure = findMeasureById(measures, id);
6726
- if (!measure) return String(value);
6727
- const { format = {}, autoFormat = true } = measure;
6728
- if (!chunk_VCYTMP4D_n(format)) {
6729
- const formatter = createFormatter(format);
6730
- return formatter(value);
6731
- }
6732
- if (autoFormat) return autoFormatter(value, locale);
6733
- return String(value);
6734
- },
6735
- shapeType: 'rectRound'
6736
- }
6737
- ]
6956
+ title: {
6957
+ visible: true
6958
+ },
6959
+ content: createDimensionContent(measures, foldInfoList[1], unfoldInfo, locale)
6738
6960
  }
6739
6961
  };
6740
6962
  return result;
@@ -6751,7 +6973,8 @@
6751
6973
  const yAxisConfig = Array.isArray(primaryYAxis) ? primaryYAxis[index] || primaryYAxis[0] : primaryYAxis;
6752
6974
  const alignTicks = advancedVSeed.config?.[chartType]?.alignTicks;
6753
6975
  const alignTicksConfig = Array.isArray(alignTicks) ? alignTicks[index] || alignTicks[0] : alignTicks;
6754
- if (foldInfoList?.[0] && chunk_VCYTMP4D_n(foldInfoList[0].foldMap)) return result;
6976
+ if (chunk_JK3VNB42_n(foldInfoList?.[0])) return result;
6977
+ const isEmptySecondary = chunk_VCYTMP4D_n(foldInfoList?.[0].foldMap);
6755
6978
  const id = `${reshapeInfoId}-primary-axis`;
6756
6979
  const seriesIds = [
6757
6980
  `${reshapeInfoId}-primary-series`,
@@ -6774,7 +6997,7 @@
6774
6997
  }
6775
6998
  const { visible = true, label, tick, title, grid, line, zero, nice, inverse, max, min, log, logBase = 10 } = yAxisConfig;
6776
6999
  const linearAxis = {
6777
- visible,
7000
+ visible: isEmptySecondary ? false : visible,
6778
7001
  id,
6779
7002
  seriesId,
6780
7003
  type: log ? 'log' : 'linear',
@@ -6827,7 +7050,7 @@
6827
7050
  }
6828
7051
  },
6829
7052
  innerOffset: {
6830
- top: LINEAR_AXIS_INNER_OFFSET_TOP
7053
+ top: 7
6831
7054
  }
6832
7055
  };
6833
7056
  result.axes = [
@@ -6849,6 +7072,8 @@
6849
7072
  const alignTicks = advancedVSeed.config?.[chartType]?.alignTicks;
6850
7073
  const alignTicksConfig = Array.isArray(alignTicks) ? alignTicks[index] || alignTicks[0] : alignTicks;
6851
7074
  if (chunk_JK3VNB42_n(foldInfoList?.[1])) return result;
7075
+ const isEmptySecondary = chunk_VCYTMP4D_n(foldInfoList?.[1].foldMap);
7076
+ const onlySecondary = chunk_VCYTMP4D_n(foldInfoList?.[0].foldMap) && !isEmptySecondary;
6852
7077
  const sync = {
6853
7078
  axisId: `${reshapeInfoId}-primary-axis`,
6854
7079
  zeroAlign: true
@@ -6876,7 +7101,7 @@
6876
7101
  }
6877
7102
  const { visible = true, label, tick, title, grid, line, zero, nice, inverse, max, min, log, logBase = 10 } = yAxisConfig;
6878
7103
  const linearAxis = {
6879
- visible,
7104
+ visible: isEmptySecondary ? false : visible,
6880
7105
  id,
6881
7106
  seriesId,
6882
7107
  sync,
@@ -6916,7 +7141,7 @@
6916
7141
  }
6917
7142
  },
6918
7143
  grid: {
6919
- visible: grid?.visible,
7144
+ visible: onlySecondary ? true : grid?.visible,
6920
7145
  style: {
6921
7146
  lineWidth: grid?.gridWidth,
6922
7147
  stroke: grid?.gridColor
@@ -6930,7 +7155,7 @@
6930
7155
  }
6931
7156
  },
6932
7157
  innerOffset: {
6933
- top: LINEAR_AXIS_INNER_OFFSET_TOP
7158
+ top: 7
6934
7159
  }
6935
7160
  };
6936
7161
  result.axes = [
@@ -7061,6 +7286,17 @@
7061
7286
  Builder._advancedPipelineMap.dualAxis = dualAxisAdvancedPipeline;
7062
7287
  Builder._specPipelineMap.dualAxis = dualAxisSpecPipeline;
7063
7288
  };
7289
+ const defaultEncodingForPie = (advancedVSeed)=>{
7290
+ const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
7291
+ const measures = findAllMeasures(vseedMeasures);
7292
+ const encoding = {};
7293
+ pie_generateDefaultDimensionEncoding(dimensions, encoding);
7294
+ pie_generateDefaultMeasureEncoding(measures, encoding);
7295
+ return {
7296
+ ...advancedVSeed,
7297
+ encoding
7298
+ };
7299
+ };
7064
7300
  const encodingForPie = (advancedVSeed)=>{
7065
7301
  const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
7066
7302
  const measures = findAllMeasures(vseedMeasures);
@@ -7076,40 +7312,52 @@
7076
7312
  encoding
7077
7313
  };
7078
7314
  };
7079
- const pie_generateDefaultMeasureEncoding = (measures, encoding)=>{
7080
- encoding.tooltip = chunk_QJLMYOTX_i(measures.map((item)=>item.id));
7081
- encoding.angle = chunk_QJLMYOTX_i(measures.filter((item)=>'angle' === item.encoding || !item.encoding).map((item)=>item.id));
7082
- };
7083
7315
  const pie_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
7084
7316
  const uniqueDimIds = chunk_QJLMYOTX_i(dimensions.map((d)=>d.id));
7085
7317
  encoding.color = uniqueDimIds.slice(0);
7086
7318
  encoding.detail = uniqueDimIds.slice(0);
7087
- encoding.tooltip = uniqueDimIds;
7319
+ encoding.tooltip = uniqueDimIds.filter((d)=>d !== MeasureName);
7088
7320
  encoding.label = [];
7089
7321
  encoding.row = [];
7090
7322
  encoding.column = [];
7091
7323
  };
7092
- const pie_generateMeasureEncoding = (measures, encoding)=>{
7093
- encoding.tooltip = measures.map((item)=>item.id);
7094
- encoding.angle = chunk_QJLMYOTX_i(measures.filter((item)=>'angle' === item.encoding || !item.encoding).map((item)=>item.id));
7095
- const color = chunk_QJLMYOTX_i(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7096
- if (color.length > 0) encoding.color = color;
7097
- };
7098
7324
  const pie_generateDimensionEncoding = (dimensions, encoding)=>{
7099
7325
  encoding.color = chunk_QJLMYOTX_i(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7100
- encoding.detail = chunk_QJLMYOTX_i(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
7101
7326
  if (0 === encoding.color.length) encoding.color = [
7102
7327
  MeasureName
7103
7328
  ];
7104
- if (0 === encoding.detail.length) encoding.detail = dimensions.map((item)=>item.id);
7329
+ encoding.detail = chunk_QJLMYOTX_i(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
7330
+ if (0 === encoding.detail.length) encoding.detail = [
7331
+ MeasureName
7332
+ ];
7333
+ encoding.tooltip = chunk_QJLMYOTX_i(dimensions.map((item)=>item.id));
7334
+ encoding.tooltip = encoding.tooltip.filter((d)=>d !== MeasureName);
7335
+ };
7336
+ const pie_generateDefaultMeasureEncoding = (measures, encoding)=>{
7337
+ encoding.angle = chunk_QJLMYOTX_i(measures.filter((item)=>'angle' === item.encoding || !item.encoding).map((item)=>item.id));
7338
+ };
7339
+ const pie_generateMeasureEncoding = (measures, encoding)=>{
7340
+ encoding.angle = chunk_QJLMYOTX_i(measures.filter((item)=>'angle' === item.encoding || !item.encoding).map((item)=>item.id));
7341
+ const color = chunk_QJLMYOTX_i(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7342
+ if (color.length > 0) encoding.color = color;
7343
+ const tooltip = chunk_QJLMYOTX_i(measures.filter((item)=>'tooltip' === item.encoding).map((item)=>item.id));
7344
+ encoding.tooltip = chunk_QJLMYOTX_i([
7345
+ ...encoding.tooltip || [],
7346
+ ...tooltip
7347
+ ]);
7105
7348
  };
7106
7349
  const pieAdvancedPipeline = [
7107
7350
  initAdvancedVSeed_initAdvancedVSeed,
7108
- defaultMeasures_defaultMeasures,
7109
- defaultDimensions,
7110
- defaultMeasureName,
7111
- encodingForPie,
7112
- buildMeasures,
7351
+ default_defaultMeasures_defaultMeasures,
7352
+ defaultDimensions_defaultDimensions,
7353
+ defaultMeasureName_defaultMeasureName,
7354
+ encodingAdapter([
7355
+ defaultEncodingForPie,
7356
+ buildMeasures
7357
+ ], [
7358
+ encodingForPie,
7359
+ buildMeasures
7360
+ ]),
7113
7361
  pivotAdapter([
7114
7362
  reshapeWithEncoding
7115
7363
  ], [
@@ -7225,11 +7473,16 @@
7225
7473
  };
7226
7474
  const donutAdvancedPipeline = [
7227
7475
  initAdvancedVSeed_initAdvancedVSeed,
7228
- defaultMeasures_defaultMeasures,
7229
- defaultDimensions,
7230
- defaultMeasureName,
7231
- buildMeasures,
7232
- encodingForPie,
7476
+ default_defaultMeasures_defaultMeasures,
7477
+ defaultDimensions_defaultDimensions,
7478
+ defaultMeasureName_defaultMeasureName,
7479
+ encodingAdapter([
7480
+ defaultEncodingForPie,
7481
+ buildMeasures
7482
+ ], [
7483
+ encodingForPie,
7484
+ buildMeasures
7485
+ ]),
7233
7486
  pivotAdapter([
7234
7487
  reshapeWithEncoding
7235
7488
  ], [
@@ -7305,6 +7558,17 @@
7305
7558
  Builder._advancedPipelineMap.donut = donutAdvancedPipeline;
7306
7559
  Builder._specPipelineMap.donut = donutSpecPipeline;
7307
7560
  };
7561
+ const defaultEncodingForRose = (advancedVSeed)=>{
7562
+ const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
7563
+ const measures = findAllMeasures(vseedMeasures);
7564
+ const encoding = {};
7565
+ rose_generateDefaultDimensionEncoding(dimensions, encoding);
7566
+ rose_generateDefaultMeasureEncoding(measures, encoding);
7567
+ return {
7568
+ ...advancedVSeed,
7569
+ encoding
7570
+ };
7571
+ };
7308
7572
  const encodingForRose = (advancedVSeed)=>{
7309
7573
  const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
7310
7574
  const measures = findAllMeasures(vseedMeasures);
@@ -7320,46 +7584,58 @@
7320
7584
  encoding
7321
7585
  };
7322
7586
  };
7323
- const rose_generateDefaultMeasureEncoding = (measures, encoding)=>{
7324
- encoding.tooltip = chunk_QJLMYOTX_i(measures.map((item)=>item.id));
7325
- encoding.radius = chunk_QJLMYOTX_i(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
7326
- };
7327
7587
  const rose_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
7328
7588
  const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
7329
7589
  const uniqueDimIds = chunk_QJLMYOTX_i(dimensions.map((d)=>d.id));
7330
7590
  encoding.angle = uniqueDimIds.slice(0, 1);
7331
7591
  encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
7332
7592
  encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
7333
- encoding.tooltip = uniqueDimIds;
7593
+ encoding.tooltip = uniqueDimIds.filter((d)=>d !== MeasureName);
7334
7594
  encoding.label = [];
7335
7595
  encoding.row = [];
7336
7596
  encoding.column = [];
7337
7597
  };
7338
- const rose_generateMeasureEncoding = (measures, encoding)=>{
7339
- encoding.tooltip = measures.map((item)=>item.id);
7340
- encoding.radius = chunk_QJLMYOTX_i(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
7341
- const color = chunk_QJLMYOTX_i(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7342
- if (color.length > 0) encoding.color = color;
7343
- };
7344
7598
  const rose_generateDimensionEncoding = (dimensions, encoding)=>{
7345
7599
  encoding.angle = chunk_QJLMYOTX_i(dimensions.filter((item)=>'angle' === item.encoding).map((item)=>item.id));
7346
- encoding.color = chunk_QJLMYOTX_i(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7347
- encoding.detail = chunk_QJLMYOTX_i(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
7348
7600
  if (0 === encoding.angle.length) encoding.angle = [
7349
7601
  dimensions[0].id
7350
7602
  ];
7603
+ encoding.color = chunk_QJLMYOTX_i(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7351
7604
  if (0 === encoding.color.length) encoding.color = [
7352
7605
  MeasureName
7353
7606
  ];
7354
- if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.angle?.includes(item.id)).map((item)=>item.id);
7607
+ encoding.detail = chunk_QJLMYOTX_i(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
7608
+ if (0 === encoding.detail.length) encoding.detail = [
7609
+ MeasureName
7610
+ ];
7611
+ encoding.tooltip = chunk_QJLMYOTX_i(dimensions.map((item)=>item.id));
7612
+ encoding.tooltip = encoding.tooltip.filter((d)=>d !== MeasureName);
7613
+ };
7614
+ const rose_generateDefaultMeasureEncoding = (measures, encoding)=>{
7615
+ encoding.radius = chunk_QJLMYOTX_i(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
7616
+ };
7617
+ const rose_generateMeasureEncoding = (measures, encoding)=>{
7618
+ encoding.radius = chunk_QJLMYOTX_i(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
7619
+ const color = chunk_QJLMYOTX_i(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7620
+ if (color.length > 0) encoding.color = color;
7621
+ const tooltip = chunk_QJLMYOTX_i(measures.filter((item)=>'tooltip' === item.encoding).map((item)=>item.id));
7622
+ encoding.tooltip = chunk_QJLMYOTX_i([
7623
+ ...encoding.tooltip || [],
7624
+ ...tooltip
7625
+ ]);
7355
7626
  };
7356
7627
  const roseAdvancedPipeline = [
7357
7628
  initAdvancedVSeed_initAdvancedVSeed,
7358
- defaultMeasures_defaultMeasures,
7359
- defaultDimensions,
7360
- defaultMeasureName,
7361
- encodingForRose,
7362
- buildMeasures,
7629
+ default_defaultMeasures_defaultMeasures,
7630
+ defaultDimensions_defaultDimensions,
7631
+ defaultMeasureName_defaultMeasureName,
7632
+ encodingAdapter([
7633
+ defaultEncodingForRose,
7634
+ buildMeasures
7635
+ ], [
7636
+ encodingForRose,
7637
+ buildMeasures
7638
+ ]),
7363
7639
  pivotAdapter([
7364
7640
  reshapeWithEncoding
7365
7641
  ], [
@@ -7555,11 +7831,16 @@
7555
7831
  };
7556
7832
  const roseParallelAdvancedPipeline = [
7557
7833
  initAdvancedVSeed_initAdvancedVSeed,
7558
- defaultMeasures_defaultMeasures,
7559
- defaultDimensions,
7560
- defaultMeasureName,
7561
- encodingForRose,
7562
- buildMeasures,
7834
+ default_defaultMeasures_defaultMeasures,
7835
+ defaultDimensions_defaultDimensions,
7836
+ defaultMeasureName_defaultMeasureName,
7837
+ encodingAdapter([
7838
+ defaultEncodingForRose,
7839
+ buildMeasures
7840
+ ], [
7841
+ encodingForRose,
7842
+ buildMeasures
7843
+ ]),
7563
7844
  pivotAdapter([
7564
7845
  reshapeWithEncoding
7565
7846
  ], [
@@ -7665,6 +7946,17 @@
7665
7946
  Builder._advancedPipelineMap.roseParallel = roseParallelAdvancedPipeline;
7666
7947
  Builder._specPipelineMap.roseParallel = roseParallelSpecPipeline;
7667
7948
  };
7949
+ const defaultEncodingForRadar = (advancedVSeed)=>{
7950
+ const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
7951
+ const measures = findAllMeasures(vseedMeasures);
7952
+ const encoding = {};
7953
+ radar_generateDefaultDimensionEncoding(dimensions, encoding);
7954
+ radar_generateDefaultMeasureEncoding(measures, encoding);
7955
+ return {
7956
+ ...advancedVSeed,
7957
+ encoding
7958
+ };
7959
+ };
7668
7960
  const encodingForRadar = (advancedVSeed)=>{
7669
7961
  const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
7670
7962
  const measures = findAllMeasures(vseedMeasures);
@@ -7680,44 +7972,57 @@
7680
7972
  encoding
7681
7973
  };
7682
7974
  };
7683
- const radar_generateDefaultMeasureEncoding = (measures, encoding)=>{
7684
- encoding.tooltip = chunk_QJLMYOTX_i(measures.map((item)=>item.id));
7685
- encoding.radius = chunk_QJLMYOTX_i(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
7686
- };
7687
7975
  const radar_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
7688
7976
  const uniqueDimIds = chunk_QJLMYOTX_i(dimensions.map((d)=>d.id));
7689
7977
  encoding.angle = uniqueDimIds.slice(0, 1);
7690
7978
  encoding.color = uniqueDimIds.slice(1);
7691
- encoding.tooltip = uniqueDimIds;
7979
+ encoding.tooltip = uniqueDimIds.filter((d)=>d !== MeasureName);
7692
7980
  encoding.detail = [];
7693
7981
  encoding.label = [];
7694
7982
  encoding.row = [];
7695
7983
  encoding.column = [];
7696
7984
  };
7697
- const radar_generateMeasureEncoding = (measures, encoding)=>{
7698
- encoding.tooltip = measures.map((item)=>item.id);
7699
- encoding.radius = chunk_QJLMYOTX_i(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
7700
- const color = chunk_QJLMYOTX_i(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7701
- if (color.length > 0) encoding.color = color;
7702
- };
7703
7985
  const radar_generateDimensionEncoding = (dimensions, encoding)=>{
7704
7986
  encoding.angle = chunk_QJLMYOTX_i(dimensions.filter((item)=>'angle' === item.encoding).map((item)=>item.id));
7705
- encoding.color = chunk_QJLMYOTX_i(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7706
- encoding.detail = [];
7707
7987
  if (0 === encoding.angle.length) encoding.angle = [
7708
7988
  dimensions[0].id
7709
7989
  ];
7990
+ encoding.color = chunk_QJLMYOTX_i(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7710
7991
  if (0 === encoding.color.length) encoding.color = [
7711
7992
  MeasureName
7712
7993
  ];
7994
+ encoding.detail = [];
7995
+ if (0 === encoding.detail.length) encoding.detail = [
7996
+ MeasureName
7997
+ ];
7998
+ encoding.tooltip = chunk_QJLMYOTX_i(dimensions.map((item)=>item.id));
7999
+ encoding.tooltip = encoding.tooltip.filter((d)=>d !== MeasureName);
8000
+ };
8001
+ const radar_generateDefaultMeasureEncoding = (measures, encoding)=>{
8002
+ encoding.radius = chunk_QJLMYOTX_i(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
8003
+ };
8004
+ const radar_generateMeasureEncoding = (measures, encoding)=>{
8005
+ encoding.radius = chunk_QJLMYOTX_i(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
8006
+ const color = chunk_QJLMYOTX_i(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
8007
+ if (color.length > 0) encoding.color = color;
8008
+ const tooltip = chunk_QJLMYOTX_i(measures.filter((item)=>'tooltip' === item.encoding).map((item)=>item.id));
8009
+ encoding.tooltip = chunk_QJLMYOTX_i([
8010
+ ...encoding.tooltip || [],
8011
+ ...tooltip
8012
+ ]);
7713
8013
  };
7714
8014
  const radarAdvancedPipeline = [
7715
8015
  initAdvancedVSeed_initAdvancedVSeed,
7716
- defaultMeasures_defaultMeasures,
7717
- defaultDimensions,
7718
- defaultMeasureName,
7719
- encodingForRadar,
7720
- buildMeasures,
8016
+ default_defaultMeasures_defaultMeasures,
8017
+ defaultDimensions_defaultDimensions,
8018
+ defaultMeasureName_defaultMeasureName,
8019
+ encodingAdapter([
8020
+ defaultEncodingForRadar,
8021
+ buildMeasures
8022
+ ], [
8023
+ encodingForRadar,
8024
+ buildMeasures
8025
+ ]),
7721
8026
  pivotAdapter([
7722
8027
  reshapeWithEncoding
7723
8028
  ], [
@@ -7851,6 +8156,17 @@
7851
8156
  Builder._advancedPipelineMap.radar = radarAdvancedPipeline;
7852
8157
  Builder._specPipelineMap.radar = radarSpecPipeline;
7853
8158
  };
8159
+ const defaultEncodingForFunnel = (advancedVSeed)=>{
8160
+ const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
8161
+ const measures = findAllMeasures(vseedMeasures);
8162
+ const encoding = {};
8163
+ funnel_generateDefaultDimensionEncoding(dimensions, encoding);
8164
+ funnel_generateDefaultMeasureEncoding(measures, encoding);
8165
+ return {
8166
+ ...advancedVSeed,
8167
+ encoding
8168
+ };
8169
+ };
7854
8170
  const encodingForFunnel = (advancedVSeed)=>{
7855
8171
  const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
7856
8172
  const measures = findAllMeasures(vseedMeasures);
@@ -7866,40 +8182,54 @@
7866
8182
  encoding
7867
8183
  };
7868
8184
  };
7869
- const funnel_generateDefaultMeasureEncoding = (measures, encoding)=>{
7870
- encoding.tooltip = chunk_QJLMYOTX_i(measures.map((item)=>item.id));
7871
- encoding.size = chunk_QJLMYOTX_i(measures.filter((item)=>'size' === item.encoding || !item.encoding).map((item)=>item.id));
7872
- };
7873
8185
  const funnel_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
7874
8186
  const uniqueDimIds = chunk_QJLMYOTX_i(dimensions.map((d)=>d.id));
7875
8187
  encoding.color = uniqueDimIds.slice(0);
7876
8188
  encoding.detail = uniqueDimIds.slice(0);
7877
- encoding.tooltip = uniqueDimIds;
8189
+ encoding.tooltip = uniqueDimIds.filter((d)=>d !== MeasureName);
7878
8190
  encoding.label = [];
7879
8191
  encoding.row = [];
7880
8192
  encoding.column = [];
7881
8193
  };
7882
- const funnel_generateMeasureEncoding = (measures, encoding)=>{
7883
- encoding.tooltip = measures.map((item)=>item.id);
7884
- encoding.size = chunk_QJLMYOTX_i(measures.filter((item)=>'size' === item.encoding || !item.encoding).map((item)=>item.id));
7885
- const color = chunk_QJLMYOTX_i(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7886
- if (color.length > 0) encoding.color = color;
7887
- };
7888
8194
  const funnel_generateDimensionEncoding = (dimensions, encoding)=>{
7889
8195
  encoding.color = chunk_QJLMYOTX_i(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7890
- encoding.detail = chunk_QJLMYOTX_i(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
7891
8196
  if (0 === encoding.color.length) encoding.color = [
7892
8197
  MeasureName
7893
8198
  ];
7894
- if (0 === encoding.detail.length) encoding.detail = dimensions.map((item)=>item.id);
8199
+ encoding.detail = chunk_QJLMYOTX_i(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
8200
+ if (0 === encoding.detail.length) encoding.detail = [
8201
+ MeasureName
8202
+ ];
8203
+ encoding.tooltip = chunk_QJLMYOTX_i(dimensions.map((item)=>item.id));
8204
+ encoding.tooltip = encoding.tooltip.filter((d)=>d !== MeasureName);
8205
+ };
8206
+ const funnel_generateDefaultMeasureEncoding = (measures, encoding)=>{
8207
+ encoding.size = chunk_QJLMYOTX_i(measures.filter((item)=>'size' === item.encoding || !item.encoding).map((item)=>item.id));
8208
+ };
8209
+ const funnel_generateMeasureEncoding = (measures, encoding)=>{
8210
+ encoding.size = chunk_QJLMYOTX_i(measures.filter((item)=>'size' === item.encoding || !item.encoding).map((item)=>item.id));
8211
+ const color = chunk_QJLMYOTX_i(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
8212
+ if (color.length > 0) encoding.color = [
8213
+ color[0]
8214
+ ];
8215
+ const tooltip = chunk_QJLMYOTX_i(measures.filter((item)=>'tooltip' === item.encoding).map((item)=>item.id));
8216
+ encoding.tooltip = chunk_QJLMYOTX_i([
8217
+ ...encoding.tooltip || [],
8218
+ ...tooltip
8219
+ ]);
7895
8220
  };
7896
8221
  const funnelAdvancedPipeline = [
7897
8222
  initAdvancedVSeed_initAdvancedVSeed,
7898
- defaultMeasures_defaultMeasures,
7899
- defaultDimensions,
7900
- defaultMeasureName,
7901
- encodingForFunnel,
7902
- buildMeasures,
8223
+ default_defaultMeasures_defaultMeasures,
8224
+ defaultDimensions_defaultDimensions,
8225
+ defaultMeasureName_defaultMeasureName,
8226
+ encodingAdapter([
8227
+ defaultEncodingForFunnel,
8228
+ buildMeasures
8229
+ ], [
8230
+ encodingForFunnel,
8231
+ buildMeasures
8232
+ ]),
7903
8233
  pivotAdapter([
7904
8234
  reshapeWithEncoding
7905
8235
  ], [
@@ -8012,6 +8342,17 @@
8012
8342
  Builder._advancedPipelineMap.funnel = funnelAdvancedPipeline;
8013
8343
  Builder._specPipelineMap.funnel = funnelSpecPipeline;
8014
8344
  };
8345
+ const defaultEncodingForHeatmap = (advancedVSeed)=>{
8346
+ const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
8347
+ const measures = findAllMeasures(vseedMeasures);
8348
+ const encoding = {};
8349
+ heatmap_generateDefaultDimensionEncoding(dimensions, encoding);
8350
+ heatmap_generateDefaultMeasureEncoding(measures, encoding);
8351
+ return {
8352
+ ...advancedVSeed,
8353
+ encoding
8354
+ };
8355
+ };
8015
8356
  const encodingForHeatmap = (advancedVSeed)=>{
8016
8357
  const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
8017
8358
  const measures = findAllMeasures(vseedMeasures);
@@ -8027,10 +8368,6 @@
8027
8368
  encoding
8028
8369
  };
8029
8370
  };
8030
- const heatmap_generateDefaultMeasureEncoding = (measures, encoding)=>{
8031
- encoding.tooltip = chunk_QJLMYOTX_i(measures.map((item)=>item.id));
8032
- encoding.color = chunk_QJLMYOTX_i(measures.filter((item)=>'color' === item.encoding || !item.encoding).map((item)=>item.id));
8033
- };
8034
8371
  const heatmap_generateDefaultDimensionEncoding = (dimensions, encoding)=>{
8035
8372
  const onlyMeasureName = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureName);
8036
8373
  const uniqueDimIds = chunk_QJLMYOTX_i(dimensions.map((d)=>d.id));
@@ -8038,39 +8375,59 @@
8038
8375
  encoding.y = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
8039
8376
  encoding.color = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
8040
8377
  encoding.detail = uniqueDimIds.slice(onlyMeasureName ? 0 : 1);
8041
- encoding.tooltip = uniqueDimIds;
8378
+ encoding.tooltip = uniqueDimIds.filter((d)=>d !== MeasureName);
8042
8379
  encoding.label = [];
8043
8380
  encoding.row = [];
8044
8381
  encoding.column = [];
8045
8382
  };
8046
- const heatmap_generateMeasureEncoding = (measures, encoding)=>{
8047
- encoding.tooltip = measures.map((item)=>item.id);
8048
- const color = chunk_QJLMYOTX_i(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
8049
- if (color.length > 0) encoding.color = color;
8050
- return encoding;
8051
- };
8052
8383
  const heatmap_generateDimensionEncoding = (dimensions, encoding)=>{
8053
8384
  encoding.x = chunk_QJLMYOTX_i(dimensions.filter((item)=>'xAxis' === item.encoding).map((item)=>item.id));
8054
- encoding.y = chunk_QJLMYOTX_i(dimensions.filter((item)=>'yAxis' === item.encoding).map((item)=>item.id));
8055
- encoding.color = chunk_QJLMYOTX_i(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
8056
- encoding.detail = chunk_QJLMYOTX_i(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
8057
8385
  if (0 === encoding.x.length) encoding.x = [
8058
8386
  dimensions[0].id
8059
8387
  ];
8388
+ encoding.y = chunk_QJLMYOTX_i(dimensions.filter((item)=>'yAxis' === item.encoding).map((item)=>item.id));
8060
8389
  if (0 === encoding.y.length) if (dimensions.length > 1) encoding.y = dimensions.slice(1).map((item)=>item.id);
8061
8390
  else encoding.y = dimensions.slice(0).map((item)=>item.id);
8391
+ encoding.color = chunk_QJLMYOTX_i(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
8062
8392
  if (0 === encoding.color.length) encoding.color = [
8063
8393
  MeasureName
8064
8394
  ];
8065
- if (0 === encoding.detail.length) encoding.detail = dimensions.filter((item)=>!encoding.x?.includes(item.id)).map((item)=>item.id);
8395
+ encoding.detail = chunk_QJLMYOTX_i(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
8396
+ if (0 === encoding.detail.length) encoding.detail = [
8397
+ MeasureName
8398
+ ];
8399
+ encoding.tooltip = chunk_QJLMYOTX_i(dimensions.map((item)=>item.id));
8400
+ encoding.tooltip = encoding.tooltip.filter((d)=>d !== MeasureName);
8401
+ };
8402
+ const heatmap_generateDefaultMeasureEncoding = (measures, encoding)=>{
8403
+ const colorDims = chunk_QJLMYOTX_i(measures.filter((item)=>'color' === item.encoding || !item.encoding).map((item)=>item.id));
8404
+ if (colorDims.length > 0) encoding.color = [
8405
+ colorDims[0]
8406
+ ];
8407
+ };
8408
+ const heatmap_generateMeasureEncoding = (measures, encoding)=>{
8409
+ const color = chunk_QJLMYOTX_i(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
8410
+ if (color.length > 0) encoding.color = [
8411
+ color[0]
8412
+ ];
8413
+ const tooltip = chunk_QJLMYOTX_i(measures.filter((item)=>'tooltip' === item.encoding).map((item)=>item.id));
8414
+ encoding.tooltip = chunk_QJLMYOTX_i([
8415
+ ...encoding.tooltip || [],
8416
+ ...tooltip
8417
+ ]);
8066
8418
  };
8067
8419
  const heatmapAdvancedPipeline = [
8068
8420
  initAdvancedVSeed_initAdvancedVSeed,
8069
- defaultMeasures_defaultMeasures,
8070
- defaultDimensions,
8071
- defaultMeasureName,
8072
- encodingForHeatmap,
8073
- buildMeasures,
8421
+ default_defaultMeasures_defaultMeasures,
8422
+ defaultDimensions_defaultDimensions,
8423
+ defaultMeasureName_defaultMeasureName,
8424
+ encodingAdapter([
8425
+ defaultEncodingForHeatmap,
8426
+ buildMeasures
8427
+ ], [
8428
+ encodingForHeatmap,
8429
+ buildMeasures
8430
+ ]),
8074
8431
  pivotAdapter([
8075
8432
  reshapeWithEncoding
8076
8433
  ], [
@@ -8123,6 +8480,107 @@
8123
8480
  }
8124
8481
  };
8125
8482
  };
8483
+ const tooltipHeatmap = (spec, context)=>{
8484
+ const result = {
8485
+ ...spec
8486
+ };
8487
+ const { advancedVSeed } = context;
8488
+ const { measures, datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed;
8489
+ const baseConfig = advancedVSeed.config[chartType];
8490
+ const { tooltip = {
8491
+ enable: true
8492
+ } } = baseConfig;
8493
+ const { enable } = tooltip;
8494
+ const { foldInfo } = datasetReshapeInfo[0];
8495
+ result.tooltip = {
8496
+ visible: enable,
8497
+ mark: {
8498
+ title: {
8499
+ visible: false
8500
+ },
8501
+ content: tooltipHeatmap_createMarkContent(encoding.tooltip || [], dimensions, measures, locale, foldInfo)
8502
+ },
8503
+ dimension: {
8504
+ visible: false
8505
+ }
8506
+ };
8507
+ return result;
8508
+ };
8509
+ const tooltipHeatmap_createMarkContent = (tooltip, dimensions, measures, locale, foldInfo)=>{
8510
+ const dims = dimensions.filter((item)=>tooltip.includes(item.id));
8511
+ const meas = measures.filter((item)=>tooltip.includes(item.id));
8512
+ const dimContent = dims.map((item)=>({
8513
+ visible: true,
8514
+ hasShape: true,
8515
+ shapeType: 'rectRound',
8516
+ key: (v)=>{
8517
+ const datum = v;
8518
+ if (item.alias || item.id) return item.alias || item.id;
8519
+ return datum && datum[item.id];
8520
+ },
8521
+ value: (v)=>{
8522
+ const datum = v;
8523
+ return datum && datum[item.id];
8524
+ }
8525
+ }));
8526
+ const meaContent = meas.map((item)=>({
8527
+ visible: true,
8528
+ hasShape: true,
8529
+ shapeType: 'rectRound',
8530
+ key: item.alias || item.id,
8531
+ value: (v)=>{
8532
+ const datum = v;
8533
+ if (!datum) return '';
8534
+ const id = item.id;
8535
+ if (!datum || !datum[ORIGINAL_DATA] || !datum[ORIGINAL_DATA]) return '';
8536
+ const originalData = datum[ORIGINAL_DATA];
8537
+ const value = originalData[id];
8538
+ const measure = findMeasureById(measures, id);
8539
+ if (!measure) return String(value);
8540
+ const { format = {}, autoFormat = true } = measure;
8541
+ if (!chunk_VCYTMP4D_n(format)) {
8542
+ const formatter = createFormatter(format);
8543
+ return formatter(value);
8544
+ }
8545
+ if (autoFormat) return autoFormatter(value, locale);
8546
+ return String(value);
8547
+ }
8548
+ }));
8549
+ const foldMeaContent = [
8550
+ foldInfo
8551
+ ].map((foldInfo)=>({
8552
+ visible: true,
8553
+ hasShape: true,
8554
+ shapeType: 'rectRound',
8555
+ key: (v)=>{
8556
+ const { measureId, foldMap } = foldInfo;
8557
+ const datum = v;
8558
+ const id = datum[measureId];
8559
+ return foldMap[id] || id;
8560
+ },
8561
+ value: (v)=>{
8562
+ const { measureId, measureValue } = foldInfo;
8563
+ const datum = v;
8564
+ if (!datum) return '';
8565
+ const value = datum[measureValue];
8566
+ const id = datum[measureId];
8567
+ const measure = findMeasureById(measures, id);
8568
+ if (!measure) return String(value);
8569
+ const { format = {}, autoFormat = true } = measure;
8570
+ if (!chunk_VCYTMP4D_n(format)) {
8571
+ const formatter = createFormatter(format);
8572
+ return formatter(value);
8573
+ }
8574
+ if (autoFormat) return autoFormatter(value, locale);
8575
+ return String(value);
8576
+ }
8577
+ }));
8578
+ return [
8579
+ ...dimContent,
8580
+ ...foldMeaContent,
8581
+ ...meaContent
8582
+ ];
8583
+ };
8126
8584
  const initHeatmap = (spec, context)=>{
8127
8585
  const result = {
8128
8586
  ...spec
@@ -8166,7 +8624,7 @@
8166
8624
  labelColorInversion,
8167
8625
  colorAdapter(discreteLegend, colorLegend),
8168
8626
  colorCellStyleFill(cellStyle),
8169
- tooltip_tooltip,
8627
+ tooltipHeatmap,
8170
8628
  annotationPoint_annotationPoint,
8171
8629
  annotationVerticalLine_annotationVerticalLine,
8172
8630
  annotationHorizontalLine_annotationHorizontalLine,
@@ -8185,7 +8643,7 @@
8185
8643
  label_label,
8186
8644
  labelColorInversion,
8187
8645
  discreteLegend,
8188
- tooltip_tooltip,
8646
+ tooltipHeatmap,
8189
8647
  colorCellStyleFill(cellStyle),
8190
8648
  annotationPoint_annotationPoint,
8191
8649
  annotationVerticalLine_annotationVerticalLine,
@@ -8864,6 +9322,15 @@
8864
9322
  const updateSpec = (chartType, specPipe)=>{
8865
9323
  Builder._customSpecPipe[chartType] = specPipe;
8866
9324
  };
9325
+ const findAllDimensions = (dimensions = [])=>{
9326
+ if (!dimensions) return [];
9327
+ const result = [];
9328
+ preorderTraverse(dimensions, (node)=>{
9329
+ if (!('children' in node)) result.push(node);
9330
+ return false;
9331
+ });
9332
+ return result;
9333
+ };
8867
9334
  Object.freeze({
8868
9335
  status: "aborted"
8869
9336
  });
@@ -12190,11 +12657,6 @@
12190
12657
  const zDimension = schemas_object({
12191
12658
  id: schemas_string(),
12192
12659
  alias: schemas_string().optional(),
12193
- location: schemas_enum([
12194
- 'dimension',
12195
- 'rowDimension',
12196
- 'columnDimension'
12197
- ]).default('dimension'),
12198
12660
  encoding: schemas_enum([
12199
12661
  'xAxis',
12200
12662
  'yAxis',