@visactor/vseed 0.1.46 → 0.1.48

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.
@@ -27,30 +27,35 @@ const pivotReshapeWithBoxplotEncoding = (advancedVSeed, context)=>{
27
27
  let newDatasets = [];
28
28
  let foldInfo = {};
29
29
  let unfoldInfo = {};
30
- if (encoding.value?.length) encoding.value.forEach((f)=>{
31
- const m = subMeasures.find((m)=>m.id === f);
32
- const boxPlotData = boxplot(dataset, {
33
- field: f,
34
- groupField: [
35
- ...encoding.x ?? [],
36
- ...encoding.color ?? [],
37
- ...rowColumnFields.map((item)=>item.id)
38
- ],
39
- whiskers,
40
- outputNames: {
41
- q1: Q1MeasureValue,
42
- q3: Q3MeasureValue,
43
- lowerWhisker: LowerWhisker,
44
- upperWhisker: UpperWhisker,
45
- median: MedianMeasureId,
46
- outliers: OutliersMeasureId
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
- boxPlotData.forEach((datum)=>{
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,
@@ -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 (encoding.value?.length) {\n encoding.value.forEach((f) => {\n const m = subMeasures.find((m) => m.id === f)\n const boxPlotData = boxplot(dataset, {\n field: f,\n groupField: [\n ...(encoding.x ?? []),\n ...(encoding.color ?? []),\n ...rowColumnFields.map((item: Dimension) => item.id),\n ] as string[],\n whiskers,\n outputNames: {\n q1: Q1MeasureValue,\n q3: Q3MeasureValue,\n 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 const res = unfoldDimensions(boxPlotData, uniqDims, encoding as Encoding, {\n foldMeasureId: FoldMeasureId,\n separator: Separator,\n colorItemAsId: false,\n })\n\n res.dataset.forEach((d) => {\n newDatasets.push(d)\n })\n unfoldInfo = res.unfoldInfo\n })\n } else if (\n encoding.q1?.length &&\n encoding.q3?.length &&\n encoding.min?.length &&\n encoding.max?.length &&\n encoding.median?.length\n ) {\n const res = unfoldDimensions(dataset, uniqDims, encoding as Encoding, {\n foldMeasureId: FoldMeasureId,\n separator: Separator,\n colorItemAsId: false,\n })\n\n res.dataset.forEach((datum) => {\n datum[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","f","m","boxPlotData","boxplot","Q1MeasureValue","Q3MeasureValue","LowerWhisker","UpperWhisker","MedianMeasureId","OutliersMeasureId","datum","FoldMeasureId","FoldMeasureName","res","unfoldDimensions","Separator","d","reshapeInfo"],"mappings":"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"}
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) encoding.value.forEach((f)=>{
21
- const m = allMeasures.find((m)=>m.id === f);
22
- const boxPlotData = boxplot(dataset, {
23
- field: f,
24
- groupField: [
25
- ...encoding.x ?? [],
26
- ...encoding.color ?? []
27
- ],
28
- whiskers,
29
- outputNames: {
30
- q1: Q1MeasureValue,
31
- q3: Q3MeasureValue,
32
- lowerWhisker: LowerWhisker,
33
- upperWhisker: UpperWhisker,
34
- median: MedianMeasureId,
35
- outliers: OutliersMeasureId
36
- }
37
- });
38
- boxPlotData.forEach((datum)=>{
39
- datum[FoldMeasureId] = f;
40
- datum[FoldMeasureName] = m?.alias ?? f;
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(boxPlotData, uniqDims, encoding, {
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 const res = unfoldDimensions(boxPlotData, uniqDims, encoding as Encoding, {\n foldMeasureId: FoldMeasureId,\n separator: Separator,\n colorItemAsId: false,\n })\n\n res.dataset.forEach((d) => {\n newDatasets.push(d)\n })\n unfoldInfo = res.unfoldInfo\n })\n } else if (\n encoding.q1?.length &&\n encoding.q3?.length &&\n encoding.min?.length &&\n encoding.max?.length &&\n encoding.median?.length\n ) {\n const res = unfoldDimensions(dataset, uniqDims, encoding as Encoding, {\n foldMeasureId: FoldMeasureId,\n separator: Separator,\n colorItemAsId: false,\n })\n\n res.dataset.forEach((datum) => {\n datum[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","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,QAClBA,SAAS,KAAK,CAAC,OAAO,CAAC,CAACa;QACtB,MAAMC,IAAIH,YAAY,IAAI,CAAC,CAACG,IAAMA,EAAE,EAAE,KAAKD;QAC3C,MAAME,cAAcC,QAAQlB,SAAS;YACnC,OAAOe;YACP,YAAY;mBAAKb,SAAS,CAAC,IAAI,EAAE;mBAAOA,SAAS,KAAK,IAAI,EAAE;aAAE;YAC9DO;YACA,aAAa;gBACX,IAAIU;gBACJ,IAAIC;gBACJ,cAAcC;gBACd,cAAcC;gBACd,QAAQC;gBACR,UAAUC;YACZ;QACF;QAEAP,YAAY,OAAO,CAAC,CAACQ;YACnBA,KAAK,CAACC,cAAc,GAAGX;YACvBU,KAAK,CAACE,gBAAgB,GAAGX,GAAG,SAASD;QACvC;QAEA,MAAMa,MAAMC,iBAAiBZ,aAAaX,UAAUJ,UAAsB;YACxE,eAAewB;YACf,WAAWI;YACX,eAAe;QACjB;QAEAF,IAAI,OAAO,CAAC,OAAO,CAAC,CAACG;YACnBrB,YAAY,IAAI,CAACqB;QACnB;QACAnB,aAAagB,IAAI,UAAU;IAC7B;SACK,IACL1B,SAAS,EAAE,EAAE,UACbA,SAAS,EAAE,EAAE,UACbA,SAAS,GAAG,EAAE,UACdA,SAAS,GAAG,EAAE,UACdA,SAAS,MAAM,EAAE,QACjB;QACA,MAAM0B,MAAMC,iBAAiB7B,SAASM,UAAUJ,UAAsB;YACpE,eAAewB;YACf,WAAWI;YACX,eAAe;QACjB;QAEAF,IAAI,OAAO,CAAC,OAAO,CAAC,CAACH;YACnBA,KAAK,CAACH,aAAa,GAAGG,KAAK,CAACvB,SAAS,GAAI,CAAC,EAAE,CAAC;YAC7CuB,KAAK,CAACJ,aAAa,GAAGI,KAAK,CAACvB,SAAS,GAAI,CAAC,EAAE,CAAC;YAC7CuB,KAAK,CAACN,eAAe,GAAGM,KAAK,CAACvB,SAAS,EAAG,CAAC,EAAE,CAAC;YAC9CuB,KAAK,CAACL,eAAe,GAAGK,KAAK,CAACvB,SAAS,EAAG,CAAC,EAAE,CAAC;YAC9CuB,KAAK,CAACF,gBAAgB,GAAGE,KAAK,CAACvB,SAAS,MAAO,CAAC,EAAE,CAAC;QACrD;QAEAQ,cAAckB,IAAI,OAAO;QACzBjB,WAAW,CAAC;QACZC,aAAagB,IAAI,UAAU;IAC7B;IAEA,OAAO;QACL,GAAG9B,MAAM;QACT,SAASY;QACT,oBAAoB;YAClB;gBACE,IAAIsB,OAAO/B;gBACX,OAAO;gBACPU;gBACAC;YACF;SACD;QACDP;QACAD;IACF;AACF"}
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 max,\n min,\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","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":";;;AAaO,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;IAGlB,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,GAAGf;IAEJ,MAAMgB,YAAYC,mBAAmBF;IACrC,MAAMG,mBAAmBD,mBAAmB;QAC1C,MAAM;IACR;IAEA,MAAME,aAAa;QACjBlB;QACA,MAAMW,MAAM,QAAQ;QACpB,MAAMC;QACN,QAAQ;QACRL;QACA,MAAMI,MAAM,QAAQL;QACpBE;QACAC;QACAC;QACA,OAAO;YACL,OAAOS;YACP,SAASlB,OAAO;YAChB,cAAc,CAACmB;gBACb,IAAIC,aAAa3B,UAAU4B,gBAAgB5B,UAAU6B,cAAc7B,QACjE,OAAO8B,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,iBAAiB7B,UAAUD,YAAYD,SAAS,CAAC;YAC3E,OAAO;gBACL,MAAMQ,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;IAEAnC,OAAO,IAAI,GAAG;WAAIA,OAAO,IAAI;QAAE0B;KAAW;IAE1C,OAAO1B;AACT"}
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 max,\n min,\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","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":";;;AAaO,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;IAGlB,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,GAAGf;IAEJ,MAAMgB,YAAYC,mBAAmBF;IACrC,MAAMG,mBAAmBD,mBAAmB;QAC1C,MAAM;IACR;IAEA,MAAME,aAAa;QACjBlB;QACA,MAAMW,MAAM,QAAQ;QACpB,MAAMC;QACN,QAAQ;QACRL;QACA,MAAMI,MAAM,QAAQL;QACpBE;QACAC;QACAC;QACA,OAAO;YACL,OAAOS;YACP,SAASlB,OAAO;YAChB,cAAc,CAACmB;gBACb,IAAIC,aAAa3B,UAAU4B,gBAAgB5B,UAAU6B,cAAc7B,QACjE,OAAO8B,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,iBAAiB9B,UAAUC,YAAYC,SAAS,CAAC;YAC3E,OAAO;gBACL,MAAMK,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;IAEAnC,OAAO,IAAI,GAAG;WAAIA,OAAO,IAAI;QAAE0B;KAAW;IAE1C,OAAO1B;AACT"}
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: ()=>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 (isPivot(vseed)) return true;
627
+ if (chatType_isPivot(vseed)) return true;
628
628
  return isCombination(vseed);
629
629
  };
630
- const isPivot = (vseed)=>{
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 = !isPivot(vseed) && isCombination(vseed);
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) encoding.value.forEach((f)=>{
11289
- const m = allMeasures.find((m)=>m.id === f);
11290
- const boxPlotData = boxplot_boxplot(dataset, {
11291
- field: f,
11292
- groupField: [
11293
- ...encoding.x ?? [],
11294
- ...encoding.color ?? []
11295
- ],
11296
- whiskers,
11297
- outputNames: {
11298
- q1: "__Q1__",
11299
- q3: "__Q3__",
11300
- lowerWhisker: LowerWhisker,
11301
- upperWhisker: UpperWhisker,
11302
- median: MedianMeasureId,
11303
- outliers: OutliersMeasureId
11304
- }
11305
- });
11306
- boxPlotData.forEach((datum)=>{
11307
- datum[FoldMeasureId] = f;
11308
- datum[FoldMeasureName] = m?.alias ?? f;
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(boxPlotData, uniqDims, encoding, {
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
- if (encoding.value?.length) encoding.value.forEach((f)=>{
11379
- const m = subMeasures.find((m)=>m.id === f);
11380
- const boxPlotData = boxplot_boxplot(dataset, {
11381
- field: f,
11382
- groupField: [
11383
- ...encoding.x ?? [],
11384
- ...encoding.color ?? [],
11385
- ...rowColumnFields.map((item)=>item.id)
11386
- ],
11387
- whiskers,
11388
- outputNames: {
11389
- q1: "__Q1__",
11390
- q3: "__Q3__",
11391
- lowerWhisker: LowerWhisker,
11392
- upperWhisker: UpperWhisker,
11393
- median: MedianMeasureId,
11394
- outliers: OutliersMeasureId
11395
- }
11396
- });
11397
- boxPlotData.forEach((datum)=>{
11398
- datum[FoldMeasureId] = f;
11399
- datum[FoldMeasureName] = m?.alias ?? f;
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(boxPlotData, uniqDims, encoding, {
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: "-",