@visactor/vseed 0.1.46 → 0.1.47
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/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithBoxplotEncoding.js +29 -25
- package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithBoxplotEncoding.js.map +1 -1
- package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithBoxplotEncoding.js +27 -24
- package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithBoxplotEncoding.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/axes/xLinear.js +11 -3
- package/dist/esm/pipeline/spec/chart/pipes/axes/xLinear.js.map +1 -1
- package/dist/esm/pipeline/spec/chart/pipes/axes/yLinear.js +11 -3
- package/dist/esm/pipeline/spec/chart/pipes/axes/yLinear.js.map +1 -1
- package/dist/umd/index.js +80 -57
- package/dist/umd/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -27,30 +27,35 @@ const pivotReshapeWithBoxplotEncoding = (advancedVSeed, context)=>{
|
|
|
27
27
|
let newDatasets = [];
|
|
28
28
|
let foldInfo = {};
|
|
29
29
|
let unfoldInfo = {};
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
30
|
+
const validEncodingIds = (encoding.value || []).filter((id)=>subMeasures.find((field)=>field.id === id));
|
|
31
|
+
if (validEncodingIds.length) {
|
|
32
|
+
const boxPlotDataList = [];
|
|
33
|
+
validEncodingIds.forEach((f)=>{
|
|
34
|
+
const m = subMeasures.find((m)=>m.id === f);
|
|
35
|
+
const boxPlotData = boxplot(dataset, {
|
|
36
|
+
field: f,
|
|
37
|
+
groupField: [
|
|
38
|
+
...encoding.x ?? [],
|
|
39
|
+
...encoding.color ?? [],
|
|
40
|
+
...rowColumnFields.map((item)=>item.id)
|
|
41
|
+
],
|
|
42
|
+
whiskers,
|
|
43
|
+
outputNames: {
|
|
44
|
+
q1: Q1MeasureValue,
|
|
45
|
+
q3: Q3MeasureValue,
|
|
46
|
+
lowerWhisker: LowerWhisker,
|
|
47
|
+
upperWhisker: UpperWhisker,
|
|
48
|
+
median: MedianMeasureId,
|
|
49
|
+
outliers: OutliersMeasureId
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
boxPlotData.forEach((datum)=>{
|
|
53
|
+
datum[FoldMeasureId] = f;
|
|
54
|
+
datum[FoldMeasureName] = m?.alias ?? f;
|
|
55
|
+
});
|
|
56
|
+
boxPlotDataList.push(...boxPlotData);
|
|
48
57
|
});
|
|
49
|
-
|
|
50
|
-
datum[FoldMeasureId] = f;
|
|
51
|
-
datum[FoldMeasureName] = m?.alias ?? f;
|
|
52
|
-
});
|
|
53
|
-
const res = unfoldDimensions(boxPlotData, uniqDims, encoding, {
|
|
58
|
+
const res = unfoldDimensions(boxPlotDataList, uniqDims, encoding, {
|
|
54
59
|
foldMeasureId: FoldMeasureId,
|
|
55
60
|
separator: Separator,
|
|
56
61
|
colorItemAsId: false
|
|
@@ -59,8 +64,7 @@ const pivotReshapeWithBoxplotEncoding = (advancedVSeed, context)=>{
|
|
|
59
64
|
newDatasets.push(d);
|
|
60
65
|
});
|
|
61
66
|
unfoldInfo = res.unfoldInfo;
|
|
62
|
-
})
|
|
63
|
-
else if (encoding.q1?.length && encoding.q3?.length && encoding.min?.length && encoding.max?.length && encoding.median?.length) {
|
|
67
|
+
} else if (encoding.q1?.length && encoding.q3?.length && encoding.min?.length && encoding.max?.length && encoding.median?.length) {
|
|
64
68
|
const res = unfoldDimensions(dataset, uniqDims, encoding, {
|
|
65
69
|
foldMeasureId: FoldMeasureId,
|
|
66
70
|
separator: Separator,
|
package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithBoxplotEncoding.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline/advanced/chart/pipes/reshape/pivotReshapeWithBoxplotEncoding.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithBoxplotEncoding.ts"],"sourcesContent":["import { boxplot } from '@visactor/vdataset'\nimport { uniqueBy } from 'remeda'\nimport {\n FoldMeasureId,\n FoldMeasureName,\n LowerWhisker,\n MedianMeasureId,\n OutliersMeasureId,\n Q1MeasureValue,\n Q3MeasureValue,\n Separator,\n unfoldDimensions,\n UpperWhisker,\n} from 'src/dataReshape'\nimport type {\n AdvancedPipe,\n ColumnParallel,\n Dataset,\n DatasetReshapeInfo,\n Dimension,\n Encoding,\n MeasureGroup,\n} from 'src/types'\n\nexport const pivotReshapeWithBoxplotEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset, chartType } = vseed as ColumnParallel\n const { encoding = {}, config } = advancedVSeed\n const measures = advancedVSeed.reshapeMeasures ?? advancedVSeed.measures ?? []\n const dimensions = advancedVSeed.reshapeDimensions ?? advancedVSeed.dimensions ?? []\n const uniqDims = uniqueBy(dimensions, (item: Dimension) => item.id)\n const chartConfig = config?.[chartType as 'boxPlot']\n const whiskers = chartConfig?.whiskers\n\n const measureGroups: MeasureGroup[] = []\n if (measures) {\n measures.forEach((measure: MeasureGroup) => {\n if (measure.children && measure.children.length > 0) {\n measureGroups.push(measure)\n }\n })\n }\n\n const rowColumnFields = uniqueBy(\n dimensions.filter((dim: Dimension) => dim.encoding === 'row' || dim.encoding === 'column'),\n (item: Dimension) => item.id,\n )\n const datasets: Dataset = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n\n measureGroups.forEach((measureGroup, index) => {\n const subMeasures = measureGroup.children\n if (!subMeasures) {\n return\n }\n const groupId = measureGroup.id\n let newDatasets: any[] = []\n let foldInfo: any = {}\n let unfoldInfo: any = {}\n\n if (
|
|
1
|
+
{"version":3,"file":"pipeline/advanced/chart/pipes/reshape/pivotReshapeWithBoxplotEncoding.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithBoxplotEncoding.ts"],"sourcesContent":["import { boxplot } from '@visactor/vdataset'\nimport { uniqueBy } from 'remeda'\nimport {\n FoldMeasureId,\n FoldMeasureName,\n LowerWhisker,\n MedianMeasureId,\n OutliersMeasureId,\n Q1MeasureValue,\n Q3MeasureValue,\n Separator,\n unfoldDimensions,\n UpperWhisker,\n} from 'src/dataReshape'\nimport type {\n AdvancedPipe,\n ColumnParallel,\n Dataset,\n DatasetReshapeInfo,\n Dimension,\n Encoding,\n MeasureGroup,\n} from 'src/types'\n\nexport const pivotReshapeWithBoxplotEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset, chartType } = vseed as ColumnParallel\n const { encoding = {}, config } = advancedVSeed\n const measures = advancedVSeed.reshapeMeasures ?? advancedVSeed.measures ?? []\n const dimensions = advancedVSeed.reshapeDimensions ?? advancedVSeed.dimensions ?? []\n const uniqDims = uniqueBy(dimensions, (item: Dimension) => item.id)\n const chartConfig = config?.[chartType as 'boxPlot']\n const whiskers = chartConfig?.whiskers\n\n const measureGroups: MeasureGroup[] = []\n if (measures) {\n measures.forEach((measure: MeasureGroup) => {\n if (measure.children && measure.children.length > 0) {\n measureGroups.push(measure)\n }\n })\n }\n\n const rowColumnFields = uniqueBy(\n dimensions.filter((dim: Dimension) => dim.encoding === 'row' || dim.encoding === 'column'),\n (item: Dimension) => item.id,\n )\n const datasets: Dataset = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n\n measureGroups.forEach((measureGroup, index) => {\n const subMeasures = measureGroup.children\n if (!subMeasures) {\n return\n }\n const groupId = measureGroup.id\n let newDatasets: any[] = []\n let foldInfo: any = {}\n let unfoldInfo: any = {}\n const validEncodingIds = (encoding.value || []).filter((id) => subMeasures.find((field) => field.id === id))\n\n if (validEncodingIds.length) {\n const boxPlotDataList: Dataset = []\n validEncodingIds.forEach((f) => {\n const m = subMeasures.find((m) => m.id === f)\n const boxPlotData = boxplot(dataset, {\n field: f,\n groupField: [\n ...(encoding.x ?? []),\n ...(encoding.color ?? []),\n ...rowColumnFields.map((item: Dimension) => item.id),\n ] as string[],\n whiskers,\n outputNames: {\n q1: Q1MeasureValue,\n q3: Q3MeasureValue,\n lowerWhisker: LowerWhisker,\n upperWhisker: UpperWhisker,\n median: MedianMeasureId,\n outliers: OutliersMeasureId,\n },\n }) as Dataset\n\n boxPlotData.forEach((datum) => {\n datum[FoldMeasureId] = f\n datum[FoldMeasureName] = m?.alias ?? f\n })\n\n boxPlotDataList.push(...boxPlotData)\n })\n const res = unfoldDimensions(boxPlotDataList, uniqDims, encoding as Encoding, {\n foldMeasureId: FoldMeasureId,\n separator: Separator,\n colorItemAsId: false,\n })\n\n res.dataset.forEach((d) => {\n newDatasets.push(d)\n })\n unfoldInfo = res.unfoldInfo\n } else if (\n encoding.q1?.length &&\n encoding.q3?.length &&\n encoding.min?.length &&\n encoding.max?.length &&\n encoding.median?.length\n ) {\n const res = unfoldDimensions(dataset, uniqDims, encoding as Encoding, {\n foldMeasureId: FoldMeasureId,\n separator: Separator,\n colorItemAsId: false,\n })\n\n res.dataset.forEach((datum) => {\n datum[UpperWhisker] = datum[encoding.max![0]]\n datum[LowerWhisker] = datum[encoding.min![0]]\n datum[Q1MeasureValue] = datum[encoding.q1![0]]\n datum[Q3MeasureValue] = datum[encoding.q3![0]]\n datum[MedianMeasureId] = datum[encoding.median![0]]\n })\n\n newDatasets = res.dataset\n foldInfo = {}\n unfoldInfo = res.unfoldInfo\n }\n\n const reshapeInfo = {\n id: groupId,\n index,\n foldInfo,\n unfoldInfo,\n }\n datasets.push(newDatasets)\n datasetReshapeInfo.push(reshapeInfo)\n })\n\n return {\n ...result,\n dataset: datasets,\n datasetReshapeInfo: datasetReshapeInfo,\n }\n}\n"],"names":["pivotReshapeWithBoxplotEncoding","advancedVSeed","context","result","vseed","dataset","chartType","encoding","config","measures","dimensions","uniqDims","uniqueBy","item","chartConfig","whiskers","measureGroups","measure","rowColumnFields","dim","datasets","datasetReshapeInfo","measureGroup","index","subMeasures","groupId","newDatasets","foldInfo","unfoldInfo","validEncodingIds","id","field","boxPlotDataList","f","m","boxPlotData","boxplot","Q1MeasureValue","Q3MeasureValue","LowerWhisker","UpperWhisker","MedianMeasureId","OutliersMeasureId","datum","FoldMeasureId","FoldMeasureName","res","unfoldDimensions","Separator","d","reshapeInfo"],"mappings":"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"}
|
|
@@ -17,29 +17,33 @@ const reshapeWithBoxplotEncoding = (advancedVSeed, context)=>{
|
|
|
17
17
|
let foldInfo = {};
|
|
18
18
|
let unfoldInfo = {};
|
|
19
19
|
const allMeasures = findAllMeasures(measures);
|
|
20
|
-
if (encoding.value?.length)
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
datum
|
|
20
|
+
if (encoding.value?.length) {
|
|
21
|
+
const boxPlotDataList = [];
|
|
22
|
+
encoding.value.forEach((f)=>{
|
|
23
|
+
const m = allMeasures.find((m)=>m.id === f);
|
|
24
|
+
const boxPlotData = boxplot(dataset, {
|
|
25
|
+
field: f,
|
|
26
|
+
groupField: [
|
|
27
|
+
...encoding.x ?? [],
|
|
28
|
+
...encoding.color ?? []
|
|
29
|
+
],
|
|
30
|
+
whiskers,
|
|
31
|
+
outputNames: {
|
|
32
|
+
q1: Q1MeasureValue,
|
|
33
|
+
q3: Q3MeasureValue,
|
|
34
|
+
lowerWhisker: LowerWhisker,
|
|
35
|
+
upperWhisker: UpperWhisker,
|
|
36
|
+
median: MedianMeasureId,
|
|
37
|
+
outliers: OutliersMeasureId
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
boxPlotData.forEach((datum)=>{
|
|
41
|
+
datum[FoldMeasureId] = f;
|
|
42
|
+
datum[FoldMeasureName] = m?.alias ?? f;
|
|
43
|
+
});
|
|
44
|
+
boxPlotDataList.push(...boxPlotData);
|
|
41
45
|
});
|
|
42
|
-
const res = unfoldDimensions(
|
|
46
|
+
const res = unfoldDimensions(boxPlotDataList, uniqDims, encoding, {
|
|
43
47
|
foldMeasureId: FoldMeasureId,
|
|
44
48
|
separator: Separator,
|
|
45
49
|
colorItemAsId: false
|
|
@@ -48,8 +52,7 @@ const reshapeWithBoxplotEncoding = (advancedVSeed, context)=>{
|
|
|
48
52
|
newDatasets.push(d);
|
|
49
53
|
});
|
|
50
54
|
unfoldInfo = res.unfoldInfo;
|
|
51
|
-
})
|
|
52
|
-
else if (encoding.q1?.length && encoding.q3?.length && encoding.min?.length && encoding.max?.length && encoding.median?.length) {
|
|
55
|
+
} else if (encoding.q1?.length && encoding.q3?.length && encoding.min?.length && encoding.max?.length && encoding.median?.length) {
|
|
53
56
|
const res = unfoldDimensions(dataset, uniqDims, encoding, {
|
|
54
57
|
foldMeasureId: FoldMeasureId,
|
|
55
58
|
separator: Separator,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline/advanced/chart/pipes/reshape/reshapeWithBoxplotEncoding.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/reshapeWithBoxplotEncoding.ts"],"sourcesContent":["import {\n FoldMeasureId,\n FoldMeasureName,\n LowerWhisker,\n MedianMeasureId,\n OutliersMeasureId,\n Q1MeasureValue,\n Q3MeasureValue,\n Separator,\n unfoldDimensions,\n UpperWhisker,\n} from 'src/dataReshape'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, ColumnParallel, Dataset, Encoding } from 'src/types'\nimport { boxplot } from '@visactor/vdataset'\nimport { uniqueBy } from 'remeda'\n\nexport const reshapeWithBoxplotEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset, chartType } = vseed as ColumnParallel\n const { encoding = {}, config } = advancedVSeed\n const measures = advancedVSeed.reshapeMeasures ?? advancedVSeed.measures ?? []\n const dimensions = advancedVSeed.reshapeDimensions ?? advancedVSeed.dimensions ?? []\n const uniqDims = uniqueBy(dimensions, (item) => item.id)\n\n const whiskers = config?.[chartType as 'boxPlot']?.whiskers\n\n let newDatasets: any[] = []\n let foldInfo: any = {}\n let unfoldInfo: any = {}\n\n const allMeasures = findAllMeasures(measures)\n\n if (encoding.value?.length) {\n encoding.value.forEach((f) => {\n const m = allMeasures.find((m) => m.id === f)\n const boxPlotData = boxplot(dataset, {\n field: f,\n groupField: [...(encoding.x ?? []), ...(encoding.color ?? [])] as string[],\n whiskers,\n outputNames: {\n q1: Q1MeasureValue,\n q3: Q3MeasureValue,\n lowerWhisker: LowerWhisker,\n upperWhisker: UpperWhisker,\n median: MedianMeasureId,\n outliers: OutliersMeasureId,\n },\n }) as Dataset\n\n boxPlotData.forEach((datum) => {\n datum[FoldMeasureId] = f\n datum[FoldMeasureName] = m?.alias ?? f\n })\n\n
|
|
1
|
+
{"version":3,"file":"pipeline/advanced/chart/pipes/reshape/reshapeWithBoxplotEncoding.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/reshape/reshapeWithBoxplotEncoding.ts"],"sourcesContent":["import {\n FoldMeasureId,\n FoldMeasureName,\n LowerWhisker,\n MedianMeasureId,\n OutliersMeasureId,\n Q1MeasureValue,\n Q3MeasureValue,\n Separator,\n unfoldDimensions,\n UpperWhisker,\n} from 'src/dataReshape'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, ColumnParallel, Dataset, Encoding } from 'src/types'\nimport { boxplot } from '@visactor/vdataset'\nimport { uniqueBy } from 'remeda'\n\nexport const reshapeWithBoxplotEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset, chartType } = vseed as ColumnParallel\n const { encoding = {}, config } = advancedVSeed\n const measures = advancedVSeed.reshapeMeasures ?? advancedVSeed.measures ?? []\n const dimensions = advancedVSeed.reshapeDimensions ?? advancedVSeed.dimensions ?? []\n const uniqDims = uniqueBy(dimensions, (item) => item.id)\n\n const whiskers = config?.[chartType as 'boxPlot']?.whiskers\n\n let newDatasets: any[] = []\n let foldInfo: any = {}\n let unfoldInfo: any = {}\n\n const allMeasures = findAllMeasures(measures)\n\n if (encoding.value?.length) {\n const boxPlotDataList: Dataset = []\n encoding.value.forEach((f) => {\n const m = allMeasures.find((m) => m.id === f)\n const boxPlotData = boxplot(dataset, {\n field: f,\n groupField: [...(encoding.x ?? []), ...(encoding.color ?? [])] as string[],\n whiskers,\n outputNames: {\n q1: Q1MeasureValue,\n q3: Q3MeasureValue,\n lowerWhisker: LowerWhisker,\n upperWhisker: UpperWhisker,\n median: MedianMeasureId,\n outliers: OutliersMeasureId,\n },\n }) as Dataset\n\n boxPlotData.forEach((datum) => {\n datum[FoldMeasureId] = f\n datum[FoldMeasureName] = m?.alias ?? f\n })\n boxPlotDataList.push(...boxPlotData)\n })\n const res = unfoldDimensions(boxPlotDataList, uniqDims, encoding as Encoding, {\n foldMeasureId: FoldMeasureId,\n separator: Separator,\n colorItemAsId: false,\n })\n\n res.dataset.forEach((d) => {\n newDatasets.push(d)\n })\n unfoldInfo = res.unfoldInfo\n } else if (\n encoding.q1?.length &&\n encoding.q3?.length &&\n encoding.min?.length &&\n encoding.max?.length &&\n encoding.median?.length\n ) {\n const res = unfoldDimensions(dataset, uniqDims, encoding as Encoding, {\n foldMeasureId: FoldMeasureId,\n separator: Separator,\n colorItemAsId: false,\n })\n\n res.dataset.forEach((datum) => {\n datum[UpperWhisker] = datum[encoding.max![0]]\n datum[LowerWhisker] = datum[encoding.min![0]]\n datum[Q1MeasureValue] = datum[encoding.q1![0]]\n datum[Q3MeasureValue] = datum[encoding.q3![0]]\n datum[MedianMeasureId] = datum[encoding.median![0]]\n })\n\n newDatasets = res.dataset\n foldInfo = {}\n unfoldInfo = res.unfoldInfo\n }\n\n return {\n ...result,\n dataset: newDatasets,\n datasetReshapeInfo: [\n {\n id: String(chartType),\n index: 0,\n foldInfo,\n unfoldInfo,\n },\n ],\n dimensions,\n measures,\n }\n}\n"],"names":["reshapeWithBoxplotEncoding","advancedVSeed","context","result","vseed","dataset","chartType","encoding","config","measures","dimensions","uniqDims","uniqueBy","item","whiskers","newDatasets","foldInfo","unfoldInfo","allMeasures","findAllMeasures","boxPlotDataList","f","m","boxPlotData","boxplot","Q1MeasureValue","Q3MeasureValue","LowerWhisker","UpperWhisker","MedianMeasureId","OutliersMeasureId","datum","FoldMeasureId","FoldMeasureName","res","unfoldDimensions","Separator","d","String"],"mappings":";;;;AAiBO,MAAMA,6BAA2C,CAACC,eAAeC;IACtE,MAAMC,SAAS;QAAE,GAAGF,aAAa;IAAC;IAClC,MAAM,EAAEG,KAAK,EAAE,GAAGF;IAClB,MAAM,EAAEG,OAAO,EAAEC,SAAS,EAAE,GAAGF;IAC/B,MAAM,EAAEG,WAAW,CAAC,CAAC,EAAEC,MAAM,EAAE,GAAGP;IAClC,MAAMQ,WAAWR,cAAc,eAAe,IAAIA,cAAc,QAAQ,IAAI,EAAE;IAC9E,MAAMS,aAAaT,cAAc,iBAAiB,IAAIA,cAAc,UAAU,IAAI,EAAE;IACpF,MAAMU,WAAWC,SAASF,YAAY,CAACG,OAASA,KAAK,EAAE;IAEvD,MAAMC,WAAWN,QAAQ,CAACF,UAAuB,EAAE;IAEnD,IAAIS,cAAqB,EAAE;IAC3B,IAAIC,WAAgB,CAAC;IACrB,IAAIC,aAAkB,CAAC;IAEvB,MAAMC,cAAcC,gBAAgBV;IAEpC,IAAIF,SAAS,KAAK,EAAE,QAAQ;QAC1B,MAAMa,kBAA2B,EAAE;QACnCb,SAAS,KAAK,CAAC,OAAO,CAAC,CAACc;YACtB,MAAMC,IAAIJ,YAAY,IAAI,CAAC,CAACI,IAAMA,EAAE,EAAE,KAAKD;YAC3C,MAAME,cAAcC,QAAQnB,SAAS;gBACnC,OAAOgB;gBACP,YAAY;uBAAKd,SAAS,CAAC,IAAI,EAAE;uBAAOA,SAAS,KAAK,IAAI,EAAE;iBAAE;gBAC9DO;gBACA,aAAa;oBACX,IAAIW;oBACJ,IAAIC;oBACJ,cAAcC;oBACd,cAAcC;oBACd,QAAQC;oBACR,UAAUC;gBACZ;YACF;YAEAP,YAAY,OAAO,CAAC,CAACQ;gBACnBA,KAAK,CAACC,cAAc,GAAGX;gBACvBU,KAAK,CAACE,gBAAgB,GAAGX,GAAG,SAASD;YACvC;YACAD,gBAAgB,IAAI,IAAIG;QAC1B;QACA,MAAMW,MAAMC,iBAAiBf,iBAAiBT,UAAUJ,UAAsB;YAC5E,eAAeyB;YACf,WAAWI;YACX,eAAe;QACjB;QAEAF,IAAI,OAAO,CAAC,OAAO,CAAC,CAACG;YACnBtB,YAAY,IAAI,CAACsB;QACnB;QACApB,aAAaiB,IAAI,UAAU;IAC7B,OAAO,IACL3B,SAAS,EAAE,EAAE,UACbA,SAAS,EAAE,EAAE,UACbA,SAAS,GAAG,EAAE,UACdA,SAAS,GAAG,EAAE,UACdA,SAAS,MAAM,EAAE,QACjB;QACA,MAAM2B,MAAMC,iBAAiB9B,SAASM,UAAUJ,UAAsB;YACpE,eAAeyB;YACf,WAAWI;YACX,eAAe;QACjB;QAEAF,IAAI,OAAO,CAAC,OAAO,CAAC,CAACH;YACnBA,KAAK,CAACH,aAAa,GAAGG,KAAK,CAACxB,SAAS,GAAI,CAAC,EAAE,CAAC;YAC7CwB,KAAK,CAACJ,aAAa,GAAGI,KAAK,CAACxB,SAAS,GAAI,CAAC,EAAE,CAAC;YAC7CwB,KAAK,CAACN,eAAe,GAAGM,KAAK,CAACxB,SAAS,EAAG,CAAC,EAAE,CAAC;YAC9CwB,KAAK,CAACL,eAAe,GAAGK,KAAK,CAACxB,SAAS,EAAG,CAAC,EAAE,CAAC;YAC9CwB,KAAK,CAACF,gBAAgB,GAAGE,KAAK,CAACxB,SAAS,MAAO,CAAC,EAAE,CAAC;QACrD;QAEAQ,cAAcmB,IAAI,OAAO;QACzBlB,WAAW,CAAC;QACZC,aAAaiB,IAAI,UAAU;IAC7B;IAEA,OAAO;QACL,GAAG/B,MAAM;QACT,SAASY;QACT,oBAAoB;YAClB;gBACE,IAAIuB,OAAOhC;gBACX,OAAO;gBACPU;gBACAC;YACF;SACD;QACDP;QACAD;IACF;AACF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AXIS_LABEL_SPACE, LINEAR_AXIS_INNER_OFFSET_TOP, createNumFormatter, isAreaPercent, isBarPercent, isColumnPercent } from "../../../../utils/index.js";
|
|
1
|
+
import { AXIS_LABEL_SPACE, LINEAR_AXIS_INNER_OFFSET_TOP, createNumFormatter, isAreaPercent, isBarPercent, isColumnPercent, isPivotChart } from "../../../../utils/index.js";
|
|
2
2
|
import { createLinearFormat, createLinearPercentFormat } from "./format/linearFormat.js";
|
|
3
3
|
import { defaultTitleText } from "./title/defaultTitleText.js";
|
|
4
4
|
const xLinear = (spec, context)=>{
|
|
@@ -10,12 +10,22 @@ const xLinear = (spec, context)=>{
|
|
|
10
10
|
const { chartType } = vseed;
|
|
11
11
|
const config = advancedVSeed.config?.[chartType]?.xAxis;
|
|
12
12
|
if (!result.axes) result.axes = [];
|
|
13
|
+
const isPivot = isPivotChart(vseed);
|
|
13
14
|
const { visible = true, label, tick, title, grid, line, zero, nice, inverse, max, min, log, logBase = 10, autoFormat, numFormat = {} } = config;
|
|
14
15
|
const formatter = createNumFormatter(numFormat);
|
|
15
16
|
const percentFormatter = createNumFormatter({
|
|
16
17
|
type: 'percent'
|
|
17
18
|
});
|
|
18
19
|
const linearAxis = {
|
|
20
|
+
...isPivot ? {
|
|
21
|
+
range: {
|
|
22
|
+
min,
|
|
23
|
+
max
|
|
24
|
+
}
|
|
25
|
+
} : {
|
|
26
|
+
min,
|
|
27
|
+
max
|
|
28
|
+
},
|
|
19
29
|
visible,
|
|
20
30
|
type: log ? 'log' : 'linear',
|
|
21
31
|
base: logBase,
|
|
@@ -23,8 +33,6 @@ const xLinear = (spec, context)=>{
|
|
|
23
33
|
nice,
|
|
24
34
|
zero: log ? false : zero,
|
|
25
35
|
inverse,
|
|
26
|
-
max,
|
|
27
|
-
min,
|
|
28
36
|
label: {
|
|
29
37
|
space: AXIS_LABEL_SPACE,
|
|
30
38
|
visible: label?.visible,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline/spec/chart/pipes/axes/xLinear.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/xLinear.ts"],"sourcesContent":["import type { ISpec } from '@visactor/vchart'\nimport type { VChartSpecPipe, XLinearAxis } from 'src/types'\nimport {\n AXIS_LABEL_SPACE,\n createNumFormatter,\n isAreaPercent,\n isBarPercent,\n isColumnPercent,\n LINEAR_AXIS_INNER_OFFSET_TOP,\n} from 'src/pipeline/utils'\nimport { createLinearFormat, createLinearPercentFormat } from './format/linearFormat'\nimport { defaultTitleText } from './title/defaultTitleText'\n\nexport const xLinear: VChartSpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { encoding, dimensions, measures } = advancedVSeed\n const { chartType } = vseed\n const config = advancedVSeed.config?.[chartType as 'bar']?.xAxis as XLinearAxis\n\n if (!result.axes) {\n result.axes = []\n }\n\n const {\n visible = true,\n label,\n tick,\n title,\n grid,\n line,\n\n zero,\n nice,\n inverse,\n max,\n min,\n log,\n logBase = 10,\n autoFormat,\n numFormat = {},\n } = config\n\n const formatter = createNumFormatter(numFormat)\n const percentFormatter = createNumFormatter({\n type: 'percent',\n })\n\n const linearAxis = {\n visible,\n type: log ? 'log' : 'linear',\n base: logBase,\n orient: 'bottom',\n nice,\n zero: log ? false : zero,\n inverse,\n
|
|
1
|
+
{"version":3,"file":"pipeline/spec/chart/pipes/axes/xLinear.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/xLinear.ts"],"sourcesContent":["import type { ISpec } from '@visactor/vchart'\nimport type { VChartSpecPipe, XLinearAxis } from 'src/types'\nimport {\n AXIS_LABEL_SPACE,\n createNumFormatter,\n isAreaPercent,\n isBarPercent,\n isColumnPercent,\n isPivotChart,\n LINEAR_AXIS_INNER_OFFSET_TOP,\n} from 'src/pipeline/utils'\nimport { createLinearFormat, createLinearPercentFormat } from './format/linearFormat'\nimport { defaultTitleText } from './title/defaultTitleText'\n\nexport const xLinear: VChartSpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { encoding, dimensions, measures } = advancedVSeed\n const { chartType } = vseed\n const config = advancedVSeed.config?.[chartType as 'bar']?.xAxis as XLinearAxis\n\n if (!result.axes) {\n result.axes = []\n }\n const isPivot = isPivotChart(vseed)\n\n const {\n visible = true,\n label,\n tick,\n title,\n grid,\n line,\n\n zero,\n nice,\n inverse,\n max,\n min,\n log,\n logBase = 10,\n autoFormat,\n numFormat = {},\n } = config\n\n const formatter = createNumFormatter(numFormat)\n const percentFormatter = createNumFormatter({\n type: 'percent',\n })\n\n const linearAxis = {\n ...(isPivot\n ? {\n range: {\n min,\n max,\n },\n }\n : {\n min,\n max,\n }),\n visible,\n type: log ? 'log' : 'linear',\n base: logBase,\n orient: 'bottom',\n nice,\n zero: log ? false : zero,\n inverse,\n label: {\n space: AXIS_LABEL_SPACE,\n visible: label?.visible,\n formatMethod: (value: string) => {\n if (isBarPercent(vseed) || isColumnPercent(vseed) || isAreaPercent(vseed)) {\n return createLinearPercentFormat(value, autoFormat, numFormat, formatter, percentFormatter)\n }\n return createLinearFormat(value, autoFormat, numFormat, formatter)\n },\n style: {\n fill: label?.labelColor,\n angle: label?.labelAngle,\n fontSize: label?.labelFontSize,\n fontWeight: label?.labelFontWeight,\n },\n },\n title: {\n visible: title?.visible,\n text: title?.titleText || defaultTitleText(measures, dimensions, encoding.x as string[]),\n style: {\n fill: title?.titleColor,\n fontSize: title?.titleFontSize,\n fontWeight: title?.titleFontWeight,\n },\n },\n tick: {\n visible: tick?.visible,\n tickSize: tick?.tickSize,\n inside: tick?.tickInside,\n style: {\n stroke: tick?.tickColor,\n },\n },\n grid: {\n visible: grid?.visible,\n style: {\n lineWidth: grid?.gridWidth,\n stroke: grid?.gridColor,\n lineDash: grid?.gridLineDash,\n },\n },\n domainLine: {\n visible: line?.visible,\n style: {\n lineWidth: line?.lineWidth,\n stroke: line?.lineColor,\n },\n },\n innerOffset: {\n right: LINEAR_AXIS_INNER_OFFSET_TOP,\n // left: LINEAR_AXIS_INNER_OFFSET_TOP,\n },\n }\n\n result.axes = [...result.axes, linearAxis] as ISpec['axes']\n\n return result\n}\n"],"names":["xLinear","spec","context","result","advancedVSeed","vseed","encoding","dimensions","measures","chartType","config","isPivot","isPivotChart","visible","label","tick","title","grid","line","zero","nice","inverse","max","min","log","logBase","autoFormat","numFormat","formatter","createNumFormatter","percentFormatter","linearAxis","AXIS_LABEL_SPACE","value","isBarPercent","isColumnPercent","isAreaPercent","createLinearPercentFormat","createLinearFormat","defaultTitleText","LINEAR_AXIS_INNER_OFFSET_TOP"],"mappings":";;;AAcO,MAAMA,UAA0B,CAACC,MAAMC;IAC5C,MAAMC,SAAS;QAAE,GAAGF,IAAI;IAAC;IACzB,MAAM,EAAEG,aAAa,EAAEC,KAAK,EAAE,GAAGH;IACjC,MAAM,EAAEI,QAAQ,EAAEC,UAAU,EAAEC,QAAQ,EAAE,GAAGJ;IAC3C,MAAM,EAAEK,SAAS,EAAE,GAAGJ;IACtB,MAAMK,SAASN,cAAc,MAAM,EAAE,CAACK,UAAmB,EAAE;IAE3D,IAAI,CAACN,OAAO,IAAI,EACdA,OAAO,IAAI,GAAG,EAAE;IAElB,MAAMQ,UAAUC,aAAaP;IAE7B,MAAM,EACJQ,UAAU,IAAI,EACdC,KAAK,EACLC,IAAI,EACJC,KAAK,EACLC,IAAI,EACJC,IAAI,EAEJC,IAAI,EACJC,IAAI,EACJC,OAAO,EACPC,GAAG,EACHC,GAAG,EACHC,GAAG,EACHC,UAAU,EAAE,EACZC,UAAU,EACVC,YAAY,CAAC,CAAC,EACf,GAAGjB;IAEJ,MAAMkB,YAAYC,mBAAmBF;IACrC,MAAMG,mBAAmBD,mBAAmB;QAC1C,MAAM;IACR;IAEA,MAAME,aAAa;QACjB,GAAIpB,UACA;YACE,OAAO;gBACLY;gBACAD;YACF;QACF,IACA;YACEC;YACAD;QACF,CAAC;QACLT;QACA,MAAMW,MAAM,QAAQ;QACpB,MAAMC;QACN,QAAQ;QACRL;QACA,MAAMI,MAAM,QAAQL;QACpBE;QACA,OAAO;YACL,OAAOW;YACP,SAASlB,OAAO;YAChB,cAAc,CAACmB;gBACb,IAAIC,aAAa7B,UAAU8B,gBAAgB9B,UAAU+B,cAAc/B,QACjE,OAAOgC,0BAA0BJ,OAAOP,YAAYC,WAAWC,WAAWE;gBAE5E,OAAOQ,mBAAmBL,OAAOP,YAAYC,WAAWC;YAC1D;YACA,OAAO;gBACL,MAAMd,OAAO;gBACb,OAAOA,OAAO;gBACd,UAAUA,OAAO;gBACjB,YAAYA,OAAO;YACrB;QACF;QACA,OAAO;YACL,SAASE,OAAO;YAChB,MAAMA,OAAO,aAAauB,iBAAiB/B,UAAUD,YAAYD,SAAS,CAAC;YAC3E,OAAO;gBACL,MAAMU,OAAO;gBACb,UAAUA,OAAO;gBACjB,YAAYA,OAAO;YACrB;QACF;QACA,MAAM;YACJ,SAASD,MAAM;YACf,UAAUA,MAAM;YAChB,QAAQA,MAAM;YACd,OAAO;gBACL,QAAQA,MAAM;YAChB;QACF;QACA,MAAM;YACJ,SAASE,MAAM;YACf,OAAO;gBACL,WAAWA,MAAM;gBACjB,QAAQA,MAAM;gBACd,UAAUA,MAAM;YAClB;QACF;QACA,YAAY;YACV,SAASC,MAAM;YACf,OAAO;gBACL,WAAWA,MAAM;gBACjB,QAAQA,MAAM;YAChB;QACF;QACA,aAAa;YACX,OAAOsB;QAET;IACF;IAEArC,OAAO,IAAI,GAAG;WAAIA,OAAO,IAAI;QAAE4B;KAAW;IAE1C,OAAO5B;AACT"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AXIS_LABEL_SPACE, LINEAR_AXIS_INNER_OFFSET_TOP, createNumFormatter, isAreaPercent, isBarPercent, isColumnPercent } from "../../../../utils/index.js";
|
|
1
|
+
import { AXIS_LABEL_SPACE, LINEAR_AXIS_INNER_OFFSET_TOP, createNumFormatter, isAreaPercent, isBarPercent, isColumnPercent, isPivotChart } from "../../../../utils/index.js";
|
|
2
2
|
import { createLinearFormat, createLinearPercentFormat } from "./format/linearFormat.js";
|
|
3
3
|
import { defaultTitleText } from "./title/defaultTitleText.js";
|
|
4
4
|
const yLinear = (spec, context)=>{
|
|
@@ -10,12 +10,22 @@ const yLinear = (spec, context)=>{
|
|
|
10
10
|
const { measures, dimensions, encoding } = advancedVSeed;
|
|
11
11
|
const config = advancedVSeed.config?.[chartType]?.yAxis;
|
|
12
12
|
if (!result.axes) result.axes = [];
|
|
13
|
+
const isPivot = isPivotChart(vseed);
|
|
13
14
|
const { visible = true, label, tick, title, grid, line, zero, nice, inverse, max, min, log, logBase = 10, autoFormat, numFormat = {} } = config;
|
|
14
15
|
const formatter = createNumFormatter(numFormat);
|
|
15
16
|
const percentFormatter = createNumFormatter({
|
|
16
17
|
type: 'percent'
|
|
17
18
|
});
|
|
18
19
|
const linearAxis = {
|
|
20
|
+
...isPivot ? {
|
|
21
|
+
range: {
|
|
22
|
+
min,
|
|
23
|
+
max
|
|
24
|
+
}
|
|
25
|
+
} : {
|
|
26
|
+
min,
|
|
27
|
+
max
|
|
28
|
+
},
|
|
19
29
|
visible,
|
|
20
30
|
type: log ? 'log' : 'linear',
|
|
21
31
|
base: logBase,
|
|
@@ -23,8 +33,6 @@ const yLinear = (spec, context)=>{
|
|
|
23
33
|
nice,
|
|
24
34
|
zero: log ? false : zero,
|
|
25
35
|
inverse,
|
|
26
|
-
max,
|
|
27
|
-
min,
|
|
28
36
|
label: {
|
|
29
37
|
space: AXIS_LABEL_SPACE,
|
|
30
38
|
visible: label?.visible,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline/spec/chart/pipes/axes/yLinear.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/yLinear.ts"],"sourcesContent":["import type { ISpec } from '@visactor/vchart'\nimport {\n AXIS_LABEL_SPACE,\n createNumFormatter,\n isAreaPercent,\n isBarPercent,\n isColumnPercent,\n LINEAR_AXIS_INNER_OFFSET_TOP,\n} from 'src/pipeline/utils'\nimport type { VChartSpecPipe, YLinearAxis } from 'src/types'\nimport { createLinearFormat, createLinearPercentFormat } from './format/linearFormat'\nimport { defaultTitleText } from './title/defaultTitleText'\n\nexport const yLinear: VChartSpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { measures, dimensions, encoding } = advancedVSeed\n const config = advancedVSeed.config?.[chartType as 'column']?.yAxis as YLinearAxis\n\n if (!result.axes) {\n result.axes = []\n }\n\n const {\n visible = true,\n label,\n tick,\n title,\n grid,\n line,\n\n zero,\n nice,\n inverse,\n max,\n min,\n log,\n logBase = 10,\n autoFormat,\n numFormat = {},\n } = config\n\n const formatter = createNumFormatter(numFormat)\n const percentFormatter = createNumFormatter({\n type: 'percent',\n })\n\n const linearAxis = {\n visible,\n type: log ? 'log' : 'linear',\n base: logBase,\n orient: 'left',\n nice,\n zero: log ? false : zero,\n inverse,\n
|
|
1
|
+
{"version":3,"file":"pipeline/spec/chart/pipes/axes/yLinear.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/axes/yLinear.ts"],"sourcesContent":["import type { ISpec } from '@visactor/vchart'\nimport {\n AXIS_LABEL_SPACE,\n createNumFormatter,\n isAreaPercent,\n isBarPercent,\n isColumnPercent,\n isPivotChart,\n LINEAR_AXIS_INNER_OFFSET_TOP,\n} from 'src/pipeline/utils'\nimport type { VChartSpecPipe, YLinearAxis } from 'src/types'\nimport { createLinearFormat, createLinearPercentFormat } from './format/linearFormat'\nimport { defaultTitleText } from './title/defaultTitleText'\n\nexport const yLinear: VChartSpecPipe = (spec, context) => {\n const result = { ...spec } as ISpec\n const { advancedVSeed, vseed } = context\n const { chartType } = vseed\n const { measures, dimensions, encoding } = advancedVSeed\n const config = advancedVSeed.config?.[chartType as 'column']?.yAxis as YLinearAxis\n\n if (!result.axes) {\n result.axes = []\n }\n const isPivot = isPivotChart(vseed)\n\n const {\n visible = true,\n label,\n tick,\n title,\n grid,\n line,\n\n zero,\n nice,\n inverse,\n max,\n min,\n log,\n logBase = 10,\n autoFormat,\n numFormat = {},\n } = config\n\n const formatter = createNumFormatter(numFormat)\n const percentFormatter = createNumFormatter({\n type: 'percent',\n })\n\n const linearAxis = {\n ...(isPivot\n ? {\n range: {\n min,\n max,\n },\n }\n : {\n min,\n max,\n }),\n visible,\n type: log ? 'log' : 'linear',\n base: logBase,\n orient: 'left',\n nice,\n zero: log ? false : zero,\n inverse,\n label: {\n space: AXIS_LABEL_SPACE,\n visible: label?.visible,\n formatMethod: (value: string) => {\n if (isBarPercent(vseed) || isColumnPercent(vseed) || isAreaPercent(vseed)) {\n return createLinearPercentFormat(value, autoFormat, numFormat, formatter, percentFormatter)\n }\n return createLinearFormat(value, autoFormat, numFormat, formatter)\n },\n style: {\n fill: label?.labelColor,\n angle: label?.labelAngle,\n fontSize: label?.labelFontSize,\n fontWeight: label?.labelFontWeight,\n },\n },\n title: {\n visible: title?.visible,\n text: title?.titleText || defaultTitleText(measures, dimensions, encoding.y as string[]),\n style: {\n fill: title?.titleColor,\n fontSize: title?.titleFontSize,\n fontWeight: title?.titleFontWeight,\n },\n },\n tick: {\n visible: tick?.visible,\n tickSize: tick?.tickSize,\n inside: tick?.tickInside,\n style: {\n stroke: tick?.tickColor,\n },\n },\n grid: {\n visible: grid?.visible,\n style: {\n lineWidth: grid?.gridWidth,\n stroke: grid?.gridColor,\n lineDash: grid?.gridLineDash,\n },\n },\n domainLine: {\n visible: line?.visible,\n style: {\n lineWidth: line?.lineWidth,\n stroke: line?.lineColor,\n },\n },\n innerOffset: {\n top: LINEAR_AXIS_INNER_OFFSET_TOP,\n // bottom: LINEAR_AXIS_INNER_OFFSET_TOP,\n },\n }\n\n result.axes = [...result.axes, linearAxis] as ISpec['axes']\n\n return result\n}\n"],"names":["yLinear","spec","context","result","advancedVSeed","vseed","chartType","measures","dimensions","encoding","config","isPivot","isPivotChart","visible","label","tick","title","grid","line","zero","nice","inverse","max","min","log","logBase","autoFormat","numFormat","formatter","createNumFormatter","percentFormatter","linearAxis","AXIS_LABEL_SPACE","value","isBarPercent","isColumnPercent","isAreaPercent","createLinearPercentFormat","createLinearFormat","defaultTitleText","LINEAR_AXIS_INNER_OFFSET_TOP"],"mappings":";;;AAcO,MAAMA,UAA0B,CAACC,MAAMC;IAC5C,MAAMC,SAAS;QAAE,GAAGF,IAAI;IAAC;IACzB,MAAM,EAAEG,aAAa,EAAEC,KAAK,EAAE,GAAGH;IACjC,MAAM,EAAEI,SAAS,EAAE,GAAGD;IACtB,MAAM,EAAEE,QAAQ,EAAEC,UAAU,EAAEC,QAAQ,EAAE,GAAGL;IAC3C,MAAMM,SAASN,cAAc,MAAM,EAAE,CAACE,UAAsB,EAAE;IAE9D,IAAI,CAACH,OAAO,IAAI,EACdA,OAAO,IAAI,GAAG,EAAE;IAElB,MAAMQ,UAAUC,aAAaP;IAE7B,MAAM,EACJQ,UAAU,IAAI,EACdC,KAAK,EACLC,IAAI,EACJC,KAAK,EACLC,IAAI,EACJC,IAAI,EAEJC,IAAI,EACJC,IAAI,EACJC,OAAO,EACPC,GAAG,EACHC,GAAG,EACHC,GAAG,EACHC,UAAU,EAAE,EACZC,UAAU,EACVC,YAAY,CAAC,CAAC,EACf,GAAGjB;IAEJ,MAAMkB,YAAYC,mBAAmBF;IACrC,MAAMG,mBAAmBD,mBAAmB;QAC1C,MAAM;IACR;IAEA,MAAME,aAAa;QACjB,GAAIpB,UACA;YACE,OAAO;gBACLY;gBACAD;YACF;QACF,IACA;YACEC;YACAD;QACF,CAAC;QACLT;QACA,MAAMW,MAAM,QAAQ;QACpB,MAAMC;QACN,QAAQ;QACRL;QACA,MAAMI,MAAM,QAAQL;QACpBE;QACA,OAAO;YACL,OAAOW;YACP,SAASlB,OAAO;YAChB,cAAc,CAACmB;gBACb,IAAIC,aAAa7B,UAAU8B,gBAAgB9B,UAAU+B,cAAc/B,QACjE,OAAOgC,0BAA0BJ,OAAOP,YAAYC,WAAWC,WAAWE;gBAE5E,OAAOQ,mBAAmBL,OAAOP,YAAYC,WAAWC;YAC1D;YACA,OAAO;gBACL,MAAMd,OAAO;gBACb,OAAOA,OAAO;gBACd,UAAUA,OAAO;gBACjB,YAAYA,OAAO;YACrB;QACF;QACA,OAAO;YACL,SAASE,OAAO;YAChB,MAAMA,OAAO,aAAauB,iBAAiBhC,UAAUC,YAAYC,SAAS,CAAC;YAC3E,OAAO;gBACL,MAAMO,OAAO;gBACb,UAAUA,OAAO;gBACjB,YAAYA,OAAO;YACrB;QACF;QACA,MAAM;YACJ,SAASD,MAAM;YACf,UAAUA,MAAM;YAChB,QAAQA,MAAM;YACd,OAAO;gBACL,QAAQA,MAAM;YAChB;QACF;QACA,MAAM;YACJ,SAASE,MAAM;YACf,OAAO;gBACL,WAAWA,MAAM;gBACjB,QAAQA,MAAM;gBACd,UAAUA,MAAM;YAClB;QACF;QACA,YAAY;YACV,SAASC,MAAM;YACf,OAAO;gBACL,WAAWA,MAAM;gBACjB,QAAQA,MAAM;YAChB;QACF;QACA,aAAa;YACX,KAAKsB;QAEP;IACF;IAEArC,OAAO,IAAI,GAAG;WAAIA,OAAO,IAAI;QAAE4B;KAAW;IAE1C,OAAO5B;AACT"}
|
package/dist/umd/index.js
CHANGED
|
@@ -264,7 +264,7 @@
|
|
|
264
264
|
BinEndMeasureId: ()=>BinEndMeasureId,
|
|
265
265
|
zAnnotationArea: ()=>zAnnotationArea,
|
|
266
266
|
DetailEncoding: ()=>DetailEncoding,
|
|
267
|
-
isPivot: ()=>
|
|
267
|
+
isPivot: ()=>chatType_isPivot,
|
|
268
268
|
zPointStyle: ()=>zPointStyle,
|
|
269
269
|
zDimension: ()=>zDimension,
|
|
270
270
|
lightTheme: ()=>lightTheme,
|
|
@@ -624,10 +624,10 @@
|
|
|
624
624
|
const isVChart = (vseed)=>!isVTable(vseed);
|
|
625
625
|
const isPivotChart = (vseed)=>{
|
|
626
626
|
if (isVTable(vseed)) return false;
|
|
627
|
-
if (
|
|
627
|
+
if (chatType_isPivot(vseed)) return true;
|
|
628
628
|
return isCombination(vseed);
|
|
629
629
|
};
|
|
630
|
-
const
|
|
630
|
+
const chatType_isPivot = (vseed)=>{
|
|
631
631
|
const { dimensions = [] } = vseed;
|
|
632
632
|
return dimensions && dimensions.some((dimension)=>'row' === dimension.encoding || 'column' === dimension.encoding);
|
|
633
633
|
};
|
|
@@ -2983,12 +2983,22 @@
|
|
|
2983
2983
|
const { measures, dimensions, encoding } = advancedVSeed;
|
|
2984
2984
|
const config = advancedVSeed.config?.[chartType]?.yAxis;
|
|
2985
2985
|
if (!result.axes) result.axes = [];
|
|
2986
|
+
const isPivot = isPivotChart(vseed);
|
|
2986
2987
|
const { visible = true, label, tick, title, grid, line, zero, nice, inverse, max, min, log, logBase = 10, autoFormat, numFormat = {} } = config;
|
|
2987
2988
|
const formatter = createNumFormatter(numFormat);
|
|
2988
2989
|
const percentFormatter = createNumFormatter({
|
|
2989
2990
|
type: 'percent'
|
|
2990
2991
|
});
|
|
2991
2992
|
const linearAxis = {
|
|
2993
|
+
...isPivot ? {
|
|
2994
|
+
range: {
|
|
2995
|
+
min,
|
|
2996
|
+
max
|
|
2997
|
+
}
|
|
2998
|
+
} : {
|
|
2999
|
+
min,
|
|
3000
|
+
max
|
|
3001
|
+
},
|
|
2992
3002
|
visible,
|
|
2993
3003
|
type: log ? 'log' : 'linear',
|
|
2994
3004
|
base: logBase,
|
|
@@ -2996,8 +3006,6 @@
|
|
|
2996
3006
|
nice,
|
|
2997
3007
|
zero: log ? false : zero,
|
|
2998
3008
|
inverse,
|
|
2999
|
-
max,
|
|
3000
|
-
min,
|
|
3001
3009
|
label: {
|
|
3002
3010
|
space: 8,
|
|
3003
3011
|
visible: label?.visible,
|
|
@@ -4803,7 +4811,7 @@
|
|
|
4803
4811
|
const { vseed, advancedVSeed } = context;
|
|
4804
4812
|
const { config, chartType } = advancedVSeed;
|
|
4805
4813
|
const themConfig = config?.[chartType]?.pivotGrid ?? {};
|
|
4806
|
-
const onlyCombination = !
|
|
4814
|
+
const onlyCombination = !chatType_isPivot(vseed) && isCombination(vseed);
|
|
4807
4815
|
const result = {
|
|
4808
4816
|
...spec
|
|
4809
4817
|
};
|
|
@@ -6899,12 +6907,22 @@
|
|
|
6899
6907
|
const { chartType } = vseed;
|
|
6900
6908
|
const config = advancedVSeed.config?.[chartType]?.xAxis;
|
|
6901
6909
|
if (!result.axes) result.axes = [];
|
|
6910
|
+
const isPivot = isPivotChart(vseed);
|
|
6902
6911
|
const { visible = true, label, tick, title, grid, line, zero, nice, inverse, max, min, log, logBase = 10, autoFormat, numFormat = {} } = config;
|
|
6903
6912
|
const formatter = createNumFormatter(numFormat);
|
|
6904
6913
|
const percentFormatter = createNumFormatter({
|
|
6905
6914
|
type: 'percent'
|
|
6906
6915
|
});
|
|
6907
6916
|
const linearAxis = {
|
|
6917
|
+
...isPivot ? {
|
|
6918
|
+
range: {
|
|
6919
|
+
min,
|
|
6920
|
+
max
|
|
6921
|
+
}
|
|
6922
|
+
} : {
|
|
6923
|
+
min,
|
|
6924
|
+
max
|
|
6925
|
+
},
|
|
6908
6926
|
visible,
|
|
6909
6927
|
type: log ? 'log' : 'linear',
|
|
6910
6928
|
base: logBase,
|
|
@@ -6912,8 +6930,6 @@
|
|
|
6912
6930
|
nice,
|
|
6913
6931
|
zero: log ? false : zero,
|
|
6914
6932
|
inverse,
|
|
6915
|
-
max,
|
|
6916
|
-
min,
|
|
6917
6933
|
label: {
|
|
6918
6934
|
space: 8,
|
|
6919
6935
|
visible: label?.visible,
|
|
@@ -11285,29 +11301,33 @@
|
|
|
11285
11301
|
let foldInfo = {};
|
|
11286
11302
|
let unfoldInfo = {};
|
|
11287
11303
|
const allMeasures = findAllMeasures(measures);
|
|
11288
|
-
if (encoding.value?.length)
|
|
11289
|
-
const
|
|
11290
|
-
|
|
11291
|
-
|
|
11292
|
-
|
|
11293
|
-
|
|
11294
|
-
|
|
11295
|
-
|
|
11296
|
-
|
|
11297
|
-
|
|
11298
|
-
|
|
11299
|
-
|
|
11300
|
-
|
|
11301
|
-
|
|
11302
|
-
|
|
11303
|
-
|
|
11304
|
-
|
|
11305
|
-
|
|
11306
|
-
|
|
11307
|
-
|
|
11308
|
-
datum
|
|
11304
|
+
if (encoding.value?.length) {
|
|
11305
|
+
const boxPlotDataList = [];
|
|
11306
|
+
encoding.value.forEach((f)=>{
|
|
11307
|
+
const m = allMeasures.find((m)=>m.id === f);
|
|
11308
|
+
const boxPlotData = boxplot_boxplot(dataset, {
|
|
11309
|
+
field: f,
|
|
11310
|
+
groupField: [
|
|
11311
|
+
...encoding.x ?? [],
|
|
11312
|
+
...encoding.color ?? []
|
|
11313
|
+
],
|
|
11314
|
+
whiskers,
|
|
11315
|
+
outputNames: {
|
|
11316
|
+
q1: "__Q1__",
|
|
11317
|
+
q3: "__Q3__",
|
|
11318
|
+
lowerWhisker: LowerWhisker,
|
|
11319
|
+
upperWhisker: UpperWhisker,
|
|
11320
|
+
median: MedianMeasureId,
|
|
11321
|
+
outliers: OutliersMeasureId
|
|
11322
|
+
}
|
|
11323
|
+
});
|
|
11324
|
+
boxPlotData.forEach((datum)=>{
|
|
11325
|
+
datum[FoldMeasureId] = f;
|
|
11326
|
+
datum[FoldMeasureName] = m?.alias ?? f;
|
|
11327
|
+
});
|
|
11328
|
+
boxPlotDataList.push(...boxPlotData);
|
|
11309
11329
|
});
|
|
11310
|
-
const res = unfoldDimensions(
|
|
11330
|
+
const res = unfoldDimensions(boxPlotDataList, uniqDims, encoding, {
|
|
11311
11331
|
foldMeasureId: FoldMeasureId,
|
|
11312
11332
|
separator: "-",
|
|
11313
11333
|
colorItemAsId: false
|
|
@@ -11316,8 +11336,7 @@
|
|
|
11316
11336
|
newDatasets.push(d);
|
|
11317
11337
|
});
|
|
11318
11338
|
unfoldInfo = res.unfoldInfo;
|
|
11319
|
-
})
|
|
11320
|
-
else if (encoding.q1?.length && encoding.q3?.length && encoding.min?.length && encoding.max?.length && encoding.median?.length) {
|
|
11339
|
+
} else if (encoding.q1?.length && encoding.q3?.length && encoding.min?.length && encoding.max?.length && encoding.median?.length) {
|
|
11321
11340
|
const res = unfoldDimensions(dataset, uniqDims, encoding, {
|
|
11322
11341
|
foldMeasureId: FoldMeasureId,
|
|
11323
11342
|
separator: "-",
|
|
@@ -11375,30 +11394,35 @@
|
|
|
11375
11394
|
let newDatasets = [];
|
|
11376
11395
|
let foldInfo = {};
|
|
11377
11396
|
let unfoldInfo = {};
|
|
11378
|
-
|
|
11379
|
-
|
|
11380
|
-
const
|
|
11381
|
-
|
|
11382
|
-
|
|
11383
|
-
|
|
11384
|
-
|
|
11385
|
-
|
|
11386
|
-
|
|
11387
|
-
|
|
11388
|
-
|
|
11389
|
-
|
|
11390
|
-
|
|
11391
|
-
|
|
11392
|
-
|
|
11393
|
-
|
|
11394
|
-
|
|
11395
|
-
|
|
11396
|
-
|
|
11397
|
-
|
|
11398
|
-
|
|
11399
|
-
|
|
11397
|
+
const validEncodingIds = (encoding.value || []).filter((id)=>subMeasures.find((field)=>field.id === id));
|
|
11398
|
+
if (validEncodingIds.length) {
|
|
11399
|
+
const boxPlotDataList = [];
|
|
11400
|
+
validEncodingIds.forEach((f)=>{
|
|
11401
|
+
const m = subMeasures.find((m)=>m.id === f);
|
|
11402
|
+
const boxPlotData = boxplot_boxplot(dataset, {
|
|
11403
|
+
field: f,
|
|
11404
|
+
groupField: [
|
|
11405
|
+
...encoding.x ?? [],
|
|
11406
|
+
...encoding.color ?? [],
|
|
11407
|
+
...rowColumnFields.map((item)=>item.id)
|
|
11408
|
+
],
|
|
11409
|
+
whiskers,
|
|
11410
|
+
outputNames: {
|
|
11411
|
+
q1: "__Q1__",
|
|
11412
|
+
q3: "__Q3__",
|
|
11413
|
+
lowerWhisker: LowerWhisker,
|
|
11414
|
+
upperWhisker: UpperWhisker,
|
|
11415
|
+
median: MedianMeasureId,
|
|
11416
|
+
outliers: OutliersMeasureId
|
|
11417
|
+
}
|
|
11418
|
+
});
|
|
11419
|
+
boxPlotData.forEach((datum)=>{
|
|
11420
|
+
datum[FoldMeasureId] = f;
|
|
11421
|
+
datum[FoldMeasureName] = m?.alias ?? f;
|
|
11422
|
+
});
|
|
11423
|
+
boxPlotDataList.push(...boxPlotData);
|
|
11400
11424
|
});
|
|
11401
|
-
const res = unfoldDimensions(
|
|
11425
|
+
const res = unfoldDimensions(boxPlotDataList, uniqDims, encoding, {
|
|
11402
11426
|
foldMeasureId: FoldMeasureId,
|
|
11403
11427
|
separator: "-",
|
|
11404
11428
|
colorItemAsId: false
|
|
@@ -11407,8 +11431,7 @@
|
|
|
11407
11431
|
newDatasets.push(d);
|
|
11408
11432
|
});
|
|
11409
11433
|
unfoldInfo = res.unfoldInfo;
|
|
11410
|
-
})
|
|
11411
|
-
else if (encoding.q1?.length && encoding.q3?.length && encoding.min?.length && encoding.max?.length && encoding.median?.length) {
|
|
11434
|
+
} else if (encoding.q1?.length && encoding.q3?.length && encoding.min?.length && encoding.max?.length && encoding.median?.length) {
|
|
11412
11435
|
const res = unfoldDimensions(dataset, uniqDims, encoding, {
|
|
11413
11436
|
foldMeasureId: FoldMeasureId,
|
|
11414
11437
|
separator: "-",
|