@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
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/chart/pipes/axes/yLinear.js","sources":["../../../../../../../src/pipeline/spec/chart/pipes/axes/yLinear.ts"],"sourcesContent":["import type { ISpec } from '@visactor/vchart'\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 type { VChartSpecPipe, YLinearAxis } from 'src/types'\nimport { createLinearFormat, createLinearPercentFormat } from './format/linearFormat'\nimport { defaultTitleText } from './title/defaultTitleText'\n\nexport const yLinear: VChartSpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { measures, dimensions, encoding } = advancedVSeed\n const config = (advancedVSeed.config?.[chartType as 'column']?.yAxis ?? {}) as YLinearAxis\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: 'left',\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.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 innerOffset: {\n top: LINEAR_AXIS_INNER_OFFSET_TOP,\n // bottom: LINEAR_AXIS_INNER_OFFSET_TOP,\n },\n }\n\n result.axes = [...result.axes, linearAxis] as ISpec['axes']\n\n return result\n}\n"],"names":["yLinear","spec","context","result","advancedVSeed","vseed","chartType","measures","dimensions","encoding","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,SAAS,EAAE,GAAGD;IACtB,MAAM,EAAEE,QAAQ,EAAEC,UAAU,EAAEC,QAAQ,EAAE,GAAGL;IAC3C,MAAMM,SAAUN,cAAc,MAAM,EAAE,CAACE,UAAsB,EAAE,SAAS,CAAC;IAEzE,IAAI,CAACH,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,iBAAiBhC,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,aAAa;YACX,KAAKsB;QAEP;IACF;IAEArC,OAAO,IAAI,GAAG;WAAIA,OAAO,IAAI;QAAE4B;KAAW;IAE1C,OAAO5B;AACT"}
1
+ {"version":3,"file":"pipeline/spec/chart/pipes/axes/yLinear.js","sources":["../../../../../../../src/pipeline/spec/chart/pipes/axes/yLinear.ts"],"sourcesContent":["import type { ISpec } from '@visactor/vchart'\nimport { createNumFormatter, isAreaPercent, isBarPercent, isColumnPercent, isPivotChart } from 'src/pipeline/utils'\nimport type { VChartSpecPipe, YLinearAxis } from 'src/types'\nimport { createLinearFormat, createLinearPercentFormat } from './format/linearFormat'\nimport { defaultTitleText } from './title/defaultTitleText'\nimport { linearAxisStyle } from './linearAxisStyle'\n\nexport const yLinear: VChartSpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { measures, dimensions, encoding } = advancedVSeed\n const config = (advancedVSeed.config?.[chartType as 'column']?.yAxis ?? {}) as YLinearAxis\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.y as string[])\n\n const linearAxis = linearAxisStyle({\n ...config,\n orient: 'left',\n formatMethod,\n titleText,\n isPivot,\n })\n\n result.axes = [...result.axes, linearAxis] as ISpec['axes']\n\n return result\n}\n"],"names":["yLinear","spec","context","result","advancedVSeed","vseed","chartType","measures","dimensions","encoding","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,SAAS,EAAE,GAAGD;IACtB,MAAM,EAAEE,QAAQ,EAAEC,UAAU,EAAEC,QAAQ,EAAE,GAAGL;IAC3C,MAAMM,SAAUN,cAAc,MAAM,EAAE,CAACE,UAAsB,EAAE,SAAS,CAAC;IAEzE,IAAI,CAACH,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,iBAAiBnB,UAAUC,YAAYC,SAAS,CAAC;IAE9F,MAAMkB,aAAaC,gBAAgB;QACjC,GAAGlB,MAAM;QACT,QAAQ;QACRQ;QACAO;QACAd;IACF;IAEAR,OAAO,IAAI,GAAG;WAAIA,OAAO,IAAI;QAAEwB;KAAW;IAE1C,OAAOxB;AACT"}
@@ -1,8 +1,8 @@
1
- import { AXIS_LABEL_SPACE, LINEAR_AXIS_INNER_OFFSET_TOP } from "../../../../utils/constant.js";
2
1
  import { createNumFormatter } from "../../../../utils/index.js";
3
2
  import { isEmpty, isNullish } from "remeda";
4
3
  import { createLinearFormat } from "./format/linearFormat.js";
5
4
  import { defaultTitleText } from "./title/defaultTitleText.js";
5
+ import { linearAxisStyle } from "./linearAxisStyle.js";
6
6
  const yLinearPrimary = (spec, context)=>{
7
7
  const result = {
8
8
  ...spec
@@ -24,66 +24,20 @@ const yLinearPrimary = (spec, context)=>{
24
24
  ];
25
25
  const seriesId = alignTicksConfig ? seriesIds : seriesIds[0];
26
26
  if (!result.axes) result.axes = [];
27
- const { visible = true, label, tick, title, grid, line, zero, nice, inverse, max, min, log, logBase = 10, autoFormat, numFormat = {} } = yAxisConfig ?? {};
27
+ const { autoFormat, numFormat = {} } = yAxisConfig ?? {};
28
28
  const formatter = createNumFormatter(numFormat);
29
+ const formatMethod = (value)=>createLinearFormat(value, autoFormat, numFormat, formatter);
30
+ const titleText = yAxisConfig?.title?.titleText || defaultTitleText(measures, dimensions, encoding.y);
29
31
  const linearAxis = {
30
- visible: isEmptySecondary ? false : visible,
31
- id,
32
- seriesId,
33
- type: log ? 'log' : 'linear',
34
- base: logBase,
35
- orient: 'left',
36
- nice,
37
- zero: log ? false : zero,
38
- inverse,
39
- max,
40
- min,
41
- label: {
42
- space: AXIS_LABEL_SPACE,
43
- visible: label?.visible,
44
- formatMethod: (value)=>createLinearFormat(value, autoFormat, numFormat, formatter),
45
- style: {
46
- fill: label?.labelColor,
47
- angle: label?.labelAngle,
48
- fontSize: label?.labelFontSize,
49
- fontWeight: label?.labelFontWeight
50
- }
51
- },
52
- title: {
53
- visible: title?.visible,
54
- text: title?.titleText || defaultTitleText(measures, dimensions, encoding.y),
55
- style: {
56
- fill: title?.titleColor,
57
- fontSize: title?.titleFontSize,
58
- fontWeight: title?.titleFontWeight
59
- }
60
- },
61
- tick: {
62
- visible: tick?.visible,
63
- tickSize: tick?.tickSize,
64
- inside: tick?.tickInside,
65
- style: {
66
- stroke: tick?.tickColor
67
- }
68
- },
69
- grid: {
70
- visible: grid?.visible,
71
- style: {
72
- lineWidth: grid?.gridWidth,
73
- stroke: grid?.gridColor,
74
- lineDash: grid?.gridLineDash
75
- }
76
- },
77
- domainLine: {
78
- visible: line?.visible,
79
- style: {
80
- lineWidth: line?.lineWidth,
81
- stroke: line?.lineColor
82
- }
83
- },
84
- innerOffset: {
85
- top: LINEAR_AXIS_INNER_OFFSET_TOP
86
- }
32
+ ...linearAxisStyle({
33
+ ...yAxisConfig,
34
+ orient: 'left',
35
+ formatMethod,
36
+ titleText,
37
+ id,
38
+ seriesId
39
+ }),
40
+ visible: isEmptySecondary ? false : yAxisConfig?.visible ?? true
87
41
  };
88
42
  result.axes = [
89
43
  ...result.axes,
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/chart/pipes/axes/yLinearPrimary.js","sources":["../../../../../../../src/pipeline/spec/chart/pipes/axes/yLinearPrimary.ts"],"sourcesContent":["import type { ISpec } from '@visactor/vchart'\nimport { AXIS_LABEL_SPACE, LINEAR_AXIS_INNER_OFFSET_TOP } from '../../../../utils/constant'\nimport { createNumFormatter } from '../../../../utils'\nimport type { VChartSpecPipe, YLinearAxis } from 'src/types'\nimport { isEmpty, isNullish } from 'remeda'\nimport { createLinearFormat } from './format/linearFormat'\nimport { defaultTitleText } from './title/defaultTitleText'\n\nexport const yLinearPrimary: VChartSpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { datasetReshapeInfo, encoding, measures, dimensions } = advancedVSeed\n const { index, id: reshapeInfoId, foldInfoList } = datasetReshapeInfo[0]\n // TODO: default config missing\n const primaryYAxis = advancedVSeed.config?.[chartType as 'dualAxis']?.primaryYAxis as YLinearAxis | YLinearAxis[]\n const yAxisConfig = Array.isArray(primaryYAxis) ? primaryYAxis[index] || primaryYAxis[0] : primaryYAxis\n const alignTicks = advancedVSeed.config?.[chartType as 'dualAxis']?.alignTicks as boolean | boolean[]\n const alignTicksConfig = Array.isArray(alignTicks) ? alignTicks[index] || alignTicks[0] : alignTicks\n\n if (isNullish(foldInfoList?.[0])) {\n return result\n }\n\n const isEmptySecondary = isEmpty(foldInfoList?.[0].foldMap)\n\n const id = `${reshapeInfoId}-primary-axis`\n const seriesIds = [`${reshapeInfoId}-primary-series`, `${reshapeInfoId}-secondary-series`]\n const seriesId = alignTicksConfig ? seriesIds : seriesIds[0]\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\n zero,\n nice,\n inverse,\n max,\n min,\n log,\n logBase = 10,\n\n autoFormat,\n numFormat = {},\n } = yAxisConfig ?? {}\n\n const formatter = createNumFormatter(numFormat)\n\n const linearAxis = {\n visible: isEmptySecondary ? false : visible,\n id,\n seriesId,\n\n type: log ? 'log' : 'linear',\n base: logBase,\n orient: 'left',\n nice,\n zero: log ? false : zero,\n inverse,\n max,\n min,\n label: {\n space: AXIS_LABEL_SPACE,\n visible: label?.visible,\n formatMethod: (value: string) => {\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.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 innerOffset: {\n top: LINEAR_AXIS_INNER_OFFSET_TOP,\n // bottom: LINEAR_AXIS_INNER_OFFSET_TOP,\n },\n }\n\n result.axes = [...result.axes, linearAxis] as ISpec['axes']\n\n return result\n}\n"],"names":["yLinearPrimary","spec","context","result","advancedVSeed","vseed","chartType","datasetReshapeInfo","encoding","measures","dimensions","index","reshapeInfoId","foldInfoList","primaryYAxis","yAxisConfig","Array","alignTicks","alignTicksConfig","isNullish","isEmptySecondary","isEmpty","id","seriesIds","seriesId","visible","label","tick","title","grid","line","zero","nice","inverse","max","min","log","logBase","autoFormat","numFormat","formatter","createNumFormatter","linearAxis","AXIS_LABEL_SPACE","value","createLinearFormat","defaultTitleText","LINEAR_AXIS_INNER_OFFSET_TOP"],"mappings":";;;;;AAQO,MAAMA,iBAAiC,CAACC,MAAMC;IACnD,MAAMC,SAAS;QAAE,GAAGF,IAAI;IAAC;IACzB,MAAM,EAAEG,aAAa,EAAEC,KAAK,EAAE,GAAGH;IACjC,MAAM,EAAEI,SAAS,EAAE,GAAGD;IACtB,MAAM,EAAEE,kBAAkB,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,UAAU,EAAE,GAAGN;IAC/D,MAAM,EAAEO,KAAK,EAAE,IAAIC,aAAa,EAAEC,YAAY,EAAE,GAAGN,kBAAkB,CAAC,EAAE;IAExE,MAAMO,eAAeV,cAAc,MAAM,EAAE,CAACE,UAAwB,EAAE;IACtE,MAAMS,cAAcC,MAAM,OAAO,CAACF,gBAAgBA,YAAY,CAACH,MAAM,IAAIG,YAAY,CAAC,EAAE,GAAGA;IAC3F,MAAMG,aAAab,cAAc,MAAM,EAAE,CAACE,UAAwB,EAAE;IACpE,MAAMY,mBAAmBF,MAAM,OAAO,CAACC,cAAcA,UAAU,CAACN,MAAM,IAAIM,UAAU,CAAC,EAAE,GAAGA;IAE1F,IAAIE,UAAUN,cAAc,CAAC,EAAE,GAC7B,OAAOV;IAGT,MAAMiB,mBAAmBC,QAAQR,cAAc,CAAC,EAAE,CAAC;IAEnD,MAAMS,KAAK,GAAGV,cAAc,aAAa,CAAC;IAC1C,MAAMW,YAAY;QAAC,GAAGX,cAAc,eAAe,CAAC;QAAE,GAAGA,cAAc,iBAAiB,CAAC;KAAC;IAC1F,MAAMY,WAAWN,mBAAmBK,YAAYA,SAAS,CAAC,EAAE;IAE5D,IAAI,CAACpB,OAAO,IAAI,EACdA,OAAO,IAAI,GAAG,EAAE;IAGlB,MAAM,EACJsB,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,EAEZC,UAAU,EACVC,YAAY,CAAC,CAAC,EACf,GAAGxB,eAAe,CAAC;IAEpB,MAAMyB,YAAYC,mBAAmBF;IAErC,MAAMG,aAAa;QACjB,SAAStB,mBAAmB,QAAQK;QACpCH;QACAE;QAEA,MAAMY,MAAM,QAAQ;QACpB,MAAMC;QACN,QAAQ;QACRL;QACA,MAAMI,MAAM,QAAQL;QACpBE;QACAC;QACAC;QACA,OAAO;YACL,OAAOQ;YACP,SAASjB,OAAO;YAChB,cAAc,CAACkB,QACNC,mBAAmBD,OAAON,YAAYC,WAAWC;YAE1D,OAAO;gBACL,MAAMd,OAAO;gBACb,OAAOA,OAAO;gBACd,UAAUA,OAAO;gBACjB,YAAYA,OAAO;YACrB;QACF;QACA,OAAO;YACL,SAASE,OAAO;YAChB,MAAMA,OAAO,aAAakB,iBAAiBrC,UAAUC,YAAYF,SAAS,CAAC;YAC3E,OAAO;gBACL,MAAMoB,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,KAAKiB;QAEP;IACF;IAEA5C,OAAO,IAAI,GAAG;WAAIA,OAAO,IAAI;QAAEuC;KAAW;IAE1C,OAAOvC;AACT"}
1
+ {"version":3,"file":"pipeline/spec/chart/pipes/axes/yLinearPrimary.js","sources":["../../../../../../../src/pipeline/spec/chart/pipes/axes/yLinearPrimary.ts"],"sourcesContent":["import type { ISpec } from '@visactor/vchart'\nimport { createNumFormatter } from '../../../../utils'\nimport type { VChartSpecPipe, YLinearAxis } from 'src/types'\nimport { isEmpty, isNullish } from 'remeda'\nimport { createLinearFormat } from './format/linearFormat'\nimport { defaultTitleText } from './title/defaultTitleText'\nimport { linearAxisStyle } from './linearAxisStyle'\n\nexport const yLinearPrimary: VChartSpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { datasetReshapeInfo, encoding, measures, dimensions } = advancedVSeed\n const { index, id: reshapeInfoId, foldInfoList } = datasetReshapeInfo[0]\n // TODO: default config missing\n const primaryYAxis = advancedVSeed.config?.[chartType as 'dualAxis']?.primaryYAxis as YLinearAxis | YLinearAxis[]\n const yAxisConfig = Array.isArray(primaryYAxis) ? primaryYAxis[index] || primaryYAxis[0] : primaryYAxis\n const alignTicks = advancedVSeed.config?.[chartType as 'dualAxis']?.alignTicks as boolean | boolean[]\n const alignTicksConfig = Array.isArray(alignTicks) ? alignTicks[index] || alignTicks[0] : alignTicks\n\n if (isNullish(foldInfoList?.[0])) {\n return result\n }\n\n const isEmptySecondary = isEmpty(foldInfoList?.[0].foldMap)\n\n const id = `${reshapeInfoId}-primary-axis`\n const seriesIds = [`${reshapeInfoId}-primary-series`, `${reshapeInfoId}-secondary-series`]\n const seriesId = alignTicksConfig ? seriesIds : seriesIds[0]\n\n if (!result.axes) {\n result.axes = []\n }\n\n const { autoFormat, numFormat = {} } = yAxisConfig ?? {}\n\n const formatter = createNumFormatter(numFormat)\n\n const formatMethod = (value: string) => {\n return createLinearFormat(value, autoFormat, numFormat, formatter)\n }\n\n const titleText = yAxisConfig?.title?.titleText || defaultTitleText(measures, dimensions, encoding.y as string[])\n\n const linearAxis = {\n ...linearAxisStyle({\n ...yAxisConfig,\n orient: 'left',\n formatMethod,\n titleText,\n id,\n seriesId,\n }),\n visible: isEmptySecondary ? false : (yAxisConfig?.visible ?? true),\n }\n\n result.axes = [...result.axes, linearAxis] as ISpec['axes']\n\n return result\n}\n"],"names":["yLinearPrimary","spec","context","result","advancedVSeed","vseed","chartType","datasetReshapeInfo","encoding","measures","dimensions","index","reshapeInfoId","foldInfoList","primaryYAxis","yAxisConfig","Array","alignTicks","alignTicksConfig","isNullish","isEmptySecondary","isEmpty","id","seriesIds","seriesId","autoFormat","numFormat","formatter","createNumFormatter","formatMethod","value","createLinearFormat","titleText","defaultTitleText","linearAxis","linearAxisStyle"],"mappings":";;;;;AAQO,MAAMA,iBAAiC,CAACC,MAAMC;IACnD,MAAMC,SAAS;QAAE,GAAGF,IAAI;IAAC;IACzB,MAAM,EAAEG,aAAa,EAAEC,KAAK,EAAE,GAAGH;IACjC,MAAM,EAAEI,SAAS,EAAE,GAAGD;IACtB,MAAM,EAAEE,kBAAkB,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,UAAU,EAAE,GAAGN;IAC/D,MAAM,EAAEO,KAAK,EAAE,IAAIC,aAAa,EAAEC,YAAY,EAAE,GAAGN,kBAAkB,CAAC,EAAE;IAExE,MAAMO,eAAeV,cAAc,MAAM,EAAE,CAACE,UAAwB,EAAE;IACtE,MAAMS,cAAcC,MAAM,OAAO,CAACF,gBAAgBA,YAAY,CAACH,MAAM,IAAIG,YAAY,CAAC,EAAE,GAAGA;IAC3F,MAAMG,aAAab,cAAc,MAAM,EAAE,CAACE,UAAwB,EAAE;IACpE,MAAMY,mBAAmBF,MAAM,OAAO,CAACC,cAAcA,UAAU,CAACN,MAAM,IAAIM,UAAU,CAAC,EAAE,GAAGA;IAE1F,IAAIE,UAAUN,cAAc,CAAC,EAAE,GAC7B,OAAOV;IAGT,MAAMiB,mBAAmBC,QAAQR,cAAc,CAAC,EAAE,CAAC;IAEnD,MAAMS,KAAK,GAAGV,cAAc,aAAa,CAAC;IAC1C,MAAMW,YAAY;QAAC,GAAGX,cAAc,eAAe,CAAC;QAAE,GAAGA,cAAc,iBAAiB,CAAC;KAAC;IAC1F,MAAMY,WAAWN,mBAAmBK,YAAYA,SAAS,CAAC,EAAE;IAE5D,IAAI,CAACpB,OAAO,IAAI,EACdA,OAAO,IAAI,GAAG,EAAE;IAGlB,MAAM,EAAEsB,UAAU,EAAEC,YAAY,CAAC,CAAC,EAAE,GAAGX,eAAe,CAAC;IAEvD,MAAMY,YAAYC,mBAAmBF;IAErC,MAAMG,eAAe,CAACC,QACbC,mBAAmBD,OAAOL,YAAYC,WAAWC;IAG1D,MAAMK,YAAYjB,aAAa,OAAO,aAAakB,iBAAiBxB,UAAUC,YAAYF,SAAS,CAAC;IAEpG,MAAM0B,aAAa;QACjB,GAAGC,gBAAgB;YACjB,GAAGpB,WAAW;YACd,QAAQ;YACRc;YACAG;YACAV;YACAE;QACF,EAAE;QACF,SAASJ,mBAAmB,QAASL,aAAa,WAAW;IAC/D;IAEAZ,OAAO,IAAI,GAAG;WAAIA,OAAO,IAAI;QAAE+B;KAAW;IAE1C,OAAO/B;AACT"}
@@ -1,8 +1,8 @@
1
- import { AXIS_LABEL_SPACE, LINEAR_AXIS_INNER_OFFSET_TOP } from "../../../../utils/constant.js";
2
1
  import { createNumFormatter } from "../../../../utils/index.js";
3
2
  import { isEmpty, isNullish } from "remeda";
4
3
  import { createLinearFormat } from "./format/linearFormat.js";
5
4
  import { defaultTitleText } from "./title/defaultTitleText.js";
5
+ import { linearAxisStyle } from "./linearAxisStyle.js";
6
6
  const yLinearSecondary = (spec, context)=>{
7
7
  const result = {
8
8
  ...spec
@@ -29,66 +29,25 @@ const yLinearSecondary = (spec, context)=>{
29
29
  ];
30
30
  const seriesId = alignTicksConfig ? seriesIds : seriesIds[1];
31
31
  if (!result.axes) result.axes = [];
32
- const { visible = true, label, tick, title, grid, line, zero, nice, inverse, max, min, log, logBase = 10, numFormat = {}, autoFormat } = yAxisConfig ?? {};
32
+ const { autoFormat, numFormat = {} } = yAxisConfig ?? {};
33
33
  const formatter = createNumFormatter(numFormat);
34
- const linearAxis = {
35
- visible: isEmptySecondary ? false : visible,
34
+ const formatMethod = (value)=>createLinearFormat(value, autoFormat, numFormat, formatter);
35
+ const titleText = yAxisConfig?.title?.titleText || defaultTitleText(measures, dimensions, encoding.y);
36
+ const baseStyle = linearAxisStyle({
37
+ ...yAxisConfig,
38
+ orient: 'right',
39
+ formatMethod,
40
+ titleText,
36
41
  id,
37
42
  seriesId,
38
- sync,
39
- type: log ? 'log' : 'linear',
40
- base: logBase,
41
- orient: 'right',
42
- nice,
43
- zero: log ? false : zero,
44
- inverse,
45
- max,
46
- min,
47
- label: {
48
- space: AXIS_LABEL_SPACE,
49
- visible: label?.visible,
50
- formatMethod: (value)=>createLinearFormat(value, autoFormat, numFormat, formatter),
51
- style: {
52
- fill: label?.labelColor,
53
- angle: label?.labelAngle,
54
- fontSize: label?.labelFontSize,
55
- fontWeight: label?.labelFontWeight
56
- }
57
- },
58
- title: {
59
- visible: title?.visible,
60
- text: title?.titleText || defaultTitleText(measures, dimensions, encoding.y),
61
- style: {
62
- fill: title?.titleColor,
63
- fontSize: title?.titleFontSize,
64
- fontWeight: title?.titleFontWeight
65
- }
66
- },
67
- tick: {
68
- visible: tick?.visible,
69
- tickSize: tick?.tickSize,
70
- inside: tick?.tickInside,
71
- style: {
72
- stroke: tick?.tickColor
73
- }
74
- },
43
+ sync
44
+ });
45
+ const linearAxis = {
46
+ ...baseStyle,
47
+ visible: isEmptySecondary ? false : yAxisConfig?.visible ?? true,
75
48
  grid: {
76
- visible: onlySecondary ? true : grid?.visible,
77
- style: {
78
- lineWidth: grid?.gridWidth,
79
- stroke: grid?.gridColor,
80
- lineDash: grid?.gridLineDash
81
- }
82
- },
83
- domainLine: {
84
- visible: line?.visible,
85
- style: {
86
- lineWidth: line?.lineWidth,
87
- stroke: line?.lineColor
88
- }
89
- },
90
- innerOffset: {
91
- top: LINEAR_AXIS_INNER_OFFSET_TOP
49
+ ...baseStyle.grid,
50
+ visible: onlySecondary ? true : yAxisConfig?.grid?.visible
92
51
  }
93
52
  };
94
53
  result.axes = [
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/chart/pipes/axes/yLinearSecondary.js","sources":["../../../../../../../src/pipeline/spec/chart/pipes/axes/yLinearSecondary.ts"],"sourcesContent":["import type { ISpec } from '@visactor/vchart'\nimport { AXIS_LABEL_SPACE, LINEAR_AXIS_INNER_OFFSET_TOP } from '../../../../utils/constant'\nimport { createNumFormatter } from '../../../../utils'\nimport type { VChartSpecPipe, YLinearAxis } from 'src/types'\nimport { isEmpty, isNullish } from 'remeda'\nimport { createLinearFormat } from './format/linearFormat'\nimport { defaultTitleText } from './title/defaultTitleText'\n\nexport const yLinearSecondary: VChartSpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { datasetReshapeInfo, measures, dimensions, encoding } = advancedVSeed\n const { index, id: reshapeInfoId, foldInfoList } = datasetReshapeInfo[0]\n // TODO: default config missing\n const secondaryYAxis = advancedVSeed.config?.[chartType as 'dualAxis']?.secondaryYAxis as YLinearAxis | YLinearAxis[]\n const yAxisConfig = Array.isArray(secondaryYAxis) ? secondaryYAxis[index] || secondaryYAxis[0] : secondaryYAxis\n const alignTicks = advancedVSeed.config?.[chartType as 'dualAxis']?.alignTicks as boolean | boolean[]\n const alignTicksConfig = Array.isArray(alignTicks) ? alignTicks[index] || alignTicks[0] : alignTicks\n\n if (isNullish(foldInfoList?.[1])) {\n return result\n }\n\n const isEmptySecondary = isEmpty(foldInfoList?.[1].foldMap)\n const onlySecondary = isEmpty(foldInfoList?.[0].foldMap) && !isEmptySecondary\n\n const sync = {\n axisId: `${reshapeInfoId}-primary-axis`,\n zeroAlign: true,\n }\n\n const id = `${reshapeInfoId}-secondary-axis`\n const seriesIds = [`${reshapeInfoId}-primary-series`, `${reshapeInfoId}-secondary-series`]\n const seriesId = alignTicksConfig ? seriesIds : seriesIds[1]\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\n zero,\n nice,\n inverse,\n max,\n min,\n log,\n logBase = 10,\n numFormat = {},\n autoFormat,\n } = yAxisConfig ?? {}\n\n const formatter = createNumFormatter(numFormat)\n\n const linearAxis = {\n visible: isEmptySecondary ? false : visible,\n id,\n seriesId,\n sync,\n type: log ? 'log' : 'linear',\n base: logBase,\n orient: 'right',\n nice,\n zero: log ? false : zero,\n inverse,\n max,\n min,\n label: {\n space: AXIS_LABEL_SPACE,\n visible: label?.visible,\n formatMethod: (value: string) => {\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.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: onlySecondary ? true : 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 top: LINEAR_AXIS_INNER_OFFSET_TOP,\n // bottom: LINEAR_AXIS_INNER_OFFSET_TOP,\n },\n }\n\n result.axes = [...result.axes, linearAxis] as ISpec['axes']\n\n return result\n}\n"],"names":["yLinearSecondary","spec","context","result","advancedVSeed","vseed","chartType","datasetReshapeInfo","measures","dimensions","encoding","index","reshapeInfoId","foldInfoList","secondaryYAxis","yAxisConfig","Array","alignTicks","alignTicksConfig","isNullish","isEmptySecondary","isEmpty","onlySecondary","sync","id","seriesIds","seriesId","visible","label","tick","title","grid","line","zero","nice","inverse","max","min","log","logBase","numFormat","autoFormat","formatter","createNumFormatter","linearAxis","AXIS_LABEL_SPACE","value","createLinearFormat","defaultTitleText","LINEAR_AXIS_INNER_OFFSET_TOP"],"mappings":"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"}
1
+ {"version":3,"file":"pipeline/spec/chart/pipes/axes/yLinearSecondary.js","sources":["../../../../../../../src/pipeline/spec/chart/pipes/axes/yLinearSecondary.ts"],"sourcesContent":["import type { ISpec } from '@visactor/vchart'\nimport { createNumFormatter } from '../../../../utils'\nimport type { VChartSpecPipe, YLinearAxis } from 'src/types'\nimport { isEmpty, isNullish } from 'remeda'\nimport { createLinearFormat } from './format/linearFormat'\nimport { defaultTitleText } from './title/defaultTitleText'\nimport { linearAxisStyle } from './linearAxisStyle'\n\nexport const yLinearSecondary: VChartSpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { datasetReshapeInfo, measures, dimensions, encoding } = advancedVSeed\n const { index, id: reshapeInfoId, foldInfoList } = datasetReshapeInfo[0]\n // TODO: default config missing\n const secondaryYAxis = advancedVSeed.config?.[chartType as 'dualAxis']?.secondaryYAxis as YLinearAxis | YLinearAxis[]\n const yAxisConfig = Array.isArray(secondaryYAxis) ? secondaryYAxis[index] || secondaryYAxis[0] : secondaryYAxis\n const alignTicks = advancedVSeed.config?.[chartType as 'dualAxis']?.alignTicks as boolean | boolean[]\n const alignTicksConfig = Array.isArray(alignTicks) ? alignTicks[index] || alignTicks[0] : alignTicks\n\n if (isNullish(foldInfoList?.[1])) {\n return result\n }\n\n const isEmptySecondary = isEmpty(foldInfoList?.[1].foldMap)\n const onlySecondary = isEmpty(foldInfoList?.[0].foldMap) && !isEmptySecondary\n\n const sync = {\n axisId: `${reshapeInfoId}-primary-axis`,\n zeroAlign: true,\n }\n\n const id = `${reshapeInfoId}-secondary-axis`\n const seriesIds = [`${reshapeInfoId}-primary-series`, `${reshapeInfoId}-secondary-series`]\n const seriesId = alignTicksConfig ? seriesIds : seriesIds[1]\n if (!result.axes) {\n result.axes = []\n }\n\n const { autoFormat, numFormat = {} } = yAxisConfig ?? {}\n\n const formatter = createNumFormatter(numFormat)\n\n const formatMethod = (value: string) => {\n return createLinearFormat(value, autoFormat, numFormat, formatter)\n }\n\n const titleText = yAxisConfig?.title?.titleText || defaultTitleText(measures, dimensions, encoding.y as string[])\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const baseStyle = linearAxisStyle({\n ...yAxisConfig,\n orient: 'right',\n formatMethod,\n titleText,\n id,\n seriesId,\n sync,\n })\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const linearAxis = {\n ...baseStyle,\n visible: isEmptySecondary ? false : (yAxisConfig?.visible ?? true),\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n grid: {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n ...baseStyle.grid,\n visible: onlySecondary ? true : yAxisConfig?.grid?.visible,\n },\n }\n\n result.axes = [...result.axes, linearAxis] as ISpec['axes']\n\n return result\n}\n"],"names":["yLinearSecondary","spec","context","result","advancedVSeed","vseed","chartType","datasetReshapeInfo","measures","dimensions","encoding","index","reshapeInfoId","foldInfoList","secondaryYAxis","yAxisConfig","Array","alignTicks","alignTicksConfig","isNullish","isEmptySecondary","isEmpty","onlySecondary","sync","id","seriesIds","seriesId","autoFormat","numFormat","formatter","createNumFormatter","formatMethod","value","createLinearFormat","titleText","defaultTitleText","baseStyle","linearAxisStyle","linearAxis"],"mappings":";;;;;AAQO,MAAMA,mBAAmC,CAACC,MAAMC;IACrD,MAAMC,SAAS;QAAE,GAAGF,IAAI;IAAC;IACzB,MAAM,EAAEG,aAAa,EAAEC,KAAK,EAAE,GAAGH;IACjC,MAAM,EAAEI,SAAS,EAAE,GAAGD;IACtB,MAAM,EAAEE,kBAAkB,EAAEC,QAAQ,EAAEC,UAAU,EAAEC,QAAQ,EAAE,GAAGN;IAC/D,MAAM,EAAEO,KAAK,EAAE,IAAIC,aAAa,EAAEC,YAAY,EAAE,GAAGN,kBAAkB,CAAC,EAAE;IAExE,MAAMO,iBAAiBV,cAAc,MAAM,EAAE,CAACE,UAAwB,EAAE;IACxE,MAAMS,cAAcC,MAAM,OAAO,CAACF,kBAAkBA,cAAc,CAACH,MAAM,IAAIG,cAAc,CAAC,EAAE,GAAGA;IACjG,MAAMG,aAAab,cAAc,MAAM,EAAE,CAACE,UAAwB,EAAE;IACpE,MAAMY,mBAAmBF,MAAM,OAAO,CAACC,cAAcA,UAAU,CAACN,MAAM,IAAIM,UAAU,CAAC,EAAE,GAAGA;IAE1F,IAAIE,UAAUN,cAAc,CAAC,EAAE,GAC7B,OAAOV;IAGT,MAAMiB,mBAAmBC,QAAQR,cAAc,CAAC,EAAE,CAAC;IACnD,MAAMS,gBAAgBD,QAAQR,cAAc,CAAC,EAAE,CAAC,YAAY,CAACO;IAE7D,MAAMG,OAAO;QACX,QAAQ,GAAGX,cAAc,aAAa,CAAC;QACvC,WAAW;IACb;IAEA,MAAMY,KAAK,GAAGZ,cAAc,eAAe,CAAC;IAC5C,MAAMa,YAAY;QAAC,GAAGb,cAAc,eAAe,CAAC;QAAE,GAAGA,cAAc,iBAAiB,CAAC;KAAC;IAC1F,MAAMc,WAAWR,mBAAmBO,YAAYA,SAAS,CAAC,EAAE;IAC5D,IAAI,CAACtB,OAAO,IAAI,EACdA,OAAO,IAAI,GAAG,EAAE;IAGlB,MAAM,EAAEwB,UAAU,EAAEC,YAAY,CAAC,CAAC,EAAE,GAAGb,eAAe,CAAC;IAEvD,MAAMc,YAAYC,mBAAmBF;IAErC,MAAMG,eAAe,CAACC,QACbC,mBAAmBD,OAAOL,YAAYC,WAAWC;IAG1D,MAAMK,YAAYnB,aAAa,OAAO,aAAaoB,iBAAiB3B,UAAUC,YAAYC,SAAS,CAAC;IAGpG,MAAM0B,YAAYC,gBAAgB;QAChC,GAAGtB,WAAW;QACd,QAAQ;QACRgB;QACAG;QACAV;QACAE;QACAH;IACF;IAGA,MAAMe,aAAa;QACjB,GAAGF,SAAS;QACZ,SAAShB,mBAAmB,QAASL,aAAa,WAAW;QAE7D,MAAM;YAEJ,GAAGqB,UAAU,IAAI;YACjB,SAASd,gBAAgB,OAAOP,aAAa,MAAM;QACrD;IACF;IAEAZ,OAAO,IAAI,GAAG;WAAIA,OAAO,IAAI;QAAEmC;KAAW;IAE1C,OAAOnC;AACT"}
@@ -1,4 +1,8 @@
1
1
  import { DUAL_AXIS_CHART_COLUMN_Z_INDEX, DUAL_AXIS_CHART_NON_COLUMN_Z_INDEX } from "../../../../utils/constant.js";
2
+ const DEFAULT_DUAL_CHART_TYPE = {
3
+ primary: 'column',
4
+ secondary: 'line'
5
+ };
2
6
  const dualChartTypePrimary = (spec, context)=>{
3
7
  const result = {
4
8
  ...spec,
@@ -8,12 +12,9 @@ const dualChartTypePrimary = (spec, context)=>{
8
12
  const { chartType } = vseed;
9
13
  const { datasetReshapeInfo } = advancedVSeed;
10
14
  const index = datasetReshapeInfo[0].index;
11
- const config = advancedVSeed.config?.[chartType]?.dualChartType || {
12
- primary: 'column',
13
- secondary: 'line'
14
- };
15
- const primary = Array.isArray(config) ? config[index].primary || config[0].primary : config.primary;
16
- const secondary = Array.isArray(config) ? config[index].secondary || config[0].secondary : config.secondary;
15
+ const config = advancedVSeed.config?.[chartType]?.dualChartType || DEFAULT_DUAL_CHART_TYPE;
16
+ const primary = (Array.isArray(config) ? config[index]?.primary || config[0]?.primary : config.primary) ?? DEFAULT_DUAL_CHART_TYPE.primary;
17
+ const secondary = (Array.isArray(config) ? config[index]?.secondary || config[0]?.secondary : config.secondary) ?? DEFAULT_DUAL_CHART_TYPE.secondary;
17
18
  const bothColumn = 'column' === primary && 'column' === secondary;
18
19
  const type = bothColumn ? 'columnParallel' : primary;
19
20
  switch(type){
@@ -64,13 +65,10 @@ const dualChartTypeSecondary = (spec, context)=>{
64
65
  const { advancedVSeed, vseed } = context;
65
66
  const { chartType } = vseed;
66
67
  const { datasetReshapeInfo } = advancedVSeed;
67
- const config = advancedVSeed.config?.[chartType]?.dualChartType || {
68
- primary: 'column',
69
- secondary: 'line'
70
- };
68
+ const config = advancedVSeed.config?.[chartType]?.dualChartType || DEFAULT_DUAL_CHART_TYPE;
71
69
  const index = datasetReshapeInfo[0].index;
72
- const primary = Array.isArray(config) ? config[index].primary || config[0].primary : config.primary;
73
- const secondary = Array.isArray(config) ? config[index].secondary || config[0].secondary : config.secondary;
70
+ const primary = (Array.isArray(config) ? config[index]?.primary || config[0]?.primary : config.primary) ?? DEFAULT_DUAL_CHART_TYPE.primary;
71
+ const secondary = (Array.isArray(config) ? config[index]?.secondary || config[0]?.secondary : config.secondary) ?? DEFAULT_DUAL_CHART_TYPE.secondary;
74
72
  const bothColumn = 'column' === primary && 'column' === secondary;
75
73
  const type = bothColumn ? 'columnParallel' : secondary;
76
74
  switch(type){
@@ -109,7 +107,7 @@ const dualChartTypeSecondary = (spec, context)=>{
109
107
  result.type = 'scatter';
110
108
  break;
111
109
  default:
112
- result.type = secondary;
110
+ result.type = secondary ?? DEFAULT_DUAL_CHART_TYPE.secondary;
113
111
  }
114
112
  return result;
115
113
  };
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/chart/pipes/dual/dualChartType.js","sources":["../../../../../../../src/pipeline/spec/chart/pipes/dual/dualChartType.ts"],"sourcesContent":["import type { IBarSeriesSpec, ISeriesSpec } from '@visactor/vchart'\nimport { DUAL_AXIS_CHART_COLUMN_Z_INDEX, DUAL_AXIS_CHART_NON_COLUMN_Z_INDEX } from 'src/pipeline/utils/constant'\nimport type { DualChartType, VChartSpecPipe } from 'src/types'\n\nexport const dualChartTypePrimary: VChartSpecPipe = (spec, context) => {\n const result = { ...spec, zIndex: DUAL_AXIS_CHART_NON_COLUMN_Z_INDEX } as ISeriesSpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { datasetReshapeInfo } = advancedVSeed\n const index = datasetReshapeInfo[0].index\n\n const config =\n advancedVSeed.config?.[chartType as 'dualAxis']?.dualChartType ||\n ({\n primary: 'column',\n secondary: 'line',\n } as DualChartType)\n\n const primary = Array.isArray(config) ? config[index].primary || config[0].primary : config.primary\n const secondary = Array.isArray(config) ? config[index].secondary || config[0].secondary : config.secondary\n const bothColumn = primary === 'column' && secondary === 'column'\n const type = bothColumn ? 'columnParallel' : primary\n switch (type) {\n case 'line': {\n result.type = 'line'\n break\n }\n case 'column': {\n result.type = 'bar'\n result.zIndex = DUAL_AXIS_CHART_COLUMN_Z_INDEX\n break\n }\n case 'columnParallel': {\n const columnSpec = result as IBarSeriesSpec\n if (Array.isArray(columnSpec.xField)) {\n columnSpec.xField.push(datasetReshapeInfo[0].unfoldInfo.encodingDetail)\n } else if (columnSpec.xField) {\n columnSpec.xField = [columnSpec.xField, datasetReshapeInfo[0].unfoldInfo.encodingDetail]\n }\n columnSpec.type = 'bar'\n result.zIndex = DUAL_AXIS_CHART_COLUMN_Z_INDEX\n break\n }\n // @ts-expect-error 'columnPercent' 和 'areaPercent' 会改变轴值域为[0,1], VTable不支持.\n case 'columnPercent': {\n result.type = 'bar'\n result.percent = true\n result.zIndex = DUAL_AXIS_CHART_COLUMN_Z_INDEX\n break\n }\n case 'area': {\n result.type = 'area'\n break\n }\n // @ts-expect-error 'columnPercent' 和 'areaPercent' 会改变轴值域为[0,1], VTable不支持.\n case 'areaPercent': {\n result.type = 'area'\n result.percent = true\n break\n }\n case 'scatter': {\n result.type = 'scatter'\n break\n }\n default:\n result.type = primary\n }\n\n return result\n}\n\nexport const dualChartTypeSecondary: VChartSpecPipe = (spec, context) => {\n const result = { ...spec, zIndex: DUAL_AXIS_CHART_NON_COLUMN_Z_INDEX } as ISeriesSpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { datasetReshapeInfo } = advancedVSeed\n const config =\n advancedVSeed.config?.[chartType as 'dualAxis']?.dualChartType ||\n ({\n primary: 'column',\n secondary: 'line',\n } as DualChartType)\n\n const index = datasetReshapeInfo[0].index\n const primary = Array.isArray(config) ? config[index].primary || config[0].primary : config.primary\n const secondary = Array.isArray(config) ? config[index].secondary || config[0].secondary : config.secondary\n const bothColumn = primary === 'column' && secondary === 'column'\n const type = bothColumn ? 'columnParallel' : secondary\n\n switch (type) {\n case 'line': {\n result.type = 'line'\n break\n }\n case 'column': {\n result.type = 'bar'\n result.zIndex = DUAL_AXIS_CHART_COLUMN_Z_INDEX\n break\n }\n case 'columnParallel': {\n const columnSpec = result as IBarSeriesSpec\n if (Array.isArray(columnSpec.xField)) {\n columnSpec.xField.push(datasetReshapeInfo[0].unfoldInfo.encodingDetail)\n } else if (columnSpec.xField) {\n columnSpec.xField = [columnSpec.xField, datasetReshapeInfo[0].unfoldInfo.encodingDetail]\n }\n columnSpec.type = 'bar'\n result.zIndex = DUAL_AXIS_CHART_COLUMN_Z_INDEX\n break\n }\n // @ts-expect-error 'columnPercent' 和 'areaPercent' 会改变轴值域为[0,1], VTable不支持.\n case 'columnPercent': {\n result.type = 'bar'\n result.percent = true\n result.zIndex = DUAL_AXIS_CHART_COLUMN_Z_INDEX\n break\n }\n case 'area': {\n result.type = 'area'\n break\n }\n // @ts-expect-error 'columnPercent' 和 'areaPercent' 会改变轴值域为[0,1], VTable不支持.\n case 'areaPercent': {\n result.type = 'area'\n result.percent = true\n break\n }\n case 'scatter': {\n result.type = 'scatter'\n break\n }\n default:\n result.type = secondary\n }\n\n return result\n}\n"],"names":["dualChartTypePrimary","spec","context","result","DUAL_AXIS_CHART_NON_COLUMN_Z_INDEX","advancedVSeed","vseed","chartType","datasetReshapeInfo","index","config","primary","Array","secondary","bothColumn","type","DUAL_AXIS_CHART_COLUMN_Z_INDEX","columnSpec","dualChartTypeSecondary"],"mappings":"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"}
1
+ {"version":3,"file":"pipeline/spec/chart/pipes/dual/dualChartType.js","sources":["../../../../../../../src/pipeline/spec/chart/pipes/dual/dualChartType.ts"],"sourcesContent":["import type { IBarSeriesSpec, ISeriesSpec } from '@visactor/vchart'\nimport { DUAL_AXIS_CHART_COLUMN_Z_INDEX, DUAL_AXIS_CHART_NON_COLUMN_Z_INDEX } from 'src/pipeline/utils/constant'\nimport type { DualChartType, VChartSpecPipe } from 'src/types'\n\nconst DEFAULT_DUAL_CHART_TYPE: DualChartType = {\n primary: 'column',\n secondary: 'line',\n}\n\nexport const dualChartTypePrimary: VChartSpecPipe = (spec, context) => {\n const result = { ...spec, zIndex: DUAL_AXIS_CHART_NON_COLUMN_Z_INDEX } as ISeriesSpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { datasetReshapeInfo } = advancedVSeed\n const index = datasetReshapeInfo[0].index\n\n const config = advancedVSeed.config?.[chartType as 'dualAxis']?.dualChartType || DEFAULT_DUAL_CHART_TYPE\n\n const primary =\n (Array.isArray(config) ? config[index]?.primary || config[0]?.primary : config.primary) ??\n DEFAULT_DUAL_CHART_TYPE.primary\n const secondary =\n (Array.isArray(config) ? config[index]?.secondary || config[0]?.secondary : config.secondary) ??\n DEFAULT_DUAL_CHART_TYPE.secondary\n const bothColumn = primary === 'column' && secondary === 'column'\n const type = bothColumn ? 'columnParallel' : primary\n switch (type) {\n case 'line': {\n result.type = 'line'\n break\n }\n case 'column': {\n result.type = 'bar'\n result.zIndex = DUAL_AXIS_CHART_COLUMN_Z_INDEX\n break\n }\n case 'columnParallel': {\n const columnSpec = result as IBarSeriesSpec\n if (Array.isArray(columnSpec.xField)) {\n columnSpec.xField.push(datasetReshapeInfo[0].unfoldInfo.encodingDetail)\n } else if (columnSpec.xField) {\n columnSpec.xField = [columnSpec.xField, datasetReshapeInfo[0].unfoldInfo.encodingDetail]\n }\n columnSpec.type = 'bar'\n result.zIndex = DUAL_AXIS_CHART_COLUMN_Z_INDEX\n break\n }\n // @ts-expect-error 'columnPercent' 和 'areaPercent' 会改变轴值域为[0,1], VTable不支持.\n case 'columnPercent': {\n result.type = 'bar'\n result.percent = true\n result.zIndex = DUAL_AXIS_CHART_COLUMN_Z_INDEX\n break\n }\n case 'area': {\n result.type = 'area'\n break\n }\n // @ts-expect-error 'columnPercent' 和 'areaPercent' 会改变轴值域为[0,1], VTable不支持.\n case 'areaPercent': {\n result.type = 'area'\n result.percent = true\n break\n }\n case 'scatter': {\n result.type = 'scatter'\n break\n }\n default:\n result.type = primary\n }\n\n return result\n}\n\nexport const dualChartTypeSecondary: VChartSpecPipe = (spec, context) => {\n const result = { ...spec, zIndex: DUAL_AXIS_CHART_NON_COLUMN_Z_INDEX } as ISeriesSpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { datasetReshapeInfo } = advancedVSeed\n const config = advancedVSeed.config?.[chartType as 'dualAxis']?.dualChartType || DEFAULT_DUAL_CHART_TYPE\n\n const index = datasetReshapeInfo[0].index\n const primary =\n (Array.isArray(config) ? config[index]?.primary || config[0]?.primary : config.primary) ??\n DEFAULT_DUAL_CHART_TYPE.primary\n const secondary =\n (Array.isArray(config) ? config[index]?.secondary || config[0]?.secondary : config.secondary) ??\n DEFAULT_DUAL_CHART_TYPE.secondary\n const bothColumn = primary === 'column' && secondary === 'column'\n const type = bothColumn ? 'columnParallel' : secondary\n\n switch (type) {\n case 'line': {\n result.type = 'line'\n break\n }\n case 'column': {\n result.type = 'bar'\n result.zIndex = DUAL_AXIS_CHART_COLUMN_Z_INDEX\n break\n }\n case 'columnParallel': {\n const columnSpec = result as IBarSeriesSpec\n if (Array.isArray(columnSpec.xField)) {\n columnSpec.xField.push(datasetReshapeInfo[0].unfoldInfo.encodingDetail)\n } else if (columnSpec.xField) {\n columnSpec.xField = [columnSpec.xField, datasetReshapeInfo[0].unfoldInfo.encodingDetail]\n }\n columnSpec.type = 'bar'\n result.zIndex = DUAL_AXIS_CHART_COLUMN_Z_INDEX\n break\n }\n // @ts-expect-error 'columnPercent' 和 'areaPercent' 会改变轴值域为[0,1], VTable不支持.\n case 'columnPercent': {\n result.type = 'bar'\n result.percent = true\n result.zIndex = DUAL_AXIS_CHART_COLUMN_Z_INDEX\n break\n }\n case 'area': {\n result.type = 'area'\n break\n }\n // @ts-expect-error 'columnPercent' 和 'areaPercent' 会改变轴值域为[0,1], VTable不支持.\n case 'areaPercent': {\n result.type = 'area'\n result.percent = true\n break\n }\n case 'scatter': {\n result.type = 'scatter'\n break\n }\n default:\n result.type = secondary ?? DEFAULT_DUAL_CHART_TYPE.secondary\n }\n\n return result\n}\n"],"names":["DEFAULT_DUAL_CHART_TYPE","dualChartTypePrimary","spec","context","result","DUAL_AXIS_CHART_NON_COLUMN_Z_INDEX","advancedVSeed","vseed","chartType","datasetReshapeInfo","index","config","primary","Array","secondary","bothColumn","type","DUAL_AXIS_CHART_COLUMN_Z_INDEX","columnSpec","dualChartTypeSecondary"],"mappings":"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"}
@@ -1,19 +1,21 @@
1
1
  import { isDeepEqual } from "remeda";
2
2
  import { LowerWhisker, MeasureId, MedianMeasureId, OutliersMeasureId, Q1MeasureValue, Q3MeasureValue, UpperWhisker } from "../../../../../dataReshape/constant.js";
3
+ import { isPivotChart, revisedBoxPlotFieldKey } from "../../../../utils/index.js";
3
4
  const initBoxplot = (spec, context)=>{
4
5
  const result = {
5
6
  ...spec
6
7
  };
7
- const { advancedVSeed } = context;
8
+ const { advancedVSeed, vseed } = context;
8
9
  const { datasetReshapeInfo, encoding } = advancedVSeed;
9
- const { unfoldInfo } = datasetReshapeInfo[0];
10
+ const { unfoldInfo, id } = datasetReshapeInfo[0];
11
+ const usePivotChart = isPivotChart(vseed);
10
12
  result.type = 'boxPlot';
11
- result.minField = LowerWhisker;
12
- result.maxField = UpperWhisker;
13
- result.q1Field = Q1MeasureValue;
14
- result.medianField = MedianMeasureId;
15
- result.q3Field = Q3MeasureValue;
16
- result.outliersField = OutliersMeasureId;
13
+ result.minField = revisedBoxPlotFieldKey(LowerWhisker, id, usePivotChart);
14
+ result.maxField = revisedBoxPlotFieldKey(UpperWhisker, id, usePivotChart);
15
+ result.q1Field = revisedBoxPlotFieldKey(Q1MeasureValue, id, usePivotChart);
16
+ result.medianField = revisedBoxPlotFieldKey(MedianMeasureId, id, usePivotChart);
17
+ result.q3Field = revisedBoxPlotFieldKey(Q3MeasureValue, id, usePivotChart);
18
+ result.outliersField = revisedBoxPlotFieldKey(OutliersMeasureId, id, usePivotChart);
17
19
  result.xField = [
18
20
  unfoldInfo.encodingX
19
21
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/chart/pipes/init/boxplot.js","sources":["../../../../../../../src/pipeline/spec/chart/pipes/init/boxplot.ts"],"sourcesContent":["import type { IBoxPlotChartSpec } from '@visactor/vchart'\nimport type { VChartSpecPipe } from 'src/types'\nimport { isDeepEqual } from 'remeda'\nimport {\n LowerWhisker,\n MeasureId,\n MedianMeasureId,\n OutliersMeasureId,\n Q1MeasureValue,\n Q3MeasureValue,\n UpperWhisker,\n} from 'src/dataReshape/constant'\n\nexport const initBoxplot: VChartSpecPipe = (spec, context) => {\n const result = { ...spec } as IBoxPlotChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo, encoding } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n\n result.type = 'boxPlot'\n // 默认应该是盒须的位置\n result.minField = LowerWhisker\n result.maxField = UpperWhisker\n result.q1Field = Q1MeasureValue\n result.medianField = MedianMeasureId\n result.q3Field = Q3MeasureValue\n result.outliersField = OutliersMeasureId\n result.xField = [unfoldInfo.encodingX]\n result.seriesField = unfoldInfo.encodingColorId\n\n const sameDimensionsMode = isDeepEqual(encoding.x, encoding.color)\n\n if (!sameDimensionsMode) {\n result.xField.push(unfoldInfo.encodingColor)\n\n if (encoding.color?.[0] === MeasureId && encoding.value?.length === 1) {\n result.xField.pop()\n }\n }\n\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n return result\n}\n"],"names":["initBoxplot","spec","context","result","advancedVSeed","datasetReshapeInfo","encoding","unfoldInfo","LowerWhisker","UpperWhisker","Q1MeasureValue","MedianMeasureId","Q3MeasureValue","OutliersMeasureId","sameDimensionsMode","isDeepEqual","MeasureId"],"mappings":";;AAaO,MAAMA,cAA8B,CAACC,MAAMC;IAChD,MAAMC,SAAS;QAAE,GAAGF,IAAI;IAAC;IACzB,MAAM,EAAEG,aAAa,EAAE,GAAGF;IAC1B,MAAM,EAAEG,kBAAkB,EAAEC,QAAQ,EAAE,GAAGF;IACzC,MAAM,EAAEG,UAAU,EAAE,GAAGF,kBAAkB,CAAC,EAAE;IAE5CF,OAAO,IAAI,GAAG;IAEdA,OAAO,QAAQ,GAAGK;IAClBL,OAAO,QAAQ,GAAGM;IAClBN,OAAO,OAAO,GAAGO;IACjBP,OAAO,WAAW,GAAGQ;IACrBR,OAAO,OAAO,GAAGS;IACjBT,OAAO,aAAa,GAAGU;IACvBV,OAAO,MAAM,GAAG;QAACI,WAAW,SAAS;KAAC;IACtCJ,OAAO,WAAW,GAAGI,WAAW,eAAe;IAE/C,MAAMO,qBAAqBC,YAAYT,SAAS,CAAC,EAAEA,SAAS,KAAK;IAEjE,IAAI,CAACQ,oBAAoB;QACvBX,OAAO,MAAM,CAAC,IAAI,CAACI,WAAW,aAAa;QAE3C,IAAID,SAAS,KAAK,EAAE,CAAC,EAAE,KAAKU,aAAaV,SAAS,KAAK,EAAE,WAAW,GAClEH,OAAO,MAAM,CAAC,GAAG;IAErB;IAEAA,OAAO,OAAO,GAAG;IACjBA,OAAO,MAAM,GAAG;QACd;YACE,MAAM;QACR;KACD;IACDA,OAAO,SAAS,GAAG;IACnB,OAAOA;AACT"}
1
+ {"version":3,"file":"pipeline/spec/chart/pipes/init/boxplot.js","sources":["../../../../../../../src/pipeline/spec/chart/pipes/init/boxplot.ts"],"sourcesContent":["import { type IBoxPlotChartSpec } from '@visactor/vchart'\nimport type { VChartSpecPipe } from 'src/types'\nimport { isDeepEqual } from 'remeda'\nimport {\n LowerWhisker,\n MeasureId,\n MedianMeasureId,\n OutliersMeasureId,\n Q1MeasureValue,\n Q3MeasureValue,\n UpperWhisker,\n} from 'src/dataReshape/constant'\nimport { isPivotChart, revisedBoxPlotFieldKey } from 'src/pipeline/utils'\n\nexport const initBoxplot: VChartSpecPipe = (spec, context) => {\n const result = { ...spec } as IBoxPlotChartSpec\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo, encoding } = advancedVSeed\n const { unfoldInfo, id } = datasetReshapeInfo[0]\n\n const usePivotChart = isPivotChart(vseed)\n result.type = 'boxPlot'\n // 默认应该是盒须的位置\n result.minField = revisedBoxPlotFieldKey(LowerWhisker, id, usePivotChart)\n result.maxField = revisedBoxPlotFieldKey(UpperWhisker, id, usePivotChart)\n result.q1Field = revisedBoxPlotFieldKey(Q1MeasureValue, id, usePivotChart)\n result.medianField = revisedBoxPlotFieldKey(MedianMeasureId, id, usePivotChart)\n result.q3Field = revisedBoxPlotFieldKey(Q3MeasureValue, id, usePivotChart)\n result.outliersField = revisedBoxPlotFieldKey(OutliersMeasureId, id, usePivotChart)\n result.xField = [unfoldInfo.encodingX]\n result.seriesField = unfoldInfo.encodingColorId\n\n const sameDimensionsMode = isDeepEqual(encoding.x, encoding.color)\n\n if (!sameDimensionsMode) {\n result.xField.push(unfoldInfo.encodingColor)\n\n if (encoding.color?.[0] === MeasureId && encoding.value?.length === 1) {\n result.xField.pop()\n }\n }\n\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n return result\n}\n"],"names":["initBoxplot","spec","context","result","advancedVSeed","vseed","datasetReshapeInfo","encoding","unfoldInfo","id","usePivotChart","isPivotChart","revisedBoxPlotFieldKey","LowerWhisker","UpperWhisker","Q1MeasureValue","MedianMeasureId","Q3MeasureValue","OutliersMeasureId","sameDimensionsMode","isDeepEqual","MeasureId"],"mappings":";;;AAcO,MAAMA,cAA8B,CAACC,MAAMC;IAChD,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,UAAU,EAAEC,EAAE,EAAE,GAAGH,kBAAkB,CAAC,EAAE;IAEhD,MAAMI,gBAAgBC,aAAaN;IACnCF,OAAO,IAAI,GAAG;IAEdA,OAAO,QAAQ,GAAGS,uBAAuBC,cAAcJ,IAAIC;IAC3DP,OAAO,QAAQ,GAAGS,uBAAuBE,cAAcL,IAAIC;IAC3DP,OAAO,OAAO,GAAGS,uBAAuBG,gBAAgBN,IAAIC;IAC5DP,OAAO,WAAW,GAAGS,uBAAuBI,iBAAiBP,IAAIC;IACjEP,OAAO,OAAO,GAAGS,uBAAuBK,gBAAgBR,IAAIC;IAC5DP,OAAO,aAAa,GAAGS,uBAAuBM,mBAAmBT,IAAIC;IACrEP,OAAO,MAAM,GAAG;QAACK,WAAW,SAAS;KAAC;IACtCL,OAAO,WAAW,GAAGK,WAAW,eAAe;IAE/C,MAAMW,qBAAqBC,YAAYb,SAAS,CAAC,EAAEA,SAAS,KAAK;IAEjE,IAAI,CAACY,oBAAoB;QACvBhB,OAAO,MAAM,CAAC,IAAI,CAACK,WAAW,aAAa;QAE3C,IAAID,SAAS,KAAK,EAAE,CAAC,EAAE,KAAKc,aAAad,SAAS,KAAK,EAAE,WAAW,GAClEJ,OAAO,MAAM,CAAC,GAAG;IAErB;IAEAA,OAAO,OAAO,GAAG;IACjBA,OAAO,MAAM,GAAG;QACd;YACE,MAAM;QACR;KACD;IACDA,OAAO,SAAS,GAAG;IACnB,OAAOA;AACT"}
@@ -12,18 +12,6 @@ const initHeatmap = (spec, context)=>{
12
12
  result.seriesField = unfoldInfo.encodingColorId;
13
13
  result.valueField = foldInfo.measureValue;
14
14
  result.padding = 0;
15
- result.axes = [
16
- {
17
- type: 'band',
18
- orient: 'left',
19
- bandPadding: 0
20
- },
21
- {
22
- type: 'band',
23
- orient: 'bottom',
24
- bandPadding: 0
25
- }
26
- ];
27
15
  result.region = [
28
16
  {
29
17
  clip: true
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/chart/pipes/init/heatmap.js","sources":["../../../../../../../src/pipeline/spec/chart/pipes/init/heatmap.ts"],"sourcesContent":["import type { IHeatmapChartSpec } from '@visactor/vchart'\nimport type { VChartSpecPipe } from 'src/types'\n\nexport const initHeatmap: VChartSpecPipe = (spec, context) => {\n const result = { ...spec } as IHeatmapChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo } = advancedVSeed\n\n const { unfoldInfo, foldInfo } = datasetReshapeInfo[0]\n\n result.type = 'heatmap'\n result.direction = 'vertical'\n result.xField = unfoldInfo.encodingX\n result.yField = unfoldInfo.encodingY\n result.seriesField = unfoldInfo.encodingColorId\n result.valueField = foldInfo.measureValue\n result.padding = 0\n result.axes = [\n {\n type: 'band',\n orient: 'left',\n bandPadding: 0,\n },\n {\n type: 'band',\n orient: 'bottom',\n bandPadding: 0,\n },\n ]\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n\n return result\n}\n"],"names":["initHeatmap","spec","context","result","advancedVSeed","datasetReshapeInfo","unfoldInfo","foldInfo"],"mappings":"AAGO,MAAMA,cAA8B,CAACC,MAAMC;IAChD,MAAMC,SAAS;QAAE,GAAGF,IAAI;IAAC;IACzB,MAAM,EAAEG,aAAa,EAAE,GAAGF;IAC1B,MAAM,EAAEG,kBAAkB,EAAE,GAAGD;IAE/B,MAAM,EAAEE,UAAU,EAAEC,QAAQ,EAAE,GAAGF,kBAAkB,CAAC,EAAE;IAEtDF,OAAO,IAAI,GAAG;IACdA,OAAO,SAAS,GAAG;IACnBA,OAAO,MAAM,GAAGG,WAAW,SAAS;IACpCH,OAAO,MAAM,GAAGG,WAAW,SAAS;IACpCH,OAAO,WAAW,GAAGG,WAAW,eAAe;IAC/CH,OAAO,UAAU,GAAGI,SAAS,YAAY;IACzCJ,OAAO,OAAO,GAAG;IACjBA,OAAO,IAAI,GAAG;QACZ;YACE,MAAM;YACN,QAAQ;YACR,aAAa;QACf;QACA;YACE,MAAM;YACN,QAAQ;YACR,aAAa;QACf;KACD;IACDA,OAAO,MAAM,GAAG;QACd;YACE,MAAM;QACR;KACD;IACDA,OAAO,SAAS,GAAG;IAEnB,OAAOA;AACT"}
1
+ {"version":3,"file":"pipeline/spec/chart/pipes/init/heatmap.js","sources":["../../../../../../../src/pipeline/spec/chart/pipes/init/heatmap.ts"],"sourcesContent":["import type { IHeatmapChartSpec } from '@visactor/vchart'\nimport type { VChartSpecPipe } from 'src/types'\n\nexport const initHeatmap: VChartSpecPipe = (spec, context) => {\n const result = { ...spec } as IHeatmapChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo } = advancedVSeed\n\n const { unfoldInfo, foldInfo } = datasetReshapeInfo[0]\n\n result.type = 'heatmap'\n result.direction = 'vertical'\n result.xField = unfoldInfo.encodingX\n result.yField = unfoldInfo.encodingY\n result.seriesField = unfoldInfo.encodingColorId\n result.valueField = foldInfo.measureValue\n result.padding = 0\n\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n\n return result\n}\n"],"names":["initHeatmap","spec","context","result","advancedVSeed","datasetReshapeInfo","unfoldInfo","foldInfo"],"mappings":"AAGO,MAAMA,cAA8B,CAACC,MAAMC;IAChD,MAAMC,SAAS;QAAE,GAAGF,IAAI;IAAC;IACzB,MAAM,EAAEG,aAAa,EAAE,GAAGF;IAC1B,MAAM,EAAEG,kBAAkB,EAAE,GAAGD;IAE/B,MAAM,EAAEE,UAAU,EAAEC,QAAQ,EAAE,GAAGF,kBAAkB,CAAC,EAAE;IAEtDF,OAAO,IAAI,GAAG;IACdA,OAAO,SAAS,GAAG;IACnBA,OAAO,MAAM,GAAGG,WAAW,SAAS;IACpCH,OAAO,MAAM,GAAGG,WAAW,SAAS;IACpCH,OAAO,WAAW,GAAGG,WAAW,eAAe;IAC/CH,OAAO,UAAU,GAAGI,SAAS,YAAY;IACzCJ,OAAO,OAAO,GAAG;IAEjBA,OAAO,MAAM,GAAG;QACd;YACE,MAAM;QACR;KACD;IACDA,OAAO,SAAS,GAAG;IAEnB,OAAOA;AACT"}
@@ -37,7 +37,7 @@ const generateMeasurePercent = (value, sum, formatter)=>{
37
37
  const buildLabel = (label, vseedMeasures = [], vseedDimensions = [], advancedVSeedDimensions, advancedVSeedMeasures, encoding, foldInfoList)=>{
38
38
  const { enable, wrap, showValue, showValuePercent, showDimension, labelOverlap, labelColorSmartInvert, labelStroke, labelColor, labelFontSize, labelFontWeight, labelBackgroundColor, labelPosition, autoFormat, numFormat = {} } = label;
39
39
  const hasDimLabelEncoding = vseedDimensions.some((item)=>encoding.label?.includes(item.id));
40
- const labelDims = uniqueBy(hasDimLabelEncoding ? vseedDimensions.filter((item)=>encoding.label?.includes(item.id)) : showDimension ? advancedVSeedDimensions.filter((d)=>d.id !== MeasureId) : [], (item)=>item.id);
40
+ const labelDims = uniqueBy(hasDimLabelEncoding ? vseedDimensions.filter((item)=>encoding.label?.includes(item.id)) : showDimension ? advancedVSeedDimensions.filter((d)=>d.id !== MeasureId && 'row' !== d.encoding && 'column' !== d.encoding) : [], (item)=>item.id);
41
41
  const labelMeas = uniqueBy(vseedMeasures.filter((item)=>encoding.label?.includes(item.id)), (item)=>item.id);
42
42
  const percentFormat = merge(numFormat, {
43
43
  type: 'percent'
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/chart/pipes/label/label.js","sources":["../../../../../../../src/pipeline/spec/chart/pipes/label/label.ts"],"sourcesContent":["import type { ILineChartSpec } from '@visactor/vchart'\nimport { createFormatter, createFormatterByMeasure, DATUM_HIDE_KEY, findMeasureById } from '../../../../utils'\nimport type {\n Datum,\n Dimension,\n Dimensions,\n Encoding,\n FoldInfo,\n Formatter,\n Label,\n Measure,\n Measures,\n NumFormat,\n VChartSpecPipe,\n} from 'src/types'\nimport { isNumber, merge, uniqueBy } from 'remeda'\nimport { selector } from 'src/dataSelector'\nimport { MeasureId } from 'src/dataReshape/constant'\n\nexport const label: VChartSpecPipe = (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\n const { label } = baseConfig\n\n result.label = buildLabel(\n label,\n vseed.measures,\n vseed.dimensions,\n advancedVSeed.dimensions,\n advancedVSeed.measures,\n encoding as Encoding,\n [foldInfo],\n ) as unknown as ILineChartSpec['label']\n\n return result\n}\n\nexport const generateMeasureValue = (\n value: number | string,\n measure: Measure,\n labelAutoFormat?: boolean,\n numFormat: NumFormat = {},\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 advancedVSeedDimensions: Dimensions,\n advancedVSeedMeasures: Measures,\n encoding: Encoding,\n foldInfoList: FoldInfo[],\n) => {\n const {\n enable,\n wrap,\n showValue,\n showValuePercent,\n showDimension,\n labelOverlap,\n labelColorSmartInvert,\n labelStroke,\n labelColor,\n labelFontSize,\n labelFontWeight,\n labelBackgroundColor,\n labelPosition,\n autoFormat,\n numFormat = {},\n } = label\n\n const hasDimLabelEncoding = vseedDimensions.some((item) => encoding.label?.includes(item.id))\n\n const labelDims = uniqueBy(\n hasDimLabelEncoding\n ? vseedDimensions.filter((item) => encoding.label?.includes(item.id))\n : showDimension\n ? advancedVSeedDimensions.filter((d) => d.id !== MeasureId)\n : [],\n (item: Dimension) => item.id,\n )\n\n const labelMeas = uniqueBy(\n vseedMeasures.filter((item) => encoding.label?.includes(item.id)),\n (item: Measure) => 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 dataFilter: (data: Datum[]) => {\n return data.filter((entry) => {\n return entry.data?.[DATUM_HIDE_KEY] !== true && selector(entry.data as Datum, label.selector, 'Or')\n })\n },\n formatMethod: (_: unknown, datum: Datum) => {\n const result = []\n\n const dimLabels = labelDims.map((item: Dimension) => {\n const id = item.id\n return datum[id] as number | string\n })\n\n const meaLabels = labelMeas.map((item: Measure) =>\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 if (measure) {\n const measureValueLabel = generateMeasureValue(\n datum[measureValue] as number | string,\n measure,\n autoFormat,\n numFormat,\n )\n // 饼图/环图需要使用实际占比数据\n const measurePercentLabel = isNumber(datum['__VCHART_ARC_RATIO'])\n ? generateMeasurePercent(datum['__VCHART_ARC_RATIO'], 1, percentFormatter)\n : generateMeasurePercent(datum[measureValue] as number | string, statistics.sum, percentFormatter)\n if (showValue) {\n result.push(measureValueLabel)\n }\n if (showValuePercent) {\n result.push(measurePercentLabel)\n }\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 stroke: labelStroke,\n fill: labelColor,\n fontSize: labelFontSize,\n fontWeight: labelFontWeight,\n background: labelBackgroundColor,\n },\n smartInvert: labelColorSmartInvert,\n }\n\n if (labelOverlap) {\n ;(result as any).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","buildLabel","generateMeasureValue","value","measure","labelAutoFormat","numFormat","format","merge","mergedMeasure","formatter","createFormatterByMeasure","generateMeasurePercent","sum","String","num","Number","percentValue","vseedMeasures","vseedDimensions","advancedVSeedDimensions","advancedVSeedMeasures","foldInfoList","enable","wrap","showValue","showValuePercent","showDimension","labelOverlap","labelColorSmartInvert","labelStroke","labelColor","labelFontSize","labelFontWeight","labelBackgroundColor","labelPosition","autoFormat","hasDimLabelEncoding","item","labelDims","uniqueBy","d","MeasureId","labelMeas","percentFormat","percentFormatter","createFormatter","data","entry","DATUM_HIDE_KEY","selector","_","datum","dimLabels","id","meaLabels","measureId","measureValue","statistics","findMeasureById","measureValueLabel","measurePercentLabel","isNumber"],"mappings":"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"}
1
+ {"version":3,"file":"pipeline/spec/chart/pipes/label/label.js","sources":["../../../../../../../src/pipeline/spec/chart/pipes/label/label.ts"],"sourcesContent":["import type { ILineChartSpec } from '@visactor/vchart'\nimport { createFormatter, createFormatterByMeasure, DATUM_HIDE_KEY, findMeasureById } from '../../../../utils'\nimport type {\n Datum,\n Dimension,\n Dimensions,\n Encoding,\n FoldInfo,\n Formatter,\n Label,\n Measure,\n Measures,\n NumFormat,\n VChartSpecPipe,\n} from 'src/types'\nimport { isNumber, merge, uniqueBy } from 'remeda'\nimport { selector } from 'src/dataSelector'\nimport { MeasureId } from 'src/dataReshape/constant'\n\nexport const label: VChartSpecPipe = (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\n const { label } = baseConfig\n\n result.label = buildLabel(\n label,\n vseed.measures,\n vseed.dimensions,\n advancedVSeed.dimensions,\n advancedVSeed.measures,\n encoding as Encoding,\n [foldInfo],\n ) as unknown as ILineChartSpec['label']\n\n return result\n}\n\nexport const generateMeasureValue = (\n value: number | string,\n measure: Measure,\n labelAutoFormat?: boolean,\n numFormat: NumFormat = {},\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 advancedVSeedDimensions: Dimensions,\n advancedVSeedMeasures: Measures,\n encoding: Encoding,\n foldInfoList: FoldInfo[],\n) => {\n const {\n enable,\n wrap,\n showValue,\n showValuePercent,\n showDimension,\n labelOverlap,\n labelColorSmartInvert,\n labelStroke,\n labelColor,\n labelFontSize,\n labelFontWeight,\n labelBackgroundColor,\n labelPosition,\n autoFormat,\n numFormat = {},\n } = label\n\n const hasDimLabelEncoding = vseedDimensions.some((item) => encoding.label?.includes(item.id))\n\n const labelDims = uniqueBy(\n hasDimLabelEncoding\n ? vseedDimensions.filter((item) => encoding.label?.includes(item.id))\n : showDimension\n ? advancedVSeedDimensions.filter((d) => d.id !== MeasureId && d.encoding !== 'row' && d.encoding !== 'column')\n : [],\n (item: Dimension) => item.id,\n )\n\n const labelMeas = uniqueBy(\n vseedMeasures.filter((item) => encoding.label?.includes(item.id)),\n (item: Measure) => 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 dataFilter: (data: Datum[]) => {\n return data.filter((entry) => {\n return entry.data?.[DATUM_HIDE_KEY] !== true && selector(entry.data as Datum, label.selector, 'Or')\n })\n },\n formatMethod: (_: unknown, datum: Datum) => {\n const result = []\n\n const dimLabels = labelDims.map((item: Dimension) => {\n const id = item.id\n return datum[id] as number | string\n })\n\n const meaLabels = labelMeas.map((item: Measure) =>\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 if (measure) {\n const measureValueLabel = generateMeasureValue(\n datum[measureValue] as number | string,\n measure,\n autoFormat,\n numFormat,\n )\n // 饼图/环图需要使用实际占比数据\n const measurePercentLabel = isNumber(datum['__VCHART_ARC_RATIO'])\n ? generateMeasurePercent(datum['__VCHART_ARC_RATIO'], 1, percentFormatter)\n : generateMeasurePercent(datum[measureValue] as number | string, statistics.sum, percentFormatter)\n if (showValue) {\n result.push(measureValueLabel)\n }\n if (showValuePercent) {\n result.push(measurePercentLabel)\n }\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 stroke: labelStroke,\n fill: labelColor,\n fontSize: labelFontSize,\n fontWeight: labelFontWeight,\n background: labelBackgroundColor,\n },\n smartInvert: labelColorSmartInvert,\n }\n\n if (labelOverlap) {\n ;(result as any).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","buildLabel","generateMeasureValue","value","measure","labelAutoFormat","numFormat","format","merge","mergedMeasure","formatter","createFormatterByMeasure","generateMeasurePercent","sum","String","num","Number","percentValue","vseedMeasures","vseedDimensions","advancedVSeedDimensions","advancedVSeedMeasures","foldInfoList","enable","wrap","showValue","showValuePercent","showDimension","labelOverlap","labelColorSmartInvert","labelStroke","labelColor","labelFontSize","labelFontWeight","labelBackgroundColor","labelPosition","autoFormat","hasDimLabelEncoding","item","labelDims","uniqueBy","d","MeasureId","labelMeas","percentFormat","percentFormatter","createFormatter","data","entry","DATUM_HIDE_KEY","selector","_","datum","dimLabels","id","meaLabels","measureId","measureValue","statistics","findMeasureById","measureValueLabel","measurePercentLabel","isNumber"],"mappings":"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"}
@@ -9,7 +9,7 @@ const colorLegend = (spec, context)=>{
9
9
  const baseConfig = advancedVSeed.config[chartType];
10
10
  if (!baseConfig || !baseConfig.legend) return result;
11
11
  const { legend } = baseConfig;
12
- const { enable, position = 'bottom', labelFontColor, labelColor, labelFontSize = 12, labelFontWeight } = legend || {};
12
+ const { enable, position = 'bottom', labelFontColor, labelColor, labelFontSize = 12, labelFontWeight, railBackgroundColor, handlerBorderColor } = legend || {};
13
13
  const orient = [
14
14
  'bottom',
15
15
  'bottomLeft',
@@ -63,6 +63,18 @@ const colorLegend = (spec, context)=>{
63
63
  fontSize: labelFontSize,
64
64
  fontWeight: labelFontWeight
65
65
  }
66
+ },
67
+ rail: {
68
+ style: {
69
+ fill: railBackgroundColor
70
+ }
71
+ },
72
+ handler: {
73
+ style: {
74
+ outerBorder: {
75
+ stroke: handlerBorderColor
76
+ }
77
+ }
66
78
  }
67
79
  };
68
80
  const colorMeasure = findTreeNodesBy(measures, (m)=>'color' === m.encoding)?.[0];
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/chart/pipes/legend/colorLegend.js","sources":["../../../../../../../src/pipeline/spec/chart/pipes/legend/colorLegend.ts"],"sourcesContent":["import { createFormatterByMeasure, findTreeNodesBy } from 'src/pipeline/utils'\nimport type { Legend, Measure, VChartSpecPipe } from 'src/types'\n\nexport const colorLegend: VChartSpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed } = context\n const { datasetReshapeInfo, chartType, measures = [] } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n const baseConfig = advancedVSeed.config[chartType] as { legend: Legend }\n if (!baseConfig || !baseConfig.legend) {\n return result\n }\n\n const { legend } = baseConfig\n const { enable, position = 'bottom', labelFontColor, labelColor, labelFontSize = 12, labelFontWeight } = legend || {}\n\n const orient = ['bottom', 'bottomLeft', 'bottomRight', 'bl', 'br'].includes(position)\n ? 'bottom'\n : ['top', 'topLeft', 'topRight', 'tl', 'tr'].includes(position)\n ? 'top'\n : ['left', 'leftTop', 'leftBottom', 'lt', 'lb'].includes(position)\n ? 'left'\n : 'right'\n\n const legendPosition = ['topLeft', 'bottomLeft', 'leftTop', 'rightTop', 'lt', 'rt', 'tl', 'bl'].includes(position)\n ? 'start'\n : ['topRight', 'bottomRight', 'leftBottom', 'rightBottom', 'lb', 'rb', 'rt', 'br'].includes(position)\n ? 'end'\n : 'middle'\n\n result.legends = {\n type: 'color',\n visible: enable,\n orient,\n position: legendPosition,\n padding: 0,\n field: unfoldInfo.encodingColor,\n maxWidth: '30%',\n handlerText: {\n visible: true,\n style: {\n fill: labelColor || labelFontColor,\n fontSize: labelFontSize,\n fontWeight: labelFontWeight,\n },\n },\n }\n const colorMeasure = findTreeNodesBy<Measure>(measures, (m) => m.encoding === 'color')?.[0]\n if (colorMeasure) {\n const formatter = createFormatterByMeasure(colorMeasure)\n result.legends.handlerText!.formatter = formatter\n }\n return result\n}\n"],"names":["colorLegend","spec","context","result","advancedVSeed","datasetReshapeInfo","chartType","measures","unfoldInfo","baseConfig","legend","enable","position","labelFontColor","labelColor","labelFontSize","labelFontWeight","orient","legendPosition","colorMeasure","findTreeNodesBy","m","formatter","createFormatterByMeasure"],"mappings":";AAGO,MAAMA,cAA8B,CAACC,MAAMC;IAChD,MAAMC,SAAS;QAAE,GAAGF,IAAI;IAAC;IACzB,MAAM,EAAEG,aAAa,EAAE,GAAGF;IAC1B,MAAM,EAAEG,kBAAkB,EAAEC,SAAS,EAAEC,WAAW,EAAE,EAAE,GAAGH;IACzD,MAAM,EAAEI,UAAU,EAAE,GAAGH,kBAAkB,CAAC,EAAE;IAC5C,MAAMI,aAAaL,cAAc,MAAM,CAACE,UAAU;IAClD,IAAI,CAACG,cAAc,CAACA,WAAW,MAAM,EACnC,OAAON;IAGT,MAAM,EAAEO,MAAM,EAAE,GAAGD;IACnB,MAAM,EAAEE,MAAM,EAAEC,WAAW,QAAQ,EAAEC,cAAc,EAAEC,UAAU,EAAEC,gBAAgB,EAAE,EAAEC,eAAe,EAAE,GAAGN,UAAU,CAAC;IAEpH,MAAMO,SAAS;QAAC;QAAU;QAAc;QAAe;QAAM;KAAK,CAAC,QAAQ,CAACL,YACxE,WACA;QAAC;QAAO;QAAW;QAAY;QAAM;KAAK,CAAC,QAAQ,CAACA,YAClD,QACA;QAAC;QAAQ;QAAW;QAAc;QAAM;KAAK,CAAC,QAAQ,CAACA,YACrD,SACA;IAER,MAAMM,iBAAiB;QAAC;QAAW;QAAc;QAAW;QAAY;QAAM;QAAM;QAAM;KAAK,CAAC,QAAQ,CAACN,YACrG,UACA;QAAC;QAAY;QAAe;QAAc;QAAe;QAAM;QAAM;QAAM;KAAK,CAAC,QAAQ,CAACA,YACxF,QACA;IAENT,OAAO,OAAO,GAAG;QACf,MAAM;QACN,SAASQ;QACTM;QACA,UAAUC;QACV,SAAS;QACT,OAAOV,WAAW,aAAa;QAC/B,UAAU;QACV,aAAa;YACX,SAAS;YACT,OAAO;gBACL,MAAMM,cAAcD;gBACpB,UAAUE;gBACV,YAAYC;YACd;QACF;IACF;IACA,MAAMG,eAAeC,gBAAyBb,UAAU,CAACc,IAAMA,AAAe,YAAfA,EAAE,QAAQ,GAAe,CAAC,EAAE;IAC3F,IAAIF,cAAc;QAChB,MAAMG,YAAYC,yBAAyBJ;QAC3ChB,OAAO,OAAO,CAAC,WAAW,CAAE,SAAS,GAAGmB;IAC1C;IACA,OAAOnB;AACT"}
1
+ {"version":3,"file":"pipeline/spec/chart/pipes/legend/colorLegend.js","sources":["../../../../../../../src/pipeline/spec/chart/pipes/legend/colorLegend.ts"],"sourcesContent":["import { createFormatterByMeasure, findTreeNodesBy } from 'src/pipeline/utils'\nimport type { ColorLegend, Measure, VChartSpecPipe } from 'src/types'\n\nexport const colorLegend: VChartSpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed } = context\n const { datasetReshapeInfo, chartType, measures = [] } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n const baseConfig = advancedVSeed.config[chartType] as { legend: ColorLegend }\n if (!baseConfig || !baseConfig.legend) {\n return result\n }\n\n const { legend } = baseConfig\n const {\n enable,\n position = 'bottom',\n labelFontColor,\n labelColor,\n labelFontSize = 12,\n labelFontWeight,\n railBackgroundColor,\n handlerBorderColor,\n } = legend || {}\n\n const orient = ['bottom', 'bottomLeft', 'bottomRight', 'bl', 'br'].includes(position)\n ? 'bottom'\n : ['top', 'topLeft', 'topRight', 'tl', 'tr'].includes(position)\n ? 'top'\n : ['left', 'leftTop', 'leftBottom', 'lt', 'lb'].includes(position)\n ? 'left'\n : 'right'\n\n const legendPosition = ['topLeft', 'bottomLeft', 'leftTop', 'rightTop', 'lt', 'rt', 'tl', 'bl'].includes(position)\n ? 'start'\n : ['topRight', 'bottomRight', 'leftBottom', 'rightBottom', 'lb', 'rb', 'rt', 'br'].includes(position)\n ? 'end'\n : 'middle'\n\n result.legends = {\n type: 'color',\n visible: enable,\n orient,\n position: legendPosition,\n padding: 0,\n field: unfoldInfo.encodingColor,\n maxWidth: '30%',\n handlerText: {\n visible: true,\n style: {\n fill: labelColor || labelFontColor,\n fontSize: labelFontSize,\n fontWeight: labelFontWeight,\n },\n },\n rail: {\n style: {\n fill: railBackgroundColor,\n },\n },\n handler: {\n style: {\n outerBorder: {\n stroke: handlerBorderColor,\n },\n },\n },\n }\n const colorMeasure = findTreeNodesBy<Measure>(measures, (m) => m.encoding === 'color')?.[0]\n if (colorMeasure) {\n const formatter = createFormatterByMeasure(colorMeasure)\n result.legends.handlerText!.formatter = formatter\n }\n return result\n}\n"],"names":["colorLegend","spec","context","result","advancedVSeed","datasetReshapeInfo","chartType","measures","unfoldInfo","baseConfig","legend","enable","position","labelFontColor","labelColor","labelFontSize","labelFontWeight","railBackgroundColor","handlerBorderColor","orient","legendPosition","colorMeasure","findTreeNodesBy","m","formatter","createFormatterByMeasure"],"mappings":";AAGO,MAAMA,cAA8B,CAACC,MAAMC;IAChD,MAAMC,SAAS;QAAE,GAAGF,IAAI;IAAC;IACzB,MAAM,EAAEG,aAAa,EAAE,GAAGF;IAC1B,MAAM,EAAEG,kBAAkB,EAAEC,SAAS,EAAEC,WAAW,EAAE,EAAE,GAAGH;IACzD,MAAM,EAAEI,UAAU,EAAE,GAAGH,kBAAkB,CAAC,EAAE;IAC5C,MAAMI,aAAaL,cAAc,MAAM,CAACE,UAAU;IAClD,IAAI,CAACG,cAAc,CAACA,WAAW,MAAM,EACnC,OAAON;IAGT,MAAM,EAAEO,MAAM,EAAE,GAAGD;IACnB,MAAM,EACJE,MAAM,EACNC,WAAW,QAAQ,EACnBC,cAAc,EACdC,UAAU,EACVC,gBAAgB,EAAE,EAClBC,eAAe,EACfC,mBAAmB,EACnBC,kBAAkB,EACnB,GAAGR,UAAU,CAAC;IAEf,MAAMS,SAAS;QAAC;QAAU;QAAc;QAAe;QAAM;KAAK,CAAC,QAAQ,CAACP,YACxE,WACA;QAAC;QAAO;QAAW;QAAY;QAAM;KAAK,CAAC,QAAQ,CAACA,YAClD,QACA;QAAC;QAAQ;QAAW;QAAc;QAAM;KAAK,CAAC,QAAQ,CAACA,YACrD,SACA;IAER,MAAMQ,iBAAiB;QAAC;QAAW;QAAc;QAAW;QAAY;QAAM;QAAM;QAAM;KAAK,CAAC,QAAQ,CAACR,YACrG,UACA;QAAC;QAAY;QAAe;QAAc;QAAe;QAAM;QAAM;QAAM;KAAK,CAAC,QAAQ,CAACA,YACxF,QACA;IAENT,OAAO,OAAO,GAAG;QACf,MAAM;QACN,SAASQ;QACTQ;QACA,UAAUC;QACV,SAAS;QACT,OAAOZ,WAAW,aAAa;QAC/B,UAAU;QACV,aAAa;YACX,SAAS;YACT,OAAO;gBACL,MAAMM,cAAcD;gBACpB,UAAUE;gBACV,YAAYC;YACd;QACF;QACA,MAAM;YACJ,OAAO;gBACL,MAAMC;YACR;QACF;QACA,SAAS;YACP,OAAO;gBACL,aAAa;oBACX,QAAQC;gBACV;YACF;QACF;IACF;IACA,MAAMG,eAAeC,gBAAyBf,UAAU,CAACgB,IAAMA,AAAe,YAAfA,EAAE,QAAQ,GAAe,CAAC,EAAE;IAC3F,IAAIF,cAAc;QAChB,MAAMG,YAAYC,yBAAyBJ;QAC3ClB,OAAO,OAAO,CAAC,WAAW,CAAE,SAAS,GAAGqB;IAC1C;IACA,OAAOrB;AACT"}
@@ -36,8 +36,8 @@ const dimensionLinkage = (spec, context)=>{
36
36
  });
37
37
  spec.chartDimensionLinkage = {
38
38
  showTooltip: config.showTooltip ?? chartSpec?.tooltip?.dimension?.visible ?? true,
39
- heightLimitToShowTooltipForLastRow: 60,
40
- widthLimitToShowTooltipForLastColumn: 90,
39
+ heightLimitToShowTooltipForEdgeRow: spec.defaultRowHeight / 2,
40
+ widthLimitToShowTooltipForEdgeColumn: spec.defaultColWidth / 2,
41
41
  labelHoverOnAxis
42
42
  };
43
43
  return spec;