@visactor/vseed 0.1.14 → 0.1.16

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 (169) hide show
  1. package/dist/cjs/index.cjs +3 -1
  2. package/dist/cjs/index.cjs.map +1 -1
  3. package/dist/esm/builder/builder/buildAdvanced.js +1 -1
  4. package/dist/esm/builder/builder/buildAdvanced.js.map +1 -1
  5. package/dist/esm/builder/builder/buildSpec.js +2 -3
  6. package/dist/esm/builder/builder/buildSpec.js.map +1 -1
  7. package/dist/esm/builder/builder/builder.d.ts +1113 -9
  8. package/dist/esm/dataReshape/foldMeasures.d.ts +1 -0
  9. package/dist/esm/dataReshape/foldMeasures.js +5 -1
  10. package/dist/esm/dataReshape/foldMeasures.js.map +1 -1
  11. package/dist/esm/pipeline/advanced/chart/pipes/default/defaultDimensions.js +4 -3
  12. package/dist/esm/pipeline/advanced/chart/pipes/default/defaultDimensions.js.map +1 -1
  13. package/dist/esm/pipeline/advanced/chart/pipes/default/defaultMeasures.js +12 -9
  14. package/dist/esm/pipeline/advanced/chart/pipes/default/defaultMeasures.js.map +1 -1
  15. package/dist/esm/pipeline/advanced/chart/pipes/init/initAdvancedVSeed.js +2 -0
  16. package/dist/esm/pipeline/advanced/chart/pipes/init/initAdvancedVSeed.js.map +1 -1
  17. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithDualEncoding.js +4 -6
  18. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithDualEncoding.js.map +1 -1
  19. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithEncoding.js +2 -5
  20. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithEncoding.js.map +1 -1
  21. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithScatterEncoding.js +2 -4
  22. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithScatterEncoding.js.map +1 -1
  23. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithDualEncoding.js +4 -6
  24. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithDualEncoding.js.map +1 -1
  25. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithEncoding.js +2 -5
  26. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithEncoding.js.map +1 -1
  27. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithScatterEncoding.js +2 -4
  28. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithScatterEncoding.js.map +1 -1
  29. package/dist/esm/pipeline/advanced/table/pipes/default/defaultDimensions.js +13 -7
  30. package/dist/esm/pipeline/advanced/table/pipes/default/defaultDimensions.js.map +1 -1
  31. package/dist/esm/pipeline/advanced/table/pipes/default/defaultMeasures.js +13 -9
  32. package/dist/esm/pipeline/advanced/table/pipes/default/defaultMeasures.js.map +1 -1
  33. package/dist/esm/pipeline/advanced/table/pipes/init/initAdvancedVSeed.js +2 -0
  34. package/dist/esm/pipeline/advanced/table/pipes/init/initAdvancedVSeed.js.map +1 -1
  35. package/dist/esm/pipeline/advanced/table/pipes/reshape/reshapePivotTable.js +2 -1
  36. package/dist/esm/pipeline/advanced/table/pipes/reshape/reshapePivotTable.js.map +1 -1
  37. package/dist/esm/pipeline/spec/chart/pipeline/heatmap.js +1 -3
  38. package/dist/esm/pipeline/spec/chart/pipeline/heatmap.js.map +1 -1
  39. package/dist/esm/pipeline/spec/chart/pipeline/scatter.js +3 -3
  40. package/dist/esm/pipeline/spec/chart/pipeline/scatter.js.map +1 -1
  41. package/dist/esm/pipeline/spec/chart/pipes/axes/format/linearFormat.d.ts +2 -0
  42. package/dist/esm/pipeline/spec/chart/pipes/axes/format/linearFormat.js +11 -0
  43. package/dist/esm/pipeline/spec/chart/pipes/axes/format/linearFormat.js.map +1 -0
  44. package/dist/esm/pipeline/spec/chart/pipes/axes/title/defaultTitleText.d.ts +2 -0
  45. package/dist/esm/pipeline/spec/chart/pipes/axes/title/defaultTitleText.js +14 -0
  46. package/dist/esm/pipeline/spec/chart/pipes/axes/title/defaultTitleText.js.map +1 -0
  47. package/dist/esm/pipeline/spec/chart/pipes/axes/xBand.js +3 -1
  48. package/dist/esm/pipeline/spec/chart/pipes/axes/xBand.js.map +1 -1
  49. package/dist/esm/pipeline/spec/chart/pipes/axes/xLinear.js +8 -5
  50. package/dist/esm/pipeline/spec/chart/pipes/axes/xLinear.js.map +1 -1
  51. package/dist/esm/pipeline/spec/chart/pipes/axes/yBand.js +3 -1
  52. package/dist/esm/pipeline/spec/chart/pipes/axes/yBand.js.map +1 -1
  53. package/dist/esm/pipeline/spec/chart/pipes/axes/yLinear.js +8 -5
  54. package/dist/esm/pipeline/spec/chart/pipes/axes/yLinear.js.map +1 -1
  55. package/dist/esm/pipeline/spec/chart/pipes/axes/yLinearPrimary.js +8 -5
  56. package/dist/esm/pipeline/spec/chart/pipes/axes/yLinearPrimary.js.map +1 -1
  57. package/dist/esm/pipeline/spec/chart/pipes/axes/yLinearSecondary.js +8 -5
  58. package/dist/esm/pipeline/spec/chart/pipes/axes/yLinearSecondary.js.map +1 -1
  59. package/dist/esm/pipeline/spec/chart/pipes/label/index.d.ts +1 -1
  60. package/dist/esm/pipeline/spec/chart/pipes/label/index.js +2 -2
  61. package/dist/esm/pipeline/spec/chart/pipes/label/label.d.ts +5 -1
  62. package/dist/esm/pipeline/spec/chart/pipes/label/label.js +41 -33
  63. package/dist/esm/pipeline/spec/chart/pipes/label/label.js.map +1 -1
  64. package/dist/esm/pipeline/spec/chart/pipes/label/labelDualAxis.js +15 -52
  65. package/dist/esm/pipeline/spec/chart/pipes/label/labelDualAxis.js.map +1 -1
  66. package/dist/esm/pipeline/spec/chart/pipes/label/{labelColorInversion.d.ts → labelScatter.d.ts} +1 -1
  67. package/dist/esm/pipeline/spec/chart/pipes/label/labelScatter.js +19 -0
  68. package/dist/esm/pipeline/spec/chart/pipes/label/labelScatter.js.map +1 -0
  69. package/dist/esm/pipeline/spec/chart/pipes/series/series.js +1 -0
  70. package/dist/esm/pipeline/spec/chart/pipes/series/series.js.map +1 -1
  71. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltip.d.ts +3 -3
  72. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltip.js +13 -30
  73. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltip.js.map +1 -1
  74. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipDualAxis.js +6 -6
  75. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipDualAxis.js.map +1 -1
  76. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipHeatmap.js +6 -18
  77. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipHeatmap.js.map +1 -1
  78. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipScatter.js +6 -18
  79. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipScatter.js.map +1 -1
  80. package/dist/esm/pipeline/spec/table/pipes/columns/measuresToColumns.js +8 -11
  81. package/dist/esm/pipeline/spec/table/pipes/columns/measuresToColumns.js.map +1 -1
  82. package/dist/esm/pipeline/spec/table/pipes/indicators/pivotIndicators.js +8 -13
  83. package/dist/esm/pipeline/spec/table/pipes/indicators/pivotIndicators.js.map +1 -1
  84. package/dist/esm/pipeline/utils/constant.d.ts +1 -0
  85. package/dist/esm/pipeline/utils/constant.js +2 -1
  86. package/dist/esm/pipeline/utils/constant.js.map +1 -1
  87. package/dist/esm/pipeline/utils/format/createFormatter.d.ts +1 -1
  88. package/dist/esm/pipeline/utils/format/createFormatter.js +3 -2
  89. package/dist/esm/pipeline/utils/format/createFormatter.js.map +1 -1
  90. package/dist/esm/pipeline/utils/format/createFormatterByMeasure.d.ts +2 -0
  91. package/dist/esm/pipeline/utils/format/createFormatterByMeasure.js +14 -0
  92. package/dist/esm/pipeline/utils/format/createFormatterByMeasure.js.map +1 -0
  93. package/dist/esm/pipeline/utils/format/createNumFormatter.d.ts +1 -1
  94. package/dist/esm/pipeline/utils/format/createNumFormatter.js.map +1 -1
  95. package/dist/esm/pipeline/utils/format/index.d.ts +1 -0
  96. package/dist/esm/pipeline/utils/format/index.js +1 -0
  97. package/dist/esm/pipeline/utils/index.d.ts +1 -0
  98. package/dist/esm/pipeline/utils/index.js +1 -0
  99. package/dist/esm/pipeline/utils/valid/checkVSeed.d.ts +2 -0
  100. package/dist/esm/pipeline/utils/valid/checkVSeed.js +11 -0
  101. package/dist/esm/pipeline/utils/valid/checkVSeed.js.map +1 -0
  102. package/dist/esm/pipeline/utils/valid/index.d.ts +1 -0
  103. package/dist/esm/pipeline/utils/valid/index.js +2 -0
  104. package/dist/esm/theme/dark.js +5 -1
  105. package/dist/esm/theme/dark.js.map +1 -1
  106. package/dist/esm/theme/light.js +23 -4
  107. package/dist/esm/theme/light.js.map +1 -1
  108. package/dist/esm/types/advancedVSeed.d.ts +947 -17
  109. package/dist/esm/types/chartType/area/zArea.d.ts +60 -0
  110. package/dist/esm/types/chartType/areaPercent/zAreaPercent.d.ts +60 -0
  111. package/dist/esm/types/chartType/bar/zBar.d.ts +60 -0
  112. package/dist/esm/types/chartType/barParallel/zBarParallel.d.ts +60 -0
  113. package/dist/esm/types/chartType/barPercent/zBarPercent.d.ts +60 -0
  114. package/dist/esm/types/chartType/column/zColumn.d.ts +60 -0
  115. package/dist/esm/types/chartType/columnParallel/zColumnParallel.d.ts +60 -0
  116. package/dist/esm/types/chartType/columnPercent/zColumnPercent.d.ts +60 -0
  117. package/dist/esm/types/chartType/donut/zDonut.d.ts +30 -0
  118. package/dist/esm/types/chartType/dualAxis/zDualAxis.d.ts +270 -0
  119. package/dist/esm/types/chartType/funnel/zFunnel.d.ts +30 -0
  120. package/dist/esm/types/chartType/heatmap/zHeatmap.d.ts +30 -0
  121. package/dist/esm/types/chartType/line/zLine.d.ts +60 -0
  122. package/dist/esm/types/chartType/pie/zPie.d.ts +30 -0
  123. package/dist/esm/types/chartType/pivotTable/zPivotTable.d.ts +30 -0
  124. package/dist/esm/types/chartType/radar/zRadar.d.ts +30 -0
  125. package/dist/esm/types/chartType/rose/zRose.d.ts +30 -0
  126. package/dist/esm/types/chartType/roseParallel/zRoseParallel.d.ts +30 -0
  127. package/dist/esm/types/chartType/scatter/zScatter.d.ts +210 -0
  128. package/dist/esm/types/chartType/table/zTable.d.ts +30 -0
  129. package/dist/esm/types/properties/config/axes/bandAxis.d.ts +146 -3
  130. package/dist/esm/types/properties/config/axes/index.d.ts +0 -2
  131. package/dist/esm/types/properties/config/axes/index.js +0 -1
  132. package/dist/esm/types/properties/config/axes/linearAxis.d.ts +149 -3
  133. package/dist/esm/types/properties/config/axes/zLinearAxis.d.ts +60 -0
  134. package/dist/esm/types/properties/config/axes/zLinearAxis.js +2 -0
  135. package/dist/esm/types/properties/config/axes/zLinearAxis.js.map +1 -1
  136. package/dist/esm/types/properties/config/config.d.ts +916 -16
  137. package/dist/esm/types/properties/config/label/label.d.ts +3 -3
  138. package/dist/esm/types/properties/config/label/zLabel.js +1 -1
  139. package/dist/esm/types/properties/config/label/zLabel.js.map +1 -1
  140. package/dist/esm/types/properties/format/numFormat.js.map +1 -0
  141. package/dist/esm/types/properties/index.d.ts +1 -0
  142. package/dist/esm/types/properties/index.js +1 -0
  143. package/dist/esm/types/properties/measures/index.d.ts +0 -1
  144. package/dist/esm/types/properties/measures/index.js +0 -1
  145. package/dist/esm/types/properties/measures/measures.d.ts +6 -2
  146. package/dist/esm/types/properties/measures/zDualMeasures.d.ts +240 -0
  147. package/dist/esm/types/properties/measures/zMeasures.d.ts +90 -0
  148. package/dist/esm/types/properties/measures/zMeasures.js +2 -1
  149. package/dist/esm/types/properties/measures/zMeasures.js.map +1 -1
  150. package/dist/esm/types/properties/measures/zScatterMeasures.d.ts +240 -0
  151. package/dist/esm/types/properties/theme/customTheme.d.ts +916 -16
  152. package/dist/esm/types/zVseed.d.ts +1389 -99
  153. package/dist/umd/index.js +308 -366
  154. package/dist/umd/index.js.map +1 -1
  155. package/package.json +1 -1
  156. package/dist/esm/pipeline/spec/chart/pipes/label/labelColorInversion.js +0 -13
  157. package/dist/esm/pipeline/spec/chart/pipes/label/labelColorInversion.js.map +0 -1
  158. package/dist/esm/types/properties/config/axes/axis.d.ts +0 -208
  159. package/dist/esm/types/properties/config/axes/axis.js +0 -0
  160. package/dist/esm/types/properties/config/axes/zAxis.d.ts +0 -47
  161. package/dist/esm/types/properties/config/axes/zAxis.js +0 -54
  162. package/dist/esm/types/properties/config/axes/zAxis.js.map +0 -1
  163. package/dist/esm/types/properties/measures/format/numFormat.js.map +0 -1
  164. /package/dist/esm/types/properties/{measures/format → format}/formatter.d.ts +0 -0
  165. /package/dist/esm/types/properties/{measures/format → format}/formatter.js +0 -0
  166. /package/dist/esm/types/properties/{measures/format → format}/index.d.ts +0 -0
  167. /package/dist/esm/types/properties/{measures/format → format}/index.js +0 -0
  168. /package/dist/esm/types/properties/{measures/format → format}/numFormat.d.ts +0 -0
  169. /package/dist/esm/types/properties/{measures/format → format}/numFormat.js +0 -0
@@ -1,36 +1,62 @@
1
- import { autoFormatter, createFormatter, findMeasureById } from "../../../../utils/index.js";
1
+ import { createFormatter, createFormatterByMeasure, findMeasureById } from "../../../../utils/index.js";
2
2
  import { isEmpty, merge, uniqueBy } from "remeda";
3
- import { intl } from "../../../../../i18n/index.js";
4
3
  const label_label = (spec, context)=>{
5
4
  const result = {
6
5
  ...spec
7
6
  };
8
7
  const { advancedVSeed, vseed } = context;
9
- const { measures, datasetReshapeInfo } = advancedVSeed;
8
+ const { datasetReshapeInfo } = advancedVSeed;
10
9
  const { chartType, encoding } = advancedVSeed;
11
10
  const baseConfig = advancedVSeed.config[chartType];
11
+ const foldInfo = datasetReshapeInfo[0].foldInfo;
12
12
  if (!baseConfig || isEmpty(baseConfig.label)) return result;
13
- const { measureId, measureValue, statistics } = datasetReshapeInfo[0].foldInfo;
14
13
  const { label } = baseConfig;
15
- const { enable, wrap, showValue, showValuePercent, labelOverlap, labelColorSmartInvert, labelColor, labelFontSize, labelFontWeight, labelBackgroundColor, labelPosition, autoFormat = true, numFormat = {} } = label;
16
- const labelDims = uniqueBy((vseed.dimensions || []).filter((item)=>encoding.label?.includes(item.id)), (item)=>item.id);
17
- const labelMeas = uniqueBy((vseed.measures || []).filter((item)=>encoding.label?.includes(item.id)), (item)=>item.id);
14
+ result.label = buildLabel(label, vseed.measures, vseed.dimensions, advancedVSeed.measures, encoding, [
15
+ foldInfo
16
+ ]);
17
+ return result;
18
+ };
19
+ const generateMeasureValue = (value, measure, labelAutoFormat, numFormat = {})=>{
20
+ if (!measure) return value;
21
+ const format = merge(numFormat, measure.numFormat || measure.format);
22
+ const mergedMeasure = {
23
+ ...measure,
24
+ numFormat: format,
25
+ autoFormat: labelAutoFormat || measure.autoFormat
26
+ };
27
+ const formatter = createFormatterByMeasure(mergedMeasure);
28
+ return formatter(value);
29
+ };
30
+ const generateMeasurePercent = (value, sum, formatter)=>{
31
+ if (null == value) return String(value);
32
+ const num = Number(value);
33
+ if (Number.isNaN(num)) return String(value);
34
+ const percentValue = num / sum;
35
+ return formatter(percentValue);
36
+ };
37
+ const buildLabel = (label, vseedMeasures = [], vseedDimensions = [], advancedVSeedMeasures, encoding, foldInfoList)=>{
38
+ const { enable, wrap, showValue, showValuePercent, labelOverlap, labelColorSmartInvert, labelColor, labelFontSize, labelFontWeight, labelBackgroundColor, labelPosition, autoFormat, numFormat = {} } = label;
39
+ const labelDims = uniqueBy((vseedDimensions || []).filter((item)=>encoding.label?.includes(item.id)), (item)=>item.id);
40
+ const labelMeas = uniqueBy((vseedMeasures || []).filter((item)=>encoding.label?.includes(item.id)), (item)=>item.id);
18
41
  const percentFormat = merge(numFormat, {
19
42
  type: 'percent'
20
43
  });
21
44
  const percentFormatter = createFormatter(percentFormat);
22
- result.label = {
45
+ const result = {
23
46
  visible: enable,
24
47
  formatMethod: (_, datum)=>{
25
48
  const result = [];
26
49
  const dimLabels = labelDims.map((item)=>item.alias || item.id);
27
50
  const meaLabels = labelMeas.map((item)=>generateMeasureValue(datum[item.id], item, autoFormat, numFormat));
28
- const measure = findMeasureById(measures, datum[measureId]);
29
- const measureValueLabel = generateMeasureValue(datum[measureValue], measure, autoFormat, numFormat);
30
- const measurePercentLabel = generateMeasurePercent(datum[measureValue], statistics.sum, percentFormatter);
31
51
  result.push(...dimLabels);
32
- if (showValue) result.push(measureValueLabel);
33
- if (showValuePercent) result.push(measurePercentLabel);
52
+ foldInfoList.forEach((foldInfo)=>{
53
+ const { measureId, measureValue, statistics } = foldInfo;
54
+ const measure = findMeasureById(advancedVSeedMeasures, datum[measureId]);
55
+ const measureValueLabel = generateMeasureValue(datum[measureValue], measure, autoFormat, numFormat);
56
+ const measurePercentLabel = generateMeasurePercent(datum[measureValue], statistics.sum, percentFormatter);
57
+ if (showValue) result.push(measureValueLabel);
58
+ if (showValuePercent) result.push(measurePercentLabel);
59
+ });
34
60
  result.push(...meaLabels);
35
61
  if (wrap) return result;
36
62
  return result.join(' ');
@@ -44,30 +70,12 @@ const label_label = (spec, context)=>{
44
70
  },
45
71
  smartInvert: labelColorSmartInvert
46
72
  };
47
- if (labelOverlap) result.label.overlap = {
73
+ if (labelOverlap) result.overlap = {
48
74
  hideOnHit: true,
49
75
  clampForce: true
50
76
  };
51
77
  return result;
52
78
  };
53
- const generateMeasureValue = (value, measure, labelAutoFormat = true, numFormat = {})=>{
54
- if (!measure) return value;
55
- const format = merge(numFormat, measure.format);
56
- const autoFormat = labelAutoFormat || measure.autoFormat;
57
- if (!isEmpty(format)) {
58
- const formatter = createFormatter(format);
59
- return formatter(value);
60
- }
61
- if (autoFormat) return autoFormatter(value, intl.getLocale());
62
- return String(value);
63
- };
64
- const generateMeasurePercent = (value, sum, formatter)=>{
65
- if (null == value) return String(value);
66
- const num = Number(value);
67
- if (Number.isNaN(num)) return String(value);
68
- const percentValue = num / sum;
69
- return formatter(percentValue);
70
- };
71
- export { label_label as label };
79
+ export { buildLabel, generateMeasurePercent, generateMeasureValue, label_label as label };
72
80
 
73
81
  //# sourceMappingURL=label.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/chart/pipes/label/label.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/label/label.ts"],"sourcesContent":["import type { ILineChartSpec } from '@visactor/vchart'\nimport type { ILineLikeLabelSpec } from '@visactor/vchart/esm/series/mixin/interface'\nimport { autoFormatter, createFormatter, findMeasureById } from '../../../../utils'\nimport type { Datum, Formatter, Label, Measure, NumFormat, SpecPipe } from 'src/types'\nimport { isEmpty, merge, uniqueBy } from 'remeda'\nimport { intl } from 'src/i18n'\n\nexport const label: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed, vseed } = context\n const { measures, datasetReshapeInfo } = advancedVSeed\n const { chartType, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { label: Label }\n\n if (!baseConfig || isEmpty(baseConfig.label)) {\n return result\n }\n\n const { measureId, measureValue, statistics } = datasetReshapeInfo[0].foldInfo\n const { label } = baseConfig\n const {\n enable,\n wrap,\n showValue,\n showValuePercent,\n labelOverlap,\n labelColorSmartInvert,\n labelColor,\n labelFontSize,\n labelFontWeight,\n labelBackgroundColor,\n labelPosition,\n autoFormat = true,\n numFormat = {},\n } = label\n\n const labelDims = uniqueBy(\n (vseed.dimensions || []).filter((item) => encoding.label?.includes(item.id)),\n (item) => item.id,\n )\n const labelMeas = uniqueBy(\n (vseed.measures || []).filter((item) => encoding.label?.includes(item.id)),\n (item) => item.id,\n )\n\n const percentFormat: NumFormat = merge(numFormat, {\n type: 'percent',\n } as NumFormat)\n\n const percentFormatter = createFormatter(percentFormat)\n\n result.label = {\n visible: enable,\n formatMethod: (_, datum: Datum) => {\n const result = []\n\n const dimLabels = labelDims.map((item) => item.alias || item.id)\n const meaLabels = labelMeas.map((item) =>\n generateMeasureValue(datum[item.id] as number | string, item, autoFormat, numFormat),\n )\n\n const measure = findMeasureById(measures, datum[measureId] as string)\n const measureValueLabel = generateMeasureValue(\n datum[measureValue] as number | string,\n measure,\n autoFormat,\n numFormat,\n )\n const measurePercentLabel = generateMeasurePercent(\n datum[measureValue] as number | string,\n statistics.sum,\n percentFormatter,\n )\n\n result.push(...dimLabels)\n\n if (showValue) {\n result.push(measureValueLabel)\n }\n if (showValuePercent) {\n result.push(measurePercentLabel)\n }\n\n result.push(...meaLabels)\n\n if (wrap) {\n return result\n }\n return result.join(' ')\n },\n position: labelPosition,\n style: {\n fill: labelColor,\n fontSize: labelFontSize,\n fontWeight: labelFontWeight,\n background: labelBackgroundColor,\n },\n smartInvert: labelColorSmartInvert,\n } as ILineLikeLabelSpec\n\n if (labelOverlap) {\n result.label.overlap = {\n hideOnHit: true,\n clampForce: true,\n }\n }\n\n return result\n}\n\nconst generateMeasureValue = (\n value: number | string,\n measure?: Measure,\n labelAutoFormat: boolean = true,\n numFormat: NumFormat = {},\n) => {\n if (!measure) {\n return value\n }\n const format = merge(numFormat, measure.format)\n const autoFormat = labelAutoFormat || measure.autoFormat\n\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n if (autoFormat) {\n return autoFormatter(value, intl.getLocale())\n }\n return String(value)\n}\n\nconst generateMeasurePercent = (value: number | string, sum: number, formatter: Formatter) => {\n if (value === undefined || value === null) return String(value)\n const num = Number(value)\n if (Number.isNaN(num)) return String(value)\n\n const percentValue = num / sum\n return formatter(percentValue)\n}\n"],"names":["label","spec","context","result","advancedVSeed","vseed","measures","datasetReshapeInfo","chartType","encoding","baseConfig","isEmpty","measureId","measureValue","statistics","enable","wrap","showValue","showValuePercent","labelOverlap","labelColorSmartInvert","labelColor","labelFontSize","labelFontWeight","labelBackgroundColor","labelPosition","autoFormat","numFormat","labelDims","uniqueBy","item","labelMeas","percentFormat","merge","percentFormatter","createFormatter","_","datum","dimLabels","meaLabels","generateMeasureValue","measure","findMeasureById","measureValueLabel","measurePercentLabel","generateMeasurePercent","value","labelAutoFormat","format","formatter","autoFormatter","intl","String","sum","num","Number","percentValue"],"mappings":"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"}
1
+ {"version":3,"file":"pipeline/spec/chart/pipes/label/label.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/label/label.ts"],"sourcesContent":["import type { ILineChartSpec } from '@visactor/vchart'\nimport type { ILineLikeLabelSpec } from '@visactor/vchart/esm/series/mixin/interface'\nimport { createFormatter, createFormatterByMeasure, findMeasureById } from '../../../../utils'\nimport type {\n Datum,\n Dimensions,\n Encoding,\n FoldInfo,\n Formatter,\n Label,\n Measure,\n Measures,\n NumFormat,\n SpecPipe,\n} from 'src/types'\nimport { isEmpty, merge, uniqueBy } from 'remeda'\n\nexport const label: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { chartType, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { label: Label }\n const foldInfo = datasetReshapeInfo[0].foldInfo as FoldInfo\n if (!baseConfig || isEmpty(baseConfig.label)) {\n return result\n }\n\n const { label } = baseConfig\n\n result.label = buildLabel(label, vseed.measures, vseed.dimensions, advancedVSeed.measures, encoding as Encoding, [\n foldInfo,\n ])\n\n return result\n}\n\nexport const generateMeasureValue = (\n value: number | string,\n measure?: Measure,\n labelAutoFormat?: boolean,\n numFormat: NumFormat = {},\n) => {\n if (!measure) {\n return value\n }\n\n const format = merge(numFormat, measure.numFormat || measure.format)\n const mergedMeasure = { ...measure, numFormat: format, autoFormat: labelAutoFormat || measure.autoFormat }\n\n const formatter = createFormatterByMeasure(mergedMeasure)\n return formatter(value)\n}\n\nexport const generateMeasurePercent = (value: number | string, sum: number, formatter: Formatter) => {\n if (value === undefined || value === null) return String(value)\n const num = Number(value)\n if (Number.isNaN(num)) return String(value)\n\n const percentValue = num / sum\n return formatter(percentValue)\n}\n\nexport const buildLabel = (\n label: Label,\n vseedMeasures: Measures = [],\n vseedDimensions: Dimensions = [],\n advancedVSeedMeasures: Measures,\n encoding: Encoding,\n foldInfoList: FoldInfo[],\n) => {\n const {\n enable,\n wrap,\n showValue,\n showValuePercent,\n labelOverlap,\n labelColorSmartInvert,\n labelColor,\n labelFontSize,\n labelFontWeight,\n labelBackgroundColor,\n labelPosition,\n autoFormat,\n numFormat = {},\n } = label\n\n const labelDims = uniqueBy(\n (vseedDimensions || []).filter((item) => encoding.label?.includes(item.id)),\n (item) => item.id,\n )\n const labelMeas = uniqueBy(\n (vseedMeasures || []).filter((item) => encoding.label?.includes(item.id)),\n (item) => item.id,\n )\n\n const percentFormat: NumFormat = merge(numFormat, {\n type: 'percent',\n } as NumFormat)\n\n const percentFormatter = createFormatter(percentFormat)\n\n const result = {\n visible: enable,\n formatMethod: (_, datum: Datum) => {\n const result = []\n\n const dimLabels = labelDims.map((item) => item.alias || item.id)\n const meaLabels = labelMeas.map((item) =>\n generateMeasureValue(datum[item.id] as number | string, item, autoFormat, numFormat),\n )\n\n result.push(...dimLabels)\n\n foldInfoList.forEach((foldInfo) => {\n const { measureId, measureValue, statistics } = foldInfo\n const measure = findMeasureById(advancedVSeedMeasures, datum[measureId] as string)\n const measureValueLabel = generateMeasureValue(\n datum[measureValue] as number | string,\n measure,\n autoFormat,\n numFormat,\n )\n const measurePercentLabel = generateMeasurePercent(\n datum[measureValue] as number | string,\n statistics.sum,\n percentFormatter,\n )\n if (showValue) {\n result.push(measureValueLabel)\n }\n if (showValuePercent) {\n result.push(measurePercentLabel)\n }\n })\n\n result.push(...meaLabels)\n\n if (wrap) {\n return result\n }\n return result.join(' ')\n },\n position: labelPosition,\n style: {\n fill: labelColor,\n fontSize: labelFontSize,\n fontWeight: labelFontWeight,\n background: labelBackgroundColor,\n },\n smartInvert: labelColorSmartInvert,\n } as ILineLikeLabelSpec\n\n if (labelOverlap) {\n result.overlap = {\n hideOnHit: true,\n clampForce: true,\n }\n }\n\n return result\n}\n"],"names":["label","spec","context","result","advancedVSeed","vseed","datasetReshapeInfo","chartType","encoding","baseConfig","foldInfo","isEmpty","buildLabel","generateMeasureValue","value","measure","labelAutoFormat","numFormat","format","merge","mergedMeasure","formatter","createFormatterByMeasure","generateMeasurePercent","sum","String","num","Number","percentValue","vseedMeasures","vseedDimensions","advancedVSeedMeasures","foldInfoList","enable","wrap","showValue","showValuePercent","labelOverlap","labelColorSmartInvert","labelColor","labelFontSize","labelFontWeight","labelBackgroundColor","labelPosition","autoFormat","labelDims","uniqueBy","item","labelMeas","percentFormat","percentFormatter","createFormatter","_","datum","dimLabels","meaLabels","measureId","measureValue","statistics","findMeasureById","measureValueLabel","measurePercentLabel"],"mappings":"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"}
@@ -1,74 +1,37 @@
1
- import { autoFormatter, createFormatter, findMeasureById } from "../../../../utils/index.js";
2
- import { isEmpty, isNullish } from "remeda";
1
+ import { isNullish } from "remeda";
2
+ import { buildLabel } from "./label.js";
3
+ import { DUAL_AXIS_LABEL_Z_INDEX } from "../../../../utils/constant.js";
3
4
  const labelPrimary = (spec, context)=>{
4
5
  const result = {
5
6
  ...spec
6
7
  };
7
- const { advancedVSeed } = context;
8
- const { measures, datasetReshapeInfo, locale } = advancedVSeed;
8
+ const { advancedVSeed, vseed } = context;
9
+ const { datasetReshapeInfo, encoding } = advancedVSeed;
9
10
  const { chartType } = advancedVSeed;
10
11
  const baseConfig = advancedVSeed.config[chartType];
11
12
  if (!baseConfig || !baseConfig.label) return result;
12
13
  const foldInfoList = datasetReshapeInfo[0].foldInfoList;
13
- const { measureId, measureValue } = foldInfoList[0];
14
- const { label } = baseConfig;
15
- const { enable } = label;
16
- result.label = {
17
- visible: enable,
18
- formatMethod: (value, datum)=>{
19
- const result = [];
20
- const formatValue = (value)=>{
21
- const id = datum[measureId];
22
- const measure = findMeasureById(measures, id);
23
- if (!measure) return value;
24
- const { format = {}, autoFormat = true } = measure;
25
- if (!isEmpty(format)) {
26
- const formatter = createFormatter(format);
27
- return formatter(value);
28
- }
29
- if (autoFormat) return autoFormatter(value, locale);
30
- return String(value);
31
- };
32
- result.push(formatValue(datum[measureValue]));
33
- return result.join(' ');
34
- }
35
- };
14
+ result.label = buildLabel(baseConfig.label, vseed.measures, vseed.dimensions, advancedVSeed.measures, encoding, [
15
+ foldInfoList[0]
16
+ ]);
17
+ result.label.zIndex = DUAL_AXIS_LABEL_Z_INDEX;
36
18
  return result;
37
19
  };
38
20
  const labelSecondary = (spec, context)=>{
39
21
  const result = {
40
22
  ...spec
41
23
  };
42
- const { advancedVSeed } = context;
43
- const { measures, datasetReshapeInfo, locale } = advancedVSeed;
24
+ const { advancedVSeed, vseed } = context;
25
+ const { datasetReshapeInfo, encoding } = advancedVSeed;
44
26
  const { chartType } = advancedVSeed;
45
27
  const baseConfig = advancedVSeed.config[chartType];
46
28
  if (!baseConfig || !baseConfig.label) return result;
47
29
  if (isNullish(datasetReshapeInfo[0].foldInfoList?.[1])) return result;
48
30
  const foldInfoList = datasetReshapeInfo[0].foldInfoList;
49
- const { measureId, measureValue } = foldInfoList[1];
50
- const { label } = baseConfig;
51
- const { enable } = label;
52
- result.label = {
53
- visible: enable,
54
- formatMethod: (value, datum)=>{
55
- const result = [];
56
- const formatValue = (value)=>{
57
- const id = datum[measureId];
58
- const measure = findMeasureById(measures, id);
59
- if (!measure) return value;
60
- const { format = {}, autoFormat = true } = measure;
61
- if (!isEmpty(format)) {
62
- const formatter = createFormatter(format);
63
- return formatter(value);
64
- }
65
- if (autoFormat) return autoFormatter(value, locale);
66
- return String(value);
67
- };
68
- result.push(formatValue(datum[measureValue]));
69
- return result.join(' ');
70
- }
71
- };
31
+ result.label = buildLabel(baseConfig.label, vseed.measures, vseed.dimensions, advancedVSeed.measures, encoding, [
32
+ foldInfoList[1]
33
+ ]);
34
+ result.label.zIndex = DUAL_AXIS_LABEL_Z_INDEX;
72
35
  return result;
73
36
  };
74
37
  export { labelPrimary, labelSecondary };
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/chart/pipes/label/labelDualAxis.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/label/labelDualAxis.ts"],"sourcesContent":["import type { ILineChartSpec } from '@visactor/vchart'\nimport type { ILineLikeLabelSpec } from '@visactor/vchart/esm/series/mixin/interface'\nimport { autoFormatter, createFormatter, findMeasureById } from '../../../../utils'\nimport type { Datum, FoldInfo, Label, SpecPipe } from 'src/types'\nimport { isEmpty, isNullish } from 'remeda'\n\nexport const labelPrimary: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed } = context\n const { measures, datasetReshapeInfo, locale } = advancedVSeed\n const { chartType } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { label: Label }\n\n if (!baseConfig || !baseConfig.label) {\n return result\n }\n\n const foldInfoList = datasetReshapeInfo[0].foldInfoList as FoldInfo[]\n const { measureId, measureValue } = foldInfoList[0]\n const { label } = baseConfig\n const { enable } = label\n\n result.label = {\n visible: enable,\n formatMethod: (value: string, datum: Datum) => {\n const result = []\n\n const formatValue = (value: number) => {\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return value\n }\n\n const { format = {}, autoFormat = true } = measure\n\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n if (autoFormat) {\n return autoFormatter(value, locale)\n }\n return String(value)\n }\n\n result.push(formatValue(datum[measureValue] as number))\n\n return result.join(' ')\n },\n } as ILineLikeLabelSpec\n return result\n}\n\nexport const labelSecondary: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed } = context\n const { measures, datasetReshapeInfo, locale } = advancedVSeed\n const { chartType } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { label: Label }\n\n if (!baseConfig || !baseConfig.label) {\n return result\n }\n if (isNullish(datasetReshapeInfo[0].foldInfoList?.[1])) {\n return result\n }\n const foldInfoList = datasetReshapeInfo[0].foldInfoList as FoldInfo[]\n\n const { measureId, measureValue } = foldInfoList[1]\n const { label } = baseConfig\n const { enable } = label\n\n result.label = {\n visible: enable,\n formatMethod: (value: string, datum: Datum) => {\n const result = []\n\n const formatValue = (value: number) => {\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return value\n }\n\n const { format = {}, autoFormat = true } = measure\n\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n if (autoFormat) {\n return autoFormatter(value, locale)\n }\n return String(value)\n }\n\n result.push(formatValue(datum[measureValue] as number))\n\n return result.join(' ')\n },\n } as ILineLikeLabelSpec\n return result\n}\n"],"names":["labelPrimary","spec","context","result","advancedVSeed","measures","datasetReshapeInfo","locale","chartType","baseConfig","foldInfoList","measureId","measureValue","label","enable","value","datum","formatValue","id","measure","findMeasureById","format","autoFormat","isEmpty","formatter","createFormatter","autoFormatter","String","labelSecondary","isNullish"],"mappings":";;AAMO,MAAMA,eAAyB,CAACC,MAAMC;IAC3C,MAAMC,SAAS;QAAE,GAAGF,IAAI;IAAC;IACzB,MAAM,EAAEG,aAAa,EAAE,GAAGF;IAC1B,MAAM,EAAEG,QAAQ,EAAEC,kBAAkB,EAAEC,MAAM,EAAE,GAAGH;IACjD,MAAM,EAAEI,SAAS,EAAE,GAAGJ;IACtB,MAAMK,aAAaL,cAAc,MAAM,CAACI,UAAU;IAElD,IAAI,CAACC,cAAc,CAACA,WAAW,KAAK,EAClC,OAAON;IAGT,MAAMO,eAAeJ,kBAAkB,CAAC,EAAE,CAAC,YAAY;IACvD,MAAM,EAAEK,SAAS,EAAEC,YAAY,EAAE,GAAGF,YAAY,CAAC,EAAE;IACnD,MAAM,EAAEG,KAAK,EAAE,GAAGJ;IAClB,MAAM,EAAEK,MAAM,EAAE,GAAGD;IAEnBV,OAAO,KAAK,GAAG;QACb,SAASW;QACT,cAAc,CAACC,OAAeC;YAC5B,MAAMb,SAAS,EAAE;YAEjB,MAAMc,cAAc,CAACF;gBACnB,MAAMG,KAAKF,KAAK,CAACL,UAAU;gBAC3B,MAAMQ,UAAUC,gBAAgBf,UAAUa;gBAC1C,IAAI,CAACC,SACH,OAAOJ;gBAGT,MAAM,EAAEM,SAAS,CAAC,CAAC,EAAEC,aAAa,IAAI,EAAE,GAAGH;gBAE3C,IAAI,CAACI,QAAQF,SAAS;oBACpB,MAAMG,YAAYC,gBAAgBJ;oBAClC,OAAOG,UAAUT;gBACnB;gBACA,IAAIO,YACF,OAAOI,cAAcX,OAAOR;gBAE9B,OAAOoB,OAAOZ;YAChB;YAEAZ,OAAO,IAAI,CAACc,YAAYD,KAAK,CAACJ,aAAa;YAE3C,OAAOT,OAAO,IAAI,CAAC;QACrB;IACF;IACA,OAAOA;AACT;AAEO,MAAMyB,iBAA2B,CAAC3B,MAAMC;IAC7C,MAAMC,SAAS;QAAE,GAAGF,IAAI;IAAC;IACzB,MAAM,EAAEG,aAAa,EAAE,GAAGF;IAC1B,MAAM,EAAEG,QAAQ,EAAEC,kBAAkB,EAAEC,MAAM,EAAE,GAAGH;IACjD,MAAM,EAAEI,SAAS,EAAE,GAAGJ;IACtB,MAAMK,aAAaL,cAAc,MAAM,CAACI,UAAU;IAElD,IAAI,CAACC,cAAc,CAACA,WAAW,KAAK,EAClC,OAAON;IAET,IAAI0B,UAAUvB,kBAAkB,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE,GACnD,OAAOH;IAET,MAAMO,eAAeJ,kBAAkB,CAAC,EAAE,CAAC,YAAY;IAEvD,MAAM,EAAEK,SAAS,EAAEC,YAAY,EAAE,GAAGF,YAAY,CAAC,EAAE;IACnD,MAAM,EAAEG,KAAK,EAAE,GAAGJ;IAClB,MAAM,EAAEK,MAAM,EAAE,GAAGD;IAEnBV,OAAO,KAAK,GAAG;QACb,SAASW;QACT,cAAc,CAACC,OAAeC;YAC5B,MAAMb,SAAS,EAAE;YAEjB,MAAMc,cAAc,CAACF;gBACnB,MAAMG,KAAKF,KAAK,CAACL,UAAU;gBAC3B,MAAMQ,UAAUC,gBAAgBf,UAAUa;gBAC1C,IAAI,CAACC,SACH,OAAOJ;gBAGT,MAAM,EAAEM,SAAS,CAAC,CAAC,EAAEC,aAAa,IAAI,EAAE,GAAGH;gBAE3C,IAAI,CAACI,QAAQF,SAAS;oBACpB,MAAMG,YAAYC,gBAAgBJ;oBAClC,OAAOG,UAAUT;gBACnB;gBACA,IAAIO,YACF,OAAOI,cAAcX,OAAOR;gBAE9B,OAAOoB,OAAOZ;YAChB;YAEAZ,OAAO,IAAI,CAACc,YAAYD,KAAK,CAACJ,aAAa;YAE3C,OAAOT,OAAO,IAAI,CAAC;QACrB;IACF;IACA,OAAOA;AACT"}
1
+ {"version":3,"file":"pipeline/spec/chart/pipes/label/labelDualAxis.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/label/labelDualAxis.ts"],"sourcesContent":["import type { ILineChartSpec } from '@visactor/vchart'\nimport type { Encoding, FoldInfo, Label, SpecPipe } from 'src/types'\nimport { isNullish } from 'remeda'\nimport { buildLabel } from './label'\nimport { DUAL_AXIS_LABEL_Z_INDEX } from 'src/pipeline/utils/constant'\n\nexport const labelPrimary: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo, encoding } = advancedVSeed\n const { chartType } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { label: Label }\n\n if (!baseConfig || !baseConfig.label) {\n return result\n }\n\n const foldInfoList = datasetReshapeInfo[0].foldInfoList as FoldInfo[]\n result.label = buildLabel(\n baseConfig.label,\n vseed.measures,\n vseed.dimensions,\n advancedVSeed.measures,\n encoding as Encoding,\n [foldInfoList[0]],\n )\n result.label.zIndex = DUAL_AXIS_LABEL_Z_INDEX\n return result\n}\n\nexport const labelSecondary: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo, encoding } = advancedVSeed\n const { chartType } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { label: Label }\n\n if (!baseConfig || !baseConfig.label) {\n return result\n }\n if (isNullish(datasetReshapeInfo[0].foldInfoList?.[1])) {\n return result\n }\n const foldInfoList = datasetReshapeInfo[0].foldInfoList as FoldInfo[]\n\n result.label = buildLabel(\n baseConfig.label,\n vseed.measures,\n vseed.dimensions,\n advancedVSeed.measures,\n encoding as Encoding,\n [foldInfoList[1]],\n )\n result.label.zIndex = DUAL_AXIS_LABEL_Z_INDEX\n return result\n}\n"],"names":["labelPrimary","spec","context","result","advancedVSeed","vseed","datasetReshapeInfo","encoding","chartType","baseConfig","foldInfoList","buildLabel","DUAL_AXIS_LABEL_Z_INDEX","labelSecondary","isNullish"],"mappings":";;;AAMO,MAAMA,eAAyB,CAACC,MAAMC;IAC3C,MAAMC,SAAS;QAAE,GAAGF,IAAI;IAAC;IACzB,MAAM,EAAEG,aAAa,EAAEC,KAAK,EAAE,GAAGH;IACjC,MAAM,EAAEI,kBAAkB,EAAEC,QAAQ,EAAE,GAAGH;IACzC,MAAM,EAAEI,SAAS,EAAE,GAAGJ;IACtB,MAAMK,aAAaL,cAAc,MAAM,CAACI,UAAU;IAElD,IAAI,CAACC,cAAc,CAACA,WAAW,KAAK,EAClC,OAAON;IAGT,MAAMO,eAAeJ,kBAAkB,CAAC,EAAE,CAAC,YAAY;IACvDH,OAAO,KAAK,GAAGQ,WACbF,WAAW,KAAK,EAChBJ,MAAM,QAAQ,EACdA,MAAM,UAAU,EAChBD,cAAc,QAAQ,EACtBG,UACA;QAACG,YAAY,CAAC,EAAE;KAAC;IAEnBP,OAAO,KAAK,CAAC,MAAM,GAAGS;IACtB,OAAOT;AACT;AAEO,MAAMU,iBAA2B,CAACZ,MAAMC;IAC7C,MAAMC,SAAS;QAAE,GAAGF,IAAI;IAAC;IACzB,MAAM,EAAEG,aAAa,EAAEC,KAAK,EAAE,GAAGH;IACjC,MAAM,EAAEI,kBAAkB,EAAEC,QAAQ,EAAE,GAAGH;IACzC,MAAM,EAAEI,SAAS,EAAE,GAAGJ;IACtB,MAAMK,aAAaL,cAAc,MAAM,CAACI,UAAU;IAElD,IAAI,CAACC,cAAc,CAACA,WAAW,KAAK,EAClC,OAAON;IAET,IAAIW,UAAUR,kBAAkB,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE,GACnD,OAAOH;IAET,MAAMO,eAAeJ,kBAAkB,CAAC,EAAE,CAAC,YAAY;IAEvDH,OAAO,KAAK,GAAGQ,WACbF,WAAW,KAAK,EAChBJ,MAAM,QAAQ,EACdA,MAAM,UAAU,EAChBD,cAAc,QAAQ,EACtBG,UACA;QAACG,YAAY,CAAC,EAAE;KAAC;IAEnBP,OAAO,KAAK,CAAC,MAAM,GAAGS;IACtB,OAAOT;AACT"}
@@ -1,2 +1,2 @@
1
1
  import type { SpecPipe } from '../../../../../types';
2
- export declare const labelColorInversion: SpecPipe;
2
+ export declare const labelScatter: SpecPipe;
@@ -0,0 +1,19 @@
1
+ import { isEmpty } from "remeda";
2
+ import { buildLabel } from "./label.js";
3
+ const labelScatter = (spec, context)=>{
4
+ const result = {
5
+ ...spec
6
+ };
7
+ const { advancedVSeed, vseed } = context;
8
+ const { datasetReshapeInfo } = advancedVSeed;
9
+ const { chartType, encoding } = advancedVSeed;
10
+ const baseConfig = advancedVSeed.config[chartType];
11
+ if (!baseConfig || isEmpty(baseConfig.label)) return result;
12
+ const foldInfoList = datasetReshapeInfo[0].foldInfoList;
13
+ const { label } = baseConfig;
14
+ result.label = buildLabel(label, vseed.measures, vseed.dimensions, advancedVSeed.measures, encoding, foldInfoList);
15
+ return result;
16
+ };
17
+ export { labelScatter };
18
+
19
+ //# sourceMappingURL=labelScatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline/spec/chart/pipes/label/labelScatter.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/label/labelScatter.ts"],"sourcesContent":["import type { IScatterChartSpec } from '@visactor/vchart'\nimport type { Encoding, FoldInfo, Label, SpecPipe } from 'src/types'\nimport { isEmpty } from 'remeda'\nimport { buildLabel } from './label'\n\nexport const labelScatter: SpecPipe = (spec, context) => {\n const result = { ...spec } as IScatterChartSpec\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { chartType, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { label: Label }\n\n if (!baseConfig || isEmpty(baseConfig.label)) {\n return result\n }\n\n const foldInfoList = datasetReshapeInfo[0].foldInfoList as FoldInfo[]\n\n const { label } = baseConfig\n\n result.label = buildLabel(\n label,\n vseed.measures,\n vseed.dimensions,\n advancedVSeed.measures,\n encoding as Encoding,\n foldInfoList,\n )\n\n return result\n}\n"],"names":["labelScatter","spec","context","result","advancedVSeed","vseed","datasetReshapeInfo","chartType","encoding","baseConfig","isEmpty","foldInfoList","label","buildLabel"],"mappings":";;AAKO,MAAMA,eAAyB,CAACC,MAAMC;IAC3C,MAAMC,SAAS;QAAE,GAAGF,IAAI;IAAC;IACzB,MAAM,EAAEG,aAAa,EAAEC,KAAK,EAAE,GAAGH;IACjC,MAAM,EAAEI,kBAAkB,EAAE,GAAGF;IAC/B,MAAM,EAAEG,SAAS,EAAEC,QAAQ,EAAE,GAAGJ;IAChC,MAAMK,aAAaL,cAAc,MAAM,CAACG,UAAU;IAElD,IAAI,CAACE,cAAcC,QAAQD,WAAW,KAAK,GACzC,OAAON;IAGT,MAAMQ,eAAeL,kBAAkB,CAAC,EAAE,CAAC,YAAY;IAEvD,MAAM,EAAEM,KAAK,EAAE,GAAGH;IAElBN,OAAO,KAAK,GAAGU,WACbD,OACAP,MAAM,QAAQ,EACdA,MAAM,UAAU,EAChBD,cAAc,QAAQ,EACtBI,UACAG;IAGF,OAAOR;AACT"}
@@ -18,6 +18,7 @@ const seriesDualAxis = (...args)=>{
18
18
  const result = {
19
19
  type: 'common',
20
20
  padding: 0,
21
+ labelLayout: 'region',
21
22
  region: [
22
23
  {
23
24
  clip: true
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/chart/pipes/series/series.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/series/series.ts"],"sourcesContent":["import type { Spec, SpecPipe, SpecPipeline, SpecPipelineContext } from 'src/types'\nimport { execPipeline } from '../../../../utils'\nimport type { ICommonChartSpec, ILineSeriesSpec } from '@visactor/vchart'\n\nexport const series = (...args: SpecPipeline[]): SpecPipe => {\n const result = {\n type: 'common',\n padding: 0,\n region: [\n {\n clip: true,\n },\n ],\n } as ICommonChartSpec\n\n return (_, context) => {\n result.series = args.map((pipeline) => {\n return execPipeline<Spec, SpecPipelineContext>(pipeline, context, {})\n }) as ILineSeriesSpec[]\n\n return result\n }\n}\n\n/**\n * @description 双轴图的透视场景, 不能使用此pipe, 请使用series\n * 因为VTable.PivotVChart会自行解析数据, 而非VChart解析.\n */\nexport const seriesDualAxis = (...args: SpecPipeline[]): SpecPipe => {\n const result = {\n type: 'common',\n padding: 0,\n region: [\n {\n clip: true,\n },\n ],\n } as ICommonChartSpec\n\n const createDualContext = <T extends SpecPipelineContext>(context: T, index: number): T => {\n const { advancedVSeed } = context\n const dataset = advancedVSeed.dataset[index]\n return {\n ...context,\n advancedVSeed: {\n ...advancedVSeed,\n dataset: dataset,\n },\n }\n }\n\n return (_, context) => {\n result.series = args.map((pipeline, index) => {\n const seriesContext = createDualContext(context, index)\n return execPipeline<Spec, SpecPipelineContext>(pipeline, seriesContext, {})\n }) as ILineSeriesSpec[]\n\n return result\n }\n}\n"],"names":["series","args","result","_","context","pipeline","execPipeline","seriesDualAxis","createDualContext","index","advancedVSeed","dataset","seriesContext"],"mappings":";AAIO,MAAMA,SAAS,CAAC,GAAGC;IACxB,MAAMC,SAAS;QACb,MAAM;QACN,SAAS;QACT,QAAQ;YACN;gBACE,MAAM;YACR;SACD;IACH;IAEA,OAAO,CAACC,GAAGC;QACTF,OAAO,MAAM,GAAGD,KAAK,GAAG,CAAC,CAACI,WACjBC,aAAwCD,UAAUD,SAAS,CAAC;QAGrE,OAAOF;IACT;AACF;AAMO,MAAMK,iBAAiB,CAAC,GAAGN;IAChC,MAAMC,SAAS;QACb,MAAM;QACN,SAAS;QACT,QAAQ;YACN;gBACE,MAAM;YACR;SACD;IACH;IAEA,MAAMM,oBAAoB,CAAgCJ,SAAYK;QACpE,MAAM,EAAEC,aAAa,EAAE,GAAGN;QAC1B,MAAMO,UAAUD,cAAc,OAAO,CAACD,MAAM;QAC5C,OAAO;YACL,GAAGL,OAAO;YACV,eAAe;gBACb,GAAGM,aAAa;gBAChB,SAASC;YACX;QACF;IACF;IAEA,OAAO,CAACR,GAAGC;QACTF,OAAO,MAAM,GAAGD,KAAK,GAAG,CAAC,CAACI,UAAUI;YAClC,MAAMG,gBAAgBJ,kBAAkBJ,SAASK;YACjD,OAAOH,aAAwCD,UAAUO,eAAe,CAAC;QAC3E;QAEA,OAAOV;IACT;AACF"}
1
+ {"version":3,"file":"pipeline/spec/chart/pipes/series/series.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/series/series.ts"],"sourcesContent":["import type { Spec, SpecPipe, SpecPipeline, SpecPipelineContext } from 'src/types'\nimport { execPipeline } from '../../../../utils'\nimport type { ICommonChartSpec, ILineSeriesSpec } from '@visactor/vchart'\n\nexport const series = (...args: SpecPipeline[]): SpecPipe => {\n const result = {\n type: 'common',\n padding: 0,\n region: [\n {\n clip: true,\n },\n ],\n } as ICommonChartSpec\n\n return (_, context) => {\n result.series = args.map((pipeline) => {\n return execPipeline<Spec, SpecPipelineContext>(pipeline, context, {})\n }) as ILineSeriesSpec[]\n\n return result\n }\n}\n\n/**\n * @description 双轴图的透视场景, 不能使用此pipe, 请使用series\n * 因为VTable.PivotVChart会自行解析数据, 而非VChart解析.\n */\nexport const seriesDualAxis = (...args: SpecPipeline[]): SpecPipe => {\n const result = {\n type: 'common',\n padding: 0,\n labelLayout: 'region',\n region: [\n {\n clip: true,\n },\n ],\n } as ICommonChartSpec\n\n const createDualContext = <T extends SpecPipelineContext>(context: T, index: number): T => {\n const { advancedVSeed } = context\n const dataset = advancedVSeed.dataset[index]\n return {\n ...context,\n advancedVSeed: {\n ...advancedVSeed,\n dataset: dataset,\n },\n }\n }\n\n return (_, context) => {\n result.series = args.map((pipeline, index) => {\n const seriesContext = createDualContext(context, index)\n return execPipeline<Spec, SpecPipelineContext>(pipeline, seriesContext, {})\n }) as ILineSeriesSpec[]\n\n return result\n }\n}\n"],"names":["series","args","result","_","context","pipeline","execPipeline","seriesDualAxis","createDualContext","index","advancedVSeed","dataset","seriesContext"],"mappings":";AAIO,MAAMA,SAAS,CAAC,GAAGC;IACxB,MAAMC,SAAS;QACb,MAAM;QACN,SAAS;QACT,QAAQ;YACN;gBACE,MAAM;YACR;SACD;IACH;IAEA,OAAO,CAACC,GAAGC;QACTF,OAAO,MAAM,GAAGD,KAAK,GAAG,CAAC,CAACI,WACjBC,aAAwCD,UAAUD,SAAS,CAAC;QAGrE,OAAOF;IACT;AACF;AAMO,MAAMK,iBAAiB,CAAC,GAAGN;IAChC,MAAMC,SAAS;QACb,MAAM;QACN,SAAS;QACT,aAAa;QACb,QAAQ;YACN;gBACE,MAAM;YACR;SACD;IACH;IAEA,MAAMM,oBAAoB,CAAgCJ,SAAYK;QACpE,MAAM,EAAEC,aAAa,EAAE,GAAGN;QAC1B,MAAMO,UAAUD,cAAc,OAAO,CAACD,MAAM;QAC5C,OAAO;YACL,GAAGL,OAAO;YACV,eAAe;gBACb,GAAGM,aAAa;gBAChB,SAASC;YACX;QACF;IACF;IAEA,OAAO,CAACR,GAAGC;QACTF,OAAO,MAAM,GAAGD,KAAK,GAAG,CAAC,CAACI,UAAUI;YAClC,MAAMG,gBAAgBJ,kBAAkBJ,SAASK;YACjD,OAAOH,aAAwCD,UAAUO,eAAe,CAAC;QAC3E;QAEA,OAAOV;IACT;AACF"}
@@ -1,13 +1,13 @@
1
- import type { Dimensions, FoldInfo, Locale, Measures, SpecPipe, UnfoldInfo } from '../../../../../types';
1
+ import type { Dimensions, FoldInfo, Measures, SpecPipe, UnfoldInfo } from '../../../../../types';
2
2
  export declare const tooltip: SpecPipe;
3
- export declare const createDimensionContent: (measures: Measures, foldInfo: FoldInfo, unfoldInfo: UnfoldInfo, locale: Locale) => {
3
+ export declare const createDimensionContent: (measures: Measures, foldInfo: FoldInfo, unfoldInfo: UnfoldInfo) => {
4
4
  visible: boolean;
5
5
  shapeType: string;
6
6
  hasShape: boolean;
7
7
  key: (v: unknown) => string;
8
8
  value: (v: unknown) => string;
9
9
  }[];
10
- export declare const createMarkContent: (tooltip: string[], dimensions: Dimensions, measures: Measures, locale: Locale, foldInfo: FoldInfo, unfoldInfo: UnfoldInfo) => ({
10
+ export declare const createMarkContent: (tooltip: string[], dimensions: Dimensions, measures: Measures, foldInfo: FoldInfo, unfoldInfo: UnfoldInfo) => ({
11
11
  visible: boolean;
12
12
  hasShape: boolean;
13
13
  shapeType: string;
@@ -1,12 +1,12 @@
1
- import { isEmpty, pipe, uniqueBy } from "remeda";
2
- import { autoFormatter, createFormatter, findAllMeasures, findMeasureById } from "../../../../utils/index.js";
1
+ import { pipe, uniqueBy } from "remeda";
2
+ import { createFormatterByMeasure, findAllMeasures, findMeasureById } from "../../../../utils/index.js";
3
3
  import { ORIGINAL_DATA } from "../../../../../dataReshape/index.js";
4
4
  const tooltip_tooltip = (spec, context)=>{
5
5
  const result = {
6
6
  ...spec
7
7
  };
8
8
  const { advancedVSeed, vseed } = context;
9
- const { measures, datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed;
9
+ const { measures, datasetReshapeInfo, chartType, dimensions, encoding } = advancedVSeed;
10
10
  const baseConfig = advancedVSeed.config[chartType];
11
11
  const { tooltip = {
12
12
  enable: true
@@ -19,18 +19,18 @@ const tooltip_tooltip = (spec, context)=>{
19
19
  title: {
20
20
  visible: false
21
21
  },
22
- content: createMarkContent(encoding.tooltip || [], dimensions, findAllMeasures(vseed.measures), locale, foldInfo, unfoldInfo)
22
+ content: createMarkContent(encoding.tooltip || [], dimensions, findAllMeasures(vseed.measures), foldInfo, unfoldInfo)
23
23
  },
24
24
  dimension: {
25
25
  title: {
26
26
  visible: true
27
27
  },
28
- content: createDimensionContent(measures, foldInfo, unfoldInfo, locale)
28
+ content: createDimensionContent(measures, foldInfo, unfoldInfo)
29
29
  }
30
30
  };
31
31
  return result;
32
32
  };
33
- const createDimensionContent = (measures, foldInfo, unfoldInfo, locale)=>{
33
+ const createDimensionContent = (measures, foldInfo, unfoldInfo)=>{
34
34
  const { measureId, measureValue } = foldInfo;
35
35
  const { encodingColor } = unfoldInfo;
36
36
  return [
@@ -48,19 +48,13 @@ const createDimensionContent = (measures, foldInfo, unfoldInfo, locale)=>{
48
48
  const value = datum[measureValue];
49
49
  const id = datum[measureId];
50
50
  const measure = findMeasureById(measures, id);
51
- if (!measure) return String(value);
52
- const { format = {}, autoFormat = true } = measure;
53
- if (!isEmpty(format)) {
54
- const formatter = createFormatter(format);
55
- return formatter(value);
56
- }
57
- if (autoFormat) return autoFormatter(value, locale);
58
- return String(value);
51
+ const formatter = createFormatterByMeasure(measure);
52
+ return formatter(value);
59
53
  }
60
54
  }
61
55
  ];
62
56
  };
63
- const createMarkContent = (tooltip, dimensions, measures, locale, foldInfo, unfoldInfo)=>{
57
+ const createMarkContent = (tooltip, dimensions, measures, foldInfo, unfoldInfo)=>{
64
58
  const dims = pipe(dimensions.filter((item)=>tooltip.includes(item.id)), uniqueBy((item)=>item.id), uniqueBy((item)=>item.alias));
65
59
  const meas = pipe(measures.filter((item)=>tooltip.includes(item.id)), uniqueBy((item)=>item.id), uniqueBy((item)=>item.alias));
66
60
  const dimContent = dims.map((item)=>({
@@ -90,14 +84,8 @@ const createMarkContent = (tooltip, dimensions, measures, locale, foldInfo, unfo
90
84
  const originalData = datum[ORIGINAL_DATA];
91
85
  const value = originalData[id];
92
86
  const measure = findMeasureById(measures, id);
93
- if (!measure) return String(value);
94
- const { format = {}, autoFormat = true } = measure;
95
- if (!isEmpty(format)) {
96
- const formatter = createFormatter(format);
97
- return formatter(value);
98
- }
99
- if (autoFormat) return autoFormatter(value, locale);
100
- return String(value);
87
+ const formatter = createFormatterByMeasure(measure);
88
+ return formatter(value);
101
89
  }
102
90
  }));
103
91
  const defaultContent = {
@@ -118,13 +106,8 @@ const createMarkContent = (tooltip, dimensions, measures, locale, foldInfo, unfo
118
106
  const id = datum[measureId];
119
107
  const measure = findMeasureById(measures, id);
120
108
  if (!measure) return String(value);
121
- const { format = {}, autoFormat = true } = measure;
122
- if (!isEmpty(format)) {
123
- const formatter = createFormatter(format);
124
- return formatter(value);
125
- }
126
- if (autoFormat) return autoFormatter(value, locale);
127
- return String(value);
109
+ const formatter = createFormatterByMeasure(measure);
110
+ return formatter(value);
128
111
  }
129
112
  };
130
113
  return [
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/chart/pipes/tooltip/tooltip.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltip.ts"],"sourcesContent":["import { isEmpty, pipe, uniqueBy } from 'remeda'\nimport { autoFormatter, createFormatter, findAllMeasures, findMeasureById } from '../../../../utils'\nimport type { Datum, Dimensions, FoldInfo, Locale, Measures, SpecPipe, Tooltip, UnfoldInfo } from 'src/types'\nimport { ORIGINAL_DATA } from 'src/dataReshape'\n\nexport const tooltip: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed, vseed } = context\n const { measures, datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n const { foldInfo, unfoldInfo } = datasetReshapeInfo[0] as unknown as {\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n }\n\n result.tooltip = {\n visible: enable,\n mark: {\n title: {\n visible: false,\n },\n content: createMarkContent(\n encoding.tooltip || [],\n dimensions,\n findAllMeasures(vseed.measures),\n locale,\n foldInfo,\n unfoldInfo,\n ),\n },\n dimension: {\n title: {\n visible: true,\n },\n content: createDimensionContent(measures, foldInfo, unfoldInfo, locale),\n },\n }\n return result\n}\n\nexport const createDimensionContent = (\n measures: Measures,\n foldInfo: FoldInfo,\n unfoldInfo: UnfoldInfo,\n locale: Locale,\n) => {\n const { measureId, measureValue } = foldInfo\n const { encodingColor } = unfoldInfo\n\n return [\n {\n visible: true,\n shapeType: 'rectRound',\n hasShape: true,\n key: (v: unknown) => {\n const datum = v as Datum\n return (datum && (datum[encodingColor] as string)) || ''\n },\n value: (v: unknown) => {\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const value = datum[measureValue] as string | number\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n const { format = {}, autoFormat = true } = measure\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n if (autoFormat) {\n return autoFormatter(value, locale)\n }\n return String(value)\n },\n },\n ]\n}\n\nexport const createMarkContent = (\n tooltip: string[],\n dimensions: Dimensions,\n measures: Measures,\n locale: Locale,\n foldInfo: FoldInfo,\n unfoldInfo: UnfoldInfo,\n) => {\n const dims = pipe(\n dimensions.filter((item) => tooltip.includes(item.id)),\n uniqueBy((item) => item.id),\n uniqueBy((item) => item.alias),\n )\n const meas = pipe(\n measures.filter((item) => tooltip.includes(item.id)),\n uniqueBy((item) => item.id),\n uniqueBy((item) => item.alias),\n )\n\n const dimContent = dims.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const datum = v as Datum\n if (item.alias || item.id) {\n return item.alias || item.id\n }\n return datum && (datum[item.id] as string)\n },\n value: (v: unknown) => {\n const datum = v as Datum\n return datum && (datum[item.id] as string)\n },\n }))\n\n const meaContent = meas.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: item.alias || item.id,\n value: (v: unknown) => {\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const id = item.id\n if (!datum || !datum[ORIGINAL_DATA] || !datum[ORIGINAL_DATA]) {\n return ''\n }\n const originalData = datum[ORIGINAL_DATA] as Datum\n const value = originalData[id] as string | number\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n const { format = {}, autoFormat = true } = measure\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n if (autoFormat) {\n return autoFormatter(value, locale)\n }\n return String(value)\n },\n }))\n\n const defaultContent = {\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const { measureName } = foldInfo\n const { encodingColor: colorName } = unfoldInfo\n\n const datum = v as Datum\n return (datum && (datum[measureName || colorName] as string)) || ''\n },\n value: (v: unknown) => {\n const { measureId, measureValue } = foldInfo\n\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const value = datum[measureValue] as string | number\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n\n const { format = {}, autoFormat = true } = measure\n\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n if (autoFormat) {\n return autoFormatter(value, locale)\n }\n return String(value)\n },\n }\n\n return [...dimContent, defaultContent, ...meaContent]\n}\n"],"names":["tooltip","spec","context","result","advancedVSeed","vseed","measures","datasetReshapeInfo","chartType","locale","dimensions","encoding","baseConfig","enable","foldInfo","unfoldInfo","createMarkContent","findAllMeasures","createDimensionContent","measureId","measureValue","encodingColor","v","datum","value","id","measure","findMeasureById","String","format","autoFormat","isEmpty","formatter","createFormatter","autoFormatter","dims","pipe","item","uniqueBy","meas","dimContent","meaContent","ORIGINAL_DATA","originalData","defaultContent","measureName","colorName"],"mappings":"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"}
1
+ {"version":3,"file":"pipeline/spec/chart/pipes/tooltip/tooltip.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltip.ts"],"sourcesContent":["import { pipe, uniqueBy } from 'remeda'\nimport { createFormatterByMeasure, findAllMeasures, findMeasureById } from '../../../../utils'\nimport type { Datum, Dimensions, FoldInfo, Measures, SpecPipe, Tooltip, UnfoldInfo } from 'src/types'\nimport { ORIGINAL_DATA } from 'src/dataReshape'\n\nexport const tooltip: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed, vseed } = context\n const { measures, datasetReshapeInfo, chartType, dimensions, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n const { foldInfo, unfoldInfo } = datasetReshapeInfo[0] as unknown as {\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n }\n\n result.tooltip = {\n visible: enable,\n mark: {\n title: {\n visible: false,\n },\n content: createMarkContent(\n encoding.tooltip || [],\n dimensions,\n findAllMeasures(vseed.measures),\n foldInfo,\n unfoldInfo,\n ),\n },\n dimension: {\n title: {\n visible: true,\n },\n content: createDimensionContent(measures, foldInfo, unfoldInfo),\n },\n }\n return result\n}\n\nexport const createDimensionContent = (measures: Measures, foldInfo: FoldInfo, unfoldInfo: UnfoldInfo) => {\n const { measureId, measureValue } = foldInfo\n const { encodingColor } = unfoldInfo\n\n return [\n {\n visible: true,\n shapeType: 'rectRound',\n hasShape: true,\n key: (v: unknown) => {\n const datum = v as Datum\n return (datum && (datum[encodingColor] as string)) || ''\n },\n value: (v: unknown) => {\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const value = datum[measureValue] as string | number\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n const formatter = createFormatterByMeasure(measure)\n return formatter(value)\n },\n },\n ]\n}\n\nexport const createMarkContent = (\n tooltip: string[],\n dimensions: Dimensions,\n measures: Measures,\n foldInfo: FoldInfo,\n unfoldInfo: UnfoldInfo,\n) => {\n const dims = pipe(\n dimensions.filter((item) => tooltip.includes(item.id)),\n uniqueBy((item) => item.id),\n uniqueBy((item) => item.alias),\n )\n const meas = pipe(\n measures.filter((item) => tooltip.includes(item.id)),\n uniqueBy((item) => item.id),\n uniqueBy((item) => item.alias),\n )\n\n const dimContent = dims.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const datum = v as Datum\n if (item.alias || item.id) {\n return item.alias || item.id\n }\n return datum && (datum[item.id] as string)\n },\n value: (v: unknown) => {\n const datum = v as Datum\n return datum && (datum[item.id] as string)\n },\n }))\n\n const meaContent = meas.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: item.alias || item.id,\n value: (v: unknown) => {\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const id = item.id\n if (!datum || !datum[ORIGINAL_DATA] || !datum[ORIGINAL_DATA]) {\n return ''\n }\n const originalData = datum[ORIGINAL_DATA] as Datum\n const value = originalData[id] as string | number\n const measure = findMeasureById(measures, id)\n const formatter = createFormatterByMeasure(measure)\n return formatter(value)\n },\n }))\n\n const defaultContent = {\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const { measureName } = foldInfo\n const { encodingColor: colorName } = unfoldInfo\n\n const datum = v as Datum\n return (datum && (datum[measureName || colorName] as string)) || ''\n },\n value: (v: unknown) => {\n const { measureId, measureValue } = foldInfo\n\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const value = datum[measureValue] as string | number\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n\n const formatter = createFormatterByMeasure(measure)\n return formatter(value)\n },\n }\n\n return [...dimContent, defaultContent, ...meaContent]\n}\n"],"names":["tooltip","spec","context","result","advancedVSeed","vseed","measures","datasetReshapeInfo","chartType","dimensions","encoding","baseConfig","enable","foldInfo","unfoldInfo","createMarkContent","findAllMeasures","createDimensionContent","measureId","measureValue","encodingColor","v","datum","value","id","measure","findMeasureById","formatter","createFormatterByMeasure","dims","pipe","item","uniqueBy","meas","dimContent","meaContent","ORIGINAL_DATA","originalData","defaultContent","measureName","colorName","String"],"mappings":"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"}
@@ -6,7 +6,7 @@ const tooltipPrimary = (spec, context)=>{
6
6
  ...spec
7
7
  };
8
8
  const { advancedVSeed, vseed } = context;
9
- const { measures, datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed;
9
+ const { measures, datasetReshapeInfo, chartType, dimensions, encoding } = advancedVSeed;
10
10
  const baseConfig = advancedVSeed.config[chartType];
11
11
  const { tooltip = {
12
12
  enable: true
@@ -20,13 +20,13 @@ const tooltipPrimary = (spec, context)=>{
20
20
  title: {
21
21
  visible: false
22
22
  },
23
- content: createMarkContent(encoding.tooltip || [], dimensions, findAllMeasures(vseed.measures), locale, foldInfoList[0], unfoldInfo)
23
+ content: createMarkContent(encoding.tooltip || [], dimensions, findAllMeasures(vseed.measures), foldInfoList[0], unfoldInfo)
24
24
  },
25
25
  dimension: {
26
26
  title: {
27
27
  visible: true
28
28
  },
29
- content: createDimensionContent(measures, foldInfoList[0], unfoldInfo, locale)
29
+ content: createDimensionContent(measures, foldInfoList[0], unfoldInfo)
30
30
  }
31
31
  };
32
32
  return result;
@@ -36,7 +36,7 @@ const tooltipSecondary = (spec, context)=>{
36
36
  ...spec
37
37
  };
38
38
  const { advancedVSeed, vseed } = context;
39
- const { measures, datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed;
39
+ const { measures, datasetReshapeInfo, chartType, dimensions, encoding } = advancedVSeed;
40
40
  const baseConfig = advancedVSeed.config[chartType];
41
41
  const { tooltip = {
42
42
  enable: true
@@ -51,13 +51,13 @@ const tooltipSecondary = (spec, context)=>{
51
51
  title: {
52
52
  visible: false
53
53
  },
54
- content: createMarkContent(encoding.tooltip || [], dimensions, findAllMeasures(vseed.measures), locale, foldInfoList[1], unfoldInfo)
54
+ content: createMarkContent(encoding.tooltip || [], dimensions, findAllMeasures(vseed.measures), foldInfoList[1], unfoldInfo)
55
55
  },
56
56
  dimension: {
57
57
  title: {
58
58
  visible: true
59
59
  },
60
- content: createDimensionContent(measures, foldInfoList[1], unfoldInfo, locale)
60
+ content: createDimensionContent(measures, foldInfoList[1], unfoldInfo)
61
61
  }
62
62
  };
63
63
  return result;
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/chart/pipes/tooltip/tooltipDualAxis.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltipDualAxis.ts"],"sourcesContent":["import { isNullish } from 'remeda'\nimport { createDimensionContent, createMarkContent } from './tooltip'\nimport type { FoldInfo, SpecPipe, Tooltip, UnfoldInfo } from 'src/types'\nimport { findAllMeasures } from 'src/pipeline/utils'\n\nexport const tooltipPrimary: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed, vseed } = context\n const { measures, datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n\n const foldInfoList = datasetReshapeInfo[0].foldInfoList as FoldInfo[]\n const unfoldInfo = datasetReshapeInfo[0].unfoldInfo\n\n result.tooltip = {\n visible: enable,\n mark: {\n title: {\n visible: false,\n },\n content: createMarkContent(\n encoding.tooltip || [],\n dimensions,\n findAllMeasures(vseed.measures),\n locale,\n foldInfoList[0],\n unfoldInfo,\n ),\n },\n dimension: {\n title: {\n visible: true,\n },\n content: createDimensionContent(measures, foldInfoList[0], unfoldInfo, locale),\n },\n }\n return result\n}\n\nexport const tooltipSecondary: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed, vseed } = context\n const { measures, datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n\n if (isNullish(datasetReshapeInfo[0].foldInfoList?.[1])) {\n return result\n }\n\n const foldInfoList = datasetReshapeInfo[0].foldInfoList as FoldInfo[]\n const unfoldInfo = datasetReshapeInfo[0].unfoldInfo as UnfoldInfo\n result.tooltip = {\n visible: enable,\n mark: {\n title: {\n visible: false,\n },\n content: createMarkContent(\n encoding.tooltip || [],\n dimensions,\n findAllMeasures(vseed.measures),\n locale,\n foldInfoList[1],\n unfoldInfo,\n ),\n },\n dimension: {\n title: {\n visible: true,\n },\n content: createDimensionContent(measures, foldInfoList[1], unfoldInfo, locale),\n },\n }\n return result\n}\n"],"names":["tooltipPrimary","spec","context","result","advancedVSeed","vseed","measures","datasetReshapeInfo","chartType","locale","dimensions","encoding","baseConfig","tooltip","enable","foldInfoList","unfoldInfo","createMarkContent","findAllMeasures","createDimensionContent","tooltipSecondary","isNullish"],"mappings":";;;AAKO,MAAMA,iBAA2B,CAACC,MAAMC;IAC7C,MAAMC,SAAS;QAAE,GAAGF,IAAI;IAAC;IACzB,MAAM,EAAEG,aAAa,EAAEC,KAAK,EAAE,GAAGH;IACjC,MAAM,EAAEI,QAAQ,EAAEC,kBAAkB,EAAEC,SAAS,EAAEC,MAAM,EAAEC,UAAU,EAAEC,QAAQ,EAAE,GAAGP;IAClF,MAAMQ,aAAaR,cAAc,MAAM,CAACI,UAAU;IAClD,MAAM,EAAEK,UAAU;QAAE,QAAQ;IAAK,CAAC,EAAE,GAAGD;IACvC,MAAM,EAAEE,MAAM,EAAE,GAAGD;IAEnB,MAAME,eAAeR,kBAAkB,CAAC,EAAE,CAAC,YAAY;IACvD,MAAMS,aAAaT,kBAAkB,CAAC,EAAE,CAAC,UAAU;IAEnDJ,OAAO,OAAO,GAAG;QACf,SAASW;QACT,MAAM;YACJ,OAAO;gBACL,SAAS;YACX;YACA,SAASG,kBACPN,SAAS,OAAO,IAAI,EAAE,EACtBD,YACAQ,gBAAgBb,MAAM,QAAQ,GAC9BI,QACAM,YAAY,CAAC,EAAE,EACfC;QAEJ;QACA,WAAW;YACT,OAAO;gBACL,SAAS;YACX;YACA,SAASG,uBAAuBb,UAAUS,YAAY,CAAC,EAAE,EAAEC,YAAYP;QACzE;IACF;IACA,OAAON;AACT;AAEO,MAAMiB,mBAA6B,CAACnB,MAAMC;IAC/C,MAAMC,SAAS;QAAE,GAAGF,IAAI;IAAC;IACzB,MAAM,EAAEG,aAAa,EAAEC,KAAK,EAAE,GAAGH;IACjC,MAAM,EAAEI,QAAQ,EAAEC,kBAAkB,EAAEC,SAAS,EAAEC,MAAM,EAAEC,UAAU,EAAEC,QAAQ,EAAE,GAAGP;IAClF,MAAMQ,aAAaR,cAAc,MAAM,CAACI,UAAU;IAClD,MAAM,EAAEK,UAAU;QAAE,QAAQ;IAAK,CAAC,EAAE,GAAGD;IACvC,MAAM,EAAEE,MAAM,EAAE,GAAGD;IAEnB,IAAIQ,UAAUd,kBAAkB,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE,GACnD,OAAOJ;IAGT,MAAMY,eAAeR,kBAAkB,CAAC,EAAE,CAAC,YAAY;IACvD,MAAMS,aAAaT,kBAAkB,CAAC,EAAE,CAAC,UAAU;IACnDJ,OAAO,OAAO,GAAG;QACf,SAASW;QACT,MAAM;YACJ,OAAO;gBACL,SAAS;YACX;YACA,SAASG,kBACPN,SAAS,OAAO,IAAI,EAAE,EACtBD,YACAQ,gBAAgBb,MAAM,QAAQ,GAC9BI,QACAM,YAAY,CAAC,EAAE,EACfC;QAEJ;QACA,WAAW;YACT,OAAO;gBACL,SAAS;YACX;YACA,SAASG,uBAAuBb,UAAUS,YAAY,CAAC,EAAE,EAAEC,YAAYP;QACzE;IACF;IACA,OAAON;AACT"}
1
+ {"version":3,"file":"pipeline/spec/chart/pipes/tooltip/tooltipDualAxis.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltipDualAxis.ts"],"sourcesContent":["import { isNullish } from 'remeda'\nimport { createDimensionContent, createMarkContent } from './tooltip'\nimport type { FoldInfo, SpecPipe, Tooltip, UnfoldInfo } from 'src/types'\nimport { findAllMeasures } from 'src/pipeline/utils'\n\nexport const tooltipPrimary: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed, vseed } = context\n const { measures, datasetReshapeInfo, chartType, dimensions, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n\n const foldInfoList = datasetReshapeInfo[0].foldInfoList as FoldInfo[]\n const unfoldInfo = datasetReshapeInfo[0].unfoldInfo\n\n result.tooltip = {\n visible: enable,\n mark: {\n title: {\n visible: false,\n },\n content: createMarkContent(\n encoding.tooltip || [],\n dimensions,\n findAllMeasures(vseed.measures),\n foldInfoList[0],\n unfoldInfo,\n ),\n },\n dimension: {\n title: {\n visible: true,\n },\n content: createDimensionContent(measures, foldInfoList[0], unfoldInfo),\n },\n }\n return result\n}\n\nexport const tooltipSecondary: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed, vseed } = context\n const { measures, datasetReshapeInfo, chartType, dimensions, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n\n if (isNullish(datasetReshapeInfo[0].foldInfoList?.[1])) {\n return result\n }\n\n const foldInfoList = datasetReshapeInfo[0].foldInfoList as FoldInfo[]\n const unfoldInfo = datasetReshapeInfo[0].unfoldInfo as UnfoldInfo\n result.tooltip = {\n visible: enable,\n mark: {\n title: {\n visible: false,\n },\n content: createMarkContent(\n encoding.tooltip || [],\n dimensions,\n findAllMeasures(vseed.measures),\n foldInfoList[1],\n unfoldInfo,\n ),\n },\n dimension: {\n title: {\n visible: true,\n },\n content: createDimensionContent(measures, foldInfoList[1], unfoldInfo),\n },\n }\n return result\n}\n"],"names":["tooltipPrimary","spec","context","result","advancedVSeed","vseed","measures","datasetReshapeInfo","chartType","dimensions","encoding","baseConfig","tooltip","enable","foldInfoList","unfoldInfo","createMarkContent","findAllMeasures","createDimensionContent","tooltipSecondary","isNullish"],"mappings":";;;AAKO,MAAMA,iBAA2B,CAACC,MAAMC;IAC7C,MAAMC,SAAS;QAAE,GAAGF,IAAI;IAAC;IACzB,MAAM,EAAEG,aAAa,EAAEC,KAAK,EAAE,GAAGH;IACjC,MAAM,EAAEI,QAAQ,EAAEC,kBAAkB,EAAEC,SAAS,EAAEC,UAAU,EAAEC,QAAQ,EAAE,GAAGN;IAC1E,MAAMO,aAAaP,cAAc,MAAM,CAACI,UAAU;IAClD,MAAM,EAAEI,UAAU;QAAE,QAAQ;IAAK,CAAC,EAAE,GAAGD;IACvC,MAAM,EAAEE,MAAM,EAAE,GAAGD;IAEnB,MAAME,eAAeP,kBAAkB,CAAC,EAAE,CAAC,YAAY;IACvD,MAAMQ,aAAaR,kBAAkB,CAAC,EAAE,CAAC,UAAU;IAEnDJ,OAAO,OAAO,GAAG;QACf,SAASU;QACT,MAAM;YACJ,OAAO;gBACL,SAAS;YACX;YACA,SAASG,kBACPN,SAAS,OAAO,IAAI,EAAE,EACtBD,YACAQ,gBAAgBZ,MAAM,QAAQ,GAC9BS,YAAY,CAAC,EAAE,EACfC;QAEJ;QACA,WAAW;YACT,OAAO;gBACL,SAAS;YACX;YACA,SAASG,uBAAuBZ,UAAUQ,YAAY,CAAC,EAAE,EAAEC;QAC7D;IACF;IACA,OAAOZ;AACT;AAEO,MAAMgB,mBAA6B,CAAClB,MAAMC;IAC/C,MAAMC,SAAS;QAAE,GAAGF,IAAI;IAAC;IACzB,MAAM,EAAEG,aAAa,EAAEC,KAAK,EAAE,GAAGH;IACjC,MAAM,EAAEI,QAAQ,EAAEC,kBAAkB,EAAEC,SAAS,EAAEC,UAAU,EAAEC,QAAQ,EAAE,GAAGN;IAC1E,MAAMO,aAAaP,cAAc,MAAM,CAACI,UAAU;IAClD,MAAM,EAAEI,UAAU;QAAE,QAAQ;IAAK,CAAC,EAAE,GAAGD;IACvC,MAAM,EAAEE,MAAM,EAAE,GAAGD;IAEnB,IAAIQ,UAAUb,kBAAkB,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE,GACnD,OAAOJ;IAGT,MAAMW,eAAeP,kBAAkB,CAAC,EAAE,CAAC,YAAY;IACvD,MAAMQ,aAAaR,kBAAkB,CAAC,EAAE,CAAC,UAAU;IACnDJ,OAAO,OAAO,GAAG;QACf,SAASU;QACT,MAAM;YACJ,OAAO;gBACL,SAAS;YACX;YACA,SAASG,kBACPN,SAAS,OAAO,IAAI,EAAE,EACtBD,YACAQ,gBAAgBZ,MAAM,QAAQ,GAC9BS,YAAY,CAAC,EAAE,EACfC;QAEJ;QACA,WAAW;YACT,OAAO;gBACL,SAAS;YACX;YACA,SAASG,uBAAuBZ,UAAUQ,YAAY,CAAC,EAAE,EAAEC;QAC7D;IACF;IACA,OAAOZ;AACT"}
@@ -1,5 +1,5 @@
1
- import { isEmpty, uniqueBy } from "remeda";
2
- import { autoFormatter, createFormatter, findAllMeasures, findMeasureById } from "../../../../utils/index.js";
1
+ import { uniqueBy } from "remeda";
2
+ import { createFormatterByMeasure, findAllMeasures, findMeasureById } from "../../../../utils/index.js";
3
3
  import { ORIGINAL_DATA } from "../../../../../dataReshape/index.js";
4
4
  const tooltipHeatmap = (spec, context)=>{
5
5
  const result = {
@@ -57,14 +57,8 @@ const createMarkContent = (tooltip, dimensions, measures, locale, foldInfo)=>{
57
57
  const originalData = datum[ORIGINAL_DATA];
58
58
  const value = originalData[id];
59
59
  const measure = findMeasureById(measures, id);
60
- if (!measure) return String(value);
61
- const { format = {}, autoFormat = true } = measure;
62
- if (!isEmpty(format)) {
63
- const formatter = createFormatter(format);
64
- return formatter(value);
65
- }
66
- if (autoFormat) return autoFormatter(value, locale);
67
- return String(value);
60
+ const formatter = createFormatterByMeasure(measure);
61
+ return formatter(value);
68
62
  }
69
63
  }));
70
64
  const foldMeaContent = [
@@ -86,14 +80,8 @@ const createMarkContent = (tooltip, dimensions, measures, locale, foldInfo)=>{
86
80
  const value = datum[measureValue];
87
81
  const id = datum[measureId];
88
82
  const measure = findMeasureById(measures, id);
89
- if (!measure) return String(value);
90
- const { format = {}, autoFormat = true } = measure;
91
- if (!isEmpty(format)) {
92
- const formatter = createFormatter(format);
93
- return formatter(value);
94
- }
95
- if (autoFormat) return autoFormatter(value, locale);
96
- return String(value);
83
+ const formatter = createFormatterByMeasure(measure);
84
+ return formatter(value);
97
85
  }
98
86
  }));
99
87
  return [