@visactor/vseed 0.2.2 → 0.2.5

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 (150) hide show
  1. package/dist/cjs/index.cjs +1 -3
  2. package/dist/cjs/index.cjs.map +1 -1
  3. package/dist/esm/builder/builder/buildAdvanced.js +1 -2
  4. package/dist/esm/builder/builder/buildAdvanced.js.map +1 -1
  5. package/dist/esm/builder/builder/buildSpec.js +1 -2
  6. package/dist/esm/builder/builder/buildSpec.js.map +1 -1
  7. package/dist/esm/builder/builder/builder.d.ts +628 -334
  8. package/dist/esm/dataReshape/constant.d.ts +1 -0
  9. package/dist/esm/dataReshape/constant.js +2 -1
  10. package/dist/esm/dataReshape/constant.js.map +1 -1
  11. package/dist/esm/i18n/i18n.js +1 -4
  12. package/dist/esm/i18n/i18n.js.map +1 -1
  13. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithBoxplotEncoding.js +12 -0
  14. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithBoxplotEncoding.js.map +1 -1
  15. package/dist/esm/pipeline/spec/chart/pipeline/heatmap.js +3 -1
  16. package/dist/esm/pipeline/spec/chart/pipeline/heatmap.js.map +1 -1
  17. package/dist/esm/pipeline/spec/chart/pipeline/histogram.js +3 -3
  18. package/dist/esm/pipeline/spec/chart/pipeline/histogram.js.map +1 -1
  19. package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationHorizontalLine.js +4 -12
  20. package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationHorizontalLine.js.map +1 -1
  21. package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationVerticalLine.js +4 -12
  22. package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationVerticalLine.js.map +1 -1
  23. package/dist/esm/pipeline/spec/chart/pipes/axes/bandAxisStyle.d.ts +3 -0
  24. package/dist/esm/pipeline/spec/chart/pipes/axes/bandAxisStyle.js +65 -0
  25. package/dist/esm/pipeline/spec/chart/pipes/axes/bandAxisStyle.js.map +1 -0
  26. package/dist/esm/pipeline/spec/chart/pipes/axes/heatmapBandAxis.d.ts +2 -0
  27. package/dist/esm/pipeline/spec/chart/pipes/axes/heatmapBandAxis.js +24 -0
  28. package/dist/esm/pipeline/spec/chart/pipes/axes/heatmapBandAxis.js.map +1 -0
  29. package/dist/esm/pipeline/spec/chart/pipes/axes/histogramXLinear.d.ts +2 -0
  30. package/dist/esm/pipeline/spec/chart/pipes/axes/histogramXLinear.js +50 -0
  31. package/dist/esm/pipeline/spec/chart/pipes/axes/histogramXLinear.js.map +1 -0
  32. package/dist/esm/pipeline/spec/chart/pipes/axes/index.d.ts +2 -0
  33. package/dist/esm/pipeline/spec/chart/pipes/axes/index.js +3 -1
  34. package/dist/esm/pipeline/spec/chart/pipes/axes/linearAxisStyle.d.ts +14 -0
  35. package/dist/esm/pipeline/spec/chart/pipes/axes/linearAxisStyle.js +78 -0
  36. package/dist/esm/pipeline/spec/chart/pipes/axes/linearAxisStyle.js.map +1 -0
  37. package/dist/esm/pipeline/spec/chart/pipes/axes/xBand.js +15 -72
  38. package/dist/esm/pipeline/spec/chart/pipes/axes/xBand.js.map +1 -1
  39. package/dist/esm/pipeline/spec/chart/pipes/axes/xLinear.js +14 -68
  40. package/dist/esm/pipeline/spec/chart/pipes/axes/xLinear.js.map +1 -1
  41. package/dist/esm/pipeline/spec/chart/pipes/axes/yBand.js +17 -73
  42. package/dist/esm/pipeline/spec/chart/pipes/axes/yBand.js.map +1 -1
  43. package/dist/esm/pipeline/spec/chart/pipes/axes/yLinear.js +14 -68
  44. package/dist/esm/pipeline/spec/chart/pipes/axes/yLinear.js.map +1 -1
  45. package/dist/esm/pipeline/spec/chart/pipes/axes/yLinearPrimary.js +13 -59
  46. package/dist/esm/pipeline/spec/chart/pipes/axes/yLinearPrimary.js.map +1 -1
  47. package/dist/esm/pipeline/spec/chart/pipes/axes/yLinearSecondary.js +16 -57
  48. package/dist/esm/pipeline/spec/chart/pipes/axes/yLinearSecondary.js.map +1 -1
  49. package/dist/esm/pipeline/spec/chart/pipes/dual/dualChartType.js +11 -13
  50. package/dist/esm/pipeline/spec/chart/pipes/dual/dualChartType.js.map +1 -1
  51. package/dist/esm/pipeline/spec/chart/pipes/init/boxplot.js +10 -8
  52. package/dist/esm/pipeline/spec/chart/pipes/init/boxplot.js.map +1 -1
  53. package/dist/esm/pipeline/spec/chart/pipes/init/heatmap.js +0 -12
  54. package/dist/esm/pipeline/spec/chart/pipes/init/heatmap.js.map +1 -1
  55. package/dist/esm/pipeline/spec/chart/pipes/label/label.js +1 -1
  56. package/dist/esm/pipeline/spec/chart/pipes/label/label.js.map +1 -1
  57. package/dist/esm/pipeline/spec/chart/pipes/legend/colorLegend.js +13 -1
  58. package/dist/esm/pipeline/spec/chart/pipes/legend/colorLegend.js.map +1 -1
  59. package/dist/esm/pipeline/spec/chart/pipes/pivotChart/dimensionLinkage.js +2 -2
  60. package/dist/esm/pipeline/spec/chart/pipes/pivotChart/dimensionLinkage.js.map +1 -1
  61. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltip.js +3 -1
  62. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltip.js.map +1 -1
  63. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipBoxplot.js +3 -1
  64. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipBoxplot.js.map +1 -1
  65. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipDualAxis.js +3 -1
  66. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipDualAxis.js.map +1 -1
  67. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipElement.d.ts +2 -0
  68. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipElement.js +58 -0
  69. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipElement.js.map +1 -0
  70. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipHeatmap.js +3 -1
  71. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipHeatmap.js.map +1 -1
  72. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipHistogram.js +3 -1
  73. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipHistogram.js.map +1 -1
  74. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipScatter.js +3 -1
  75. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipScatter.js.map +1 -1
  76. package/dist/esm/pipeline/utils/boxplot.d.ts +1 -0
  77. package/dist/esm/pipeline/utils/boxplot.js +8 -0
  78. package/dist/esm/pipeline/utils/boxplot.js.map +1 -0
  79. package/dist/esm/pipeline/utils/index.d.ts +1 -0
  80. package/dist/esm/pipeline/utils/index.js +1 -0
  81. package/dist/esm/theme/common/legend.d.ts +3 -1
  82. package/dist/esm/theme/common/legend.js +13 -1
  83. package/dist/esm/theme/common/legend.js.map +1 -1
  84. package/dist/esm/theme/common/tooltip.js +1 -1
  85. package/dist/esm/theme/common/tooltip.js.map +1 -1
  86. package/dist/esm/theme/dark/dark.js +4 -1
  87. package/dist/esm/theme/dark/dark.js.map +1 -1
  88. package/dist/esm/theme/light/light.js +4 -1
  89. package/dist/esm/theme/light/light.js.map +1 -1
  90. package/dist/esm/types/advancedVSeed.d.ts +252 -420
  91. package/dist/esm/types/chartType/area/zArea.d.ts +5 -281
  92. package/dist/esm/types/chartType/areaPercent/zAreaPercent.d.ts +5 -281
  93. package/dist/esm/types/chartType/bar/zBar.d.ts +5 -281
  94. package/dist/esm/types/chartType/barParallel/zBarParallel.d.ts +5 -281
  95. package/dist/esm/types/chartType/barPercent/zBarPercent.d.ts +5 -281
  96. package/dist/esm/types/chartType/boxPlot/zBoxPlot.d.ts +5 -281
  97. package/dist/esm/types/chartType/column/zColumn.d.ts +5 -281
  98. package/dist/esm/types/chartType/columnParallel/zColumnParallel.d.ts +5 -281
  99. package/dist/esm/types/chartType/columnPercent/zColumnPercent.d.ts +5 -281
  100. package/dist/esm/types/chartType/donut/zDonut.d.ts +1 -1
  101. package/dist/esm/types/chartType/dualAxis/zDualAxis.d.ts +5 -281
  102. package/dist/esm/types/chartType/funnel/zFunnel.d.ts +5 -0
  103. package/dist/esm/types/chartType/heatmap/zHeatmap.d.ts +5 -0
  104. package/dist/esm/types/chartType/histogram/zHistogram.d.ts +5 -281
  105. package/dist/esm/types/chartType/line/zLine.d.ts +5 -281
  106. package/dist/esm/types/chartType/pie/zPie.d.ts +1 -1
  107. package/dist/esm/types/chartType/radar/zRadar.d.ts +1 -1
  108. package/dist/esm/types/chartType/rose/zRose.d.ts +1 -1
  109. package/dist/esm/types/chartType/roseParallel/zRoseParallel.d.ts +1 -1
  110. package/dist/esm/types/chartType/scatter/zScatter.d.ts +5 -281
  111. package/dist/esm/types/dataSelector/selector.d.ts +108 -0
  112. package/dist/esm/types/dataSelector/selector.js +58 -51
  113. package/dist/esm/types/dataSelector/selector.js.map +1 -1
  114. package/dist/esm/types/properties/annotation/annotation.d.ts +4 -280
  115. package/dist/esm/types/properties/annotation/annotationArea.d.ts +2 -2
  116. package/dist/esm/types/properties/annotation/annotationHorizontalLine.d.ts +1 -6
  117. package/dist/esm/types/properties/annotation/annotationVerticalLine.d.ts +0 -5
  118. package/dist/esm/types/properties/annotation/zAnnotationArea.d.ts +2 -2
  119. package/dist/esm/types/properties/annotation/zAnnotationArea.js +3 -3
  120. package/dist/esm/types/properties/annotation/zAnnotationArea.js.map +1 -1
  121. package/dist/esm/types/properties/annotation/zAnnotationHorizontalLine.d.ts +0 -69
  122. package/dist/esm/types/properties/annotation/zAnnotationHorizontalLine.js +0 -5
  123. package/dist/esm/types/properties/annotation/zAnnotationHorizontalLine.js.map +1 -1
  124. package/dist/esm/types/properties/annotation/zAnnotationVerticalLine.d.ts +0 -69
  125. package/dist/esm/types/properties/annotation/zAnnotationVerticalLine.js +0 -5
  126. package/dist/esm/types/properties/annotation/zAnnotationVerticalLine.js.map +1 -1
  127. package/dist/esm/types/properties/config/area.d.ts +2 -2
  128. package/dist/esm/types/properties/config/bar.d.ts +3 -3
  129. package/dist/esm/types/properties/config/boxplot.d.ts +1 -1
  130. package/dist/esm/types/properties/config/column.d.ts +3 -3
  131. package/dist/esm/types/properties/config/config.d.ts +102 -48
  132. package/dist/esm/types/properties/config/crosshair/crosshair.d.ts +36 -0
  133. package/dist/esm/types/properties/config/dualAxis.d.ts +1 -1
  134. package/dist/esm/types/properties/config/funnel.d.ts +1 -1
  135. package/dist/esm/types/properties/config/heatmap.d.ts +83 -29
  136. package/dist/esm/types/properties/config/heatmap.js +6 -3
  137. package/dist/esm/types/properties/config/heatmap.js.map +1 -1
  138. package/dist/esm/types/properties/config/histogram.d.ts +1 -1
  139. package/dist/esm/types/properties/config/legend/legend.d.ts +10 -2
  140. package/dist/esm/types/properties/config/legend/legend.js +7 -2
  141. package/dist/esm/types/properties/config/legend/legend.js.map +1 -1
  142. package/dist/esm/types/properties/config/line.d.ts +1 -1
  143. package/dist/esm/types/properties/config/pie.d.ts +3 -3
  144. package/dist/esm/types/properties/config/rose.d.ts +2 -2
  145. package/dist/esm/types/properties/config/scatter.d.ts +1 -1
  146. package/dist/esm/types/properties/theme/customTheme.d.ts +204 -96
  147. package/dist/esm/types/zVseed.d.ts +829 -4407
  148. package/dist/umd/index.js +510 -505
  149. package/dist/umd/index.js.map +1 -1
  150. package/package.json +20 -15
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline/spec/chart/pipes/axes/histogramXLinear.js","sources":["../../../../../../../src/pipeline/spec/chart/pipes/axes/histogramXLinear.ts"],"sourcesContent":["import type { ISpec } from '@visactor/vchart'\nimport type { Datum, VChartSpecPipe, XLinearAxis } from 'src/types'\nimport { createNumFormatter, isAreaPercent, isBarPercent, isColumnPercent, isPivotChart } from 'src/pipeline/utils'\nimport { createLinearFormat, createLinearPercentFormat } from './format/linearFormat'\nimport { defaultTitleText } from './title/defaultTitleText'\nimport { linearAxisStyle } from './linearAxisStyle'\nimport { BinEndMeasureId, BinStartMeasureId } from 'src/dataReshape/constant'\nimport { unique } from 'remeda'\n\nexport const histogramXLinear: VChartSpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { encoding, dimensions, measures, dataset } = advancedVSeed\n const { chartType } = vseed\n const config = (advancedVSeed.config?.[chartType as 'bar']?.xAxis ?? {}) as XLinearAxis\n\n if (!result.axes) {\n result.axes = []\n }\n const isPivot = isPivotChart(vseed)\n\n const { autoFormat, numFormat = {} } = config\n\n const formatter = createNumFormatter(numFormat)\n const percentFormatter = createNumFormatter({\n type: 'percent',\n })\n\n const formatMethod = (value: string) => {\n if (isBarPercent(vseed) || isColumnPercent(vseed) || isAreaPercent(vseed)) {\n return createLinearPercentFormat(value, autoFormat, numFormat, formatter, percentFormatter)\n }\n return createLinearFormat(value, autoFormat, numFormat, formatter)\n }\n\n const titleText = config.title?.titleText || defaultTitleText(measures, dimensions, encoding.x as string[])\n\n const linearAxis = linearAxisStyle({\n ...config,\n orient: 'bottom',\n formatMethod,\n titleText,\n isPivot,\n })\n\n linearAxis.tick.tickMode = () => {\n const binValues: number[] = []\n\n dataset.forEach((entry: Datum) => {\n binValues.push((entry as any)[BinStartMeasureId] as number)\n binValues.push((entry as any)[BinEndMeasureId] as number)\n })\n\n return unique(binValues)\n }\n\n result.axes = [...result.axes, linearAxis] as ISpec['axes']\n\n return result\n}\n"],"names":["histogramXLinear","spec","context","result","advancedVSeed","vseed","encoding","dimensions","measures","dataset","chartType","config","isPivot","isPivotChart","autoFormat","numFormat","formatter","createNumFormatter","percentFormatter","formatMethod","value","isBarPercent","isColumnPercent","isAreaPercent","createLinearPercentFormat","createLinearFormat","titleText","defaultTitleText","linearAxis","linearAxisStyle","binValues","entry","BinStartMeasureId","BinEndMeasureId","unique"],"mappings":";;;;;;AASO,MAAMA,mBAAmC,CAACC,MAAMC;IACrD,MAAMC,SAAS;QAAE,GAAGF,IAAI;IAAC;IACzB,MAAM,EAAEG,aAAa,EAAEC,KAAK,EAAE,GAAGH;IACjC,MAAM,EAAEI,QAAQ,EAAEC,UAAU,EAAEC,QAAQ,EAAEC,OAAO,EAAE,GAAGL;IACpD,MAAM,EAAEM,SAAS,EAAE,GAAGL;IACtB,MAAMM,SAAUP,cAAc,MAAM,EAAE,CAACM,UAAmB,EAAE,SAAS,CAAC;IAEtE,IAAI,CAACP,OAAO,IAAI,EACdA,OAAO,IAAI,GAAG,EAAE;IAElB,MAAMS,UAAUC,aAAaR;IAE7B,MAAM,EAAES,UAAU,EAAEC,YAAY,CAAC,CAAC,EAAE,GAAGJ;IAEvC,MAAMK,YAAYC,mBAAmBF;IACrC,MAAMG,mBAAmBD,mBAAmB;QAC1C,MAAM;IACR;IAEA,MAAME,eAAe,CAACC;QACpB,IAAIC,aAAahB,UAAUiB,gBAAgBjB,UAAUkB,cAAclB,QACjE,OAAOmB,0BAA0BJ,OAAON,YAAYC,WAAWC,WAAWE;QAE5E,OAAOO,mBAAmBL,OAAON,YAAYC,WAAWC;IAC1D;IAEA,MAAMU,YAAYf,OAAO,KAAK,EAAE,aAAagB,iBAAiBnB,UAAUD,YAAYD,SAAS,CAAC;IAE9F,MAAMsB,aAAaC,gBAAgB;QACjC,GAAGlB,MAAM;QACT,QAAQ;QACRQ;QACAO;QACAd;IACF;IAEAgB,WAAW,IAAI,CAAC,QAAQ,GAAG;QACzB,MAAME,YAAsB,EAAE;QAE9BrB,QAAQ,OAAO,CAAC,CAACsB;YACfD,UAAU,IAAI,CAAEC,KAAa,CAACC,kBAAkB;YAChDF,UAAU,IAAI,CAAEC,KAAa,CAACE,gBAAgB;QAChD;QAEA,OAAOC,OAAOJ;IAChB;IAEA3B,OAAO,IAAI,GAAG;WAAIA,OAAO,IAAI;QAAEyB;KAAW;IAE1C,OAAOzB;AACT"}
@@ -7,3 +7,5 @@ export { yLinearSecondary } from './yLinearSecondary';
7
7
  export { radiusAxis } from './radius';
8
8
  export { radarAngleAxis } from './radarAngle';
9
9
  export { radarRadiusAxis } from './radarRadius';
10
+ export { heatmapBandAxis } from './heatmapBandAxis';
11
+ export { histogramXLinear } from './histogramXLinear';
@@ -7,4 +7,6 @@ import { yLinearSecondary } from "./yLinearSecondary.js";
7
7
  import { radiusAxis } from "./radius.js";
8
8
  import { radarAngleAxis } from "./radarAngle.js";
9
9
  import { radarRadiusAxis } from "./radarRadius.js";
10
- export { radarAngleAxis, radarRadiusAxis, radiusAxis, xBand, xLinear, yBand, yLinear, yLinearPrimary, yLinearSecondary };
10
+ import { heatmapBandAxis } from "./heatmapBandAxis.js";
11
+ import { histogramXLinear } from "./histogramXLinear.js";
12
+ export { heatmapBandAxis, histogramXLinear, radarAngleAxis, radarRadiusAxis, radiusAxis, xBand, xLinear, yBand, yLinear, yLinearPrimary, yLinearSecondary };
@@ -0,0 +1,14 @@
1
+ import type { YLinearAxis } from '../../../../../types';
2
+ export interface LinearAxisStyleConfig extends YLinearAxis {
3
+ orient: 'left' | 'right' | 'top' | 'bottom';
4
+ formatMethod?: (value: string) => string;
5
+ titleText?: string;
6
+ id?: string;
7
+ seriesId?: string | string[];
8
+ sync?: {
9
+ axisId: string;
10
+ zeroAlign: boolean;
11
+ };
12
+ isPivot?: boolean;
13
+ }
14
+ export declare const linearAxisStyle: (config: LinearAxisStyleConfig) => any;
@@ -0,0 +1,78 @@
1
+ import { AXIS_LABEL_SPACE, LINEAR_AXIS_INNER_OFFSET_TOP } from "../../../../utils/index.js";
2
+ const linearAxisStyle = (config)=>{
3
+ const { orient, visible = true, label, tick, title, grid, line, zero, nice, inverse, max, min, log, logBase = 10, formatMethod, titleText, id, seriesId, sync, isPivot = false } = config;
4
+ const axisConfig = {
5
+ ...isPivot ? {
6
+ range: {
7
+ min,
8
+ max
9
+ }
10
+ } : {
11
+ min,
12
+ max
13
+ },
14
+ visible,
15
+ type: log ? 'log' : 'linear',
16
+ base: logBase,
17
+ orient,
18
+ nice,
19
+ zero: log ? false : zero,
20
+ inverse,
21
+ label: {
22
+ space: AXIS_LABEL_SPACE,
23
+ visible: label?.visible,
24
+ formatMethod,
25
+ style: {
26
+ fill: label?.labelColor,
27
+ angle: label?.labelAngle,
28
+ fontSize: label?.labelFontSize,
29
+ fontWeight: label?.labelFontWeight
30
+ }
31
+ },
32
+ title: {
33
+ visible: title?.visible,
34
+ text: titleText,
35
+ style: {
36
+ fill: title?.titleColor,
37
+ fontSize: title?.titleFontSize,
38
+ fontWeight: title?.titleFontWeight
39
+ }
40
+ },
41
+ tick: {
42
+ visible: tick?.visible,
43
+ tickSize: tick?.tickSize,
44
+ inside: tick?.tickInside,
45
+ style: {
46
+ stroke: tick?.tickColor
47
+ }
48
+ },
49
+ grid: {
50
+ visible: grid?.visible,
51
+ style: {
52
+ lineWidth: grid?.gridWidth,
53
+ stroke: grid?.gridColor,
54
+ lineDash: grid?.gridLineDash
55
+ }
56
+ },
57
+ domainLine: {
58
+ visible: line?.visible,
59
+ style: {
60
+ lineWidth: line?.lineWidth,
61
+ stroke: line?.lineColor
62
+ }
63
+ }
64
+ };
65
+ if ('bottom' === orient || 'top' === orient) axisConfig.innerOffset = {
66
+ right: LINEAR_AXIS_INNER_OFFSET_TOP
67
+ };
68
+ else axisConfig.innerOffset = {
69
+ top: LINEAR_AXIS_INNER_OFFSET_TOP
70
+ };
71
+ if (id) axisConfig.id = id;
72
+ if (seriesId) axisConfig.seriesId = seriesId;
73
+ if (sync) axisConfig.sync = sync;
74
+ return axisConfig;
75
+ };
76
+ export { linearAxisStyle };
77
+
78
+ //# sourceMappingURL=linearAxisStyle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline/spec/chart/pipes/axes/linearAxisStyle.js","sources":["../../../../../../../src/pipeline/spec/chart/pipes/axes/linearAxisStyle.ts"],"sourcesContent":["import type { YLinearAxis } from 'src/types'\nimport { AXIS_LABEL_SPACE, LINEAR_AXIS_INNER_OFFSET_TOP } from 'src/pipeline/utils'\n\nexport interface LinearAxisStyleConfig extends YLinearAxis {\n orient: 'left' | 'right' | 'top' | 'bottom'\n formatMethod?: (value: string) => string\n titleText?: string\n id?: string\n seriesId?: string | string[]\n sync?: {\n axisId: string\n zeroAlign: boolean\n }\n isPivot?: boolean\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const linearAxisStyle = (config: LinearAxisStyleConfig): any => {\n const {\n orient,\n visible = true,\n label,\n tick,\n title,\n grid,\n line,\n zero,\n nice,\n inverse,\n max,\n min,\n log,\n logBase = 10,\n formatMethod,\n titleText,\n id,\n seriesId,\n sync,\n isPivot = false,\n } = config\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const axisConfig: any = {\n ...(isPivot\n ? {\n range: {\n min,\n max,\n },\n }\n : {\n min,\n max,\n }),\n visible,\n type: log ? 'log' : 'linear',\n base: logBase,\n orient,\n nice,\n zero: log ? false : zero,\n inverse,\n label: {\n space: AXIS_LABEL_SPACE,\n visible: label?.visible,\n formatMethod,\n style: {\n fill: label?.labelColor,\n angle: label?.labelAngle,\n fontSize: label?.labelFontSize,\n fontWeight: label?.labelFontWeight,\n },\n },\n title: {\n visible: title?.visible,\n text: titleText,\n style: {\n fill: title?.titleColor,\n fontSize: title?.titleFontSize,\n fontWeight: title?.titleFontWeight,\n },\n },\n tick: {\n visible: tick?.visible,\n tickSize: tick?.tickSize,\n inside: tick?.tickInside,\n style: {\n stroke: tick?.tickColor,\n },\n },\n grid: {\n visible: grid?.visible,\n style: {\n lineWidth: grid?.gridWidth,\n stroke: grid?.gridColor,\n lineDash: grid?.gridLineDash,\n },\n },\n domainLine: {\n visible: line?.visible,\n style: {\n lineWidth: line?.lineWidth,\n stroke: line?.lineColor,\n },\n },\n }\n\n // Add innerOffset based on orientation\n if (orient === 'bottom' || orient === 'top') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n axisConfig.innerOffset = {\n right: LINEAR_AXIS_INNER_OFFSET_TOP,\n }\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n axisConfig.innerOffset = {\n top: LINEAR_AXIS_INNER_OFFSET_TOP,\n }\n }\n\n // Add optional fields\n if (id) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n axisConfig.id = id\n }\n if (seriesId) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n axisConfig.seriesId = seriesId\n }\n if (sync) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n axisConfig.sync = sync\n }\n\n return axisConfig\n}\n"],"names":["linearAxisStyle","config","orient","visible","label","tick","title","grid","line","zero","nice","inverse","max","min","log","logBase","formatMethod","titleText","id","seriesId","sync","isPivot","axisConfig","AXIS_LABEL_SPACE","LINEAR_AXIS_INNER_OFFSET_TOP"],"mappings":";AAiBO,MAAMA,kBAAkB,CAACC;IAC9B,MAAM,EACJC,MAAM,EACNC,UAAU,IAAI,EACdC,KAAK,EACLC,IAAI,EACJC,KAAK,EACLC,IAAI,EACJC,IAAI,EACJC,IAAI,EACJC,IAAI,EACJC,OAAO,EACPC,GAAG,EACHC,GAAG,EACHC,GAAG,EACHC,UAAU,EAAE,EACZC,YAAY,EACZC,SAAS,EACTC,EAAE,EACFC,QAAQ,EACRC,IAAI,EACJC,UAAU,KAAK,EAChB,GAAGpB;IAGJ,MAAMqB,aAAkB;QACtB,GAAID,UACA;YACE,OAAO;gBACLR;gBACAD;YACF;QACF,IACA;YACEC;YACAD;QACF,CAAC;QACLT;QACA,MAAMW,MAAM,QAAQ;QACpB,MAAMC;QACNb;QACAQ;QACA,MAAMI,MAAM,QAAQL;QACpBE;QACA,OAAO;YACL,OAAOY;YACP,SAASnB,OAAO;YAChBY;YACA,OAAO;gBACL,MAAMZ,OAAO;gBACb,OAAOA,OAAO;gBACd,UAAUA,OAAO;gBACjB,YAAYA,OAAO;YACrB;QACF;QACA,OAAO;YACL,SAASE,OAAO;YAChB,MAAMW;YACN,OAAO;gBACL,MAAMX,OAAO;gBACb,UAAUA,OAAO;gBACjB,YAAYA,OAAO;YACrB;QACF;QACA,MAAM;YACJ,SAASD,MAAM;YACf,UAAUA,MAAM;YAChB,QAAQA,MAAM;YACd,OAAO;gBACL,QAAQA,MAAM;YAChB;QACF;QACA,MAAM;YACJ,SAASE,MAAM;YACf,OAAO;gBACL,WAAWA,MAAM;gBACjB,QAAQA,MAAM;gBACd,UAAUA,MAAM;YAClB;QACF;QACA,YAAY;YACV,SAASC,MAAM;YACf,OAAO;gBACL,WAAWA,MAAM;gBACjB,QAAQA,MAAM;YAChB;QACF;IACF;IAGA,IAAIN,AAAW,aAAXA,UAAuBA,AAAW,UAAXA,QAEzBoB,WAAW,WAAW,GAAG;QACvB,OAAOE;IACT;SAGAF,WAAW,WAAW,GAAG;QACvB,KAAKE;IACP;IAIF,IAAIN,IAEFI,WAAW,EAAE,GAAGJ;IAElB,IAAIC,UAEFG,WAAW,QAAQ,GAAGH;IAExB,IAAIC,MAEFE,WAAW,IAAI,GAAGF;IAGpB,OAAOE;AACT"}
@@ -1,7 +1,7 @@
1
1
  import { defaultTitleText } from "./title/defaultTitleText.js";
2
- import { AXIS_LABEL_SPACE } from "../../../../utils/index.js";
3
2
  import { MeasureId } from "../../../../../dataReshape/index.js";
4
- import { isArray } from "@visactor/vutils";
3
+ import { isArray, isNull } from "@visactor/vutils";
4
+ import { bandAxisStyle } from "./bandAxisStyle.js";
5
5
  const xBand = (spec, context)=>{
6
6
  const result = {
7
7
  ...spec
@@ -11,77 +11,20 @@ const xBand = (spec, context)=>{
11
11
  const { measures, dimensions, encoding, datasetReshapeInfo, pivotAllDatasetReshapeInfo } = advancedVSeed;
12
12
  const config = advancedVSeed.config?.[chartType]?.xAxis ?? {};
13
13
  if (!result.axes) result.axes = [];
14
- const { visible = true, label, tick, title, grid, line, labelAutoHide, labelAutoHideGap, labelAutoLimit, labelAutoLimitLength = 80, labelAutoRotate, labelAutoRotateAngleRange } = config;
15
- const sampling = !(labelAutoHide || labelAutoRotate || labelAutoLimit);
14
+ const { labelAutoLimitLength = 80 } = config;
16
15
  const onlyMeasureId = 0 === (encoding.x || []).filter((v)=>v !== MeasureId).length;
17
- const bandAxis = {
18
- visible,
19
- type: 'band',
20
- orient: 'bottom',
21
- maxHeight: labelAutoLimitLength + 60,
22
- sampling,
23
- hover: true,
24
- label: {
25
- visible: label?.visible,
26
- flush: true,
27
- space: AXIS_LABEL_SPACE,
28
- style: {
29
- maxLineWidth: labelAutoLimitLength,
30
- fill: label?.labelColor,
31
- angle: label?.labelAngle,
32
- fontSize: label?.labelFontSize,
33
- fontWeight: label?.labelFontWeight
34
- },
35
- minGap: labelAutoHideGap,
36
- autoHide: labelAutoHide,
37
- autoHideMethod: 'greedy',
38
- autoHideSeparation: labelAutoHideGap,
39
- autoLimit: labelAutoLimit,
40
- autoRotate: labelAutoRotate,
41
- autoRotateAngle: labelAutoRotateAngleRange,
42
- lastVisible: true
43
- },
44
- title: {
45
- visible: title?.visible,
46
- text: title?.titleText || defaultTitleText(measures, dimensions, encoding.x),
47
- style: {
48
- fill: title?.titleColor,
49
- fontSize: title?.titleFontSize,
50
- fontWeight: title?.titleFontWeight
51
- }
52
- },
53
- tick: {
54
- visible: tick?.visible,
55
- tickSize: tick?.tickSize,
56
- inside: tick?.tickInside,
57
- style: {
58
- stroke: tick?.tickColor
59
- }
60
- },
61
- grid: {
62
- visible: grid?.visible,
63
- style: {
64
- lineWidth: grid?.gridWidth,
65
- stroke: grid?.gridColor,
66
- lineDash: grid?.gridLineDash
67
- }
68
- },
69
- domainLine: {
70
- visible: line?.visible,
71
- style: {
72
- lineWidth: line?.lineWidth,
73
- stroke: line?.lineColor
74
- }
75
- },
76
- paddingInner: [
77
- 0.15,
78
- 0.1
79
- ],
80
- paddingOuter: [
81
- 0.075,
82
- 0.1
83
- ]
84
- };
16
+ const bandAxis = bandAxisStyle(config);
17
+ bandAxis.orient = 'bottom';
18
+ bandAxis.maxHeight = labelAutoLimitLength + 60;
19
+ bandAxis.paddingInner = [
20
+ 0.15,
21
+ 0.1
22
+ ];
23
+ bandAxis.paddingOuter = [
24
+ 0.075,
25
+ 0.1
26
+ ];
27
+ if (isNull(bandAxis.title?.text)) bandAxis.title.text = defaultTitleText(measures, dimensions, encoding.x);
85
28
  if (onlyMeasureId && bandAxis.label) {
86
29
  const allDatasetReshapeInfo = pivotAllDatasetReshapeInfo || datasetReshapeInfo;
87
30
  const colorIdMap = allDatasetReshapeInfo.reduce((prev, cur)=>({
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/chart/pipes/axes/xBand.js","sources":["../../../../../../../src/pipeline/spec/chart/pipes/axes/xBand.ts"],"sourcesContent":["import type { ICartesianBandAxisSpec, ISpec } from '@visactor/vchart'\nimport type { VChartSpecPipe, XBandAxis } from 'src/types'\nimport { defaultTitleText } from './title/defaultTitleText'\nimport { AXIS_LABEL_SPACE } from 'src/pipeline/utils'\nimport { MeasureId } from 'src/dataReshape'\nimport { isArray } from '@visactor/vutils'\n\nexport const xBand: VChartSpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { measures, dimensions, encoding, datasetReshapeInfo, pivotAllDatasetReshapeInfo } = advancedVSeed\n const config = (advancedVSeed.config?.[chartType as 'column']?.xAxis ?? {}) as XBandAxis\n\n if (!result.axes) {\n result.axes = []\n }\n\n const {\n visible = true,\n label,\n tick,\n title,\n grid,\n line,\n labelAutoHide,\n labelAutoHideGap,\n labelAutoLimit,\n labelAutoLimitLength = 80,\n labelAutoRotate,\n labelAutoRotateAngleRange,\n } = config\n\n const sampling = !(labelAutoHide || labelAutoRotate || labelAutoLimit)\n const onlyMeasureId = (encoding.x || []).filter((v) => v !== MeasureId).length === 0\n\n const bandAxis = {\n visible,\n type: 'band',\n orient: 'bottom',\n maxHeight: labelAutoLimitLength + 60,\n sampling,\n hover: true,\n label: {\n visible: label?.visible,\n flush: true,\n space: AXIS_LABEL_SPACE,\n style: {\n maxLineWidth: labelAutoLimitLength,\n fill: label?.labelColor,\n angle: label?.labelAngle,\n fontSize: label?.labelFontSize,\n fontWeight: label?.labelFontWeight,\n },\n\n // 防重叠相关\n minGap: labelAutoHideGap,\n autoHide: labelAutoHide,\n autoHideMethod: 'greedy',\n autoHideSeparation: labelAutoHideGap,\n autoLimit: labelAutoLimit,\n autoRotate: labelAutoRotate,\n autoRotateAngle: labelAutoRotateAngleRange,\n lastVisible: true,\n },\n title: {\n visible: title?.visible,\n text: title?.titleText || defaultTitleText(measures, dimensions, encoding.x as string[]),\n style: {\n fill: title?.titleColor,\n fontSize: title?.titleFontSize,\n fontWeight: title?.titleFontWeight,\n },\n },\n tick: {\n visible: tick?.visible,\n tickSize: tick?.tickSize,\n inside: tick?.tickInside,\n style: {\n stroke: tick?.tickColor,\n },\n },\n grid: {\n visible: grid?.visible,\n style: {\n lineWidth: grid?.gridWidth,\n stroke: grid?.gridColor,\n lineDash: grid?.gridLineDash,\n },\n },\n domainLine: {\n visible: line?.visible,\n style: {\n lineWidth: line?.lineWidth,\n stroke: line?.lineColor,\n },\n },\n paddingInner: [0.15, 0.1],\n paddingOuter: [0.075, 0.1],\n } as ICartesianBandAxisSpec\n if (onlyMeasureId && bandAxis.label) {\n const allDatasetReshapeInfo = pivotAllDatasetReshapeInfo || datasetReshapeInfo\n const colorIdMap = allDatasetReshapeInfo.reduce<Record<string, { id: string; alias: string }>>((prev, cur) => {\n return { ...prev, ...cur.unfoldInfo.colorIdMap }\n }, {})\n\n bandAxis.label.formatMethod = (text: string | string[]) => {\n return isArray(text) ? text : (colorIdMap[String(text)]?.alias ?? text)\n }\n }\n\n result.axes = [...result.axes, bandAxis] as ISpec['axes']\n return result\n}\n"],"names":["xBand","spec","context","result","advancedVSeed","vseed","chartType","measures","dimensions","encoding","datasetReshapeInfo","pivotAllDatasetReshapeInfo","config","visible","label","tick","title","grid","line","labelAutoHide","labelAutoHideGap","labelAutoLimit","labelAutoLimitLength","labelAutoRotate","labelAutoRotateAngleRange","sampling","onlyMeasureId","v","MeasureId","bandAxis","AXIS_LABEL_SPACE","defaultTitleText","allDatasetReshapeInfo","colorIdMap","prev","cur","text","isArray","String"],"mappings":";;;;AAOO,MAAMA,QAAwB,CAACC,MAAMC;IAC1C,MAAMC,SAAS;QAAE,GAAGF,IAAI;IAAC;IACzB,MAAM,EAAEG,aAAa,EAAEC,KAAK,EAAE,GAAGH;IACjC,MAAM,EAAEI,SAAS,EAAE,GAAGD;IACtB,MAAM,EAAEE,QAAQ,EAAEC,UAAU,EAAEC,QAAQ,EAAEC,kBAAkB,EAAEC,0BAA0B,EAAE,GAAGP;IAC3F,MAAMQ,SAAUR,cAAc,MAAM,EAAE,CAACE,UAAsB,EAAE,SAAS,CAAC;IAEzE,IAAI,CAACH,OAAO,IAAI,EACdA,OAAO,IAAI,GAAG,EAAE;IAGlB,MAAM,EACJU,UAAU,IAAI,EACdC,KAAK,EACLC,IAAI,EACJC,KAAK,EACLC,IAAI,EACJC,IAAI,EACJC,aAAa,EACbC,gBAAgB,EAChBC,cAAc,EACdC,uBAAuB,EAAE,EACzBC,eAAe,EACfC,yBAAyB,EAC1B,GAAGZ;IAEJ,MAAMa,WAAW,CAAEN,CAAAA,iBAAiBI,mBAAmBF,cAAa;IACpE,MAAMK,gBAAiBjB,AAA4D,MAA5DA,AAAAA,CAAAA,SAAS,CAAC,IAAI,EAAC,EAAG,MAAM,CAAC,CAACkB,IAAMA,MAAMC,WAAW,MAAM;IAE9E,MAAMC,WAAW;QACfhB;QACA,MAAM;QACN,QAAQ;QACR,WAAWS,uBAAuB;QAClCG;QACA,OAAO;QACP,OAAO;YACL,SAASX,OAAO;YAChB,OAAO;YACP,OAAOgB;YACP,OAAO;gBACL,cAAcR;gBACd,MAAMR,OAAO;gBACb,OAAOA,OAAO;gBACd,UAAUA,OAAO;gBACjB,YAAYA,OAAO;YACrB;YAGA,QAAQM;YACR,UAAUD;YACV,gBAAgB;YAChB,oBAAoBC;YACpB,WAAWC;YACX,YAAYE;YACZ,iBAAiBC;YACjB,aAAa;QACf;QACA,OAAO;YACL,SAASR,OAAO;YAChB,MAAMA,OAAO,aAAae,iBAAiBxB,UAAUC,YAAYC,SAAS,CAAC;YAC3E,OAAO;gBACL,MAAMO,OAAO;gBACb,UAAUA,OAAO;gBACjB,YAAYA,OAAO;YACrB;QACF;QACA,MAAM;YACJ,SAASD,MAAM;YACf,UAAUA,MAAM;YAChB,QAAQA,MAAM;YACd,OAAO;gBACL,QAAQA,MAAM;YAChB;QACF;QACA,MAAM;YACJ,SAASE,MAAM;YACf,OAAO;gBACL,WAAWA,MAAM;gBACjB,QAAQA,MAAM;gBACd,UAAUA,MAAM;YAClB;QACF;QACA,YAAY;YACV,SAASC,MAAM;YACf,OAAO;gBACL,WAAWA,MAAM;gBACjB,QAAQA,MAAM;YAChB;QACF;QACA,cAAc;YAAC;YAAM;SAAI;QACzB,cAAc;YAAC;YAAO;SAAI;IAC5B;IACA,IAAIQ,iBAAiBG,SAAS,KAAK,EAAE;QACnC,MAAMG,wBAAwBrB,8BAA8BD;QAC5D,MAAMuB,aAAaD,sBAAsB,MAAM,CAAgD,CAACE,MAAMC,MAC7F;gBAAE,GAAGD,IAAI;gBAAE,GAAGC,IAAI,UAAU,CAAC,UAAU;YAAC,IAC9C,CAAC;QAEJN,SAAS,KAAK,CAAC,YAAY,GAAG,CAACO,OACtBC,QAAQD,QAAQA,OAAQH,UAAU,CAACK,OAAOF,MAAM,EAAE,SAASA;IAEtE;IAEAjC,OAAO,IAAI,GAAG;WAAIA,OAAO,IAAI;QAAE0B;KAAS;IACxC,OAAO1B;AACT"}
1
+ {"version":3,"file":"pipeline/spec/chart/pipes/axes/xBand.js","sources":["../../../../../../../src/pipeline/spec/chart/pipes/axes/xBand.ts"],"sourcesContent":["import type { ISpec } from '@visactor/vchart'\nimport type { VChartSpecPipe, XBandAxis } from 'src/types'\nimport { defaultTitleText } from './title/defaultTitleText'\nimport { MeasureId } from 'src/dataReshape'\nimport { isArray, isNull } from '@visactor/vutils'\nimport { bandAxisStyle } from './bandAxisStyle'\n\nexport const xBand: VChartSpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { measures, dimensions, encoding, datasetReshapeInfo, pivotAllDatasetReshapeInfo } = advancedVSeed\n const config = (advancedVSeed.config?.[chartType as 'column']?.xAxis ?? {}) as XBandAxis\n\n if (!result.axes) {\n result.axes = []\n }\n\n const { labelAutoLimitLength = 80 } = config\n\n const onlyMeasureId = (encoding.x || []).filter((v) => v !== MeasureId).length === 0\n const bandAxis = bandAxisStyle(config)\n\n bandAxis.orient = 'bottom'\n bandAxis.maxHeight = labelAutoLimitLength + 60\n bandAxis.paddingInner = [0.15, 0.1]\n bandAxis.paddingOuter = [0.075, 0.1]\n\n if (isNull(bandAxis.title?.text)) {\n bandAxis.title.text = defaultTitleText(measures, dimensions, encoding.x as string[])\n }\n\n if (onlyMeasureId && bandAxis.label) {\n const allDatasetReshapeInfo = pivotAllDatasetReshapeInfo || datasetReshapeInfo\n const colorIdMap = allDatasetReshapeInfo.reduce<Record<string, { id: string; alias: string }>>((prev, cur) => {\n return { ...prev, ...cur.unfoldInfo.colorIdMap }\n }, {})\n\n bandAxis.label.formatMethod = (text: string | string[]) => {\n return isArray(text) ? text : (colorIdMap[String(text)]?.alias ?? text)\n }\n }\n\n result.axes = [...result.axes, bandAxis] as ISpec['axes']\n return result\n}\n"],"names":["xBand","spec","context","result","advancedVSeed","vseed","chartType","measures","dimensions","encoding","datasetReshapeInfo","pivotAllDatasetReshapeInfo","config","labelAutoLimitLength","onlyMeasureId","v","MeasureId","bandAxis","bandAxisStyle","isNull","defaultTitleText","allDatasetReshapeInfo","colorIdMap","prev","cur","text","isArray","String"],"mappings":";;;;AAOO,MAAMA,QAAwB,CAACC,MAAMC;IAC1C,MAAMC,SAAS;QAAE,GAAGF,IAAI;IAAC;IACzB,MAAM,EAAEG,aAAa,EAAEC,KAAK,EAAE,GAAGH;IACjC,MAAM,EAAEI,SAAS,EAAE,GAAGD;IACtB,MAAM,EAAEE,QAAQ,EAAEC,UAAU,EAAEC,QAAQ,EAAEC,kBAAkB,EAAEC,0BAA0B,EAAE,GAAGP;IAC3F,MAAMQ,SAAUR,cAAc,MAAM,EAAE,CAACE,UAAsB,EAAE,SAAS,CAAC;IAEzE,IAAI,CAACH,OAAO,IAAI,EACdA,OAAO,IAAI,GAAG,EAAE;IAGlB,MAAM,EAAEU,uBAAuB,EAAE,EAAE,GAAGD;IAEtC,MAAME,gBAAiBL,AAA4D,MAA5DA,AAAAA,CAAAA,SAAS,CAAC,IAAI,EAAC,EAAG,MAAM,CAAC,CAACM,IAAMA,MAAMC,WAAW,MAAM;IAC9E,MAAMC,WAAWC,cAAcN;IAE/BK,SAAS,MAAM,GAAG;IAClBA,SAAS,SAAS,GAAGJ,uBAAuB;IAC5CI,SAAS,YAAY,GAAG;QAAC;QAAM;KAAI;IACnCA,SAAS,YAAY,GAAG;QAAC;QAAO;KAAI;IAEpC,IAAIE,OAAOF,SAAS,KAAK,EAAE,OACzBA,SAAS,KAAK,CAAC,IAAI,GAAGG,iBAAiBb,UAAUC,YAAYC,SAAS,CAAC;IAGzE,IAAIK,iBAAiBG,SAAS,KAAK,EAAE;QACnC,MAAMI,wBAAwBV,8BAA8BD;QAC5D,MAAMY,aAAaD,sBAAsB,MAAM,CAAgD,CAACE,MAAMC,MAC7F;gBAAE,GAAGD,IAAI;gBAAE,GAAGC,IAAI,UAAU,CAAC,UAAU;YAAC,IAC9C,CAAC;QAEJP,SAAS,KAAK,CAAC,YAAY,GAAG,CAACQ,OACtBC,QAAQD,QAAQA,OAAQH,UAAU,CAACK,OAAOF,MAAM,EAAE,SAASA;IAEtE;IAEAtB,OAAO,IAAI,GAAG;WAAIA,OAAO,IAAI;QAAEc;KAAS;IACxC,OAAOd;AACT"}
@@ -1,6 +1,7 @@
1
- import { AXIS_LABEL_SPACE, LINEAR_AXIS_INNER_OFFSET_TOP, createNumFormatter, isAreaPercent, isBarPercent, isColumnPercent, isPivotChart } from "../../../../utils/index.js";
1
+ import { createNumFormatter, isAreaPercent, isBarPercent, isColumnPercent, isPivotChart } from "../../../../utils/index.js";
2
2
  import { createLinearFormat, createLinearPercentFormat } from "./format/linearFormat.js";
3
3
  import { defaultTitleText } from "./title/defaultTitleText.js";
4
+ import { linearAxisStyle } from "./linearAxisStyle.js";
4
5
  const xLinear = (spec, context)=>{
5
6
  const result = {
6
7
  ...spec
@@ -11,78 +12,23 @@ const xLinear = (spec, context)=>{
11
12
  const config = advancedVSeed.config?.[chartType]?.xAxis ?? {};
12
13
  if (!result.axes) result.axes = [];
13
14
  const isPivot = isPivotChart(vseed);
14
- const { visible = true, label, tick, title, grid, line, zero, nice, inverse, max, min, log, logBase = 10, autoFormat, numFormat = {} } = config;
15
+ const { autoFormat, numFormat = {} } = config;
15
16
  const formatter = createNumFormatter(numFormat);
16
17
  const percentFormatter = createNumFormatter({
17
18
  type: 'percent'
18
19
  });
19
- const linearAxis = {
20
- ...isPivot ? {
21
- range: {
22
- min,
23
- max
24
- }
25
- } : {
26
- min,
27
- max
28
- },
29
- visible,
30
- type: log ? 'log' : 'linear',
31
- base: logBase,
32
- orient: 'bottom',
33
- nice,
34
- zero: log ? false : zero,
35
- inverse,
36
- label: {
37
- space: AXIS_LABEL_SPACE,
38
- visible: label?.visible,
39
- formatMethod: (value)=>{
40
- if (isBarPercent(vseed) || isColumnPercent(vseed) || isAreaPercent(vseed)) return createLinearPercentFormat(value, autoFormat, numFormat, formatter, percentFormatter);
41
- return createLinearFormat(value, autoFormat, numFormat, formatter);
42
- },
43
- style: {
44
- fill: label?.labelColor,
45
- angle: label?.labelAngle,
46
- fontSize: label?.labelFontSize,
47
- fontWeight: label?.labelFontWeight
48
- }
49
- },
50
- title: {
51
- visible: title?.visible,
52
- text: title?.titleText || defaultTitleText(measures, dimensions, encoding.x),
53
- style: {
54
- fill: title?.titleColor,
55
- fontSize: title?.titleFontSize,
56
- fontWeight: title?.titleFontWeight
57
- }
58
- },
59
- tick: {
60
- visible: tick?.visible,
61
- tickSize: tick?.tickSize,
62
- inside: tick?.tickInside,
63
- style: {
64
- stroke: tick?.tickColor
65
- }
66
- },
67
- grid: {
68
- visible: grid?.visible,
69
- style: {
70
- lineWidth: grid?.gridWidth,
71
- stroke: grid?.gridColor,
72
- lineDash: grid?.gridLineDash
73
- }
74
- },
75
- domainLine: {
76
- visible: line?.visible,
77
- style: {
78
- lineWidth: line?.lineWidth,
79
- stroke: line?.lineColor
80
- }
81
- },
82
- innerOffset: {
83
- right: LINEAR_AXIS_INNER_OFFSET_TOP
84
- }
20
+ const formatMethod = (value)=>{
21
+ if (isBarPercent(vseed) || isColumnPercent(vseed) || isAreaPercent(vseed)) return createLinearPercentFormat(value, autoFormat, numFormat, formatter, percentFormatter);
22
+ return createLinearFormat(value, autoFormat, numFormat, formatter);
85
23
  };
24
+ const titleText = config.title?.titleText || defaultTitleText(measures, dimensions, encoding.x);
25
+ const linearAxis = linearAxisStyle({
26
+ ...config,
27
+ orient: 'bottom',
28
+ formatMethod,
29
+ titleText,
30
+ isPivot
31
+ });
86
32
  result.axes = [
87
33
  ...result.axes,
88
34
  linearAxis
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/chart/pipes/axes/xLinear.js","sources":["../../../../../../../src/pipeline/spec/chart/pipes/axes/xLinear.ts"],"sourcesContent":["import type { ISpec } from '@visactor/vchart'\nimport type { VChartSpecPipe, XLinearAxis } from 'src/types'\nimport {\n AXIS_LABEL_SPACE,\n createNumFormatter,\n isAreaPercent,\n isBarPercent,\n isColumnPercent,\n isPivotChart,\n LINEAR_AXIS_INNER_OFFSET_TOP,\n} from 'src/pipeline/utils'\nimport { createLinearFormat, createLinearPercentFormat } from './format/linearFormat'\nimport { defaultTitleText } from './title/defaultTitleText'\n\nexport const xLinear: VChartSpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { encoding, dimensions, measures } = advancedVSeed\n const { chartType } = vseed\n const config = (advancedVSeed.config?.[chartType as 'bar']?.xAxis ?? {}) as XLinearAxis\n\n if (!result.axes) {\n result.axes = []\n }\n const isPivot = isPivotChart(vseed)\n\n const {\n visible = true,\n label,\n tick,\n title,\n grid,\n line,\n\n zero,\n nice,\n inverse,\n max,\n min,\n log,\n logBase = 10,\n autoFormat,\n numFormat = {},\n } = config\n\n const formatter = createNumFormatter(numFormat)\n const percentFormatter = createNumFormatter({\n type: 'percent',\n })\n\n const linearAxis = {\n ...(isPivot\n ? {\n range: {\n min,\n max,\n },\n }\n : {\n min,\n max,\n }),\n visible,\n type: log ? 'log' : 'linear',\n base: logBase,\n orient: 'bottom',\n nice,\n zero: log ? false : zero,\n inverse,\n label: {\n space: AXIS_LABEL_SPACE,\n visible: label?.visible,\n formatMethod: (value: string) => {\n if (isBarPercent(vseed) || isColumnPercent(vseed) || isAreaPercent(vseed)) {\n return createLinearPercentFormat(value, autoFormat, numFormat, formatter, percentFormatter)\n }\n return createLinearFormat(value, autoFormat, numFormat, formatter)\n },\n style: {\n fill: label?.labelColor,\n angle: label?.labelAngle,\n fontSize: label?.labelFontSize,\n fontWeight: label?.labelFontWeight,\n },\n },\n title: {\n visible: title?.visible,\n text: title?.titleText || defaultTitleText(measures, dimensions, encoding.x as string[]),\n style: {\n fill: title?.titleColor,\n fontSize: title?.titleFontSize,\n fontWeight: title?.titleFontWeight,\n },\n },\n tick: {\n visible: tick?.visible,\n tickSize: tick?.tickSize,\n inside: tick?.tickInside,\n style: {\n stroke: tick?.tickColor,\n },\n },\n grid: {\n visible: grid?.visible,\n style: {\n lineWidth: grid?.gridWidth,\n stroke: grid?.gridColor,\n lineDash: grid?.gridLineDash,\n },\n },\n domainLine: {\n visible: line?.visible,\n style: {\n lineWidth: line?.lineWidth,\n stroke: line?.lineColor,\n },\n },\n innerOffset: {\n right: LINEAR_AXIS_INNER_OFFSET_TOP,\n // left: LINEAR_AXIS_INNER_OFFSET_TOP,\n },\n }\n\n result.axes = [...result.axes, linearAxis] as ISpec['axes']\n\n return result\n}\n"],"names":["xLinear","spec","context","result","advancedVSeed","vseed","encoding","dimensions","measures","chartType","config","isPivot","isPivotChart","visible","label","tick","title","grid","line","zero","nice","inverse","max","min","log","logBase","autoFormat","numFormat","formatter","createNumFormatter","percentFormatter","linearAxis","AXIS_LABEL_SPACE","value","isBarPercent","isColumnPercent","isAreaPercent","createLinearPercentFormat","createLinearFormat","defaultTitleText","LINEAR_AXIS_INNER_OFFSET_TOP"],"mappings":";;;AAcO,MAAMA,UAA0B,CAACC,MAAMC;IAC5C,MAAMC,SAAS;QAAE,GAAGF,IAAI;IAAC;IACzB,MAAM,EAAEG,aAAa,EAAEC,KAAK,EAAE,GAAGH;IACjC,MAAM,EAAEI,QAAQ,EAAEC,UAAU,EAAEC,QAAQ,EAAE,GAAGJ;IAC3C,MAAM,EAAEK,SAAS,EAAE,GAAGJ;IACtB,MAAMK,SAAUN,cAAc,MAAM,EAAE,CAACK,UAAmB,EAAE,SAAS,CAAC;IAEtE,IAAI,CAACN,OAAO,IAAI,EACdA,OAAO,IAAI,GAAG,EAAE;IAElB,MAAMQ,UAAUC,aAAaP;IAE7B,MAAM,EACJQ,UAAU,IAAI,EACdC,KAAK,EACLC,IAAI,EACJC,KAAK,EACLC,IAAI,EACJC,IAAI,EAEJC,IAAI,EACJC,IAAI,EACJC,OAAO,EACPC,GAAG,EACHC,GAAG,EACHC,GAAG,EACHC,UAAU,EAAE,EACZC,UAAU,EACVC,YAAY,CAAC,CAAC,EACf,GAAGjB;IAEJ,MAAMkB,YAAYC,mBAAmBF;IACrC,MAAMG,mBAAmBD,mBAAmB;QAC1C,MAAM;IACR;IAEA,MAAME,aAAa;QACjB,GAAIpB,UACA;YACE,OAAO;gBACLY;gBACAD;YACF;QACF,IACA;YACEC;YACAD;QACF,CAAC;QACLT;QACA,MAAMW,MAAM,QAAQ;QACpB,MAAMC;QACN,QAAQ;QACRL;QACA,MAAMI,MAAM,QAAQL;QACpBE;QACA,OAAO;YACL,OAAOW;YACP,SAASlB,OAAO;YAChB,cAAc,CAACmB;gBACb,IAAIC,aAAa7B,UAAU8B,gBAAgB9B,UAAU+B,cAAc/B,QACjE,OAAOgC,0BAA0BJ,OAAOP,YAAYC,WAAWC,WAAWE;gBAE5E,OAAOQ,mBAAmBL,OAAOP,YAAYC,WAAWC;YAC1D;YACA,OAAO;gBACL,MAAMd,OAAO;gBACb,OAAOA,OAAO;gBACd,UAAUA,OAAO;gBACjB,YAAYA,OAAO;YACrB;QACF;QACA,OAAO;YACL,SAASE,OAAO;YAChB,MAAMA,OAAO,aAAauB,iBAAiB/B,UAAUD,YAAYD,SAAS,CAAC;YAC3E,OAAO;gBACL,MAAMU,OAAO;gBACb,UAAUA,OAAO;gBACjB,YAAYA,OAAO;YACrB;QACF;QACA,MAAM;YACJ,SAASD,MAAM;YACf,UAAUA,MAAM;YAChB,QAAQA,MAAM;YACd,OAAO;gBACL,QAAQA,MAAM;YAChB;QACF;QACA,MAAM;YACJ,SAASE,MAAM;YACf,OAAO;gBACL,WAAWA,MAAM;gBACjB,QAAQA,MAAM;gBACd,UAAUA,MAAM;YAClB;QACF;QACA,YAAY;YACV,SAASC,MAAM;YACf,OAAO;gBACL,WAAWA,MAAM;gBACjB,QAAQA,MAAM;YAChB;QACF;QACA,aAAa;YACX,OAAOsB;QAET;IACF;IAEArC,OAAO,IAAI,GAAG;WAAIA,OAAO,IAAI;QAAE4B;KAAW;IAE1C,OAAO5B;AACT"}
1
+ {"version":3,"file":"pipeline/spec/chart/pipes/axes/xLinear.js","sources":["../../../../../../../src/pipeline/spec/chart/pipes/axes/xLinear.ts"],"sourcesContent":["import type { ISpec } from '@visactor/vchart'\nimport type { VChartSpecPipe, XLinearAxis } from 'src/types'\nimport { createNumFormatter, isAreaPercent, isBarPercent, isColumnPercent, isPivotChart } from 'src/pipeline/utils'\nimport { createLinearFormat, createLinearPercentFormat } from './format/linearFormat'\nimport { defaultTitleText } from './title/defaultTitleText'\nimport { linearAxisStyle } from './linearAxisStyle'\n\nexport const xLinear: VChartSpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { encoding, dimensions, measures } = advancedVSeed\n const { chartType } = vseed\n const config = (advancedVSeed.config?.[chartType as 'bar']?.xAxis ?? {}) as XLinearAxis\n\n if (!result.axes) {\n result.axes = []\n }\n const isPivot = isPivotChart(vseed)\n\n const { autoFormat, numFormat = {} } = config\n\n const formatter = createNumFormatter(numFormat)\n const percentFormatter = createNumFormatter({\n type: 'percent',\n })\n\n const formatMethod = (value: string) => {\n if (isBarPercent(vseed) || isColumnPercent(vseed) || isAreaPercent(vseed)) {\n return createLinearPercentFormat(value, autoFormat, numFormat, formatter, percentFormatter)\n }\n return createLinearFormat(value, autoFormat, numFormat, formatter)\n }\n\n const titleText = config.title?.titleText || defaultTitleText(measures, dimensions, encoding.x as string[])\n\n const linearAxis = linearAxisStyle({\n ...config,\n orient: 'bottom',\n formatMethod,\n titleText,\n isPivot,\n })\n\n result.axes = [...result.axes, linearAxis] as ISpec['axes']\n\n return result\n}\n"],"names":["xLinear","spec","context","result","advancedVSeed","vseed","encoding","dimensions","measures","chartType","config","isPivot","isPivotChart","autoFormat","numFormat","formatter","createNumFormatter","percentFormatter","formatMethod","value","isBarPercent","isColumnPercent","isAreaPercent","createLinearPercentFormat","createLinearFormat","titleText","defaultTitleText","linearAxis","linearAxisStyle"],"mappings":";;;;AAOO,MAAMA,UAA0B,CAACC,MAAMC;IAC5C,MAAMC,SAAS;QAAE,GAAGF,IAAI;IAAC;IACzB,MAAM,EAAEG,aAAa,EAAEC,KAAK,EAAE,GAAGH;IACjC,MAAM,EAAEI,QAAQ,EAAEC,UAAU,EAAEC,QAAQ,EAAE,GAAGJ;IAC3C,MAAM,EAAEK,SAAS,EAAE,GAAGJ;IACtB,MAAMK,SAAUN,cAAc,MAAM,EAAE,CAACK,UAAmB,EAAE,SAAS,CAAC;IAEtE,IAAI,CAACN,OAAO,IAAI,EACdA,OAAO,IAAI,GAAG,EAAE;IAElB,MAAMQ,UAAUC,aAAaP;IAE7B,MAAM,EAAEQ,UAAU,EAAEC,YAAY,CAAC,CAAC,EAAE,GAAGJ;IAEvC,MAAMK,YAAYC,mBAAmBF;IACrC,MAAMG,mBAAmBD,mBAAmB;QAC1C,MAAM;IACR;IAEA,MAAME,eAAe,CAACC;QACpB,IAAIC,aAAaf,UAAUgB,gBAAgBhB,UAAUiB,cAAcjB,QACjE,OAAOkB,0BAA0BJ,OAAON,YAAYC,WAAWC,WAAWE;QAE5E,OAAOO,mBAAmBL,OAAON,YAAYC,WAAWC;IAC1D;IAEA,MAAMU,YAAYf,OAAO,KAAK,EAAE,aAAagB,iBAAiBlB,UAAUD,YAAYD,SAAS,CAAC;IAE9F,MAAMqB,aAAaC,gBAAgB;QACjC,GAAGlB,MAAM;QACT,QAAQ;QACRQ;QACAO;QACAd;IACF;IAEAR,OAAO,IAAI,GAAG;WAAIA,OAAO,IAAI;QAAEwB;KAAW;IAE1C,OAAOxB;AACT"}
@@ -1,7 +1,7 @@
1
1
  import { defaultTitleText } from "./title/defaultTitleText.js";
2
- import { AXIS_LABEL_SPACE } from "../../../../utils/index.js";
3
2
  import { MeasureId } from "../../../../../dataReshape/index.js";
4
- import { isArray } from "@visactor/vutils";
3
+ import { isArray, isNull } from "@visactor/vutils";
4
+ import { bandAxisStyle } from "./bandAxisStyle.js";
5
5
  const yBand = (spec, context)=>{
6
6
  const result = {
7
7
  ...spec
@@ -11,78 +11,22 @@ const yBand = (spec, context)=>{
11
11
  const { measures, dimensions, encoding, datasetReshapeInfo, pivotAllDatasetReshapeInfo } = advancedVSeed;
12
12
  const config = advancedVSeed.config?.[chartType]?.yAxis ?? {};
13
13
  if (!result.axes) result.axes = [];
14
- const { visible = true, label, tick, title, grid, line, labelAutoHide, labelAutoHideGap, labelAutoLimit, labelAutoLimitLength = 80, labelAutoRotate, labelAutoRotateAngleRange } = config;
15
- const sampling = !(labelAutoHide || labelAutoRotate || labelAutoLimit);
14
+ const { labelAutoLimitLength = 80 } = config;
16
15
  const onlyMeasureId = 0 === (encoding.y || []).filter((v)=>v !== MeasureId).length;
17
- const bandAxis = {
18
- visible,
19
- type: 'band',
20
- orient: 'left',
21
- maxWidth: labelAutoLimitLength + 60,
22
- sampling,
23
- hover: true,
24
- label: {
25
- visible: label?.visible,
26
- flush: true,
27
- containerAlign: 'right',
28
- space: AXIS_LABEL_SPACE,
29
- style: {
30
- maxLineWidth: labelAutoLimitLength,
31
- fill: label?.labelColor,
32
- angle: label?.labelAngle,
33
- fontSize: label?.labelFontSize,
34
- fontWeight: label?.labelFontWeight
35
- },
36
- minGap: labelAutoHideGap,
37
- autoHide: labelAutoHide,
38
- autoHideMethod: 'greedy',
39
- autoHideSeparation: labelAutoHideGap,
40
- autoLimit: labelAutoLimit,
41
- autoRotate: labelAutoRotate,
42
- autoRotateAngle: labelAutoRotateAngleRange,
43
- lastVisible: true
44
- },
45
- title: {
46
- visible: title?.visible,
47
- text: title?.titleText || defaultTitleText(measures, dimensions, encoding.y),
48
- style: {
49
- fill: title?.titleColor,
50
- fontSize: title?.titleFontSize,
51
- fontWeight: title?.titleFontWeight
52
- }
53
- },
54
- tick: {
55
- visible: tick?.visible,
56
- tickSize: tick?.tickSize,
57
- inside: tick?.tickInside,
58
- style: {
59
- stroke: tick?.tickColor
60
- }
61
- },
62
- grid: {
63
- visible: grid?.visible,
64
- style: {
65
- lineWidth: grid?.gridWidth,
66
- stroke: grid?.gridColor,
67
- lineDash: grid?.gridLineDash
68
- }
69
- },
70
- domainLine: {
71
- visible: line?.visible,
72
- style: {
73
- lineWidth: line?.lineWidth,
74
- stroke: line?.lineColor
75
- }
76
- },
77
- paddingInner: [
78
- 0.15,
79
- 0.1
80
- ],
81
- paddingOuter: [
82
- 0.075,
83
- 0.1
84
- ]
85
- };
16
+ const bandAxis = bandAxisStyle(config);
17
+ bandAxis.type = 'band';
18
+ bandAxis.orient = 'left';
19
+ bandAxis.maxWidth = labelAutoLimitLength + 60;
20
+ if (bandAxis.label) bandAxis.label.containerAlign = 'right';
21
+ bandAxis.paddingInner = [
22
+ 0.15,
23
+ 0.1
24
+ ];
25
+ bandAxis.paddingOuter = [
26
+ 0.075,
27
+ 0.1
28
+ ];
29
+ if (isNull(bandAxis.title?.text)) bandAxis.title.text = defaultTitleText(measures, dimensions, encoding.y);
86
30
  if (onlyMeasureId && bandAxis.label) {
87
31
  const allDatasetReshapeInfo = pivotAllDatasetReshapeInfo || datasetReshapeInfo;
88
32
  const colorIdMap = allDatasetReshapeInfo.reduce((prev, cur)=>({
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/chart/pipes/axes/yBand.js","sources":["../../../../../../../src/pipeline/spec/chart/pipes/axes/yBand.ts"],"sourcesContent":["import type { ICartesianBandAxisSpec, ISpec } from '@visactor/vchart'\nimport type { VChartSpecPipe, XBandAxis } from 'src/types'\nimport { defaultTitleText } from './title/defaultTitleText'\nimport { AXIS_LABEL_SPACE } from 'src/pipeline/utils'\nimport { MeasureId } from 'src/dataReshape'\nimport { isArray } from '@visactor/vutils'\n\nexport const yBand: VChartSpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { measures, dimensions, encoding, datasetReshapeInfo, pivotAllDatasetReshapeInfo } = advancedVSeed\n const config = (advancedVSeed.config?.[chartType as 'bar']?.yAxis ?? {}) as XBandAxis\n\n if (!result.axes) {\n result.axes = []\n }\n\n const {\n visible = true,\n label,\n tick,\n title,\n grid,\n line,\n labelAutoHide,\n labelAutoHideGap,\n labelAutoLimit,\n labelAutoLimitLength = 80,\n labelAutoRotate,\n labelAutoRotateAngleRange,\n } = config\n\n const sampling = !(labelAutoHide || labelAutoRotate || labelAutoLimit)\n const onlyMeasureId = (encoding.y || []).filter((v) => v !== MeasureId).length === 0\n\n const bandAxis = {\n visible,\n type: 'band',\n orient: 'left',\n maxWidth: labelAutoLimitLength + 60,\n sampling,\n hover: true,\n label: {\n visible: label?.visible,\n flush: true,\n containerAlign: 'right',\n space: AXIS_LABEL_SPACE,\n style: {\n maxLineWidth: labelAutoLimitLength,\n fill: label?.labelColor,\n angle: label?.labelAngle,\n fontSize: label?.labelFontSize,\n fontWeight: label?.labelFontWeight,\n },\n // 防重叠相关\n minGap: labelAutoHideGap,\n autoHide: labelAutoHide,\n autoHideMethod: 'greedy',\n autoHideSeparation: labelAutoHideGap,\n autoLimit: labelAutoLimit,\n autoRotate: labelAutoRotate,\n autoRotateAngle: labelAutoRotateAngleRange,\n lastVisible: true,\n },\n title: {\n visible: title?.visible,\n text: title?.titleText || defaultTitleText(measures, dimensions, encoding.y as string[]),\n style: {\n fill: title?.titleColor,\n fontSize: title?.titleFontSize,\n fontWeight: title?.titleFontWeight,\n },\n },\n tick: {\n visible: tick?.visible,\n tickSize: tick?.tickSize,\n inside: tick?.tickInside,\n style: {\n stroke: tick?.tickColor,\n },\n },\n grid: {\n visible: grid?.visible,\n style: {\n lineWidth: grid?.gridWidth,\n stroke: grid?.gridColor,\n lineDash: grid?.gridLineDash,\n },\n },\n domainLine: {\n visible: line?.visible,\n style: {\n lineWidth: line?.lineWidth,\n stroke: line?.lineColor,\n },\n },\n paddingInner: [0.15, 0.1],\n paddingOuter: [0.075, 0.1],\n } as ICartesianBandAxisSpec\n if (onlyMeasureId && bandAxis.label) {\n const allDatasetReshapeInfo = pivotAllDatasetReshapeInfo || datasetReshapeInfo\n const colorIdMap = allDatasetReshapeInfo.reduce<Record<string, { id: string; alias: string }>>((prev, cur) => {\n return { ...prev, ...cur.unfoldInfo.colorIdMap }\n }, {})\n\n bandAxis.label.formatMethod = (text: string | string[]) => {\n return isArray(text) ? text : (colorIdMap[String(text)]?.alias ?? text)\n }\n }\n\n result.axes = [...result.axes, bandAxis] as ISpec['axes']\n return result\n}\n"],"names":["yBand","spec","context","result","advancedVSeed","vseed","chartType","measures","dimensions","encoding","datasetReshapeInfo","pivotAllDatasetReshapeInfo","config","visible","label","tick","title","grid","line","labelAutoHide","labelAutoHideGap","labelAutoLimit","labelAutoLimitLength","labelAutoRotate","labelAutoRotateAngleRange","sampling","onlyMeasureId","v","MeasureId","bandAxis","AXIS_LABEL_SPACE","defaultTitleText","allDatasetReshapeInfo","colorIdMap","prev","cur","text","isArray","String"],"mappings":";;;;AAOO,MAAMA,QAAwB,CAACC,MAAMC;IAC1C,MAAMC,SAAS;QAAE,GAAGF,IAAI;IAAC;IACzB,MAAM,EAAEG,aAAa,EAAEC,KAAK,EAAE,GAAGH;IACjC,MAAM,EAAEI,SAAS,EAAE,GAAGD;IACtB,MAAM,EAAEE,QAAQ,EAAEC,UAAU,EAAEC,QAAQ,EAAEC,kBAAkB,EAAEC,0BAA0B,EAAE,GAAGP;IAC3F,MAAMQ,SAAUR,cAAc,MAAM,EAAE,CAACE,UAAmB,EAAE,SAAS,CAAC;IAEtE,IAAI,CAACH,OAAO,IAAI,EACdA,OAAO,IAAI,GAAG,EAAE;IAGlB,MAAM,EACJU,UAAU,IAAI,EACdC,KAAK,EACLC,IAAI,EACJC,KAAK,EACLC,IAAI,EACJC,IAAI,EACJC,aAAa,EACbC,gBAAgB,EAChBC,cAAc,EACdC,uBAAuB,EAAE,EACzBC,eAAe,EACfC,yBAAyB,EAC1B,GAAGZ;IAEJ,MAAMa,WAAW,CAAEN,CAAAA,iBAAiBI,mBAAmBF,cAAa;IACpE,MAAMK,gBAAiBjB,AAA4D,MAA5DA,AAAAA,CAAAA,SAAS,CAAC,IAAI,EAAC,EAAG,MAAM,CAAC,CAACkB,IAAMA,MAAMC,WAAW,MAAM;IAE9E,MAAMC,WAAW;QACfhB;QACA,MAAM;QACN,QAAQ;QACR,UAAUS,uBAAuB;QACjCG;QACA,OAAO;QACP,OAAO;YACL,SAASX,OAAO;YAChB,OAAO;YACP,gBAAgB;YAChB,OAAOgB;YACP,OAAO;gBACL,cAAcR;gBACd,MAAMR,OAAO;gBACb,OAAOA,OAAO;gBACd,UAAUA,OAAO;gBACjB,YAAYA,OAAO;YACrB;YAEA,QAAQM;YACR,UAAUD;YACV,gBAAgB;YAChB,oBAAoBC;YACpB,WAAWC;YACX,YAAYE;YACZ,iBAAiBC;YACjB,aAAa;QACf;QACA,OAAO;YACL,SAASR,OAAO;YAChB,MAAMA,OAAO,aAAae,iBAAiBxB,UAAUC,YAAYC,SAAS,CAAC;YAC3E,OAAO;gBACL,MAAMO,OAAO;gBACb,UAAUA,OAAO;gBACjB,YAAYA,OAAO;YACrB;QACF;QACA,MAAM;YACJ,SAASD,MAAM;YACf,UAAUA,MAAM;YAChB,QAAQA,MAAM;YACd,OAAO;gBACL,QAAQA,MAAM;YAChB;QACF;QACA,MAAM;YACJ,SAASE,MAAM;YACf,OAAO;gBACL,WAAWA,MAAM;gBACjB,QAAQA,MAAM;gBACd,UAAUA,MAAM;YAClB;QACF;QACA,YAAY;YACV,SAASC,MAAM;YACf,OAAO;gBACL,WAAWA,MAAM;gBACjB,QAAQA,MAAM;YAChB;QACF;QACA,cAAc;YAAC;YAAM;SAAI;QACzB,cAAc;YAAC;YAAO;SAAI;IAC5B;IACA,IAAIQ,iBAAiBG,SAAS,KAAK,EAAE;QACnC,MAAMG,wBAAwBrB,8BAA8BD;QAC5D,MAAMuB,aAAaD,sBAAsB,MAAM,CAAgD,CAACE,MAAMC,MAC7F;gBAAE,GAAGD,IAAI;gBAAE,GAAGC,IAAI,UAAU,CAAC,UAAU;YAAC,IAC9C,CAAC;QAEJN,SAAS,KAAK,CAAC,YAAY,GAAG,CAACO,OACtBC,QAAQD,QAAQA,OAAQH,UAAU,CAACK,OAAOF,MAAM,EAAE,SAASA;IAEtE;IAEAjC,OAAO,IAAI,GAAG;WAAIA,OAAO,IAAI;QAAE0B;KAAS;IACxC,OAAO1B;AACT"}
1
+ {"version":3,"file":"pipeline/spec/chart/pipes/axes/yBand.js","sources":["../../../../../../../src/pipeline/spec/chart/pipes/axes/yBand.ts"],"sourcesContent":["import type { ISpec } from '@visactor/vchart'\nimport type { VChartSpecPipe, XBandAxis } from 'src/types'\nimport { defaultTitleText } from './title/defaultTitleText'\nimport { MeasureId } from 'src/dataReshape'\nimport { isArray, isNull } from '@visactor/vutils'\nimport { bandAxisStyle } from './bandAxisStyle'\n\nexport const yBand: VChartSpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { measures, dimensions, encoding, datasetReshapeInfo, pivotAllDatasetReshapeInfo } = advancedVSeed\n const config = (advancedVSeed.config?.[chartType as 'bar']?.yAxis ?? {}) as XBandAxis\n\n if (!result.axes) {\n result.axes = []\n }\n\n const { labelAutoLimitLength = 80 } = config\n\n const onlyMeasureId = (encoding.y || []).filter((v) => v !== MeasureId).length === 0\n\n const bandAxis = bandAxisStyle(config)\n\n bandAxis.type = 'band'\n bandAxis.orient = 'left'\n bandAxis.maxWidth = labelAutoLimitLength + 60\n if (bandAxis.label) {\n bandAxis.label.containerAlign = 'right'\n }\n bandAxis.paddingInner = [0.15, 0.1]\n bandAxis.paddingOuter = [0.075, 0.1]\n\n if (isNull(bandAxis.title?.text)) {\n bandAxis.title.text = defaultTitleText(measures, dimensions, encoding.y as string[])\n }\n if (onlyMeasureId && bandAxis.label) {\n const allDatasetReshapeInfo = pivotAllDatasetReshapeInfo || datasetReshapeInfo\n const colorIdMap = allDatasetReshapeInfo.reduce<Record<string, { id: string; alias: string }>>((prev, cur) => {\n return { ...prev, ...cur.unfoldInfo.colorIdMap }\n }, {})\n\n bandAxis.label.formatMethod = (text: string | string[]) => {\n return isArray(text) ? text : (colorIdMap[String(text)]?.alias ?? text)\n }\n }\n\n result.axes = [...result.axes, bandAxis] as ISpec['axes']\n return result\n}\n"],"names":["yBand","spec","context","result","advancedVSeed","vseed","chartType","measures","dimensions","encoding","datasetReshapeInfo","pivotAllDatasetReshapeInfo","config","labelAutoLimitLength","onlyMeasureId","v","MeasureId","bandAxis","bandAxisStyle","isNull","defaultTitleText","allDatasetReshapeInfo","colorIdMap","prev","cur","text","isArray","String"],"mappings":";;;;AAOO,MAAMA,QAAwB,CAACC,MAAMC;IAC1C,MAAMC,SAAS;QAAE,GAAGF,IAAI;IAAC;IACzB,MAAM,EAAEG,aAAa,EAAEC,KAAK,EAAE,GAAGH;IACjC,MAAM,EAAEI,SAAS,EAAE,GAAGD;IACtB,MAAM,EAAEE,QAAQ,EAAEC,UAAU,EAAEC,QAAQ,EAAEC,kBAAkB,EAAEC,0BAA0B,EAAE,GAAGP;IAC3F,MAAMQ,SAAUR,cAAc,MAAM,EAAE,CAACE,UAAmB,EAAE,SAAS,CAAC;IAEtE,IAAI,CAACH,OAAO,IAAI,EACdA,OAAO,IAAI,GAAG,EAAE;IAGlB,MAAM,EAAEU,uBAAuB,EAAE,EAAE,GAAGD;IAEtC,MAAME,gBAAiBL,AAA4D,MAA5DA,AAAAA,CAAAA,SAAS,CAAC,IAAI,EAAC,EAAG,MAAM,CAAC,CAACM,IAAMA,MAAMC,WAAW,MAAM;IAE9E,MAAMC,WAAWC,cAAcN;IAE/BK,SAAS,IAAI,GAAG;IAChBA,SAAS,MAAM,GAAG;IAClBA,SAAS,QAAQ,GAAGJ,uBAAuB;IAC3C,IAAII,SAAS,KAAK,EAChBA,SAAS,KAAK,CAAC,cAAc,GAAG;IAElCA,SAAS,YAAY,GAAG;QAAC;QAAM;KAAI;IACnCA,SAAS,YAAY,GAAG;QAAC;QAAO;KAAI;IAEpC,IAAIE,OAAOF,SAAS,KAAK,EAAE,OACzBA,SAAS,KAAK,CAAC,IAAI,GAAGG,iBAAiBb,UAAUC,YAAYC,SAAS,CAAC;IAEzE,IAAIK,iBAAiBG,SAAS,KAAK,EAAE;QACnC,MAAMI,wBAAwBV,8BAA8BD;QAC5D,MAAMY,aAAaD,sBAAsB,MAAM,CAAgD,CAACE,MAAMC,MAC7F;gBAAE,GAAGD,IAAI;gBAAE,GAAGC,IAAI,UAAU,CAAC,UAAU;YAAC,IAC9C,CAAC;QAEJP,SAAS,KAAK,CAAC,YAAY,GAAG,CAACQ,OACtBC,QAAQD,QAAQA,OAAQH,UAAU,CAACK,OAAOF,MAAM,EAAE,SAASA;IAEtE;IAEAtB,OAAO,IAAI,GAAG;WAAIA,OAAO,IAAI;QAAEc;KAAS;IACxC,OAAOd;AACT"}
@@ -1,6 +1,7 @@
1
- import { AXIS_LABEL_SPACE, LINEAR_AXIS_INNER_OFFSET_TOP, createNumFormatter, isAreaPercent, isBarPercent, isColumnPercent, isPivotChart } from "../../../../utils/index.js";
1
+ import { createNumFormatter, isAreaPercent, isBarPercent, isColumnPercent, isPivotChart } from "../../../../utils/index.js";
2
2
  import { createLinearFormat, createLinearPercentFormat } from "./format/linearFormat.js";
3
3
  import { defaultTitleText } from "./title/defaultTitleText.js";
4
+ import { linearAxisStyle } from "./linearAxisStyle.js";
4
5
  const yLinear = (spec, context)=>{
5
6
  const result = {
6
7
  ...spec
@@ -11,78 +12,23 @@ const yLinear = (spec, context)=>{
11
12
  const config = advancedVSeed.config?.[chartType]?.yAxis ?? {};
12
13
  if (!result.axes) result.axes = [];
13
14
  const isPivot = isPivotChart(vseed);
14
- const { visible = true, label, tick, title, grid, line, zero, nice, inverse, max, min, log, logBase = 10, autoFormat, numFormat = {} } = config;
15
+ const { autoFormat, numFormat = {} } = config;
15
16
  const formatter = createNumFormatter(numFormat);
16
17
  const percentFormatter = createNumFormatter({
17
18
  type: 'percent'
18
19
  });
19
- const linearAxis = {
20
- ...isPivot ? {
21
- range: {
22
- min,
23
- max
24
- }
25
- } : {
26
- min,
27
- max
28
- },
29
- visible,
30
- type: log ? 'log' : 'linear',
31
- base: logBase,
32
- orient: 'left',
33
- nice,
34
- zero: log ? false : zero,
35
- inverse,
36
- label: {
37
- space: AXIS_LABEL_SPACE,
38
- visible: label?.visible,
39
- formatMethod: (value)=>{
40
- if (isBarPercent(vseed) || isColumnPercent(vseed) || isAreaPercent(vseed)) return createLinearPercentFormat(value, autoFormat, numFormat, formatter, percentFormatter);
41
- return createLinearFormat(value, autoFormat, numFormat, formatter);
42
- },
43
- style: {
44
- fill: label?.labelColor,
45
- angle: label?.labelAngle,
46
- fontSize: label?.labelFontSize,
47
- fontWeight: label?.labelFontWeight
48
- }
49
- },
50
- title: {
51
- visible: title?.visible,
52
- text: title?.titleText || defaultTitleText(measures, dimensions, encoding.y),
53
- style: {
54
- fill: title?.titleColor,
55
- fontSize: title?.titleFontSize,
56
- fontWeight: title?.titleFontWeight
57
- }
58
- },
59
- tick: {
60
- visible: tick?.visible,
61
- tickSize: tick?.tickSize,
62
- inside: tick?.tickInside,
63
- style: {
64
- stroke: tick?.tickColor
65
- }
66
- },
67
- grid: {
68
- visible: grid?.visible,
69
- style: {
70
- lineWidth: grid?.gridWidth,
71
- stroke: grid?.gridColor,
72
- lineDash: grid?.gridLineDash
73
- }
74
- },
75
- domainLine: {
76
- visible: line?.visible,
77
- style: {
78
- lineWidth: line?.lineWidth,
79
- stroke: line?.lineColor
80
- }
81
- },
82
- innerOffset: {
83
- top: LINEAR_AXIS_INNER_OFFSET_TOP
84
- }
20
+ const formatMethod = (value)=>{
21
+ if (isBarPercent(vseed) || isColumnPercent(vseed) || isAreaPercent(vseed)) return createLinearPercentFormat(value, autoFormat, numFormat, formatter, percentFormatter);
22
+ return createLinearFormat(value, autoFormat, numFormat, formatter);
85
23
  };
24
+ const titleText = config.title?.titleText || defaultTitleText(measures, dimensions, encoding.y);
25
+ const linearAxis = linearAxisStyle({
26
+ ...config,
27
+ orient: 'left',
28
+ formatMethod,
29
+ titleText,
30
+ isPivot
31
+ });
86
32
  result.axes = [
87
33
  ...result.axes,
88
34
  linearAxis