@visactor/vseed 0.2.6 → 0.2.7

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.
Files changed (84) hide show
  1. package/dist/cjs/index.cjs +1 -1
  2. package/dist/cjs/index.cjs.map +1 -1
  3. package/dist/esm/pipeline/advanced/chart/pipeline/area.js +3 -3
  4. package/dist/esm/pipeline/advanced/chart/pipeline/area.js.map +1 -1
  5. package/dist/esm/pipeline/advanced/chart/pipeline/areaPercent.js +3 -3
  6. package/dist/esm/pipeline/advanced/chart/pipeline/areaPercent.js.map +1 -1
  7. package/dist/esm/pipeline/advanced/chart/pipeline/bar.js +3 -3
  8. package/dist/esm/pipeline/advanced/chart/pipeline/bar.js.map +1 -1
  9. package/dist/esm/pipeline/advanced/chart/pipeline/barParallel.js +3 -3
  10. package/dist/esm/pipeline/advanced/chart/pipeline/barParallel.js.map +1 -1
  11. package/dist/esm/pipeline/advanced/chart/pipeline/barPercent.js +3 -3
  12. package/dist/esm/pipeline/advanced/chart/pipeline/barPercent.js.map +1 -1
  13. package/dist/esm/pipeline/advanced/chart/pipeline/boxplot.js +3 -3
  14. package/dist/esm/pipeline/advanced/chart/pipeline/boxplot.js.map +1 -1
  15. package/dist/esm/pipeline/advanced/chart/pipeline/column.js +3 -3
  16. package/dist/esm/pipeline/advanced/chart/pipeline/column.js.map +1 -1
  17. package/dist/esm/pipeline/advanced/chart/pipeline/columnParallel.js +3 -3
  18. package/dist/esm/pipeline/advanced/chart/pipeline/columnParallel.js.map +1 -1
  19. package/dist/esm/pipeline/advanced/chart/pipeline/columnPercent.js +3 -3
  20. package/dist/esm/pipeline/advanced/chart/pipeline/columnPercent.js.map +1 -1
  21. package/dist/esm/pipeline/advanced/chart/pipeline/dualAxis.js +3 -3
  22. package/dist/esm/pipeline/advanced/chart/pipeline/dualAxis.js.map +1 -1
  23. package/dist/esm/pipeline/advanced/chart/pipeline/funnel.js +3 -3
  24. package/dist/esm/pipeline/advanced/chart/pipeline/funnel.js.map +1 -1
  25. package/dist/esm/pipeline/advanced/chart/pipeline/heatmap.js +3 -3
  26. package/dist/esm/pipeline/advanced/chart/pipeline/heatmap.js.map +1 -1
  27. package/dist/esm/pipeline/advanced/chart/pipeline/histogram.js +3 -3
  28. package/dist/esm/pipeline/advanced/chart/pipeline/histogram.js.map +1 -1
  29. package/dist/esm/pipeline/advanced/chart/pipeline/line.js +3 -3
  30. package/dist/esm/pipeline/advanced/chart/pipeline/line.js.map +1 -1
  31. package/dist/esm/pipeline/advanced/chart/pipeline/radar.js +3 -3
  32. package/dist/esm/pipeline/advanced/chart/pipeline/radar.js.map +1 -1
  33. package/dist/esm/pipeline/advanced/chart/pipeline/rose.js +3 -3
  34. package/dist/esm/pipeline/advanced/chart/pipeline/rose.js.map +1 -1
  35. package/dist/esm/pipeline/advanced/chart/pipeline/roseParallel.js +3 -3
  36. package/dist/esm/pipeline/advanced/chart/pipeline/roseParallel.js.map +1 -1
  37. package/dist/esm/pipeline/advanced/chart/pipeline/scatter.js +3 -3
  38. package/dist/esm/pipeline/advanced/chart/pipeline/scatter.js.map +1 -1
  39. package/dist/esm/pipeline/advanced/chart/pipes/encoding/bar.js +8 -7
  40. package/dist/esm/pipeline/advanced/chart/pipes/encoding/bar.js.map +1 -1
  41. package/dist/esm/pipeline/advanced/chart/pipes/encoding/boxplot.js +8 -7
  42. package/dist/esm/pipeline/advanced/chart/pipes/encoding/boxplot.js.map +1 -1
  43. package/dist/esm/pipeline/advanced/chart/pipes/encoding/color/addColorToEncoding.d.ts +7 -0
  44. package/dist/esm/pipeline/advanced/chart/pipes/encoding/color/addColorToEncoding.js +9 -1
  45. package/dist/esm/pipeline/advanced/chart/pipes/encoding/color/addColorToEncoding.js.map +1 -1
  46. package/dist/esm/pipeline/advanced/chart/pipes/encoding/column.js +8 -7
  47. package/dist/esm/pipeline/advanced/chart/pipes/encoding/column.js.map +1 -1
  48. package/dist/esm/pipeline/advanced/chart/pipes/encoding/dualAxis.js +16 -7
  49. package/dist/esm/pipeline/advanced/chart/pipes/encoding/dualAxis.js.map +1 -1
  50. package/dist/esm/pipeline/advanced/chart/pipes/encoding/funnel.js +7 -6
  51. package/dist/esm/pipeline/advanced/chart/pipes/encoding/funnel.js.map +1 -1
  52. package/dist/esm/pipeline/advanced/chart/pipes/encoding/heatmap.js.map +1 -1
  53. package/dist/esm/pipeline/advanced/chart/pipes/encoding/line.js +8 -6
  54. package/dist/esm/pipeline/advanced/chart/pipes/encoding/line.js.map +1 -1
  55. package/dist/esm/pipeline/advanced/chart/pipes/encoding/radar.js +8 -6
  56. package/dist/esm/pipeline/advanced/chart/pipes/encoding/radar.js.map +1 -1
  57. package/dist/esm/pipeline/advanced/chart/pipes/encoding/rose.js +8 -7
  58. package/dist/esm/pipeline/advanced/chart/pipes/encoding/rose.js.map +1 -1
  59. package/dist/esm/pipeline/advanced/chart/pipes/measures/buildMeasuresForDualAxis.js +48 -23
  60. package/dist/esm/pipeline/advanced/chart/pipes/measures/buildMeasuresForDualAxis.js.map +1 -1
  61. package/dist/esm/pipeline/advanced/chart/pipes/measures/buildMeasuresForScatter.js +47 -23
  62. package/dist/esm/pipeline/advanced/chart/pipes/measures/buildMeasuresForScatter.js.map +1 -1
  63. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithDualEncoding.js +2 -2
  64. package/dist/esm/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithDualEncoding.js.map +1 -1
  65. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithDualEncoding.js +1 -1
  66. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithDualEncoding.js.map +1 -1
  67. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithScatterEncoding.js +1 -1
  68. package/dist/esm/pipeline/advanced/chart/pipes/reshape/reshapeWithScatterEncoding.js.map +1 -1
  69. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipElement.js.map +1 -1
  70. package/dist/esm/pipeline/spec/table/pipeline/pivotTable.js +2 -2
  71. package/dist/esm/pipeline/spec/table/pipeline/pivotTable.js.map +1 -1
  72. package/dist/esm/pipeline/spec/table/pipeline/table.js +2 -2
  73. package/dist/esm/pipeline/spec/table/pipeline/table.js.map +1 -1
  74. package/dist/esm/pipeline/spec/table/pipes/cellStyle/pivot.js +16 -4
  75. package/dist/esm/pipeline/spec/table/pipes/cellStyle/pivot.js.map +1 -1
  76. package/dist/esm/pipeline/spec/table/pipes/cellStyle/table.js +16 -4
  77. package/dist/esm/pipeline/spec/table/pipes/cellStyle/table.js.map +1 -1
  78. package/dist/esm/pipeline/spec/table/pipes/indicators/pivotIndicators.js.map +1 -1
  79. package/dist/esm/pipeline/spec/table/pipes/theme/frameStyle.d.ts +1 -1
  80. package/dist/esm/pipeline/spec/table/pipes/theme/frameStyle.js +6 -2
  81. package/dist/esm/pipeline/spec/table/pipes/theme/frameStyle.js.map +1 -1
  82. package/dist/umd/index.js +435 -339
  83. package/dist/umd/index.js.map +1 -1
  84. package/package.json +2 -2
@@ -1,12 +1,13 @@
1
1
  import { unique } from "remeda";
2
2
  import { MeasureId } from "../../../../../dataReshape/index.js";
3
- import { findAllMeasures } from "../../../../utils/index.js";
3
+ import { findAllMeasures, hasMultipleMeasureInSingleView } from "../../../../utils/index.js";
4
4
  import { addColorToEncoding } from "./color/index.js";
5
+ import { addDefaultColorEncoding } from "./color/addColorToEncoding.js";
5
6
  const defaultEncodingForRadar = (advancedVSeed)=>{
6
7
  const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
7
8
  const measures = findAllMeasures(vseedMeasures);
8
9
  const encoding = {};
9
- generateDefaultDimensionEncoding(dimensions, encoding);
10
+ generateDefaultDimensionEncoding(dimensions, encoding, hasMultipleMeasureInSingleView(vseedMeasures));
10
11
  generateDefaultMeasureEncoding(measures, encoding);
11
12
  return {
12
13
  ...advancedVSeed,
@@ -19,8 +20,9 @@ const encodingForRadar = (advancedVSeed)=>{
19
20
  const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
20
21
  const hasMeasureEncoding = measures.some((item)=>item.encoding);
21
22
  const encoding = {};
22
- if (hasDimensionEncoding) generateDimensionEncoding(dimensions, encoding, measures.length > 1);
23
- else generateDefaultDimensionEncoding(dimensions, encoding);
23
+ const hasMulti = hasMultipleMeasureInSingleView(vseedMeasures);
24
+ if (hasDimensionEncoding) generateDimensionEncoding(dimensions, encoding, hasMulti);
25
+ else generateDefaultDimensionEncoding(dimensions, encoding, hasMulti);
24
26
  if (hasMeasureEncoding) generateMeasureEncoding(measures, encoding);
25
27
  else generateDefaultMeasureEncoding(measures, encoding);
26
28
  return {
@@ -28,10 +30,10 @@ const encodingForRadar = (advancedVSeed)=>{
28
30
  encoding
29
31
  };
30
32
  };
31
- const generateDefaultDimensionEncoding = (dimensions, encoding)=>{
33
+ const generateDefaultDimensionEncoding = (dimensions, encoding, isMultiMeasure)=>{
32
34
  const uniqueDimIds = unique(dimensions.map((d)=>d.id));
33
35
  encoding.angle = uniqueDimIds.slice(0, 1);
34
- encoding.color = uniqueDimIds.slice(1);
36
+ addDefaultColorEncoding(uniqueDimIds, encoding, isMultiMeasure);
35
37
  encoding.tooltip = uniqueDimIds.filter((d)=>d !== MeasureId);
36
38
  encoding.detail = [];
37
39
  encoding.label = [];
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/advanced/chart/pipes/encoding/radar.js","sources":["../../../../../../../src/pipeline/advanced/chart/pipes/encoding/radar.ts"],"sourcesContent":["import { unique } from 'remeda'\nimport { MeasureId } from 'src/dataReshape'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Dimension, Dimensions, Encoding, Measure, Measures } from 'src/types'\nimport { addColorToEncoding } from './color'\n\nexport const defaultEncodingForRadar: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n const encoding: Encoding = {}\n generateDefaultDimensionEncoding(dimensions, encoding)\n generateDefaultMeasureEncoding(measures, encoding)\n return { ...advancedVSeed, encoding }\n}\n\nexport const encodingForRadar: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n\n const hasDimensionEncoding = dimensions.some((item: Dimension) => item.encoding)\n const hasMeasureEncoding = measures.some((item: Measure) => item.encoding)\n const encoding: Encoding = {}\n\n if (hasDimensionEncoding) {\n generateDimensionEncoding(dimensions, encoding, measures.length > 1)\n } else {\n generateDefaultDimensionEncoding(dimensions, encoding)\n }\n\n if (hasMeasureEncoding) {\n generateMeasureEncoding(measures, encoding)\n } else {\n generateDefaultMeasureEncoding(measures, encoding)\n }\n\n return { ...advancedVSeed, encoding }\n}\n\n/**\n * --------------------维度--------------------\n */\nconst generateDefaultDimensionEncoding = (dimensions: Dimensions, encoding: Encoding) => {\n const uniqueDimIds = unique(dimensions.map((d) => d.id))\n encoding.angle = uniqueDimIds.slice(0, 1)\n encoding.color = uniqueDimIds.slice(1)\n encoding.tooltip = uniqueDimIds.filter((d) => d !== MeasureId) // 展示指标名称之外的所有维度\n encoding.detail = [] // 雷达图暂不支持细分\n encoding.label = []\n encoding.row = []\n encoding.column = []\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding, isMultiMeasure: boolean) => {\n // angle\n encoding.angle = unique(dimensions.filter((item) => item.encoding === 'angle').map((item) => item.id))\n if (encoding.angle.length === 0) {\n encoding.angle = [dimensions[0].id]\n }\n\n // color\n addColorToEncoding(dimensions, encoding, isMultiMeasure)\n\n // detail\n encoding.detail = []\n if (encoding.detail.length === 0) {\n encoding.detail = [MeasureId]\n }\n\n // tooltip\n encoding.tooltip = unique(dimensions.map((item) => item.id))\n encoding.tooltip = encoding.tooltip.filter((d) => d !== MeasureId)\n\n // label\n encoding.label = unique(dimensions.filter((item) => item.encoding === 'label').map((item) => item.id))\n encoding.label = encoding.label.filter((d) => d !== MeasureId)\n}\n/**\n * --------------------指标--------------------\n */\nconst generateDefaultMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.radius = unique(\n measures.filter((item) => item.encoding === 'radius' || !item.encoding).map((item) => item.id),\n )\n}\nconst generateMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n // radius\n encoding.radius = unique(\n measures.filter((item) => item.encoding === 'radius' || !item.encoding).map((item) => item.id),\n )\n\n // color\n const color = unique(measures.filter((item) => item.encoding === 'color').map((item) => item.id))\n if (color.length > 0) {\n encoding.color = color\n }\n\n // label\n const label = unique(measures.filter((item) => item.encoding === 'label').map((item) => item.id))\n encoding.label = unique([...(encoding.label || []), ...label])\n\n // tooltip\n const tooltip = unique(measures.filter((item) => item.encoding === 'tooltip').map((item) => item.id))\n encoding.tooltip = unique([...(encoding.tooltip || []), ...label, ...tooltip])\n}\n"],"names":["defaultEncodingForRadar","advancedVSeed","vseedMeasures","dimensions","measures","findAllMeasures","encoding","generateDefaultDimensionEncoding","generateDefaultMeasureEncoding","encodingForRadar","hasDimensionEncoding","item","hasMeasureEncoding","generateDimensionEncoding","generateMeasureEncoding","uniqueDimIds","unique","d","MeasureId","isMultiMeasure","addColorToEncoding","color","label","tooltip"],"mappings":"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"}
1
+ {"version":3,"file":"pipeline/advanced/chart/pipes/encoding/radar.js","sources":["../../../../../../../src/pipeline/advanced/chart/pipes/encoding/radar.ts"],"sourcesContent":["import { unique } from 'remeda'\nimport { MeasureId } from 'src/dataReshape'\nimport { findAllMeasures, hasMultipleMeasureInSingleView } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Dimension, Dimensions, Encoding, Measure, Measures } from 'src/types'\nimport { addColorToEncoding } from './color'\nimport { addDefaultColorEncoding } from './color/addColorToEncoding'\n\nexport const defaultEncodingForRadar: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n const encoding: Encoding = {}\n generateDefaultDimensionEncoding(dimensions, encoding, hasMultipleMeasureInSingleView(vseedMeasures))\n generateDefaultMeasureEncoding(measures, encoding)\n return { ...advancedVSeed, encoding }\n}\n\nexport const encodingForRadar: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n\n const hasDimensionEncoding = dimensions.some((item: Dimension) => item.encoding)\n const hasMeasureEncoding = measures.some((item: Measure) => item.encoding)\n const encoding: Encoding = {}\n const hasMulti = hasMultipleMeasureInSingleView(vseedMeasures)\n\n if (hasDimensionEncoding) {\n generateDimensionEncoding(dimensions, encoding, hasMulti)\n } else {\n generateDefaultDimensionEncoding(dimensions, encoding, hasMulti)\n }\n\n if (hasMeasureEncoding) {\n generateMeasureEncoding(measures, encoding)\n } else {\n generateDefaultMeasureEncoding(measures, encoding)\n }\n\n return { ...advancedVSeed, encoding }\n}\n\n/**\n * --------------------维度--------------------\n */\nconst generateDefaultDimensionEncoding = (dimensions: Dimensions, encoding: Encoding, isMultiMeasure: boolean) => {\n const uniqueDimIds: string[] = unique(dimensions.map((d) => d.id))\n encoding.angle = uniqueDimIds.slice(0, 1)\n addDefaultColorEncoding(uniqueDimIds, encoding, isMultiMeasure)\n encoding.tooltip = uniqueDimIds.filter((d) => d !== MeasureId) // 展示指标名称之外的所有维度\n encoding.detail = [] // 雷达图暂不支持细分\n encoding.label = []\n encoding.row = []\n encoding.column = []\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding, isMultiMeasure: boolean) => {\n // angle\n encoding.angle = unique(dimensions.filter((item) => item.encoding === 'angle').map((item) => item.id))\n if (encoding.angle.length === 0) {\n encoding.angle = [dimensions[0].id]\n }\n\n // color\n addColorToEncoding(dimensions, encoding, isMultiMeasure)\n\n // detail\n encoding.detail = []\n if (encoding.detail.length === 0) {\n encoding.detail = [MeasureId]\n }\n\n // tooltip\n encoding.tooltip = unique(dimensions.map((item) => item.id))\n encoding.tooltip = encoding.tooltip.filter((d) => d !== MeasureId)\n\n // label\n encoding.label = unique(dimensions.filter((item) => item.encoding === 'label').map((item) => item.id))\n encoding.label = encoding.label.filter((d) => d !== MeasureId)\n}\n/**\n * --------------------指标--------------------\n */\nconst generateDefaultMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.radius = unique(\n measures.filter((item) => item.encoding === 'radius' || !item.encoding).map((item) => item.id),\n )\n}\nconst generateMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n // radius\n encoding.radius = unique(\n measures.filter((item) => item.encoding === 'radius' || !item.encoding).map((item) => item.id),\n )\n\n // color\n const color = unique(measures.filter((item) => item.encoding === 'color').map((item) => item.id))\n if (color.length > 0) {\n encoding.color = color\n }\n\n // label\n const label = unique(measures.filter((item) => item.encoding === 'label').map((item) => item.id))\n encoding.label = unique([...(encoding.label || []), ...label])\n\n // tooltip\n const tooltip = unique(measures.filter((item) => item.encoding === 'tooltip').map((item) => item.id))\n encoding.tooltip = unique([...(encoding.tooltip || []), ...label, ...tooltip])\n}\n"],"names":["defaultEncodingForRadar","advancedVSeed","vseedMeasures","dimensions","measures","findAllMeasures","encoding","generateDefaultDimensionEncoding","hasMultipleMeasureInSingleView","generateDefaultMeasureEncoding","encodingForRadar","hasDimensionEncoding","item","hasMeasureEncoding","hasMulti","generateDimensionEncoding","generateMeasureEncoding","isMultiMeasure","uniqueDimIds","unique","d","addDefaultColorEncoding","MeasureId","addColorToEncoding","color","label","tooltip"],"mappings":";;;;;AAOO,MAAMA,0BAAwC,CAACC;IACpD,MAAM,EAAE,UAAUC,gBAAgB,EAAE,EAAEC,aAAa,EAAE,EAAE,GAAGF;IAC1D,MAAMG,WAAWC,gBAAgBH;IACjC,MAAMI,WAAqB,CAAC;IAC5BC,iCAAiCJ,YAAYG,UAAUE,+BAA+BN;IACtFO,+BAA+BL,UAAUE;IACzC,OAAO;QAAE,GAAGL,aAAa;QAAEK;IAAS;AACtC;AAEO,MAAMI,mBAAiC,CAACT;IAC7C,MAAM,EAAE,UAAUC,gBAAgB,EAAE,EAAEC,aAAa,EAAE,EAAE,GAAGF;IAC1D,MAAMG,WAAWC,gBAAgBH;IAEjC,MAAMS,uBAAuBR,WAAW,IAAI,CAAC,CAACS,OAAoBA,KAAK,QAAQ;IAC/E,MAAMC,qBAAqBT,SAAS,IAAI,CAAC,CAACQ,OAAkBA,KAAK,QAAQ;IACzE,MAAMN,WAAqB,CAAC;IAC5B,MAAMQ,WAAWN,+BAA+BN;IAEhD,IAAIS,sBACFI,0BAA0BZ,YAAYG,UAAUQ;SAEhDP,iCAAiCJ,YAAYG,UAAUQ;IAGzD,IAAID,oBACFG,wBAAwBZ,UAAUE;SAElCG,+BAA+BL,UAAUE;IAG3C,OAAO;QAAE,GAAGL,aAAa;QAAEK;IAAS;AACtC;AAKA,MAAMC,mCAAmC,CAACJ,YAAwBG,UAAoBW;IACpF,MAAMC,eAAyBC,OAAOhB,WAAW,GAAG,CAAC,CAACiB,IAAMA,EAAE,EAAE;IAChEd,SAAS,KAAK,GAAGY,aAAa,KAAK,CAAC,GAAG;IACvCG,wBAAwBH,cAAcZ,UAAUW;IAChDX,SAAS,OAAO,GAAGY,aAAa,MAAM,CAAC,CAACE,IAAMA,MAAME;IACpDhB,SAAS,MAAM,GAAG,EAAE;IACpBA,SAAS,KAAK,GAAG,EAAE;IACnBA,SAAS,GAAG,GAAG,EAAE;IACjBA,SAAS,MAAM,GAAG,EAAE;AACtB;AACA,MAAMS,4BAA4B,CAACZ,YAAwBG,UAAoBW;IAE7EX,SAAS,KAAK,GAAGa,OAAOhB,WAAW,MAAM,CAAC,CAACS,OAASA,AAAkB,YAAlBA,KAAK,QAAQ,EAAc,GAAG,CAAC,CAACA,OAASA,KAAK,EAAE;IACpG,IAAIN,AAA0B,MAA1BA,SAAS,KAAK,CAAC,MAAM,EACvBA,SAAS,KAAK,GAAG;QAACH,UAAU,CAAC,EAAE,CAAC,EAAE;KAAC;IAIrCoB,mBAAmBpB,YAAYG,UAAUW;IAGzCX,SAAS,MAAM,GAAG,EAAE;IACpB,IAAIA,AAA2B,MAA3BA,SAAS,MAAM,CAAC,MAAM,EACxBA,SAAS,MAAM,GAAG;QAACgB;KAAU;IAI/BhB,SAAS,OAAO,GAAGa,OAAOhB,WAAW,GAAG,CAAC,CAACS,OAASA,KAAK,EAAE;IAC1DN,SAAS,OAAO,GAAGA,SAAS,OAAO,CAAC,MAAM,CAAC,CAACc,IAAMA,MAAME;IAGxDhB,SAAS,KAAK,GAAGa,OAAOhB,WAAW,MAAM,CAAC,CAACS,OAASA,AAAkB,YAAlBA,KAAK,QAAQ,EAAc,GAAG,CAAC,CAACA,OAASA,KAAK,EAAE;IACpGN,SAAS,KAAK,GAAGA,SAAS,KAAK,CAAC,MAAM,CAAC,CAACc,IAAMA,MAAME;AACtD;AAIA,MAAMb,iCAAiC,CAACL,UAAoBE;IAC1DA,SAAS,MAAM,GAAGa,OAChBf,SAAS,MAAM,CAAC,CAACQ,OAASA,AAAkB,aAAlBA,KAAK,QAAQ,IAAiB,CAACA,KAAK,QAAQ,EAAE,GAAG,CAAC,CAACA,OAASA,KAAK,EAAE;AAEjG;AACA,MAAMI,0BAA0B,CAACZ,UAAoBE;IAEnDA,SAAS,MAAM,GAAGa,OAChBf,SAAS,MAAM,CAAC,CAACQ,OAASA,AAAkB,aAAlBA,KAAK,QAAQ,IAAiB,CAACA,KAAK,QAAQ,EAAE,GAAG,CAAC,CAACA,OAASA,KAAK,EAAE;IAI/F,MAAMY,QAAQL,OAAOf,SAAS,MAAM,CAAC,CAACQ,OAASA,AAAkB,YAAlBA,KAAK,QAAQ,EAAc,GAAG,CAAC,CAACA,OAASA,KAAK,EAAE;IAC/F,IAAIY,MAAM,MAAM,GAAG,GACjBlB,SAAS,KAAK,GAAGkB;IAInB,MAAMC,QAAQN,OAAOf,SAAS,MAAM,CAAC,CAACQ,OAASA,AAAkB,YAAlBA,KAAK,QAAQ,EAAc,GAAG,CAAC,CAACA,OAASA,KAAK,EAAE;IAC/FN,SAAS,KAAK,GAAGa,OAAO;WAAKb,SAAS,KAAK,IAAI,EAAE;WAAMmB;KAAM;IAG7D,MAAMC,UAAUP,OAAOf,SAAS,MAAM,CAAC,CAACQ,OAASA,AAAkB,cAAlBA,KAAK,QAAQ,EAAgB,GAAG,CAAC,CAACA,OAASA,KAAK,EAAE;IACnGN,SAAS,OAAO,GAAGa,OAAO;WAAKb,SAAS,OAAO,IAAI,EAAE;WAAMmB;WAAUC;KAAQ;AAC/E"}
@@ -1,12 +1,13 @@
1
1
  import { unique } from "remeda";
2
2
  import { MeasureId } from "../../../../../dataReshape/index.js";
3
- import { findAllMeasures } from "../../../../utils/index.js";
3
+ import { findAllMeasures, hasMultipleMeasureInSingleView } from "../../../../utils/index.js";
4
4
  import { addColorToEncoding } from "./color/index.js";
5
+ import { addDefaultColorEncoding } from "./color/addColorToEncoding.js";
5
6
  const defaultEncodingForRose = (advancedVSeed)=>{
6
7
  const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed;
7
8
  const measures = findAllMeasures(vseedMeasures);
8
9
  const encoding = {};
9
- generateDefaultDimensionEncoding(dimensions, encoding);
10
+ generateDefaultDimensionEncoding(dimensions, encoding, hasMultipleMeasureInSingleView(vseedMeasures));
10
11
  generateDefaultMeasureEncoding(measures, encoding);
11
12
  return {
12
13
  ...advancedVSeed,
@@ -19,8 +20,9 @@ const encodingForRose = (advancedVSeed)=>{
19
20
  const hasDimensionEncoding = dimensions.some((item)=>item.encoding);
20
21
  const hasMeasureEncoding = measures.some((item)=>item.encoding);
21
22
  const encoding = {};
22
- if (hasDimensionEncoding) generateDimensionEncoding(dimensions, encoding, measures.length > 1);
23
- else generateDefaultDimensionEncoding(dimensions, encoding);
23
+ const hasMulti = hasMultipleMeasureInSingleView(vseedMeasures);
24
+ if (hasDimensionEncoding) generateDimensionEncoding(dimensions, encoding, hasMulti);
25
+ else generateDefaultDimensionEncoding(dimensions, encoding, hasMulti);
24
26
  if (hasMeasureEncoding) generateMeasureEncoding(measures, encoding);
25
27
  else generateDefaultMeasureEncoding(measures, encoding);
26
28
  return {
@@ -28,11 +30,10 @@ const encodingForRose = (advancedVSeed)=>{
28
30
  encoding
29
31
  };
30
32
  };
31
- const generateDefaultDimensionEncoding = (dimensions, encoding)=>{
32
- const onlyMeasureId = 1 === dimensions.length && dimensions.find((item)=>item.id === MeasureId);
33
+ const generateDefaultDimensionEncoding = (dimensions, encoding, isMultiMeasure)=>{
33
34
  const uniqueDimIds = unique(dimensions.map((d)=>d.id));
34
35
  encoding.angle = uniqueDimIds.slice(0, 1);
35
- encoding.color = uniqueDimIds.slice(onlyMeasureId ? 0 : 1);
36
+ addDefaultColorEncoding(uniqueDimIds, encoding, isMultiMeasure);
36
37
  encoding.detail = encoding.color;
37
38
  encoding.tooltip = uniqueDimIds.filter((d)=>d !== MeasureId);
38
39
  encoding.label = [];
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/advanced/chart/pipes/encoding/rose.js","sources":["../../../../../../../src/pipeline/advanced/chart/pipes/encoding/rose.ts"],"sourcesContent":["import { unique } from 'remeda'\nimport { MeasureId } from 'src/dataReshape'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Dimension, Dimensions, Encoding, Measure, Measures } from 'src/types'\nimport { addColorToEncoding } from './color'\n\nexport const defaultEncodingForRose: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n const encoding: Encoding = {}\n generateDefaultDimensionEncoding(dimensions, encoding)\n generateDefaultMeasureEncoding(measures, encoding)\n return { ...advancedVSeed, encoding }\n}\n\nexport const encodingForRose: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n\n const hasDimensionEncoding = dimensions.some((item: Dimension) => item.encoding)\n const hasMeasureEncoding = measures.some((item: Measure) => item.encoding)\n\n // encoding for modify in place\n const encoding: Encoding = {}\n\n if (hasDimensionEncoding) {\n generateDimensionEncoding(dimensions, encoding, measures.length > 1)\n } else {\n generateDefaultDimensionEncoding(dimensions, encoding)\n }\n\n if (hasMeasureEncoding) {\n generateMeasureEncoding(measures, encoding)\n } else {\n generateDefaultMeasureEncoding(measures, encoding)\n }\n\n return { ...advancedVSeed, encoding }\n}\n\n/**\n * --------------------维度--------------------\n */\nconst generateDefaultDimensionEncoding = (dimensions: Dimensions, encoding: Encoding) => {\n const onlyMeasureId = dimensions.length === 1 && dimensions.find((item) => item.id === MeasureId)\n const uniqueDimIds = unique(dimensions.map((d) => d.id))\n encoding.angle = uniqueDimIds.slice(0, 1) // 第一个维度放置于X轴\n encoding.color = uniqueDimIds.slice(onlyMeasureId ? 0 : 1) // 第二个之后的维度用于颜色\n encoding.detail = encoding.color\n encoding.tooltip = uniqueDimIds.filter((d) => d !== MeasureId) // 展示指标名称之外的所有维度\n encoding.label = [] // 默认不展示标签\n encoding.row = [] // 默认不进行行透视\n encoding.column = [] // 默认不进行列透视\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding, isMultiMeasure: boolean) => {\n // angle\n encoding.angle = unique(dimensions.filter((item) => item.encoding === 'angle').map((item) => item.id))\n if (encoding.angle.length === 0) {\n encoding.angle = [dimensions[0].id]\n }\n\n // color\n addColorToEncoding(dimensions, encoding, isMultiMeasure)\n\n // detail\n encoding.detail = unique(dimensions.filter((item) => item.encoding === 'detail').map((item) => item.id))\n if (encoding.detail.length === 0) {\n encoding.detail = encoding.color\n }\n\n // tooltip\n encoding.tooltip = unique(dimensions.map((item) => item.id))\n encoding.tooltip = encoding.tooltip.filter((d) => d !== MeasureId)\n\n // label\n encoding.label = unique(dimensions.filter((item) => item.encoding === 'label').map((item) => item.id))\n encoding.label = encoding.label.filter((d) => d !== MeasureId)\n}\n\n/**\n * --------------------指标--------------------\n */\nconst generateDefaultMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.radius = unique(\n measures.filter((item) => item.encoding === 'radius' || !item.encoding).map((item) => item.id),\n )\n}\nconst generateMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n // y\n encoding.radius = unique(\n measures.filter((item) => item.encoding === 'radius' || !item.encoding).map((item) => item.id),\n )\n\n // color\n const color = unique(measures.filter((item) => item.encoding === 'color').map((item) => item.id))\n if (color.length > 0) {\n encoding.color = color\n }\n\n // label\n const label = unique(measures.filter((item) => item.encoding === 'label').map((item) => item.id))\n encoding.label = unique([...(encoding.label || []), ...label])\n\n // tooltip\n const tooltip = unique(measures.filter((item) => item.encoding === 'tooltip').map((item) => item.id))\n encoding.tooltip = unique([...(encoding.tooltip || []), ...label, ...tooltip])\n}\n"],"names":["defaultEncodingForRose","advancedVSeed","vseedMeasures","dimensions","measures","findAllMeasures","encoding","generateDefaultDimensionEncoding","generateDefaultMeasureEncoding","encodingForRose","hasDimensionEncoding","item","hasMeasureEncoding","generateDimensionEncoding","generateMeasureEncoding","onlyMeasureId","MeasureId","uniqueDimIds","unique","d","isMultiMeasure","addColorToEncoding","color","label","tooltip"],"mappings":"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"}
1
+ {"version":3,"file":"pipeline/advanced/chart/pipes/encoding/rose.js","sources":["../../../../../../../src/pipeline/advanced/chart/pipes/encoding/rose.ts"],"sourcesContent":["import { unique } from 'remeda'\nimport { MeasureId } from 'src/dataReshape'\nimport { findAllMeasures, hasMultipleMeasureInSingleView } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Dimension, Dimensions, Encoding, Measure, Measures } from 'src/types'\nimport { addColorToEncoding } from './color'\nimport { addDefaultColorEncoding } from './color/addColorToEncoding'\n\nexport const defaultEncodingForRose: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n const encoding: Encoding = {}\n generateDefaultDimensionEncoding(dimensions, encoding, hasMultipleMeasureInSingleView(vseedMeasures))\n generateDefaultMeasureEncoding(measures, encoding)\n return { ...advancedVSeed, encoding }\n}\n\nexport const encodingForRose: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n\n const hasDimensionEncoding = dimensions.some((item: Dimension) => item.encoding)\n const hasMeasureEncoding = measures.some((item: Measure) => item.encoding)\n\n // encoding for modify in place\n const encoding: Encoding = {}\n const hasMulti = hasMultipleMeasureInSingleView(vseedMeasures)\n\n if (hasDimensionEncoding) {\n generateDimensionEncoding(dimensions, encoding, hasMulti)\n } else {\n generateDefaultDimensionEncoding(dimensions, encoding, hasMulti)\n }\n\n if (hasMeasureEncoding) {\n generateMeasureEncoding(measures, encoding)\n } else {\n generateDefaultMeasureEncoding(measures, encoding)\n }\n\n return { ...advancedVSeed, encoding }\n}\n\n/**\n * --------------------维度--------------------\n */\nconst generateDefaultDimensionEncoding = (dimensions: Dimensions, encoding: Encoding, isMultiMeasure: boolean) => {\n const uniqueDimIds = unique(dimensions.map((d) => d.id))\n encoding.angle = uniqueDimIds.slice(0, 1) // 第一个维度放置于X轴\n addDefaultColorEncoding(uniqueDimIds, encoding, isMultiMeasure)\n encoding.detail = encoding.color\n encoding.tooltip = uniqueDimIds.filter((d) => d !== MeasureId) // 展示指标名称之外的所有维度\n encoding.label = [] // 默认不展示标签\n encoding.row = [] // 默认不进行行透视\n encoding.column = [] // 默认不进行列透视\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding, isMultiMeasure: boolean) => {\n // angle\n encoding.angle = unique(dimensions.filter((item) => item.encoding === 'angle').map((item) => item.id))\n if (encoding.angle.length === 0) {\n encoding.angle = [dimensions[0].id]\n }\n\n // color\n addColorToEncoding(dimensions, encoding, isMultiMeasure)\n\n // detail\n encoding.detail = unique(dimensions.filter((item) => item.encoding === 'detail').map((item) => item.id))\n if (encoding.detail.length === 0) {\n encoding.detail = encoding.color\n }\n\n // tooltip\n encoding.tooltip = unique(dimensions.map((item) => item.id))\n encoding.tooltip = encoding.tooltip.filter((d) => d !== MeasureId)\n\n // label\n encoding.label = unique(dimensions.filter((item) => item.encoding === 'label').map((item) => item.id))\n encoding.label = encoding.label.filter((d) => d !== MeasureId)\n}\n\n/**\n * --------------------指标--------------------\n */\nconst generateDefaultMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.radius = unique(\n measures.filter((item) => item.encoding === 'radius' || !item.encoding).map((item) => item.id),\n )\n}\nconst generateMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n // y\n encoding.radius = unique(\n measures.filter((item) => item.encoding === 'radius' || !item.encoding).map((item) => item.id),\n )\n\n // color\n const color = unique(measures.filter((item) => item.encoding === 'color').map((item) => item.id))\n if (color.length > 0) {\n encoding.color = color\n }\n\n // label\n const label = unique(measures.filter((item) => item.encoding === 'label').map((item) => item.id))\n encoding.label = unique([...(encoding.label || []), ...label])\n\n // tooltip\n const tooltip = unique(measures.filter((item) => item.encoding === 'tooltip').map((item) => item.id))\n encoding.tooltip = unique([...(encoding.tooltip || []), ...label, ...tooltip])\n}\n"],"names":["defaultEncodingForRose","advancedVSeed","vseedMeasures","dimensions","measures","findAllMeasures","encoding","generateDefaultDimensionEncoding","hasMultipleMeasureInSingleView","generateDefaultMeasureEncoding","encodingForRose","hasDimensionEncoding","item","hasMeasureEncoding","hasMulti","generateDimensionEncoding","generateMeasureEncoding","isMultiMeasure","uniqueDimIds","unique","d","addDefaultColorEncoding","MeasureId","addColorToEncoding","color","label","tooltip"],"mappings":"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"}
@@ -8,32 +8,48 @@ const buildMeasuresForDualAxis = (advancedVSeed, context)=>{
8
8
  advancedVSeed.measures = generateMeasuresByParentId(advancedVSeed.measures);
9
9
  return advancedVSeed;
10
10
  }
11
- const dualMeasures = vseed.dualMeasures ? clone(vseed.dualMeasures) : basicMeasuresToDualMeasures(advancedVSeed.measures || []);
11
+ if (vseed.dualMeasures) {
12
+ advancedVSeed.measures = dualMeasuresToMeasureTree(clone(vseed.dualMeasures));
13
+ return advancedVSeed;
14
+ }
15
+ const { dualMeasures, encodedMeasures } = basicMeasuresToDualMeasures(advancedVSeed.measures || []);
12
16
  advancedVSeed.measures = dualMeasuresToMeasureTree(dualMeasures);
17
+ if (encodedMeasures.length) encodedMeasures.forEach((m)=>{
18
+ advancedVSeed.measures.push(m);
19
+ });
13
20
  return advancedVSeed;
14
21
  };
15
22
  const basicMeasuresToDualMeasures = (basicMeasures)=>{
16
23
  const primaryMeasures = [];
17
24
  const secondaryMeasures = [];
25
+ const encodedMeasures = [];
18
26
  for(let index = 0; index < basicMeasures.length; index++){
19
27
  const item = basicMeasures[index];
20
- const encoding = Array.isArray(item.encoding) ? item.encoding : [
21
- item.encoding
22
- ];
23
- const isPrimaryYAxis = encoding.includes('primaryYAxis');
24
- const isSecondaryYAxis = encoding.includes('secondaryYAxis');
28
+ const encoding = item.encoding;
29
+ const isPrimaryYAxis = 'primaryYAxis' === encoding;
30
+ const isSecondaryYAxis = 'secondaryYAxis' === encoding;
31
+ const isOtherEncoding = item.encoding && [
32
+ 'color',
33
+ 'label',
34
+ 'tooltip',
35
+ 'detail'
36
+ ].includes(item.encoding);
25
37
  if (isPrimaryYAxis) primaryMeasures.push(item);
26
38
  else if (isSecondaryYAxis) secondaryMeasures.push(item);
39
+ else if (isOtherEncoding) encodedMeasures.push(item);
27
40
  else if (0 === index) primaryMeasures.push(item);
28
41
  else secondaryMeasures.push(item);
29
42
  }
30
- return [
31
- {
32
- id: 'dualMeasures',
33
- primaryMeasures,
34
- secondaryMeasures
35
- }
36
- ];
43
+ return {
44
+ dualMeasures: [
45
+ {
46
+ id: 'dualMeasures',
47
+ primaryMeasures,
48
+ secondaryMeasures
49
+ }
50
+ ],
51
+ encodedMeasures
52
+ };
37
53
  };
38
54
  const dualMeasuresToMeasureTree = (dualMeasures)=>{
39
55
  const measureTree = dualMeasures.map((item, index)=>{
@@ -75,6 +91,7 @@ const dualMeasuresToMeasureTree = (dualMeasures)=>{
75
91
  };
76
92
  const generateMeasuresByParentId = (measures)=>{
77
93
  const dualMeasures = [];
94
+ const encodedMeasures = [];
78
95
  measures.forEach((item)=>{
79
96
  const id = item.parentId || DEFAULT_PARENT_ID;
80
97
  if (!dualMeasures.find((d)=>d.id === id)) dualMeasures.push({
@@ -84,18 +101,26 @@ const generateMeasuresByParentId = (measures)=>{
84
101
  });
85
102
  const dualChart = dualMeasures.find((d)=>d.id === id);
86
103
  if (!dualChart || !Array.isArray(dualChart.primaryMeasures) || !Array.isArray(dualChart.secondaryMeasures)) return;
87
- const encoding = Array.isArray(item.encoding) ? item.encoding : [
88
- item.encoding
89
- ].filter(Boolean);
90
- const isPrimary = encoding.includes('primaryYAxis');
91
- const isSecondary = encoding.includes('secondaryYAxis');
92
- const isEmpty = !item.encoding;
93
- if (isPrimary) dualChart.primaryMeasures.push(item);
94
- else if (isSecondary) dualChart.secondaryMeasures.push(item);
95
- else if (isEmpty) if (0 === dualChart.primaryMeasures.length) dualChart.primaryMeasures.push(item);
104
+ const encoding = item.encoding;
105
+ const isPrimaryYAxis = 'primaryYAxis' === encoding;
106
+ const isSecondaryYAxis = 'secondaryYAxis' === encoding;
107
+ const isOtherEncoding = item.encoding && [
108
+ 'color',
109
+ 'label',
110
+ 'tooltip',
111
+ 'detail'
112
+ ].includes(item.encoding);
113
+ if (isPrimaryYAxis) dualChart.primaryMeasures.push(item);
114
+ else if (isSecondaryYAxis) dualChart.secondaryMeasures.push(item);
115
+ else if (isOtherEncoding) encodedMeasures.push(item);
116
+ else if (0 === dualChart.primaryMeasures.length) dualChart.primaryMeasures.push(item);
96
117
  else dualChart.secondaryMeasures.push(item);
97
118
  });
98
- return dualMeasuresToMeasureTree(dualMeasures);
119
+ const res = dualMeasuresToMeasureTree(dualMeasures);
120
+ if (encodedMeasures.length) encodedMeasures.forEach((m)=>{
121
+ res.push(m);
122
+ });
123
+ return res;
99
124
  };
100
125
  export { buildMeasuresForDualAxis };
101
126
 
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/advanced/chart/pipes/measures/buildMeasuresForDualAxis.js","sources":["../../../../../../../src/pipeline/advanced/chart/pipes/measures/buildMeasuresForDualAxis.ts"],"sourcesContent":["import type { AdvancedPipe, DualAxis, DualMeasures, MeasureGroup, Measures, MeasureTree } from 'src/types'\nimport { isMeasureTreeWithParentId, isMeasureTreeWithChildren } from './utils'\nimport { clone } from 'remeda'\nimport { DEFAULT_PARENT_ID } from 'src/pipeline/utils/constant'\n\nexport const buildMeasuresForDualAxis: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context as {\n vseed: DualAxis\n }\n\n // 带Children的指标树, 不进行任何处理\n if (isMeasureTreeWithChildren(advancedVSeed.measures)) {\n return advancedVSeed\n }\n // 带parentId的指标树, 转换为带children的指标树\n if (isMeasureTreeWithParentId(advancedVSeed.measures)) {\n advancedVSeed.measures = generateMeasuresByParentId(advancedVSeed.measures as Measures)\n return advancedVSeed\n }\n\n /**\n * 既不是带Children的指标树, 也不是带parentId的指标树, 则自动生成指标\n */\n const dualMeasures = vseed.dualMeasures\n ? clone(vseed.dualMeasures)\n : basicMeasuresToDualMeasures(advancedVSeed.measures || [])\n advancedVSeed.measures = dualMeasuresToMeasureTree(dualMeasures)\n\n return advancedVSeed\n}\n\nconst basicMeasuresToDualMeasures = (basicMeasures: Measures): DualMeasures => {\n const primaryMeasures: Measures = []\n const secondaryMeasures: Measures = []\n\n for (let index = 0; index < basicMeasures.length; index++) {\n const item = basicMeasures[index]\n const encoding = Array.isArray(item.encoding) ? item.encoding : [item.encoding]\n const isPrimaryYAxis = encoding.includes('primaryYAxis')\n const isSecondaryYAxis = encoding.includes('secondaryYAxis')\n\n if (isPrimaryYAxis) {\n primaryMeasures.push(item)\n } else if (isSecondaryYAxis) {\n secondaryMeasures.push(item)\n } else {\n if (index === 0) {\n primaryMeasures.push(item)\n } else {\n secondaryMeasures.push(item)\n }\n }\n }\n\n return [{ id: 'dualMeasures', primaryMeasures, secondaryMeasures }]\n}\n\nconst dualMeasuresToMeasureTree = (dualMeasures: DualMeasures): MeasureTree => {\n const measureTree = dualMeasures.map((item, index): MeasureGroup => {\n const { id, primaryMeasures, secondaryMeasures } = item\n const groupChildren: MeasureGroup[] = []\n\n let groupId: string = `${id}-`\n if (primaryMeasures) {\n const arrPrimaryMeasures = Array.isArray(primaryMeasures) ? primaryMeasures : [primaryMeasures]\n const alias = arrPrimaryMeasures.map((item) => item.alias || item.id).toString()\n groupId += alias\n groupChildren.push({\n id: `${index}-primary`,\n alias: arrPrimaryMeasures.map((item) => item.alias || item.id).toString(),\n children: arrPrimaryMeasures,\n })\n }\n if (secondaryMeasures) {\n const arrSecondaryMeasures = Array.isArray(secondaryMeasures) ? secondaryMeasures : [secondaryMeasures]\n const alias = arrSecondaryMeasures.map((item) => item.alias || item.id).toString()\n groupId += alias\n groupChildren.push({\n id: `${index}-secondary`,\n alias: arrSecondaryMeasures.map((item) => item.alias || item.id).toString(),\n children: arrSecondaryMeasures,\n })\n }\n\n return {\n id: groupId,\n alias: groupId,\n children: groupChildren,\n }\n })\n\n // 只有1个双轴图, 仅返回2层, vchart 绘制双轴图\n if (dualMeasures.length === 1) {\n return measureTree[0].children || []\n }\n\n // 有多个双轴图, 返回3层, pivot chart 绘制组合双轴图\n return measureTree\n}\n\nconst generateMeasuresByParentId = (measures: Measures) => {\n const dualMeasures: DualMeasures = []\n\n measures.forEach((item) => {\n const id = item.parentId || DEFAULT_PARENT_ID\n if (!dualMeasures.find((d) => d.id === id)) {\n dualMeasures.push({\n id,\n primaryMeasures: [],\n secondaryMeasures: [],\n })\n }\n\n const dualChart = dualMeasures.find((d) => d.id === id)\n if (!dualChart || !Array.isArray(dualChart.primaryMeasures) || !Array.isArray(dualChart.secondaryMeasures)) {\n return\n }\n\n const encoding = Array.isArray(item.encoding) ? item.encoding : [item.encoding].filter(Boolean)\n const isPrimary = encoding.includes('primaryYAxis')\n const isSecondary = encoding.includes('secondaryYAxis')\n const isEmpty = !item.encoding\n\n if (isPrimary) {\n dualChart.primaryMeasures.push(item)\n } else if (isSecondary) {\n dualChart.secondaryMeasures.push(item)\n } else if (isEmpty) {\n if (dualChart.primaryMeasures.length === 0) {\n dualChart.primaryMeasures.push(item)\n } else {\n dualChart.secondaryMeasures.push(item)\n }\n }\n })\n\n return dualMeasuresToMeasureTree(dualMeasures)\n}\n"],"names":["buildMeasuresForDualAxis","advancedVSeed","context","vseed","isMeasureTreeWithChildren","isMeasureTreeWithParentId","generateMeasuresByParentId","dualMeasures","clone","basicMeasuresToDualMeasures","dualMeasuresToMeasureTree","basicMeasures","primaryMeasures","secondaryMeasures","index","item","encoding","Array","isPrimaryYAxis","isSecondaryYAxis","measureTree","id","groupChildren","groupId","arrPrimaryMeasures","alias","arrSecondaryMeasures","measures","DEFAULT_PARENT_ID","d","dualChart","Boolean","isPrimary","isSecondary","isEmpty"],"mappings":"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"}
1
+ {"version":3,"file":"pipeline/advanced/chart/pipes/measures/buildMeasuresForDualAxis.js","sources":["../../../../../../../src/pipeline/advanced/chart/pipes/measures/buildMeasuresForDualAxis.ts"],"sourcesContent":["import type { AdvancedPipe, DualAxis, DualMeasures, MeasureGroup, Measures, MeasureTree } from 'src/types'\nimport { isMeasureTreeWithParentId, isMeasureTreeWithChildren } from './utils'\nimport { clone } from 'remeda'\nimport { DEFAULT_PARENT_ID } from 'src/pipeline/utils/constant'\n\nexport const buildMeasuresForDualAxis: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context as {\n vseed: DualAxis\n }\n\n // 带Children的指标树, 不进行任何处理\n if (isMeasureTreeWithChildren(advancedVSeed.measures)) {\n return advancedVSeed\n }\n // 带parentId的指标树, 转换为带children的指标树\n if (isMeasureTreeWithParentId(advancedVSeed.measures)) {\n advancedVSeed.measures = generateMeasuresByParentId(advancedVSeed.measures as Measures)\n return advancedVSeed\n }\n\n if (vseed.dualMeasures) {\n advancedVSeed.measures = dualMeasuresToMeasureTree(clone(vseed.dualMeasures))\n\n return advancedVSeed\n }\n\n const { dualMeasures, encodedMeasures } = basicMeasuresToDualMeasures(advancedVSeed.measures || [])\n advancedVSeed.measures = dualMeasuresToMeasureTree(dualMeasures)\n\n if (encodedMeasures.length) {\n encodedMeasures.forEach((m) => {\n advancedVSeed.measures!.push(m)\n })\n }\n\n return advancedVSeed\n}\n\nconst basicMeasuresToDualMeasures = (basicMeasures: Measures) => {\n const primaryMeasures: Measures = []\n const secondaryMeasures: Measures = []\n const encodedMeasures: Measures = []\n\n for (let index = 0; index < basicMeasures.length; index++) {\n const item = basicMeasures[index]\n const encoding = item.encoding\n const isPrimaryYAxis = encoding === 'primaryYAxis'\n const isSecondaryYAxis = encoding === 'secondaryYAxis'\n const isOtherEncoding = item.encoding && ['color', 'label', 'tooltip', 'detail'].includes(item.encoding)\n\n if (isPrimaryYAxis) {\n primaryMeasures.push(item)\n } else if (isSecondaryYAxis) {\n secondaryMeasures.push(item)\n } else if (!isOtherEncoding) {\n if (index === 0) {\n primaryMeasures.push(item)\n } else {\n secondaryMeasures.push(item)\n }\n } else {\n encodedMeasures.push(item)\n }\n }\n\n return {\n dualMeasures: [{ id: 'dualMeasures', primaryMeasures, secondaryMeasures }],\n encodedMeasures,\n }\n}\n\nconst dualMeasuresToMeasureTree = (dualMeasures: DualMeasures): MeasureTree => {\n const measureTree = dualMeasures.map((item, index): MeasureGroup => {\n const { id, primaryMeasures, secondaryMeasures } = item\n const groupChildren: MeasureGroup[] = []\n\n let groupId: string = `${id}-`\n if (primaryMeasures) {\n const arrPrimaryMeasures = Array.isArray(primaryMeasures) ? primaryMeasures : [primaryMeasures]\n const alias = arrPrimaryMeasures.map((item) => item.alias || item.id).toString()\n groupId += alias\n groupChildren.push({\n id: `${index}-primary`,\n alias: arrPrimaryMeasures.map((item) => item.alias || item.id).toString(),\n children: arrPrimaryMeasures,\n })\n }\n if (secondaryMeasures) {\n const arrSecondaryMeasures = Array.isArray(secondaryMeasures) ? secondaryMeasures : [secondaryMeasures]\n const alias = arrSecondaryMeasures.map((item) => item.alias || item.id).toString()\n groupId += alias\n groupChildren.push({\n id: `${index}-secondary`,\n alias: arrSecondaryMeasures.map((item) => item.alias || item.id).toString(),\n children: arrSecondaryMeasures,\n })\n }\n\n return {\n id: groupId,\n alias: groupId,\n children: groupChildren,\n }\n })\n\n // 只有1个双轴图, 仅返回2层, vchart 绘制双轴图\n if (dualMeasures.length === 1) {\n return measureTree[0].children || []\n }\n\n // 有多个双轴图, 返回3层, pivot chart 绘制组合双轴图\n return measureTree\n}\n\nconst generateMeasuresByParentId = (measures: Measures) => {\n const dualMeasures: DualMeasures = []\n const encodedMeasures: Measures = []\n\n measures.forEach((item) => {\n const id = item.parentId || DEFAULT_PARENT_ID\n if (!dualMeasures.find((d) => d.id === id)) {\n dualMeasures.push({\n id,\n primaryMeasures: [],\n secondaryMeasures: [],\n })\n }\n\n const dualChart = dualMeasures.find((d) => d.id === id)\n if (!dualChart || !Array.isArray(dualChart.primaryMeasures) || !Array.isArray(dualChart.secondaryMeasures)) {\n return\n }\n\n const encoding = item.encoding\n const isPrimaryYAxis = encoding === 'primaryYAxis'\n const isSecondaryYAxis = encoding === 'secondaryYAxis'\n const isOtherEncoding = item.encoding && ['color', 'label', 'tooltip', 'detail'].includes(item.encoding)\n\n if (isPrimaryYAxis) {\n dualChart.primaryMeasures.push(item)\n } else if (isSecondaryYAxis) {\n dualChart.secondaryMeasures.push(item)\n } else if (!isOtherEncoding) {\n if (dualChart.primaryMeasures.length === 0) {\n dualChart.primaryMeasures.push(item)\n } else {\n dualChart.secondaryMeasures.push(item)\n }\n } else {\n encodedMeasures.push(item)\n }\n })\n\n const res = dualMeasuresToMeasureTree(dualMeasures)\n\n if (encodedMeasures.length) {\n encodedMeasures.forEach((m) => {\n res.push(m)\n })\n }\n\n return res\n}\n"],"names":["buildMeasuresForDualAxis","advancedVSeed","context","vseed","isMeasureTreeWithChildren","isMeasureTreeWithParentId","generateMeasuresByParentId","dualMeasuresToMeasureTree","clone","dualMeasures","encodedMeasures","basicMeasuresToDualMeasures","m","basicMeasures","primaryMeasures","secondaryMeasures","index","item","encoding","isPrimaryYAxis","isSecondaryYAxis","isOtherEncoding","measureTree","id","groupChildren","groupId","arrPrimaryMeasures","Array","alias","arrSecondaryMeasures","measures","DEFAULT_PARENT_ID","d","dualChart","res"],"mappings":"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"}
@@ -8,33 +8,49 @@ const buildMeasuresForScatter = (advancedVSeed, context)=>{
8
8
  advancedVSeed.measures = generateMeasuresByParentId(advancedVSeed.measures);
9
9
  return advancedVSeed;
10
10
  }
11
- const scatterMeasures = vseed.scatterMeasures ? clone(vseed.scatterMeasures) : basicMeasuresToScatterMeasures(advancedVSeed.measures || []);
11
+ if (vseed.scatterMeasures) {
12
+ advancedVSeed.measures = scatterMeasuresToMeasureTree(clone(vseed.scatterMeasures));
13
+ return advancedVSeed;
14
+ }
15
+ const { scatterMeasures, encodedMeasures } = basicMeasuresToScatterMeasures(advancedVSeed.measures || []);
12
16
  advancedVSeed.measures = scatterMeasuresToMeasureTree(scatterMeasures);
17
+ if (encodedMeasures.length) encodedMeasures.forEach((m)=>{
18
+ advancedVSeed.measures.push(m);
19
+ });
13
20
  return advancedVSeed;
14
21
  };
15
22
  const basicMeasuresToScatterMeasures = (basicMeasures)=>{
16
23
  const yMeasures = [];
17
24
  const xMeasures = [];
25
+ const encodedMeasures = [];
18
26
  for(let index = 0; index < basicMeasures.length; index++){
19
27
  const item = basicMeasures[index];
20
- const encoding = Array.isArray(item.encoding) ? item.encoding : [
21
- item.encoding
22
- ];
23
- const isYAxis = encoding.includes('yAxis');
24
- const isXAxis = encoding.includes('xAxis');
28
+ const encoding = item.encoding;
29
+ const isYAxis = 'yAxis' === encoding;
30
+ const isXAxis = 'xAxis' === encoding;
31
+ const isOther = encoding && [
32
+ 'color',
33
+ 'label',
34
+ 'tooltip',
35
+ 'detail'
36
+ ].includes(encoding);
25
37
  if (isYAxis) yMeasures.push(item);
26
38
  else if (isXAxis) xMeasures.push(item);
39
+ else if (isOther) encodedMeasures.push(item);
27
40
  else if (0 !== index) yMeasures.push(item);
28
41
  else xMeasures.push(item);
29
42
  }
30
43
  if (0 === yMeasures.length && xMeasures.length > 0) yMeasures.push(xMeasures[0]);
31
- return [
32
- {
33
- id: 'scatterMeasures',
34
- xMeasures,
35
- yMeasures
36
- }
37
- ];
44
+ return {
45
+ scatterMeasures: [
46
+ {
47
+ id: 'scatterMeasures',
48
+ xMeasures,
49
+ yMeasures
50
+ }
51
+ ],
52
+ encodedMeasures
53
+ };
38
54
  };
39
55
  const scatterMeasuresToMeasureTree = (scatterMeasures)=>{
40
56
  const measureTree = scatterMeasures.map((item, index)=>{
@@ -76,6 +92,7 @@ const scatterMeasuresToMeasureTree = (scatterMeasures)=>{
76
92
  };
77
93
  const generateMeasuresByParentId = (measures)=>{
78
94
  const scatterMeasures = [];
95
+ const encodedMeasures = [];
79
96
  measures.forEach((item)=>{
80
97
  const id = item.parentId || DEFAULT_PARENT_ID;
81
98
  if (!scatterMeasures.find((d)=>d.id === id)) scatterMeasures.push({
@@ -85,18 +102,25 @@ const generateMeasuresByParentId = (measures)=>{
85
102
  });
86
103
  const scatterChart = scatterMeasures.find((d)=>d.id === id);
87
104
  if (!scatterChart || !Array.isArray(scatterChart.yMeasures) || !Array.isArray(scatterChart.xMeasures)) return;
88
- const encoding = Array.isArray(item.encoding) ? item.encoding : [
89
- item.encoding
90
- ].filter(Boolean);
91
- const isX = encoding.includes('xAxis');
92
- const isY = encoding.includes('yAxis');
93
- const isEmpty = !encoding.length;
94
- if (isY) scatterChart.yMeasures.push(item);
95
- else if (isX) scatterChart.xMeasures.push(item);
96
- else if (isEmpty) if (0 !== scatterChart.yMeasures.length) scatterChart.yMeasures.push(item);
105
+ const isYAxis = 'yAxis' === item.encoding;
106
+ const isXAxis = 'xAxis' === item.encoding;
107
+ const isOther = item.encoding && [
108
+ 'color',
109
+ 'label',
110
+ 'tooltip',
111
+ 'detail'
112
+ ].includes(item.encoding);
113
+ if (isYAxis) scatterChart.yMeasures.push(item);
114
+ else if (isXAxis) scatterChart.xMeasures.push(item);
115
+ else if (isOther) encodedMeasures.push(item);
116
+ else if (0 !== scatterChart.yMeasures.length) scatterChart.yMeasures.push(item);
97
117
  else scatterChart.xMeasures.push(item);
98
118
  });
99
- return scatterMeasuresToMeasureTree(scatterMeasures);
119
+ const res = scatterMeasuresToMeasureTree(scatterMeasures);
120
+ if (encodedMeasures.length) encodedMeasures.forEach((m)=>{
121
+ res.push(m);
122
+ });
123
+ return res;
100
124
  };
101
125
  export { buildMeasuresForScatter };
102
126
 
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/advanced/chart/pipes/measures/buildMeasuresForScatter.js","sources":["../../../../../../../src/pipeline/advanced/chart/pipes/measures/buildMeasuresForScatter.ts"],"sourcesContent":["import type { AdvancedPipe, MeasureGroup, Measures, MeasureTree, Scatter, ScatterMeasures } from 'src/types'\nimport { isMeasureTreeWithParentId, isMeasureTreeWithChildren } from './utils'\nimport { clone } from 'remeda'\nimport { DEFAULT_PARENT_ID } from 'src/pipeline/utils/constant'\n\nexport const buildMeasuresForScatter: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context as {\n vseed: Scatter\n }\n\n // 带Children的指标树, 不进行任何处理\n if (isMeasureTreeWithChildren(advancedVSeed.measures)) {\n return advancedVSeed\n }\n // 带parentId的指标树, 转换为带children的指标树\n if (isMeasureTreeWithParentId(advancedVSeed.measures)) {\n advancedVSeed.measures = generateMeasuresByParentId(advancedVSeed.measures as Measures)\n return advancedVSeed\n }\n\n /**\n * 既不是带Children的指标树, 也不是带parentId的指标树, 则自动生成指标\n */\n\n const scatterMeasures = vseed.scatterMeasures\n ? clone(vseed.scatterMeasures)\n : basicMeasuresToScatterMeasures(advancedVSeed.measures || [])\n advancedVSeed.measures = scatterMeasuresToMeasureTree(scatterMeasures)\n\n return advancedVSeed\n}\n\nconst basicMeasuresToScatterMeasures = (basicMeasures: Measures): ScatterMeasures => {\n const yMeasures: Measures = []\n const xMeasures: Measures = []\n\n for (let index = 0; index < basicMeasures.length; index++) {\n const item = basicMeasures[index]\n const encoding = Array.isArray(item.encoding) ? item.encoding : [item.encoding]\n const isYAxis = encoding.includes('yAxis')\n const isXAxis = encoding.includes('xAxis')\n\n if (isYAxis) {\n yMeasures.push(item)\n } else if (isXAxis) {\n xMeasures.push(item)\n } else {\n if (index !== 0) {\n yMeasures.push(item)\n } else {\n xMeasures.push(item)\n }\n }\n }\n\n if (yMeasures.length === 0 && xMeasures.length > 0) {\n yMeasures.push(xMeasures[0])\n }\n\n return [{ id: 'scatterMeasures', xMeasures, yMeasures }]\n}\n\nconst scatterMeasuresToMeasureTree = (scatterMeasures: ScatterMeasures): MeasureTree => {\n const measureTree = scatterMeasures.map((item, index): MeasureGroup => {\n const { id, xMeasures, yMeasures } = item\n const groupChildren: MeasureGroup[] = []\n\n let groupId: string = `${id}-`\n if (xMeasures) {\n const arrPrimaryMeasures = Array.isArray(xMeasures) ? xMeasures : [xMeasures]\n const alias = arrPrimaryMeasures.map((item) => item.alias || item.id).toString()\n groupId += alias\n groupChildren.push({\n id: `${index}-x`,\n alias: arrPrimaryMeasures.map((item) => item.alias || item.id).toString(),\n children: arrPrimaryMeasures,\n })\n }\n if (yMeasures) {\n const arrSecondaryMeasures = Array.isArray(yMeasures) ? yMeasures : [yMeasures]\n const alias = arrSecondaryMeasures.map((item) => item.alias || item.id).toString()\n groupId += alias\n groupChildren.push({\n id: `${index}-y`,\n alias: arrSecondaryMeasures.map((item) => item.alias || item.id).toString(),\n children: arrSecondaryMeasures,\n })\n }\n\n return {\n id: groupId,\n alias: groupId,\n children: groupChildren,\n }\n })\n\n // 只有1个散点图, 仅返回2层, vchart 绘制散点图\n if (scatterMeasures.length === 1) {\n return measureTree[0].children || []\n }\n\n // 有多个散点图, 返回3层, pivot chart 绘制组合散点图\n return measureTree\n}\n\nconst generateMeasuresByParentId = (measures: Measures) => {\n const scatterMeasures: ScatterMeasures = []\n\n measures.forEach((item) => {\n const id = item.parentId || DEFAULT_PARENT_ID\n\n if (!scatterMeasures.find((d) => d.id === id)) {\n scatterMeasures.push({\n id,\n yMeasures: [],\n xMeasures: [],\n })\n }\n const scatterChart = scatterMeasures.find((d) => d.id === id)\n if (!scatterChart || !Array.isArray(scatterChart.yMeasures) || !Array.isArray(scatterChart.xMeasures)) {\n return\n }\n\n const encoding = Array.isArray(item.encoding) ? item.encoding : [item.encoding].filter(Boolean)\n const isX = encoding.includes('xAxis')\n const isY = encoding.includes('yAxis')\n const isEmpty = !encoding.length\n if (isY) {\n scatterChart.yMeasures.push(item)\n } else if (isX) {\n scatterChart.xMeasures.push(item)\n } else if (isEmpty) {\n if (scatterChart.yMeasures.length !== 0) {\n scatterChart.yMeasures.push(item)\n } else {\n scatterChart.xMeasures.push(item)\n }\n }\n })\n\n return scatterMeasuresToMeasureTree(scatterMeasures)\n}\n"],"names":["buildMeasuresForScatter","advancedVSeed","context","vseed","isMeasureTreeWithChildren","isMeasureTreeWithParentId","generateMeasuresByParentId","scatterMeasures","clone","basicMeasuresToScatterMeasures","scatterMeasuresToMeasureTree","basicMeasures","yMeasures","xMeasures","index","item","encoding","Array","isYAxis","isXAxis","measureTree","id","groupChildren","groupId","arrPrimaryMeasures","alias","arrSecondaryMeasures","measures","DEFAULT_PARENT_ID","d","scatterChart","Boolean","isX","isY","isEmpty"],"mappings":"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"}
1
+ {"version":3,"file":"pipeline/advanced/chart/pipes/measures/buildMeasuresForScatter.js","sources":["../../../../../../../src/pipeline/advanced/chart/pipes/measures/buildMeasuresForScatter.ts"],"sourcesContent":["import type { AdvancedPipe, MeasureGroup, Measures, MeasureTree, Scatter, ScatterMeasures } from 'src/types'\nimport { isMeasureTreeWithParentId, isMeasureTreeWithChildren } from './utils'\nimport { clone } from 'remeda'\nimport { DEFAULT_PARENT_ID } from 'src/pipeline/utils/constant'\n\nexport const buildMeasuresForScatter: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context as {\n vseed: Scatter\n }\n\n // 带Children的指标树, 不进行任何处理\n if (isMeasureTreeWithChildren(advancedVSeed.measures)) {\n return advancedVSeed\n }\n // 带parentId的指标树, 转换为带children的指标树\n if (isMeasureTreeWithParentId(advancedVSeed.measures)) {\n advancedVSeed.measures = generateMeasuresByParentId(advancedVSeed.measures as Measures)\n return advancedVSeed\n }\n\n /**\n * 既不是带Children的指标树, 也不是带parentId的指标树, 则自动生成指标\n */\n\n if (vseed.scatterMeasures) {\n advancedVSeed.measures = scatterMeasuresToMeasureTree(clone(vseed.scatterMeasures))\n\n return advancedVSeed\n }\n\n const { scatterMeasures, encodedMeasures } = basicMeasuresToScatterMeasures(advancedVSeed.measures || [])\n advancedVSeed.measures = scatterMeasuresToMeasureTree(scatterMeasures)\n\n if (encodedMeasures.length) {\n encodedMeasures.forEach((m) => {\n advancedVSeed.measures!.push(m)\n })\n }\n\n return advancedVSeed\n}\n\nconst basicMeasuresToScatterMeasures = (basicMeasures: Measures) => {\n const yMeasures: Measures = []\n const xMeasures: Measures = []\n const encodedMeasures: Measures = []\n\n for (let index = 0; index < basicMeasures.length; index++) {\n const item = basicMeasures[index]\n const encoding = item.encoding\n const isYAxis = encoding === 'yAxis'\n const isXAxis = encoding === 'xAxis'\n const isOther = encoding && ['color', 'label', 'tooltip', 'detail'].includes(encoding)\n\n if (isYAxis) {\n yMeasures.push(item)\n } else if (isXAxis) {\n xMeasures.push(item)\n } else if (!isOther) {\n if (index !== 0) {\n yMeasures.push(item)\n } else {\n xMeasures.push(item)\n }\n } else {\n encodedMeasures.push(item)\n }\n }\n\n if (yMeasures.length === 0 && xMeasures.length > 0) {\n yMeasures.push(xMeasures[0])\n }\n\n return {\n scatterMeasures: [{ id: 'scatterMeasures', xMeasures, yMeasures }],\n encodedMeasures,\n }\n}\n\nconst scatterMeasuresToMeasureTree = (scatterMeasures: ScatterMeasures): MeasureTree => {\n const measureTree = scatterMeasures.map((item, index): MeasureGroup => {\n const { id, xMeasures, yMeasures } = item\n const groupChildren: MeasureGroup[] = []\n\n let groupId: string = `${id}-`\n if (xMeasures) {\n const arrPrimaryMeasures = Array.isArray(xMeasures) ? xMeasures : [xMeasures]\n const alias = arrPrimaryMeasures.map((item) => item.alias || item.id).toString()\n groupId += alias\n groupChildren.push({\n id: `${index}-x`,\n alias: arrPrimaryMeasures.map((item) => item.alias || item.id).toString(),\n children: arrPrimaryMeasures,\n })\n }\n if (yMeasures) {\n const arrSecondaryMeasures = Array.isArray(yMeasures) ? yMeasures : [yMeasures]\n const alias = arrSecondaryMeasures.map((item) => item.alias || item.id).toString()\n groupId += alias\n groupChildren.push({\n id: `${index}-y`,\n alias: arrSecondaryMeasures.map((item) => item.alias || item.id).toString(),\n children: arrSecondaryMeasures,\n })\n }\n\n return {\n id: groupId,\n alias: groupId,\n children: groupChildren,\n }\n })\n\n // 只有1个散点图, 仅返回2层, vchart 绘制散点图\n if (scatterMeasures.length === 1) {\n return measureTree[0].children || []\n }\n\n // 有多个散点图, 返回3层, pivot chart 绘制组合散点图\n return measureTree\n}\n\nconst generateMeasuresByParentId = (measures: Measures) => {\n const scatterMeasures: ScatterMeasures = []\n const encodedMeasures: Measures = []\n\n measures.forEach((item) => {\n const id = item.parentId || DEFAULT_PARENT_ID\n\n if (!scatterMeasures.find((d) => d.id === id)) {\n scatterMeasures.push({\n id,\n yMeasures: [],\n xMeasures: [],\n })\n }\n const scatterChart = scatterMeasures.find((d) => d.id === id)\n if (!scatterChart || !Array.isArray(scatterChart.yMeasures) || !Array.isArray(scatterChart.xMeasures)) {\n return\n }\n\n const isYAxis = item.encoding === 'yAxis'\n const isXAxis = item.encoding === 'xAxis'\n const isOther = item.encoding && ['color', 'label', 'tooltip', 'detail'].includes(item.encoding)\n\n if (isYAxis) {\n scatterChart.yMeasures.push(item)\n } else if (isXAxis) {\n scatterChart.xMeasures.push(item)\n } else if (!isOther) {\n if (scatterChart.yMeasures.length !== 0) {\n scatterChart.yMeasures.push(item)\n } else {\n scatterChart.xMeasures.push(item)\n }\n } else {\n encodedMeasures.push(item)\n }\n })\n\n const res = scatterMeasuresToMeasureTree(scatterMeasures)\n\n if (encodedMeasures.length) {\n encodedMeasures.forEach((m) => {\n res.push(m)\n })\n }\n\n return res\n}\n"],"names":["buildMeasuresForScatter","advancedVSeed","context","vseed","isMeasureTreeWithChildren","isMeasureTreeWithParentId","generateMeasuresByParentId","scatterMeasuresToMeasureTree","clone","scatterMeasures","encodedMeasures","basicMeasuresToScatterMeasures","m","basicMeasures","yMeasures","xMeasures","index","item","encoding","isYAxis","isXAxis","isOther","measureTree","id","groupChildren","groupId","arrPrimaryMeasures","Array","alias","arrSecondaryMeasures","measures","DEFAULT_PARENT_ID","d","scatterChart","res"],"mappings":"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"}
@@ -17,9 +17,9 @@ const pivotReshapeWithDualEncoding = (advancedVSeed, context)=>{
17
17
  const measureGroups = [];
18
18
  const depth = measureDepth(measures);
19
19
  if (3 === depth) measures.forEach((measure)=>{
20
- measureGroups.push(measure.children);
20
+ if (measure.children) measureGroups.push(measure.children);
21
21
  });
22
- else if (2 === depth) measureGroups.push(measures);
22
+ else if (2 === depth) measureGroups.push(measures.filter((m)=>m && m.children));
23
23
  measureGroups.forEach((measures, index)=>{
24
24
  if (measures.length > 2) throw new Error('measures can not be more than 2 groups in dualAxis');
25
25
  const foldInfoList = [];
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/advanced/chart/pipes/reshape/pivotReshapeWithDualEncoding.js","sources":["../../../../../../../src/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithDualEncoding.ts"],"sourcesContent":["import { uniqueBy } from 'remeda'\nimport { dataReshapeByEncoding, FoldPrimaryMeasureValue, FoldSecondaryMeasureValue } from 'src/dataReshape'\nimport { getColorMeasureId } from 'src/pipeline/spec/chart/pipes'\nimport { findAllMeasures, measureDepth } from 'src/pipeline/utils'\nimport type {\n AdvancedPipe,\n AdvancedVSeed,\n ColumnParallel,\n Dataset,\n DatasetReshapeInfo,\n Encoding,\n FoldInfo,\n MeasureGroup,\n UnfoldInfo,\n} from 'src/types'\n\nexport const pivotReshapeWithDualEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed as ColumnParallel\n const { encoding, chartType } = advancedVSeed\n const measures = advancedVSeed.reshapeMeasures ?? advancedVSeed.measures ?? []\n const dimensions = advancedVSeed.reshapeDimensions ?? advancedVSeed.dimensions ?? []\n\n const allMeasures = findAllMeasures(measures)\n const datasetList: Dataset[] = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n\n const measureGroups: Array<MeasureGroup[]> = []\n\n const depth = measureDepth(measures)\n if (depth === 3) {\n measures.forEach((measure: MeasureGroup) => {\n measureGroups.push(measure.children as unknown as MeasureGroup[])\n })\n } else if (depth === 2) {\n measureGroups.push(measures as unknown as MeasureGroup[])\n }\n\n measureGroups.forEach((measures: MeasureGroup[], index) => {\n if (measures.length > 2) {\n throw new Error('measures can not be more than 2 groups in dualAxis')\n }\n\n const foldInfoList: FoldInfo[] = []\n const unfoldInfoList: UnfoldInfo[] = []\n\n const datasets: Dataset[] = []\n const primaryMeasures = measures[0]\n const secondaryMeasures = measures[1] || []\n\n if (primaryMeasures && primaryMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (item) => item.id),\n uniqueBy(primaryMeasures.children, (item) => item.id),\n encoding as Encoding,\n {\n colorItemAsId: false,\n foldMeasureValue: `${FoldPrimaryMeasureValue}${index}`,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed),\n omitIds: allMeasures.map((item) => item.id),\n },\n )\n\n datasets.push(newDataset)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n if (secondaryMeasures && secondaryMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (item) => item.id),\n uniqueBy(secondaryMeasures.children, (item) => item.id),\n encoding as Encoding,\n {\n colorItemAsId: false,\n foldMeasureValue: `${FoldSecondaryMeasureValue}${index}`,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed),\n omitIds: allMeasures.map((item) => item.id),\n },\n )\n\n datasets.push(newDataset)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n const unfoldInfo: UnfoldInfo = {\n ...unfoldInfoList[0],\n colorItems: unfoldInfoList.flatMap((d) => d.colorItems),\n colorIdMap: unfoldInfoList.reduce((prev, cur) => ({ ...prev, ...cur.colorIdMap }), {}),\n }\n\n const reshapeInfo = {\n id: `${chartType}-${index}`,\n index,\n foldInfo: foldInfoList[0],\n foldInfoList: foldInfoList,\n unfoldInfo: unfoldInfo,\n }\n\n datasetReshapeInfo.push(reshapeInfo)\n datasetList.push(datasets.flat(2))\n })\n\n return {\n ...result,\n dataset: datasetList,\n datasetReshapeInfo: datasetReshapeInfo,\n }\n}\n"],"names":["pivotReshapeWithDualEncoding","advancedVSeed","context","result","vseed","dataset","encoding","chartType","measures","dimensions","allMeasures","findAllMeasures","datasetList","datasetReshapeInfo","measureGroups","depth","measureDepth","measure","index","Error","foldInfoList","unfoldInfoList","datasets","primaryMeasures","secondaryMeasures","newDataset","foldInfo","unfoldInfo","dataReshapeByEncoding","uniqueBy","item","FoldPrimaryMeasureValue","getColorMeasureId","FoldSecondaryMeasureValue","d","prev","cur","reshapeInfo"],"mappings":"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"}
1
+ {"version":3,"file":"pipeline/advanced/chart/pipes/reshape/pivotReshapeWithDualEncoding.js","sources":["../../../../../../../src/pipeline/advanced/chart/pipes/reshape/pivotReshapeWithDualEncoding.ts"],"sourcesContent":["import { uniqueBy } from 'remeda'\nimport { dataReshapeByEncoding, FoldPrimaryMeasureValue, FoldSecondaryMeasureValue } from 'src/dataReshape'\nimport { getColorMeasureId } from 'src/pipeline/spec/chart/pipes'\nimport { findAllMeasures, measureDepth } from 'src/pipeline/utils'\nimport type {\n AdvancedPipe,\n AdvancedVSeed,\n ColumnParallel,\n Dataset,\n DatasetReshapeInfo,\n Encoding,\n FoldInfo,\n Measure,\n MeasureGroup,\n UnfoldInfo,\n} from 'src/types'\n\nexport const pivotReshapeWithDualEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed as ColumnParallel\n const { encoding, chartType } = advancedVSeed\n const measures = advancedVSeed.reshapeMeasures ?? advancedVSeed.measures ?? []\n const dimensions = advancedVSeed.reshapeDimensions ?? advancedVSeed.dimensions ?? []\n\n const allMeasures = findAllMeasures(measures)\n const datasetList: Dataset[] = []\n const datasetReshapeInfo: DatasetReshapeInfo = []\n\n const measureGroups: Array<MeasureGroup[]> = []\n\n const depth = measureDepth(measures)\n if (depth === 3) {\n measures.forEach((measure: MeasureGroup) => {\n if (measure.children) {\n measureGroups.push(measure.children as unknown as MeasureGroup[])\n }\n })\n } else if (depth === 2) {\n measureGroups.push(\n measures.filter((m: Measure | MeasureGroup) => m && (m as MeasureGroup).children) as unknown as MeasureGroup[],\n )\n }\n\n measureGroups.forEach((measures: MeasureGroup[], index) => {\n if (measures.length > 2) {\n throw new Error('measures can not be more than 2 groups in dualAxis')\n }\n\n const foldInfoList: FoldInfo[] = []\n const unfoldInfoList: UnfoldInfo[] = []\n\n const datasets: Dataset[] = []\n const primaryMeasures = measures[0]\n const secondaryMeasures = measures[1] || []\n\n if (primaryMeasures && primaryMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (item) => item.id),\n uniqueBy(primaryMeasures.children, (item) => item.id),\n encoding as Encoding,\n {\n colorItemAsId: false,\n foldMeasureValue: `${FoldPrimaryMeasureValue}${index}`,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed),\n omitIds: allMeasures.map((item) => item.id),\n },\n )\n\n datasets.push(newDataset)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n if (secondaryMeasures && secondaryMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (item) => item.id),\n uniqueBy(secondaryMeasures.children, (item) => item.id),\n encoding as Encoding,\n {\n colorItemAsId: false,\n foldMeasureValue: `${FoldSecondaryMeasureValue}${index}`,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed),\n omitIds: allMeasures.map((item) => item.id),\n },\n )\n\n datasets.push(newDataset)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n const unfoldInfo: UnfoldInfo = {\n ...unfoldInfoList[0],\n colorItems: unfoldInfoList.flatMap((d) => d.colorItems),\n colorIdMap: unfoldInfoList.reduce((prev, cur) => ({ ...prev, ...cur.colorIdMap }), {}),\n }\n\n const reshapeInfo = {\n id: `${chartType}-${index}`,\n index,\n foldInfo: foldInfoList[0],\n foldInfoList: foldInfoList,\n unfoldInfo: unfoldInfo,\n }\n\n datasetReshapeInfo.push(reshapeInfo)\n datasetList.push(datasets.flat(2))\n })\n\n return {\n ...result,\n dataset: datasetList,\n datasetReshapeInfo: datasetReshapeInfo,\n }\n}\n"],"names":["pivotReshapeWithDualEncoding","advancedVSeed","context","result","vseed","dataset","encoding","chartType","measures","dimensions","allMeasures","findAllMeasures","datasetList","datasetReshapeInfo","measureGroups","depth","measureDepth","measure","m","index","Error","foldInfoList","unfoldInfoList","datasets","primaryMeasures","secondaryMeasures","newDataset","foldInfo","unfoldInfo","dataReshapeByEncoding","uniqueBy","item","FoldPrimaryMeasureValue","getColorMeasureId","FoldSecondaryMeasureValue","d","prev","cur","reshapeInfo"],"mappings":"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"}
@@ -8,7 +8,7 @@ const reshapeWithDualEncoding = (advancedVSeed, context)=>{
8
8
  const { vseed } = context;
9
9
  const { dataset } = vseed;
10
10
  const { encoding, chartType } = advancedVSeed;
11
- const measures = advancedVSeed.reshapeMeasures ?? advancedVSeed.measures ?? [];
11
+ const measures = (advancedVSeed.reshapeMeasures ?? advancedVSeed.measures ?? []).filter((m)=>m && m.children);
12
12
  const dimensions = advancedVSeed.reshapeDimensions ?? advancedVSeed.dimensions ?? [];
13
13
  if (measures.length > 2) throw new Error('measures can not be more than 2 groups in dualAxis');
14
14
  const foldInfoList = [];
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/advanced/chart/pipes/reshape/reshapeWithDualEncoding.js","sources":["../../../../../../../src/pipeline/advanced/chart/pipes/reshape/reshapeWithDualEncoding.ts"],"sourcesContent":["import { uniqueBy } from 'remeda'\nimport { dataReshapeByEncoding, FoldPrimaryMeasureValue, FoldSecondaryMeasureValue } from 'src/dataReshape'\nimport { getColorMeasureId } from 'src/pipeline/spec/chart/pipes'\nimport type {\n AdvancedPipe,\n AdvancedVSeed,\n ColumnParallel,\n Dataset,\n Encoding,\n FoldInfo,\n MeasureGroup,\n UnfoldInfo,\n} from 'src/types'\n\nexport const reshapeWithDualEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed as ColumnParallel\n const { encoding, chartType } = advancedVSeed\n const measures = advancedVSeed.reshapeMeasures ?? advancedVSeed.measures ?? []\n const dimensions = advancedVSeed.reshapeDimensions ?? advancedVSeed.dimensions ?? []\n\n if (measures.length > 2) {\n throw new Error('measures can not be more than 2 groups in dualAxis')\n }\n const foldInfoList: FoldInfo[] = []\n const unfoldInfoList: UnfoldInfo[] = []\n\n const datasets: Dataset[] = []\n const primaryMeasures = measures[0] as MeasureGroup\n const secondaryMeasures = (measures[1] || []) as MeasureGroup\n\n if (primaryMeasures && primaryMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (item) => item.id),\n uniqueBy(primaryMeasures.children, (item) => item.id),\n encoding as Encoding,\n {\n colorItemAsId: false,\n foldMeasureValue: FoldPrimaryMeasureValue,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed),\n },\n )\n\n datasets.push(newDataset)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n if (secondaryMeasures && secondaryMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (item) => item.id),\n uniqueBy(secondaryMeasures.children, (item) => item.id),\n encoding as Encoding,\n {\n colorItemAsId: false,\n foldMeasureValue: FoldSecondaryMeasureValue,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed),\n },\n )\n\n datasets.push(newDataset)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n const unfoldInfo: UnfoldInfo = {\n ...unfoldInfoList[0],\n colorItems: unfoldInfoList.flatMap((d) => d.colorItems),\n colorIdMap: unfoldInfoList.reduce((prev, cur) => ({ ...prev, ...cur.colorIdMap }), {}),\n }\n\n return {\n ...result,\n dataset: datasets,\n datasetReshapeInfo: [\n {\n id: String(chartType),\n index: 0,\n foldInfo: foldInfoList[0],\n foldInfoList: foldInfoList,\n unfoldInfo: unfoldInfo,\n },\n ],\n }\n}\n"],"names":["reshapeWithDualEncoding","advancedVSeed","context","result","vseed","dataset","encoding","chartType","measures","dimensions","Error","foldInfoList","unfoldInfoList","datasets","primaryMeasures","secondaryMeasures","newDataset","foldInfo","unfoldInfo","dataReshapeByEncoding","uniqueBy","item","FoldPrimaryMeasureValue","getColorMeasureId","FoldSecondaryMeasureValue","d","prev","cur","String"],"mappings":";;;AAcO,MAAMA,0BAAwC,CAACC,eAAeC;IACnE,MAAMC,SAAS;QAAE,GAAGF,aAAa;IAAC;IAClC,MAAM,EAAEG,KAAK,EAAE,GAAGF;IAClB,MAAM,EAAEG,OAAO,EAAE,GAAGD;IACpB,MAAM,EAAEE,QAAQ,EAAEC,SAAS,EAAE,GAAGN;IAChC,MAAMO,WAAWP,cAAc,eAAe,IAAIA,cAAc,QAAQ,IAAI,EAAE;IAC9E,MAAMQ,aAAaR,cAAc,iBAAiB,IAAIA,cAAc,UAAU,IAAI,EAAE;IAEpF,IAAIO,SAAS,MAAM,GAAG,GACpB,MAAM,IAAIE,MAAM;IAElB,MAAMC,eAA2B,EAAE;IACnC,MAAMC,iBAA+B,EAAE;IAEvC,MAAMC,WAAsB,EAAE;IAC9B,MAAMC,kBAAkBN,QAAQ,CAAC,EAAE;IACnC,MAAMO,oBAAqBP,QAAQ,CAAC,EAAE,IAAI,EAAE;IAE5C,IAAIM,mBAAmBA,gBAAgB,QAAQ,EAAE;QAC/C,MAAM,EACJ,SAASE,UAAU,EACnBC,QAAQ,EACRC,UAAU,EACX,GAAGC,sBACFd,SACAe,SAASX,YAAY,CAACY,OAASA,KAAK,EAAE,GACtCD,SAASN,gBAAgB,QAAQ,EAAE,CAACO,OAASA,KAAK,EAAE,GACpDf,UACA;YACE,eAAe;YACf,kBAAkBgB;YAClB,gBAAgBC,kBAAkBtB,eAAgCG;QACpE;QAGFS,SAAS,IAAI,CAACG;QACdL,aAAa,IAAI,CAACM;QAClBL,eAAe,IAAI,CAACM;IACtB;IAEA,IAAIH,qBAAqBA,kBAAkB,QAAQ,EAAE;QACnD,MAAM,EACJ,SAASC,UAAU,EACnBC,QAAQ,EACRC,UAAU,EACX,GAAGC,sBACFd,SACAe,SAASX,YAAY,CAACY,OAASA,KAAK,EAAE,GACtCD,SAASL,kBAAkB,QAAQ,EAAE,CAACM,OAASA,KAAK,EAAE,GACtDf,UACA;YACE,eAAe;YACf,kBAAkBkB;YAClB,gBAAgBD,kBAAkBtB,eAAgCG;QACpE;QAGFS,SAAS,IAAI,CAACG;QACdL,aAAa,IAAI,CAACM;QAClBL,eAAe,IAAI,CAACM;IACtB;IAEA,MAAMA,aAAyB;QAC7B,GAAGN,cAAc,CAAC,EAAE;QACpB,YAAYA,eAAe,OAAO,CAAC,CAACa,IAAMA,EAAE,UAAU;QACtD,YAAYb,eAAe,MAAM,CAAC,CAACc,MAAMC,MAAS;gBAAE,GAAGD,IAAI;gBAAE,GAAGC,IAAI,UAAU;YAAC,IAAI,CAAC;IACtF;IAEA,OAAO;QACL,GAAGxB,MAAM;QACT,SAASU;QACT,oBAAoB;YAClB;gBACE,IAAIe,OAAOrB;gBACX,OAAO;gBACP,UAAUI,YAAY,CAAC,EAAE;gBACzB,cAAcA;gBACd,YAAYO;YACd;SACD;IACH;AACF"}
1
+ {"version":3,"file":"pipeline/advanced/chart/pipes/reshape/reshapeWithDualEncoding.js","sources":["../../../../../../../src/pipeline/advanced/chart/pipes/reshape/reshapeWithDualEncoding.ts"],"sourcesContent":["import { uniqueBy } from 'remeda'\nimport { dataReshapeByEncoding, FoldPrimaryMeasureValue, FoldSecondaryMeasureValue } from 'src/dataReshape'\nimport { getColorMeasureId } from 'src/pipeline/spec/chart/pipes'\nimport type {\n AdvancedPipe,\n AdvancedVSeed,\n ColumnParallel,\n Dataset,\n Encoding,\n FoldInfo,\n Measure,\n MeasureGroup,\n UnfoldInfo,\n} from 'src/types'\n\nexport const reshapeWithDualEncoding: AdvancedPipe = (advancedVSeed, context) => {\n const result = { ...advancedVSeed }\n const { vseed } = context\n const { dataset } = vseed as ColumnParallel\n const { encoding, chartType } = advancedVSeed\n const measures = (advancedVSeed.reshapeMeasures ?? advancedVSeed.measures ?? []).filter(\n (m: Measure | MeasureGroup) => m && (m as MeasureGroup).children,\n )\n const dimensions = advancedVSeed.reshapeDimensions ?? advancedVSeed.dimensions ?? []\n\n if (measures.length > 2) {\n throw new Error('measures can not be more than 2 groups in dualAxis')\n }\n const foldInfoList: FoldInfo[] = []\n const unfoldInfoList: UnfoldInfo[] = []\n\n const datasets: Dataset[] = []\n const primaryMeasures = measures[0] as MeasureGroup\n const secondaryMeasures = (measures[1] || []) as MeasureGroup\n\n if (primaryMeasures && primaryMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (item) => item.id),\n uniqueBy(primaryMeasures.children, (item) => item.id),\n encoding as Encoding,\n {\n colorItemAsId: false,\n foldMeasureValue: FoldPrimaryMeasureValue,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed),\n },\n )\n\n datasets.push(newDataset)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n if (secondaryMeasures && secondaryMeasures.children) {\n const {\n dataset: newDataset,\n foldInfo,\n unfoldInfo,\n } = dataReshapeByEncoding(\n dataset,\n uniqueBy(dimensions, (item) => item.id),\n uniqueBy(secondaryMeasures.children, (item) => item.id),\n encoding as Encoding,\n {\n colorItemAsId: false,\n foldMeasureValue: FoldSecondaryMeasureValue,\n colorMeasureId: getColorMeasureId(advancedVSeed as AdvancedVSeed, vseed),\n },\n )\n\n datasets.push(newDataset)\n foldInfoList.push(foldInfo)\n unfoldInfoList.push(unfoldInfo)\n }\n\n const unfoldInfo: UnfoldInfo = {\n ...unfoldInfoList[0],\n colorItems: unfoldInfoList.flatMap((d) => d.colorItems),\n colorIdMap: unfoldInfoList.reduce((prev, cur) => ({ ...prev, ...cur.colorIdMap }), {}),\n }\n\n return {\n ...result,\n dataset: datasets,\n datasetReshapeInfo: [\n {\n id: String(chartType),\n index: 0,\n foldInfo: foldInfoList[0],\n foldInfoList: foldInfoList,\n unfoldInfo: unfoldInfo,\n },\n ],\n }\n}\n"],"names":["reshapeWithDualEncoding","advancedVSeed","context","result","vseed","dataset","encoding","chartType","measures","m","dimensions","Error","foldInfoList","unfoldInfoList","datasets","primaryMeasures","secondaryMeasures","newDataset","foldInfo","unfoldInfo","dataReshapeByEncoding","uniqueBy","item","FoldPrimaryMeasureValue","getColorMeasureId","FoldSecondaryMeasureValue","d","prev","cur","String"],"mappings":";;;AAeO,MAAMA,0BAAwC,CAACC,eAAeC;IACnE,MAAMC,SAAS;QAAE,GAAGF,aAAa;IAAC;IAClC,MAAM,EAAEG,KAAK,EAAE,GAAGF;IAClB,MAAM,EAAEG,OAAO,EAAE,GAAGD;IACpB,MAAM,EAAEE,QAAQ,EAAEC,SAAS,EAAE,GAAGN;IAChC,MAAMO,WAAYP,AAAAA,CAAAA,cAAc,eAAe,IAAIA,cAAc,QAAQ,IAAI,EAAC,EAAG,MAAM,CACrF,CAACQ,IAA8BA,KAAMA,EAAmB,QAAQ;IAElE,MAAMC,aAAaT,cAAc,iBAAiB,IAAIA,cAAc,UAAU,IAAI,EAAE;IAEpF,IAAIO,SAAS,MAAM,GAAG,GACpB,MAAM,IAAIG,MAAM;IAElB,MAAMC,eAA2B,EAAE;IACnC,MAAMC,iBAA+B,EAAE;IAEvC,MAAMC,WAAsB,EAAE;IAC9B,MAAMC,kBAAkBP,QAAQ,CAAC,EAAE;IACnC,MAAMQ,oBAAqBR,QAAQ,CAAC,EAAE,IAAI,EAAE;IAE5C,IAAIO,mBAAmBA,gBAAgB,QAAQ,EAAE;QAC/C,MAAM,EACJ,SAASE,UAAU,EACnBC,QAAQ,EACRC,UAAU,EACX,GAAGC,sBACFf,SACAgB,SAASX,YAAY,CAACY,OAASA,KAAK,EAAE,GACtCD,SAASN,gBAAgB,QAAQ,EAAE,CAACO,OAASA,KAAK,EAAE,GACpDhB,UACA;YACE,eAAe;YACf,kBAAkBiB;YAClB,gBAAgBC,kBAAkBvB,eAAgCG;QACpE;QAGFU,SAAS,IAAI,CAACG;QACdL,aAAa,IAAI,CAACM;QAClBL,eAAe,IAAI,CAACM;IACtB;IAEA,IAAIH,qBAAqBA,kBAAkB,QAAQ,EAAE;QACnD,MAAM,EACJ,SAASC,UAAU,EACnBC,QAAQ,EACRC,UAAU,EACX,GAAGC,sBACFf,SACAgB,SAASX,YAAY,CAACY,OAASA,KAAK,EAAE,GACtCD,SAASL,kBAAkB,QAAQ,EAAE,CAACM,OAASA,KAAK,EAAE,GACtDhB,UACA;YACE,eAAe;YACf,kBAAkBmB;YAClB,gBAAgBD,kBAAkBvB,eAAgCG;QACpE;QAGFU,SAAS,IAAI,CAACG;QACdL,aAAa,IAAI,CAACM;QAClBL,eAAe,IAAI,CAACM;IACtB;IAEA,MAAMA,aAAyB;QAC7B,GAAGN,cAAc,CAAC,EAAE;QACpB,YAAYA,eAAe,OAAO,CAAC,CAACa,IAAMA,EAAE,UAAU;QACtD,YAAYb,eAAe,MAAM,CAAC,CAACc,MAAMC,MAAS;gBAAE,GAAGD,IAAI;gBAAE,GAAGC,IAAI,UAAU;YAAC,IAAI,CAAC;IACtF;IAEA,OAAO;QACL,GAAGzB,MAAM;QACT,SAASW;QACT,oBAAoB;YAClB;gBACE,IAAIe,OAAOtB;gBACX,OAAO;gBACP,UAAUK,YAAY,CAAC,EAAE;gBACzB,cAAcA;gBACd,YAAYO;YACd;SACD;IACH;AACF"}
@@ -8,7 +8,7 @@ const reshapeWithScatterEncoding = (advancedVSeed, context)=>{
8
8
  const { vseed } = context;
9
9
  const { dataset } = vseed;
10
10
  const { encoding, chartType } = advancedVSeed;
11
- const measures = advancedVSeed.reshapeMeasures ?? advancedVSeed.measures ?? [];
11
+ const measures = (advancedVSeed.reshapeMeasures ?? advancedVSeed.measures ?? []).filter((m)=>m && m.children);
12
12
  const dimensions = advancedVSeed.reshapeDimensions ?? advancedVSeed.dimensions ?? [];
13
13
  if (measures.length > 2) throw new Error('measures can not be more than 2 groups in scatter');
14
14
  const foldInfoList = [];