@visactor/vseed 0.1.10 → 0.1.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.cjs +1 -1
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/esm/pipeline/advanced/chart/pipes/measures/buildMeasures.js +8 -2
- package/dist/esm/pipeline/advanced/chart/pipes/measures/buildMeasures.js.map +1 -1
- package/dist/esm/pipeline/advanced/chart/pipes/measures/buildMeasuresForDualAxis.js +6 -5
- package/dist/esm/pipeline/advanced/chart/pipes/measures/buildMeasuresForDualAxis.js.map +1 -1
- package/dist/esm/pipeline/advanced/chart/pipes/measures/buildMeasuresForScatter.js +6 -5
- package/dist/esm/pipeline/advanced/chart/pipes/measures/buildMeasuresForScatter.js.map +1 -1
- package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithDualEncoding.js +3 -2
- package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithDualEncoding.js.map +1 -1
- package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithDualEncoding.js +3 -2
- package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithDualEncoding.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/markStyle/areaStyle.js +2 -2
- package/dist/esm/pipeline/spec/chart/pipes/markStyle/areaStyle.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/markStyle/barStyle.js +2 -1
- package/dist/esm/pipeline/spec/chart/pipes/markStyle/barStyle.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/markStyle/lineStyle.js +2 -2
- package/dist/esm/pipeline/spec/chart/pipes/markStyle/lineStyle.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/markStyle/pointStyle.js +2 -1
- package/dist/esm/pipeline/spec/chart/pipes/markStyle/pointStyle.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltip.js +3 -3
- package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltip.js.map +1 -1
- package/dist/esm/pipeline/utils/chatType.js +2 -1
- package/dist/esm/pipeline/utils/chatType.js.map +1 -1
- package/dist/esm/pipeline/utils/constant.d.ts +1 -0
- package/dist/esm/pipeline/utils/constant.js +2 -1
- package/dist/esm/pipeline/utils/constant.js.map +1 -1
- package/dist/esm/types/properties/dimensions/dimensions.d.ts +2 -1
- package/dist/esm/types/properties/encoding/dimensionEncoding.d.ts +13 -0
- package/dist/esm/types/properties/encoding/dimensionEncoding.js +0 -0
- package/dist/esm/types/properties/encoding/index.d.ts +4 -0
- package/dist/esm/types/properties/encoding/index.js +3 -1
- package/dist/esm/types/properties/encoding/measureEncoding.d.ts +1 -0
- package/dist/esm/types/properties/encoding/measureEncoding.js +0 -0
- package/dist/esm/types/properties/encoding/zDimensionEncoding.d.ts +12 -0
- package/dist/esm/types/properties/encoding/zDimensionEncoding.js +15 -0
- package/dist/esm/types/properties/encoding/zDimensionEncoding.js.map +1 -0
- package/dist/esm/types/properties/encoding/zMeasureEncoding.d.ts +15 -0
- package/dist/esm/types/properties/encoding/zMeasureEncoding.js +18 -0
- package/dist/esm/types/properties/encoding/zMeasureEncoding.js.map +1 -0
- package/dist/esm/types/properties/measures/measures.d.ts +2 -1
- package/dist/umd/index.js +58 -25
- package/dist/umd/index.js.map +1 -1
- package/package.json +1 -1
@@ -1,5 +1,6 @@
|
|
1
1
|
import { isMeasureTreeWithChildren, isMeasureTreeWithParentId, normalizeMeasureTree } from "./utils.js";
|
2
2
|
import { isPivotChart } from "../../../../utils/index.js";
|
3
|
+
import { DEFAULT_PARENT_ID } from "../../../../utils/constant.js";
|
3
4
|
const buildMeasures = (advancedVSeed)=>{
|
4
5
|
if (isMeasureTreeWithChildren(advancedVSeed.measures)) {
|
5
6
|
advancedVSeed.measures = normalizeMeasureTree(advancedVSeed.measures);
|
@@ -15,17 +16,22 @@ const buildMeasures = (advancedVSeed)=>{
|
|
15
16
|
const generateMeasuresByParentId = (measures)=>{
|
16
17
|
const measureTree = [];
|
17
18
|
measures.forEach((measure)=>{
|
18
|
-
if (!measure.parentId) return;
|
19
19
|
const parent = measureTree.find((item)=>item.id === measure.parentId);
|
20
20
|
if (parent && 'children' in parent) {
|
21
21
|
parent.children = parent.children || [];
|
22
22
|
parent.children.push(measure);
|
23
|
-
} else measureTree.push({
|
23
|
+
} else if (measure.parentId) measureTree.push({
|
24
24
|
id: measure.parentId,
|
25
25
|
children: [
|
26
26
|
measure
|
27
27
|
]
|
28
28
|
});
|
29
|
+
else measureTree.push({
|
30
|
+
id: DEFAULT_PARENT_ID,
|
31
|
+
children: [
|
32
|
+
measure
|
33
|
+
]
|
34
|
+
});
|
29
35
|
});
|
30
36
|
return measureTree;
|
31
37
|
};
|
@@ -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, AdvancedVSeed, MeasureGroup, Measures, MeasureTree } from 'src/types'\nimport { isMeasureTreeWithChildren, isMeasureTreeWithParentId, normalizeMeasureTree } from './utils'\nimport { isPivotChart } from 'src/pipeline/utils'\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 AdvancedVSeed)) {\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
|
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, AdvancedVSeed, MeasureGroup, Measures, MeasureTree } 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 AdvancedVSeed)) {\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"}
|
@@ -1,5 +1,6 @@
|
|
1
1
|
import { isMeasureTreeWithChildren, isMeasureTreeWithParentId } from "./utils.js";
|
2
2
|
import { clone } from "remeda";
|
3
|
+
import { DEFAULT_PARENT_ID } from "../../../../utils/constant.js";
|
3
4
|
const buildMeasuresForDualAxis = (advancedVSeed, context)=>{
|
4
5
|
const { vseed } = context;
|
5
6
|
if (isMeasureTreeWithChildren(advancedVSeed.measures)) return advancedVSeed;
|
@@ -75,17 +76,17 @@ const dualMeasuresToMeasureTree = (dualMeasures)=>{
|
|
75
76
|
const generateMeasuresByParentId = (measures)=>{
|
76
77
|
const dualMeasures = [];
|
77
78
|
measures.forEach((item)=>{
|
78
|
-
|
79
|
-
if (!dualMeasures.find((d)=>d.id ===
|
80
|
-
id
|
79
|
+
const id = item.parentId || DEFAULT_PARENT_ID;
|
80
|
+
if (!dualMeasures.find((d)=>d.id === id)) dualMeasures.push({
|
81
|
+
id,
|
81
82
|
primaryMeasures: [],
|
82
83
|
secondaryMeasures: []
|
83
84
|
});
|
84
|
-
const dualChart = dualMeasures.find((d)=>d.id ===
|
85
|
+
const dualChart = dualMeasures.find((d)=>d.id === id);
|
85
86
|
if (!dualChart || !Array.isArray(dualChart.primaryMeasures) || !Array.isArray(dualChart.secondaryMeasures)) return;
|
86
87
|
const encoding = Array.isArray(item.encoding) ? item.encoding : [
|
87
88
|
item.encoding
|
88
|
-
];
|
89
|
+
].filter(Boolean);
|
89
90
|
const isPrimary = encoding.includes('primaryYAxis');
|
90
91
|
const isSecondary = encoding.includes('secondaryYAxis');
|
91
92
|
const isEmpty = !item.encoding;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"pipeline/advanced/chart/pipes/measures/buildMeasuresForDualAxis.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/measures/buildMeasuresForDualAxis.ts"],"sourcesContent":["import type { AdvancedPipe, DualAxis, DualMeasures, MeasureGroup, Measures, MeasureTree } from 'src/types'\nimport { isMeasureTreeWithParentId, isMeasureTreeWithChildren } from './utils'\nimport { clone } from 'remeda'\n\nexport const buildMeasuresForDualAxis: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context as {\n vseed: DualAxis\n }\n\n // 带Children的指标树, 不进行任何处理\n if (isMeasureTreeWithChildren(advancedVSeed.measures)) {\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 * 既不是带Children的指标树, 也不是带parentId的指标树, 则自动生成指标\n */\n const dualMeasures = vseed.dualMeasures\n ? clone(vseed.dualMeasures)\n : basicMeasuresToDualMeasures(advancedVSeed.measures || [])\n advancedVSeed.measures = dualMeasuresToMeasureTree(dualMeasures)\n\n return advancedVSeed\n}\n\nconst basicMeasuresToDualMeasures = (basicMeasures: Measures): DualMeasures => {\n const primaryMeasures: Measures = []\n const secondaryMeasures: Measures = []\n\n for (let index = 0; index < basicMeasures.length; index++) {\n const item = basicMeasures[index]\n const encoding = Array.isArray(item.encoding) ? item.encoding : [item.encoding]\n const isPrimaryYAxis = encoding.includes('primaryYAxis')\n const isSecondaryYAxis = encoding.includes('secondaryYAxis')\n\n if (isPrimaryYAxis) {\n primaryMeasures.push(item)\n } else if (isSecondaryYAxis) {\n secondaryMeasures.push(item)\n } else {\n if (index === 0) {\n primaryMeasures.push(item)\n } else {\n secondaryMeasures.push(item)\n }\n }\n }\n\n return [{ id: 'dualMeasures', primaryMeasures, secondaryMeasures }]\n}\n\nconst dualMeasuresToMeasureTree = (dualMeasures: DualMeasures): MeasureTree => {\n const measureTree = dualMeasures.map((item, index): MeasureGroup => {\n const { id, primaryMeasures, secondaryMeasures } = item\n const groupChildren: MeasureGroup[] = []\n\n let groupId: string = `${id}-`\n if (primaryMeasures) {\n const arrPrimaryMeasures = Array.isArray(primaryMeasures) ? primaryMeasures : [primaryMeasures]\n const alias = arrPrimaryMeasures.map((item) => item.alias || item.id).toString()\n groupId += alias\n groupChildren.push({\n id: `${index}-primary`,\n alias: arrPrimaryMeasures.map((item) => item.alias || item.id).toString(),\n children: arrPrimaryMeasures,\n })\n }\n if (secondaryMeasures) {\n const arrSecondaryMeasures = Array.isArray(secondaryMeasures) ? secondaryMeasures : [secondaryMeasures]\n const alias = arrSecondaryMeasures.map((item) => item.alias || item.id).toString()\n groupId += alias\n groupChildren.push({\n id: `${index}-secondary`,\n alias: arrSecondaryMeasures.map((item) => item.alias || item.id).toString(),\n children: arrSecondaryMeasures,\n })\n }\n\n return {\n id: groupId,\n alias: groupId,\n children: groupChildren,\n }\n })\n\n // 只有1个双轴图, 仅返回2层, vchart 绘制双轴图\n if (dualMeasures.length === 1) {\n return measureTree[0].children || []\n }\n\n // 有多个双轴图, 返回3层, pivot chart 绘制组合双轴图\n return measureTree\n}\n\nconst generateMeasuresByParentId = (measures: Measures) => {\n const dualMeasures: DualMeasures = []\n\n measures.forEach((item) => {\n
|
1
|
+
{"version":3,"file":"pipeline/advanced/chart/pipes/measures/buildMeasuresForDualAxis.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/measures/buildMeasuresForDualAxis.ts"],"sourcesContent":["import type { AdvancedPipe, DualAxis, DualMeasures, MeasureGroup, Measures, MeasureTree } from 'src/types'\nimport { isMeasureTreeWithParentId, isMeasureTreeWithChildren } from './utils'\nimport { clone } from 'remeda'\nimport { DEFAULT_PARENT_ID } from 'src/pipeline/utils/constant'\n\nexport const buildMeasuresForDualAxis: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context as {\n vseed: DualAxis\n }\n\n // 带Children的指标树, 不进行任何处理\n if (isMeasureTreeWithChildren(advancedVSeed.measures)) {\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 * 既不是带Children的指标树, 也不是带parentId的指标树, 则自动生成指标\n */\n const dualMeasures = vseed.dualMeasures\n ? clone(vseed.dualMeasures)\n : basicMeasuresToDualMeasures(advancedVSeed.measures || [])\n advancedVSeed.measures = dualMeasuresToMeasureTree(dualMeasures)\n\n return advancedVSeed\n}\n\nconst basicMeasuresToDualMeasures = (basicMeasures: Measures): DualMeasures => {\n const primaryMeasures: Measures = []\n const secondaryMeasures: Measures = []\n\n for (let index = 0; index < basicMeasures.length; index++) {\n const item = basicMeasures[index]\n const encoding = Array.isArray(item.encoding) ? item.encoding : [item.encoding]\n const isPrimaryYAxis = encoding.includes('primaryYAxis')\n const isSecondaryYAxis = encoding.includes('secondaryYAxis')\n\n if (isPrimaryYAxis) {\n primaryMeasures.push(item)\n } else if (isSecondaryYAxis) {\n secondaryMeasures.push(item)\n } else {\n if (index === 0) {\n primaryMeasures.push(item)\n } else {\n secondaryMeasures.push(item)\n }\n }\n }\n\n return [{ id: 'dualMeasures', primaryMeasures, secondaryMeasures }]\n}\n\nconst dualMeasuresToMeasureTree = (dualMeasures: DualMeasures): MeasureTree => {\n const measureTree = dualMeasures.map((item, index): MeasureGroup => {\n const { id, primaryMeasures, secondaryMeasures } = item\n const groupChildren: MeasureGroup[] = []\n\n let groupId: string = `${id}-`\n if (primaryMeasures) {\n const arrPrimaryMeasures = Array.isArray(primaryMeasures) ? primaryMeasures : [primaryMeasures]\n const alias = arrPrimaryMeasures.map((item) => item.alias || item.id).toString()\n groupId += alias\n groupChildren.push({\n id: `${index}-primary`,\n alias: arrPrimaryMeasures.map((item) => item.alias || item.id).toString(),\n children: arrPrimaryMeasures,\n })\n }\n if (secondaryMeasures) {\n const arrSecondaryMeasures = Array.isArray(secondaryMeasures) ? secondaryMeasures : [secondaryMeasures]\n const alias = arrSecondaryMeasures.map((item) => item.alias || item.id).toString()\n groupId += alias\n groupChildren.push({\n id: `${index}-secondary`,\n alias: arrSecondaryMeasures.map((item) => item.alias || item.id).toString(),\n children: arrSecondaryMeasures,\n })\n }\n\n return {\n id: groupId,\n alias: groupId,\n children: groupChildren,\n }\n })\n\n // 只有1个双轴图, 仅返回2层, vchart 绘制双轴图\n if (dualMeasures.length === 1) {\n return measureTree[0].children || []\n }\n\n // 有多个双轴图, 返回3层, pivot chart 绘制组合双轴图\n return measureTree\n}\n\nconst generateMeasuresByParentId = (measures: Measures) => {\n const dualMeasures: DualMeasures = []\n\n measures.forEach((item) => {\n const id = item.parentId || DEFAULT_PARENT_ID\n if (!dualMeasures.find((d) => d.id === id)) {\n dualMeasures.push({\n id,\n primaryMeasures: [],\n secondaryMeasures: [],\n })\n }\n\n const dualChart = dualMeasures.find((d) => d.id === id)\n if (!dualChart || !Array.isArray(dualChart.primaryMeasures) || !Array.isArray(dualChart.secondaryMeasures)) {\n return\n }\n\n const encoding = Array.isArray(item.encoding) ? item.encoding : [item.encoding].filter(Boolean)\n const isPrimary = encoding.includes('primaryYAxis')\n const isSecondary = encoding.includes('secondaryYAxis')\n const isEmpty = !item.encoding\n\n if (isPrimary) {\n dualChart.primaryMeasures.push(item)\n } else if (isSecondary) {\n dualChart.secondaryMeasures.push(item)\n } else if (isEmpty) {\n if (dualChart.primaryMeasures.length === 0) {\n dualChart.primaryMeasures.push(item)\n } else {\n dualChart.secondaryMeasures.push(item)\n }\n }\n })\n\n return dualMeasuresToMeasureTree(dualMeasures)\n}\n"],"names":["buildMeasuresForDualAxis","advancedVSeed","context","vseed","isMeasureTreeWithChildren","isMeasureTreeWithParentId","generateMeasuresByParentId","dualMeasures","clone","basicMeasuresToDualMeasures","dualMeasuresToMeasureTree","basicMeasures","primaryMeasures","secondaryMeasures","index","item","encoding","Array","isPrimaryYAxis","isSecondaryYAxis","measureTree","id","groupChildren","groupId","arrPrimaryMeasures","alias","arrSecondaryMeasures","measures","DEFAULT_PARENT_ID","d","dualChart","Boolean","isPrimary","isSecondary","isEmpty"],"mappings":"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"}
|
@@ -1,5 +1,6 @@
|
|
1
1
|
import { isMeasureTreeWithChildren, isMeasureTreeWithParentId } from "./utils.js";
|
2
2
|
import { clone } from "remeda";
|
3
|
+
import { DEFAULT_PARENT_ID } from "../../../../utils/constant.js";
|
3
4
|
const buildMeasuresForScatter = (advancedVSeed, context)=>{
|
4
5
|
const { vseed } = context;
|
5
6
|
if (isMeasureTreeWithChildren(advancedVSeed.measures)) return advancedVSeed;
|
@@ -76,17 +77,17 @@ const scatterMeasuresToMeasureTree = (scatterMeasures)=>{
|
|
76
77
|
const generateMeasuresByParentId = (measures)=>{
|
77
78
|
const scatterMeasures = [];
|
78
79
|
measures.forEach((item)=>{
|
79
|
-
|
80
|
-
if (!scatterMeasures.find((d)=>d.id ===
|
81
|
-
id
|
80
|
+
const id = item.parentId || DEFAULT_PARENT_ID;
|
81
|
+
if (!scatterMeasures.find((d)=>d.id === id)) scatterMeasures.push({
|
82
|
+
id,
|
82
83
|
yMeasures: [],
|
83
84
|
xMeasures: []
|
84
85
|
});
|
85
|
-
const scatterChart = scatterMeasures.find((d)=>d.id ===
|
86
|
+
const scatterChart = scatterMeasures.find((d)=>d.id === id);
|
86
87
|
if (!scatterChart || !Array.isArray(scatterChart.yMeasures) || !Array.isArray(scatterChart.xMeasures)) return;
|
87
88
|
const encoding = Array.isArray(item.encoding) ? item.encoding : [
|
88
89
|
item.encoding
|
89
|
-
];
|
90
|
+
].filter(Boolean);
|
90
91
|
const isX = encoding.includes('xAxis');
|
91
92
|
const isY = encoding.includes('yAxis');
|
92
93
|
const isEmpty = !encoding.length;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"pipeline/advanced/chart/pipes/measures/buildMeasuresForScatter.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/measures/buildMeasuresForScatter.ts"],"sourcesContent":["import type { AdvancedPipe, MeasureGroup, Measures, MeasureTree, Scatter, ScatterMeasures } from 'src/types'\nimport { isMeasureTreeWithParentId, isMeasureTreeWithChildren } from './utils'\nimport { clone } from 'remeda'\n\nexport const buildMeasuresForScatter: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context as {\n vseed: Scatter\n }\n\n // 带Children的指标树, 不进行任何处理\n if (isMeasureTreeWithChildren(advancedVSeed.measures)) {\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 * 既不是带Children的指标树, 也不是带parentId的指标树, 则自动生成指标\n */\n\n const scatterMeasures = vseed.scatterMeasures\n ? clone(vseed.scatterMeasures)\n : basicMeasuresToScatterMeasures(advancedVSeed.measures || [])\n advancedVSeed.measures = scatterMeasuresToMeasureTree(scatterMeasures)\n\n return advancedVSeed\n}\n\nconst basicMeasuresToScatterMeasures = (basicMeasures: Measures): ScatterMeasures => {\n const yMeasures: Measures = []\n const xMeasures: Measures = []\n\n for (let index = 0; index < basicMeasures.length; index++) {\n const item = basicMeasures[index]\n const encoding = Array.isArray(item.encoding) ? item.encoding : [item.encoding]\n const isYAxis = encoding.includes('yAxis')\n const isXAxis = encoding.includes('xAxis')\n\n if (isYAxis) {\n yMeasures.push(item)\n } else if (isXAxis) {\n xMeasures.push(item)\n } else {\n if (index !== 0) {\n yMeasures.push(item)\n } else {\n xMeasures.push(item)\n }\n }\n }\n\n if (yMeasures.length === 0 && xMeasures.length > 0) {\n yMeasures.push(xMeasures[0])\n }\n\n return [{ id: 'scatterMeasures', xMeasures, yMeasures }]\n}\n\nconst scatterMeasuresToMeasureTree = (scatterMeasures: ScatterMeasures): MeasureTree => {\n const measureTree = scatterMeasures.map((item, index): MeasureGroup => {\n const { id, xMeasures, yMeasures } = item\n const groupChildren: MeasureGroup[] = []\n\n let groupId: string = `${id}-`\n if (xMeasures) {\n const arrPrimaryMeasures = Array.isArray(xMeasures) ? xMeasures : [xMeasures]\n const alias = arrPrimaryMeasures.map((item) => item.alias || item.id).toString()\n groupId += alias\n groupChildren.push({\n id: `${index}-x`,\n alias: arrPrimaryMeasures.map((item) => item.alias || item.id).toString(),\n children: arrPrimaryMeasures,\n })\n }\n if (yMeasures) {\n const arrSecondaryMeasures = Array.isArray(yMeasures) ? yMeasures : [yMeasures]\n const alias = arrSecondaryMeasures.map((item) => item.alias || item.id).toString()\n groupId += alias\n groupChildren.push({\n id: `${index}-y`,\n alias: arrSecondaryMeasures.map((item) => item.alias || item.id).toString(),\n children: arrSecondaryMeasures,\n })\n }\n\n return {\n id: groupId,\n alias: groupId,\n children: groupChildren,\n }\n })\n\n // 只有1个散点图, 仅返回2层, vchart 绘制散点图\n if (scatterMeasures.length === 1) {\n return measureTree[0].children || []\n }\n\n // 有多个散点图, 返回3层, pivot chart 绘制组合散点图\n return measureTree\n}\n\nconst generateMeasuresByParentId = (measures: Measures) => {\n const scatterMeasures: ScatterMeasures = []\n\n measures.forEach((item) => {\n
|
1
|
+
{"version":3,"file":"pipeline/advanced/chart/pipes/measures/buildMeasuresForScatter.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/measures/buildMeasuresForScatter.ts"],"sourcesContent":["import type { AdvancedPipe, MeasureGroup, Measures, MeasureTree, Scatter, ScatterMeasures } from 'src/types'\nimport { isMeasureTreeWithParentId, isMeasureTreeWithChildren } from './utils'\nimport { clone } from 'remeda'\nimport { DEFAULT_PARENT_ID } from 'src/pipeline/utils/constant'\n\nexport const buildMeasuresForScatter: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context as {\n vseed: Scatter\n }\n\n // 带Children的指标树, 不进行任何处理\n if (isMeasureTreeWithChildren(advancedVSeed.measures)) {\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 * 既不是带Children的指标树, 也不是带parentId的指标树, 则自动生成指标\n */\n\n const scatterMeasures = vseed.scatterMeasures\n ? clone(vseed.scatterMeasures)\n : basicMeasuresToScatterMeasures(advancedVSeed.measures || [])\n advancedVSeed.measures = scatterMeasuresToMeasureTree(scatterMeasures)\n\n return advancedVSeed\n}\n\nconst basicMeasuresToScatterMeasures = (basicMeasures: Measures): ScatterMeasures => {\n const yMeasures: Measures = []\n const xMeasures: Measures = []\n\n for (let index = 0; index < basicMeasures.length; index++) {\n const item = basicMeasures[index]\n const encoding = Array.isArray(item.encoding) ? item.encoding : [item.encoding]\n const isYAxis = encoding.includes('yAxis')\n const isXAxis = encoding.includes('xAxis')\n\n if (isYAxis) {\n yMeasures.push(item)\n } else if (isXAxis) {\n xMeasures.push(item)\n } else {\n if (index !== 0) {\n yMeasures.push(item)\n } else {\n xMeasures.push(item)\n }\n }\n }\n\n if (yMeasures.length === 0 && xMeasures.length > 0) {\n yMeasures.push(xMeasures[0])\n }\n\n return [{ id: 'scatterMeasures', xMeasures, yMeasures }]\n}\n\nconst scatterMeasuresToMeasureTree = (scatterMeasures: ScatterMeasures): MeasureTree => {\n const measureTree = scatterMeasures.map((item, index): MeasureGroup => {\n const { id, xMeasures, yMeasures } = item\n const groupChildren: MeasureGroup[] = []\n\n let groupId: string = `${id}-`\n if (xMeasures) {\n const arrPrimaryMeasures = Array.isArray(xMeasures) ? xMeasures : [xMeasures]\n const alias = arrPrimaryMeasures.map((item) => item.alias || item.id).toString()\n groupId += alias\n groupChildren.push({\n id: `${index}-x`,\n alias: arrPrimaryMeasures.map((item) => item.alias || item.id).toString(),\n children: arrPrimaryMeasures,\n })\n }\n if (yMeasures) {\n const arrSecondaryMeasures = Array.isArray(yMeasures) ? yMeasures : [yMeasures]\n const alias = arrSecondaryMeasures.map((item) => item.alias || item.id).toString()\n groupId += alias\n groupChildren.push({\n id: `${index}-y`,\n alias: arrSecondaryMeasures.map((item) => item.alias || item.id).toString(),\n children: arrSecondaryMeasures,\n })\n }\n\n return {\n id: groupId,\n alias: groupId,\n children: groupChildren,\n }\n })\n\n // 只有1个散点图, 仅返回2层, vchart 绘制散点图\n if (scatterMeasures.length === 1) {\n return measureTree[0].children || []\n }\n\n // 有多个散点图, 返回3层, pivot chart 绘制组合散点图\n return measureTree\n}\n\nconst generateMeasuresByParentId = (measures: Measures) => {\n const scatterMeasures: ScatterMeasures = []\n\n measures.forEach((item) => {\n const id = item.parentId || DEFAULT_PARENT_ID\n\n if (!scatterMeasures.find((d) => d.id === id)) {\n scatterMeasures.push({\n id,\n yMeasures: [],\n xMeasures: [],\n })\n }\n const scatterChart = scatterMeasures.find((d) => d.id === id)\n if (!scatterChart || !Array.isArray(scatterChart.yMeasures) || !Array.isArray(scatterChart.xMeasures)) {\n return\n }\n\n const encoding = Array.isArray(item.encoding) ? item.encoding : [item.encoding].filter(Boolean)\n const isX = encoding.includes('xAxis')\n const isY = encoding.includes('yAxis')\n const isEmpty = !encoding.length\n if (isY) {\n scatterChart.yMeasures.push(item)\n } else if (isX) {\n scatterChart.xMeasures.push(item)\n } else if (isEmpty) {\n if (scatterChart.yMeasures.length !== 0) {\n scatterChart.yMeasures.push(item)\n } else {\n scatterChart.xMeasures.push(item)\n }\n }\n })\n\n return scatterMeasuresToMeasureTree(scatterMeasures)\n}\n"],"names":["buildMeasuresForScatter","advancedVSeed","context","vseed","isMeasureTreeWithChildren","isMeasureTreeWithParentId","generateMeasuresByParentId","scatterMeasures","clone","basicMeasuresToScatterMeasures","scatterMeasuresToMeasureTree","basicMeasures","yMeasures","xMeasures","index","item","encoding","Array","isYAxis","isXAxis","measureTree","id","groupChildren","groupId","arrPrimaryMeasures","alias","arrSecondaryMeasures","measures","DEFAULT_PARENT_ID","d","scatterChart","Boolean","isX","isY","isEmpty"],"mappings":"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"}
|
@@ -1,3 +1,4 @@
|
|
1
|
+
import { uniqueBy } from "remeda";
|
1
2
|
import { FoldPrimaryMeasureValue, FoldSecondaryMeasureValue, dataReshapeByEncoding } from "../../../../../dataReshape/index.js";
|
2
3
|
import { getColorMeasureId } from "../../../../spec/chart/pipes/index.js";
|
3
4
|
import { measureDepth } from "../../../../utils/index.js";
|
@@ -27,7 +28,7 @@ const pivotReshapeWithDualEncoding = (advancedVSeed, context)=>{
|
|
27
28
|
const primaryMeasures = measures[0];
|
28
29
|
const secondaryMeasures = measures[1] || [];
|
29
30
|
if (primaryMeasures && primaryMeasures.children) {
|
30
|
-
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, primaryMeasures.children, encoding, {
|
31
|
+
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, uniqueBy(dimensions, (item)=>item.id), uniqueBy(primaryMeasures.children, (item)=>item.id), encoding, {
|
31
32
|
colorItemAsId: hasEncoding,
|
32
33
|
foldMeasureValue: `${FoldPrimaryMeasureValue}${index}`,
|
33
34
|
colorMeasureId: getColorMeasureId(advancedVSeed)
|
@@ -37,7 +38,7 @@ const pivotReshapeWithDualEncoding = (advancedVSeed, context)=>{
|
|
37
38
|
unfoldInfoList.push(unfoldInfo);
|
38
39
|
}
|
39
40
|
if (secondaryMeasures && secondaryMeasures.children) {
|
40
|
-
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, secondaryMeasures.children, encoding, {
|
41
|
+
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, uniqueBy(dimensions, (item)=>item.id), uniqueBy(secondaryMeasures.children, (item)=>item.id), encoding, {
|
41
42
|
foldMeasureValue: `${FoldSecondaryMeasureValue}${index}`,
|
42
43
|
colorMeasureId: getColorMeasureId(advancedVSeed)
|
43
44
|
});
|
@@ -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 { 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 Dimension,\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 if (!measures || !dimensions || !dataset || !encoding) {\n return result\n }\n const hasEncoding = (vseed.dimensions || []).some((item: Dimension) => item.encoding)\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 === 0) {\n throw new Error('measures can not be empty')\n }\n\n if (measures.length > 2) {\n throw new Error('measures can not be more than 2')\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(dataset
|
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 Dimension,\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 if (!measures || !dimensions || !dataset || !encoding) {\n return result\n }\n const hasEncoding = (vseed.dimensions || []).some((item: Dimension) => item.encoding)\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 === 0) {\n throw new Error('measures can not be empty')\n }\n\n if (measures.length > 2) {\n throw new Error('measures can not be more than 2')\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: hasEncoding,\n foldMeasureValue: `${FoldPrimaryMeasureValue}${index}`,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed),\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 foldMeasureValue: `${FoldSecondaryMeasureValue}${index}`,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed),\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","hasEncoding","item","datasetList","datasetReshapeInfo","measureGroups","depth","measureDepth","measure","index","Error","foldInfoList","unfoldInfoList","datasets","primaryMeasures","secondaryMeasures","newDataset","foldInfo","unfoldInfo","dataReshapeByEncoding","uniqueBy","FoldPrimaryMeasureValue","getColorMeasureId","FoldSecondaryMeasureValue","d","prev","cur","reshapeInfo"],"mappings":"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"}
|
@@ -1,3 +1,4 @@
|
|
1
|
+
import { uniqueBy } from "remeda";
|
1
2
|
import { FoldPrimaryMeasureValue, FoldSecondaryMeasureValue, dataReshapeByEncoding } from "../../../../../dataReshape/index.js";
|
2
3
|
import { getColorMeasureId } from "../../../../spec/chart/pipes/index.js";
|
3
4
|
const reshapeWithDualEncoding = (advancedVSeed, context)=>{
|
@@ -17,7 +18,7 @@ const reshapeWithDualEncoding = (advancedVSeed, context)=>{
|
|
17
18
|
const secondaryMeasures = measures[1] || [];
|
18
19
|
const hasEncoding = (vseed.dimensions || []).some((item)=>item.encoding);
|
19
20
|
if (primaryMeasures && primaryMeasures.children) {
|
20
|
-
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, primaryMeasures.children, encoding, {
|
21
|
+
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, uniqueBy(dimensions, (item)=>item.id), uniqueBy(primaryMeasures.children, (item)=>item.id), encoding, {
|
21
22
|
colorItemAsId: hasEncoding,
|
22
23
|
foldMeasureValue: FoldPrimaryMeasureValue,
|
23
24
|
colorMeasureId: getColorMeasureId(advancedVSeed)
|
@@ -27,7 +28,7 @@ const reshapeWithDualEncoding = (advancedVSeed, context)=>{
|
|
27
28
|
unfoldInfoList.push(unfoldInfo);
|
28
29
|
}
|
29
30
|
if (secondaryMeasures && secondaryMeasures.children) {
|
30
|
-
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, dimensions, secondaryMeasures.children, encoding, {
|
31
|
+
const { dataset: newDataset, foldInfo, unfoldInfo } = dataReshapeByEncoding(dataset, uniqueBy(dimensions, (item)=>item.id), uniqueBy(secondaryMeasures.children, (item)=>item.id), encoding, {
|
31
32
|
foldMeasureValue: FoldSecondaryMeasureValue,
|
32
33
|
colorMeasureId: getColorMeasureId(advancedVSeed)
|
33
34
|
});
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"pipeline/advanced/chart/pipes/reshape/reshapeWithDualEncoding.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/reshapeWithDualEncoding.ts"],"sourcesContent":["import { dataReshapeByEncoding, FoldPrimaryMeasureValue, FoldSecondaryMeasureValue } from 'src/dataReshape'\nimport { getColorMeasureId } from 'src/pipeline/spec/chart/pipes'\nimport type {\n AdvancedPipe,\n AdvancedVSeed,\n ColumnParallel,\n Dataset,\n Dimension,\n Encoding,\n FoldInfo,\n MeasureGroup,\n UnfoldInfo,\n} from 'src/types'\n\nexport const reshapeWithDualEncoding: 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 if (!measures || !dimensions || !dataset || !encoding) {\n return result\n }\n\n if (measures.length === 0) {\n throw new Error('measures can not be empty')\n }\n\n if (measures.length > 2) {\n throw new Error('measures can not be more than 2')\n }\n const foldInfoList: FoldInfo[] = []\n const unfoldInfoList: UnfoldInfo[] = []\n\n const datasets: Dataset[] = []\n const primaryMeasures = measures[0] as MeasureGroup\n const secondaryMeasures = (measures[1] || []) as MeasureGroup\n const hasEncoding = (vseed.dimensions || []).some((item: Dimension) => item.encoding)\n\n if (primaryMeasures && primaryMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(dataset
|
1
|
+
{"version":3,"file":"pipeline/advanced/chart/pipes/reshape/reshapeWithDualEncoding.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/reshapeWithDualEncoding.ts"],"sourcesContent":["import { uniqueBy } from 'remeda'\nimport { dataReshapeByEncoding, FoldPrimaryMeasureValue, FoldSecondaryMeasureValue } from 'src/dataReshape'\nimport { getColorMeasureId } from 'src/pipeline/spec/chart/pipes'\nimport type {\n AdvancedPipe,\n AdvancedVSeed,\n ColumnParallel,\n Dataset,\n Dimension,\n Encoding,\n FoldInfo,\n MeasureGroup,\n UnfoldInfo,\n} from 'src/types'\n\nexport const reshapeWithDualEncoding: 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 if (!measures || !dimensions || !dataset || !encoding) {\n return result\n }\n\n if (measures.length === 0) {\n throw new Error('measures can not be empty')\n }\n\n if (measures.length > 2) {\n throw new Error('measures can not be more than 2')\n }\n const foldInfoList: FoldInfo[] = []\n const unfoldInfoList: UnfoldInfo[] = []\n\n const datasets: Dataset[] = []\n const primaryMeasures = measures[0] as MeasureGroup\n const secondaryMeasures = (measures[1] || []) as MeasureGroup\n const hasEncoding = (vseed.dimensions || []).some((item: Dimension) => item.encoding)\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: hasEncoding,\n foldMeasureValue: FoldPrimaryMeasureValue,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed),\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 foldMeasureValue: FoldSecondaryMeasureValue,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed),\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 return {\n ...result,\n dataset: datasets,\n datasetReshapeInfo: [\n {\n id: String(chartType),\n index: 0,\n foldInfo: foldInfoList[0],\n foldInfoList: foldInfoList,\n unfoldInfo: unfoldInfo,\n },\n ],\n }\n}\n"],"names":["reshapeWithDualEncoding","advancedVSeed","context","result","vseed","dataset","dimensions","measures","encoding","chartType","Error","foldInfoList","unfoldInfoList","datasets","primaryMeasures","secondaryMeasures","hasEncoding","item","newDataset","foldInfo","unfoldInfo","dataReshapeByEncoding","uniqueBy","FoldPrimaryMeasureValue","getColorMeasureId","FoldSecondaryMeasureValue","d","prev","cur","String"],"mappings":";;;AAeO,MAAMA,0BAAwC,CAACC,eAAeC;IACnE,MAAMC,SAAS;QAAE,GAAGF,aAAa;IAAC;IAClC,MAAM,EAAEG,KAAK,EAAE,GAAGF;IAClB,MAAM,EAAEG,OAAO,EAAE,GAAGD;IACpB,MAAM,EAAEE,UAAU,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,SAAS,EAAE,GAAGR;IAEtD,IAAI,CAACM,YAAY,CAACD,cAAc,CAACD,WAAW,CAACG,UAC3C,OAAOL;IAGT,IAAII,AAAoB,MAApBA,SAAS,MAAM,EACjB,MAAM,IAAIG,MAAM;IAGlB,IAAIH,SAAS,MAAM,GAAG,GACpB,MAAM,IAAIG,MAAM;IAElB,MAAMC,eAA2B,EAAE;IACnC,MAAMC,iBAA+B,EAAE;IAEvC,MAAMC,WAAsB,EAAE;IAC9B,MAAMC,kBAAkBP,QAAQ,CAAC,EAAE;IACnC,MAAMQ,oBAAqBR,QAAQ,CAAC,EAAE,IAAI,EAAE;IAC5C,MAAMS,cAAeZ,AAAAA,CAAAA,MAAM,UAAU,IAAI,EAAC,EAAG,IAAI,CAAC,CAACa,OAAoBA,KAAK,QAAQ;IAEpF,IAAIH,mBAAmBA,gBAAgB,QAAQ,EAAE;QAC/C,MAAM,EACJ,SAASI,UAAU,EACnBC,QAAQ,EACRC,UAAU,EACX,GAAGC,sBACFhB,SACAiB,SAAShB,YAAY,CAACW,OAASA,KAAK,EAAE,GACtCK,SAASR,gBAAgB,QAAQ,EAAE,CAACG,OAASA,KAAK,EAAE,GACpDT,UACA;YACE,eAAeQ;YACf,kBAAkBO;YAClB,gBAAgBC,kBAAkBvB;QACpC;QAGFY,SAAS,IAAI,CAACK;QACdP,aAAa,IAAI,CAACQ;QAClBP,eAAe,IAAI,CAACQ;IACtB;IAEA,IAAIL,qBAAqBA,kBAAkB,QAAQ,EAAE;QACnD,MAAM,EACJ,SAASG,UAAU,EACnBC,QAAQ,EACRC,UAAU,EACX,GAAGC,sBACFhB,SACAiB,SAAShB,YAAY,CAACW,OAASA,KAAK,EAAE,GACtCK,SAASP,kBAAkB,QAAQ,EAAE,CAACE,OAASA,KAAK,EAAE,GACtDT,UACA;YACE,kBAAkBiB;YAClB,gBAAgBD,kBAAkBvB;QACpC;QAGFY,SAAS,IAAI,CAACK;QACdP,aAAa,IAAI,CAACQ;QAClBP,eAAe,IAAI,CAACQ;IACtB;IAEA,MAAMA,aAAyB;QAC7B,GAAGR,cAAc,CAAC,EAAE;QACpB,YAAYA,eAAe,OAAO,CAAC,CAACc,IAAMA,EAAE,UAAU;QACtD,YAAYd,eAAe,MAAM,CAAC,CAACe,MAAMC,MAAS;gBAAE,GAAGD,IAAI;gBAAE,GAAGC,IAAI,UAAU;YAAC,IAAI,CAAC;IACtF;IAEA,OAAO;QACL,GAAGzB,MAAM;QACT,SAASU;QACT,oBAAoB;YAClB;gBACE,IAAIgB,OAAOpB;gBACX,OAAO;gBACP,UAAUE,YAAY,CAAC,EAAE;gBACzB,cAAcA;gBACd,YAAYS;YACd;SACD;IACH;AACF"}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import { selector } from "../../../../../dataSelector/index.js";
|
2
|
-
import { groupBy } from "remeda";
|
2
|
+
import { groupBy, isEmpty, isNullish } from "remeda";
|
3
3
|
const areaStyle_areaStyle = (spec, context)=>{
|
4
4
|
const { advancedVSeed } = context;
|
5
5
|
const { markStyle, datasetReshapeInfo, dataset } = advancedVSeed;
|
@@ -12,7 +12,7 @@ const areaStyle_areaStyle = (spec, context)=>{
|
|
12
12
|
style: {}
|
13
13
|
}
|
14
14
|
};
|
15
|
-
if (
|
15
|
+
if (isNullish(areaStyle) || isEmpty(areaStyle)) return result;
|
16
16
|
const areaStyles = Array.isArray(areaStyle) ? areaStyle : [
|
17
17
|
areaStyle
|
18
18
|
];
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"pipeline/spec/chart/pipes/markStyle/areaStyle.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/areaStyle.ts"],"sourcesContent":["import type { IAreaChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { AreaStyle, Datum, SpecPipe } from 'src/types'\nimport { groupBy } from 'remeda'\n\nexport const areaStyle: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { markStyle, datasetReshapeInfo, dataset } = advancedVSeed\n const { areaStyle } = markStyle\n const { unfoldInfo } = datasetReshapeInfo[0]\n const result = {\n ...spec,\n area: {\n visible: true,\n style: {},\n },\n } as IAreaChartSpec\n\n if (
|
1
|
+
{"version":3,"file":"pipeline/spec/chart/pipes/markStyle/areaStyle.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/areaStyle.ts"],"sourcesContent":["import type { IAreaChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { AreaStyle, Datum, SpecPipe } from 'src/types'\nimport { groupBy, isEmpty, isNullish } from 'remeda'\n\nexport const areaStyle: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { markStyle, datasetReshapeInfo, dataset } = advancedVSeed\n const { areaStyle } = markStyle\n const { unfoldInfo } = datasetReshapeInfo[0]\n const result = {\n ...spec,\n area: {\n visible: true,\n style: {},\n },\n } as IAreaChartSpec\n\n if (isNullish(areaStyle) || isEmpty(areaStyle)) {\n return result\n }\n\n const areaStyles = (Array.isArray(areaStyle) ? areaStyle : [areaStyle]) as AreaStyle[]\n\n const group = unfoldInfo.encodingColorId\n\n const areaGroups = groupBy(dataset, (d) => d[group ?? ''] as string)\n\n const customMap = areaStyles.reduce<object>((result, style, index) => {\n const { areaColor, areaColorOpacity, areaVisible = true } = style\n\n return {\n ...result,\n [`custom${index + 1}`]: {\n // 优先级: 后者覆盖前者\n level: index + 1,\n filter: (datum: Datum) => {\n const lineData = areaGroups[datum[group ?? ''] as string]\n for (const d of lineData) {\n if (selector(d, style.selector)) {\n return true\n }\n }\n return false\n },\n style: {\n visible: areaVisible,\n fill: areaColor,\n fillOpacity: areaColorOpacity,\n },\n },\n }\n }, {})\n\n return {\n ...result,\n area: {\n ...result.area,\n visible: true,\n state: {\n ...customMap,\n },\n },\n }\n}\n"],"names":["areaStyle","spec","context","advancedVSeed","markStyle","datasetReshapeInfo","dataset","unfoldInfo","result","isNullish","isEmpty","areaStyles","Array","group","areaGroups","groupBy","d","customMap","style","index","areaColor","areaColorOpacity","areaVisible","datum","lineData","selector"],"mappings":";;AAKO,MAAMA,sBAAsB,CAACC,MAAMC;IACxC,MAAM,EAAEC,aAAa,EAAE,GAAGD;IAC1B,MAAM,EAAEE,SAAS,EAAEC,kBAAkB,EAAEC,OAAO,EAAE,GAAGH;IACnD,MAAM,EAAEH,SAAS,EAAE,GAAGI;IACtB,MAAM,EAAEG,UAAU,EAAE,GAAGF,kBAAkB,CAAC,EAAE;IAC5C,MAAMG,SAAS;QACb,GAAGP,IAAI;QACP,MAAM;YACJ,SAAS;YACT,OAAO,CAAC;QACV;IACF;IAEA,IAAIQ,UAAUT,cAAcU,QAAQV,YAClC,OAAOQ;IAGT,MAAMG,aAAcC,MAAM,OAAO,CAACZ,aAAaA,YAAY;QAACA;KAAU;IAEtE,MAAMa,QAAQN,WAAW,eAAe;IAExC,MAAMO,aAAaC,QAAQT,SAAS,CAACU,IAAMA,CAAC,CAACH,SAAS,GAAG;IAEzD,MAAMI,YAAYN,WAAW,MAAM,CAAS,CAACH,QAAQU,OAAOC;QAC1D,MAAM,EAAEC,SAAS,EAAEC,gBAAgB,EAAEC,cAAc,IAAI,EAAE,GAAGJ;QAE5D,OAAO;YACL,GAAGV,MAAM;YACT,CAAC,CAAC,MAAM,EAAEW,QAAQ,GAAG,CAAC,EAAE;gBAEtB,OAAOA,QAAQ;gBACf,QAAQ,CAACI;oBACP,MAAMC,WAAWV,UAAU,CAACS,KAAK,CAACV,SAAS,GAAG,CAAW;oBACzD,KAAK,MAAMG,KAAKQ,SACd,IAAIC,SAAST,GAAGE,MAAM,QAAQ,GAC5B,OAAO;oBAGX,OAAO;gBACT;gBACA,OAAO;oBACL,SAASI;oBACT,MAAMF;oBACN,aAAaC;gBACf;YACF;QACF;IACF,GAAG,CAAC;IAEJ,OAAO;QACL,GAAGb,MAAM;QACT,MAAM;YACJ,GAAGA,OAAO,IAAI;YACd,SAAS;YACT,OAAO;gBACL,GAAGS,SAAS;YACd;QACF;IACF;AACF"}
|
@@ -1,4 +1,5 @@
|
|
1
1
|
import { selector } from "../../../../../dataSelector/index.js";
|
2
|
+
import { isEmpty, isNullish } from "remeda";
|
2
3
|
const barStyle_barStyle = (spec, context)=>{
|
3
4
|
const { advancedVSeed } = context;
|
4
5
|
const { markStyle, dataset = [] } = advancedVSeed;
|
@@ -17,7 +18,7 @@ const barStyle_barStyle = (spec, context)=>{
|
|
17
18
|
}
|
18
19
|
}
|
19
20
|
};
|
20
|
-
if (
|
21
|
+
if (isNullish(barStyle) || isEmpty(barStyle)) return result;
|
21
22
|
const barStyles = Array.isArray(barStyle) ? barStyle : [
|
22
23
|
barStyle
|
23
24
|
];
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"pipeline/spec/chart/pipes/markStyle/barStyle.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/barStyle.ts"],"sourcesContent":["import type { IBarChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { BarStyle, Datum, SpecPipe } from 'src/types'\n\nexport const barStyle: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { markStyle, dataset = [] } = advancedVSeed\n const { barStyle } = markStyle\n\n const showStroke = dataset.length <= 100\n\n const result = {\n ...spec,\n bar: {\n style: {\n lineWidth: showStroke ? 1 : 0,\n },\n state: {\n hover: {\n fillOpacity: 0.6,\n },\n },\n },\n } as IBarChartSpec\n\n if (
|
1
|
+
{"version":3,"file":"pipeline/spec/chart/pipes/markStyle/barStyle.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/barStyle.ts"],"sourcesContent":["import type { IBarChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { BarStyle, Datum, SpecPipe } from 'src/types'\nimport { isEmpty, isNullish } from 'remeda'\n\nexport const barStyle: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { markStyle, dataset = [] } = advancedVSeed\n const { barStyle } = markStyle\n\n const showStroke = dataset.length <= 100\n\n const result = {\n ...spec,\n bar: {\n style: {\n lineWidth: showStroke ? 1 : 0,\n },\n state: {\n hover: {\n fillOpacity: 0.6,\n },\n },\n },\n } as IBarChartSpec\n\n if (isNullish(barStyle) || isEmpty(barStyle)) {\n return result\n }\n\n const barStyles = (Array.isArray(barStyle) ? barStyle : [barStyle]) as BarStyle[]\n\n const customMap = barStyles.reduce<object>((result, style, index) => {\n const {\n barBorderColor,\n barBorderStyle,\n barBorderWidth = 1,\n barColor,\n barColorOpacity,\n barRadius,\n barVisible = true,\n } = style\n\n const lineDash = barBorderStyle === 'dashed' ? [5, 2] : barBorderStyle === 'dotted' ? [2, 5] : [0, 0]\n return {\n ...result,\n [`custom${index + 1}`]: {\n // 优先级: 后者覆盖前者\n level: index + 1,\n filter: (datum: Datum) => {\n if (selector(datum, style.selector)) {\n return true\n }\n return false\n },\n style: {\n visible: barVisible,\n fill: barColor,\n fillOpacity: barColorOpacity,\n cornerRadius: barRadius,\n innerBorder: {\n stroke: barBorderColor,\n lineWidth: barBorderWidth,\n distance: (barBorderWidth || 0) / 2,\n lineDash: lineDash,\n },\n },\n },\n }\n }, {})\n\n return {\n ...result,\n bar: {\n state: {\n ...customMap,\n },\n },\n }\n}\n"],"names":["barStyle","spec","context","advancedVSeed","markStyle","dataset","showStroke","result","isNullish","isEmpty","barStyles","Array","customMap","style","index","barBorderColor","barBorderStyle","barBorderWidth","barColor","barColorOpacity","barRadius","barVisible","lineDash","datum","selector"],"mappings":";;AAKO,MAAMA,oBAAqB,CAACC,MAAMC;IACvC,MAAM,EAAEC,aAAa,EAAE,GAAGD;IAC1B,MAAM,EAAEE,SAAS,EAAEC,UAAU,EAAE,EAAE,GAAGF;IACpC,MAAM,EAAEH,QAAQ,EAAE,GAAGI;IAErB,MAAME,aAAaD,QAAQ,MAAM,IAAI;IAErC,MAAME,SAAS;QACb,GAAGN,IAAI;QACP,KAAK;YACH,OAAO;gBACL,WAAWK,aAAa,IAAI;YAC9B;YACA,OAAO;gBACL,OAAO;oBACL,aAAa;gBACf;YACF;QACF;IACF;IAEA,IAAIE,UAAUR,aAAaS,QAAQT,WACjC,OAAOO;IAGT,MAAMG,YAAaC,MAAM,OAAO,CAACX,YAAYA,WAAW;QAACA;KAAS;IAElE,MAAMY,YAAYF,UAAU,MAAM,CAAS,CAACH,QAAQM,OAAOC;QACzD,MAAM,EACJC,cAAc,EACdC,cAAc,EACdC,iBAAiB,CAAC,EAClBC,QAAQ,EACRC,eAAe,EACfC,SAAS,EACTC,aAAa,IAAI,EAClB,GAAGR;QAEJ,MAAMS,WAAWN,AAAmB,aAAnBA,iBAA8B;YAAC;YAAG;SAAE,GAAGA,AAAmB,aAAnBA,iBAA8B;YAAC;YAAG;SAAE,GAAG;YAAC;YAAG;SAAE;QACrG,OAAO;YACL,GAAGT,MAAM;YACT,CAAC,CAAC,MAAM,EAAEO,QAAQ,GAAG,CAAC,EAAE;gBAEtB,OAAOA,QAAQ;gBACf,QAAQ,CAACS;oBACP,IAAIC,SAASD,OAAOV,MAAM,QAAQ,GAChC,OAAO;oBAET,OAAO;gBACT;gBACA,OAAO;oBACL,SAASQ;oBACT,MAAMH;oBACN,aAAaC;oBACb,cAAcC;oBACd,aAAa;wBACX,QAAQL;wBACR,WAAWE;wBACX,UAAWA,AAAAA,CAAAA,kBAAkB,KAAK;wBAClC,UAAUK;oBACZ;gBACF;YACF;QACF;IACF,GAAG,CAAC;IAEJ,OAAO;QACL,GAAGf,MAAM;QACT,KAAK;YACH,OAAO;gBACL,GAAGK,SAAS;YACd;QACF;IACF;AACF"}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import { selector } from "../../../../../dataSelector/index.js";
|
2
|
-
import { groupBy } from "remeda";
|
2
|
+
import { groupBy, isEmpty, isNullish } from "remeda";
|
3
3
|
const lineStyle_lineStyle = (spec, context)=>{
|
4
4
|
const { advancedVSeed } = context;
|
5
5
|
const { markStyle, datasetReshapeInfo, dataset } = advancedVSeed;
|
@@ -11,7 +11,7 @@ const lineStyle_lineStyle = (spec, context)=>{
|
|
11
11
|
style: {}
|
12
12
|
}
|
13
13
|
};
|
14
|
-
if (
|
14
|
+
if (isNullish(lineStyle) || isEmpty(lineStyle)) return result;
|
15
15
|
const lineStyles = Array.isArray(lineStyle) ? lineStyle : [
|
16
16
|
lineStyle
|
17
17
|
];
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"pipeline/spec/chart/pipes/markStyle/lineStyle.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/lineStyle.ts"],"sourcesContent":["import type { IAreaChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { Datum, LineStyle, SpecPipe } from 'src/types'\nimport { groupBy } from 'remeda'\n\nexport const lineStyle: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { markStyle, datasetReshapeInfo, dataset } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n const { lineStyle } = markStyle\n const result = {\n ...spec,\n line: {\n style: {},\n },\n } as IAreaChartSpec\n if (
|
1
|
+
{"version":3,"file":"pipeline/spec/chart/pipes/markStyle/lineStyle.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/lineStyle.ts"],"sourcesContent":["import type { IAreaChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { Datum, LineStyle, SpecPipe } from 'src/types'\nimport { groupBy, isEmpty, isNullish } from 'remeda'\n\nexport const lineStyle: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { markStyle, datasetReshapeInfo, dataset } = advancedVSeed\n const { unfoldInfo } = datasetReshapeInfo[0]\n const { lineStyle } = markStyle\n const result = {\n ...spec,\n line: {\n style: {},\n },\n } as IAreaChartSpec\n\n if (isNullish(lineStyle) || isEmpty(lineStyle)) {\n return result\n }\n\n const lineStyles = (Array.isArray(lineStyle) ? lineStyle : [lineStyle]) as LineStyle[]\n\n const colorId = unfoldInfo.encodingColorId\n const lineGroups = groupBy(dataset, (d) => d[colorId ?? ''] as string)\n\n const customMap = lineStyles.reduce<object>((result, style, index) => {\n const { lineColor, lineColorOpacity, lineSmooth, lineStyle, lineWidth = 2, lineVisible = true } = style\n\n const dashSegment = lineWidth * 2\n const dashGap = lineWidth\n\n const lineDash =\n lineStyle === 'dashed' ? [dashSegment, dashSegment] : lineStyle === 'dotted' ? [dashGap / 2, dashGap * 2] : [0, 0]\n\n const curveType = lineSmooth ? 'monotone' : 'linear'\n\n return {\n ...result,\n [`custom${index + 1}`]: {\n // 优先级: 后者覆盖前者\n level: index + 1,\n filter: (datum: Datum) => {\n const lineData = lineGroups[datum[colorId ?? ''] as string]\n for (const d of lineData) {\n if (selector(d, style.selector)) {\n return true\n }\n }\n return false\n },\n style: {\n visible: lineVisible,\n curveType: curveType,\n strokeOpacity: lineColorOpacity,\n stroke: lineColor,\n lineWidth: lineWidth,\n lineDash: lineDash,\n },\n },\n }\n }, {})\n\n return {\n ...result,\n line: {\n ...result.line,\n state: {\n ...customMap,\n },\n },\n }\n}\n"],"names":["lineStyle","spec","context","advancedVSeed","markStyle","datasetReshapeInfo","dataset","unfoldInfo","result","isNullish","isEmpty","lineStyles","Array","colorId","lineGroups","groupBy","d","customMap","style","index","lineColor","lineColorOpacity","lineSmooth","lineWidth","lineVisible","dashSegment","dashGap","lineDash","curveType","datum","lineData","selector"],"mappings":";;AAKO,MAAMA,sBAAsB,CAACC,MAAMC;IACxC,MAAM,EAAEC,aAAa,EAAE,GAAGD;IAC1B,MAAM,EAAEE,SAAS,EAAEC,kBAAkB,EAAEC,OAAO,EAAE,GAAGH;IACnD,MAAM,EAAEI,UAAU,EAAE,GAAGF,kBAAkB,CAAC,EAAE;IAC5C,MAAM,EAAEL,SAAS,EAAE,GAAGI;IACtB,MAAMI,SAAS;QACb,GAAGP,IAAI;QACP,MAAM;YACJ,OAAO,CAAC;QACV;IACF;IAEA,IAAIQ,UAAUT,cAAcU,QAAQV,YAClC,OAAOQ;IAGT,MAAMG,aAAcC,MAAM,OAAO,CAACZ,aAAaA,YAAY;QAACA;KAAU;IAEtE,MAAMa,UAAUN,WAAW,eAAe;IAC1C,MAAMO,aAAaC,QAAQT,SAAS,CAACU,IAAMA,CAAC,CAACH,WAAW,GAAG;IAE3D,MAAMI,YAAYN,WAAW,MAAM,CAAS,CAACH,QAAQU,OAAOC;QAC1D,MAAM,EAAEC,SAAS,EAAEC,gBAAgB,EAAEC,UAAU,EAAEtB,SAAS,EAAEuB,YAAY,CAAC,EAAEC,cAAc,IAAI,EAAE,GAAGN;QAElG,MAAMO,cAAcF,AAAY,IAAZA;QACpB,MAAMG,UAAUH;QAEhB,MAAMI,WACJ3B,AAAc,aAAdA,YAAyB;YAACyB;YAAaA;SAAY,GAAGzB,AAAc,aAAdA,YAAyB;YAAC0B,UAAU;YAAa,IAAVA;SAAY,GAAG;YAAC;YAAG;SAAE;QAEpH,MAAME,YAAYN,aAAa,aAAa;QAE5C,OAAO;YACL,GAAGd,MAAM;YACT,CAAC,CAAC,MAAM,EAAEW,QAAQ,GAAG,CAAC,EAAE;gBAEtB,OAAOA,QAAQ;gBACf,QAAQ,CAACU;oBACP,MAAMC,WAAWhB,UAAU,CAACe,KAAK,CAAChB,WAAW,GAAG,CAAW;oBAC3D,KAAK,MAAMG,KAAKc,SACd,IAAIC,SAASf,GAAGE,MAAM,QAAQ,GAC5B,OAAO;oBAGX,OAAO;gBACT;gBACA,OAAO;oBACL,SAASM;oBACT,WAAWI;oBACX,eAAeP;oBACf,QAAQD;oBACR,WAAWG;oBACX,UAAUI;gBACZ;YACF;QACF;IACF,GAAG,CAAC;IAEJ,OAAO;QACL,GAAGnB,MAAM;QACT,MAAM;YACJ,GAAGA,OAAO,IAAI;YACd,OAAO;gBACL,GAAGS,SAAS;YACd;QACF;IACF;AACF"}
|
@@ -1,4 +1,5 @@
|
|
1
1
|
import { selector } from "../../../../../dataSelector/index.js";
|
2
|
+
import { isEmpty, isNullish } from "remeda";
|
2
3
|
const pointStyle_pointStyle = (spec, context)=>{
|
3
4
|
const { advancedVSeed } = context;
|
4
5
|
const { markStyle } = advancedVSeed;
|
@@ -9,7 +10,7 @@ const pointStyle_pointStyle = (spec, context)=>{
|
|
9
10
|
style: {}
|
10
11
|
}
|
11
12
|
};
|
12
|
-
if (
|
13
|
+
if (isNullish(pointStyle) || isEmpty(pointStyle)) return result;
|
13
14
|
const pointStyles = Array.isArray(pointStyle) ? pointStyle : [
|
14
15
|
pointStyle
|
15
16
|
];
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"pipeline/spec/chart/pipes/markStyle/pointStyle.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/pointStyle.ts"],"sourcesContent":["import type { IAreaChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { Datum, PointStyle, SpecPipe } from 'src/types'\n\nexport const pointStyle: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { markStyle } = advancedVSeed\n const { pointStyle } = markStyle\n const result = {\n ...spec,\n point: {\n style: {},\n },\n } as IAreaChartSpec\n\n if (
|
1
|
+
{"version":3,"file":"pipeline/spec/chart/pipes/markStyle/pointStyle.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/markStyle/pointStyle.ts"],"sourcesContent":["import type { IAreaChartSpec } from '@visactor/vchart'\nimport { selector } from '../../../../../dataSelector'\nimport type { Datum, PointStyle, SpecPipe } from 'src/types'\nimport { isEmpty, isNullish } from 'remeda'\n\nexport const pointStyle: SpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { markStyle } = advancedVSeed\n const { pointStyle } = markStyle\n const result = {\n ...spec,\n point: {\n style: {},\n },\n } as IAreaChartSpec\n\n if (isNullish(pointStyle) || isEmpty(pointStyle)) {\n return result\n }\n\n const pointStyles = (Array.isArray(pointStyle) ? pointStyle : [pointStyle]) as PointStyle[]\n\n const customMap = pointStyles.reduce<object>((result, style, index) => {\n const {\n pointBorderColor,\n pointBorderStyle,\n pointBorderWidth = 1,\n pointColor,\n pointColorOpacity,\n pointSize,\n pointVisible = true,\n } = style\n\n const lineDash = pointBorderStyle === 'dashed' ? [5, 2] : pointBorderStyle === 'dotted' ? [2, 5] : [0, 0]\n return {\n ...result,\n [`custom${index + 1}`]: {\n // 优先级: 后者覆盖前者\n level: index + 1,\n filter: (datum: Datum) => {\n if (selector(datum, style.selector)) {\n return true\n }\n return false\n },\n style: {\n visible: pointVisible,\n size: pointSize,\n fill: pointColor,\n fillOpacity: pointColorOpacity,\n innerBorder: {\n stroke: pointBorderColor,\n lineWidth: pointBorderWidth,\n distance: (pointBorderWidth || 0) / 2,\n lineDash: lineDash,\n },\n },\n },\n }\n }, {})\n\n return {\n ...result,\n point: {\n ...result.point,\n state: {\n ...customMap,\n },\n },\n }\n}\n"],"names":["pointStyle","spec","context","advancedVSeed","markStyle","result","isNullish","isEmpty","pointStyles","Array","customMap","style","index","pointBorderColor","pointBorderStyle","pointBorderWidth","pointColor","pointColorOpacity","pointSize","pointVisible","lineDash","datum","selector"],"mappings":";;AAKO,MAAMA,wBAAuB,CAACC,MAAMC;IACzC,MAAM,EAAEC,aAAa,EAAE,GAAGD;IAC1B,MAAM,EAAEE,SAAS,EAAE,GAAGD;IACtB,MAAM,EAAEH,UAAU,EAAE,GAAGI;IACvB,MAAMC,SAAS;QACb,GAAGJ,IAAI;QACP,OAAO;YACL,OAAO,CAAC;QACV;IACF;IAEA,IAAIK,UAAUN,eAAeO,QAAQP,aACnC,OAAOK;IAGT,MAAMG,cAAeC,MAAM,OAAO,CAACT,cAAcA,aAAa;QAACA;KAAW;IAE1E,MAAMU,YAAYF,YAAY,MAAM,CAAS,CAACH,QAAQM,OAAOC;QAC3D,MAAM,EACJC,gBAAgB,EAChBC,gBAAgB,EAChBC,mBAAmB,CAAC,EACpBC,UAAU,EACVC,iBAAiB,EACjBC,SAAS,EACTC,eAAe,IAAI,EACpB,GAAGR;QAEJ,MAAMS,WAAWN,AAAqB,aAArBA,mBAAgC;YAAC;YAAG;SAAE,GAAGA,AAAqB,aAArBA,mBAAgC;YAAC;YAAG;SAAE,GAAG;YAAC;YAAG;SAAE;QACzG,OAAO;YACL,GAAGT,MAAM;YACT,CAAC,CAAC,MAAM,EAAEO,QAAQ,GAAG,CAAC,EAAE;gBAEtB,OAAOA,QAAQ;gBACf,QAAQ,CAACS;oBACP,IAAIC,SAASD,OAAOV,MAAM,QAAQ,GAChC,OAAO;oBAET,OAAO;gBACT;gBACA,OAAO;oBACL,SAASQ;oBACT,MAAMD;oBACN,MAAMF;oBACN,aAAaC;oBACb,aAAa;wBACX,QAAQJ;wBACR,WAAWE;wBACX,UAAWA,AAAAA,CAAAA,oBAAoB,KAAK;wBACpC,UAAUK;oBACZ;gBACF;YACF;QACF;IACF,GAAG,CAAC;IAEJ,OAAO;QACL,GAAGf,MAAM;QACT,OAAO;YACL,GAAGA,OAAO,KAAK;YACf,OAAO;gBACL,GAAGK,SAAS;YACd;QACF;IACF;AACF"}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { isEmpty, uniqueBy } from "remeda";
|
1
|
+
import { isEmpty, pipe, uniqueBy } from "remeda";
|
2
2
|
import { autoFormatter, createFormatter, findAllMeasures, findMeasureById } from "../../../../utils/index.js";
|
3
3
|
import { ORIGINAL_DATA } from "../../../../../dataReshape/index.js";
|
4
4
|
const tooltip_tooltip = (spec, context)=>{
|
@@ -61,8 +61,8 @@ const createDimensionContent = (measures, foldInfo, unfoldInfo, locale)=>{
|
|
61
61
|
];
|
62
62
|
};
|
63
63
|
const createMarkContent = (tooltip, dimensions, measures, locale, foldInfo, unfoldInfo)=>{
|
64
|
-
const dims =
|
65
|
-
const meas =
|
64
|
+
const dims = pipe(dimensions.filter((item)=>tooltip.includes(item.id)), uniqueBy((item)=>item.id), uniqueBy((item)=>item.alias));
|
65
|
+
const meas = pipe(measures.filter((item)=>tooltip.includes(item.id)), uniqueBy((item)=>item.id), uniqueBy((item)=>item.alias));
|
66
66
|
const dimContent = dims.map((item)=>({
|
67
67
|
visible: true,
|
68
68
|
hasShape: true,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"pipeline/spec/chart/pipes/tooltip/tooltip.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltip.ts"],"sourcesContent":["import { isEmpty, uniqueBy } from 'remeda'\nimport { autoFormatter, createFormatter, findAllMeasures, findMeasureById } from '../../../../utils'\nimport type { Datum, Dimensions, FoldInfo, Locale, Measures, SpecPipe, Tooltip, UnfoldInfo } from 'src/types'\nimport { ORIGINAL_DATA } from 'src/dataReshape'\n\nexport const tooltip: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed, vseed } = context\n const { measures, datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n const { foldInfo, unfoldInfo } = datasetReshapeInfo[0] as unknown as {\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n }\n\n result.tooltip = {\n visible: enable,\n mark: {\n title: {\n visible: false,\n },\n content: createMarkContent(\n encoding.tooltip || [],\n dimensions,\n findAllMeasures(vseed.measures),\n locale,\n foldInfo,\n unfoldInfo,\n ),\n },\n dimension: {\n title: {\n visible: true,\n },\n content: createDimensionContent(measures, foldInfo, unfoldInfo, locale),\n },\n }\n return result\n}\n\nexport const createDimensionContent = (\n measures: Measures,\n foldInfo: FoldInfo,\n unfoldInfo: UnfoldInfo,\n locale: Locale,\n) => {\n const { measureId, measureValue } = foldInfo\n const { encodingColor } = unfoldInfo\n\n return [\n {\n visible: true,\n shapeType: 'rectRound',\n hasShape: true,\n key: (v: unknown) => {\n const datum = v as Datum\n return (datum && (datum[encodingColor] as string)) || ''\n },\n value: (v: unknown) => {\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const value = datum[measureValue] as string | number\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n const { format = {}, autoFormat = true } = measure\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n if (autoFormat) {\n return autoFormatter(value, locale)\n }\n return String(value)\n },\n },\n ]\n}\n\nexport const createMarkContent = (\n tooltip: string[],\n dimensions: Dimensions,\n measures: Measures,\n locale: Locale,\n foldInfo: FoldInfo,\n unfoldInfo: UnfoldInfo,\n) => {\n const dims =
|
1
|
+
{"version":3,"file":"pipeline/spec/chart/pipes/tooltip/tooltip.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltip.ts"],"sourcesContent":["import { isEmpty, pipe, uniqueBy } from 'remeda'\nimport { autoFormatter, createFormatter, findAllMeasures, findMeasureById } from '../../../../utils'\nimport type { Datum, Dimensions, FoldInfo, Locale, Measures, SpecPipe, Tooltip, UnfoldInfo } from 'src/types'\nimport { ORIGINAL_DATA } from 'src/dataReshape'\n\nexport const tooltip: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed, vseed } = context\n const { measures, datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n const { foldInfo, unfoldInfo } = datasetReshapeInfo[0] as unknown as {\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n }\n\n result.tooltip = {\n visible: enable,\n mark: {\n title: {\n visible: false,\n },\n content: createMarkContent(\n encoding.tooltip || [],\n dimensions,\n findAllMeasures(vseed.measures),\n locale,\n foldInfo,\n unfoldInfo,\n ),\n },\n dimension: {\n title: {\n visible: true,\n },\n content: createDimensionContent(measures, foldInfo, unfoldInfo, locale),\n },\n }\n return result\n}\n\nexport const createDimensionContent = (\n measures: Measures,\n foldInfo: FoldInfo,\n unfoldInfo: UnfoldInfo,\n locale: Locale,\n) => {\n const { measureId, measureValue } = foldInfo\n const { encodingColor } = unfoldInfo\n\n return [\n {\n visible: true,\n shapeType: 'rectRound',\n hasShape: true,\n key: (v: unknown) => {\n const datum = v as Datum\n return (datum && (datum[encodingColor] as string)) || ''\n },\n value: (v: unknown) => {\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const value = datum[measureValue] as string | number\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n const { format = {}, autoFormat = true } = measure\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n if (autoFormat) {\n return autoFormatter(value, locale)\n }\n return String(value)\n },\n },\n ]\n}\n\nexport const createMarkContent = (\n tooltip: string[],\n dimensions: Dimensions,\n measures: Measures,\n locale: Locale,\n foldInfo: FoldInfo,\n unfoldInfo: UnfoldInfo,\n) => {\n const dims = pipe(\n dimensions.filter((item) => tooltip.includes(item.id)),\n uniqueBy((item) => item.id),\n uniqueBy((item) => item.alias),\n )\n const meas = pipe(\n measures.filter((item) => tooltip.includes(item.id)),\n uniqueBy((item) => item.id),\n uniqueBy((item) => item.alias),\n )\n\n const dimContent = dims.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const datum = v as Datum\n if (item.alias || item.id) {\n return item.alias || item.id\n }\n return datum && (datum[item.id] as string)\n },\n value: (v: unknown) => {\n const datum = v as Datum\n return datum && (datum[item.id] as string)\n },\n }))\n\n const meaContent = meas.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: item.alias || item.id,\n value: (v: unknown) => {\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const id = item.id\n if (!datum || !datum[ORIGINAL_DATA] || !datum[ORIGINAL_DATA]) {\n return ''\n }\n const originalData = datum[ORIGINAL_DATA] as Datum\n const value = originalData[id] as string | number\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n const { format = {}, autoFormat = true } = measure\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n if (autoFormat) {\n return autoFormatter(value, locale)\n }\n return String(value)\n },\n }))\n\n const defaultContent = {\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const { measureName } = foldInfo\n const { encodingColor: colorName } = unfoldInfo\n\n const datum = v as Datum\n return (datum && (datum[measureName || colorName] as string)) || ''\n },\n value: (v: unknown) => {\n const { measureId, measureValue } = foldInfo\n\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const value = datum[measureValue] as string | number\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n\n const { format = {}, autoFormat = true } = measure\n\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n if (autoFormat) {\n return autoFormatter(value, locale)\n }\n return String(value)\n },\n }\n\n return [...dimContent, defaultContent, ...meaContent]\n}\n"],"names":["tooltip","spec","context","result","advancedVSeed","vseed","measures","datasetReshapeInfo","chartType","locale","dimensions","encoding","baseConfig","enable","foldInfo","unfoldInfo","createMarkContent","findAllMeasures","createDimensionContent","measureId","measureValue","encodingColor","v","datum","value","id","measure","findMeasureById","String","format","autoFormat","isEmpty","formatter","createFormatter","autoFormatter","dims","pipe","item","uniqueBy","meas","dimContent","meaContent","ORIGINAL_DATA","originalData","defaultContent","measureName","colorName"],"mappings":"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"}
|
@@ -1,6 +1,7 @@
|
|
1
1
|
import { measureDepth } from "./measures/index.js";
|
2
2
|
import { isMeasureTreeWithChildren, isMeasureTreeWithParentId } from "../advanced/chart/pipes/measures/utils.js";
|
3
3
|
import { unique } from "remeda";
|
4
|
+
import { DEFAULT_PARENT_ID } from "./constant.js";
|
4
5
|
const isTable = (vseed)=>'table' === vseed.chartType;
|
5
6
|
const isPivotTable = (vseed)=>'pivotTable' === vseed.chartType;
|
6
7
|
const isVTable = (vseed)=>[
|
@@ -11,7 +12,7 @@ const isVChart = (vseed)=>!isVTable(vseed);
|
|
11
12
|
const isPivotChart = (vseed)=>{
|
12
13
|
if (isVTable(vseed)) return false;
|
13
14
|
if (isMeasureTreeWithParentId(vseed.measures)) {
|
14
|
-
const parentIds = vseed.measures?.map((measure)=>measure.parentId);
|
15
|
+
const parentIds = vseed.measures?.map((measure)=>measure.parentId || DEFAULT_PARENT_ID);
|
15
16
|
return parentIds && unique(parentIds).length > 1;
|
16
17
|
}
|
17
18
|
if ('dualAxis' === vseed.chartType || 'scatter' === vseed.chartType) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"pipeline/utils/chatType.js","sources":["webpack://@visactor/vseed/./src/pipeline/utils/chatType.ts"],"sourcesContent":["import type { Dimensions, DimensionGroup, DimensionTree, VSeed, Measure } from 'src/types'\nimport { measureDepth } from './measures'\nimport { isMeasureTreeWithChildren, isMeasureTreeWithParentId } from '../advanced/chart/pipes/measures/utils'\nimport { unique } from 'remeda'\n\nexport const isTable = (vseed: VSeed) => {\n return vseed.chartType === 'table'\n}\nexport const isPivotTable = (vseed: VSeed) => {\n return vseed.chartType === 'pivotTable'\n}\nexport const isVTable = (vseed: VSeed) => {\n return ['table', 'pivotTable'].includes(vseed.chartType)\n}\nexport const isVChart = (vseed: VSeed): boolean => {\n return !isVTable(vseed)\n}\nexport const isPivotChart = (vseed: VSeed) => {\n if (isVTable(vseed)) {\n return false\n }\n\n if (isMeasureTreeWithParentId(vseed.measures)) {\n const parentIds = vseed.measures?.map((measure: Measure) => measure.parentId)\n return parentIds && unique(parentIds).length > 1\n }\n\n if (vseed.chartType === 'dualAxis' || vseed.chartType === 'scatter') {\n const { dimensions = [] } = vseed as {\n dimensions: Dimensions\n }\n const hasRowOrColumnDimension =\n dimensions && dimensions.some((dimension) => dimension.encoding === 'row' || dimension.encoding === 'column')\n\n if (hasRowOrColumnDimension) {\n return true\n }\n\n if (vseed.chartType === 'scatter') {\n if (isMeasureTreeWithChildren(vseed.measures)) {\n const depth = measureDepth(vseed.measures)\n return depth === 3\n }\n\n if (vseed.scatterMeasures && vseed.scatterMeasures.length > 1) {\n return true\n }\n return false\n }\n if (vseed.chartType === 'dualAxis') {\n if (isMeasureTreeWithChildren(vseed.measures)) {\n const depth = measureDepth(vseed.measures)\n return depth === 3\n }\n\n if (vseed.dualMeasures && vseed.dualMeasures.length > 1) {\n return true\n }\n }\n\n return false\n }\n\n const { measures = [], dimensions = [] } = vseed as {\n measures: DimensionTree\n dimensions: Dimensions\n }\n\n const hasRowOrColumnDimension =\n dimensions && dimensions.some((dimension) => dimension.encoding === 'row' || dimension.encoding === 'column')\n\n const hasMeasureGroup = measures && measures.some((measure: DimensionGroup) => measure && measure.children)\n\n return hasRowOrColumnDimension || hasMeasureGroup\n}\n"],"names":["isTable","vseed","isPivotTable","isVTable","isVChart","isPivotChart","isMeasureTreeWithParentId","parentIds","measure","unique","dimensions","hasRowOrColumnDimension","dimension","isMeasureTreeWithChildren","depth","measureDepth","measures","hasMeasureGroup"],"mappings":"
|
1
|
+
{"version":3,"file":"pipeline/utils/chatType.js","sources":["webpack://@visactor/vseed/./src/pipeline/utils/chatType.ts"],"sourcesContent":["import type { Dimensions, DimensionGroup, DimensionTree, VSeed, Measure } from 'src/types'\nimport { measureDepth } from './measures'\nimport { isMeasureTreeWithChildren, isMeasureTreeWithParentId } from '../advanced/chart/pipes/measures/utils'\nimport { unique } from 'remeda'\nimport { DEFAULT_PARENT_ID } from './constant'\n\nexport const isTable = (vseed: VSeed) => {\n return vseed.chartType === 'table'\n}\nexport const isPivotTable = (vseed: VSeed) => {\n return vseed.chartType === 'pivotTable'\n}\nexport const isVTable = (vseed: VSeed) => {\n return ['table', 'pivotTable'].includes(vseed.chartType)\n}\nexport const isVChart = (vseed: VSeed): boolean => {\n return !isVTable(vseed)\n}\nexport const isPivotChart = (vseed: VSeed) => {\n if (isVTable(vseed)) {\n return false\n }\n\n if (isMeasureTreeWithParentId(vseed.measures)) {\n const parentIds = vseed.measures?.map((measure: Measure) => measure.parentId || DEFAULT_PARENT_ID)\n return parentIds && unique(parentIds).length > 1\n }\n\n if (vseed.chartType === 'dualAxis' || vseed.chartType === 'scatter') {\n const { dimensions = [] } = vseed as {\n dimensions: Dimensions\n }\n const hasRowOrColumnDimension =\n dimensions && dimensions.some((dimension) => dimension.encoding === 'row' || dimension.encoding === 'column')\n\n if (hasRowOrColumnDimension) {\n return true\n }\n\n if (vseed.chartType === 'scatter') {\n if (isMeasureTreeWithChildren(vseed.measures)) {\n const depth = measureDepth(vseed.measures)\n return depth === 3\n }\n\n if (vseed.scatterMeasures && vseed.scatterMeasures.length > 1) {\n return true\n }\n return false\n }\n if (vseed.chartType === 'dualAxis') {\n if (isMeasureTreeWithChildren(vseed.measures)) {\n const depth = measureDepth(vseed.measures)\n return depth === 3\n }\n\n if (vseed.dualMeasures && vseed.dualMeasures.length > 1) {\n return true\n }\n }\n\n return false\n }\n\n const { measures = [], dimensions = [] } = vseed as {\n measures: DimensionTree\n dimensions: Dimensions\n }\n\n const hasRowOrColumnDimension =\n dimensions && dimensions.some((dimension) => dimension.encoding === 'row' || dimension.encoding === 'column')\n\n const hasMeasureGroup = measures && measures.some((measure: DimensionGroup) => measure && measure.children)\n\n return hasRowOrColumnDimension || hasMeasureGroup\n}\n"],"names":["isTable","vseed","isPivotTable","isVTable","isVChart","isPivotChart","isMeasureTreeWithParentId","parentIds","measure","DEFAULT_PARENT_ID","unique","dimensions","hasRowOrColumnDimension","dimension","isMeasureTreeWithChildren","depth","measureDepth","measures","hasMeasureGroup"],"mappings":";;;;AAMO,MAAMA,UAAU,CAACC,QACfA,AAAoB,YAApBA,MAAM,SAAS;AAEjB,MAAMC,eAAe,CAACD,QACpBA,AAAoB,iBAApBA,MAAM,SAAS;AAEjB,MAAME,WAAW,CAACF,QAChB;QAAC;QAAS;KAAa,CAAC,QAAQ,CAACA,MAAM,SAAS;AAElD,MAAMG,WAAW,CAACH,QAChB,CAACE,SAASF;AAEZ,MAAMI,eAAe,CAACJ;IAC3B,IAAIE,SAASF,QACX,OAAO;IAGT,IAAIK,0BAA0BL,MAAM,QAAQ,GAAG;QAC7C,MAAMM,YAAYN,MAAM,QAAQ,EAAE,IAAI,CAACO,UAAqBA,QAAQ,QAAQ,IAAIC;QAChF,OAAOF,aAAaG,OAAOH,WAAW,MAAM,GAAG;IACjD;IAEA,IAAIN,AAAoB,eAApBA,MAAM,SAAS,IAAmBA,AAAoB,cAApBA,MAAM,SAAS,EAAgB;QACnE,MAAM,EAAEU,aAAa,EAAE,EAAE,GAAGV;QAG5B,MAAMW,0BACJD,cAAcA,WAAW,IAAI,CAAC,CAACE,YAAcA,AAAuB,UAAvBA,UAAU,QAAQ,IAAcA,AAAuB,aAAvBA,UAAU,QAAQ;QAEjG,IAAID,yBACF,OAAO;QAGT,IAAIX,AAAoB,cAApBA,MAAM,SAAS,EAAgB;YACjC,IAAIa,0BAA0Bb,MAAM,QAAQ,GAAG;gBAC7C,MAAMc,QAAQC,aAAaf,MAAM,QAAQ;gBACzC,OAAOc,AAAU,MAAVA;YACT;YAEA,IAAId,MAAM,eAAe,IAAIA,MAAM,eAAe,CAAC,MAAM,GAAG,GAC1D,OAAO;YAET,OAAO;QACT;QACA,IAAIA,AAAoB,eAApBA,MAAM,SAAS,EAAiB;YAClC,IAAIa,0BAA0Bb,MAAM,QAAQ,GAAG;gBAC7C,MAAMc,QAAQC,aAAaf,MAAM,QAAQ;gBACzC,OAAOc,AAAU,MAAVA;YACT;YAEA,IAAId,MAAM,YAAY,IAAIA,MAAM,YAAY,CAAC,MAAM,GAAG,GACpD,OAAO;QAEX;QAEA,OAAO;IACT;IAEA,MAAM,EAAEgB,WAAW,EAAE,EAAEN,aAAa,EAAE,EAAE,GAAGV;IAK3C,MAAMW,0BACJD,cAAcA,WAAW,IAAI,CAAC,CAACE,YAAcA,AAAuB,UAAvBA,UAAU,QAAQ,IAAcA,AAAuB,aAAvBA,UAAU,QAAQ;IAEjG,MAAMK,kBAAkBD,YAAYA,SAAS,IAAI,CAAC,CAACT,UAA4BA,WAAWA,QAAQ,QAAQ;IAE1G,OAAOI,2BAA2BM;AACpC"}
|