@visactor/vseed 0.1.13 → 0.1.15

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 (174) hide show
  1. package/dist/cjs/index.cjs +1 -1
  2. package/dist/cjs/index.cjs.map +1 -1
  3. package/dist/esm/builder/builder/builder.d.ts +3372 -108
  4. package/dist/esm/pipeline/advanced/chart/pipes/encoding/{encodingAdapter.d.ts → adapter/encodingAdapter.d.ts} +1 -1
  5. package/dist/esm/pipeline/advanced/chart/pipes/encoding/{encodingAdapter.js → adapter/encodingAdapter.js} +1 -1
  6. package/dist/esm/pipeline/advanced/chart/pipes/encoding/adapter/encodingAdapter.js.map +1 -0
  7. package/dist/esm/pipeline/advanced/chart/pipes/encoding/adapter/index.d.ts +1 -0
  8. package/dist/esm/pipeline/advanced/chart/pipes/encoding/adapter/index.js +2 -0
  9. package/dist/esm/pipeline/advanced/chart/pipes/encoding/bar.js +4 -6
  10. package/dist/esm/pipeline/advanced/chart/pipes/encoding/bar.js.map +1 -1
  11. package/dist/esm/pipeline/advanced/chart/pipes/encoding/color/addColorToEncoding.d.ts +8 -0
  12. package/dist/esm/pipeline/advanced/chart/pipes/encoding/color/addColorToEncoding.js +13 -0
  13. package/dist/esm/pipeline/advanced/chart/pipes/encoding/color/addColorToEncoding.js.map +1 -0
  14. package/dist/esm/pipeline/advanced/chart/pipes/encoding/color/index.d.ts +1 -0
  15. package/dist/esm/pipeline/advanced/chart/pipes/encoding/color/index.js +2 -0
  16. package/dist/esm/pipeline/advanced/chart/pipes/encoding/column.js +4 -6
  17. package/dist/esm/pipeline/advanced/chart/pipes/encoding/column.js.map +1 -1
  18. package/dist/esm/pipeline/advanced/chart/pipes/encoding/dualAxis.js +4 -6
  19. package/dist/esm/pipeline/advanced/chart/pipes/encoding/dualAxis.js.map +1 -1
  20. package/dist/esm/pipeline/advanced/chart/pipes/encoding/funnel.js +4 -6
  21. package/dist/esm/pipeline/advanced/chart/pipes/encoding/funnel.js.map +1 -1
  22. package/dist/esm/pipeline/advanced/chart/pipes/encoding/heatmap.js +4 -6
  23. package/dist/esm/pipeline/advanced/chart/pipes/encoding/heatmap.js.map +1 -1
  24. package/dist/esm/pipeline/advanced/chart/pipes/encoding/index.d.ts +1 -1
  25. package/dist/esm/pipeline/advanced/chart/pipes/encoding/index.js +1 -1
  26. package/dist/esm/pipeline/advanced/chart/pipes/encoding/line.js +4 -6
  27. package/dist/esm/pipeline/advanced/chart/pipes/encoding/line.js.map +1 -1
  28. package/dist/esm/pipeline/advanced/chart/pipes/encoding/pie.js +4 -6
  29. package/dist/esm/pipeline/advanced/chart/pipes/encoding/pie.js.map +1 -1
  30. package/dist/esm/pipeline/advanced/chart/pipes/encoding/radar.js +4 -6
  31. package/dist/esm/pipeline/advanced/chart/pipes/encoding/radar.js.map +1 -1
  32. package/dist/esm/pipeline/advanced/chart/pipes/encoding/rose.js +4 -6
  33. package/dist/esm/pipeline/advanced/chart/pipes/encoding/rose.js.map +1 -1
  34. package/dist/esm/pipeline/advanced/chart/pipes/encoding/scatter.js +2 -4
  35. package/dist/esm/pipeline/advanced/chart/pipes/encoding/scatter.js.map +1 -1
  36. package/dist/esm/pipeline/spec/chart/pipeline/heatmap.js +1 -3
  37. package/dist/esm/pipeline/spec/chart/pipeline/heatmap.js.map +1 -1
  38. package/dist/esm/pipeline/spec/chart/pipeline/scatter.js +3 -3
  39. package/dist/esm/pipeline/spec/chart/pipeline/scatter.js.map +1 -1
  40. package/dist/esm/pipeline/spec/chart/pipes/axes/angle.js +1 -0
  41. package/dist/esm/pipeline/spec/chart/pipes/axes/angle.js.map +1 -1
  42. package/dist/esm/pipeline/spec/chart/pipes/axes/radius.js +1 -0
  43. package/dist/esm/pipeline/spec/chart/pipes/axes/radius.js.map +1 -1
  44. package/dist/esm/pipeline/spec/chart/pipes/axes/xLinear.js +9 -3
  45. package/dist/esm/pipeline/spec/chart/pipes/axes/xLinear.js.map +1 -1
  46. package/dist/esm/pipeline/spec/chart/pipes/axes/yLinear.js +9 -3
  47. package/dist/esm/pipeline/spec/chart/pipes/axes/yLinear.js.map +1 -1
  48. package/dist/esm/pipeline/spec/chart/pipes/axes/yLinearPrimary.js +8 -3
  49. package/dist/esm/pipeline/spec/chart/pipes/axes/yLinearPrimary.js.map +1 -1
  50. package/dist/esm/pipeline/spec/chart/pipes/axes/yLinearSecondary.js +8 -3
  51. package/dist/esm/pipeline/spec/chart/pipes/axes/yLinearSecondary.js.map +1 -1
  52. package/dist/esm/pipeline/spec/chart/pipes/label/index.d.ts +1 -1
  53. package/dist/esm/pipeline/spec/chart/pipes/label/index.js +2 -2
  54. package/dist/esm/pipeline/spec/chart/pipes/label/label.d.ts +5 -1
  55. package/dist/esm/pipeline/spec/chart/pipes/label/label.js +59 -38
  56. package/dist/esm/pipeline/spec/chart/pipes/label/label.js.map +1 -1
  57. package/dist/esm/pipeline/spec/chart/pipes/label/labelDualAxis.js +15 -52
  58. package/dist/esm/pipeline/spec/chart/pipes/label/labelDualAxis.js.map +1 -1
  59. package/dist/esm/pipeline/spec/chart/pipes/label/{labelColorInversion.d.ts → labelScatter.d.ts} +1 -1
  60. package/dist/esm/pipeline/spec/chart/pipes/label/labelScatter.js +19 -0
  61. package/dist/esm/pipeline/spec/chart/pipes/label/labelScatter.js.map +1 -0
  62. package/dist/esm/pipeline/spec/chart/pipes/legend/colorLegend.js +3 -3
  63. package/dist/esm/pipeline/spec/chart/pipes/legend/colorLegend.js.map +1 -1
  64. package/dist/esm/pipeline/spec/chart/pipes/legend/discreteLegend.js +4 -4
  65. package/dist/esm/pipeline/spec/chart/pipes/legend/discreteLegend.js.map +1 -1
  66. package/dist/esm/pipeline/spec/chart/pipes/legend/pivotColorLegend.js +3 -3
  67. package/dist/esm/pipeline/spec/chart/pipes/legend/pivotColorLegend.js.map +1 -1
  68. package/dist/esm/pipeline/spec/chart/pipes/legend/pivotDiscreteLegend.js +4 -4
  69. package/dist/esm/pipeline/spec/chart/pipes/legend/pivotDiscreteLegend.js.map +1 -1
  70. package/dist/esm/pipeline/spec/chart/pipes/series/series.js +1 -0
  71. package/dist/esm/pipeline/spec/chart/pipes/series/series.js.map +1 -1
  72. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltip.d.ts +3 -3
  73. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltip.js +13 -30
  74. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltip.js.map +1 -1
  75. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipDualAxis.js +6 -6
  76. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipDualAxis.js.map +1 -1
  77. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipHeatmap.js +6 -18
  78. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipHeatmap.js.map +1 -1
  79. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipScatter.js +6 -18
  80. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipScatter.js.map +1 -1
  81. package/dist/esm/pipeline/spec/table/pipes/columns/measuresToColumns.js +8 -11
  82. package/dist/esm/pipeline/spec/table/pipes/columns/measuresToColumns.js.map +1 -1
  83. package/dist/esm/pipeline/spec/table/pipes/indicators/pivotIndicators.js +8 -13
  84. package/dist/esm/pipeline/spec/table/pipes/indicators/pivotIndicators.js.map +1 -1
  85. package/dist/esm/pipeline/utils/constant.d.ts +1 -0
  86. package/dist/esm/pipeline/utils/constant.js +2 -1
  87. package/dist/esm/pipeline/utils/constant.js.map +1 -1
  88. package/dist/esm/pipeline/utils/format/createFormatter.d.ts +1 -1
  89. package/dist/esm/pipeline/utils/format/createFormatter.js +3 -2
  90. package/dist/esm/pipeline/utils/format/createFormatter.js.map +1 -1
  91. package/dist/esm/pipeline/utils/format/createFormatterByMeasure.d.ts +2 -0
  92. package/dist/esm/pipeline/utils/format/createFormatterByMeasure.js +13 -0
  93. package/dist/esm/pipeline/utils/format/createFormatterByMeasure.js.map +1 -0
  94. package/dist/esm/pipeline/utils/format/createNumFormatter.d.ts +1 -1
  95. package/dist/esm/pipeline/utils/format/createNumFormatter.js.map +1 -1
  96. package/dist/esm/pipeline/utils/format/index.d.ts +1 -0
  97. package/dist/esm/pipeline/utils/format/index.js +1 -0
  98. package/dist/esm/theme/dark.js +9 -3
  99. package/dist/esm/theme/dark.js.map +1 -1
  100. package/dist/esm/theme/light.js +27 -6
  101. package/dist/esm/theme/light.js.map +1 -1
  102. package/dist/esm/types/advancedVSeed.d.ts +2334 -36
  103. package/dist/esm/types/chartType/area/zArea.d.ts +99 -1
  104. package/dist/esm/types/chartType/areaPercent/zAreaPercent.d.ts +99 -1
  105. package/dist/esm/types/chartType/bar/zBar.d.ts +99 -1
  106. package/dist/esm/types/chartType/barParallel/zBarParallel.d.ts +99 -1
  107. package/dist/esm/types/chartType/barPercent/zBarPercent.d.ts +99 -1
  108. package/dist/esm/types/chartType/column/zColumn.d.ts +99 -1
  109. package/dist/esm/types/chartType/columnParallel/zColumnParallel.d.ts +99 -1
  110. package/dist/esm/types/chartType/columnPercent/zColumnPercent.d.ts +99 -1
  111. package/dist/esm/types/chartType/donut/zDonut.d.ts +69 -1
  112. package/dist/esm/types/chartType/dualAxis/zDualAxis.d.ts +309 -1
  113. package/dist/esm/types/chartType/funnel/zFunnel.d.ts +68 -0
  114. package/dist/esm/types/chartType/heatmap/zHeatmap.d.ts +68 -0
  115. package/dist/esm/types/chartType/line/zLine.d.ts +99 -1
  116. package/dist/esm/types/chartType/pie/zPie.d.ts +69 -1
  117. package/dist/esm/types/chartType/pivotTable/zPivotTable.d.ts +30 -0
  118. package/dist/esm/types/chartType/radar/zRadar.d.ts +69 -1
  119. package/dist/esm/types/chartType/rose/zRose.d.ts +69 -1
  120. package/dist/esm/types/chartType/roseParallel/zRoseParallel.d.ts +69 -1
  121. package/dist/esm/types/chartType/scatter/zScatter.d.ts +249 -1
  122. package/dist/esm/types/chartType/table/zTable.d.ts +30 -0
  123. package/dist/esm/types/properties/config/axes/bandAxis.d.ts +146 -82
  124. package/dist/esm/types/properties/config/axes/bandAxis.js +0 -48
  125. package/dist/esm/types/properties/config/axes/index.d.ts +4 -3
  126. package/dist/esm/types/properties/config/axes/index.js +2 -3
  127. package/dist/esm/types/properties/config/axes/linearAxis.d.ts +149 -84
  128. package/dist/esm/types/properties/config/axes/linearAxis.js +0 -45
  129. package/dist/esm/types/properties/config/axes/zBandAxis.d.ts +79 -0
  130. package/dist/esm/types/properties/config/axes/{axis.js → zBandAxis.js} +5 -11
  131. package/dist/esm/types/properties/config/axes/zBandAxis.js.map +1 -0
  132. package/dist/esm/types/properties/config/axes/zLinearAxis.d.ts +141 -0
  133. package/dist/esm/types/properties/config/axes/zLinearAxis.js +47 -0
  134. package/dist/esm/types/properties/config/axes/zLinearAxis.js.map +1 -0
  135. package/dist/esm/types/properties/config/config.d.ts +2304 -37
  136. package/dist/esm/types/properties/config/config.js +1 -2
  137. package/dist/esm/types/properties/config/config.js.map +1 -1
  138. package/dist/esm/types/properties/config/label/label.d.ts +37 -0
  139. package/dist/esm/types/properties/config/label/zLabel.d.ts +38 -0
  140. package/dist/esm/types/properties/config/label/zLabel.js +11 -1
  141. package/dist/esm/types/properties/config/label/zLabel.js.map +1 -1
  142. package/dist/esm/types/properties/config/legend/legend.d.ts +6 -2
  143. package/dist/esm/types/properties/config/legend/legend.js +1 -1
  144. package/dist/esm/types/properties/config/legend/legend.js.map +1 -1
  145. package/dist/esm/types/properties/format/numFormat.js.map +1 -0
  146. package/dist/esm/types/properties/index.d.ts +1 -0
  147. package/dist/esm/types/properties/index.js +1 -0
  148. package/dist/esm/types/properties/measures/index.d.ts +0 -1
  149. package/dist/esm/types/properties/measures/index.js +0 -1
  150. package/dist/esm/types/properties/measures/measures.d.ts +6 -2
  151. package/dist/esm/types/properties/measures/zDualMeasures.d.ts +240 -0
  152. package/dist/esm/types/properties/measures/zMeasures.d.ts +90 -0
  153. package/dist/esm/types/properties/measures/zMeasures.js +2 -1
  154. package/dist/esm/types/properties/measures/zMeasures.js.map +1 -1
  155. package/dist/esm/types/properties/measures/zScatterMeasures.d.ts +240 -0
  156. package/dist/esm/types/properties/theme/customTheme.d.ts +2304 -36
  157. package/dist/esm/types/zVseed.d.ts +2090 -116
  158. package/dist/umd/index.js +270 -335
  159. package/dist/umd/index.js.map +1 -1
  160. package/package.json +1 -1
  161. package/dist/esm/pipeline/advanced/chart/pipes/encoding/encodingAdapter.js.map +0 -1
  162. package/dist/esm/pipeline/spec/chart/pipes/label/labelColorInversion.js +0 -13
  163. package/dist/esm/pipeline/spec/chart/pipes/label/labelColorInversion.js.map +0 -1
  164. package/dist/esm/types/properties/config/axes/axis.d.ts +0 -255
  165. package/dist/esm/types/properties/config/axes/axis.js.map +0 -1
  166. package/dist/esm/types/properties/config/axes/bandAxis.js.map +0 -1
  167. package/dist/esm/types/properties/config/axes/linearAxis.js.map +0 -1
  168. package/dist/esm/types/properties/measures/format/numFormat.js.map +0 -1
  169. /package/dist/esm/types/properties/{measures/format → format}/formatter.d.ts +0 -0
  170. /package/dist/esm/types/properties/{measures/format → format}/formatter.js +0 -0
  171. /package/dist/esm/types/properties/{measures/format → format}/index.d.ts +0 -0
  172. /package/dist/esm/types/properties/{measures/format → format}/index.js +0 -0
  173. /package/dist/esm/types/properties/{measures/format → format}/numFormat.d.ts +0 -0
  174. /package/dist/esm/types/properties/{measures/format → format}/numFormat.js +0 -0
package/dist/umd/index.js CHANGED
@@ -106,6 +106,7 @@
106
106
  columnAdvancedPipeline: ()=>columnAdvancedPipeline,
107
107
  zLabel: ()=>zLabel,
108
108
  registerColumn: ()=>registerColumn,
109
+ createFormatterByMeasure: ()=>createFormatterByMeasure,
109
110
  findAllMeasures: ()=>findAllMeasures,
110
111
  funnelSpecPipeline: ()=>funnelSpecPipeline,
111
112
  isDimensionSelector: ()=>isDimensionSelector,
@@ -193,21 +194,20 @@
193
194
  darkTheme: ()=>darkTheme,
194
195
  createNumFormatter: ()=>createNumFormatter,
195
196
  zAreaConfig: ()=>zAreaConfig,
196
- zAxis: ()=>zAxis,
197
- isVTable: ()=>isVTable,
198
197
  zMeasures: ()=>zMeasures,
198
+ isVTable: ()=>isVTable,
199
199
  zRadar: ()=>zRadar,
200
+ zRadarConfig: ()=>zRadarConfig,
200
201
  zLine: ()=>zLine,
201
202
  columnSpecPipeline: ()=>columnSpecPipeline,
202
203
  zFoldInfo: ()=>zFoldInfo,
203
204
  zDatasetReshapeInfo: ()=>zDatasetReshapeInfo,
204
205
  zLinearColor: ()=>zLinearColor,
205
- zRadarConfig: ()=>zRadarConfig,
206
+ zStackCornerRadius: ()=>zStackCornerRadius,
206
207
  zAreaStyle: ()=>zAreaStyle,
207
208
  ORIGINAL_DATA: ()=>ORIGINAL_DATA,
208
- zStackCornerRadius: ()=>zStackCornerRadius,
209
- zAnnotationArea: ()=>zAnnotationArea,
210
209
  zUnfoldInfo: ()=>zUnfoldInfo,
210
+ zAnnotationArea: ()=>zAnnotationArea,
211
211
  DetailEncoding: ()=>DetailEncoding,
212
212
  zRose: ()=>zRose,
213
213
  columnParallelSpecPipeline: ()=>columnParallelSpecPipeline,
@@ -982,9 +982,6 @@
982
982
  });
983
983
  return result || [];
984
984
  };
985
- function chunk_VCYTMP4D_n(e) {
986
- return void 0 === e ? !0 : "string" == typeof e || Array.isArray(e) ? 0 === e.length : 0 === Object.keys(e).length;
987
- }
988
985
  const createNumFormatter = (format, locale = intl.getLocale())=>{
989
986
  const { type = 'number', ratio = 1, symbol = '', thousandSeparator = true, prefix = '', suffix = '', fractionDigits = 2, significantDigits, roundingMode = 'halfExpand', roundingPriority = 'auto' } = format || {};
990
987
  const numFormatterOptions = {
@@ -1041,11 +1038,21 @@
1041
1038
  });
1042
1039
  return numFormatter.format(Number(value));
1043
1040
  };
1044
- const createFormatter = (format)=>createNumFormatter(format);
1045
- const autoFormatter = (value, locale)=>autoNumFormatter(value, locale);
1041
+ const createFormatter = (format, locale)=>createNumFormatter(format, locale);
1042
+ const autoFormatter = (value, locale = intl.getLocale())=>autoNumFormatter(value, locale);
1043
+ function chunk_VCYTMP4D_n(e) {
1044
+ return void 0 === e ? !0 : "string" == typeof e || Array.isArray(e) ? 0 === e.length : 0 === Object.keys(e).length;
1045
+ }
1046
+ const createFormatterByMeasure = (measure)=>{
1047
+ if (!measure) return (v)=>String(v);
1048
+ const { numFormat, format, autoFormat = true } = measure;
1049
+ const formatterFormat = numFormat || format || {};
1050
+ if (!chunk_VCYTMP4D_n(formatterFormat)) return createFormatter(formatterFormat);
1051
+ if (autoFormat) return autoFormatter;
1052
+ return (v)=>String(v);
1053
+ };
1046
1054
  const measureTreeToColumns = (spec, context)=>{
1047
1055
  const { advancedVSeed } = context;
1048
- const { locale } = advancedVSeed;
1049
1056
  const measures = advancedVSeed.measures;
1050
1057
  const result = {
1051
1058
  ...spec
@@ -1053,7 +1060,7 @@
1053
1060
  const eachNode = (node)=>{
1054
1061
  if (isMeasure(node)) return {
1055
1062
  width: 'auto',
1056
- fieldFormat: fieldFormat(node, locale)
1063
+ fieldFormat: fieldFormat(node)
1057
1064
  };
1058
1065
  return {};
1059
1066
  };
@@ -1066,15 +1073,14 @@
1066
1073
  ]
1067
1074
  };
1068
1075
  };
1069
- const fieldFormat = (node, locale)=>(datum)=>{
1070
- const { format = {}, autoFormat = true, id } = node;
1076
+ const fieldFormat = (node)=>{
1077
+ const formatter = createFormatterByMeasure(node);
1078
+ return (datum)=>{
1079
+ const { id } = node;
1071
1080
  const value = datum[id];
1072
- if (!chunk_VCYTMP4D_n(format)) {
1073
- const formatter = createFormatter(format);
1074
- return formatter(value);
1075
- }
1076
- if (autoFormat) return autoFormatter(value, locale);
1081
+ return formatter(value);
1077
1082
  };
1083
+ };
1078
1084
  const measuresToColumns_treeTreeToColumns = (tree, callback)=>{
1079
1085
  const result = tree.map((item)=>{
1080
1086
  if ('children' in item && Array.isArray(item.children)) {
@@ -1515,7 +1521,7 @@
1515
1521
  };
1516
1522
  const pivotIndicators = (spec, context)=>{
1517
1523
  const { advancedVSeed } = context;
1518
- const { locale, measures, datasetReshapeInfo } = advancedVSeed;
1524
+ const { measures, datasetReshapeInfo } = advancedVSeed;
1519
1525
  const { foldInfo } = datasetReshapeInfo[0];
1520
1526
  return {
1521
1527
  ...spec,
@@ -1528,25 +1534,20 @@
1528
1534
  indicatorKey: foldInfo.measureValue,
1529
1535
  title: 'indicator',
1530
1536
  width: 'auto',
1531
- format: pivotIndicators_fieldFormat(measures, foldInfo, locale)
1537
+ format: pivotIndicators_fieldFormat(measures, foldInfo)
1532
1538
  }
1533
1539
  ]
1534
1540
  };
1535
1541
  };
1536
- const pivotIndicators_fieldFormat = (measures, foldInfo, locale)=>(value, col, row, table)=>{
1542
+ const pivotIndicators_fieldFormat = (measures, foldInfo)=>(value, col, row, table)=>{
1537
1543
  if (!chunk_6GTAPB47_e(col) || !chunk_6GTAPB47_e(row) || !table) return value;
1538
1544
  const datum = table.getCellOriginRecord(col, row);
1539
1545
  if (!datum[0]) return value;
1540
1546
  const { measureId: foldMeasureId } = foldInfo;
1541
1547
  const measureId = datum[0][foldMeasureId];
1542
- const node = findMeasureById(measures, measureId);
1543
- if (!node) return value;
1544
- const { format = {}, autoFormat = true } = node;
1545
- if (!chunk_VCYTMP4D_n(format)) {
1546
- const formatter = createFormatter(format);
1547
- return formatter(value);
1548
- }
1549
- if (autoFormat) return autoFormatter(value, locale);
1548
+ const measure = findMeasureById(measures, measureId);
1549
+ const formatter = createFormatterByMeasure(measure);
1550
+ return formatter(value);
1550
1551
  };
1551
1552
  const rowHeaderStyle = (spec, context)=>{
1552
1553
  const result = {
@@ -1776,6 +1777,14 @@
1776
1777
  if (hasEncoding) return execPipeline(hasEncodingPipeline, context, advancedVSeed);
1777
1778
  return execPipeline(noEncodingPipeline, context, advancedVSeed);
1778
1779
  };
1780
+ const addColorToEncoding = (dimensions, encoding, isMultiMeasure)=>{
1781
+ encoding.color = chunk_QJLMYOTX_i(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
1782
+ const measureName = dimensions.find((item)=>item.id === MeasureName);
1783
+ if (isMultiMeasure && measureName && !measureName.encoding) encoding.color.push(MeasureName);
1784
+ if (0 === encoding.color.length) encoding.color = [
1785
+ MeasureName
1786
+ ];
1787
+ };
1779
1788
  const defaultEncodingForLine = (advancedVSeed)=>{
1780
1789
  const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
1781
1790
  const measures = findAllMeasures(vseedMeasures);
@@ -1793,7 +1802,7 @@
1793
1802
  const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
1794
1803
  const hasMeasureEncoding = measures.some((item)=>item.encoding);
1795
1804
  const encoding = {};
1796
- if (hasDimensionEncoding) line_generateDimensionEncoding(dimensions, encoding);
1805
+ if (hasDimensionEncoding) line_generateDimensionEncoding(dimensions, encoding, measures.length > 1);
1797
1806
  else line_generateDefaultDimensionEncoding(dimensions, encoding);
1798
1807
  if (hasMeasureEncoding) line_generateMeasureEncoding(measures, encoding);
1799
1808
  else line_generateDefaultMeasureEncoding(measures, encoding);
@@ -1812,15 +1821,12 @@
1812
1821
  encoding.row = [];
1813
1822
  encoding.column = [];
1814
1823
  };
1815
- const line_generateDimensionEncoding = (dimensions, encoding)=>{
1824
+ const line_generateDimensionEncoding = (dimensions, encoding, isMultiMeasure)=>{
1816
1825
  encoding.x = chunk_QJLMYOTX_i(dimensions.filter((item)=>'xAxis' === item.encoding).map((item)=>item.id));
1817
1826
  if (0 === encoding.x.length) encoding.x = [
1818
1827
  dimensions[0].id
1819
1828
  ];
1820
- encoding.color = chunk_QJLMYOTX_i(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
1821
- if (0 === encoding.color.length) encoding.color = [
1822
- MeasureName
1823
- ];
1829
+ addColorToEncoding(dimensions, encoding, isMultiMeasure);
1824
1830
  encoding.detail = chunk_QJLMYOTX_i(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
1825
1831
  if (0 === encoding.detail.length) encoding.detail = [
1826
1832
  MeasureName
@@ -2682,7 +2688,8 @@
2682
2688
  ];
2683
2689
  return result;
2684
2690
  }
2685
- const { visible = true, label, tick, title, grid, line, zero, nice, inverse, max, min, log, logBase = 10 } = config;
2691
+ const { visible = true, label, tick, title, grid, line, zero, nice, inverse, max, min, log, logBase = 10, autoFormat = true, numFormat = {} } = config;
2692
+ const formatter = createNumFormatter(numFormat);
2686
2693
  const linearAxis = {
2687
2694
  visible,
2688
2695
  type: log ? 'log' : 'linear',
@@ -2695,7 +2702,11 @@
2695
2702
  min,
2696
2703
  label: {
2697
2704
  visible: label?.visible,
2698
- formatMethod: (value)=>autoFormatter(value, locale),
2705
+ formatMethod: (value)=>{
2706
+ if (!chunk_VCYTMP4D_n(numFormat)) return formatter(value);
2707
+ if (autoFormat) return autoFormatter(value, locale);
2708
+ return value;
2709
+ },
2699
2710
  style: {
2700
2711
  fill: label?.labelColor,
2701
2712
  angle: label?.labelAngle,
@@ -2798,7 +2809,7 @@
2798
2809
  const baseConfig = advancedVSeed.config[chartType];
2799
2810
  if (!baseConfig || !baseConfig.legend) return result;
2800
2811
  const { legend } = baseConfig;
2801
- const { enable, position = 'bottom', labelFontColor, labelFontSize = 12, labelFontWeight, maxSize = 1, border, shapeType = 'rectRound' } = legend || {};
2812
+ const { enable, position = 'bottom', labelFontColor, labelColor, labelFontSize = 12, labelFontWeight, maxSize = 1, border, shapeType = 'rectRound' } = legend || {};
2802
2813
  const orient = [
2803
2814
  'bottom',
2804
2815
  'bottomLeft',
@@ -2858,7 +2869,7 @@
2858
2869
  maxWidth: '30%',
2859
2870
  focusIconStyle: {
2860
2871
  size: labelFontSize + 2,
2861
- fill: labelFontColor,
2872
+ fill: labelColor || labelFontColor,
2862
2873
  fontWeight: labelFontWeight
2863
2874
  },
2864
2875
  shape: {
@@ -2872,14 +2883,14 @@
2872
2883
  formatMethod: (value)=>unfoldInfo.colorIdMap[String(value)] ?? value,
2873
2884
  style: {
2874
2885
  fontSize: labelFontSize,
2875
- fill: labelFontColor,
2886
+ fill: labelColor || labelFontColor,
2876
2887
  fontWeight: labelFontWeight
2877
2888
  }
2878
2889
  },
2879
2890
  background: {
2880
2891
  state: {
2881
2892
  selectedHover: {
2882
- fill: labelFontColor,
2893
+ fill: labelColor || labelFontColor,
2883
2894
  fillOpacity: 0.05
2884
2895
  }
2885
2896
  }
@@ -2899,7 +2910,7 @@
2899
2910
  const baseConfig = advancedVSeed.config[chartType];
2900
2911
  if (!baseConfig || !baseConfig.legend) return result;
2901
2912
  const { legend } = baseConfig;
2902
- const { enable, position = 'bottom', labelFontColor, labelFontSize = 12, labelFontWeight } = legend || {};
2913
+ const { enable, position = 'bottom', labelFontColor, labelColor, labelFontSize = 12, labelFontWeight } = legend || {};
2903
2914
  const orient = [
2904
2915
  'bottom',
2905
2916
  'bottomLeft',
@@ -2949,7 +2960,7 @@
2949
2960
  startText: {
2950
2961
  visible: true,
2951
2962
  style: {
2952
- fill: labelFontColor,
2963
+ fill: labelColor || labelFontColor,
2953
2964
  fontSize: labelFontSize,
2954
2965
  fontWeight: labelFontWeight
2955
2966
  }
@@ -2957,7 +2968,7 @@
2957
2968
  endText: {
2958
2969
  visible: true,
2959
2970
  style: {
2960
- fill: labelFontColor,
2971
+ fill: labelColor || labelFontColor,
2961
2972
  fontSize: labelFontSize,
2962
2973
  fontWeight: labelFontWeight
2963
2974
  }
@@ -3273,61 +3284,83 @@
3273
3284
  ...spec
3274
3285
  };
3275
3286
  const { advancedVSeed, vseed } = context;
3276
- const { measures, datasetReshapeInfo } = advancedVSeed;
3287
+ const { datasetReshapeInfo } = advancedVSeed;
3277
3288
  const { chartType, encoding } = advancedVSeed;
3278
3289
  const baseConfig = advancedVSeed.config[chartType];
3279
- if (!baseConfig || !baseConfig.label) return result;
3280
- const { measureId, measureValue, statistics } = datasetReshapeInfo[0].foldInfo;
3290
+ const foldInfo = datasetReshapeInfo[0].foldInfo;
3291
+ if (!baseConfig || chunk_VCYTMP4D_n(baseConfig.label)) return result;
3281
3292
  const { label } = baseConfig;
3282
- const { enable, wrap, showValue, showValuePercent } = label;
3283
- const labelDims = T((vseed.dimensions || []).filter((item)=>encoding.label?.includes(item.id)), (item)=>item.id);
3284
- const labelMeas = T((vseed.measures || []).filter((item)=>encoding.label?.includes(item.id)), (item)=>item.id);
3285
- const format = {
3286
- type: 'percent'
3293
+ result.label = buildLabel(label, vseed.measures, vseed.dimensions, advancedVSeed.measures, encoding, [
3294
+ foldInfo
3295
+ ]);
3296
+ return result;
3297
+ };
3298
+ const generateMeasureValue = (value, measure, labelAutoFormat = true, numFormat = {})=>{
3299
+ if (!measure) return value;
3300
+ const format = chunk_5S4PYKVY_t(numFormat, measure.numFormat || measure.format);
3301
+ const mergedMeasure = {
3302
+ ...measure,
3303
+ numFormat: format,
3304
+ autoFormat: labelAutoFormat || measure.autoFormat
3287
3305
  };
3288
- const formatter = createFormatter(format);
3289
- result.label = {
3306
+ const formatter = createFormatterByMeasure(mergedMeasure);
3307
+ return formatter(value);
3308
+ };
3309
+ const generateMeasurePercent = (value, sum, formatter)=>{
3310
+ if (null == value) return String(value);
3311
+ const num = Number(value);
3312
+ if (Number.isNaN(num)) return String(value);
3313
+ const percentValue = num / sum;
3314
+ return formatter(percentValue);
3315
+ };
3316
+ const buildLabel = (label, vseedMeasures = [], vseedDimensions = [], advancedVSeedMeasures, encoding, foldInfoList)=>{
3317
+ const { enable, wrap, showValue, showValuePercent, labelOverlap, labelColorSmartInvert, labelColor, labelFontSize, labelFontWeight, labelBackgroundColor, labelPosition, autoFormat = true, numFormat = {} } = label;
3318
+ const labelDims = T((vseedDimensions || []).filter((item)=>encoding.label?.includes(item.id)), (item)=>item.id);
3319
+ const labelMeas = T((vseedMeasures || []).filter((item)=>encoding.label?.includes(item.id)), (item)=>item.id);
3320
+ const percentFormat = chunk_5S4PYKVY_t(numFormat, {
3321
+ type: 'percent'
3322
+ });
3323
+ const percentFormatter = createFormatter(percentFormat);
3324
+ const result = {
3290
3325
  visible: enable,
3291
3326
  formatMethod: (_, datum)=>{
3292
3327
  const result = [];
3293
- const measure = findMeasureById(measures, datum[measureId]);
3294
3328
  const dimLabels = labelDims.map((item)=>item.alias || item.id);
3295
- const meaLabels = labelMeas.map((item)=>generateMeasureValue(datum[item.id], item));
3296
- const measureValueLabel = generateMeasureValue(datum[measureValue], measure);
3297
- const measurePercentLabel = generateMeasurePercent(datum[measureValue], statistics.sum, formatter);
3329
+ const meaLabels = labelMeas.map((item)=>generateMeasureValue(datum[item.id], item, autoFormat, numFormat));
3298
3330
  result.push(...dimLabels);
3299
- if (showValue) result.push(measureValueLabel);
3300
- if (showValuePercent) result.push(measurePercentLabel);
3331
+ foldInfoList.forEach((foldInfo)=>{
3332
+ const { measureId, measureValue, statistics } = foldInfo;
3333
+ const measure = findMeasureById(advancedVSeedMeasures, datum[measureId]);
3334
+ const measureValueLabel = generateMeasureValue(datum[measureValue], measure, autoFormat, numFormat);
3335
+ const measurePercentLabel = generateMeasurePercent(datum[measureValue], statistics.sum, percentFormatter);
3336
+ if (showValue) result.push(measureValueLabel);
3337
+ if (showValuePercent) result.push(measurePercentLabel);
3338
+ });
3301
3339
  result.push(...meaLabels);
3302
3340
  if (wrap) return result;
3303
3341
  return result.join(' ');
3304
- }
3342
+ },
3343
+ position: labelPosition,
3344
+ style: {
3345
+ fill: labelColor,
3346
+ fontSize: labelFontSize,
3347
+ fontWeight: labelFontWeight,
3348
+ background: labelBackgroundColor
3349
+ },
3350
+ smartInvert: labelColorSmartInvert
3351
+ };
3352
+ if (labelOverlap) result.overlap = {
3353
+ hideOnHit: true,
3354
+ clampForce: true
3305
3355
  };
3306
3356
  return result;
3307
3357
  };
3308
- const generateMeasureValue = (value, measure)=>{
3309
- if (!measure) return value;
3310
- const { format = {}, autoFormat = true } = measure;
3311
- if (!chunk_VCYTMP4D_n(format)) {
3312
- const formatter = createFormatter(format);
3313
- return formatter(value);
3314
- }
3315
- if (autoFormat) return autoFormatter(value, intl.getLocale());
3316
- return String(value);
3317
- };
3318
- const generateMeasurePercent = (value, sum, formatter)=>{
3319
- if (null == value) return String(value);
3320
- const num = Number(value);
3321
- if (Number.isNaN(num)) return String(value);
3322
- const percentValue = num / sum;
3323
- return formatter(percentValue);
3324
- };
3325
3358
  const tooltip_tooltip = (spec, context)=>{
3326
3359
  const result = {
3327
3360
  ...spec
3328
3361
  };
3329
3362
  const { advancedVSeed, vseed } = context;
3330
- const { measures, datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed;
3363
+ const { measures, datasetReshapeInfo, chartType, dimensions, encoding } = advancedVSeed;
3331
3364
  const baseConfig = advancedVSeed.config[chartType];
3332
3365
  const { tooltip = {
3333
3366
  enable: true
@@ -3340,18 +3373,18 @@
3340
3373
  title: {
3341
3374
  visible: false
3342
3375
  },
3343
- content: createMarkContent(encoding.tooltip || [], dimensions, findAllMeasures(vseed.measures), locale, foldInfo, unfoldInfo)
3376
+ content: createMarkContent(encoding.tooltip || [], dimensions, findAllMeasures(vseed.measures), foldInfo, unfoldInfo)
3344
3377
  },
3345
3378
  dimension: {
3346
3379
  title: {
3347
3380
  visible: true
3348
3381
  },
3349
- content: createDimensionContent(measures, foldInfo, unfoldInfo, locale)
3382
+ content: createDimensionContent(measures, foldInfo, unfoldInfo)
3350
3383
  }
3351
3384
  };
3352
3385
  return result;
3353
3386
  };
3354
- const createDimensionContent = (measures, foldInfo, unfoldInfo, locale)=>{
3387
+ const createDimensionContent = (measures, foldInfo, unfoldInfo)=>{
3355
3388
  const { measureId, measureValue } = foldInfo;
3356
3389
  const { encodingColor } = unfoldInfo;
3357
3390
  return [
@@ -3369,19 +3402,13 @@
3369
3402
  const value = datum[measureValue];
3370
3403
  const id = datum[measureId];
3371
3404
  const measure = findMeasureById(measures, id);
3372
- if (!measure) return String(value);
3373
- const { format = {}, autoFormat = true } = measure;
3374
- if (!chunk_VCYTMP4D_n(format)) {
3375
- const formatter = createFormatter(format);
3376
- return formatter(value);
3377
- }
3378
- if (autoFormat) return autoFormatter(value, locale);
3379
- return String(value);
3405
+ const formatter = createFormatterByMeasure(measure);
3406
+ return formatter(value);
3380
3407
  }
3381
3408
  }
3382
3409
  ];
3383
3410
  };
3384
- const createMarkContent = (tooltip, dimensions, measures, locale, foldInfo, unfoldInfo)=>{
3411
+ const createMarkContent = (tooltip, dimensions, measures, foldInfo, unfoldInfo)=>{
3385
3412
  const dims = C(dimensions.filter((item)=>tooltip.includes(item.id)), T((item)=>item.id), T((item)=>item.alias));
3386
3413
  const meas = C(measures.filter((item)=>tooltip.includes(item.id)), T((item)=>item.id), T((item)=>item.alias));
3387
3414
  const dimContent = dims.map((item)=>({
@@ -3411,14 +3438,8 @@
3411
3438
  const originalData = datum[ORIGINAL_DATA];
3412
3439
  const value = originalData[id];
3413
3440
  const measure = findMeasureById(measures, id);
3414
- if (!measure) return String(value);
3415
- const { format = {}, autoFormat = true } = measure;
3416
- if (!chunk_VCYTMP4D_n(format)) {
3417
- const formatter = createFormatter(format);
3418
- return formatter(value);
3419
- }
3420
- if (autoFormat) return autoFormatter(value, locale);
3421
- return String(value);
3441
+ const formatter = createFormatterByMeasure(measure);
3442
+ return formatter(value);
3422
3443
  }
3423
3444
  }));
3424
3445
  const defaultContent = {
@@ -3439,13 +3460,8 @@
3439
3460
  const id = datum[measureId];
3440
3461
  const measure = findMeasureById(measures, id);
3441
3462
  if (!measure) return String(value);
3442
- const { format = {}, autoFormat = true } = measure;
3443
- if (!chunk_VCYTMP4D_n(format)) {
3444
- const formatter = createFormatter(format);
3445
- return formatter(value);
3446
- }
3447
- if (autoFormat) return autoFormatter(value, locale);
3448
- return String(value);
3463
+ const formatter = createFormatterByMeasure(measure);
3464
+ return formatter(value);
3449
3465
  }
3450
3466
  };
3451
3467
  return [
@@ -4117,7 +4133,7 @@
4117
4133
  const { legend, color } = baseConfig;
4118
4134
  const { colorScheme, colorMapping } = color;
4119
4135
  const colorSpecified = createSpecifiedForColorMapping(colorMapping, colorIdMap, colorItems);
4120
- const { enable, position = 'bottom', labelFontColor, labelFontSize = 12, labelFontWeight = 400, maxSize = 1, border, shapeType = 'rectRound' } = legend || {};
4136
+ const { enable, position = 'bottom', labelFontColor, labelColor, labelFontSize = 12, labelFontWeight = 400, maxSize = 1, border, shapeType = 'rectRound' } = legend || {};
4121
4137
  const orient = [
4122
4138
  'bottom',
4123
4139
  'bottomLeft',
@@ -4182,7 +4198,7 @@
4182
4198
  maxWidth: '30%',
4183
4199
  focusIconStyle: {
4184
4200
  size: labelFontSize + 2,
4185
- fill: labelFontColor,
4201
+ fill: labelColor || labelFontColor,
4186
4202
  fontWeight: labelFontWeight
4187
4203
  },
4188
4204
  shape: {
@@ -4196,14 +4212,14 @@
4196
4212
  formatMethod: (value)=>colorIdMap[value] ?? value,
4197
4213
  style: {
4198
4214
  fontSize: labelFontSize,
4199
- fill: labelFontColor,
4215
+ fill: labelColor || labelFontColor,
4200
4216
  fontWeight: labelFontWeight
4201
4217
  }
4202
4218
  },
4203
4219
  background: {
4204
4220
  state: {
4205
4221
  selectedHover: {
4206
- fill: labelFontColor,
4222
+ fill: labelColor || labelFontColor,
4207
4223
  fillOpacity: 0.05
4208
4224
  }
4209
4225
  }
@@ -4228,7 +4244,7 @@
4228
4244
  const min = Math.min(...datasetReshapeInfo.map((d)=>d.foldInfo.statistics.colorMax));
4229
4245
  const { legend, color } = baseConfig;
4230
4246
  const { colorScheme, linearColorScheme } = color;
4231
- const { enable, position = 'bottom', labelFontColor, labelFontSize = 12, labelFontWeight = 400 } = legend || {};
4247
+ const { enable, position = 'bottom', labelFontColor, labelColor, labelFontSize = 12, labelFontWeight = 400 } = legend || {};
4232
4248
  const orient = [
4233
4249
  'bottom',
4234
4250
  'bottomLeft',
@@ -4283,7 +4299,7 @@
4283
4299
  startText: {
4284
4300
  visible: true,
4285
4301
  style: {
4286
- fill: labelFontColor,
4302
+ fill: labelColor || labelFontColor,
4287
4303
  fontSize: labelFontSize,
4288
4304
  fontWeight: labelFontWeight
4289
4305
  }
@@ -4291,7 +4307,7 @@
4291
4307
  endText: {
4292
4308
  visible: true,
4293
4309
  style: {
4294
- fill: labelFontColor,
4310
+ fill: labelColor || labelFontColor,
4295
4311
  fontSize: labelFontSize,
4296
4312
  fontWeight: labelFontWeight
4297
4313
  }
@@ -4380,7 +4396,7 @@
4380
4396
  const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
4381
4397
  const hasMeasureEncoding = measures.some((item)=>item.encoding);
4382
4398
  const encoding = {};
4383
- if (hasDimensionEncoding) column_generateDimensionEncoding(dimensions, encoding);
4399
+ if (hasDimensionEncoding) column_generateDimensionEncoding(dimensions, encoding, measures.length > 1);
4384
4400
  else column_generateDefaultDimensionEncoding(dimensions, encoding);
4385
4401
  if (hasMeasureEncoding) column_generateMeasureEncoding(measures, encoding);
4386
4402
  else column_generateDefaultMeasureEncoding(measures, encoding);
@@ -4400,15 +4416,12 @@
4400
4416
  encoding.row = [];
4401
4417
  encoding.column = [];
4402
4418
  };
4403
- const column_generateDimensionEncoding = (dimensions, encoding)=>{
4419
+ const column_generateDimensionEncoding = (dimensions, encoding, isMultiMeasure)=>{
4404
4420
  encoding.x = chunk_QJLMYOTX_i(dimensions.filter((item)=>'xAxis' === item.encoding).map((item)=>item.id));
4405
4421
  if (0 === encoding.x.length) encoding.x = [
4406
4422
  dimensions[0].id
4407
4423
  ];
4408
- encoding.color = chunk_QJLMYOTX_i(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
4409
- if (0 === encoding.color.length) encoding.color = [
4410
- MeasureName
4411
- ];
4424
+ addColorToEncoding(dimensions, encoding, isMultiMeasure);
4412
4425
  encoding.detail = chunk_QJLMYOTX_i(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
4413
4426
  if (0 === encoding.detail.length) encoding.detail = encoding.color;
4414
4427
  encoding.tooltip = chunk_QJLMYOTX_i(dimensions.map((item)=>item.id));
@@ -5019,7 +5032,7 @@
5019
5032
  const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
5020
5033
  const hasMeasureEncoding = measures.some((item)=>item.encoding);
5021
5034
  const encoding = {};
5022
- if (hasDimensionEncoding) bar_generateDimensionEncoding(dimensions, encoding);
5035
+ if (hasDimensionEncoding) bar_generateDimensionEncoding(dimensions, encoding, measures.length > 1);
5023
5036
  else bar_generateDefaultDimensionEncoding(dimensions, encoding);
5024
5037
  if (hasMeasureEncoding) bar_generateMeasureEncoding(measures, encoding);
5025
5038
  else bar_generateDefaultMeasureEncoding(measures, encoding);
@@ -5039,15 +5052,12 @@
5039
5052
  encoding.row = [];
5040
5053
  encoding.column = [];
5041
5054
  };
5042
- const bar_generateDimensionEncoding = (dimensions, encoding)=>{
5055
+ const bar_generateDimensionEncoding = (dimensions, encoding, isMultiMeasure)=>{
5043
5056
  encoding.y = chunk_QJLMYOTX_i(dimensions.filter((item)=>'yAxis' === item.encoding).map((item)=>item.id));
5044
5057
  if (0 === encoding.y.length) encoding.y = [
5045
5058
  dimensions[0].id
5046
5059
  ];
5047
- encoding.color = chunk_QJLMYOTX_i(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
5048
- if (0 === encoding.color.length) encoding.color = [
5049
- MeasureName
5050
- ];
5060
+ addColorToEncoding(dimensions, encoding, isMultiMeasure);
5051
5061
  encoding.detail = chunk_QJLMYOTX_i(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
5052
5062
  if (0 === encoding.detail.length) encoding.detail = encoding.color;
5053
5063
  encoding.tooltip = chunk_QJLMYOTX_i(dimensions.map((item)=>item.id));
@@ -5201,7 +5211,8 @@
5201
5211
  ];
5202
5212
  return result;
5203
5213
  }
5204
- const { visible = true, label, tick, title, grid, line, zero, nice, inverse, max, min, log, logBase = 10 } = config;
5214
+ const { visible = true, label, tick, title, grid, line, zero, nice, inverse, max, min, log, logBase = 10, autoFormat = true, numFormat = {} } = config;
5215
+ const formatter = createNumFormatter(numFormat, locale);
5205
5216
  const linearAxis = {
5206
5217
  visible,
5207
5218
  type: log ? 'log' : 'linear',
@@ -5214,7 +5225,11 @@
5214
5225
  min,
5215
5226
  label: {
5216
5227
  visible: label?.visible,
5217
- formatMethod: (value)=>autoFormatter(value, locale),
5228
+ formatMethod: (value)=>{
5229
+ if (!chunk_VCYTMP4D_n(numFormat)) return formatter(value);
5230
+ if (autoFormat) return autoFormatter(value, locale);
5231
+ return value;
5232
+ },
5218
5233
  style: {
5219
5234
  fill: label?.labelColor,
5220
5235
  angle: label?.labelAngle,
@@ -5928,10 +5943,7 @@
5928
5943
  encoding.column = [];
5929
5944
  };
5930
5945
  const scatter_generateDimensionEncoding = (dimensions, encoding)=>{
5931
- encoding.color = chunk_QJLMYOTX_i(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
5932
- if (0 === encoding.color.length) encoding.color = [
5933
- MeasureName
5934
- ];
5946
+ addColorToEncoding(dimensions, encoding, false);
5935
5947
  encoding.detail = chunk_QJLMYOTX_i(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
5936
5948
  if (0 === encoding.detail.length) encoding.detail = [
5937
5949
  MeasureName
@@ -6248,6 +6260,20 @@
6248
6260
  }
6249
6261
  };
6250
6262
  };
6263
+ const labelScatter = (spec, context)=>{
6264
+ const result = {
6265
+ ...spec
6266
+ };
6267
+ const { advancedVSeed, vseed } = context;
6268
+ const { datasetReshapeInfo } = advancedVSeed;
6269
+ const { chartType, encoding } = advancedVSeed;
6270
+ const baseConfig = advancedVSeed.config[chartType];
6271
+ if (!baseConfig || chunk_VCYTMP4D_n(baseConfig.label)) return result;
6272
+ const foldInfoList = datasetReshapeInfo[0].foldInfoList;
6273
+ const { label } = baseConfig;
6274
+ result.label = buildLabel(label, vseed.measures, vseed.dimensions, advancedVSeed.measures, encoding, foldInfoList);
6275
+ return result;
6276
+ };
6251
6277
  const tooltipScatter = (spec, context)=>{
6252
6278
  const result = {
6253
6279
  ...spec
@@ -6304,14 +6330,8 @@
6304
6330
  const originalData = datum[ORIGINAL_DATA];
6305
6331
  const value = originalData[id];
6306
6332
  const measure = findMeasureById(measures, id);
6307
- if (!measure) return String(value);
6308
- const { format = {}, autoFormat = true } = measure;
6309
- if (!chunk_VCYTMP4D_n(format)) {
6310
- const formatter = createFormatter(format);
6311
- return formatter(value);
6312
- }
6313
- if (autoFormat) return autoFormatter(value, locale);
6314
- return String(value);
6333
+ const formatter = createFormatterByMeasure(measure);
6334
+ return formatter(value);
6315
6335
  }
6316
6336
  }));
6317
6337
  const foldMeaContent = foldInfoList.map((foldInfo)=>({
@@ -6331,14 +6351,8 @@
6331
6351
  const value = datum[measureValue];
6332
6352
  const id = datum[measureId];
6333
6353
  const measure = findMeasureById(measures, id);
6334
- if (!measure) return String(value);
6335
- const { format = {}, autoFormat = true } = measure;
6336
- if (!chunk_VCYTMP4D_n(format)) {
6337
- const formatter = createFormatter(format);
6338
- return formatter(value);
6339
- }
6340
- if (autoFormat) return autoFormatter(value, locale);
6341
- return String(value);
6354
+ const formatter = createFormatterByMeasure(measure);
6355
+ return formatter(value);
6342
6356
  }
6343
6357
  }));
6344
6358
  return [
@@ -6399,7 +6413,7 @@
6399
6413
  progressive,
6400
6414
  xLinear,
6401
6415
  yLinear,
6402
- label_label,
6416
+ labelScatter,
6403
6417
  tooltipScatter,
6404
6418
  colorAdapter(discreteLegend, colorLegend),
6405
6419
  verticalCrosshairLine,
@@ -6424,7 +6438,7 @@
6424
6438
  progressive,
6425
6439
  xLinear,
6426
6440
  yLinear,
6427
- label_label,
6441
+ labelScatter,
6428
6442
  tooltipScatter,
6429
6443
  verticalCrosshairLine,
6430
6444
  horizontalCrosshairLine,
@@ -6463,7 +6477,7 @@
6463
6477
  const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
6464
6478
  const hasMeasureEncoding = measures.some((item)=>item.encoding);
6465
6479
  const encoding = {};
6466
- if (hasDimensionEncoding) dualAxis_generateDimensionEncoding(dimensions, encoding);
6480
+ if (hasDimensionEncoding) dualAxis_generateDimensionEncoding(dimensions, encoding, measures.length > 1);
6467
6481
  else dualAxis_generateDefaultDimensionEncoding(dimensions, encoding);
6468
6482
  if (hasMeasureEncoding) dualAxis_generateMeasureEncoding(measures, encoding);
6469
6483
  else dualAxis_generateDefaultMeasureEncoding(measures, encoding);
@@ -6483,15 +6497,12 @@
6483
6497
  encoding.row = [];
6484
6498
  encoding.column = [];
6485
6499
  };
6486
- const dualAxis_generateDimensionEncoding = (dimensions, encoding)=>{
6500
+ const dualAxis_generateDimensionEncoding = (dimensions, encoding, isMultiMeasure)=>{
6487
6501
  encoding.x = chunk_QJLMYOTX_i(dimensions.filter((item)=>'xAxis' === item.encoding).map((item)=>item.id));
6488
6502
  if (0 === encoding.x.length) encoding.x = [
6489
6503
  dimensions[0].id
6490
6504
  ];
6491
- encoding.color = chunk_QJLMYOTX_i(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
6492
- if (0 === encoding.color.length) encoding.color = [
6493
- MeasureName
6494
- ];
6505
+ addColorToEncoding(dimensions, encoding, isMultiMeasure);
6495
6506
  encoding.detail = chunk_QJLMYOTX_i(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
6496
6507
  if (0 === encoding.detail.length) encoding.detail = encoding.color;
6497
6508
  encoding.tooltip = chunk_QJLMYOTX_i(dimensions.map((item)=>item.id));
@@ -6813,6 +6824,7 @@
6813
6824
  const result = {
6814
6825
  type: 'common',
6815
6826
  padding: 0,
6827
+ labelLayout: 'region',
6816
6828
  region: [
6817
6829
  {
6818
6830
  clip: true
@@ -7068,71 +7080,33 @@
7068
7080
  const result = {
7069
7081
  ...spec
7070
7082
  };
7071
- const { advancedVSeed } = context;
7072
- const { measures, datasetReshapeInfo, locale } = advancedVSeed;
7083
+ const { advancedVSeed, vseed } = context;
7084
+ const { datasetReshapeInfo, encoding } = advancedVSeed;
7073
7085
  const { chartType } = advancedVSeed;
7074
7086
  const baseConfig = advancedVSeed.config[chartType];
7075
7087
  if (!baseConfig || !baseConfig.label) return result;
7076
7088
  const foldInfoList = datasetReshapeInfo[0].foldInfoList;
7077
- const { measureId, measureValue } = foldInfoList[0];
7078
- const { label } = baseConfig;
7079
- const { enable } = label;
7080
- result.label = {
7081
- visible: enable,
7082
- formatMethod: (value, datum)=>{
7083
- const result = [];
7084
- const formatValue = (value)=>{
7085
- const id = datum[measureId];
7086
- const measure = findMeasureById(measures, id);
7087
- if (!measure) return value;
7088
- const { format = {}, autoFormat = true } = measure;
7089
- if (!chunk_VCYTMP4D_n(format)) {
7090
- const formatter = createFormatter(format);
7091
- return formatter(value);
7092
- }
7093
- if (autoFormat) return autoFormatter(value, locale);
7094
- return String(value);
7095
- };
7096
- result.push(formatValue(datum[measureValue]));
7097
- return result.join(' ');
7098
- }
7099
- };
7089
+ result.label = buildLabel(baseConfig.label, vseed.measures, vseed.dimensions, advancedVSeed.measures, encoding, [
7090
+ foldInfoList[0]
7091
+ ]);
7092
+ result.label.zIndex = 1002;
7100
7093
  return result;
7101
7094
  };
7102
7095
  const labelSecondary = (spec, context)=>{
7103
7096
  const result = {
7104
7097
  ...spec
7105
7098
  };
7106
- const { advancedVSeed } = context;
7107
- const { measures, datasetReshapeInfo, locale } = advancedVSeed;
7099
+ const { advancedVSeed, vseed } = context;
7100
+ const { datasetReshapeInfo, encoding } = advancedVSeed;
7108
7101
  const { chartType } = advancedVSeed;
7109
7102
  const baseConfig = advancedVSeed.config[chartType];
7110
7103
  if (!baseConfig || !baseConfig.label) return result;
7111
7104
  if (chunk_JK3VNB42_n(datasetReshapeInfo[0].foldInfoList?.[1])) return result;
7112
7105
  const foldInfoList = datasetReshapeInfo[0].foldInfoList;
7113
- const { measureId, measureValue } = foldInfoList[1];
7114
- const { label } = baseConfig;
7115
- const { enable } = label;
7116
- result.label = {
7117
- visible: enable,
7118
- formatMethod: (value, datum)=>{
7119
- const result = [];
7120
- const formatValue = (value)=>{
7121
- const id = datum[measureId];
7122
- const measure = findMeasureById(measures, id);
7123
- if (!measure) return value;
7124
- const { format = {}, autoFormat = true } = measure;
7125
- if (!chunk_VCYTMP4D_n(format)) {
7126
- const formatter = createFormatter(format);
7127
- return formatter(value);
7128
- }
7129
- if (autoFormat) return autoFormatter(value, locale);
7130
- return String(value);
7131
- };
7132
- result.push(formatValue(datum[measureValue]));
7133
- return result.join(' ');
7134
- }
7135
- };
7106
+ result.label = buildLabel(baseConfig.label, vseed.measures, vseed.dimensions, advancedVSeed.measures, encoding, [
7107
+ foldInfoList[1]
7108
+ ]);
7109
+ result.label.zIndex = 1002;
7136
7110
  return result;
7137
7111
  };
7138
7112
  const tooltipPrimary = (spec, context)=>{
@@ -7140,7 +7114,7 @@
7140
7114
  ...spec
7141
7115
  };
7142
7116
  const { advancedVSeed, vseed } = context;
7143
- const { measures, datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed;
7117
+ const { measures, datasetReshapeInfo, chartType, dimensions, encoding } = advancedVSeed;
7144
7118
  const baseConfig = advancedVSeed.config[chartType];
7145
7119
  const { tooltip = {
7146
7120
  enable: true
@@ -7154,13 +7128,13 @@
7154
7128
  title: {
7155
7129
  visible: false
7156
7130
  },
7157
- content: createMarkContent(encoding.tooltip || [], dimensions, findAllMeasures(vseed.measures), locale, foldInfoList[0], unfoldInfo)
7131
+ content: createMarkContent(encoding.tooltip || [], dimensions, findAllMeasures(vseed.measures), foldInfoList[0], unfoldInfo)
7158
7132
  },
7159
7133
  dimension: {
7160
7134
  title: {
7161
7135
  visible: true
7162
7136
  },
7163
- content: createDimensionContent(measures, foldInfoList[0], unfoldInfo, locale)
7137
+ content: createDimensionContent(measures, foldInfoList[0], unfoldInfo)
7164
7138
  }
7165
7139
  };
7166
7140
  return result;
@@ -7170,7 +7144,7 @@
7170
7144
  ...spec
7171
7145
  };
7172
7146
  const { advancedVSeed, vseed } = context;
7173
- const { measures, datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed;
7147
+ const { measures, datasetReshapeInfo, chartType, dimensions, encoding } = advancedVSeed;
7174
7148
  const baseConfig = advancedVSeed.config[chartType];
7175
7149
  const { tooltip = {
7176
7150
  enable: true
@@ -7185,13 +7159,13 @@
7185
7159
  title: {
7186
7160
  visible: false
7187
7161
  },
7188
- content: createMarkContent(encoding.tooltip || [], dimensions, findAllMeasures(vseed.measures), locale, foldInfoList[1], unfoldInfo)
7162
+ content: createMarkContent(encoding.tooltip || [], dimensions, findAllMeasures(vseed.measures), foldInfoList[1], unfoldInfo)
7189
7163
  },
7190
7164
  dimension: {
7191
7165
  title: {
7192
7166
  visible: true
7193
7167
  },
7194
- content: createDimensionContent(measures, foldInfoList[1], unfoldInfo, locale)
7168
+ content: createDimensionContent(measures, foldInfoList[1], unfoldInfo)
7195
7169
  }
7196
7170
  };
7197
7171
  return result;
@@ -7230,7 +7204,8 @@
7230
7204
  ];
7231
7205
  return result;
7232
7206
  }
7233
- const { visible = true, label, tick, title, grid, line, zero, nice, inverse, max, min, log, logBase = 10 } = yAxisConfig;
7207
+ const { visible = true, label, tick, title, grid, line, zero, nice, inverse, max, min, log, logBase = 10, autoFormat = true, numFormat = {} } = yAxisConfig;
7208
+ const formatter = createNumFormatter(numFormat, locale);
7234
7209
  const linearAxis = {
7235
7210
  visible: isEmptySecondary ? false : visible,
7236
7211
  id,
@@ -7245,7 +7220,11 @@
7245
7220
  min,
7246
7221
  label: {
7247
7222
  visible: label?.visible,
7248
- formatMethod: (value)=>autoFormatter(value, locale),
7223
+ formatMethod: (value)=>{
7224
+ if (!chunk_VCYTMP4D_n(numFormat)) return formatter(value);
7225
+ if (autoFormat) return autoFormatter(value, locale);
7226
+ return value;
7227
+ },
7249
7228
  style: {
7250
7229
  fill: label?.labelColor,
7251
7230
  angle: label?.labelAngle,
@@ -7334,7 +7313,8 @@
7334
7313
  ];
7335
7314
  return result;
7336
7315
  }
7337
- const { visible = true, label, tick, title, grid, line, zero, nice, inverse, max, min, log, logBase = 10 } = yAxisConfig;
7316
+ const { visible = true, label, tick, title, grid, line, zero, nice, inverse, max, min, log, logBase = 10, numFormat = {}, autoFormat = true } = yAxisConfig;
7317
+ const formatter = createNumFormatter(numFormat, locale);
7338
7318
  const linearAxis = {
7339
7319
  visible: isEmptySecondary ? false : visible,
7340
7320
  id,
@@ -7350,7 +7330,11 @@
7350
7330
  min,
7351
7331
  label: {
7352
7332
  visible: label?.visible,
7353
- formatMethod: (value)=>autoFormatter(value, locale),
7333
+ formatMethod: (value)=>{
7334
+ if (!chunk_VCYTMP4D_n(numFormat)) return formatter(value);
7335
+ if (autoFormat) return autoFormatter(value, locale);
7336
+ return value;
7337
+ },
7354
7338
  style: {
7355
7339
  fill: label?.labelColor,
7356
7340
  angle: label?.labelAngle,
@@ -7538,7 +7522,7 @@
7538
7522
  const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
7539
7523
  const hasMeasureEncoding = measures.some((item)=>item.encoding);
7540
7524
  const encoding = {};
7541
- if (hasDimensionEncoding) pie_generateDimensionEncoding(dimensions, encoding);
7525
+ if (hasDimensionEncoding) pie_generateDimensionEncoding(dimensions, encoding, measures.length > 1);
7542
7526
  else pie_generateDefaultDimensionEncoding(dimensions, encoding);
7543
7527
  if (hasMeasureEncoding) pie_generateMeasureEncoding(measures, encoding);
7544
7528
  else pie_generateDefaultMeasureEncoding(measures, encoding);
@@ -7556,11 +7540,8 @@
7556
7540
  encoding.row = [];
7557
7541
  encoding.column = [];
7558
7542
  };
7559
- const pie_generateDimensionEncoding = (dimensions, encoding)=>{
7560
- encoding.color = chunk_QJLMYOTX_i(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7561
- if (0 === encoding.color.length) encoding.color = [
7562
- MeasureName
7563
- ];
7543
+ const pie_generateDimensionEncoding = (dimensions, encoding, isMultiMeasure)=>{
7544
+ addColorToEncoding(dimensions, encoding, isMultiMeasure);
7564
7545
  encoding.detail = chunk_QJLMYOTX_i(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
7565
7546
  if (0 === encoding.detail.length) encoding.detail = [
7566
7547
  MeasureName
@@ -7822,7 +7803,7 @@
7822
7803
  const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
7823
7804
  const hasMeasureEncoding = measures.some((item)=>item.encoding);
7824
7805
  const encoding = {};
7825
- if (hasDimensionEncoding) rose_generateDimensionEncoding(dimensions, encoding);
7806
+ if (hasDimensionEncoding) rose_generateDimensionEncoding(dimensions, encoding, measures.length > 1);
7826
7807
  else rose_generateDefaultDimensionEncoding(dimensions, encoding);
7827
7808
  if (hasMeasureEncoding) rose_generateMeasureEncoding(measures, encoding);
7828
7809
  else rose_generateDefaultMeasureEncoding(measures, encoding);
@@ -7842,15 +7823,12 @@
7842
7823
  encoding.row = [];
7843
7824
  encoding.column = [];
7844
7825
  };
7845
- const rose_generateDimensionEncoding = (dimensions, encoding)=>{
7826
+ const rose_generateDimensionEncoding = (dimensions, encoding, isMultiMeasure)=>{
7846
7827
  encoding.angle = chunk_QJLMYOTX_i(dimensions.filter((item)=>'angle' === item.encoding).map((item)=>item.id));
7847
7828
  if (0 === encoding.angle.length) encoding.angle = [
7848
7829
  dimensions[0].id
7849
7830
  ];
7850
- encoding.color = chunk_QJLMYOTX_i(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
7851
- if (0 === encoding.color.length) encoding.color = [
7852
- MeasureName
7853
- ];
7831
+ addColorToEncoding(dimensions, encoding, isMultiMeasure);
7854
7832
  encoding.detail = chunk_QJLMYOTX_i(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
7855
7833
  if (0 === encoding.detail.length) encoding.detail = encoding.color;
7856
7834
  encoding.tooltip = chunk_QJLMYOTX_i(dimensions.map((item)=>item.id));
@@ -7937,6 +7915,7 @@
7937
7915
  const showAxis = !(is0D || is1M1D);
7938
7916
  if (!result.axes) result.axes = [];
7939
7917
  result.axes.push({
7918
+ type: 'band',
7940
7919
  orient: 'angle',
7941
7920
  visible: showAxis,
7942
7921
  zero: true,
@@ -7979,6 +7958,7 @@
7979
7958
  const showAxis = !(is0D || is1M1D);
7980
7959
  if (!result.axes) result.axes = [];
7981
7960
  result.axes.push({
7961
+ type: 'linear',
7982
7962
  orient: 'radius',
7983
7963
  visible: showAxis,
7984
7964
  zero: true,
@@ -8220,7 +8200,7 @@
8220
8200
  const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
8221
8201
  const hasMeasureEncoding = measures.some((item)=>item.encoding);
8222
8202
  const encoding = {};
8223
- if (hasDimensionEncoding) radar_generateDimensionEncoding(dimensions, encoding);
8203
+ if (hasDimensionEncoding) radar_generateDimensionEncoding(dimensions, encoding, measures.length > 1);
8224
8204
  else radar_generateDefaultDimensionEncoding(dimensions, encoding);
8225
8205
  if (hasMeasureEncoding) radar_generateMeasureEncoding(measures, encoding);
8226
8206
  else radar_generateDefaultMeasureEncoding(measures, encoding);
@@ -8239,15 +8219,12 @@
8239
8219
  encoding.row = [];
8240
8220
  encoding.column = [];
8241
8221
  };
8242
- const radar_generateDimensionEncoding = (dimensions, encoding)=>{
8222
+ const radar_generateDimensionEncoding = (dimensions, encoding, isMultiMeasure)=>{
8243
8223
  encoding.angle = chunk_QJLMYOTX_i(dimensions.filter((item)=>'angle' === item.encoding).map((item)=>item.id));
8244
8224
  if (0 === encoding.angle.length) encoding.angle = [
8245
8225
  dimensions[0].id
8246
8226
  ];
8247
- encoding.color = chunk_QJLMYOTX_i(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
8248
- if (0 === encoding.color.length) encoding.color = [
8249
- MeasureName
8250
- ];
8227
+ addColorToEncoding(dimensions, encoding, isMultiMeasure);
8251
8228
  encoding.detail = [];
8252
8229
  if (0 === encoding.detail.length) encoding.detail = [
8253
8230
  MeasureName
@@ -8440,7 +8417,7 @@
8440
8417
  const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
8441
8418
  const hasMeasureEncoding = measures.some((item)=>item.encoding);
8442
8419
  const encoding = {};
8443
- if (hasDimensionEncoding) funnel_generateDimensionEncoding(dimensions, encoding);
8420
+ if (hasDimensionEncoding) funnel_generateDimensionEncoding(dimensions, encoding, measures.length > 1);
8444
8421
  else funnel_generateDefaultDimensionEncoding(dimensions, encoding);
8445
8422
  if (hasMeasureEncoding) funnel_generateMeasureEncoding(measures, encoding);
8446
8423
  else funnel_generateDefaultMeasureEncoding(measures, encoding);
@@ -8458,11 +8435,8 @@
8458
8435
  encoding.row = [];
8459
8436
  encoding.column = [];
8460
8437
  };
8461
- const funnel_generateDimensionEncoding = (dimensions, encoding)=>{
8462
- encoding.color = chunk_QJLMYOTX_i(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
8463
- if (0 === encoding.color.length) encoding.color = [
8464
- MeasureName
8465
- ];
8438
+ const funnel_generateDimensionEncoding = (dimensions, encoding, isMultiMeasure)=>{
8439
+ addColorToEncoding(dimensions, encoding, isMultiMeasure);
8466
8440
  encoding.detail = chunk_QJLMYOTX_i(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
8467
8441
  if (0 === encoding.detail.length) encoding.detail = [
8468
8442
  MeasureName
@@ -8636,7 +8610,7 @@
8636
8610
  const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
8637
8611
  const hasMeasureEncoding = measures.some((item)=>item.encoding);
8638
8612
  const encoding = {};
8639
- if (hasDimensionEncoding) heatmap_generateDimensionEncoding(dimensions, encoding);
8613
+ if (hasDimensionEncoding) heatmap_generateDimensionEncoding(dimensions, encoding, measures.length > 1);
8640
8614
  else heatmap_generateDefaultDimensionEncoding(dimensions, encoding);
8641
8615
  if (hasMeasureEncoding) heatmap_generateMeasureEncoding(measures, encoding);
8642
8616
  else heatmap_generateDefaultMeasureEncoding(measures, encoding);
@@ -8657,7 +8631,7 @@
8657
8631
  encoding.row = [];
8658
8632
  encoding.column = [];
8659
8633
  };
8660
- const heatmap_generateDimensionEncoding = (dimensions, encoding)=>{
8634
+ const heatmap_generateDimensionEncoding = (dimensions, encoding, isMultiMeasure)=>{
8661
8635
  encoding.x = chunk_QJLMYOTX_i(dimensions.filter((item)=>'xAxis' === item.encoding).map((item)=>item.id));
8662
8636
  if (0 === encoding.x.length) encoding.x = [
8663
8637
  dimensions[0].id
@@ -8665,10 +8639,7 @@
8665
8639
  encoding.y = chunk_QJLMYOTX_i(dimensions.filter((item)=>'yAxis' === item.encoding).map((item)=>item.id));
8666
8640
  if (0 === encoding.y.length) if (dimensions.length > 1) encoding.y = dimensions.slice(1).map((item)=>item.id);
8667
8641
  else encoding.y = dimensions.slice(0).map((item)=>item.id);
8668
- encoding.color = chunk_QJLMYOTX_i(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
8669
- if (0 === encoding.color.length) encoding.color = [
8670
- MeasureName
8671
- ];
8642
+ addColorToEncoding(dimensions, encoding, isMultiMeasure);
8672
8643
  encoding.detail = chunk_QJLMYOTX_i(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
8673
8644
  if (0 === encoding.detail.length) encoding.detail = encoding.color;
8674
8645
  encoding.tooltip = chunk_QJLMYOTX_i(dimensions.map((item)=>item.id));
@@ -8724,16 +8695,6 @@
8724
8695
  markStyle_markStyle,
8725
8696
  annotation_annotation
8726
8697
  ];
8727
- const labelColorInversion = (spec)=>{
8728
- const result = {
8729
- ...spec
8730
- };
8731
- if (result.label) result.label.smartInvert = true;
8732
- else result.label = {
8733
- smartInvert: true
8734
- };
8735
- return result;
8736
- };
8737
8698
  const colorCellStyleFill = (stylePipe)=>(spec, context)=>{
8738
8699
  const result = stylePipe(spec, context);
8739
8700
  const { advancedVSeed } = context;
@@ -8821,14 +8782,8 @@
8821
8782
  const originalData = datum[ORIGINAL_DATA];
8822
8783
  const value = originalData[id];
8823
8784
  const measure = findMeasureById(measures, id);
8824
- if (!measure) return String(value);
8825
- const { format = {}, autoFormat = true } = measure;
8826
- if (!chunk_VCYTMP4D_n(format)) {
8827
- const formatter = createFormatter(format);
8828
- return formatter(value);
8829
- }
8830
- if (autoFormat) return autoFormatter(value, locale);
8831
- return String(value);
8785
+ const formatter = createFormatterByMeasure(measure);
8786
+ return formatter(value);
8832
8787
  }
8833
8788
  }));
8834
8789
  const foldMeaContent = [
@@ -8850,14 +8805,8 @@
8850
8805
  const value = datum[measureValue];
8851
8806
  const id = datum[measureId];
8852
8807
  const measure = findMeasureById(measures, id);
8853
- if (!measure) return String(value);
8854
- const { format = {}, autoFormat = true } = measure;
8855
- if (!chunk_VCYTMP4D_n(format)) {
8856
- const formatter = createFormatter(format);
8857
- return formatter(value);
8858
- }
8859
- if (autoFormat) return autoFormatter(value, locale);
8860
- return String(value);
8808
+ const formatter = createFormatterByMeasure(measure);
8809
+ return formatter(value);
8861
8810
  }
8862
8811
  }));
8863
8812
  return [
@@ -8906,7 +8855,6 @@
8906
8855
  datasetXY,
8907
8856
  colorAdapter(color_color, linearColor),
8908
8857
  label_label,
8909
- labelColorInversion,
8910
8858
  colorAdapter(discreteLegend, colorLegend),
8911
8859
  colorCellStyleFill(cellStyle),
8912
8860
  tooltipHeatmap,
@@ -8926,7 +8874,6 @@
8926
8874
  datasetXY,
8927
8875
  colorAdapter(color_color, linearColor),
8928
8876
  label_label,
8929
- labelColorInversion,
8930
8877
  discreteLegend,
8931
8878
  tooltipHeatmap,
8932
8879
  colorCellStyleFill(cellStyle),
@@ -9075,7 +9022,9 @@
9075
9022
  enable: true,
9076
9023
  wrap: true,
9077
9024
  showValue: true,
9078
- showValuePercent: false
9025
+ showValuePercent: false,
9026
+ labelColorSmartInvert: false,
9027
+ labelOverlap: true
9079
9028
  },
9080
9029
  tooltip: {
9081
9030
  enable: true
@@ -9086,7 +9035,7 @@
9086
9035
  maxSize: 1,
9087
9036
  shapeType: 'rectRound',
9088
9037
  position: 'rt',
9089
- labelFontColor: '#646A73',
9038
+ labelColor: '#646A73',
9090
9039
  labelFontSize: 12,
9091
9040
  labelFontWeight: 400
9092
9041
  }
@@ -9144,7 +9093,12 @@
9144
9093
  columnPercent: {
9145
9094
  ...baseConfig,
9146
9095
  xAxis: bandAxis,
9147
- yAxis: linearAxis,
9096
+ yAxis: {
9097
+ ...linearAxis,
9098
+ numFormat: {
9099
+ type: 'percent'
9100
+ }
9101
+ },
9148
9102
  crosshairRect,
9149
9103
  stackCornerRadius: [
9150
9104
  4,
@@ -9179,7 +9133,12 @@
9179
9133
  },
9180
9134
  barPercent: {
9181
9135
  ...baseConfig,
9182
- xAxis: linearAxis,
9136
+ xAxis: {
9137
+ ...linearAxis,
9138
+ numFormat: {
9139
+ type: 'percent'
9140
+ }
9141
+ },
9183
9142
  yAxis: barBandAxis,
9184
9143
  crosshairRect,
9185
9144
  stackCornerRadius: [
@@ -9198,7 +9157,12 @@
9198
9157
  areaPercent: {
9199
9158
  ...baseConfig,
9200
9159
  xAxis: bandAxis,
9201
- yAxis: linearAxis,
9160
+ yAxis: {
9161
+ ...linearAxis,
9162
+ numFormat: {
9163
+ type: 'percent'
9164
+ }
9165
+ },
9202
9166
  crosshairLine
9203
9167
  },
9204
9168
  scatter: {
@@ -9266,7 +9230,11 @@
9266
9230
  ...baseConfig
9267
9231
  },
9268
9232
  heatmap: {
9269
- ...baseConfig
9233
+ ...baseConfig,
9234
+ label: {
9235
+ ...baseConfig.label,
9236
+ labelColorSmartInvert: true
9237
+ }
9270
9238
  }
9271
9239
  }
9272
9240
  };
@@ -9399,7 +9367,9 @@
9399
9367
  enable: true,
9400
9368
  wrap: true,
9401
9369
  showValue: true,
9402
- showValuePercent: false
9370
+ showValuePercent: false,
9371
+ labelColorSmartInvert: false,
9372
+ labelOverlap: true
9403
9373
  },
9404
9374
  tooltip: {
9405
9375
  enable: true
@@ -9410,7 +9380,7 @@
9410
9380
  maxSize: 1,
9411
9381
  position: 'rt',
9412
9382
  shapeType: 'rectRound',
9413
- labelFontColor: '#FDFDFD',
9383
+ labelColor: '#FDFDFD',
9414
9384
  labelFontSize: 12,
9415
9385
  labelFontWeight: 400
9416
9386
  }
@@ -9589,7 +9559,11 @@
9589
9559
  ...baseConfig
9590
9560
  },
9591
9561
  heatmap: {
9592
- ...baseConfig
9562
+ ...baseConfig,
9563
+ label: {
9564
+ ...baseConfig.label,
9565
+ labelColorSmartInvert: true
9566
+ }
9593
9567
  }
9594
9568
  }
9595
9569
  };
@@ -13018,6 +12992,7 @@
13018
12992
  id: schemas_string(),
13019
12993
  alias: schemas_string().optional(),
13020
12994
  autoFormat: schemas_boolean().default(true),
12995
+ numFormat: zNumFormat["default"]({}),
13021
12996
  format: zNumFormat["default"]({}),
13022
12997
  encoding: schemas_enum([
13023
12998
  'primaryYAxis',
@@ -13218,6 +13193,7 @@
13218
13193
  log: schemas_boolean().default(false).nullish(),
13219
13194
  logBase: schemas_number().default(10).nullish(),
13220
13195
  inverse: schemas_boolean().default(false).nullish(),
13196
+ numFormat: zNumFormat.nullish(),
13221
13197
  label: schemas_object({
13222
13198
  visible: schemas_boolean().default(true).nullish(),
13223
13199
  labelColor: schemas_string().default('#797B85').nullish(),
@@ -13283,7 +13259,16 @@
13283
13259
  enable: schemas_boolean().nullish(),
13284
13260
  wrap: schemas_boolean().nullish(),
13285
13261
  showValue: schemas_boolean().nullish(),
13286
- showValuePercent: schemas_boolean().nullish()
13262
+ showValuePercent: schemas_boolean().nullish(),
13263
+ autoFormat: schemas_boolean().nullish(),
13264
+ numFormat: zNumFormat.nullish(),
13265
+ labelFontSize: schemas_number().nullish(),
13266
+ labelFontWeight: schemas_number().or(schemas_string()).nullish(),
13267
+ labelBackgroundColor: schemas_string().nullish(),
13268
+ labelColor: schemas_string().nullish(),
13269
+ labelColorSmartInvert: schemas_boolean().nullish(),
13270
+ labelPosition: schemas_string().nullish(),
13271
+ labelOverlap: schemas_boolean().nullish()
13287
13272
  });
13288
13273
  const zLegend = schemas_object({
13289
13274
  enable: schemas_boolean().default(true).nullish(),
@@ -13335,8 +13320,8 @@
13335
13320
  'bl',
13336
13321
  'br'
13337
13322
  ]).default('bottom').nullish(),
13323
+ labelColor: schemas_string().default('#fff').nullish(),
13338
13324
  labelFontSize: schemas_number().default(12).nullish(),
13339
- labelFontColor: schemas_string().default('#fff').nullish(),
13340
13325
  labelFontWeight: schemas_number().or(schemas_string()).default(400).nullish()
13341
13326
  });
13342
13327
  const zColorLegend = schemas_object({
@@ -13495,56 +13480,6 @@
13495
13480
  funnel: zFunnelConfig.nullish(),
13496
13481
  heatmap: zHeatmapConfig.nullish()
13497
13482
  });
13498
- const zAxis = schemas_object({
13499
- visible: schemas_boolean().default(true).nullish(),
13500
- min: schemas_number().nullish(),
13501
- max: schemas_number().nullish(),
13502
- nice: schemas_boolean().default(true).nullish(),
13503
- zero: schemas_boolean().default(true).nullish(),
13504
- inverse: schemas_boolean().default(false).nullish(),
13505
- log: schemas_boolean().default(false).nullish(),
13506
- logBase: schemas_number().default(10).nullish(),
13507
- labelAutoHide: schemas_boolean().default(true).nullish(),
13508
- labelAutoHideGap: schemas_number().default(4).nullish(),
13509
- labelAutoRotate: schemas_boolean().default(true).nullish(),
13510
- labelAutoRotateAngleRange: schemas_array(schemas_number()).default([
13511
- 0,
13512
- -45,
13513
- -90
13514
- ]).nullish(),
13515
- labelAutoLimit: schemas_boolean().default(true).nullish(),
13516
- labelAutoLimitLength: schemas_number().default(100).nullish(),
13517
- label: schemas_object({
13518
- visible: schemas_boolean().default(true).nullish(),
13519
- labelColor: schemas_string().default('#797B85').nullish(),
13520
- labelFontSize: schemas_number().default(12).nullish(),
13521
- labelFontWeight: schemas_number().default(400).nullish(),
13522
- labelAngle: schemas_number().default(0).nullish()
13523
- }).nullish(),
13524
- line: schemas_object({
13525
- visible: schemas_boolean().default(true).nullish(),
13526
- lineColor: schemas_string().default('rgba(54, 65, 89, 0.30)').nullish(),
13527
- lineWidth: schemas_number().default(1).nullish()
13528
- }).nullish(),
13529
- tick: schemas_object({
13530
- visible: schemas_boolean().default(true).nullish(),
13531
- tickInside: schemas_boolean().default(false).nullish(),
13532
- tickColor: schemas_string().default('rgba(54, 65, 89, 0.30)').nullish(),
13533
- tickSize: schemas_number().default(4).nullish()
13534
- }).nullish(),
13535
- title: schemas_object({
13536
- visible: schemas_boolean().default(false).nullish(),
13537
- titleText: schemas_string().default('').nullish(),
13538
- titleColor: schemas_string().default('#646A73').nullish(),
13539
- titleFontSize: schemas_number().default(12).nullish(),
13540
- titleFontWeight: schemas_number().default(400).nullish()
13541
- }).nullish(),
13542
- grid: schemas_object({
13543
- visible: schemas_boolean().default(false).nullish(),
13544
- gridColor: schemas_string().default('rgba(54, 65, 89, 0.15)').nullish(),
13545
- gridWidth: schemas_number().default(0.5).nullish()
13546
- }).nullish()
13547
- });
13548
13483
  const zCustomThemeConfig = schemas_object({
13549
13484
  config: zConfig.nullish()
13550
13485
  });