@visactor/vseed 0.1.42 → 0.1.43
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/advanced/colorItems.d.ts +4 -1
- package/dist/esm/builder/builder/advanced/colorItems.js +1 -1
- package/dist/esm/builder/builder/advanced/colorItems.js.map +1 -1
- package/dist/esm/builder/builder/builder.d.ts +12 -3
- package/dist/esm/dataReshape/constant.d.ts +1 -0
- package/dist/esm/dataReshape/constant.js +2 -1
- package/dist/esm/dataReshape/constant.js.map +1 -1
- package/dist/esm/dataReshape/dataReshapeByEncoding.d.ts +1 -0
- package/dist/esm/dataReshape/dataReshapeByEncoding.js +3 -2
- package/dist/esm/dataReshape/dataReshapeByEncoding.js.map +1 -1
- package/dist/esm/dataReshape/foldMeasures.d.ts +1 -0
- package/dist/esm/dataReshape/foldMeasures.js +5 -2
- package/dist/esm/dataReshape/foldMeasures.js.map +1 -1
- package/dist/esm/dataReshape/unfoldDimensions.js +14 -9
- package/dist/esm/dataReshape/unfoldDimensions.js.map +1 -1
- package/dist/esm/pipeline/advanced/chart/pipeline/area.js +2 -2
- package/dist/esm/pipeline/advanced/chart/pipeline/area.js.map +1 -1
- package/dist/esm/pipeline/advanced/chart/pipeline/areaPercent.js +2 -2
- package/dist/esm/pipeline/advanced/chart/pipeline/areaPercent.js.map +1 -1
- package/dist/esm/pipeline/advanced/chart/pipeline/bar.js +2 -2
- package/dist/esm/pipeline/advanced/chart/pipeline/bar.js.map +1 -1
- package/dist/esm/pipeline/advanced/chart/pipeline/barParallel.js +2 -2
- package/dist/esm/pipeline/advanced/chart/pipeline/barParallel.js.map +1 -1
- package/dist/esm/pipeline/advanced/chart/pipeline/barPercent.js +2 -2
- package/dist/esm/pipeline/advanced/chart/pipeline/barPercent.js.map +1 -1
- package/dist/esm/pipeline/advanced/chart/pipeline/boxplot.js +2 -2
- package/dist/esm/pipeline/advanced/chart/pipeline/boxplot.js.map +1 -1
- package/dist/esm/pipeline/advanced/chart/pipeline/column.js +2 -2
- package/dist/esm/pipeline/advanced/chart/pipeline/column.js.map +1 -1
- package/dist/esm/pipeline/advanced/chart/pipeline/columnParallel.js +2 -2
- package/dist/esm/pipeline/advanced/chart/pipeline/columnParallel.js.map +1 -1
- package/dist/esm/pipeline/advanced/chart/pipeline/columnPercent.js +2 -2
- package/dist/esm/pipeline/advanced/chart/pipeline/columnPercent.js.map +1 -1
- package/dist/esm/pipeline/advanced/chart/pipeline/donut.js +2 -2
- package/dist/esm/pipeline/advanced/chart/pipeline/donut.js.map +1 -1
- package/dist/esm/pipeline/advanced/chart/pipeline/dualAxis.js +2 -2
- package/dist/esm/pipeline/advanced/chart/pipeline/dualAxis.js.map +1 -1
- package/dist/esm/pipeline/advanced/chart/pipeline/funnel.js +2 -2
- package/dist/esm/pipeline/advanced/chart/pipeline/funnel.js.map +1 -1
- package/dist/esm/pipeline/advanced/chart/pipeline/heatmap.js +2 -2
- package/dist/esm/pipeline/advanced/chart/pipeline/heatmap.js.map +1 -1
- package/dist/esm/pipeline/advanced/chart/pipeline/histogram.js +2 -2
- package/dist/esm/pipeline/advanced/chart/pipeline/histogram.js.map +1 -1
- package/dist/esm/pipeline/advanced/chart/pipeline/line.js +2 -2
- package/dist/esm/pipeline/advanced/chart/pipeline/line.js.map +1 -1
- package/dist/esm/pipeline/advanced/chart/pipeline/pie.js +2 -2
- package/dist/esm/pipeline/advanced/chart/pipeline/pie.js.map +1 -1
- package/dist/esm/pipeline/advanced/chart/pipeline/radar.js +2 -2
- package/dist/esm/pipeline/advanced/chart/pipeline/radar.js.map +1 -1
- package/dist/esm/pipeline/advanced/chart/pipeline/rose.js +2 -2
- package/dist/esm/pipeline/advanced/chart/pipeline/rose.js.map +1 -1
- package/dist/esm/pipeline/advanced/chart/pipeline/roseParallel.js +2 -2
- package/dist/esm/pipeline/advanced/chart/pipeline/roseParallel.js.map +1 -1
- package/dist/esm/pipeline/advanced/chart/pipeline/scatter.js +2 -2
- package/dist/esm/pipeline/advanced/chart/pipeline/scatter.js.map +1 -1
- package/dist/esm/pipeline/advanced/chart/pipes/analysis/sortLegend.js +3 -6
- package/dist/esm/pipeline/advanced/chart/pipes/analysis/sortLegend.js.map +1 -1
- package/dist/esm/pipeline/advanced/chart/pipes/default/{defaultMeasureName.d.ts → defaultMeasureId.d.ts} +1 -1
- package/dist/esm/pipeline/advanced/chart/pipes/default/defaultMeasureId.js +16 -0
- package/dist/esm/pipeline/advanced/chart/pipes/default/defaultMeasureId.js.map +1 -0
- package/dist/esm/pipeline/advanced/chart/pipes/default/index.d.ts +1 -1
- package/dist/esm/pipeline/advanced/chart/pipes/default/index.js +2 -2
- package/dist/esm/pipeline/advanced/chart/pipes/encoding/bar.js +6 -6
- package/dist/esm/pipeline/advanced/chart/pipes/encoding/bar.js.map +1 -1
- package/dist/esm/pipeline/advanced/chart/pipes/encoding/boxplot.js +7 -7
- package/dist/esm/pipeline/advanced/chart/pipes/encoding/boxplot.js.map +1 -1
- package/dist/esm/pipeline/advanced/chart/pipes/encoding/color/addColorToEncoding.d.ts +1 -1
- package/dist/esm/pipeline/advanced/chart/pipes/encoding/color/addColorToEncoding.js +4 -4
- package/dist/esm/pipeline/advanced/chart/pipes/encoding/color/addColorToEncoding.js.map +1 -1
- package/dist/esm/pipeline/advanced/chart/pipes/encoding/column.js +6 -6
- package/dist/esm/pipeline/advanced/chart/pipes/encoding/column.js.map +1 -1
- package/dist/esm/pipeline/advanced/chart/pipes/encoding/dualAxis.js +6 -6
- package/dist/esm/pipeline/advanced/chart/pipes/encoding/dualAxis.js.map +1 -1
- package/dist/esm/pipeline/advanced/chart/pipes/encoding/funnel.js +5 -5
- package/dist/esm/pipeline/advanced/chart/pipes/encoding/funnel.js.map +1 -1
- package/dist/esm/pipeline/advanced/chart/pipes/encoding/heatmap.js +7 -7
- package/dist/esm/pipeline/advanced/chart/pipes/encoding/heatmap.js.map +1 -1
- package/dist/esm/pipeline/advanced/chart/pipes/encoding/histogram.js +6 -6
- package/dist/esm/pipeline/advanced/chart/pipes/encoding/histogram.js.map +1 -1
- package/dist/esm/pipeline/advanced/chart/pipes/encoding/line.js +5 -5
- package/dist/esm/pipeline/advanced/chart/pipes/encoding/line.js.map +1 -1
- package/dist/esm/pipeline/advanced/chart/pipes/encoding/pie.js +5 -5
- package/dist/esm/pipeline/advanced/chart/pipes/encoding/pie.js.map +1 -1
- package/dist/esm/pipeline/advanced/chart/pipes/encoding/radar.js +5 -5
- package/dist/esm/pipeline/advanced/chart/pipes/encoding/radar.js.map +1 -1
- package/dist/esm/pipeline/advanced/chart/pipes/encoding/rose.js +6 -6
- package/dist/esm/pipeline/advanced/chart/pipes/encoding/rose.js.map +1 -1
- package/dist/esm/pipeline/advanced/chart/pipes/encoding/scatter.js +7 -7
- package/dist/esm/pipeline/advanced/chart/pipes/encoding/scatter.js.map +1 -1
- package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithDualEncoding.js +6 -3
- package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithDualEncoding.js.map +1 -1
- package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithEncoding.js +4 -1
- package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithEncoding.js.map +1 -1
- package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithScatterEncoding.js +6 -3
- package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithScatterEncoding.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/annotation/splitLine.js +1 -4
- package/dist/esm/pipeline/spec/chart/pipes/annotation/splitLine.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/color/color.d.ts +4 -1
- package/dist/esm/pipeline/spec/chart/pipes/color/color.js +2 -2
- package/dist/esm/pipeline/spec/chart/pipes/color/color.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/init/barParallel.js +2 -2
- package/dist/esm/pipeline/spec/chart/pipes/init/barParallel.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/init/boxplot.js +2 -2
- package/dist/esm/pipeline/spec/chart/pipes/init/boxplot.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/init/columnParallel.js +2 -2
- package/dist/esm/pipeline/spec/chart/pipes/init/columnParallel.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/init/roseParallel.js +2 -2
- package/dist/esm/pipeline/spec/chart/pipes/init/roseParallel.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/label/label.js +2 -2
- package/dist/esm/pipeline/spec/chart/pipes/label/label.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/legend/discreteLegend.js +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/legend/discreteLegend.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/legend/pivotDiscreteLegend.js +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/legend/pivotDiscreteLegend.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltip.js +2 -1
- package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltip.js.map +1 -1
- package/dist/esm/types/advancedVSeed.d.ts +4 -1
- package/dist/esm/types/builder/builder.d.ts +4 -1
- package/dist/esm/types/builder/builder.js.map +1 -1
- package/dist/esm/types/properties/datasetReshapeInfo/datasetReshapeInfo.d.ts +4 -1
- package/dist/esm/types/properties/datasetReshapeInfo/zDatasetReshapeInfo.d.ts +8 -2
- package/dist/esm/types/properties/datasetReshapeInfo/zDatasetReshapeInfo.js +4 -1
- package/dist/esm/types/properties/datasetReshapeInfo/zDatasetReshapeInfo.js.map +1 -1
- package/dist/umd/index.js +145 -128
- package/dist/umd/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/esm/pipeline/advanced/chart/pipes/default/defaultMeasureName.js +0 -16
- package/dist/esm/pipeline/advanced/chart/pipes/default/defaultMeasureName.js.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { unique } from "remeda";
|
|
2
|
-
import {
|
|
2
|
+
import { MeasureId } from "../../../../../dataReshape/index.js";
|
|
3
3
|
import { findAllMeasures } from "../../../../utils/index.js";
|
|
4
4
|
import { addColorToEncoding } from "./color/index.js";
|
|
5
5
|
const defaultEncodingForRose = (advancedVSeed)=>{
|
|
@@ -29,12 +29,12 @@ const encodingForRose = (advancedVSeed)=>{
|
|
|
29
29
|
};
|
|
30
30
|
};
|
|
31
31
|
const generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
|
32
|
-
const
|
|
32
|
+
const onlyMeasureId = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureId);
|
|
33
33
|
const uniqueDimIds = unique(dimensions.map((d)=>d.id));
|
|
34
34
|
encoding.angle = uniqueDimIds.slice(0, 1);
|
|
35
|
-
encoding.color = uniqueDimIds.slice(
|
|
35
|
+
encoding.color = uniqueDimIds.slice(onlyMeasureId ? 0 : 1);
|
|
36
36
|
encoding.detail = encoding.color;
|
|
37
|
-
encoding.tooltip = uniqueDimIds.filter((d)=>d !==
|
|
37
|
+
encoding.tooltip = uniqueDimIds.filter((d)=>d !== MeasureId);
|
|
38
38
|
encoding.label = [];
|
|
39
39
|
encoding.row = [];
|
|
40
40
|
encoding.column = [];
|
|
@@ -48,9 +48,9 @@ const generateDimensionEncoding = (dimensions, encoding, isMultiMeasure)=>{
|
|
|
48
48
|
encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
|
49
49
|
if (0 === encoding.detail.length) encoding.detail = encoding.color;
|
|
50
50
|
encoding.tooltip = unique(dimensions.map((item)=>item.id));
|
|
51
|
-
encoding.tooltip = encoding.tooltip.filter((d)=>d !==
|
|
51
|
+
encoding.tooltip = encoding.tooltip.filter((d)=>d !== MeasureId);
|
|
52
52
|
encoding.label = unique(dimensions.filter((item)=>'label' === item.encoding).map((item)=>item.id));
|
|
53
|
-
encoding.label = encoding.label.filter((d)=>d !==
|
|
53
|
+
encoding.label = encoding.label.filter((d)=>d !== MeasureId);
|
|
54
54
|
};
|
|
55
55
|
const generateDefaultMeasureEncoding = (measures, encoding)=>{
|
|
56
56
|
encoding.radius = unique(measures.filter((item)=>'radius' === item.encoding || !item.encoding).map((item)=>item.id));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline/advanced/chart/pipes/encoding/rose.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/rose.ts"],"sourcesContent":["import { unique } from 'remeda'\nimport {
|
|
1
|
+
{"version":3,"file":"pipeline/advanced/chart/pipes/encoding/rose.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/rose.ts"],"sourcesContent":["import { unique } from 'remeda'\nimport { MeasureId } 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 defaultEncodingForRose: 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 encodingForRose: 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\n // encoding for modify in place\n const encoding: Encoding = {}\n\n if (hasDimensionEncoding) {\n generateDimensionEncoding(dimensions, encoding, measures.length > 1)\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 onlyMeasureId = dimensions.length === 1 && dimensions.find((item) => item.id === MeasureId)\n const uniqueDimIds = unique(dimensions.map((d) => d.id))\n encoding.angle = uniqueDimIds.slice(0, 1) // 第一个维度放置于X轴\n encoding.color = uniqueDimIds.slice(onlyMeasureId ? 0 : 1) // 第二个之后的维度用于颜色\n encoding.detail = encoding.color\n encoding.tooltip = uniqueDimIds.filter((d) => d !== MeasureId) // 展示指标名称之外的所有维度\n encoding.label = [] // 默认不展示标签\n encoding.row = [] // 默认不进行行透视\n encoding.column = [] // 默认不进行列透视\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding, isMultiMeasure: boolean) => {\n // angle\n encoding.angle = unique(dimensions.filter((item) => item.encoding === 'angle').map((item) => item.id))\n if (encoding.angle.length === 0) {\n encoding.angle = [dimensions[0].id]\n }\n\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 !== MeasureId)\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 !== MeasureId)\n}\n\n/**\n * --------------------指标--------------------\n */\nconst generateDefaultMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.radius = unique(\n measures.filter((item) => item.encoding === 'radius' || !item.encoding).map((item) => item.id),\n )\n}\nconst generateMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n // y\n encoding.radius = unique(\n measures.filter((item) => item.encoding === 'radius' || !item.encoding).map((item) => item.id),\n )\n\n // color\n const color = unique(measures.filter((item) => item.encoding === 'color').map((item) => item.id))\n if (color.length > 0) {\n encoding.color = color\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":["defaultEncodingForRose","advancedVSeed","vseedMeasures","dimensions","measures","findAllMeasures","encoding","generateDefaultDimensionEncoding","generateDefaultMeasureEncoding","encodingForRose","hasDimensionEncoding","item","hasMeasureEncoding","generateDimensionEncoding","generateMeasureEncoding","onlyMeasureId","MeasureId","uniqueDimIds","unique","d","isMultiMeasure","addColorToEncoding","color","label","tooltip"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { unique } from "remeda";
|
|
2
|
-
import {
|
|
2
|
+
import { MeasureId } from "../../../../../dataReshape/index.js";
|
|
3
3
|
import { findAllMeasures } from "../../../../utils/index.js";
|
|
4
4
|
const defaultEncodingForScatter = (advancedVSeed)=>{
|
|
5
5
|
const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
|
|
@@ -28,10 +28,10 @@ const encodingForScatter = (advancedVSeed)=>{
|
|
|
28
28
|
};
|
|
29
29
|
};
|
|
30
30
|
const generateDefaultDimensionEncoding = (dimensions, encoding)=>{
|
|
31
|
-
const
|
|
32
|
-
const uniqueDimIds = unique(
|
|
31
|
+
const dimensionsWithoutMeasureId = dimensions.filter((item)=>item.id !== MeasureId);
|
|
32
|
+
const uniqueDimIds = unique(dimensionsWithoutMeasureId.map((d)=>d.id));
|
|
33
33
|
encoding.detail = encoding.color;
|
|
34
|
-
encoding.tooltip = uniqueDimIds.filter((d)=>d !==
|
|
34
|
+
encoding.tooltip = uniqueDimIds.filter((d)=>d !== MeasureId);
|
|
35
35
|
encoding.label = [];
|
|
36
36
|
encoding.row = [];
|
|
37
37
|
encoding.column = [];
|
|
@@ -40,12 +40,12 @@ const generateDimensionEncoding = (dimensions, encoding)=>{
|
|
|
40
40
|
encoding.color = unique(dimensions.filter((item)=>'color' === item.encoding).map((item)=>item.id));
|
|
41
41
|
encoding.detail = unique(dimensions.filter((item)=>'detail' === item.encoding).map((item)=>item.id));
|
|
42
42
|
if (0 === encoding.detail.length) encoding.detail = [
|
|
43
|
-
|
|
43
|
+
MeasureId
|
|
44
44
|
];
|
|
45
45
|
encoding.tooltip = unique(dimensions.map((item)=>item.id));
|
|
46
|
-
encoding.tooltip = encoding.tooltip.filter((d)=>d !==
|
|
46
|
+
encoding.tooltip = encoding.tooltip.filter((d)=>d !== MeasureId);
|
|
47
47
|
encoding.label = unique(dimensions.filter((item)=>'label' === item.encoding).map((item)=>item.id));
|
|
48
|
-
encoding.label = encoding.label.filter((d)=>d !==
|
|
48
|
+
encoding.label = encoding.label.filter((d)=>d !== MeasureId);
|
|
49
49
|
};
|
|
50
50
|
const generateDefaultMeasureEncoding = (measures, encoding)=>{
|
|
51
51
|
encoding.y = unique(measures.filter((item)=>'xAxis' === item.encoding || 'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline/advanced/chart/pipes/encoding/scatter.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/scatter.ts"],"sourcesContent":["import { unique } from 'remeda'\nimport {
|
|
1
|
+
{"version":3,"file":"pipeline/advanced/chart/pipes/encoding/scatter.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/scatter.ts"],"sourcesContent":["import { unique } from 'remeda'\nimport { MeasureId } from 'src/dataReshape'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Dimension, Dimensions, Encoding, Measure, Measures } from 'src/types'\n\nexport const defaultEncodingForScatter: 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 encodingForScatter: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n // prepare measures and dimensions\n const measures = findAllMeasures(vseedMeasures)\n\n // exist encoding condition\n const hasDimensionEncoding = dimensions.some((item: Dimension) => item.encoding)\n const hasMeasureEncoding = measures.some((item: Measure) => item.encoding)\n\n // encoding for modify in place\n const encoding: Encoding = {}\n\n if (hasDimensionEncoding) {\n generateDimensionEncoding(dimensions, encoding)\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 */\nconst generateDefaultDimensionEncoding = (dimensions: Dimensions, encoding: Encoding) => {\n const dimensionsWithoutMeasureId = dimensions.filter((item) => item.id !== MeasureId)\n const uniqueDimIds = unique(dimensionsWithoutMeasureId.map((d) => d.id))\n\n encoding.detail = encoding.color\n encoding.tooltip = uniqueDimIds.filter((d) => d !== MeasureId) // 展示指标名称之外的所有维度\n encoding.label = [] // 默认不展示标签\n encoding.row = [] // 默认不进行行透视\n encoding.column = [] // 默认不进行列透视\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding) => {\n // color\n encoding.color = unique(dimensions.filter((item) => item.encoding === 'color').map((item) => item.id))\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 = [MeasureId]\n }\n // tooltip\n encoding.tooltip = unique(dimensions.map((item) => item.id))\n encoding.tooltip = encoding.tooltip.filter((d) => d !== MeasureId)\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 !== MeasureId)\n}\n\n/**\n * --------------------指标--------------------\n */\nconst generateDefaultMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.y = unique(\n measures\n .filter((item) => item.encoding === 'xAxis' || item.encoding === 'yAxis' || !item.encoding)\n .map((item) => item.id),\n )\n}\nconst generateMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.y = unique(\n measures\n .filter((item) => item.encoding === 'xAxis' || item.encoding === 'yAxis' || !item.encoding)\n .map((item) => item.id),\n )\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 // size\n encoding.size = unique(measures.filter((item) => item.encoding === 'size').map((item) => item.id))\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":["defaultEncodingForScatter","advancedVSeed","vseedMeasures","dimensions","measures","findAllMeasures","encoding","generateDefaultDimensionEncoding","generateDefaultMeasureEncoding","encodingForScatter","hasDimensionEncoding","item","hasMeasureEncoding","generateDimensionEncoding","generateMeasureEncoding","dimensionsWithoutMeasureId","MeasureId","uniqueDimIds","unique","d","color","label","tooltip"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { uniqueBy } from "remeda";
|
|
2
2
|
import { FoldPrimaryMeasureValue, FoldSecondaryMeasureValue, dataReshapeByEncoding } from "../../../../../dataReshape/index.js";
|
|
3
3
|
import { getColorMeasureId } from "../../../../spec/chart/pipes/index.js";
|
|
4
|
-
import { measureDepth } from "../../../../utils/index.js";
|
|
4
|
+
import { findAllMeasures, measureDepth } from "../../../../utils/index.js";
|
|
5
5
|
const pivotReshapeWithDualEncoding = (advancedVSeed, context)=>{
|
|
6
6
|
const result = {
|
|
7
7
|
...advancedVSeed
|
|
@@ -9,6 +9,7 @@ const pivotReshapeWithDualEncoding = (advancedVSeed, context)=>{
|
|
|
9
9
|
const { vseed } = context;
|
|
10
10
|
const { dataset } = vseed;
|
|
11
11
|
const { dimensions = [], measures = [], encoding, chartType } = advancedVSeed;
|
|
12
|
+
const allMeasures = findAllMeasures(measures);
|
|
12
13
|
const datasetList = [];
|
|
13
14
|
const datasetReshapeInfo = [];
|
|
14
15
|
const measureGroups = [];
|
|
@@ -28,7 +29,8 @@ const pivotReshapeWithDualEncoding = (advancedVSeed, context)=>{
|
|
|
28
29
|
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, uniqueBy(dimensions, (item)=>item.id), uniqueBy(primaryMeasures.children, (item)=>item.id), encoding, {
|
|
29
30
|
colorItemAsId: false,
|
|
30
31
|
foldMeasureValue: `${FoldPrimaryMeasureValue}${index}`,
|
|
31
|
-
colorMeasureId: getColorMeasureId(advancedVSeed, vseed)
|
|
32
|
+
colorMeasureId: getColorMeasureId(advancedVSeed, vseed),
|
|
33
|
+
omitIds: allMeasures.map((item)=>item.id)
|
|
32
34
|
});
|
|
33
35
|
datasets.push(newDataset);
|
|
34
36
|
foldInfoList.push(foldInfo);
|
|
@@ -38,7 +40,8 @@ const pivotReshapeWithDualEncoding = (advancedVSeed, context)=>{
|
|
|
38
40
|
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, uniqueBy(dimensions, (item)=>item.id), uniqueBy(secondaryMeasures.children, (item)=>item.id), encoding, {
|
|
39
41
|
colorItemAsId: false,
|
|
40
42
|
foldMeasureValue: `${FoldSecondaryMeasureValue}${index}`,
|
|
41
|
-
colorMeasureId: getColorMeasureId(advancedVSeed, vseed)
|
|
43
|
+
colorMeasureId: getColorMeasureId(advancedVSeed, vseed),
|
|
44
|
+
omitIds: allMeasures.map((item)=>item.id)
|
|
42
45
|
});
|
|
43
46
|
datasets.push(newDataset);
|
|
44
47
|
foldInfoList.push(foldInfo);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline/advanced/chart/pipes/reshape/pivotReshapeWithDualEncoding.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithDualEncoding.ts"],"sourcesContent":["import { uniqueBy } from 'remeda'\nimport { dataReshapeByEncoding, FoldPrimaryMeasureValue, FoldSecondaryMeasureValue } from 'src/dataReshape'\nimport { getColorMeasureId } from 'src/pipeline/spec/chart/pipes'\nimport { measureDepth } from 'src/pipeline/utils'\nimport type {\n AdvancedPipe,\n AdvancedVSeed,\n ColumnParallel,\n Dataset,\n DatasetReshapeInfo,\n Encoding,\n FoldInfo,\n MeasureGroup,\n UnfoldInfo,\n} from 'src/types'\n\nexport const pivotReshapeWithDualEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed as ColumnParallel\n const { dimensions = [], measures = [], encoding, chartType } = advancedVSeed\n\n const datasetList: Dataset[] = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n\n const measureGroups: Array<MeasureGroup[]> = []\n\n const depth = measureDepth(measures)\n if (depth === 3) {\n measures.forEach((measure: MeasureGroup) => {\n measureGroups.push(measure.children as unknown as MeasureGroup[])\n })\n } else if (depth === 2) {\n measureGroups.push(measures as unknown as MeasureGroup[])\n }\n\n measureGroups.forEach((measures: MeasureGroup[], index) => {\n if (measures.length > 2) {\n throw new Error('measures can not be more than 2 groups in dualAxis')\n }\n\n const foldInfoList: FoldInfo[] = []\n const unfoldInfoList: UnfoldInfo[] = []\n\n const datasets: Dataset[] = []\n const primaryMeasures = measures[0]\n const secondaryMeasures = measures[1] || []\n\n if (primaryMeasures && primaryMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (item) => item.id),\n uniqueBy(primaryMeasures.children, (item) => item.id),\n encoding as Encoding,\n {\n colorItemAsId: false,\n foldMeasureValue: `${FoldPrimaryMeasureValue}${index}`,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed),\n },\n )\n\n datasets.push(newDataset)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n if (secondaryMeasures && secondaryMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (item) => item.id),\n uniqueBy(secondaryMeasures.children, (item) => item.id),\n encoding as Encoding,\n {\n colorItemAsId: false,\n foldMeasureValue: `${FoldSecondaryMeasureValue}${index}`,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed),\n },\n )\n\n datasets.push(newDataset)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n const unfoldInfo: UnfoldInfo = {\n ...unfoldInfoList[0],\n colorItems: unfoldInfoList.flatMap((d) => d.colorItems),\n colorIdMap: unfoldInfoList.reduce((prev, cur) => ({ ...prev, ...cur.colorIdMap }), {}),\n }\n\n const reshapeInfo = {\n id: `${chartType}-${index}`,\n index,\n foldInfo: foldInfoList[0],\n foldInfoList: foldInfoList,\n unfoldInfo: unfoldInfo,\n }\n\n datasetReshapeInfo.push(reshapeInfo)\n datasetList.push(datasets.flat(2))\n })\n\n return {\n ...result,\n dataset: datasetList,\n datasetReshapeInfo: datasetReshapeInfo,\n }\n}\n"],"names":["pivotReshapeWithDualEncoding","advancedVSeed","context","result","vseed","dataset","dimensions","measures","encoding","chartType","datasetList","datasetReshapeInfo","measureGroups","depth","measureDepth","measure","index","Error","foldInfoList","unfoldInfoList","datasets","primaryMeasures","secondaryMeasures","newDataset","foldInfo","unfoldInfo","dataReshapeByEncoding","uniqueBy","item","FoldPrimaryMeasureValue","getColorMeasureId","FoldSecondaryMeasureValue","d","prev","cur","reshapeInfo"],"mappings":";;;;AAgBO,MAAMA,+BAA6C,CAACC,eAAeC;IACxE,MAAMC,SAAS;QAAE,GAAGF,aAAa;IAAC;IAClC,MAAM,EAAEG,KAAK,EAAE,GAAGF;IAClB,MAAM,EAAEG,OAAO,EAAE,GAAGD;IACpB,MAAM,EAAEE,aAAa,EAAE,EAAEC,WAAW,EAAE,EAAEC,QAAQ,EAAEC,SAAS,EAAE,GAAGR;IAEhE,MAAMS,cAAyB,EAAE;IACjC,MAAMC,qBAAyC,EAAE;IAEjD,MAAMC,gBAAuC,EAAE;IAE/C,MAAMC,QAAQC,
|
|
1
|
+
{"version":3,"file":"pipeline/advanced/chart/pipes/reshape/pivotReshapeWithDualEncoding.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithDualEncoding.ts"],"sourcesContent":["import { uniqueBy } from 'remeda'\nimport { dataReshapeByEncoding, FoldPrimaryMeasureValue, FoldSecondaryMeasureValue } from 'src/dataReshape'\nimport { getColorMeasureId } from 'src/pipeline/spec/chart/pipes'\nimport { findAllMeasures, measureDepth } from 'src/pipeline/utils'\nimport type {\n AdvancedPipe,\n AdvancedVSeed,\n ColumnParallel,\n Dataset,\n DatasetReshapeInfo,\n Encoding,\n FoldInfo,\n MeasureGroup,\n UnfoldInfo,\n} from 'src/types'\n\nexport const pivotReshapeWithDualEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed as ColumnParallel\n const { dimensions = [], measures = [], encoding, chartType } = advancedVSeed\n\n const allMeasures = findAllMeasures(measures)\n const datasetList: Dataset[] = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n\n const measureGroups: Array<MeasureGroup[]> = []\n\n const depth = measureDepth(measures)\n if (depth === 3) {\n measures.forEach((measure: MeasureGroup) => {\n measureGroups.push(measure.children as unknown as MeasureGroup[])\n })\n } else if (depth === 2) {\n measureGroups.push(measures as unknown as MeasureGroup[])\n }\n\n measureGroups.forEach((measures: MeasureGroup[], index) => {\n if (measures.length > 2) {\n throw new Error('measures can not be more than 2 groups in dualAxis')\n }\n\n const foldInfoList: FoldInfo[] = []\n const unfoldInfoList: UnfoldInfo[] = []\n\n const datasets: Dataset[] = []\n const primaryMeasures = measures[0]\n const secondaryMeasures = measures[1] || []\n\n if (primaryMeasures && primaryMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (item) => item.id),\n uniqueBy(primaryMeasures.children, (item) => item.id),\n encoding as Encoding,\n {\n colorItemAsId: false,\n foldMeasureValue: `${FoldPrimaryMeasureValue}${index}`,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed),\n omitIds: allMeasures.map((item) => item.id),\n },\n )\n\n datasets.push(newDataset)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n if (secondaryMeasures && secondaryMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (item) => item.id),\n uniqueBy(secondaryMeasures.children, (item) => item.id),\n encoding as Encoding,\n {\n colorItemAsId: false,\n foldMeasureValue: `${FoldSecondaryMeasureValue}${index}`,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed),\n omitIds: allMeasures.map((item) => item.id),\n },\n )\n\n datasets.push(newDataset)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n const unfoldInfo: UnfoldInfo = {\n ...unfoldInfoList[0],\n colorItems: unfoldInfoList.flatMap((d) => d.colorItems),\n colorIdMap: unfoldInfoList.reduce((prev, cur) => ({ ...prev, ...cur.colorIdMap }), {}),\n }\n\n const reshapeInfo = {\n id: `${chartType}-${index}`,\n index,\n foldInfo: foldInfoList[0],\n foldInfoList: foldInfoList,\n unfoldInfo: unfoldInfo,\n }\n\n datasetReshapeInfo.push(reshapeInfo)\n datasetList.push(datasets.flat(2))\n })\n\n return {\n ...result,\n dataset: datasetList,\n datasetReshapeInfo: datasetReshapeInfo,\n }\n}\n"],"names":["pivotReshapeWithDualEncoding","advancedVSeed","context","result","vseed","dataset","dimensions","measures","encoding","chartType","allMeasures","findAllMeasures","datasetList","datasetReshapeInfo","measureGroups","depth","measureDepth","measure","index","Error","foldInfoList","unfoldInfoList","datasets","primaryMeasures","secondaryMeasures","newDataset","foldInfo","unfoldInfo","dataReshapeByEncoding","uniqueBy","item","FoldPrimaryMeasureValue","getColorMeasureId","FoldSecondaryMeasureValue","d","prev","cur","reshapeInfo"],"mappings":";;;;AAgBO,MAAMA,+BAA6C,CAACC,eAAeC;IACxE,MAAMC,SAAS;QAAE,GAAGF,aAAa;IAAC;IAClC,MAAM,EAAEG,KAAK,EAAE,GAAGF;IAClB,MAAM,EAAEG,OAAO,EAAE,GAAGD;IACpB,MAAM,EAAEE,aAAa,EAAE,EAAEC,WAAW,EAAE,EAAEC,QAAQ,EAAEC,SAAS,EAAE,GAAGR;IAEhE,MAAMS,cAAcC,gBAAgBJ;IACpC,MAAMK,cAAyB,EAAE;IACjC,MAAMC,qBAAyC,EAAE;IAEjD,MAAMC,gBAAuC,EAAE;IAE/C,MAAMC,QAAQC,aAAaT;IAC3B,IAAIQ,AAAU,MAAVA,OACFR,SAAS,OAAO,CAAC,CAACU;QAChBH,cAAc,IAAI,CAACG,QAAQ,QAAQ;IACrC;SACK,IAAIF,AAAU,MAAVA,OACTD,cAAc,IAAI,CAACP;IAGrBO,cAAc,OAAO,CAAC,CAACP,UAA0BW;QAC/C,IAAIX,SAAS,MAAM,GAAG,GACpB,MAAM,IAAIY,MAAM;QAGlB,MAAMC,eAA2B,EAAE;QACnC,MAAMC,iBAA+B,EAAE;QAEvC,MAAMC,WAAsB,EAAE;QAC9B,MAAMC,kBAAkBhB,QAAQ,CAAC,EAAE;QACnC,MAAMiB,oBAAoBjB,QAAQ,CAAC,EAAE,IAAI,EAAE;QAE3C,IAAIgB,mBAAmBA,gBAAgB,QAAQ,EAAE;YAC/C,MAAM,EACJ,SAASE,UAAU,EACnBC,QAAQ,EACRC,UAAU,EACX,GAAGC,sBACFvB,SACAwB,SAASvB,YAAY,CAACwB,OAASA,KAAK,EAAE,GACtCD,SAASN,gBAAgB,QAAQ,EAAE,CAACO,OAASA,KAAK,EAAE,GACpDtB,UACA;gBACE,eAAe;gBACf,kBAAkB,GAAGuB,0BAA0Bb,OAAO;gBACtD,gBAAgBc,kBAAkB/B,eAAgCG;gBAClE,SAASM,YAAY,GAAG,CAAC,CAACoB,OAASA,KAAK,EAAE;YAC5C;YAGFR,SAAS,IAAI,CAACG;YACdL,aAAa,IAAI,CAACM;YAClBL,eAAe,IAAI,CAACM;QACtB;QAEA,IAAIH,qBAAqBA,kBAAkB,QAAQ,EAAE;YACnD,MAAM,EACJ,SAASC,UAAU,EACnBC,QAAQ,EACRC,UAAU,EACX,GAAGC,sBACFvB,SACAwB,SAASvB,YAAY,CAACwB,OAASA,KAAK,EAAE,GACtCD,SAASL,kBAAkB,QAAQ,EAAE,CAACM,OAASA,KAAK,EAAE,GACtDtB,UACA;gBACE,eAAe;gBACf,kBAAkB,GAAGyB,4BAA4Bf,OAAO;gBACxD,gBAAgBc,kBAAkB/B,eAAgCG;gBAClE,SAASM,YAAY,GAAG,CAAC,CAACoB,OAASA,KAAK,EAAE;YAC5C;YAGFR,SAAS,IAAI,CAACG;YACdL,aAAa,IAAI,CAACM;YAClBL,eAAe,IAAI,CAACM;QACtB;QAEA,MAAMA,aAAyB;YAC7B,GAAGN,cAAc,CAAC,EAAE;YACpB,YAAYA,eAAe,OAAO,CAAC,CAACa,IAAMA,EAAE,UAAU;YACtD,YAAYb,eAAe,MAAM,CAAC,CAACc,MAAMC,MAAS;oBAAE,GAAGD,IAAI;oBAAE,GAAGC,IAAI,UAAU;gBAAC,IAAI,CAAC;QACtF;QAEA,MAAMC,cAAc;YAClB,IAAI,GAAG5B,UAAU,CAAC,EAAES,OAAO;YAC3BA;YACA,UAAUE,YAAY,CAAC,EAAE;YACzB,cAAcA;YACd,YAAYO;QACd;QAEAd,mBAAmB,IAAI,CAACwB;QACxBzB,YAAY,IAAI,CAACU,SAAS,IAAI,CAAC;IACjC;IAEA,OAAO;QACL,GAAGnB,MAAM;QACT,SAASS;QACT,oBAAoBC;IACtB;AACF"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { uniqueBy } from "remeda";
|
|
2
2
|
import { FoldMeasureValue, dataReshapeByEncoding } from "../../../../../dataReshape/index.js";
|
|
3
3
|
import { getColorMeasureId } from "../../../../spec/chart/pipes/index.js";
|
|
4
|
+
import { findAllMeasures } from "../../../../utils/index.js";
|
|
4
5
|
const pivotReshapeWithEncoding = (advancedVSeed, context)=>{
|
|
5
6
|
const result = {
|
|
6
7
|
...advancedVSeed
|
|
@@ -8,6 +9,7 @@ const pivotReshapeWithEncoding = (advancedVSeed, context)=>{
|
|
|
8
9
|
const { vseed } = context;
|
|
9
10
|
const { dataset } = vseed;
|
|
10
11
|
const { dimensions = [], measures = [], encoding } = advancedVSeed;
|
|
12
|
+
const allMeasures = findAllMeasures(measures);
|
|
11
13
|
const measureGroups = [];
|
|
12
14
|
if (measures) measures.forEach((measure)=>{
|
|
13
15
|
if (measure.children && measure.children.length > 0) measureGroups.push(measure);
|
|
@@ -21,7 +23,8 @@ const pivotReshapeWithEncoding = (advancedVSeed, context)=>{
|
|
|
21
23
|
const { dataset: newSubDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, uniqueBy(dimensions, (item)=>item.id), uniqueBy(measures, (item)=>item.id), encoding, {
|
|
22
24
|
colorItemAsId: false,
|
|
23
25
|
foldMeasureValue: `${FoldMeasureValue}${groupId}`,
|
|
24
|
-
colorMeasureId: getColorMeasureId(advancedVSeed, vseed)
|
|
26
|
+
colorMeasureId: getColorMeasureId(advancedVSeed, vseed),
|
|
27
|
+
omitIds: allMeasures.map((item)=>item.id)
|
|
25
28
|
});
|
|
26
29
|
const reshapeInfo = {
|
|
27
30
|
id: groupId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline/advanced/chart/pipes/reshape/pivotReshapeWithEncoding.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithEncoding.ts"],"sourcesContent":["import { uniqueBy } from 'remeda'\nimport { dataReshapeByEncoding, FoldMeasureValue } from 'src/dataReshape'\nimport { getColorMeasureId } from 'src/pipeline/spec/chart/pipes'\nimport type {\n AdvancedPipe,\n AdvancedVSeed,\n ColumnParallel,\n Dataset,\n DatasetReshapeInfo,\n Encoding,\n MeasureGroup,\n} from 'src/types'\n\nexport const pivotReshapeWithEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed as ColumnParallel\n const { dimensions = [], measures = [], encoding } = advancedVSeed\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 datasets: Dataset = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n\n measureGroups.forEach((measureGroup, index) => {\n const measures = measureGroup.children\n if (!measures) {\n return\n }\n const groupId = measureGroup.id\n const {\n dataset: newSubDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (item) => item.id),\n uniqueBy(measures, (item) => item.id),\n encoding as Encoding,\n {\n colorItemAsId: false,\n foldMeasureValue: `${FoldMeasureValue}${groupId}`,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed),\n },\n )\n\n const reshapeInfo = {\n id: groupId,\n index,\n foldInfo,\n unfoldInfo,\n }\n datasets.push(newSubDataset)\n datasetReshapeInfo.push(reshapeInfo)\n })\n\n return {\n ...result,\n dataset: datasets,\n datasetReshapeInfo: datasetReshapeInfo,\n }\n}\n"],"names":["pivotReshapeWithEncoding","advancedVSeed","context","result","vseed","dataset","dimensions","measures","encoding","measureGroups","measure","datasets","datasetReshapeInfo","measureGroup","index","groupId","newSubDataset","foldInfo","unfoldInfo","dataReshapeByEncoding","uniqueBy","item","FoldMeasureValue","getColorMeasureId","reshapeInfo"],"mappings":"
|
|
1
|
+
{"version":3,"file":"pipeline/advanced/chart/pipes/reshape/pivotReshapeWithEncoding.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithEncoding.ts"],"sourcesContent":["import { uniqueBy } from 'remeda'\nimport { dataReshapeByEncoding, FoldMeasureValue } from 'src/dataReshape'\nimport { getColorMeasureId } from 'src/pipeline/spec/chart/pipes'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type {\n AdvancedPipe,\n AdvancedVSeed,\n ColumnParallel,\n Dataset,\n DatasetReshapeInfo,\n Encoding,\n MeasureGroup,\n} from 'src/types'\n\nexport const pivotReshapeWithEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed as ColumnParallel\n const { dimensions = [], measures = [], encoding } = advancedVSeed\n\n const allMeasures = findAllMeasures(measures)\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 datasets: Dataset = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n\n measureGroups.forEach((measureGroup, index) => {\n const measures = measureGroup.children\n if (!measures) {\n return\n }\n const groupId = measureGroup.id\n const {\n dataset: newSubDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (item) => item.id),\n uniqueBy(measures, (item) => item.id),\n encoding as Encoding,\n {\n colorItemAsId: false,\n foldMeasureValue: `${FoldMeasureValue}${groupId}`,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed),\n omitIds: allMeasures.map((item) => item.id),\n },\n )\n\n const reshapeInfo = {\n id: groupId,\n index,\n foldInfo,\n unfoldInfo,\n }\n datasets.push(newSubDataset)\n datasetReshapeInfo.push(reshapeInfo)\n })\n\n return {\n ...result,\n dataset: datasets,\n datasetReshapeInfo: datasetReshapeInfo,\n }\n}\n"],"names":["pivotReshapeWithEncoding","advancedVSeed","context","result","vseed","dataset","dimensions","measures","encoding","allMeasures","findAllMeasures","measureGroups","measure","datasets","datasetReshapeInfo","measureGroup","index","groupId","newSubDataset","foldInfo","unfoldInfo","dataReshapeByEncoding","uniqueBy","item","FoldMeasureValue","getColorMeasureId","reshapeInfo"],"mappings":";;;;AAcO,MAAMA,2BAAyC,CAACC,eAAeC;IACpE,MAAMC,SAAS;QAAE,GAAGF,aAAa;IAAC;IAClC,MAAM,EAAEG,KAAK,EAAE,GAAGF;IAClB,MAAM,EAAEG,OAAO,EAAE,GAAGD;IACpB,MAAM,EAAEE,aAAa,EAAE,EAAEC,WAAW,EAAE,EAAEC,QAAQ,EAAE,GAAGP;IAErD,MAAMQ,cAAcC,gBAAgBH;IACpC,MAAMI,gBAAgC,EAAE;IACxC,IAAIJ,UACFA,SAAS,OAAO,CAAC,CAACK;QAChB,IAAIA,QAAQ,QAAQ,IAAIA,QAAQ,QAAQ,CAAC,MAAM,GAAG,GAChDD,cAAc,IAAI,CAACC;IAEvB;IAGF,MAAMC,WAAoB,EAAE;IAC5B,MAAMC,qBAAyC,EAAE;IAEjDH,cAAc,OAAO,CAAC,CAACI,cAAcC;QACnC,MAAMT,WAAWQ,aAAa,QAAQ;QACtC,IAAI,CAACR,UACH;QAEF,MAAMU,UAAUF,aAAa,EAAE;QAC/B,MAAM,EACJ,SAASG,aAAa,EACtBC,QAAQ,EACRC,UAAU,EACX,GAAGC,sBACFhB,SACAiB,SAAShB,YAAY,CAACiB,OAASA,KAAK,EAAE,GACtCD,SAASf,UAAU,CAACgB,OAASA,KAAK,EAAE,GACpCf,UACA;YACE,eAAe;YACf,kBAAkB,GAAGgB,mBAAmBP,SAAS;YACjD,gBAAgBQ,kBAAkBxB,eAAgCG;YAClE,SAASK,YAAY,GAAG,CAAC,CAACc,OAASA,KAAK,EAAE;QAC5C;QAGF,MAAMG,cAAc;YAClB,IAAIT;YACJD;YACAG;YACAC;QACF;QACAP,SAAS,IAAI,CAACK;QACdJ,mBAAmB,IAAI,CAACY;IAC1B;IAEA,OAAO;QACL,GAAGvB,MAAM;QACT,SAASU;QACT,oBAAoBC;IACtB;AACF"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { FoldXMeasureValue, FoldYMeasureValue, dataReshapeByEncoding } from "../../../../../dataReshape/index.js";
|
|
2
2
|
import { getColorMeasureId } from "../../../../spec/chart/pipes/index.js";
|
|
3
|
-
import { measureDepth } from "../../../../utils/index.js";
|
|
3
|
+
import { findAllMeasures, measureDepth } from "../../../../utils/index.js";
|
|
4
4
|
const pivotReshapeWithScatterEncoding = (advancedVSeed, context)=>{
|
|
5
5
|
const result = {
|
|
6
6
|
...advancedVSeed
|
|
@@ -8,6 +8,7 @@ const pivotReshapeWithScatterEncoding = (advancedVSeed, context)=>{
|
|
|
8
8
|
const { vseed } = context;
|
|
9
9
|
const { dataset } = vseed;
|
|
10
10
|
const { dimensions = [], measures = [], encoding, chartType } = advancedVSeed;
|
|
11
|
+
const allMeasures = findAllMeasures(measures);
|
|
11
12
|
const measureGroups = [];
|
|
12
13
|
const depth = measureDepth(measures);
|
|
13
14
|
if (3 === depth) measures.forEach((measure)=>{
|
|
@@ -27,7 +28,8 @@ const pivotReshapeWithScatterEncoding = (advancedVSeed, context)=>{
|
|
|
27
28
|
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, xMeasures.children, encoding, {
|
|
28
29
|
foldMeasureValue: `${FoldXMeasureValue}${index}`,
|
|
29
30
|
colorItemAsId: true,
|
|
30
|
-
colorMeasureId: getColorMeasureId(advancedVSeed, vseed)
|
|
31
|
+
colorMeasureId: getColorMeasureId(advancedVSeed, vseed),
|
|
32
|
+
omitIds: allMeasures.map((item)=>item.id)
|
|
31
33
|
});
|
|
32
34
|
datasets.push(newDataset);
|
|
33
35
|
foldInfoList.push(foldInfo);
|
|
@@ -37,7 +39,8 @@ const pivotReshapeWithScatterEncoding = (advancedVSeed, context)=>{
|
|
|
37
39
|
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, yMeasures.children, encoding, {
|
|
38
40
|
foldMeasureValue: `${FoldYMeasureValue}${index}`,
|
|
39
41
|
colorItemAsId: true,
|
|
40
|
-
colorMeasureId: getColorMeasureId(advancedVSeed, vseed)
|
|
42
|
+
colorMeasureId: getColorMeasureId(advancedVSeed, vseed),
|
|
43
|
+
omitIds: allMeasures.map((item)=>item.id)
|
|
41
44
|
});
|
|
42
45
|
datasets.push(newDataset);
|
|
43
46
|
foldInfoList.push(foldInfo);
|
package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithScatterEncoding.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline/advanced/chart/pipes/reshape/pivotReshapeWithScatterEncoding.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithScatterEncoding.ts"],"sourcesContent":["import { dataReshapeByEncoding, FoldXMeasureValue, FoldYMeasureValue } from 'src/dataReshape'\nimport { getColorMeasureId } from 'src/pipeline/spec/chart/pipes'\nimport { measureDepth } from 'src/pipeline/utils'\nimport type {\n AdvancedPipe,\n AdvancedVSeed,\n ColumnParallel,\n Dataset,\n DatasetReshapeInfo,\n Encoding,\n FoldInfo,\n MeasureGroup,\n UnfoldInfo,\n} from 'src/types'\n\nexport const pivotReshapeWithScatterEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed as ColumnParallel\n const { dimensions = [], measures = [], encoding, chartType } = advancedVSeed\n\n const measureGroups: Array<MeasureGroup[]> = []\n\n const depth = measureDepth(measures)\n if (depth === 3) {\n measures.forEach((measure: MeasureGroup) => {\n measureGroups.push(measure.children as unknown as MeasureGroup[])\n })\n } else if (depth === 2) {\n measureGroups.push(measures)\n }\n\n const datasetList: Dataset[] = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n\n measureGroups.forEach((measures: MeasureGroup[], index) => {\n if (measures.length > 2) {\n throw new Error('measures can not be more than 2 groups in scatter')\n }\n\n const foldInfoList: FoldInfo[] = []\n const unfoldInfoList: UnfoldInfo[] = []\n\n const datasets: Dataset[] = []\n const xMeasures = measures[0]\n const yMeasures = measures[1] || xMeasures\n\n if (xMeasures && xMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(dataset, dimensions, xMeasures.children, encoding as Encoding, {\n foldMeasureValue: `${FoldXMeasureValue}${index}`,\n colorItemAsId: true,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed),\n })\n\n datasets.push(newDataset)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n if (yMeasures && yMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(dataset, dimensions, yMeasures.children, encoding as Encoding, {\n foldMeasureValue: `${FoldYMeasureValue}${index}`,\n colorItemAsId: true,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed),\n })\n\n datasets.push(newDataset)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n const unfoldInfo: UnfoldInfo = {\n ...unfoldInfoList[0],\n colorItems: unfoldInfoList.flatMap((d) => d.colorItems),\n colorIdMap: unfoldInfoList.reduce((prev, cur) => ({ ...prev, ...cur.colorIdMap }), {}),\n }\n\n const reshapeInfo = {\n id: `${chartType}-${index}`,\n index,\n foldInfo: foldInfoList[0],\n foldInfoList: foldInfoList,\n unfoldInfo: unfoldInfo,\n }\n\n datasetReshapeInfo.push(reshapeInfo)\n datasetList.push(datasets[0].map((d, index) => ({ ...d, ...(datasets[1]?.[index] || {}) })))\n })\n\n return {\n ...result,\n dataset: datasetList,\n datasetReshapeInfo: datasetReshapeInfo,\n }\n}\n"],"names":["pivotReshapeWithScatterEncoding","advancedVSeed","context","result","vseed","dataset","dimensions","measures","encoding","chartType","measureGroups","depth","measureDepth","measure","datasetList","datasetReshapeInfo","index","Error","foldInfoList","unfoldInfoList","datasets","xMeasures","yMeasures","newDataset","foldInfo","unfoldInfo","dataReshapeByEncoding","FoldXMeasureValue","getColorMeasureId","FoldYMeasureValue","d","prev","cur","reshapeInfo"],"mappings":";;;AAeO,MAAMA,kCAAgD,CAACC,eAAeC;IAC3E,MAAMC,SAAS;QAAE,GAAGF,aAAa;IAAC;IAClC,MAAM,EAAEG,KAAK,EAAE,GAAGF;IAClB,MAAM,EAAEG,OAAO,EAAE,GAAGD;IACpB,MAAM,EAAEE,aAAa,EAAE,EAAEC,WAAW,EAAE,EAAEC,QAAQ,EAAEC,SAAS,EAAE,GAAGR;
|
|
1
|
+
{"version":3,"file":"pipeline/advanced/chart/pipes/reshape/pivotReshapeWithScatterEncoding.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithScatterEncoding.ts"],"sourcesContent":["import { dataReshapeByEncoding, FoldXMeasureValue, FoldYMeasureValue } from 'src/dataReshape'\nimport { getColorMeasureId } from 'src/pipeline/spec/chart/pipes'\nimport { findAllMeasures, measureDepth } from 'src/pipeline/utils'\nimport type {\n AdvancedPipe,\n AdvancedVSeed,\n ColumnParallel,\n Dataset,\n DatasetReshapeInfo,\n Encoding,\n FoldInfo,\n MeasureGroup,\n UnfoldInfo,\n} from 'src/types'\n\nexport const pivotReshapeWithScatterEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed as ColumnParallel\n const { dimensions = [], measures = [], encoding, chartType } = advancedVSeed\n const allMeasures = findAllMeasures(measures)\n\n const measureGroups: Array<MeasureGroup[]> = []\n\n const depth = measureDepth(measures)\n if (depth === 3) {\n measures.forEach((measure: MeasureGroup) => {\n measureGroups.push(measure.children as unknown as MeasureGroup[])\n })\n } else if (depth === 2) {\n measureGroups.push(measures)\n }\n\n const datasetList: Dataset[] = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n\n measureGroups.forEach((measures: MeasureGroup[], index) => {\n if (measures.length > 2) {\n throw new Error('measures can not be more than 2 groups in scatter')\n }\n\n const foldInfoList: FoldInfo[] = []\n const unfoldInfoList: UnfoldInfo[] = []\n\n const datasets: Dataset[] = []\n const xMeasures = measures[0]\n const yMeasures = measures[1] || xMeasures\n\n if (xMeasures && xMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(dataset, dimensions, xMeasures.children, encoding as Encoding, {\n foldMeasureValue: `${FoldXMeasureValue}${index}`,\n colorItemAsId: true,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed),\n omitIds: allMeasures.map((item) => item.id),\n })\n\n datasets.push(newDataset)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n if (yMeasures && yMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(dataset, dimensions, yMeasures.children, encoding as Encoding, {\n foldMeasureValue: `${FoldYMeasureValue}${index}`,\n colorItemAsId: true,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed),\n omitIds: allMeasures.map((item) => item.id),\n })\n\n datasets.push(newDataset)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n const unfoldInfo: UnfoldInfo = {\n ...unfoldInfoList[0],\n colorItems: unfoldInfoList.flatMap((d) => d.colorItems),\n colorIdMap: unfoldInfoList.reduce((prev, cur) => ({ ...prev, ...cur.colorIdMap }), {}),\n }\n\n const reshapeInfo = {\n id: `${chartType}-${index}`,\n index,\n foldInfo: foldInfoList[0],\n foldInfoList: foldInfoList,\n unfoldInfo: unfoldInfo,\n }\n\n datasetReshapeInfo.push(reshapeInfo)\n datasetList.push(datasets[0].map((d, index) => ({ ...d, ...(datasets[1]?.[index] || {}) })))\n })\n\n return {\n ...result,\n dataset: datasetList,\n datasetReshapeInfo: datasetReshapeInfo,\n }\n}\n"],"names":["pivotReshapeWithScatterEncoding","advancedVSeed","context","result","vseed","dataset","dimensions","measures","encoding","chartType","allMeasures","findAllMeasures","measureGroups","depth","measureDepth","measure","datasetList","datasetReshapeInfo","index","Error","foldInfoList","unfoldInfoList","datasets","xMeasures","yMeasures","newDataset","foldInfo","unfoldInfo","dataReshapeByEncoding","FoldXMeasureValue","getColorMeasureId","item","FoldYMeasureValue","d","prev","cur","reshapeInfo"],"mappings":";;;AAeO,MAAMA,kCAAgD,CAACC,eAAeC;IAC3E,MAAMC,SAAS;QAAE,GAAGF,aAAa;IAAC;IAClC,MAAM,EAAEG,KAAK,EAAE,GAAGF;IAClB,MAAM,EAAEG,OAAO,EAAE,GAAGD;IACpB,MAAM,EAAEE,aAAa,EAAE,EAAEC,WAAW,EAAE,EAAEC,QAAQ,EAAEC,SAAS,EAAE,GAAGR;IAChE,MAAMS,cAAcC,gBAAgBJ;IAEpC,MAAMK,gBAAuC,EAAE;IAE/C,MAAMC,QAAQC,aAAaP;IAC3B,IAAIM,AAAU,MAAVA,OACFN,SAAS,OAAO,CAAC,CAACQ;QAChBH,cAAc,IAAI,CAACG,QAAQ,QAAQ;IACrC;SACK,IAAIF,AAAU,MAAVA,OACTD,cAAc,IAAI,CAACL;IAGrB,MAAMS,cAAyB,EAAE;IACjC,MAAMC,qBAAyC,EAAE;IAEjDL,cAAc,OAAO,CAAC,CAACL,UAA0BW;QAC/C,IAAIX,SAAS,MAAM,GAAG,GACpB,MAAM,IAAIY,MAAM;QAGlB,MAAMC,eAA2B,EAAE;QACnC,MAAMC,iBAA+B,EAAE;QAEvC,MAAMC,WAAsB,EAAE;QAC9B,MAAMC,YAAYhB,QAAQ,CAAC,EAAE;QAC7B,MAAMiB,YAAYjB,QAAQ,CAAC,EAAE,IAAIgB;QAEjC,IAAIA,aAAaA,UAAU,QAAQ,EAAE;YACnC,MAAM,EACJ,SAASE,UAAU,EACnBC,QAAQ,EACRC,UAAU,EACX,GAAGC,sBAAsBvB,SAASC,YAAYiB,UAAU,QAAQ,EAAEf,UAAsB;gBACvF,kBAAkB,GAAGqB,oBAAoBX,OAAO;gBAChD,eAAe;gBACf,gBAAgBY,kBAAkB7B,eAAgCG;gBAClE,SAASM,YAAY,GAAG,CAAC,CAACqB,OAASA,KAAK,EAAE;YAC5C;YAEAT,SAAS,IAAI,CAACG;YACdL,aAAa,IAAI,CAACM;YAClBL,eAAe,IAAI,CAACM;QACtB;QAEA,IAAIH,aAAaA,UAAU,QAAQ,EAAE;YACnC,MAAM,EACJ,SAASC,UAAU,EACnBC,QAAQ,EACRC,UAAU,EACX,GAAGC,sBAAsBvB,SAASC,YAAYkB,UAAU,QAAQ,EAAEhB,UAAsB;gBACvF,kBAAkB,GAAGwB,oBAAoBd,OAAO;gBAChD,eAAe;gBACf,gBAAgBY,kBAAkB7B,eAAgCG;gBAClE,SAASM,YAAY,GAAG,CAAC,CAACqB,OAASA,KAAK,EAAE;YAC5C;YAEAT,SAAS,IAAI,CAACG;YACdL,aAAa,IAAI,CAACM;YAClBL,eAAe,IAAI,CAACM;QACtB;QAEA,MAAMA,aAAyB;YAC7B,GAAGN,cAAc,CAAC,EAAE;YACpB,YAAYA,eAAe,OAAO,CAAC,CAACY,IAAMA,EAAE,UAAU;YACtD,YAAYZ,eAAe,MAAM,CAAC,CAACa,MAAMC,MAAS;oBAAE,GAAGD,IAAI;oBAAE,GAAGC,IAAI,UAAU;gBAAC,IAAI,CAAC;QACtF;QAEA,MAAMC,cAAc;YAClB,IAAI,GAAG3B,UAAU,CAAC,EAAES,OAAO;YAC3BA;YACA,UAAUE,YAAY,CAAC,EAAE;YACzB,cAAcA;YACd,YAAYO;QACd;QAEAV,mBAAmB,IAAI,CAACmB;QACxBpB,YAAY,IAAI,CAACM,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAACW,GAAGf,QAAW;gBAAE,GAAGe,CAAC;gBAAE,GAAIX,QAAQ,CAAC,EAAE,EAAE,CAACJ,MAAM,IAAI,CAAC,CAAC;YAAE;IAC1F;IAEA,OAAO;QACL,GAAGf,MAAM;QACT,SAASa;QACT,oBAAoBC;IACtB;AACF"}
|
|
@@ -155,10 +155,7 @@ const splitLine = (spec, context)=>{
|
|
|
155
155
|
if (!seriesSpec.point.style) seriesSpec.point.style = {};
|
|
156
156
|
if (!seriesSpec.line.style) seriesSpec.line.style = {};
|
|
157
157
|
const measureValueKey = datasetReshapeInfo[0].foldInfo.measureValue;
|
|
158
|
-
seriesSpec.point.style.fill = (datum)=>
|
|
159
|
-
console.log(datum);
|
|
160
|
-
return datum?.[measureValueKey] >= splitValue ? colorConfig.positiveColor : colorConfig.negativeColor;
|
|
161
|
-
};
|
|
158
|
+
seriesSpec.point.style.fill = (datum)=>datum?.[measureValueKey] >= splitValue ? colorConfig.positiveColor : colorConfig.negativeColor;
|
|
162
159
|
seriesSpec.line.style.stroke = (datum)=>datum?.[measureValueKey] >= splitValue ? colorConfig.positiveColor : colorConfig.negativeColor;
|
|
163
160
|
if (seriesSpec.label && seriesSpec.label.visible && isNullish(seriesSpec.label.style?.fill)) seriesSpec.label.style = {
|
|
164
161
|
...seriesSpec.label.style,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline/spec/chart/pipes/annotation/splitLine.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/annotation/splitLine.ts"],"sourcesContent":["import type { ICartesianSeries, IChart, ILineChartSpec, IVChart } from '@visactor/vchart'\nimport { array, Color as VUtilColor } from '@visactor/vutils'\nimport { isNullish, isNumber, isPlainObject } from 'remeda'\nimport type { AnnotationHorizontalLine, SpecPipe, Color } from 'src/types'\n\ninterface SplitConfig {\n points: { x: number; y: number }[]\n splitCoordinate: number\n lineStroke: {\n gradient: string\n x0: number\n x1: number\n y0: number\n y1: number\n stops: {\n color: string\n offset: number\n }[]\n }\n areaFill: {\n gradient: string\n x0: number\n x1: number\n y0: number\n y1: number\n stops: {\n color: string\n offset: number\n }[]\n }\n}\n\nexport const splitLine: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { annotation, chartType, datasetReshapeInfo } = advancedVSeed\n\n if (!annotation || !annotation.annotationHorizontalLine) {\n return spec\n }\n const baseConfig = advancedVSeed.config[chartType] as { color: Color }\n\n const splitLineConfig = array(annotation.annotationHorizontalLine).find(\n (item) => !!(item as AnnotationHorizontalLine).splitLine,\n ) as AnnotationHorizontalLine | undefined\n\n const splitValue = +(splitLineConfig?.yValue as number | string)\n\n if (Number.isNaN(splitValue) || !isNumber(splitValue)) {\n return spec\n }\n const result = { ...spec } as Partial<ILineChartSpec>\n const colorTheme = baseConfig?.color ?? {}\n const colorConfig = {\n positiveColor: colorTheme.positiveColor || 'red',\n negativeColor: colorTheme.negativeColor || 'green',\n ...(isPlainObject(splitLineConfig?.splitLine) ? splitLineConfig?.splitLine : {}),\n }\n\n const groupMark = {\n type: 'group',\n name: 'annotationHorizontalLine-splitLine',\n zIndex: 300,\n style: {\n splitConfig: (datum: any, ctx: any) => {\n const vchart = ctx.vchart as IVChart\n const chart = vchart.getChart() as IChart\n const lineSeries = chart.getAllSeries().find((s) => s.type === 'line' || s.type === 'area') as ICartesianSeries\n\n if (!lineSeries) {\n return\n }\n const lineMark = lineSeries.getMarkInName('line') ?? lineSeries.getMarkInName('area')\n\n if (!lineMark) {\n return\n }\n const lineGraphics = lineMark.getGraphics()\n\n if (!lineGraphics || lineGraphics.length !== 1 || !lineGraphics[0]) {\n return\n }\n const points = ((lineGraphics[0].attribute as any).points ?? []) as { x: number; y: number }[]\n\n if ((lineGraphics[0].attribute as any).segments?.length) {\n ;((lineGraphics[0].attribute as any).segments as any[]).forEach(\n (seg: { points: { x: number; y: number }[] }) => {\n seg.points.forEach((pt: { x: number; y: number }) => {\n points.push({ x: pt.x, y: pt.y })\n })\n },\n )\n }\n\n if (!points || !points.length) {\n return\n }\n const splitCoordinate = lineSeries.getYAxisHelper().getScale!(0).scale(splitValue)\n const minY = Math.min(...points.map((p) => p.y))\n const maxY = Math.max(...points.map((p) => p.y))\n const ratio = (splitCoordinate - minY) / (maxY - minY)\n const lineStroke = {\n gradient: 'linear',\n x0: 0,\n x1: 0,\n y0: 0,\n y1: 1,\n stops: [\n {\n color: colorConfig.positiveColor,\n offset: 0,\n },\n {\n color: colorConfig.positiveColor,\n offset: ratio,\n },\n {\n color: colorConfig.negativeColor,\n offset: ratio + 0.0000001,\n },\n {\n color: colorConfig.negativeColor,\n offset: 1,\n },\n ],\n }\n const areaFill = {\n gradient: 'linear',\n x0: 0,\n x1: 0,\n y0: 0,\n y1: 1,\n stops: [\n {\n color: colorConfig.positiveColor,\n offset: 0,\n },\n {\n color: new VUtilColor(colorConfig.positiveColor).setOpacity(0).toRGBA(),\n offset: ratio,\n },\n {\n offset: ratio + 0.0000001,\n color: new VUtilColor(colorConfig.negativeColor).setOpacity(0).toRGBA(),\n },\n {\n color: colorConfig.negativeColor,\n offset: 1,\n },\n ],\n }\n const attrs: any = {\n segments: null,\n points,\n }\n\n if (lineGraphics[0].type === 'area') {\n attrs.stroke = lineStroke\n attrs.fill = areaFill\n } else {\n attrs.stroke = lineStroke\n }\n\n lineGraphics[0].setAttributes(attrs as unknown as Record<string, any>)\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n lineGraphics[0].setFinalAttributes?.(attrs)\n const start = lineSeries.getRegion().getLayoutStartPoint()\n\n return {\n points: points.map((entry) => ({ x: entry.x + start.x, y: entry.y + start.y })),\n splitCoordinate,\n areaFill,\n lineStroke,\n } as SplitConfig\n },\n },\n children: [\n {\n type: 'area',\n interactive: false,\n zIndex: 500,\n style: {\n fillOpacity: 0.5,\n points: (datum: any, ctx: any, opt: any) => {\n const parentNode = opt.mark?._product?.parent\n\n if (parentNode?.attribute?.splitConfig) {\n const { points, splitCoordinate } = parentNode.attribute.splitConfig as SplitConfig\n\n return points.map((entry: { x: number; y: number }) => {\n return {\n ...entry,\n y1: splitCoordinate,\n }\n })\n }\n\n return []\n },\n fill: (datum: any, ctx: any, opt: any) => {\n const parentNode = opt.mark?._product?.parent\n\n if (parentNode?.attribute?.splitConfig) {\n const { areaFill } = parentNode.attribute.splitConfig as SplitConfig\n\n return areaFill\n }\n\n return\n },\n },\n },\n ],\n }\n\n if (!result.customMark) {\n result.customMark = []\n }\n\n ;(result.customMark as any[]).push(groupMark)\n\n const seriesSpec =\n result.type === 'line' || result.type === 'area'\n ? result\n : result.series?.find((s) => s.type === 'line' || s.type === 'area')\n\n if (seriesSpec) {\n if (!seriesSpec.point) {\n seriesSpec.point = {}\n }\n if (!seriesSpec.line) {\n seriesSpec.line = {}\n }\n\n if (!seriesSpec.point.style) {\n seriesSpec.point.style = {}\n }\n if (!seriesSpec.line.style) {\n seriesSpec.line.style = {}\n }\n\n const measureValueKey = datasetReshapeInfo[0].foldInfo.measureValue\n\n seriesSpec.point.style.fill = (datum) => {\n console.log(datum)\n return datum?.[measureValueKey] >= splitValue ? colorConfig.positiveColor : colorConfig.negativeColor\n }\n seriesSpec.line.style.stroke = (datum) => {\n return datum?.[measureValueKey] >= splitValue ? colorConfig.positiveColor : colorConfig.negativeColor\n }\n if (seriesSpec.label && (seriesSpec.label as any).visible && isNullish((seriesSpec.label as any).style?.fill)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n ;(seriesSpec.label as any).style = {\n ...(seriesSpec.label as any).style,\n fill: (datum: any) => {\n return datum?.[measureValueKey] >= splitValue ? colorConfig.positiveColor : colorConfig.negativeColor\n },\n }\n }\n }\n\n return result\n}\n"],"names":["splitLine","spec","context","advancedVSeed","annotation","chartType","datasetReshapeInfo","baseConfig","splitLineConfig","array","item","splitValue","Number","isNumber","result","colorTheme","colorConfig","isPlainObject","groupMark","datum","ctx","vchart","chart","lineSeries","s","lineMark","lineGraphics","points","seg","pt","splitCoordinate","minY","Math","p","maxY","ratio","lineStroke","areaFill","VUtilColor","attrs","start","entry","opt","parentNode","seriesSpec","measureValueKey","console","isNullish"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pipeline/spec/chart/pipes/annotation/splitLine.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/annotation/splitLine.ts"],"sourcesContent":["import type { ICartesianSeries, IChart, ILineChartSpec, IVChart } from '@visactor/vchart'\nimport { array, Color as VUtilColor } from '@visactor/vutils'\nimport { isNullish, isNumber, isPlainObject } from 'remeda'\nimport type { AnnotationHorizontalLine, SpecPipe, Color } from 'src/types'\n\ninterface SplitConfig {\n points: { x: number; y: number }[]\n splitCoordinate: number\n lineStroke: {\n gradient: string\n x0: number\n x1: number\n y0: number\n y1: number\n stops: {\n color: string\n offset: number\n }[]\n }\n areaFill: {\n gradient: string\n x0: number\n x1: number\n y0: number\n y1: number\n stops: {\n color: string\n offset: number\n }[]\n }\n}\n\nexport const splitLine: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { annotation, chartType, datasetReshapeInfo } = advancedVSeed\n\n if (!annotation || !annotation.annotationHorizontalLine) {\n return spec\n }\n const baseConfig = advancedVSeed.config[chartType] as { color: Color }\n\n const splitLineConfig = array(annotation.annotationHorizontalLine).find(\n (item) => !!(item as AnnotationHorizontalLine).splitLine,\n ) as AnnotationHorizontalLine | undefined\n\n const splitValue = +(splitLineConfig?.yValue as number | string)\n\n if (Number.isNaN(splitValue) || !isNumber(splitValue)) {\n return spec\n }\n const result = { ...spec } as Partial<ILineChartSpec>\n const colorTheme = baseConfig?.color ?? {}\n const colorConfig = {\n positiveColor: colorTheme.positiveColor || 'red',\n negativeColor: colorTheme.negativeColor || 'green',\n ...(isPlainObject(splitLineConfig?.splitLine) ? splitLineConfig?.splitLine : {}),\n }\n\n const groupMark = {\n type: 'group',\n name: 'annotationHorizontalLine-splitLine',\n zIndex: 300,\n style: {\n splitConfig: (datum: any, ctx: any) => {\n const vchart = ctx.vchart as IVChart\n const chart = vchart.getChart() as IChart\n const lineSeries = chart.getAllSeries().find((s) => s.type === 'line' || s.type === 'area') as ICartesianSeries\n\n if (!lineSeries) {\n return\n }\n const lineMark = lineSeries.getMarkInName('line') ?? lineSeries.getMarkInName('area')\n\n if (!lineMark) {\n return\n }\n const lineGraphics = lineMark.getGraphics()\n\n if (!lineGraphics || lineGraphics.length !== 1 || !lineGraphics[0]) {\n return\n }\n const points = ((lineGraphics[0].attribute as any).points ?? []) as { x: number; y: number }[]\n\n if ((lineGraphics[0].attribute as any).segments?.length) {\n ;((lineGraphics[0].attribute as any).segments as any[]).forEach(\n (seg: { points: { x: number; y: number }[] }) => {\n seg.points.forEach((pt: { x: number; y: number }) => {\n points.push({ x: pt.x, y: pt.y })\n })\n },\n )\n }\n\n if (!points || !points.length) {\n return\n }\n const splitCoordinate = lineSeries.getYAxisHelper().getScale!(0).scale(splitValue)\n const minY = Math.min(...points.map((p) => p.y))\n const maxY = Math.max(...points.map((p) => p.y))\n const ratio = (splitCoordinate - minY) / (maxY - minY)\n const lineStroke = {\n gradient: 'linear',\n x0: 0,\n x1: 0,\n y0: 0,\n y1: 1,\n stops: [\n {\n color: colorConfig.positiveColor,\n offset: 0,\n },\n {\n color: colorConfig.positiveColor,\n offset: ratio,\n },\n {\n color: colorConfig.negativeColor,\n offset: ratio + 0.0000001,\n },\n {\n color: colorConfig.negativeColor,\n offset: 1,\n },\n ],\n }\n const areaFill = {\n gradient: 'linear',\n x0: 0,\n x1: 0,\n y0: 0,\n y1: 1,\n stops: [\n {\n color: colorConfig.positiveColor,\n offset: 0,\n },\n {\n color: new VUtilColor(colorConfig.positiveColor).setOpacity(0).toRGBA(),\n offset: ratio,\n },\n {\n offset: ratio + 0.0000001,\n color: new VUtilColor(colorConfig.negativeColor).setOpacity(0).toRGBA(),\n },\n {\n color: colorConfig.negativeColor,\n offset: 1,\n },\n ],\n }\n const attrs: any = {\n segments: null,\n points,\n }\n\n if (lineGraphics[0].type === 'area') {\n attrs.stroke = lineStroke\n attrs.fill = areaFill\n } else {\n attrs.stroke = lineStroke\n }\n\n lineGraphics[0].setAttributes(attrs as unknown as Record<string, any>)\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n lineGraphics[0].setFinalAttributes?.(attrs)\n const start = lineSeries.getRegion().getLayoutStartPoint()\n\n return {\n points: points.map((entry) => ({ x: entry.x + start.x, y: entry.y + start.y })),\n splitCoordinate,\n areaFill,\n lineStroke,\n } as SplitConfig\n },\n },\n children: [\n {\n type: 'area',\n interactive: false,\n zIndex: 500,\n style: {\n fillOpacity: 0.5,\n points: (datum: any, ctx: any, opt: any) => {\n const parentNode = opt.mark?._product?.parent\n\n if (parentNode?.attribute?.splitConfig) {\n const { points, splitCoordinate } = parentNode.attribute.splitConfig as SplitConfig\n\n return points.map((entry: { x: number; y: number }) => {\n return {\n ...entry,\n y1: splitCoordinate,\n }\n })\n }\n\n return []\n },\n fill: (datum: any, ctx: any, opt: any) => {\n const parentNode = opt.mark?._product?.parent\n\n if (parentNode?.attribute?.splitConfig) {\n const { areaFill } = parentNode.attribute.splitConfig as SplitConfig\n\n return areaFill\n }\n\n return\n },\n },\n },\n ],\n }\n\n if (!result.customMark) {\n result.customMark = []\n }\n\n ;(result.customMark as any[]).push(groupMark)\n\n const seriesSpec =\n result.type === 'line' || result.type === 'area'\n ? result\n : result.series?.find((s) => s.type === 'line' || s.type === 'area')\n\n if (seriesSpec) {\n if (!seriesSpec.point) {\n seriesSpec.point = {}\n }\n if (!seriesSpec.line) {\n seriesSpec.line = {}\n }\n\n if (!seriesSpec.point.style) {\n seriesSpec.point.style = {}\n }\n if (!seriesSpec.line.style) {\n seriesSpec.line.style = {}\n }\n\n const measureValueKey = datasetReshapeInfo[0].foldInfo.measureValue\n\n seriesSpec.point.style.fill = (datum) => {\n return datum?.[measureValueKey] >= splitValue ? colorConfig.positiveColor : colorConfig.negativeColor\n }\n seriesSpec.line.style.stroke = (datum) => {\n return datum?.[measureValueKey] >= splitValue ? colorConfig.positiveColor : colorConfig.negativeColor\n }\n if (seriesSpec.label && (seriesSpec.label as any).visible && isNullish((seriesSpec.label as any).style?.fill)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n ;(seriesSpec.label as any).style = {\n ...(seriesSpec.label as any).style,\n fill: (datum: any) => {\n return datum?.[measureValueKey] >= splitValue ? colorConfig.positiveColor : colorConfig.negativeColor\n },\n }\n }\n }\n\n return result\n}\n"],"names":["splitLine","spec","context","advancedVSeed","annotation","chartType","datasetReshapeInfo","baseConfig","splitLineConfig","array","item","splitValue","Number","isNumber","result","colorTheme","colorConfig","isPlainObject","groupMark","datum","ctx","vchart","chart","lineSeries","s","lineMark","lineGraphics","points","seg","pt","splitCoordinate","minY","Math","p","maxY","ratio","lineStroke","areaFill","VUtilColor","attrs","start","entry","opt","parentNode","seriesSpec","measureValueKey","isNullish"],"mappings":"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"}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import type { SpecPipe } from '../../../../../types';
|
|
2
2
|
export declare const color: SpecPipe;
|
|
3
|
-
export declare const createSpecifiedForColorMapping: (colorMapping?: Record<string, string>, colorIdMap?: Record<string,
|
|
3
|
+
export declare const createSpecifiedForColorMapping: (colorMapping?: Record<string, string>, colorIdMap?: Record<string, {
|
|
4
|
+
id: string;
|
|
5
|
+
alias: string;
|
|
6
|
+
}>, colorItems?: string[]) => {
|
|
4
7
|
[x: string]: string;
|
|
5
8
|
} | undefined;
|
|
@@ -26,7 +26,7 @@ const createSpecifiedForColorMapping = (colorMapping, colorIdMap, colorItems)=>{
|
|
|
26
26
|
const accurateMap = colors.reduce((prev, cur)=>{
|
|
27
27
|
const name = cur[0];
|
|
28
28
|
const colorValue = cur[1];
|
|
29
|
-
const accurateMatchedList = Object.entries(colorIdMap).filter(([colorKey,
|
|
29
|
+
const accurateMatchedList = Object.entries(colorIdMap).filter(([colorKey, colorObj])=>colorKey === name || colorObj.alias === name || colorObj.id === name);
|
|
30
30
|
accurateMatchedList.forEach((item)=>{
|
|
31
31
|
prev[item[0]] = colorValue;
|
|
32
32
|
matchedList.push(name);
|
|
@@ -37,7 +37,7 @@ const createSpecifiedForColorMapping = (colorMapping, colorIdMap, colorItems)=>{
|
|
|
37
37
|
const name = cur[0];
|
|
38
38
|
const colorValue = cur[1];
|
|
39
39
|
if (matchedList.includes(name)) return prev;
|
|
40
|
-
const fuzzyMatchedList = Object.entries(colorIdMap).filter(([colorKey,
|
|
40
|
+
const fuzzyMatchedList = Object.entries(colorIdMap).filter(([colorKey, colorObj])=>colorKey.includes(name) || colorObj.alias.includes(name) || colorObj.id.includes(name));
|
|
41
41
|
fuzzyMatchedList.forEach((item)=>{
|
|
42
42
|
if (prev[item[0]]) return;
|
|
43
43
|
prev[item[0]] = colorValue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline/spec/chart/pipes/color/color.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/color/color.ts"],"sourcesContent":["import type { ILineChartSpec } from '@visactor/vchart'\nimport type { Color, SpecPipe } from 'src/types'\n\nexport const color: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo, chartType } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n const baseConfig = advancedVSeed.config[chartType] as { color: Color }\n\n if (!baseConfig || !baseConfig.color) {\n return result\n }\n\n const colorItems = unfoldInfo.colorItems\n const colorIdMap = unfoldInfo.colorIdMap\n\n const { color } = baseConfig\n const { colorScheme, colorMapping } = color\n\n result.color = {\n type: 'ordinal',\n domain: colorItems,\n range: colorScheme,\n specified: createSpecifiedForColorMapping(colorMapping, colorIdMap, colorItems),\n } as ILineChartSpec['color']\n return result\n}\n\nexport const createSpecifiedForColorMapping = (\n colorMapping?: Record<string, string>,\n colorIdMap?: Record<string, string>,\n colorItems?: string[],\n) => {\n if (!colorMapping || !colorIdMap || !colorItems) {\n return undefined\n }\n\n const matchedList: string[] = []\n\n // 名称越长优先级越高: 按名称长度降, 优先匹配名称长的, 避免一个短的名称匹配到了超多个长的\n const colors = Object.entries(colorMapping).sort((a, b) => b[0].length - a[0].length)\n // 准确匹配\n const accurateMap = colors.reduce(\n (prev, cur) => {\n const name = cur[0]\n const colorValue = cur[1]\n\n const accurateMatchedList = Object.entries(colorIdMap).filter(([colorKey,
|
|
1
|
+
{"version":3,"file":"pipeline/spec/chart/pipes/color/color.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/color/color.ts"],"sourcesContent":["import type { ILineChartSpec } from '@visactor/vchart'\nimport type { Color, SpecPipe } from 'src/types'\n\nexport const color: SpecPipe = (spec, context) => {\n const result = { ...spec } as ILineChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo, chartType } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n const baseConfig = advancedVSeed.config[chartType] as { color: Color }\n\n if (!baseConfig || !baseConfig.color) {\n return result\n }\n\n const colorItems = unfoldInfo.colorItems\n const colorIdMap = unfoldInfo.colorIdMap\n\n const { color } = baseConfig\n const { colorScheme, colorMapping } = color\n\n result.color = {\n type: 'ordinal',\n domain: colorItems,\n range: colorScheme,\n specified: createSpecifiedForColorMapping(colorMapping, colorIdMap, colorItems),\n } as ILineChartSpec['color']\n return result\n}\n\nexport const createSpecifiedForColorMapping = (\n colorMapping?: Record<string, string>,\n colorIdMap?: Record<string, { id: string; alias: string }>,\n colorItems?: string[],\n) => {\n if (!colorMapping || !colorIdMap || !colorItems) {\n return undefined\n }\n\n const matchedList: string[] = []\n\n // 名称越长优先级越高: 按名称长度降, 优先匹配名称长的, 避免一个短的名称匹配到了超多个长的\n const colors = Object.entries(colorMapping).sort((a, b) => b[0].length - a[0].length)\n // 准确匹配\n const accurateMap = colors.reduce(\n (prev, cur) => {\n const name = cur[0]\n const colorValue = cur[1]\n\n const accurateMatchedList = Object.entries(colorIdMap).filter(([colorKey, colorObj]) => {\n return colorKey === name || colorObj.alias === name || colorObj.id === name\n })\n accurateMatchedList.forEach((item) => {\n prev[item[0]] = colorValue\n matchedList.push(name)\n })\n\n return prev\n },\n {} as Record<string, string>,\n )\n\n // 模糊匹配\n const fuzzyMap = colors.reduce(\n (prev, cur) => {\n const name = cur[0]\n const colorValue = cur[1]\n if (matchedList.includes(name)) {\n return prev\n }\n\n const fuzzyMatchedList = Object.entries(colorIdMap).filter(([colorKey, colorObj]) => {\n return colorKey.includes(name) || colorObj.alias.includes(name) || colorObj.id.includes(name)\n })\n fuzzyMatchedList.forEach((item) => {\n // 已经匹配有值, 则不重复匹配\n if (prev[item[0]]) {\n return\n }\n prev[item[0]] = colorValue\n })\n\n return prev\n },\n {} as Record<string, string>,\n )\n\n // 合并, 准确匹配的优先级高\n return {\n ...fuzzyMap,\n ...accurateMap,\n }\n}\n"],"names":["color","spec","context","result","advancedVSeed","datasetReshapeInfo","chartType","unfoldInfo","baseConfig","colorItems","colorIdMap","colorScheme","colorMapping","createSpecifiedForColorMapping","matchedList","colors","Object","a","b","accurateMap","prev","cur","name","colorValue","accurateMatchedList","colorKey","colorObj","item","fuzzyMap","fuzzyMatchedList"],"mappings":"AAGO,MAAMA,cAAkB,CAACC,MAAMC;IACpC,MAAMC,SAAS;QAAE,GAAGF,IAAI;IAAC;IACzB,MAAM,EAAEG,aAAa,EAAE,GAAGF;IAC1B,MAAM,EAAEG,kBAAkB,EAAEC,SAAS,EAAE,GAAGF;IAC1C,MAAM,EAAEG,UAAU,EAAE,GAAGF,kBAAkB,CAAC,EAAE;IAC5C,MAAMG,aAAaJ,cAAc,MAAM,CAACE,UAAU;IAElD,IAAI,CAACE,cAAc,CAACA,WAAW,KAAK,EAClC,OAAOL;IAGT,MAAMM,aAAaF,WAAW,UAAU;IACxC,MAAMG,aAAaH,WAAW,UAAU;IAExC,MAAM,EAAEP,KAAK,EAAE,GAAGQ;IAClB,MAAM,EAAEG,WAAW,EAAEC,YAAY,EAAE,GAAGZ;IAEtCG,OAAO,KAAK,GAAG;QACb,MAAM;QACN,QAAQM;QACR,OAAOE;QACP,WAAWE,+BAA+BD,cAAcF,YAAYD;IACtE;IACA,OAAON;AACT;AAEO,MAAMU,iCAAiC,CAC5CD,cACAF,YACAD;IAEA,IAAI,CAACG,gBAAgB,CAACF,cAAc,CAACD,YACnC;IAGF,MAAMK,cAAwB,EAAE;IAGhC,MAAMC,SAASC,OAAO,OAAO,CAACJ,cAAc,IAAI,CAAC,CAACK,GAAGC,IAAMA,CAAC,CAAC,EAAE,CAAC,MAAM,GAAGD,CAAC,CAAC,EAAE,CAAC,MAAM;IAEpF,MAAME,cAAcJ,OAAO,MAAM,CAC/B,CAACK,MAAMC;QACL,MAAMC,OAAOD,GAAG,CAAC,EAAE;QACnB,MAAME,aAAaF,GAAG,CAAC,EAAE;QAEzB,MAAMG,sBAAsBR,OAAO,OAAO,CAACN,YAAY,MAAM,CAAC,CAAC,CAACe,UAAUC,SAAS,GAC1ED,aAAaH,QAAQI,SAAS,KAAK,KAAKJ,QAAQI,SAAS,EAAE,KAAKJ;QAEzEE,oBAAoB,OAAO,CAAC,CAACG;YAC3BP,IAAI,CAACO,IAAI,CAAC,EAAE,CAAC,GAAGJ;YAChBT,YAAY,IAAI,CAACQ;QACnB;QAEA,OAAOF;IACT,GACA,CAAC;IAIH,MAAMQ,WAAWb,OAAO,MAAM,CAC5B,CAACK,MAAMC;QACL,MAAMC,OAAOD,GAAG,CAAC,EAAE;QACnB,MAAME,aAAaF,GAAG,CAAC,EAAE;QACzB,IAAIP,YAAY,QAAQ,CAACQ,OACvB,OAAOF;QAGT,MAAMS,mBAAmBb,OAAO,OAAO,CAACN,YAAY,MAAM,CAAC,CAAC,CAACe,UAAUC,SAAS,GACvED,SAAS,QAAQ,CAACH,SAASI,SAAS,KAAK,CAAC,QAAQ,CAACJ,SAASI,SAAS,EAAE,CAAC,QAAQ,CAACJ;QAE1FO,iBAAiB,OAAO,CAAC,CAACF;YAExB,IAAIP,IAAI,CAACO,IAAI,CAAC,EAAE,CAAC,EACf;YAEFP,IAAI,CAACO,IAAI,CAAC,EAAE,CAAC,GAAGJ;QAClB;QAEA,OAAOH;IACT,GACA,CAAC;IAIH,OAAO;QACL,GAAGQ,QAAQ;QACX,GAAGT,WAAW;IAChB;AACF"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { isDeepEqual } from "remeda";
|
|
2
|
-
import {
|
|
2
|
+
import { MeasureId } from "../../../../../dataReshape/index.js";
|
|
3
3
|
const initBarParallel = (spec, context)=>{
|
|
4
4
|
const result = {
|
|
5
5
|
...spec
|
|
@@ -15,7 +15,7 @@ const initBarParallel = (spec, context)=>{
|
|
|
15
15
|
];
|
|
16
16
|
if (!sameDimensionsMode) {
|
|
17
17
|
result.yField.push(unfoldInfo.encodingDetail);
|
|
18
|
-
if (encoding.detail?.[0] ===
|
|
18
|
+
if (encoding.detail?.[0] === MeasureId && encoding.x?.length === 1) result.yField.pop();
|
|
19
19
|
}
|
|
20
20
|
result.xField = foldInfo.measureValue;
|
|
21
21
|
result.seriesField = unfoldInfo.encodingColorId;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline/spec/chart/pipes/init/barParallel.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/barParallel.ts"],"sourcesContent":["import type { IBarChartSpec } from '@visactor/vchart'\nimport { isDeepEqual } from 'remeda'\nimport {
|
|
1
|
+
{"version":3,"file":"pipeline/spec/chart/pipes/init/barParallel.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/barParallel.ts"],"sourcesContent":["import type { IBarChartSpec } from '@visactor/vchart'\nimport { isDeepEqual } from 'remeda'\nimport { MeasureId } from 'src/dataReshape'\nimport type { SpecPipe } from 'src/types'\n\nexport const initBarParallel: SpecPipe = (spec, context) => {\n const result = { ...spec } as IBarChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo, encoding } = advancedVSeed\n const { unfoldInfo, foldInfo } = datasetReshapeInfo[0]\n\n const sameDimensionsMode = isDeepEqual(encoding.y, encoding.color)\n\n result.type = 'bar'\n result.direction = 'horizontal'\n\n result.yField = [unfoldInfo.encodingY]\n\n if (!sameDimensionsMode) {\n result.yField.push(unfoldInfo.encodingDetail)\n\n if (encoding.detail?.[0] === MeasureId && encoding.x?.length === 1) {\n result.yField.pop()\n }\n }\n\n result.xField = foldInfo.measureValue\n result.seriesField = unfoldInfo.encodingColorId\n\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n return result\n}\n"],"names":["initBarParallel","spec","context","result","advancedVSeed","datasetReshapeInfo","encoding","unfoldInfo","foldInfo","sameDimensionsMode","isDeepEqual","MeasureId"],"mappings":";;AAKO,MAAMA,kBAA4B,CAACC,MAAMC;IAC9C,MAAMC,SAAS;QAAE,GAAGF,IAAI;IAAC;IACzB,MAAM,EAAEG,aAAa,EAAE,GAAGF;IAC1B,MAAM,EAAEG,kBAAkB,EAAEC,QAAQ,EAAE,GAAGF;IACzC,MAAM,EAAEG,UAAU,EAAEC,QAAQ,EAAE,GAAGH,kBAAkB,CAAC,EAAE;IAEtD,MAAMI,qBAAqBC,YAAYJ,SAAS,CAAC,EAAEA,SAAS,KAAK;IAEjEH,OAAO,IAAI,GAAG;IACdA,OAAO,SAAS,GAAG;IAEnBA,OAAO,MAAM,GAAG;QAACI,WAAW,SAAS;KAAC;IAEtC,IAAI,CAACE,oBAAoB;QACvBN,OAAO,MAAM,CAAC,IAAI,CAACI,WAAW,cAAc;QAE5C,IAAID,SAAS,MAAM,EAAE,CAAC,EAAE,KAAKK,aAAaL,SAAS,CAAC,EAAE,WAAW,GAC/DH,OAAO,MAAM,CAAC,GAAG;IAErB;IAEAA,OAAO,MAAM,GAAGK,SAAS,YAAY;IACrCL,OAAO,WAAW,GAAGI,WAAW,eAAe;IAE/CJ,OAAO,OAAO,GAAG;IACjBA,OAAO,MAAM,GAAG;QACd;YACE,MAAM;QACR;KACD;IACDA,OAAO,SAAS,GAAG;IACnB,OAAOA;AACT"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { isDeepEqual } from "remeda";
|
|
2
|
-
import { MaxMeasureId,
|
|
2
|
+
import { MaxMeasureId, MeasureId, MedianMeasureId, MinMeasureId, OutliersMeasureId, Q1MeasureValue, Q3MeasureValue } from "../../../../../dataReshape/constant.js";
|
|
3
3
|
const initBoxplot = (spec, context)=>{
|
|
4
4
|
const result = {
|
|
5
5
|
...spec
|
|
@@ -21,7 +21,7 @@ const initBoxplot = (spec, context)=>{
|
|
|
21
21
|
const sameDimensionsMode = isDeepEqual(encoding.x, encoding.color);
|
|
22
22
|
if (!sameDimensionsMode) {
|
|
23
23
|
result.xField.push(unfoldInfo.encodingColor);
|
|
24
|
-
if (encoding.color?.[0] ===
|
|
24
|
+
if (encoding.color?.[0] === MeasureId && encoding.value?.length === 1) result.xField.pop();
|
|
25
25
|
}
|
|
26
26
|
result.padding = 0;
|
|
27
27
|
result.region = [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline/spec/chart/pipes/init/boxplot.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/boxplot.ts"],"sourcesContent":["import type { IBoxPlotChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\nimport { isDeepEqual } from 'remeda'\nimport {\n MaxMeasureId,\n
|
|
1
|
+
{"version":3,"file":"pipeline/spec/chart/pipes/init/boxplot.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/boxplot.ts"],"sourcesContent":["import type { IBoxPlotChartSpec } from '@visactor/vchart'\nimport type { SpecPipe } from 'src/types'\nimport { isDeepEqual } from 'remeda'\nimport {\n MaxMeasureId,\n MeasureId,\n MedianMeasureId,\n MinMeasureId,\n OutliersMeasureId,\n Q1MeasureValue,\n Q3MeasureValue,\n} from 'src/dataReshape/constant'\n\nexport const initBoxplot: SpecPipe = (spec, context) => {\n const result = { ...spec } as IBoxPlotChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo, encoding } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n\n result.type = 'boxPlot'\n result.minField = MinMeasureId\n result.q1Field = Q1MeasureValue\n result.medianField = MedianMeasureId\n result.maxField = MaxMeasureId\n result.q3Field = Q3MeasureValue\n result.outliersField = OutliersMeasureId\n result.xField = [unfoldInfo.encodingX]\n result.seriesField = unfoldInfo.encodingColorId\n\n const sameDimensionsMode = isDeepEqual(encoding.x, encoding.color)\n\n if (!sameDimensionsMode) {\n result.xField.push(unfoldInfo.encodingColor)\n\n if (encoding.color?.[0] === MeasureId && encoding.value?.length === 1) {\n result.xField.pop()\n }\n }\n\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n return result\n}\n"],"names":["initBoxplot","spec","context","result","advancedVSeed","datasetReshapeInfo","encoding","unfoldInfo","MinMeasureId","Q1MeasureValue","MedianMeasureId","MaxMeasureId","Q3MeasureValue","OutliersMeasureId","sameDimensionsMode","isDeepEqual","MeasureId"],"mappings":";;AAaO,MAAMA,cAAwB,CAACC,MAAMC;IAC1C,MAAMC,SAAS;QAAE,GAAGF,IAAI;IAAC;IACzB,MAAM,EAAEG,aAAa,EAAE,GAAGF;IAC1B,MAAM,EAAEG,kBAAkB,EAAEC,QAAQ,EAAE,GAAGF;IACzC,MAAM,EAAEG,UAAU,EAAE,GAAGF,kBAAkB,CAAC,EAAE;IAE5CF,OAAO,IAAI,GAAG;IACdA,OAAO,QAAQ,GAAGK;IAClBL,OAAO,OAAO,GAAGM;IACjBN,OAAO,WAAW,GAAGO;IACrBP,OAAO,QAAQ,GAAGQ;IAClBR,OAAO,OAAO,GAAGS;IACjBT,OAAO,aAAa,GAAGU;IACvBV,OAAO,MAAM,GAAG;QAACI,WAAW,SAAS;KAAC;IACtCJ,OAAO,WAAW,GAAGI,WAAW,eAAe;IAE/C,MAAMO,qBAAqBC,YAAYT,SAAS,CAAC,EAAEA,SAAS,KAAK;IAEjE,IAAI,CAACQ,oBAAoB;QACvBX,OAAO,MAAM,CAAC,IAAI,CAACI,WAAW,aAAa;QAE3C,IAAID,SAAS,KAAK,EAAE,CAAC,EAAE,KAAKU,aAAaV,SAAS,KAAK,EAAE,WAAW,GAClEH,OAAO,MAAM,CAAC,GAAG;IAErB;IAEAA,OAAO,OAAO,GAAG;IACjBA,OAAO,MAAM,GAAG;QACd;YACE,MAAM;QACR;KACD;IACDA,OAAO,SAAS,GAAG;IACnB,OAAOA;AACT"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { isDeepEqual } from "remeda";
|
|
2
|
-
import {
|
|
2
|
+
import { MeasureId } from "../../../../../dataReshape/index.js";
|
|
3
3
|
const initColumnParallel = (spec, context)=>{
|
|
4
4
|
const result = {
|
|
5
5
|
...spec
|
|
@@ -15,7 +15,7 @@ const initColumnParallel = (spec, context)=>{
|
|
|
15
15
|
];
|
|
16
16
|
if (!sameDimensionsMode) {
|
|
17
17
|
result.xField.push(unfoldInfo.encodingDetail);
|
|
18
|
-
if (encoding.detail?.[0] ===
|
|
18
|
+
if (encoding.detail?.[0] === MeasureId && encoding.y?.length === 1) result.xField.pop();
|
|
19
19
|
}
|
|
20
20
|
result.yField = foldInfo.measureValue;
|
|
21
21
|
result.seriesField = unfoldInfo.encodingColorId;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline/spec/chart/pipes/init/columnParallel.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/columnParallel.ts"],"sourcesContent":["import type { IBarChartSpec } from '@visactor/vchart'\nimport { isDeepEqual } from 'remeda'\nimport {
|
|
1
|
+
{"version":3,"file":"pipeline/spec/chart/pipes/init/columnParallel.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/init/columnParallel.ts"],"sourcesContent":["import type { IBarChartSpec } from '@visactor/vchart'\nimport { isDeepEqual } from 'remeda'\nimport { MeasureId } from 'src/dataReshape'\nimport type { SpecPipe } from 'src/types'\n\nexport const initColumnParallel: SpecPipe = (spec, context) => {\n const result = { ...spec } as IBarChartSpec\n const { advancedVSeed } = context\n const { datasetReshapeInfo, encoding } = advancedVSeed\n const { unfoldInfo, foldInfo } = datasetReshapeInfo[0]\n\n const sameDimensionsMode = isDeepEqual(encoding.x, encoding.color)\n\n result.type = 'bar'\n result.direction = 'vertical'\n result.xField = [unfoldInfo.encodingX]\n\n if (!sameDimensionsMode) {\n result.xField.push(unfoldInfo.encodingDetail)\n\n if (encoding.detail?.[0] === MeasureId && encoding.y?.length === 1) {\n result.xField.pop()\n }\n }\n\n result.yField = foldInfo.measureValue\n result.seriesField = unfoldInfo.encodingColorId\n result.padding = 0\n result.region = [\n {\n clip: true,\n },\n ]\n result.animation = true\n return result\n}\n"],"names":["initColumnParallel","spec","context","result","advancedVSeed","datasetReshapeInfo","encoding","unfoldInfo","foldInfo","sameDimensionsMode","isDeepEqual","MeasureId"],"mappings":";;AAKO,MAAMA,qBAA+B,CAACC,MAAMC;IACjD,MAAMC,SAAS;QAAE,GAAGF,IAAI;IAAC;IACzB,MAAM,EAAEG,aAAa,EAAE,GAAGF;IAC1B,MAAM,EAAEG,kBAAkB,EAAEC,QAAQ,EAAE,GAAGF;IACzC,MAAM,EAAEG,UAAU,EAAEC,QAAQ,EAAE,GAAGH,kBAAkB,CAAC,EAAE;IAEtD,MAAMI,qBAAqBC,YAAYJ,SAAS,CAAC,EAAEA,SAAS,KAAK;IAEjEH,OAAO,IAAI,GAAG;IACdA,OAAO,SAAS,GAAG;IACnBA,OAAO,MAAM,GAAG;QAACI,WAAW,SAAS;KAAC;IAEtC,IAAI,CAACE,oBAAoB;QACvBN,OAAO,MAAM,CAAC,IAAI,CAACI,WAAW,cAAc;QAE5C,IAAID,SAAS,MAAM,EAAE,CAAC,EAAE,KAAKK,aAAaL,SAAS,CAAC,EAAE,WAAW,GAC/DH,OAAO,MAAM,CAAC,GAAG;IAErB;IAEAA,OAAO,MAAM,GAAGK,SAAS,YAAY;IACrCL,OAAO,WAAW,GAAGI,WAAW,eAAe;IAC/CJ,OAAO,OAAO,GAAG;IACjBA,OAAO,MAAM,GAAG;QACd;YACE,MAAM;QACR;KACD;IACDA,OAAO,SAAS,GAAG;IACnB,OAAOA;AACT"}
|