@visactor/vseed 0.2.1 → 0.2.3
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.
- package/dist/cjs/index.cjs +1 -3
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/esm/builder/builder/buildAdvanced.js +1 -2
- package/dist/esm/builder/builder/buildAdvanced.js.map +1 -1
- package/dist/esm/builder/builder/buildSpec.js +1 -2
- package/dist/esm/builder/builder/buildSpec.js.map +1 -1
- package/dist/esm/builder/builder/builder.d.ts +628 -334
- package/dist/esm/builder/register/all.js +2 -2
- package/dist/esm/builder/register/all.js.map +1 -1
- package/dist/esm/builder/register/chartType/boxplot.d.ts +1 -1
- package/dist/esm/builder/register/chartType/boxplot.js +2 -2
- package/dist/esm/builder/register/chartType/boxplot.js.map +1 -1
- package/dist/esm/builder/register/chartType/index.d.ts +1 -1
- package/dist/esm/builder/register/chartType/index.js +2 -2
- package/dist/esm/dataReshape/constant.d.ts +1 -0
- package/dist/esm/dataReshape/constant.js +2 -1
- package/dist/esm/dataReshape/constant.js.map +1 -1
- package/dist/esm/i18n/i18n.js +1 -4
- package/dist/esm/i18n/i18n.js.map +1 -1
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.js +2 -2
- package/dist/esm/pipeline/advanced/chart/pipes/config/histogram.js +17 -0
- package/dist/esm/pipeline/advanced/chart/pipes/config/histogram.js.map +1 -1
- package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithBoxplotEncoding.js +12 -0
- package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithBoxplotEncoding.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipeline/heatmap.js +3 -1
- package/dist/esm/pipeline/spec/chart/pipeline/heatmap.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipeline/histogram.js +3 -3
- package/dist/esm/pipeline/spec/chart/pipeline/histogram.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationHorizontalLine.js +4 -12
- package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationHorizontalLine.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationPoint.js +3 -76
- package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationPoint.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationPointCommon.d.ts +6 -0
- package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationPointCommon.js +95 -0
- package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationPointCommon.js.map +1 -0
- package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationPointOfDualAxis.js +16 -84
- package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationPointOfDualAxis.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationPointOfHistogram.d.ts +2 -0
- package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationPointOfHistogram.js +23 -0
- package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationPointOfHistogram.js.map +1 -0
- package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationVerticalLine.js +4 -12
- package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationVerticalLine.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/annotation/index.d.ts +1 -0
- package/dist/esm/pipeline/spec/chart/pipes/annotation/index.js +2 -1
- package/dist/esm/pipeline/spec/chart/pipes/axes/axisStyle.d.ts +3 -0
- package/dist/esm/pipeline/spec/chart/pipes/axes/axisStyle.js +65 -0
- package/dist/esm/pipeline/spec/chart/pipes/axes/axisStyle.js.map +1 -0
- package/dist/esm/pipeline/spec/chart/pipes/axes/heatmapBandAxis.d.ts +2 -0
- package/dist/esm/pipeline/spec/chart/pipes/axes/heatmapBandAxis.js +24 -0
- package/dist/esm/pipeline/spec/chart/pipes/axes/heatmapBandAxis.js.map +1 -0
- package/dist/esm/pipeline/spec/chart/pipes/axes/index.d.ts +1 -0
- package/dist/esm/pipeline/spec/chart/pipes/axes/index.js +2 -1
- package/dist/esm/pipeline/spec/chart/pipes/axes/xBand.js +15 -72
- package/dist/esm/pipeline/spec/chart/pipes/axes/xBand.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/axes/yBand.js +17 -73
- package/dist/esm/pipeline/spec/chart/pipes/axes/yBand.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/dual/dualChartType.js +11 -13
- package/dist/esm/pipeline/spec/chart/pipes/dual/dualChartType.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/init/boxplot.js +10 -8
- package/dist/esm/pipeline/spec/chart/pipes/init/boxplot.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/init/heatmap.js +0 -12
- package/dist/esm/pipeline/spec/chart/pipes/init/heatmap.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/label/label.js +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/label/label.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/legend/colorLegend.js +13 -1
- package/dist/esm/pipeline/spec/chart/pipes/legend/colorLegend.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/pivotChart/dimensionLinkage.js +2 -2
- package/dist/esm/pipeline/spec/chart/pipes/pivotChart/dimensionLinkage.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltip.js +3 -1
- package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltip.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipBoxplot.js +3 -1
- package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipBoxplot.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipDualAxis.js +3 -1
- package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipDualAxis.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipElement.d.ts +2 -0
- package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipElement.js +58 -0
- package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipElement.js.map +1 -0
- package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipHeatmap.js +3 -1
- package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipHeatmap.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipHistogram.js +11 -8
- package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipHistogram.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipScatter.js +3 -1
- package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipScatter.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/utils/histogram.d.ts +1 -0
- package/dist/esm/pipeline/spec/chart/utils/histogram.js +6 -2
- package/dist/esm/pipeline/spec/chart/utils/histogram.js.map +1 -1
- package/dist/esm/pipeline/utils/boxplot.d.ts +1 -0
- package/dist/esm/pipeline/utils/boxplot.js +8 -0
- package/dist/esm/pipeline/utils/boxplot.js.map +1 -0
- package/dist/esm/pipeline/utils/index.d.ts +1 -0
- package/dist/esm/pipeline/utils/index.js +1 -0
- package/dist/esm/theme/common/legend.d.ts +3 -1
- package/dist/esm/theme/common/legend.js +13 -1
- package/dist/esm/theme/common/legend.js.map +1 -1
- package/dist/esm/theme/common/tooltip.js +1 -1
- package/dist/esm/theme/common/tooltip.js.map +1 -1
- package/dist/esm/theme/dark/dark.js +4 -1
- package/dist/esm/theme/dark/dark.js.map +1 -1
- package/dist/esm/theme/light/light.js +4 -1
- package/dist/esm/theme/light/light.js.map +1 -1
- package/dist/esm/types/advancedVSeed.d.ts +252 -420
- package/dist/esm/types/chartType/area/area.d.ts +2 -2
- package/dist/esm/types/chartType/area/zArea.d.ts +5 -281
- package/dist/esm/types/chartType/areaPercent/areaPercent.d.ts +3 -5
- package/dist/esm/types/chartType/areaPercent/zAreaPercent.d.ts +5 -281
- package/dist/esm/types/chartType/bar/bar.d.ts +3 -3
- package/dist/esm/types/chartType/bar/zBar.d.ts +5 -281
- package/dist/esm/types/chartType/barParallel/barParallel.d.ts +3 -3
- package/dist/esm/types/chartType/barParallel/zBarParallel.d.ts +5 -281
- package/dist/esm/types/chartType/barPercent/barPercent.d.ts +3 -3
- package/dist/esm/types/chartType/barPercent/zBarPercent.d.ts +5 -281
- package/dist/esm/types/chartType/{boxplot/boxplot.d.ts → boxPlot/boxPlot.d.ts} +6 -6
- package/dist/esm/types/chartType/boxPlot/index.d.ts +2 -0
- package/dist/esm/types/chartType/boxPlot/index.js +1 -0
- package/dist/esm/types/chartType/{boxplot/zBoxplot.d.ts → boxPlot/zBoxPlot.d.ts} +6 -282
- package/dist/esm/types/chartType/{boxplot/zBoxplot.js → boxPlot/zBoxPlot.js} +3 -3
- package/dist/esm/types/chartType/{boxplot/zBoxplot.js.map → boxPlot/zBoxPlot.js.map} +1 -1
- package/dist/esm/types/chartType/column/column.d.ts +4 -4
- package/dist/esm/types/chartType/column/zColumn.d.ts +7 -283
- package/dist/esm/types/chartType/column/zColumn.js +1 -1
- package/dist/esm/types/chartType/column/zColumn.js.map +1 -1
- package/dist/esm/types/chartType/columnParallel/columnParallel.d.ts +3 -5
- package/dist/esm/types/chartType/columnParallel/zColumnParallel.d.ts +5 -281
- package/dist/esm/types/chartType/columnPercent/columnPercent.d.ts +3 -3
- package/dist/esm/types/chartType/columnPercent/zColumnPercent.d.ts +5 -281
- package/dist/esm/types/chartType/donut/zDonut.d.ts +1 -1
- package/dist/esm/types/chartType/dualAxis/dualAxis.d.ts +3 -3
- package/dist/esm/types/chartType/dualAxis/zDualAxis.d.ts +5 -281
- package/dist/esm/types/chartType/funnel/zFunnel.d.ts +5 -0
- package/dist/esm/types/chartType/heatmap/zHeatmap.d.ts +5 -0
- package/dist/esm/types/chartType/histogram/histogram.d.ts +6 -6
- package/dist/esm/types/chartType/histogram/zHistogram.d.ts +5 -281
- package/dist/esm/types/chartType/index.d.ts +1 -1
- package/dist/esm/types/chartType/index.js +1 -1
- package/dist/esm/types/chartType/line/line.d.ts +3 -5
- package/dist/esm/types/chartType/line/zLine.d.ts +5 -281
- package/dist/esm/types/chartType/pie/zPie.d.ts +1 -1
- package/dist/esm/types/chartType/pivotTable/pivotTable.d.ts +1 -1
- package/dist/esm/types/chartType/radar/zRadar.d.ts +1 -1
- package/dist/esm/types/chartType/rose/zRose.d.ts +1 -1
- package/dist/esm/types/chartType/roseParallel/zRoseParallel.d.ts +1 -1
- package/dist/esm/types/chartType/scatter/scatter.d.ts +7 -7
- package/dist/esm/types/chartType/scatter/zScatter.d.ts +13 -289
- package/dist/esm/types/chartType/scatter/zScatter.js +4 -4
- package/dist/esm/types/chartType/scatter/zScatter.js.map +1 -1
- package/dist/esm/types/chartType/table/table.d.ts +1 -1
- package/dist/esm/types/dataSelector/selector.d.ts +108 -0
- package/dist/esm/types/dataSelector/selector.js +58 -51
- package/dist/esm/types/dataSelector/selector.js.map +1 -1
- package/dist/esm/types/properties/annotation/annotation.d.ts +4 -280
- package/dist/esm/types/properties/annotation/annotationArea.d.ts +2 -2
- package/dist/esm/types/properties/annotation/annotationHorizontalLine.d.ts +1 -6
- package/dist/esm/types/properties/annotation/annotationVerticalLine.d.ts +0 -5
- package/dist/esm/types/properties/annotation/zAnnotationArea.d.ts +2 -2
- package/dist/esm/types/properties/annotation/zAnnotationArea.js +3 -3
- package/dist/esm/types/properties/annotation/zAnnotationArea.js.map +1 -1
- package/dist/esm/types/properties/annotation/zAnnotationHorizontalLine.d.ts +0 -69
- package/dist/esm/types/properties/annotation/zAnnotationHorizontalLine.js +0 -5
- package/dist/esm/types/properties/annotation/zAnnotationHorizontalLine.js.map +1 -1
- package/dist/esm/types/properties/annotation/zAnnotationVerticalLine.d.ts +0 -69
- package/dist/esm/types/properties/annotation/zAnnotationVerticalLine.js +0 -5
- package/dist/esm/types/properties/annotation/zAnnotationVerticalLine.js.map +1 -1
- package/dist/esm/types/properties/config/area.d.ts +2 -2
- package/dist/esm/types/properties/config/bar.d.ts +3 -3
- package/dist/esm/types/properties/config/boxplot.d.ts +1 -1
- package/dist/esm/types/properties/config/column.d.ts +3 -3
- package/dist/esm/types/properties/config/config.d.ts +102 -48
- package/dist/esm/types/properties/config/dualAxis.d.ts +1 -1
- package/dist/esm/types/properties/config/funnel.d.ts +1 -1
- package/dist/esm/types/properties/config/heatmap.d.ts +83 -29
- package/dist/esm/types/properties/config/heatmap.js +6 -3
- package/dist/esm/types/properties/config/heatmap.js.map +1 -1
- package/dist/esm/types/properties/config/histogram.d.ts +1 -1
- package/dist/esm/types/properties/config/legend/legend.d.ts +10 -2
- package/dist/esm/types/properties/config/legend/legend.js +7 -2
- package/dist/esm/types/properties/config/legend/legend.js.map +1 -1
- package/dist/esm/types/properties/config/line.d.ts +1 -1
- package/dist/esm/types/properties/config/pie.d.ts +3 -3
- package/dist/esm/types/properties/config/rose.d.ts +2 -2
- package/dist/esm/types/properties/config/scatter.d.ts +1 -1
- package/dist/esm/types/properties/regressionLine/linearRegressionLine.d.ts +4 -0
- package/dist/esm/types/properties/regressionLine/logisticRegressionLine.d.ts +4 -0
- package/dist/esm/types/properties/regressionLine/lowessRegressionLine.d.ts +4 -0
- package/dist/esm/types/properties/regressionLine/polynomialRegressionLine.d.ts +4 -0
- package/dist/esm/types/properties/theme/customTheme.d.ts +204 -96
- package/dist/esm/types/vseed.d.ts +2 -2
- package/dist/esm/types/zVseed.d.ts +837 -4415
- package/dist/esm/types/zVseed.js +2 -2
- package/dist/esm/types/zVseed.js.map +1 -1
- package/dist/umd/index.js +541 -426
- package/dist/umd/index.js.map +1 -1
- package/package.json +10 -5
- package/dist/esm/types/chartType/boxplot/index.d.ts +0 -2
- package/dist/esm/types/chartType/boxplot/index.js +0 -1
- /package/dist/esm/types/chartType/{boxplot/boxplot.js → boxPlot/boxPlot.js} +0 -0
|
@@ -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 "./axisStyle.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 {
|
|
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
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
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 {
|
|
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 './axisStyle'\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,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 "./axisStyle.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 {
|
|
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
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
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 {
|
|
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 './axisStyle'\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,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
|
-
|
|
13
|
-
|
|
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]
|
|
73
|
-
const secondary = Array.isArray(config) ? config[index]
|
|
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
|
|
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
|
|
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
|
|
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":";;;;AAmBO,MAAMA,cAAwB,CAACC,MAAMC;IAC1C,MAAMC,SAAS;QAAE,GAAGF,IAAI;IAAC;IACzB,MAAM,EAAEG,aAAa,EAAEC,KAAK,EAAE,GAAGH;IACjC,MAAM,EAAEI,kBAAkB,EAAE,GAAGF;IAC/B,MAAM,EAAEG,SAAS,EAAEC,QAAQ,EAAE,GAAGJ;IAChC,MAAMK,aAAaL,cAAc,MAAM,CAACG,UAAU;IAClD,MAAMG,WAAWJ,kBAAkB,CAAC,EAAE,CAAC,QAAQ;IAE/C,MAAM,EAAEN,KAAK,EAAE,GAAGS;IAElBN,OAAO,KAAK,GAAGQ,WACbX,OACAK,MAAM,QAAQ,EACdA,MAAM,UAAU,EAChBD,cAAc,UAAU,EACxBA,cAAc,QAAQ,EACtBI,UACA;QAACE;KAAS;IAGZ,OAAOP;AACT;AAEO,MAAMS,uBAAuB,CAClCC,OACAC,SACAC,iBACAC,YAAuB,CAAC,CAAC;IAEzB,MAAMC,SAASC,MAAMF,WAAWF,QAAQ,SAAS,IAAIA,QAAQ,MAAM;IACnE,MAAMK,gBAAgB;QAAE,GAAGL,OAAO;QAAE,WAAWG;QAAQ,YAAYF,mBAAmBD,QAAQ,UAAU;IAAC;IAEzG,MAAMM,YAAYC,yBAAyBF;IAC3C,OAAOC,UAAUP;AACnB;AAEO,MAAMS,yBAAyB,CAACT,OAAwBU,KAAaH;IAC1E,IAAIP,QAAAA,OAAuC,OAAOW,OAAOX;IACzD,MAAMY,MAAMC,OAAOb;IACnB,IAAIa,OAAO,KAAK,CAACD,MAAM,OAAOD,OAAOX;IAErC,MAAMc,eAAeF,MAAMF;IAC3B,OAAOH,UAAUO;AACnB;AAEO,MAAMhB,aAAa,CACxBX,OACA4B,gBAA0B,EAAE,EAC5BC,kBAA8B,EAAE,EAChCC,yBACAC,uBACAvB,UACAwB;IAEA,MAAM,EACJC,MAAM,EACNC,IAAI,EACJC,SAAS,EACTC,gBAAgB,EAChBC,aAAa,EACbC,YAAY,EACZC,qBAAqB,EACrBC,WAAW,EACXC,UAAU,EACVC,aAAa,EACbC,eAAe,EACfC,oBAAoB,EACpBC,aAAa,EACbC,UAAU,EACV9B,YAAY,CAAC,CAAC,EACf,GAAGhB;IAEJ,MAAM+C,sBAAsBlB,gBAAgB,IAAI,CAAC,CAACmB,OAASxC,SAAS,KAAK,EAAE,SAASwC,KAAK,EAAE;IAE3F,MAAMC,YAAYC,SAChBH,sBACIlB,gBAAgB,MAAM,CAAC,CAACmB,OAASxC,SAAS,KAAK,EAAE,SAASwC,KAAK,EAAE,KACjEX,gBACEP,wBAAwB,MAAM,CAAC,CAACqB,IAAMA,EAAE,EAAE,KAAKC,
|
|
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 {
|
|
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
|
-
|
|
40
|
-
|
|
39
|
+
heightLimitToShowTooltipForEdgeRow: 60,
|
|
40
|
+
widthLimitToShowTooltipForEdgeColumn: 90,
|
|
41
41
|
labelHoverOnAxis
|
|
42
42
|
};
|
|
43
43
|
return spec;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline/spec/chart/pipes/pivotChart/dimensionLinkage.js","sources":["../../../../../../../src/pipeline/spec/chart/pipes/pivotChart/dimensionLinkage.ts"],"sourcesContent":["import type { ICartesianCrosshairSpec, ILineChartSpec } from '@visactor/vchart'\nimport type { DimensionLinkage, PivotChartSpecPipe } from 'src/types'\n\nexport const dimensionLinkage: PivotChartSpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n\n const config = (advancedVSeed.config?.[chartType as 'line']?.dimensionLinkage ?? {}) as DimensionLinkage\n\n if (config.enable === false) {\n return spec\n }\n\n const indicators = spec.indicators\n const labelHoverOnAxis = {}\n const chartSpec = (indicators as any)?.[0]?.chartSpec as ILineChartSpec\n const crosshair = chartSpec?.crosshair as ICartesianCrosshairSpec\n\n if (crosshair?.xField) {\n const labelFormat = crosshair.xField.label?.formatMethod\n ;(labelHoverOnAxis as any).bottom = {\n visible: config.showLabel ?? crosshair.xField.label?.visible ?? true,\n background: crosshair.xField.label?.labelBackground,\n textStyle: crosshair.xField.label?.style,\n formatMethod: labelFormat\n ? (text: string | string[] | number) => (text || text === 0 ? labelFormat(text) : null)\n : undefined,\n }\n }\n if (crosshair?.yField) {\n const labelFormat = crosshair.yField.label?.formatMethod\n ;(labelHoverOnAxis as any).left = {\n visible: config.showLabel ?? crosshair.yField.label?.visible ?? true,\n background: crosshair.yField.label?.labelBackground,\n textStyle: crosshair.yField.label?.style,\n formatMethod: labelFormat\n ? (text: string | string[] | number) => (text || text === 0 ? labelFormat(text) : null)\n : undefined,\n }\n }\n\n if (indicators && indicators.length) {\n indicators.forEach((ind) => {\n const crosshair = (ind as any)?.chartSpec?.crosshair as ICartesianCrosshairSpec\n\n if (crosshair?.xField) {\n crosshair.xField.label = { visible: false }\n }\n\n if (crosshair?.yField) {\n crosshair.yField.label = { visible: false }\n }\n })\n }\n\n spec.chartDimensionLinkage = {\n showTooltip: config.showTooltip ?? (chartSpec?.tooltip?.dimension?.visible as boolean) ?? true,\n
|
|
1
|
+
{"version":3,"file":"pipeline/spec/chart/pipes/pivotChart/dimensionLinkage.js","sources":["../../../../../../../src/pipeline/spec/chart/pipes/pivotChart/dimensionLinkage.ts"],"sourcesContent":["import type { ICartesianCrosshairSpec, ILineChartSpec } from '@visactor/vchart'\nimport type { DimensionLinkage, PivotChartSpecPipe } from 'src/types'\n\nexport const dimensionLinkage: PivotChartSpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n\n const config = (advancedVSeed.config?.[chartType as 'line']?.dimensionLinkage ?? {}) as DimensionLinkage\n\n if (config.enable === false) {\n return spec\n }\n\n const indicators = spec.indicators\n const labelHoverOnAxis = {}\n const chartSpec = (indicators as any)?.[0]?.chartSpec as ILineChartSpec\n const crosshair = chartSpec?.crosshair as ICartesianCrosshairSpec\n\n if (crosshair?.xField) {\n const labelFormat = crosshair.xField.label?.formatMethod\n ;(labelHoverOnAxis as any).bottom = {\n visible: config.showLabel ?? crosshair.xField.label?.visible ?? true,\n background: crosshair.xField.label?.labelBackground,\n textStyle: crosshair.xField.label?.style,\n formatMethod: labelFormat\n ? (text: string | string[] | number) => (text || text === 0 ? labelFormat(text) : null)\n : undefined,\n }\n }\n if (crosshair?.yField) {\n const labelFormat = crosshair.yField.label?.formatMethod\n ;(labelHoverOnAxis as any).left = {\n visible: config.showLabel ?? crosshair.yField.label?.visible ?? true,\n background: crosshair.yField.label?.labelBackground,\n textStyle: crosshair.yField.label?.style,\n formatMethod: labelFormat\n ? (text: string | string[] | number) => (text || text === 0 ? labelFormat(text) : null)\n : undefined,\n }\n }\n\n if (indicators && indicators.length) {\n indicators.forEach((ind) => {\n const crosshair = (ind as any)?.chartSpec?.crosshair as ICartesianCrosshairSpec\n\n if (crosshair?.xField) {\n crosshair.xField.label = { visible: false }\n }\n\n if (crosshair?.yField) {\n crosshair.yField.label = { visible: false }\n }\n })\n }\n\n spec.chartDimensionLinkage = {\n showTooltip: config.showTooltip ?? (chartSpec?.tooltip?.dimension?.visible as boolean) ?? true,\n heightLimitToShowTooltipForEdgeRow: 60,\n widthLimitToShowTooltipForEdgeColumn: 90,\n labelHoverOnAxis,\n }\n\n return spec\n}\n"],"names":["dimensionLinkage","spec","context","advancedVSeed","vseed","chartType","config","indicators","labelHoverOnAxis","chartSpec","crosshair","labelFormat","text","undefined","ind"],"mappings":"AAGO,MAAMA,mBAAuC,CAACC,MAAMC;IACzD,MAAM,EAAEC,aAAa,EAAEC,KAAK,EAAE,GAAGF;IACjC,MAAM,EAAEG,SAAS,EAAE,GAAGD;IAEtB,MAAME,SAAUH,cAAc,MAAM,EAAE,CAACE,UAAoB,EAAE,oBAAoB,CAAC;IAElF,IAAIC,AAAkB,UAAlBA,OAAO,MAAM,EACf,OAAOL;IAGT,MAAMM,aAAaN,KAAK,UAAU;IAClC,MAAMO,mBAAmB,CAAC;IAC1B,MAAMC,YAAaF,YAAoB,CAAC,EAAE,EAAE;IAC5C,MAAMG,YAAYD,WAAW;IAE7B,IAAIC,WAAW,QAAQ;QACrB,MAAMC,cAAcD,UAAU,MAAM,CAAC,KAAK,EAAE;QAC1CF,iBAAyB,MAAM,GAAG;YAClC,SAASF,OAAO,SAAS,IAAII,UAAU,MAAM,CAAC,KAAK,EAAE,WAAW;YAChE,YAAYA,UAAU,MAAM,CAAC,KAAK,EAAE;YACpC,WAAWA,UAAU,MAAM,CAAC,KAAK,EAAE;YACnC,cAAcC,cACV,CAACC,OAAsCA,QAAQA,AAAS,MAATA,OAAaD,YAAYC,QAAQ,OAChFC;QACN;IACF;IACA,IAAIH,WAAW,QAAQ;QACrB,MAAMC,cAAcD,UAAU,MAAM,CAAC,KAAK,EAAE;QAC1CF,iBAAyB,IAAI,GAAG;YAChC,SAASF,OAAO,SAAS,IAAII,UAAU,MAAM,CAAC,KAAK,EAAE,WAAW;YAChE,YAAYA,UAAU,MAAM,CAAC,KAAK,EAAE;YACpC,WAAWA,UAAU,MAAM,CAAC,KAAK,EAAE;YACnC,cAAcC,cACV,CAACC,OAAsCA,QAAQA,AAAS,MAATA,OAAaD,YAAYC,QAAQ,OAChFC;QACN;IACF;IAEA,IAAIN,cAAcA,WAAW,MAAM,EACjCA,WAAW,OAAO,CAAC,CAACO;QAClB,MAAMJ,YAAaI,KAAa,WAAW;QAE3C,IAAIJ,WAAW,QACbA,UAAU,MAAM,CAAC,KAAK,GAAG;YAAE,SAAS;QAAM;QAG5C,IAAIA,WAAW,QACbA,UAAU,MAAM,CAAC,KAAK,GAAG;YAAE,SAAS;QAAM;IAE9C;IAGFT,KAAK,qBAAqB,GAAG;QAC3B,aAAaK,OAAO,WAAW,IAAKG,WAAW,SAAS,WAAW,WAAuB;QAC1F,oCAAoC;QACpC,sCAAsC;QACtCD;IACF;IAEA,OAAOP;AACT"}
|
|
@@ -2,6 +2,7 @@ import { pipe, uniqueBy } from "remeda";
|
|
|
2
2
|
import { createFormatterByMeasure, findAllMeasures, findMeasureById } from "../../../../utils/index.js";
|
|
3
3
|
import { ORIGINAL_DATA } from "../../../../../dataReshape/index.js";
|
|
4
4
|
import { getTooltipStyle } from "./tooltipStyle.js";
|
|
5
|
+
import { updateTooltipElement } from "./tooltipElement.js";
|
|
5
6
|
const tooltip_tooltip = (spec, context)=>{
|
|
6
7
|
const result = {
|
|
7
8
|
...spec
|
|
@@ -28,7 +29,8 @@ const tooltip_tooltip = (spec, context)=>{
|
|
|
28
29
|
visible: true
|
|
29
30
|
},
|
|
30
31
|
content: createDimensionContent(dimensions, measures, foldInfo, unfoldInfo)
|
|
31
|
-
}
|
|
32
|
+
},
|
|
33
|
+
updateElement: updateTooltipElement
|
|
32
34
|
};
|
|
33
35
|
return result;
|
|
34
36
|
};
|