@visactor/vseed 0.1.37 → 0.1.39
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 +2 -2
- 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/builder.d.ts +4147 -965
- package/dist/esm/builder/register/all.js +3 -1
- package/dist/esm/builder/register/all.js.map +1 -1
- package/dist/esm/builder/register/chartType/boxplot.d.ts +1 -0
- package/dist/esm/builder/register/chartType/boxplot.js +9 -0
- package/dist/esm/builder/register/chartType/boxplot.js.map +1 -0
- package/dist/esm/builder/register/chartType/histogram.d.ts +1 -0
- package/dist/esm/builder/register/chartType/histogram.js +9 -0
- package/dist/esm/builder/register/chartType/histogram.js.map +1 -0
- package/dist/esm/builder/register/chartType/index.d.ts +2 -0
- package/dist/esm/builder/register/chartType/index.js +3 -1
- package/dist/esm/dataReshape/constant.d.ts +10 -0
- package/dist/esm/dataReshape/constant.js +11 -1
- package/dist/esm/dataReshape/constant.js.map +1 -1
- package/dist/esm/dataReshape/unfoldDimensions.js +2 -2
- package/dist/esm/dataReshape/unfoldDimensions.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/pipeline/boxplot.d.ts +2 -0
- package/dist/esm/pipeline/advanced/chart/pipeline/boxplot.js +33 -0
- package/dist/esm/pipeline/advanced/chart/pipeline/boxplot.js.map +1 -0
- package/dist/esm/pipeline/advanced/chart/pipeline/histogram.d.ts +2 -0
- package/dist/esm/pipeline/advanced/chart/pipeline/histogram.js +34 -0
- package/dist/esm/pipeline/advanced/chart/pipeline/histogram.js.map +1 -0
- package/dist/esm/pipeline/advanced/chart/pipeline/index.d.ts +2 -0
- package/dist/esm/pipeline/advanced/chart/pipeline/index.js +3 -1
- package/dist/esm/pipeline/advanced/chart/pipes/config/boxplot.d.ts +2 -0
- package/dist/esm/pipeline/advanced/chart/pipes/config/boxplot.js +31 -0
- package/dist/esm/pipeline/advanced/chart/pipes/config/boxplot.js.map +1 -0
- package/dist/esm/pipeline/advanced/chart/pipes/config/dualAxis.js +2 -1
- package/dist/esm/pipeline/advanced/chart/pipes/config/dualAxis.js.map +1 -1
- package/dist/esm/pipeline/advanced/chart/pipes/config/histogram.d.ts +2 -0
- package/dist/esm/pipeline/advanced/chart/pipes/config/histogram.js +33 -0
- package/dist/esm/pipeline/advanced/chart/pipes/config/histogram.js.map +1 -0
- package/dist/esm/pipeline/advanced/chart/pipes/config/index.d.ts +3 -1
- package/dist/esm/pipeline/advanced/chart/pipes/config/index.js +3 -1
- package/dist/esm/pipeline/advanced/chart/pipes/config/index.js.map +1 -1
- package/dist/esm/pipeline/advanced/chart/pipes/encoding/boxplot.d.ts +3 -0
- package/dist/esm/pipeline/advanced/chart/pipes/encoding/boxplot.js +80 -0
- package/dist/esm/pipeline/advanced/chart/pipes/encoding/boxplot.js.map +1 -0
- package/dist/esm/pipeline/advanced/chart/pipes/encoding/histogram.d.ts +3 -0
- package/dist/esm/pipeline/advanced/chart/pipes/encoding/histogram.js +78 -0
- package/dist/esm/pipeline/advanced/chart/pipes/encoding/histogram.js.map +1 -0
- package/dist/esm/pipeline/advanced/chart/pipes/encoding/index.d.ts +2 -0
- package/dist/esm/pipeline/advanced/chart/pipes/encoding/index.js +3 -1
- package/dist/esm/pipeline/advanced/chart/pipes/index.d.ts +1 -0
- package/dist/esm/pipeline/advanced/chart/pipes/index.js +1 -0
- package/dist/esm/pipeline/advanced/chart/pipes/measures/buildMeasures.js.map +1 -1
- package/dist/esm/pipeline/advanced/chart/pipes/regressionLine/index.d.ts +1 -0
- package/dist/esm/pipeline/advanced/chart/pipes/regressionLine/index.js +2 -0
- package/dist/esm/pipeline/advanced/chart/pipes/regressionLine/regressionLine.d.ts +2 -0
- package/dist/esm/pipeline/advanced/chart/pipes/regressionLine/regressionLine.js +8 -0
- package/dist/esm/pipeline/advanced/chart/pipes/regressionLine/regressionLine.js.map +1 -0
- package/dist/esm/pipeline/advanced/chart/pipes/reshape/index.d.ts +4 -0
- package/dist/esm/pipeline/advanced/chart/pipes/reshape/index.js +5 -1
- package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithBoxplotEncoding.d.ts +2 -0
- package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithBoxplotEncoding.js +96 -0
- package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithBoxplotEncoding.js.map +1 -0
- package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithHistogramEncoding.d.ts +2 -0
- package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithHistogramEncoding.js +96 -0
- package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithHistogramEncoding.js.map +1 -0
- package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithBoxplotEncoding.d.ts +2 -0
- package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithBoxplotEncoding.js +84 -0
- package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithBoxplotEncoding.js.map +1 -0
- package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithHistogramEncoding.d.ts +2 -0
- package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithHistogramEncoding.js +86 -0
- package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithHistogramEncoding.js.map +1 -0
- package/dist/esm/pipeline/spec/chart/pipeline/bar.js +0 -1
- package/dist/esm/pipeline/spec/chart/pipeline/bar.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipeline/boxplot.d.ts +2 -0
- package/dist/esm/pipeline/spec/chart/pipeline/boxplot.js +52 -0
- package/dist/esm/pipeline/spec/chart/pipeline/boxplot.js.map +1 -0
- package/dist/esm/pipeline/spec/chart/pipeline/dualAxis.js +5 -1
- package/dist/esm/pipeline/spec/chart/pipeline/dualAxis.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipeline/histogram.d.ts +2 -0
- package/dist/esm/pipeline/spec/chart/pipeline/histogram.js +52 -0
- package/dist/esm/pipeline/spec/chart/pipeline/histogram.js.map +1 -0
- package/dist/esm/pipeline/spec/chart/pipeline/index.d.ts +2 -0
- package/dist/esm/pipeline/spec/chart/pipeline/index.js +3 -1
- package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationAreaBand.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationPoint.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/dataset/datasetBoxplot.d.ts +2 -0
- package/dist/esm/pipeline/spec/chart/pipes/dataset/datasetBoxplot.js +18 -0
- package/dist/esm/pipeline/spec/chart/pipes/dataset/datasetBoxplot.js.map +1 -0
- package/dist/esm/pipeline/spec/chart/pipes/dataset/datasetHistogram.d.ts +2 -0
- package/dist/esm/pipeline/spec/chart/pipes/dataset/datasetHistogram.js +18 -0
- package/dist/esm/pipeline/spec/chart/pipes/dataset/datasetHistogram.js.map +1 -0
- package/dist/esm/pipeline/spec/chart/pipes/dataset/index.d.ts +2 -0
- package/dist/esm/pipeline/spec/chart/pipes/dataset/index.js +3 -1
- package/dist/esm/pipeline/spec/chart/pipes/dataset/progressive.js +4 -8
- package/dist/esm/pipeline/spec/chart/pipes/dataset/progressive.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/index.d.ts +1 -0
- package/dist/esm/pipeline/spec/chart/pipes/index.js +1 -0
- package/dist/esm/pipeline/spec/chart/pipes/init/boxplot.d.ts +2 -0
- package/dist/esm/pipeline/spec/chart/pipes/init/boxplot.js +37 -0
- package/dist/esm/pipeline/spec/chart/pipes/init/boxplot.js.map +1 -0
- package/dist/esm/pipeline/spec/chart/pipes/init/histogram.d.ts +2 -0
- package/dist/esm/pipeline/spec/chart/pipes/init/histogram.js +21 -0
- package/dist/esm/pipeline/spec/chart/pipes/init/histogram.js.map +1 -0
- package/dist/esm/pipeline/spec/chart/pipes/init/index.d.ts +2 -0
- package/dist/esm/pipeline/spec/chart/pipes/init/index.js +3 -1
- package/dist/esm/pipeline/spec/chart/pipes/init/pivot.js +1 -0
- package/dist/esm/pipeline/spec/chart/pipes/init/pivot.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/label/label.d.ts +15 -4
- package/dist/esm/pipeline/spec/chart/pipes/label/label.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/label/labelDualAxis.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/label/labelPie.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/label/labelScatter.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/legend/pivotColorLegend.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/legend/pivotDiscreteLegend.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/markStyle/pointState.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/pivotChart/pivotColumnDimensions.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/pivotChart/pivotGridStyle.js +49 -14
- package/dist/esm/pipeline/spec/chart/pipes/pivotChart/pivotGridStyle.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/pivotChart/pivotIndicators.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/pivotChart/pivotRowDimensions.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/regressionLine/histogramRegressionLine.d.ts +2 -0
- package/dist/esm/pipeline/spec/chart/pipes/regressionLine/histogramRegressionLine.js +126 -0
- package/dist/esm/pipeline/spec/chart/pipes/regressionLine/histogramRegressionLine.js.map +1 -0
- package/dist/esm/pipeline/spec/chart/pipes/regressionLine/index.d.ts +1 -0
- package/dist/esm/pipeline/spec/chart/pipes/regressionLine/index.js +1 -0
- package/dist/esm/pipeline/spec/chart/pipes/stack/stackCornerRadius.js +1 -0
- package/dist/esm/pipeline/spec/chart/pipes/stack/stackCornerRadius.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/tooltip/index.d.ts +2 -0
- package/dist/esm/pipeline/spec/chart/pipes/tooltip/index.js +3 -1
- package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipBoxplot.d.ts +2 -0
- package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipBoxplot.js +98 -0
- package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipBoxplot.js.map +1 -0
- package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipHistogram.d.ts +2 -0
- package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipHistogram.js +69 -0
- package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipHistogram.js.map +1 -0
- package/dist/esm/pipeline/spec/table/pipes/columns/measuresToColumns.js.map +1 -1
- package/dist/esm/pipeline/spec/table/pipes/indicators/pivotDataConfig.js +1 -2
- package/dist/esm/pipeline/spec/table/pipes/indicators/pivotDataConfig.js.map +1 -1
- package/dist/esm/pipeline/spec/table/pipes/indicators/pivotIndicators.js.map +1 -1
- package/dist/esm/pipeline/spec/table/pipes/init/pivotTable.js +1 -0
- package/dist/esm/pipeline/spec/table/pipes/init/pivotTable.js.map +1 -1
- package/dist/esm/pipeline/spec/table/pipes/init/table.js +1 -0
- package/dist/esm/pipeline/spec/table/pipes/init/table.js.map +1 -1
- package/dist/esm/pipeline/spec/table/pipes/theme/bodyStyle.js +1 -0
- package/dist/esm/pipeline/spec/table/pipes/theme/bodyStyle.js.map +1 -1
- package/dist/esm/pipeline/spec/table/pipes/theme/cornerHeaderStyle.js.map +1 -1
- package/dist/esm/pipeline/spec/table/pipes/theme/frameStyle.js.map +1 -1
- package/dist/esm/pipeline/spec/table/pipes/theme/headerStyle.js.map +1 -1
- package/dist/esm/pipeline/spec/table/pipes/theme/rowHeaderStyle.js.map +1 -1
- package/dist/esm/pipeline/spec/table/pipes/theme/scrollStyle.js.map +1 -1
- package/dist/esm/pipeline/spec/table/pipes/theme/selectionStyle.js.map +1 -1
- package/dist/esm/pipeline/spec/table/pipes/theme/type.d.ts +13 -0
- package/dist/esm/pipeline/spec/table/pipes/theme/type.js +0 -0
- package/dist/esm/pipeline/utils/constant.d.ts +2 -0
- package/dist/esm/pipeline/utils/constant.js +3 -1
- package/dist/esm/pipeline/utils/constant.js.map +1 -1
- package/dist/esm/theme/common/regressionLine.d.ts +4 -0
- package/dist/esm/theme/common/regressionLine.js +16 -0
- package/dist/esm/theme/common/regressionLine.js.map +1 -0
- package/dist/esm/theme/common/table.d.ts +17 -8
- package/dist/esm/theme/common/table.js +11 -8
- package/dist/esm/theme/common/table.js.map +1 -1
- package/dist/esm/theme/dark/dark.js +18 -0
- package/dist/esm/theme/dark/dark.js.map +1 -1
- package/dist/esm/theme/light/light.js +18 -0
- package/dist/esm/theme/light/light.js.map +1 -1
- package/dist/esm/types/advancedVSeed.d.ts +1441 -17
- package/dist/esm/types/advancedVSeed.js +3 -2
- package/dist/esm/types/advancedVSeed.js.map +1 -1
- package/dist/esm/types/chartType/area/zArea.d.ts +9 -0
- package/dist/esm/types/chartType/areaPercent/zAreaPercent.d.ts +9 -0
- package/dist/esm/types/chartType/bar/zBar.d.ts +9 -0
- package/dist/esm/types/chartType/barParallel/zBarParallel.d.ts +9 -0
- package/dist/esm/types/chartType/barPercent/zBarPercent.d.ts +9 -0
- package/dist/esm/types/chartType/boxplot/boxplot.d.ts +144 -0
- package/dist/esm/types/chartType/boxplot/boxplot.js +0 -0
- 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 +1185 -0
- package/dist/esm/types/chartType/boxplot/zBoxplot.js +30 -0
- package/dist/esm/types/chartType/boxplot/zBoxplot.js.map +1 -0
- package/dist/esm/types/chartType/column/zColumn.d.ts +25 -0
- package/dist/esm/types/chartType/column/zColumn.js +3 -1
- package/dist/esm/types/chartType/column/zColumn.js.map +1 -1
- package/dist/esm/types/chartType/columnParallel/zColumnParallel.d.ts +9 -0
- package/dist/esm/types/chartType/columnPercent/zColumnPercent.d.ts +9 -0
- package/dist/esm/types/chartType/donut/zDonut.d.ts +9 -0
- package/dist/esm/types/chartType/funnel/zFunnel.d.ts +9 -0
- package/dist/esm/types/chartType/histogram/histogram.d.ts +127 -0
- package/dist/esm/types/chartType/histogram/histogram.js +0 -0
- package/dist/esm/types/chartType/histogram/index.d.ts +2 -0
- package/dist/esm/types/chartType/histogram/index.js +1 -0
- package/dist/esm/types/chartType/histogram/zHistogram.d.ts +1377 -0
- package/dist/esm/types/chartType/histogram/zHistogram.js +32 -0
- package/dist/esm/types/chartType/histogram/zHistogram.js.map +1 -0
- package/dist/esm/types/chartType/index.d.ts +3 -0
- package/dist/esm/types/chartType/index.js +2 -0
- package/dist/esm/types/chartType/line/zLine.d.ts +9 -0
- package/dist/esm/types/chartType/pie/zPie.d.ts +9 -0
- package/dist/esm/types/chartType/radar/zRadar.d.ts +9 -0
- package/dist/esm/types/chartType/rose/zRose.d.ts +9 -0
- package/dist/esm/types/chartType/roseParallel/zRoseParallel.d.ts +9 -0
- package/dist/esm/types/chartType/scatter/zScatter.d.ts +9 -0
- package/dist/esm/types/properties/chartType/chartType.d.ts +3 -1
- package/dist/esm/types/properties/chartType/chartType.js +3 -1
- package/dist/esm/types/properties/chartType/chartType.js.map +1 -1
- package/dist/esm/types/properties/config/area.d.ts +4 -0
- package/dist/esm/types/properties/config/bar.d.ts +6 -0
- package/dist/esm/types/properties/config/boxplot.d.ts +326 -0
- package/dist/esm/types/properties/config/boxplot.js +27 -0
- package/dist/esm/types/properties/config/boxplot.js.map +1 -0
- package/dist/esm/types/properties/config/column.d.ts +6 -0
- package/dist/esm/types/properties/config/config.d.ts +697 -0
- package/dist/esm/types/properties/config/config.js +5 -1
- package/dist/esm/types/properties/config/config.js.map +1 -1
- package/dist/esm/types/properties/config/dualAxis.d.ts +2 -0
- package/dist/esm/types/properties/config/funnel.d.ts +2 -0
- package/dist/esm/types/properties/config/heatmap.d.ts +2 -0
- package/dist/esm/types/properties/config/histogram.d.ts +339 -0
- package/dist/esm/types/properties/config/histogram.js +32 -0
- package/dist/esm/types/properties/config/histogram.js.map +1 -0
- package/dist/esm/types/properties/config/index.d.ts +1 -0
- package/dist/esm/types/properties/config/index.js +1 -0
- package/dist/esm/types/properties/config/line.d.ts +2 -0
- package/dist/esm/types/properties/config/pie.d.ts +6 -0
- package/dist/esm/types/properties/config/pivotGrid/pivotGrid.d.ts +2 -0
- package/dist/esm/types/properties/config/pivotGrid/pivotGrid.js +3 -1
- package/dist/esm/types/properties/config/pivotGrid/pivotGrid.js.map +1 -1
- package/dist/esm/types/properties/config/rose.d.ts +4 -0
- package/dist/esm/types/properties/config/scatter.d.ts +2 -0
- package/dist/esm/types/properties/config/whiskers/index.d.ts +3 -0
- package/dist/esm/types/properties/config/whiskers/index.js +5 -0
- package/dist/esm/types/properties/config/whiskers/index.js.map +1 -0
- package/dist/esm/types/properties/encoding/encoding.d.ts +36 -0
- package/dist/esm/types/properties/encoding/measureEncoding.d.ts +1 -1
- package/dist/esm/types/properties/encoding/zEncoding.d.ts +9 -0
- package/dist/esm/types/properties/encoding/zEncoding.js +10 -1
- package/dist/esm/types/properties/encoding/zEncoding.js.map +1 -1
- package/dist/esm/types/properties/index.d.ts +1 -0
- package/dist/esm/types/properties/index.js +1 -0
- package/dist/esm/types/properties/regressionLine/histogramRegressionLine.d.ts +45 -0
- package/dist/esm/types/properties/regressionLine/histogramRegressionLine.js +0 -0
- package/dist/esm/types/properties/regressionLine/index.d.ts +2 -0
- package/dist/esm/types/properties/regressionLine/index.js +1 -0
- package/dist/esm/types/properties/regressionLine/zHistogramRegressionLine.d.ts +11 -0
- package/dist/esm/types/properties/regressionLine/zHistogramRegressionLine.js +17 -0
- package/dist/esm/types/properties/regressionLine/zHistogramRegressionLine.js.map +1 -0
- package/dist/esm/types/properties/theme/customTheme.d.ts +1935 -541
- package/dist/esm/types/vseed.d.ts +2 -2
- package/dist/esm/types/zVseed.d.ts +2717 -0
- package/dist/esm/types/zVseed.js +4 -2
- package/dist/esm/types/zVseed.js.map +1 -1
- package/dist/umd/index.js +1748 -140
- package/dist/umd/index.js.map +1 -1
- package/package.json +6 -4
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { unique } from "remeda";
|
|
2
|
+
import { MeasureName } from "../../../../../dataReshape/index.js";
|
|
3
|
+
import { findAllMeasures } from "../../../../utils/index.js";
|
|
4
|
+
import { addColorToEncoding } from "./color/index.js";
|
|
5
|
+
const defaultEncodingForHistogram = (advancedVSeed)=>{
|
|
6
|
+
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
|
7
|
+
const measures = findAllMeasures(vseedMeasures);
|
|
8
|
+
const encoding = {};
|
|
9
|
+
generateDefaultDimensionEncoding(dimensions, encoding);
|
|
10
|
+
generateDefaultMeasureEncoding(measures, encoding);
|
|
11
|
+
return {
|
|
12
|
+
...advancedVSeed,
|
|
13
|
+
encoding
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
const encodingForHistogram = (advancedVSeed)=>{
|
|
17
|
+
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
|
18
|
+
const measures = findAllMeasures(vseedMeasures);
|
|
19
|
+
const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
|
|
20
|
+
const hasMeasureEncoding = measures.some((item)=>item.encoding);
|
|
21
|
+
const encoding = {};
|
|
22
|
+
if (hasDimensionEncoding) generateDimensionEncoding(dimensions, encoding, false);
|
|
23
|
+
else generateDefaultDimensionEncoding(dimensions, encoding);
|
|
24
|
+
if (hasMeasureEncoding) generateMeasureEncoding(measures, encoding);
|
|
25
|
+
else generateDefaultMeasureEncoding(measures, encoding);
|
|
26
|
+
return {
|
|
27
|
+
...advancedVSeed,
|
|
28
|
+
encoding
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
const generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
|
32
|
+
const dimensionsWithoutMeasureName = dimensions.filter((item)=>item.id !== MeasureName);
|
|
33
|
+
const uniqueDimIds = unique(dimensionsWithoutMeasureName.map((d)=>d.id));
|
|
34
|
+
encoding.detail = encoding.color;
|
|
35
|
+
encoding.tooltip = uniqueDimIds.filter((d)=>d !== MeasureName);
|
|
36
|
+
encoding.label = [];
|
|
37
|
+
encoding.row = [];
|
|
38
|
+
encoding.column = [];
|
|
39
|
+
};
|
|
40
|
+
const generateDimensionEncoding = (dimensions, encoding, isMultiMeasure)=>{
|
|
41
|
+
addColorToEncoding(dimensions, encoding, isMultiMeasure);
|
|
42
|
+
encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
|
43
|
+
if (encoding.detail?.length === 0) encoding.detail = encoding.color;
|
|
44
|
+
encoding.tooltip = unique(dimensions.map((item)=>item.id));
|
|
45
|
+
encoding.tooltip = encoding.tooltip?.filter((d)=>d !== MeasureName);
|
|
46
|
+
encoding.label = unique(dimensions.filter((item)=>'label' === item.encoding).map((item)=>item.id));
|
|
47
|
+
encoding.label = encoding.label?.filter((d)=>d !== MeasureName);
|
|
48
|
+
};
|
|
49
|
+
const generateDefaultMeasureEncoding = (measures, encoding)=>{
|
|
50
|
+
encoding.value = unique(measures.filter((item)=>'value' === item.encoding || !item.encoding).map((item)=>item.id));
|
|
51
|
+
encoding.x0 = unique(measures.filter((item)=>'x0' === item.encoding).map((item)=>item.id));
|
|
52
|
+
encoding.x1 = unique(measures.filter((item)=>'x1' === item.encoding).map((item)=>item.id));
|
|
53
|
+
encoding.y = unique(measures.filter((item)=>'yAxis' === item.encoding).map((item)=>item.id));
|
|
54
|
+
};
|
|
55
|
+
const generateMeasureEncoding = (measures, encoding)=>{
|
|
56
|
+
encoding.value = unique(measures.filter((item)=>'value' === item.encoding || !item.encoding).map((item)=>item.id));
|
|
57
|
+
encoding.x0 = unique(measures.filter((item)=>'x0' === item.encoding).map((item)=>item.id));
|
|
58
|
+
encoding.x1 = unique(measures.filter((item)=>'x1' === item.encoding).map((item)=>item.id));
|
|
59
|
+
encoding.y = unique(measures.filter((item)=>'yAxis' === item.encoding).map((item)=>item.id));
|
|
60
|
+
const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
|
61
|
+
if (color.length > 0) encoding.color = [
|
|
62
|
+
color[0]
|
|
63
|
+
];
|
|
64
|
+
const label = unique(measures.filter((item)=>'label' === item.encoding).map((item)=>item.id));
|
|
65
|
+
encoding.label = unique([
|
|
66
|
+
...encoding.label || [],
|
|
67
|
+
...label
|
|
68
|
+
]);
|
|
69
|
+
const tooltip = unique(measures.filter((item)=>'tooltip' === item.encoding).map((item)=>item.id));
|
|
70
|
+
encoding.tooltip = unique([
|
|
71
|
+
...encoding.tooltip || [],
|
|
72
|
+
...label,
|
|
73
|
+
...tooltip
|
|
74
|
+
]);
|
|
75
|
+
};
|
|
76
|
+
export { defaultEncodingForHistogram, encodingForHistogram };
|
|
77
|
+
|
|
78
|
+
//# sourceMappingURL=histogram.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline/advanced/chart/pipes/encoding/histogram.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/histogram.ts"],"sourcesContent":["import { unique } from 'remeda'\nimport { MeasureName } from 'src/dataReshape'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Dimension, Dimensions, Encoding, Measure, Measures } from 'src/types'\nimport { addColorToEncoding } from './color'\n\nexport const defaultEncodingForHistogram: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n const encoding: Encoding = {}\n generateDefaultDimensionEncoding(dimensions, encoding)\n generateDefaultMeasureEncoding(measures, encoding)\n return { ...advancedVSeed, encoding }\n}\n\nexport const encodingForHistogram: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n\n const hasDimensionEncoding = dimensions.some((item: Dimension) => item.encoding)\n const hasMeasureEncoding = measures.some((item: Measure) => item.encoding)\n const encoding: Encoding = {}\n\n if (hasDimensionEncoding) {\n generateDimensionEncoding(dimensions, encoding, false)\n } else {\n generateDefaultDimensionEncoding(dimensions, encoding)\n }\n\n if (hasMeasureEncoding) {\n generateMeasureEncoding(measures, encoding)\n } else {\n generateDefaultMeasureEncoding(measures, encoding)\n }\n\n return { ...advancedVSeed, encoding }\n}\n\n/**\n * --------------------维度--------------------\n */\nconst generateDefaultDimensionEncoding = (dimensions: Dimensions, encoding: Encoding) => {\n const dimensionsWithoutMeasureName = dimensions.filter((item) => item.id !== MeasureName)\n const uniqueDimIds = unique(dimensionsWithoutMeasureName.map((d) => d.id))\n\n encoding.detail = encoding.color\n encoding.tooltip = uniqueDimIds.filter((d: string) => d !== MeasureName) // 展示指标名称之外的所有维度\n encoding.label = [] // 默认不展示标签\n encoding.row = [] // 默认不进行行透视\n encoding.column = [] // 默认不进行列透视\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding, isMultiMeasure: boolean) => {\n // color\n addColorToEncoding(dimensions, encoding, isMultiMeasure)\n\n // detail\n encoding.detail = unique(dimensions.filter((item) => item.encoding === 'detail').map((item) => item.id))\n if (encoding.detail?.length === 0) {\n encoding.detail = encoding.color\n }\n\n // tooltip\n encoding.tooltip = unique(dimensions.map((item) => item.id))\n encoding.tooltip = encoding.tooltip?.filter((d) => d !== MeasureName)\n\n // label\n encoding.label = unique(dimensions.filter((item) => item.encoding === 'label').map((item) => item.id))\n encoding.label = encoding.label?.filter((d) => d !== MeasureName)\n}\n\n/**\n * --------------------指标--------------------\n */\nconst generateDefaultMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.value = unique(measures.filter((item) => item.encoding === 'value' || !item.encoding).map((item) => item.id))\n encoding.x0 = unique(measures.filter((item) => item.encoding === 'x0').map((item) => item.id))\n encoding.x1 = unique(measures.filter((item) => item.encoding === 'x1').map((item) => item.id))\n encoding.y = unique(measures.filter((item) => item.encoding === 'yAxis').map((item) => item.id))\n}\nconst generateMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.value = unique(measures.filter((item) => item.encoding === 'value' || !item.encoding).map((item) => item.id))\n encoding.x0 = unique(measures.filter((item) => item.encoding === 'x0').map((item) => item.id))\n encoding.x1 = unique(measures.filter((item) => item.encoding === 'x1').map((item) => item.id))\n encoding.y = unique(measures.filter((item) => item.encoding === 'yAxis').map((item) => item.id))\n const color = unique(measures.filter((item) => item.encoding === 'color').map((item) => item.id))\n if (color.length > 0) {\n encoding.color = [color[0]]\n }\n\n // label\n const label = unique(measures.filter((item) => item.encoding === 'label').map((item) => item.id))\n encoding.label = unique([...(encoding.label || []), ...label])\n\n // tooltip\n const tooltip = unique(measures.filter((item) => item.encoding === 'tooltip').map((item) => item.id))\n encoding.tooltip = unique([...(encoding.tooltip || []), ...label, ...tooltip])\n}\n"],"names":["defaultEncodingForHistogram","advancedVSeed","vseedMeasures","dimensions","measures","findAllMeasures","encoding","generateDefaultDimensionEncoding","generateDefaultMeasureEncoding","encodingForHistogram","hasDimensionEncoding","item","hasMeasureEncoding","generateDimensionEncoding","generateMeasureEncoding","dimensionsWithoutMeasureName","MeasureName","uniqueDimIds","unique","d","isMultiMeasure","addColorToEncoding","color","label","tooltip"],"mappings":"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"}
|
|
@@ -9,3 +9,5 @@ export { encodingForScatter, defaultEncodingForScatter } from './scatter';
|
|
|
9
9
|
export { encodingForLine, defaultEncodingForLine } from './line';
|
|
10
10
|
export { encodingForRose, defaultEncodingForRose } from './rose';
|
|
11
11
|
export { encodingAdapter } from './adapter';
|
|
12
|
+
export { encodingForHistogram, defaultEncodingForHistogram } from './histogram';
|
|
13
|
+
export { encodingForBoxplot, defaultEncodingForBoxplot } from './boxplot';
|
|
@@ -9,4 +9,6 @@ import { defaultEncodingForScatter, encodingForScatter } from "./scatter.js";
|
|
|
9
9
|
import { defaultEncodingForLine, encodingForLine } from "./line.js";
|
|
10
10
|
import { defaultEncodingForRose, encodingForRose } from "./rose.js";
|
|
11
11
|
import { encodingAdapter } from "./adapter/index.js";
|
|
12
|
-
|
|
12
|
+
import { defaultEncodingForHistogram, encodingForHistogram } from "./histogram.js";
|
|
13
|
+
import { defaultEncodingForBoxplot, encodingForBoxplot } from "./boxplot.js";
|
|
14
|
+
export { defaultEncodingForBar, defaultEncodingForBoxplot, defaultEncodingForColumn, defaultEncodingForDualAxis, defaultEncodingForFunnel, defaultEncodingForHeatmap, defaultEncodingForHistogram, defaultEncodingForLine, defaultEncodingForPie, defaultEncodingForRadar, defaultEncodingForRose, defaultEncodingForScatter, encodingAdapter, encodingForBar, encodingForBoxplot, encodingForColumn, encodingForDualAxis, encodingForFunnel, encodingForHeatmap, encodingForHistogram, encodingForLine, encodingForPie, encodingForRadar, encodingForRose, encodingForScatter };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline/advanced/chart/pipes/measures/buildMeasures.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/measures/buildMeasures.ts"],"sourcesContent":["import type { AdvancedPipe,
|
|
1
|
+
{"version":3,"file":"pipeline/advanced/chart/pipes/measures/buildMeasures.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/measures/buildMeasures.ts"],"sourcesContent":["import type { AdvancedPipe, MeasureGroup, Measures, MeasureTree, VSeed } from 'src/types'\nimport { isMeasureTreeWithChildren, isMeasureTreeWithParentId, normalizeMeasureTree } from './utils'\nimport { isPivotChart } from 'src/pipeline/utils'\nimport { DEFAULT_PARENT_ID } from 'src/pipeline/utils/constant'\n\nexport const buildMeasures: AdvancedPipe = (advancedVSeed) => {\n // 带Children的指标树, 不进行任何处理\n if (isMeasureTreeWithChildren(advancedVSeed.measures)) {\n advancedVSeed.measures = normalizeMeasureTree(advancedVSeed.measures as MeasureTree)\n return advancedVSeed\n }\n // 带parentId的指标树, 转换为带children的指标树\n if (isMeasureTreeWithParentId(advancedVSeed.measures)) {\n advancedVSeed.measures = generateMeasuresByParentId(advancedVSeed.measures as Measures)\n return advancedVSeed\n }\n\n /**\n * 透视图表, 自动生成指标树\n */\n if (isPivotChart(advancedVSeed as VSeed)) {\n advancedVSeed.measures = basicMeasuresToMeasureTree(advancedVSeed.measures as Measures)\n }\n\n return advancedVSeed\n}\n\nconst generateMeasuresByParentId = (measures: Measures): MeasureTree => {\n const measureTree: MeasureGroup[] = []\n\n measures.forEach((measure) => {\n const parent = measureTree.find((item) => item.id === measure.parentId)\n if (parent && 'children' in parent) {\n parent.children = parent.children || []\n parent.children.push(measure)\n } else if (measure.parentId) {\n measureTree.push({\n id: measure.parentId,\n children: [measure],\n })\n } else {\n measureTree.push({\n id: DEFAULT_PARENT_ID,\n children: [measure],\n })\n }\n })\n\n return measureTree\n}\n\nconst basicMeasuresToMeasureTree = (measures: Measures): MeasureTree => {\n const id = measures.map((item) => item.id).join('-')\n const alias = measures.map((item) => item.alias || item.id).join('-')\n return [\n {\n id,\n alias,\n children: measures,\n },\n ]\n}\n"],"names":["buildMeasures","advancedVSeed","isMeasureTreeWithChildren","normalizeMeasureTree","isMeasureTreeWithParentId","generateMeasuresByParentId","isPivotChart","basicMeasuresToMeasureTree","measures","measureTree","measure","parent","item","DEFAULT_PARENT_ID","id","alias"],"mappings":";;;AAKO,MAAMA,gBAA8B,CAACC;IAE1C,IAAIC,0BAA0BD,cAAc,QAAQ,GAAG;QACrDA,cAAc,QAAQ,GAAGE,qBAAqBF,cAAc,QAAQ;QACpE,OAAOA;IACT;IAEA,IAAIG,0BAA0BH,cAAc,QAAQ,GAAG;QACrDA,cAAc,QAAQ,GAAGI,2BAA2BJ,cAAc,QAAQ;QAC1E,OAAOA;IACT;IAKA,IAAIK,aAAaL,gBACfA,cAAc,QAAQ,GAAGM,2BAA2BN,cAAc,QAAQ;IAG5E,OAAOA;AACT;AAEA,MAAMI,6BAA6B,CAACG;IAClC,MAAMC,cAA8B,EAAE;IAEtCD,SAAS,OAAO,CAAC,CAACE;QAChB,MAAMC,SAASF,YAAY,IAAI,CAAC,CAACG,OAASA,KAAK,EAAE,KAAKF,QAAQ,QAAQ;QACtE,IAAIC,UAAU,cAAcA,QAAQ;YAClCA,OAAO,QAAQ,GAAGA,OAAO,QAAQ,IAAI,EAAE;YACvCA,OAAO,QAAQ,CAAC,IAAI,CAACD;QACvB,OAAO,IAAIA,QAAQ,QAAQ,EACzBD,YAAY,IAAI,CAAC;YACf,IAAIC,QAAQ,QAAQ;YACpB,UAAU;gBAACA;aAAQ;QACrB;aAEAD,YAAY,IAAI,CAAC;YACf,IAAII;YACJ,UAAU;gBAACH;aAAQ;QACrB;IAEJ;IAEA,OAAOD;AACT;AAEA,MAAMF,6BAA6B,CAACC;IAClC,MAAMM,KAAKN,SAAS,GAAG,CAAC,CAACI,OAASA,KAAK,EAAE,EAAE,IAAI,CAAC;IAChD,MAAMG,QAAQP,SAAS,GAAG,CAAC,CAACI,OAASA,KAAK,KAAK,IAAIA,KAAK,EAAE,EAAE,IAAI,CAAC;IACjE,OAAO;QACL;YACEE;YACAC;YACA,UAAUP;QACZ;KACD;AACH"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { regressionLine } from './regressionLine';
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
const regressionLine = (advancedVSeed, context)=>{
|
|
2
|
+
const { vseed } = context;
|
|
3
|
+
if ('histogramRegressionLine' in vseed && 'histogram' === vseed.chartType) advancedVSeed.histogramRegressionLine = vseed.histogramRegressionLine;
|
|
4
|
+
return advancedVSeed;
|
|
5
|
+
};
|
|
6
|
+
export { regressionLine };
|
|
7
|
+
|
|
8
|
+
//# sourceMappingURL=regressionLine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline/advanced/chart/pipes/regressionLine/regressionLine.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/regressionLine/regressionLine.ts"],"sourcesContent":["import type { AdvancedPipe } from 'src/types'\n\nexport const regressionLine: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n\n if ('histogramRegressionLine' in vseed && vseed.chartType === 'histogram') {\n advancedVSeed.histogramRegressionLine = vseed.histogramRegressionLine\n }\n\n return advancedVSeed\n}\n"],"names":["regressionLine","advancedVSeed","context","vseed"],"mappings":"AAEO,MAAMA,iBAA+B,CAACC,eAAeC;IAC1D,MAAM,EAAEC,KAAK,EAAE,GAAGD;IAElB,IAAI,6BAA6BC,SAASA,AAAoB,gBAApBA,MAAM,SAAS,EACvDF,cAAc,uBAAuB,GAAGE,MAAM,uBAAuB;IAGvE,OAAOF;AACT"}
|
|
@@ -2,3 +2,7 @@ export { pivotReshapeWithEncoding } from './pivotReshapeWithEncoding';
|
|
|
2
2
|
export { reshapeWithEncoding } from './reshapeWithEncoding';
|
|
3
3
|
export { reshapeWithDualEncoding } from './reshapeWithDualEncoding';
|
|
4
4
|
export { pivotReshapeWithDualEncoding } from './pivotReshapeWithDualEncoding';
|
|
5
|
+
export { reshapeWithBoxplotEncoding } from './reshapeWithBoxplotEncoding';
|
|
6
|
+
export { reshapeWithHistogramEncoding } from './reshapeWithHistogramEncoding';
|
|
7
|
+
export { pivotReshapeWithHistogramEncoding } from './pivotReshapeWithHistogramEncoding';
|
|
8
|
+
export { pivotReshapeWithBoxplotEncoding } from './pivotReshapeWithBoxplotEncoding';
|
|
@@ -2,4 +2,8 @@ import { pivotReshapeWithEncoding } from "./pivotReshapeWithEncoding.js";
|
|
|
2
2
|
import { reshapeWithEncoding } from "./reshapeWithEncoding.js";
|
|
3
3
|
import { reshapeWithDualEncoding } from "./reshapeWithDualEncoding.js";
|
|
4
4
|
import { pivotReshapeWithDualEncoding } from "./pivotReshapeWithDualEncoding.js";
|
|
5
|
-
|
|
5
|
+
import { reshapeWithBoxplotEncoding } from "./reshapeWithBoxplotEncoding.js";
|
|
6
|
+
import { reshapeWithHistogramEncoding } from "./reshapeWithHistogramEncoding.js";
|
|
7
|
+
import { pivotReshapeWithHistogramEncoding } from "./pivotReshapeWithHistogramEncoding.js";
|
|
8
|
+
import { pivotReshapeWithBoxplotEncoding } from "./pivotReshapeWithBoxplotEncoding.js";
|
|
9
|
+
export { pivotReshapeWithBoxplotEncoding, pivotReshapeWithDualEncoding, pivotReshapeWithEncoding, pivotReshapeWithHistogramEncoding, reshapeWithBoxplotEncoding, reshapeWithDualEncoding, reshapeWithEncoding, reshapeWithHistogramEncoding };
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { boxplot } from "@visactor/vdataset";
|
|
2
|
+
import { uniqueBy } from "remeda";
|
|
3
|
+
import { FoldMeasureId, FoldMeasureName, MaxMeasureId, MedianMeasureId, MinMeasureId, OutliersMeasureId, Q1MeasureValue, Q3MeasureValue, Separator, unfoldDimensions } from "../../../../../dataReshape/index.js";
|
|
4
|
+
const pivotReshapeWithBoxplotEncoding = (advancedVSeed, context)=>{
|
|
5
|
+
const result = {
|
|
6
|
+
...advancedVSeed
|
|
7
|
+
};
|
|
8
|
+
const { vseed } = context;
|
|
9
|
+
const { dataset, chartType } = vseed;
|
|
10
|
+
const { dimensions = [], measures = [], encoding = {}, config } = advancedVSeed;
|
|
11
|
+
const uniqDims = uniqueBy(dimensions, (item)=>item.id);
|
|
12
|
+
const chartConfig = config?.[chartType];
|
|
13
|
+
const whiskers = chartConfig?.whiskers;
|
|
14
|
+
const measureGroups = [];
|
|
15
|
+
if (measures) measures.forEach((measure)=>{
|
|
16
|
+
if (measure.children && measure.children.length > 0) measureGroups.push(measure);
|
|
17
|
+
});
|
|
18
|
+
const rowColumnFields = uniqueBy(dimensions.filter((dim)=>'row' === dim.encoding || 'column' === dim.encoding), (item)=>item.id);
|
|
19
|
+
const datasets = [];
|
|
20
|
+
const datasetReshapeInfo = [];
|
|
21
|
+
measureGroups.forEach((measureGroup, index)=>{
|
|
22
|
+
const subMeasures = measureGroup.children;
|
|
23
|
+
if (!subMeasures) return;
|
|
24
|
+
const groupId = measureGroup.id;
|
|
25
|
+
let newDatasets = [];
|
|
26
|
+
let foldInfo = {};
|
|
27
|
+
let unfoldInfo = {};
|
|
28
|
+
if (encoding.value?.length) encoding.value.forEach((f)=>{
|
|
29
|
+
const m = subMeasures.find((m)=>m.id === f);
|
|
30
|
+
const boxPlotData = boxplot(dataset, {
|
|
31
|
+
field: f,
|
|
32
|
+
groupField: [
|
|
33
|
+
...encoding.x ?? [],
|
|
34
|
+
...encoding.color ?? [],
|
|
35
|
+
...rowColumnFields.map((item)=>item.id)
|
|
36
|
+
],
|
|
37
|
+
whiskers,
|
|
38
|
+
outputNames: {
|
|
39
|
+
q1: Q1MeasureValue,
|
|
40
|
+
q3: Q3MeasureValue,
|
|
41
|
+
min: MinMeasureId,
|
|
42
|
+
max: MaxMeasureId,
|
|
43
|
+
median: MedianMeasureId,
|
|
44
|
+
outliers: OutliersMeasureId
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
boxPlotData.forEach((datum)=>{
|
|
48
|
+
datum[FoldMeasureId] = f;
|
|
49
|
+
datum[FoldMeasureName] = m?.alias ?? f;
|
|
50
|
+
});
|
|
51
|
+
const res = unfoldDimensions(boxPlotData, uniqDims, encoding, {
|
|
52
|
+
foldMeasureId: FoldMeasureId,
|
|
53
|
+
separator: Separator,
|
|
54
|
+
colorItemAsId: false
|
|
55
|
+
});
|
|
56
|
+
res.dataset.forEach((d)=>{
|
|
57
|
+
newDatasets.push(d);
|
|
58
|
+
});
|
|
59
|
+
unfoldInfo = res.unfoldInfo;
|
|
60
|
+
});
|
|
61
|
+
else if (encoding.q1?.length && encoding.q3?.length && encoding.min?.length && encoding.max?.length && encoding.median?.length) {
|
|
62
|
+
const res = unfoldDimensions(dataset, uniqDims, encoding, {
|
|
63
|
+
foldMeasureId: FoldMeasureId,
|
|
64
|
+
separator: Separator,
|
|
65
|
+
colorItemAsId: false
|
|
66
|
+
});
|
|
67
|
+
res.dataset.forEach((datum)=>{
|
|
68
|
+
datum[MaxMeasureId] = datum[encoding.max[0]];
|
|
69
|
+
datum[MinMeasureId] = datum[encoding.min[0]];
|
|
70
|
+
datum[Q1MeasureValue] = datum[encoding.q1[0]];
|
|
71
|
+
datum[Q3MeasureValue] = datum[encoding.q3[0]];
|
|
72
|
+
datum[MedianMeasureId] = datum[encoding.median[0]];
|
|
73
|
+
});
|
|
74
|
+
newDatasets = res.dataset;
|
|
75
|
+
foldInfo = {};
|
|
76
|
+
unfoldInfo = res.unfoldInfo;
|
|
77
|
+
}
|
|
78
|
+
const reshapeInfo = {
|
|
79
|
+
id: groupId,
|
|
80
|
+
index,
|
|
81
|
+
foldInfo,
|
|
82
|
+
unfoldInfo
|
|
83
|
+
};
|
|
84
|
+
datasets.push(newDatasets);
|
|
85
|
+
datasetReshapeInfo.push(reshapeInfo);
|
|
86
|
+
});
|
|
87
|
+
console.log(datasets);
|
|
88
|
+
return {
|
|
89
|
+
...result,
|
|
90
|
+
dataset: datasets,
|
|
91
|
+
datasetReshapeInfo: datasetReshapeInfo
|
|
92
|
+
};
|
|
93
|
+
};
|
|
94
|
+
export { pivotReshapeWithBoxplotEncoding };
|
|
95
|
+
|
|
96
|
+
//# sourceMappingURL=pivotReshapeWithBoxplotEncoding.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline/advanced/chart/pipes/reshape/pivotReshapeWithBoxplotEncoding.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithBoxplotEncoding.ts"],"sourcesContent":["import { boxplot } from '@visactor/vdataset'\nimport { uniqueBy } from 'remeda'\nimport {\n FoldMeasureId,\n FoldMeasureName,\n MaxMeasureId,\n MedianMeasureId,\n MinMeasureId,\n OutliersMeasureId,\n Q1MeasureValue,\n Q3MeasureValue,\n Separator,\n unfoldDimensions,\n} from 'src/dataReshape'\nimport type {\n AdvancedPipe,\n ColumnParallel,\n Dataset,\n DatasetReshapeInfo,\n Dimension,\n Encoding,\n MeasureGroup,\n} from 'src/types'\n\nexport const pivotReshapeWithBoxplotEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset, chartType } = vseed as ColumnParallel\n const { dimensions = [], measures = [], encoding = {}, config } = advancedVSeed\n const uniqDims = uniqueBy(dimensions, (item: Dimension) => item.id)\n const chartConfig = config?.[chartType as 'boxPlot']\n const whiskers = chartConfig?.whiskers\n\n const measureGroups: MeasureGroup[] = []\n if (measures) {\n measures.forEach((measure: MeasureGroup) => {\n if (measure.children && measure.children.length > 0) {\n measureGroups.push(measure)\n }\n })\n }\n\n const rowColumnFields = uniqueBy(\n dimensions.filter((dim: Dimension) => dim.encoding === 'row' || dim.encoding === 'column'),\n (item: Dimension) => item.id,\n )\n const datasets: Dataset = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n\n measureGroups.forEach((measureGroup, index) => {\n const subMeasures = measureGroup.children\n if (!subMeasures) {\n return\n }\n const groupId = measureGroup.id\n let newDatasets: any[] = []\n let foldInfo: any = {}\n let unfoldInfo: any = {}\n\n if (encoding.value?.length) {\n encoding.value.forEach((f) => {\n const m = subMeasures.find((m) => m.id === f)\n const boxPlotData = boxplot(dataset, {\n field: f,\n groupField: [\n ...(encoding.x ?? []),\n ...(encoding.color ?? []),\n ...rowColumnFields.map((item: Dimension) => item.id),\n ] as string[],\n whiskers,\n outputNames: {\n q1: Q1MeasureValue,\n q3: Q3MeasureValue,\n min: MinMeasureId,\n max: MaxMeasureId,\n median: MedianMeasureId,\n outliers: OutliersMeasureId,\n },\n }) as Dataset\n\n boxPlotData.forEach((datum) => {\n datum[FoldMeasureId] = f\n datum[FoldMeasureName] = m?.alias ?? f\n })\n\n const res = unfoldDimensions(boxPlotData, uniqDims, encoding as Encoding, {\n foldMeasureId: FoldMeasureId,\n separator: Separator,\n colorItemAsId: false,\n })\n\n res.dataset.forEach((d) => {\n newDatasets.push(d)\n })\n unfoldInfo = res.unfoldInfo\n })\n } else if (\n encoding.q1?.length &&\n encoding.q3?.length &&\n encoding.min?.length &&\n encoding.max?.length &&\n encoding.median?.length\n ) {\n const res = unfoldDimensions(dataset, uniqDims, encoding as Encoding, {\n foldMeasureId: FoldMeasureId,\n separator: Separator,\n colorItemAsId: false,\n })\n\n res.dataset.forEach((datum) => {\n datum[MaxMeasureId] = datum[encoding.max![0]]\n datum[MinMeasureId] = datum[encoding.min![0]]\n datum[Q1MeasureValue] = datum[encoding.q1![0]]\n datum[Q3MeasureValue] = datum[encoding.q3![0]]\n datum[MedianMeasureId] = datum[encoding.median![0]]\n })\n\n newDatasets = res.dataset\n foldInfo = {}\n unfoldInfo = res.unfoldInfo\n }\n\n const reshapeInfo = {\n id: groupId,\n index,\n foldInfo,\n unfoldInfo,\n }\n datasets.push(newDatasets)\n datasetReshapeInfo.push(reshapeInfo)\n })\n\n console.log(datasets)\n\n return {\n ...result,\n dataset: datasets,\n datasetReshapeInfo: datasetReshapeInfo,\n }\n}\n"],"names":["pivotReshapeWithBoxplotEncoding","advancedVSeed","context","result","vseed","dataset","chartType","dimensions","measures","encoding","config","uniqDims","uniqueBy","item","chartConfig","whiskers","measureGroups","measure","rowColumnFields","dim","datasets","datasetReshapeInfo","measureGroup","index","subMeasures","groupId","newDatasets","foldInfo","unfoldInfo","f","m","boxPlotData","boxplot","Q1MeasureValue","Q3MeasureValue","MinMeasureId","MaxMeasureId","MedianMeasureId","OutliersMeasureId","datum","FoldMeasureId","FoldMeasureName","res","unfoldDimensions","Separator","d","reshapeInfo","console"],"mappings":"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"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { bin } from "@visactor/vdataset";
|
|
2
|
+
import { uniqueBy } from "remeda";
|
|
3
|
+
import { BinCountMeasureId, BinEndMeasureId, BinPercentageMeasureId, BinStartMeasureId, FoldMeasureId, FoldMeasureName, FoldMeasureValue, Separator, dataReshapeByEncoding, unfoldDimensions } from "../../../../../dataReshape/index.js";
|
|
4
|
+
import { getColorMeasureId } from "../../../../spec/chart/pipes/index.js";
|
|
5
|
+
const pivotReshapeWithHistogramEncoding = (advancedVSeed, context)=>{
|
|
6
|
+
const result = {
|
|
7
|
+
...advancedVSeed
|
|
8
|
+
};
|
|
9
|
+
const { vseed } = context;
|
|
10
|
+
const { dataset, chartType } = vseed;
|
|
11
|
+
const { dimensions = [], measures = [], encoding = {}, config } = advancedVSeed;
|
|
12
|
+
const colorMeasureId = getColorMeasureId(advancedVSeed, vseed);
|
|
13
|
+
const uniqDims = uniqueBy(dimensions, (item)=>item.id);
|
|
14
|
+
const chartConfig = config?.[chartType];
|
|
15
|
+
const binCount = chartConfig?.binCount;
|
|
16
|
+
const binStep = chartConfig?.binStep;
|
|
17
|
+
const binValueType = chartConfig?.binValueType;
|
|
18
|
+
const measureGroups = [];
|
|
19
|
+
if (measures) measures.forEach((measure)=>{
|
|
20
|
+
if (measure.children && measure.children.length > 0) measureGroups.push(measure);
|
|
21
|
+
});
|
|
22
|
+
const rowColumnFields = uniqueBy(dimensions.filter((dim)=>'row' === dim.encoding || 'column' === dim.encoding), (item)=>item.id);
|
|
23
|
+
const datasets = [];
|
|
24
|
+
const datasetReshapeInfo = [];
|
|
25
|
+
measureGroups.forEach((measureGroup, index)=>{
|
|
26
|
+
const subMeasures = measureGroup.children;
|
|
27
|
+
if (!subMeasures) return;
|
|
28
|
+
const groupId = measureGroup.id;
|
|
29
|
+
let newDatasets = [];
|
|
30
|
+
let foldInfo = {};
|
|
31
|
+
let unfoldInfo = {};
|
|
32
|
+
if (encoding.value?.length) {
|
|
33
|
+
const valueField = encoding.value[0];
|
|
34
|
+
const m = subMeasures.find((m)=>m.id === valueField);
|
|
35
|
+
const binData = bin(dataset, {
|
|
36
|
+
field: valueField,
|
|
37
|
+
groupField: [
|
|
38
|
+
...encoding.x ?? [],
|
|
39
|
+
...encoding.color ?? [],
|
|
40
|
+
...rowColumnFields.map((item)=>item.id)
|
|
41
|
+
],
|
|
42
|
+
bins: binCount,
|
|
43
|
+
step: binStep,
|
|
44
|
+
outputNames: {
|
|
45
|
+
x0: BinStartMeasureId,
|
|
46
|
+
x1: BinEndMeasureId,
|
|
47
|
+
count: BinCountMeasureId,
|
|
48
|
+
percentage: BinPercentageMeasureId
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
binData.forEach((datum)=>{
|
|
52
|
+
datum[FoldMeasureId] = valueField;
|
|
53
|
+
datum[FoldMeasureName] = m?.alias ?? valueField;
|
|
54
|
+
datum[FoldMeasureValue] = 'percentage' === binValueType ? datum[BinPercentageMeasureId] : datum[BinCountMeasureId];
|
|
55
|
+
});
|
|
56
|
+
const res = unfoldDimensions(binData, uniqDims, encoding, {
|
|
57
|
+
foldMeasureId: FoldMeasureId,
|
|
58
|
+
separator: Separator,
|
|
59
|
+
colorItemAsId: false
|
|
60
|
+
});
|
|
61
|
+
res.dataset.forEach((d)=>{
|
|
62
|
+
newDatasets.push(d);
|
|
63
|
+
});
|
|
64
|
+
unfoldInfo = res.unfoldInfo;
|
|
65
|
+
} else if (encoding.x0?.length && encoding.x1?.length && encoding.y?.length) {
|
|
66
|
+
const res = dataReshapeByEncoding(dataset, uniqueBy(dimensions, (item)=>item.id), subMeasures.filter((item)=>encoding.y?.includes(item.id)).slice(0, 1), encoding, {
|
|
67
|
+
colorItemAsId: false,
|
|
68
|
+
colorMeasureId
|
|
69
|
+
});
|
|
70
|
+
res.dataset.forEach((datum)=>{
|
|
71
|
+
datum[BinStartMeasureId] = datum[encoding.x0[0]];
|
|
72
|
+
datum[BinEndMeasureId] = datum[encoding.x1[0]];
|
|
73
|
+
datum[FoldMeasureId] = datum[encoding.y[0]];
|
|
74
|
+
});
|
|
75
|
+
newDatasets = res.dataset;
|
|
76
|
+
foldInfo = res.foldInfo;
|
|
77
|
+
unfoldInfo = res.unfoldInfo;
|
|
78
|
+
}
|
|
79
|
+
const reshapeInfo = {
|
|
80
|
+
id: groupId,
|
|
81
|
+
index,
|
|
82
|
+
foldInfo,
|
|
83
|
+
unfoldInfo
|
|
84
|
+
};
|
|
85
|
+
datasets.push(newDatasets);
|
|
86
|
+
datasetReshapeInfo.push(reshapeInfo);
|
|
87
|
+
});
|
|
88
|
+
return {
|
|
89
|
+
...result,
|
|
90
|
+
dataset: datasets,
|
|
91
|
+
datasetReshapeInfo: datasetReshapeInfo
|
|
92
|
+
};
|
|
93
|
+
};
|
|
94
|
+
export { pivotReshapeWithHistogramEncoding };
|
|
95
|
+
|
|
96
|
+
//# sourceMappingURL=pivotReshapeWithHistogramEncoding.js.map
|
package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithHistogramEncoding.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline/advanced/chart/pipes/reshape/pivotReshapeWithHistogramEncoding.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithHistogramEncoding.ts"],"sourcesContent":["import { bin } from '@visactor/vdataset'\nimport { uniqueBy } from 'remeda'\nimport {\n BinCountMeasureId,\n BinEndMeasureId,\n BinPercentageMeasureId,\n BinStartMeasureId,\n dataReshapeByEncoding,\n FoldMeasureId,\n FoldMeasureName,\n FoldMeasureValue,\n Separator,\n unfoldDimensions,\n} from 'src/dataReshape'\nimport { getColorMeasureId } from 'src/pipeline/spec/chart/pipes'\nimport type {\n AdvancedPipe,\n AdvancedVSeed,\n ColumnParallel,\n Dataset,\n DatasetReshapeInfo,\n Datum,\n Dimension,\n Encoding,\n MeasureGroup,\n} from 'src/types'\n\nexport const pivotReshapeWithHistogramEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset, chartType } = vseed as ColumnParallel\n const { dimensions = [], measures = [], encoding = {}, config } = advancedVSeed\n const colorMeasureId = getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed)\n const uniqDims = uniqueBy(dimensions, (item: Dimension) => item.id)\n const chartConfig = config?.[chartType as 'histogram']\n const binCount = chartConfig?.binCount\n const binStep = chartConfig?.binStep\n const binValueType = chartConfig?.binValueType\n\n const measureGroups: MeasureGroup[] = []\n if (measures) {\n measures.forEach((measure: MeasureGroup) => {\n if (measure.children && measure.children.length > 0) {\n measureGroups.push(measure)\n }\n })\n }\n const rowColumnFields = uniqueBy(\n dimensions.filter((dim: Dimension) => dim.encoding === 'row' || dim.encoding === 'column'),\n (item: Dimension) => item.id,\n )\n\n const datasets: Dataset = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n\n measureGroups.forEach((measureGroup, index) => {\n const subMeasures = measureGroup.children\n if (!subMeasures) {\n return\n }\n const groupId = measureGroup.id\n\n let newDatasets: any[] = []\n let foldInfo: any = {}\n let unfoldInfo: any = {}\n\n if (encoding.value?.length) {\n const valueField = encoding.value[0]\n const m = subMeasures.find((m) => m.id === valueField)\n const binData = bin(dataset, {\n field: valueField,\n groupField: [\n ...(encoding.x ?? []),\n ...(encoding.color ?? []),\n ...rowColumnFields.map((item: Dimension) => item.id),\n ] as string[],\n bins: binCount,\n step: binStep,\n outputNames: {\n x0: BinStartMeasureId,\n x1: BinEndMeasureId,\n count: BinCountMeasureId,\n percentage: BinPercentageMeasureId,\n },\n }) as Dataset\n\n binData.forEach((datum: Datum) => {\n datum[FoldMeasureId] = valueField\n datum[FoldMeasureName] = m?.alias ?? valueField\n datum[FoldMeasureValue] =\n binValueType === 'percentage' ? datum[BinPercentageMeasureId] : datum[BinCountMeasureId]\n })\n\n const res = unfoldDimensions(binData, uniqDims, encoding as Encoding, {\n foldMeasureId: FoldMeasureId,\n separator: Separator,\n colorItemAsId: false,\n })\n\n res.dataset.forEach((d) => {\n newDatasets.push(d)\n })\n unfoldInfo = res.unfoldInfo\n } else if (encoding.x0?.length && encoding.x1?.length && encoding.y?.length) {\n const res = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (item: Dimension) => item.id),\n subMeasures.filter((item) => encoding.y?.includes(item.id)).slice(0, 1),\n encoding as Encoding,\n {\n colorItemAsId: false,\n colorMeasureId,\n },\n )\n\n res.dataset.forEach((datum) => {\n datum[BinStartMeasureId] = datum[encoding.x0![0]]\n datum[BinEndMeasureId] = datum[encoding.x1![0]]\n datum[FoldMeasureId] = datum[encoding.y![0]]\n })\n\n newDatasets = res.dataset\n foldInfo = res.foldInfo\n unfoldInfo = res.unfoldInfo\n }\n\n const reshapeInfo = {\n id: groupId,\n index,\n foldInfo,\n unfoldInfo,\n }\n datasets.push(newDatasets)\n datasetReshapeInfo.push(reshapeInfo)\n })\n\n return {\n ...result,\n dataset: datasets,\n datasetReshapeInfo: datasetReshapeInfo,\n }\n}\n"],"names":["pivotReshapeWithHistogramEncoding","advancedVSeed","context","result","vseed","dataset","chartType","dimensions","measures","encoding","config","colorMeasureId","getColorMeasureId","uniqDims","uniqueBy","item","chartConfig","binCount","binStep","binValueType","measureGroups","measure","rowColumnFields","dim","datasets","datasetReshapeInfo","measureGroup","index","subMeasures","groupId","newDatasets","foldInfo","unfoldInfo","valueField","m","binData","bin","BinStartMeasureId","BinEndMeasureId","BinCountMeasureId","BinPercentageMeasureId","datum","FoldMeasureId","FoldMeasureName","FoldMeasureValue","res","unfoldDimensions","Separator","d","dataReshapeByEncoding","reshapeInfo"],"mappings":"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"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { FoldMeasureId, FoldMeasureName, MaxMeasureId, MedianMeasureId, MinMeasureId, OutliersMeasureId, Q1MeasureValue, Q3MeasureValue, Separator, unfoldDimensions } from "../../../../../dataReshape/index.js";
|
|
2
|
+
import { findAllMeasures } from "../../../../utils/index.js";
|
|
3
|
+
import { boxplot } from "@visactor/vdataset";
|
|
4
|
+
import { uniqueBy } from "remeda";
|
|
5
|
+
const reshapeWithBoxplotEncoding = (advancedVSeed, context)=>{
|
|
6
|
+
const result = {
|
|
7
|
+
...advancedVSeed
|
|
8
|
+
};
|
|
9
|
+
const { vseed } = context;
|
|
10
|
+
const { dataset, chartType } = vseed;
|
|
11
|
+
const { dimensions = [], measures = [], encoding = {}, config } = advancedVSeed;
|
|
12
|
+
const uniqDims = uniqueBy(dimensions, (item)=>item.id);
|
|
13
|
+
const whiskers = config?.[chartType]?.whiskers;
|
|
14
|
+
let newDatasets = [];
|
|
15
|
+
let foldInfo = {};
|
|
16
|
+
let unfoldInfo = {};
|
|
17
|
+
const allMeasures = findAllMeasures(measures);
|
|
18
|
+
if (encoding.value?.length) encoding.value.forEach((f)=>{
|
|
19
|
+
const m = allMeasures.find((m)=>m.id === f);
|
|
20
|
+
const boxPlotData = boxplot(dataset, {
|
|
21
|
+
field: f,
|
|
22
|
+
groupField: [
|
|
23
|
+
...encoding.x ?? [],
|
|
24
|
+
...encoding.color ?? []
|
|
25
|
+
],
|
|
26
|
+
whiskers,
|
|
27
|
+
outputNames: {
|
|
28
|
+
q1: Q1MeasureValue,
|
|
29
|
+
q3: Q3MeasureValue,
|
|
30
|
+
min: MinMeasureId,
|
|
31
|
+
max: MaxMeasureId,
|
|
32
|
+
median: MedianMeasureId,
|
|
33
|
+
outliers: OutliersMeasureId
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
boxPlotData.forEach((datum)=>{
|
|
37
|
+
datum[FoldMeasureId] = f;
|
|
38
|
+
datum[FoldMeasureName] = m?.alias ?? f;
|
|
39
|
+
});
|
|
40
|
+
const res = unfoldDimensions(boxPlotData, uniqDims, encoding, {
|
|
41
|
+
foldMeasureId: FoldMeasureId,
|
|
42
|
+
separator: Separator,
|
|
43
|
+
colorItemAsId: false
|
|
44
|
+
});
|
|
45
|
+
res.dataset.forEach((d)=>{
|
|
46
|
+
newDatasets.push(d);
|
|
47
|
+
});
|
|
48
|
+
unfoldInfo = res.unfoldInfo;
|
|
49
|
+
});
|
|
50
|
+
else if (encoding.q1?.length && encoding.q3?.length && encoding.min?.length && encoding.max?.length && encoding.median?.length) {
|
|
51
|
+
const res = unfoldDimensions(dataset, uniqDims, encoding, {
|
|
52
|
+
foldMeasureId: FoldMeasureId,
|
|
53
|
+
separator: Separator,
|
|
54
|
+
colorItemAsId: false
|
|
55
|
+
});
|
|
56
|
+
res.dataset.forEach((datum)=>{
|
|
57
|
+
datum[MaxMeasureId] = datum[encoding.max[0]];
|
|
58
|
+
datum[MinMeasureId] = datum[encoding.min[0]];
|
|
59
|
+
datum[Q1MeasureValue] = datum[encoding.q1[0]];
|
|
60
|
+
datum[Q3MeasureValue] = datum[encoding.q3[0]];
|
|
61
|
+
datum[MedianMeasureId] = datum[encoding.median[0]];
|
|
62
|
+
});
|
|
63
|
+
newDatasets = res.dataset;
|
|
64
|
+
foldInfo = {};
|
|
65
|
+
unfoldInfo = res.unfoldInfo;
|
|
66
|
+
}
|
|
67
|
+
return {
|
|
68
|
+
...result,
|
|
69
|
+
dataset: newDatasets,
|
|
70
|
+
datasetReshapeInfo: [
|
|
71
|
+
{
|
|
72
|
+
id: String(chartType),
|
|
73
|
+
index: 0,
|
|
74
|
+
foldInfo,
|
|
75
|
+
unfoldInfo
|
|
76
|
+
}
|
|
77
|
+
],
|
|
78
|
+
dimensions,
|
|
79
|
+
measures
|
|
80
|
+
};
|
|
81
|
+
};
|
|
82
|
+
export { reshapeWithBoxplotEncoding };
|
|
83
|
+
|
|
84
|
+
//# sourceMappingURL=reshapeWithBoxplotEncoding.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline/advanced/chart/pipes/reshape/reshapeWithBoxplotEncoding.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/reshapeWithBoxplotEncoding.ts"],"sourcesContent":["import {\n FoldMeasureId,\n FoldMeasureName,\n MaxMeasureId,\n MedianMeasureId,\n MinMeasureId,\n OutliersMeasureId,\n Q1MeasureValue,\n Q3MeasureValue,\n Separator,\n unfoldDimensions,\n} from 'src/dataReshape'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, ColumnParallel, Dataset, Encoding } from 'src/types'\nimport { boxplot } from '@visactor/vdataset'\nimport { uniqueBy } from 'remeda'\n\nexport const reshapeWithBoxplotEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset, chartType } = vseed as ColumnParallel\n const { dimensions = [], measures = [], encoding = {}, config } = advancedVSeed\n const uniqDims = uniqueBy(dimensions, (item) => item.id)\n\n const whiskers = config?.[chartType as 'boxPlot']?.whiskers\n\n let newDatasets: any[] = []\n let foldInfo: any = {}\n let unfoldInfo: any = {}\n\n const allMeasures = findAllMeasures(measures)\n\n if (encoding.value?.length) {\n encoding.value.forEach((f) => {\n const m = allMeasures.find((m) => m.id === f)\n const boxPlotData = boxplot(dataset, {\n field: f,\n groupField: [...(encoding.x ?? []), ...(encoding.color ?? [])] as string[],\n whiskers,\n outputNames: {\n q1: Q1MeasureValue,\n q3: Q3MeasureValue,\n min: MinMeasureId,\n max: MaxMeasureId,\n median: MedianMeasureId,\n outliers: OutliersMeasureId,\n },\n }) as Dataset\n\n boxPlotData.forEach((datum) => {\n datum[FoldMeasureId] = f\n datum[FoldMeasureName] = m?.alias ?? f\n })\n\n const res = unfoldDimensions(boxPlotData, uniqDims, encoding as Encoding, {\n foldMeasureId: FoldMeasureId,\n separator: Separator,\n colorItemAsId: false,\n })\n\n res.dataset.forEach((d) => {\n newDatasets.push(d)\n })\n unfoldInfo = res.unfoldInfo\n })\n } else if (\n encoding.q1?.length &&\n encoding.q3?.length &&\n encoding.min?.length &&\n encoding.max?.length &&\n encoding.median?.length\n ) {\n const res = unfoldDimensions(dataset, uniqDims, encoding as Encoding, {\n foldMeasureId: FoldMeasureId,\n separator: Separator,\n colorItemAsId: false,\n })\n\n res.dataset.forEach((datum) => {\n datum[MaxMeasureId] = datum[encoding.max![0]]\n datum[MinMeasureId] = datum[encoding.min![0]]\n datum[Q1MeasureValue] = datum[encoding.q1![0]]\n datum[Q3MeasureValue] = datum[encoding.q3![0]]\n datum[MedianMeasureId] = datum[encoding.median![0]]\n })\n\n newDatasets = res.dataset\n foldInfo = {}\n unfoldInfo = res.unfoldInfo\n }\n\n return {\n ...result,\n dataset: newDatasets,\n datasetReshapeInfo: [\n {\n id: String(chartType),\n index: 0,\n foldInfo,\n unfoldInfo,\n },\n ],\n dimensions,\n measures,\n }\n}\n"],"names":["reshapeWithBoxplotEncoding","advancedVSeed","context","result","vseed","dataset","chartType","dimensions","measures","encoding","config","uniqDims","uniqueBy","item","whiskers","newDatasets","foldInfo","unfoldInfo","allMeasures","findAllMeasures","f","m","boxPlotData","boxplot","Q1MeasureValue","Q3MeasureValue","MinMeasureId","MaxMeasureId","MedianMeasureId","OutliersMeasureId","datum","FoldMeasureId","FoldMeasureName","res","unfoldDimensions","Separator","d","String"],"mappings":";;;;AAiBO,MAAMA,6BAA2C,CAACC,eAAeC;IACtE,MAAMC,SAAS;QAAE,GAAGF,aAAa;IAAC;IAClC,MAAM,EAAEG,KAAK,EAAE,GAAGF;IAClB,MAAM,EAAEG,OAAO,EAAEC,SAAS,EAAE,GAAGF;IAC/B,MAAM,EAAEG,aAAa,EAAE,EAAEC,WAAW,EAAE,EAAEC,WAAW,CAAC,CAAC,EAAEC,MAAM,EAAE,GAAGT;IAClE,MAAMU,WAAWC,SAASL,YAAY,CAACM,OAASA,KAAK,EAAE;IAEvD,MAAMC,WAAWJ,QAAQ,CAACJ,UAAuB,EAAE;IAEnD,IAAIS,cAAqB,EAAE;IAC3B,IAAIC,WAAgB,CAAC;IACrB,IAAIC,aAAkB,CAAC;IAEvB,MAAMC,cAAcC,gBAAgBX;IAEpC,IAAIC,SAAS,KAAK,EAAE,QAClBA,SAAS,KAAK,CAAC,OAAO,CAAC,CAACW;QACtB,MAAMC,IAAIH,YAAY,IAAI,CAAC,CAACG,IAAMA,EAAE,EAAE,KAAKD;QAC3C,MAAME,cAAcC,QAAQlB,SAAS;YACnC,OAAOe;YACP,YAAY;mBAAKX,SAAS,CAAC,IAAI,EAAE;mBAAOA,SAAS,KAAK,IAAI,EAAE;aAAE;YAC9DK;YACA,aAAa;gBACX,IAAIU;gBACJ,IAAIC;gBACJ,KAAKC;gBACL,KAAKC;gBACL,QAAQC;gBACR,UAAUC;YACZ;QACF;QAEAP,YAAY,OAAO,CAAC,CAACQ;YACnBA,KAAK,CAACC,cAAc,GAAGX;YACvBU,KAAK,CAACE,gBAAgB,GAAGX,GAAG,SAASD;QACvC;QAEA,MAAMa,MAAMC,iBAAiBZ,aAAaX,UAAUF,UAAsB;YACxE,eAAesB;YACf,WAAWI;YACX,eAAe;QACjB;QAEAF,IAAI,OAAO,CAAC,OAAO,CAAC,CAACG;YACnBrB,YAAY,IAAI,CAACqB;QACnB;QACAnB,aAAagB,IAAI,UAAU;IAC7B;SACK,IACLxB,SAAS,EAAE,EAAE,UACbA,SAAS,EAAE,EAAE,UACbA,SAAS,GAAG,EAAE,UACdA,SAAS,GAAG,EAAE,UACdA,SAAS,MAAM,EAAE,QACjB;QACA,MAAMwB,MAAMC,iBAAiB7B,SAASM,UAAUF,UAAsB;YACpE,eAAesB;YACf,WAAWI;YACX,eAAe;QACjB;QAEAF,IAAI,OAAO,CAAC,OAAO,CAAC,CAACH;YACnBA,KAAK,CAACH,aAAa,GAAGG,KAAK,CAACrB,SAAS,GAAI,CAAC,EAAE,CAAC;YAC7CqB,KAAK,CAACJ,aAAa,GAAGI,KAAK,CAACrB,SAAS,GAAI,CAAC,EAAE,CAAC;YAC7CqB,KAAK,CAACN,eAAe,GAAGM,KAAK,CAACrB,SAAS,EAAG,CAAC,EAAE,CAAC;YAC9CqB,KAAK,CAACL,eAAe,GAAGK,KAAK,CAACrB,SAAS,EAAG,CAAC,EAAE,CAAC;YAC9CqB,KAAK,CAACF,gBAAgB,GAAGE,KAAK,CAACrB,SAAS,MAAO,CAAC,EAAE,CAAC;QACrD;QAEAM,cAAckB,IAAI,OAAO;QACzBjB,WAAW,CAAC;QACZC,aAAagB,IAAI,UAAU;IAC7B;IAEA,OAAO;QACL,GAAG9B,MAAM;QACT,SAASY;QACT,oBAAoB;YAClB;gBACE,IAAIsB,OAAO/B;gBACX,OAAO;gBACPU;gBACAC;YACF;SACD;QACDV;QACAC;IACF;AACF"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { BinCountMeasureId, BinEndMeasureId, BinPercentageMeasureId, BinStartMeasureId, FoldMeasureId, FoldMeasureName, FoldMeasureValue, Separator, dataReshapeByEncoding, unfoldDimensions } from "../../../../../dataReshape/index.js";
|
|
2
|
+
import { findAllMeasures } from "../../../../utils/index.js";
|
|
3
|
+
import { bin } from "@visactor/vdataset";
|
|
4
|
+
import { uniqueBy } from "remeda";
|
|
5
|
+
import { getColorMeasureId } from "../../../../spec/chart/pipes/color/colorAdapter.js";
|
|
6
|
+
const reshapeWithHistogramEncoding = (advancedVSeed, context)=>{
|
|
7
|
+
const result = {
|
|
8
|
+
...advancedVSeed
|
|
9
|
+
};
|
|
10
|
+
const { vseed } = context;
|
|
11
|
+
const { dataset, chartType } = vseed;
|
|
12
|
+
const { dimensions = [], measures = [], encoding = {}, config } = advancedVSeed;
|
|
13
|
+
const uniqDims = uniqueBy(dimensions, (item)=>item.id);
|
|
14
|
+
const chartConfig = config?.[chartType];
|
|
15
|
+
const binCount = chartConfig?.binCount;
|
|
16
|
+
const binStep = chartConfig?.binStep;
|
|
17
|
+
const binValueType = chartConfig?.binValueType;
|
|
18
|
+
let newDatasets = [];
|
|
19
|
+
let foldInfo = {};
|
|
20
|
+
let unfoldInfo = {};
|
|
21
|
+
const colorMeasureId = getColorMeasureId(advancedVSeed, vseed);
|
|
22
|
+
const allMeasures = findAllMeasures(measures);
|
|
23
|
+
if (encoding.value?.length) {
|
|
24
|
+
const valueField = encoding.value[0];
|
|
25
|
+
const m = allMeasures.find((m)=>m.id === valueField);
|
|
26
|
+
const binData = bin(dataset, {
|
|
27
|
+
field: valueField,
|
|
28
|
+
groupField: [
|
|
29
|
+
...encoding.x ?? [],
|
|
30
|
+
...encoding.color ?? []
|
|
31
|
+
],
|
|
32
|
+
bins: binCount,
|
|
33
|
+
step: binStep,
|
|
34
|
+
outputNames: {
|
|
35
|
+
x0: BinStartMeasureId,
|
|
36
|
+
x1: BinEndMeasureId,
|
|
37
|
+
count: BinCountMeasureId,
|
|
38
|
+
percentage: BinPercentageMeasureId
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
binData.forEach((datum)=>{
|
|
42
|
+
datum[FoldMeasureId] = valueField;
|
|
43
|
+
datum[FoldMeasureName] = m?.alias ?? valueField;
|
|
44
|
+
datum[FoldMeasureValue] = 'percentage' === binValueType ? datum[BinPercentageMeasureId] : datum[BinCountMeasureId];
|
|
45
|
+
});
|
|
46
|
+
const res = unfoldDimensions(binData, uniqDims, encoding, {
|
|
47
|
+
foldMeasureId: FoldMeasureId,
|
|
48
|
+
separator: Separator,
|
|
49
|
+
colorItemAsId: false
|
|
50
|
+
});
|
|
51
|
+
res.dataset.forEach((d)=>{
|
|
52
|
+
newDatasets.push(d);
|
|
53
|
+
});
|
|
54
|
+
unfoldInfo = res.unfoldInfo;
|
|
55
|
+
} else if (encoding.x0?.length && encoding.x1?.length && encoding.y?.length) {
|
|
56
|
+
const res = dataReshapeByEncoding(dataset, uniqueBy(dimensions, (item)=>item.id), findAllMeasures(measures).filter((item)=>encoding.y?.includes(item.id)).slice(0, 1), encoding, {
|
|
57
|
+
colorItemAsId: false,
|
|
58
|
+
colorMeasureId
|
|
59
|
+
});
|
|
60
|
+
res.dataset.forEach((datum)=>{
|
|
61
|
+
datum[BinStartMeasureId] = datum[encoding.x0[0]];
|
|
62
|
+
datum[BinEndMeasureId] = datum[encoding.x1[0]];
|
|
63
|
+
datum[FoldMeasureId] = datum[encoding.y[0]];
|
|
64
|
+
});
|
|
65
|
+
newDatasets = res.dataset;
|
|
66
|
+
foldInfo = res.foldInfo;
|
|
67
|
+
unfoldInfo = res.unfoldInfo;
|
|
68
|
+
}
|
|
69
|
+
return {
|
|
70
|
+
...result,
|
|
71
|
+
dataset: newDatasets,
|
|
72
|
+
datasetReshapeInfo: [
|
|
73
|
+
{
|
|
74
|
+
id: String(chartType),
|
|
75
|
+
index: 0,
|
|
76
|
+
foldInfo,
|
|
77
|
+
unfoldInfo
|
|
78
|
+
}
|
|
79
|
+
],
|
|
80
|
+
dimensions,
|
|
81
|
+
measures
|
|
82
|
+
};
|
|
83
|
+
};
|
|
84
|
+
export { reshapeWithHistogramEncoding };
|
|
85
|
+
|
|
86
|
+
//# sourceMappingURL=reshapeWithHistogramEncoding.js.map
|