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