@visactor/vseed 0.1.9 → 0.1.10

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 (76) 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 -2
  4. package/dist/esm/pipeline/advanced/chart/pipeline/area.js.map +1 -1
  5. package/dist/esm/pipeline/advanced/chart/pipeline/areaPercent.js +3 -2
  6. package/dist/esm/pipeline/advanced/chart/pipeline/areaPercent.js.map +1 -1
  7. package/dist/esm/pipeline/advanced/chart/pipeline/bar.js +3 -2
  8. package/dist/esm/pipeline/advanced/chart/pipeline/bar.js.map +1 -1
  9. package/dist/esm/pipeline/advanced/chart/pipeline/barParallel.js +3 -2
  10. package/dist/esm/pipeline/advanced/chart/pipeline/barParallel.js.map +1 -1
  11. package/dist/esm/pipeline/advanced/chart/pipeline/barPercent.js +3 -2
  12. package/dist/esm/pipeline/advanced/chart/pipeline/barPercent.js.map +1 -1
  13. package/dist/esm/pipeline/advanced/chart/pipeline/column.js +3 -2
  14. package/dist/esm/pipeline/advanced/chart/pipeline/column.js.map +1 -1
  15. package/dist/esm/pipeline/advanced/chart/pipeline/columnParallel.js +3 -2
  16. package/dist/esm/pipeline/advanced/chart/pipeline/columnParallel.js.map +1 -1
  17. package/dist/esm/pipeline/advanced/chart/pipeline/columnPercent.js +3 -2
  18. package/dist/esm/pipeline/advanced/chart/pipeline/columnPercent.js.map +1 -1
  19. package/dist/esm/pipeline/advanced/chart/pipeline/donut.js +3 -2
  20. package/dist/esm/pipeline/advanced/chart/pipeline/donut.js.map +1 -1
  21. package/dist/esm/pipeline/advanced/chart/pipeline/dualAxis.js +3 -2
  22. package/dist/esm/pipeline/advanced/chart/pipeline/dualAxis.js.map +1 -1
  23. package/dist/esm/pipeline/advanced/chart/pipeline/funnel.js +3 -2
  24. package/dist/esm/pipeline/advanced/chart/pipeline/funnel.js.map +1 -1
  25. package/dist/esm/pipeline/advanced/chart/pipeline/heatmap.js +3 -2
  26. package/dist/esm/pipeline/advanced/chart/pipeline/heatmap.js.map +1 -1
  27. package/dist/esm/pipeline/advanced/chart/pipeline/line.js +3 -2
  28. package/dist/esm/pipeline/advanced/chart/pipeline/line.js.map +1 -1
  29. package/dist/esm/pipeline/advanced/chart/pipeline/pie.js +3 -2
  30. package/dist/esm/pipeline/advanced/chart/pipeline/pie.js.map +1 -1
  31. package/dist/esm/pipeline/advanced/chart/pipeline/radar.js +3 -2
  32. package/dist/esm/pipeline/advanced/chart/pipeline/radar.js.map +1 -1
  33. package/dist/esm/pipeline/advanced/chart/pipeline/rose.js +3 -2
  34. package/dist/esm/pipeline/advanced/chart/pipeline/rose.js.map +1 -1
  35. package/dist/esm/pipeline/advanced/chart/pipeline/roseParallel.js +3 -2
  36. package/dist/esm/pipeline/advanced/chart/pipeline/roseParallel.js.map +1 -1
  37. package/dist/esm/pipeline/advanced/chart/pipeline/scatter.js +3 -2
  38. package/dist/esm/pipeline/advanced/chart/pipeline/scatter.js.map +1 -1
  39. package/dist/esm/pipeline/advanced/chart/pipes/default/defaultDimensions.js +2 -1
  40. package/dist/esm/pipeline/advanced/chart/pipes/default/defaultDimensions.js.map +1 -1
  41. package/dist/esm/pipeline/advanced/chart/pipes/default/defaultMeasures.js +2 -1
  42. package/dist/esm/pipeline/advanced/chart/pipes/default/defaultMeasures.js.map +1 -1
  43. package/dist/esm/pipeline/advanced/chart/pipes/encoding/scatter.js +0 -1
  44. package/dist/esm/pipeline/advanced/chart/pipes/encoding/scatter.js.map +1 -1
  45. package/dist/esm/pipeline/advanced/chart/pipes/measures/buildMeasures.js +6 -7
  46. package/dist/esm/pipeline/advanced/chart/pipes/measures/buildMeasures.js.map +1 -1
  47. package/dist/esm/pipeline/advanced/chart/pipes/measures/buildMeasuresForDualAxis.js +5 -7
  48. package/dist/esm/pipeline/advanced/chart/pipes/measures/buildMeasuresForDualAxis.js.map +1 -1
  49. package/dist/esm/pipeline/advanced/chart/pipes/measures/buildMeasuresForScatter.js +5 -7
  50. package/dist/esm/pipeline/advanced/chart/pipes/measures/buildMeasuresForScatter.js.map +1 -1
  51. package/dist/esm/pipeline/advanced/chart/pipes/measures/deleteTooltipMeasure.d.ts +2 -0
  52. package/dist/esm/pipeline/advanced/chart/pipes/measures/deleteTooltipMeasure.js +12 -0
  53. package/dist/esm/pipeline/advanced/chart/pipes/measures/deleteTooltipMeasure.js.map +1 -0
  54. package/dist/esm/pipeline/advanced/chart/pipes/measures/index.d.ts +2 -1
  55. package/dist/esm/pipeline/advanced/chart/pipes/measures/index.js +2 -1
  56. package/dist/esm/pipeline/advanced/chart/pipes/measures/utils.d.ts +3 -3
  57. package/dist/esm/pipeline/advanced/chart/pipes/measures/utils.js +2 -4
  58. package/dist/esm/pipeline/advanced/chart/pipes/measures/utils.js.map +1 -1
  59. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltip.js +6 -6
  60. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltip.js.map +1 -1
  61. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipDualAxis.js +5 -4
  62. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipDualAxis.js.map +1 -1
  63. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipHeatmap.js +7 -7
  64. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipHeatmap.js.map +1 -1
  65. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipScatter.js +7 -7
  66. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipScatter.js.map +1 -1
  67. package/dist/esm/pipeline/utils/chatType.js +3 -3
  68. package/dist/esm/pipeline/utils/chatType.js.map +1 -1
  69. package/dist/esm/pipeline/utils/measures/delete.d.ts +8 -0
  70. package/dist/esm/pipeline/utils/measures/delete.js +40 -0
  71. package/dist/esm/pipeline/utils/measures/delete.js.map +1 -0
  72. package/dist/esm/pipeline/utils/measures/index.d.ts +1 -0
  73. package/dist/esm/pipeline/utils/measures/index.js +1 -0
  74. package/dist/umd/index.js +123 -70
  75. package/dist/umd/index.js.map +1 -1
  76. package/package.json +1 -1
@@ -53,7 +53,6 @@ const generateDefaultMeasureEncoding = (measures, encoding)=>{
53
53
  encoding.y = unique(measures.filter((item)=>'xAxis' === item.encoding || 'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
54
54
  };
55
55
  const generateMeasureEncoding = (measures, encoding)=>{
56
- encoding.tooltip = measures.map((item)=>item.id);
57
56
  encoding.y = unique(measures.filter((item)=>'xAxis' === item.encoding || 'yAxis' === item.encoding || !item.encoding).map((item)=>item.id));
58
57
  const color = unique(measures.filter((item)=>'color' === item.encoding).map((item)=>item.id));
59
58
  if (color.length > 0) encoding.color = [
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/advanced/chart/pipes/encoding/scatter.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/scatter.ts"],"sourcesContent":["import { unique } from 'remeda'\nimport { MeasureName } from 'src/dataReshape'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Dimension, Dimensions, Encoding, Measure, Measures } from 'src/types'\n\nexport const defaultEncodingForScatter: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n const encoding: Encoding = {}\n generateDefaultDimensionEncoding(dimensions, encoding)\n generateDefaultMeasureEncoding(measures, encoding)\n return { ...advancedVSeed, encoding }\n}\n\nexport const encodingForScatter: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n // prepare measures and dimensions\n const measures = findAllMeasures(vseedMeasures)\n\n // exist encoding condition\n const hasDimensionEncoding = dimensions.some((item: Dimension) => item.encoding)\n const hasMeasureEncoding = measures.some((item: Measure) => item.encoding)\n\n // encoding for modify in place\n const encoding: Encoding = {}\n\n if (hasDimensionEncoding) {\n generateDimensionEncoding(dimensions, encoding)\n } else {\n generateDefaultDimensionEncoding(dimensions, encoding)\n }\n\n if (hasMeasureEncoding) {\n generateMeasureEncoding(measures, encoding)\n } else {\n generateDefaultMeasureEncoding(measures, encoding)\n }\n\n return { ...advancedVSeed, encoding }\n}\n/**\n * --------------------维度--------------------\n */\nconst generateDefaultDimensionEncoding = (dimensions: Dimensions, encoding: Encoding) => {\n const dimensionsWithoutMeasureName = dimensions.filter((item) => item.id !== MeasureName)\n const uniqueDimIds = unique(dimensionsWithoutMeasureName.map((d) => d.id))\n encoding.color = uniqueDimIds.slice(0)\n encoding.detail = uniqueDimIds.slice(0)\n encoding.tooltip = uniqueDimIds.filter((d) => d !== MeasureName) // 展示指标名称之外的所有维度\n encoding.label = [] // 默认不展示标签\n encoding.row = [] // 默认不进行行透视\n encoding.column = [] // 默认不进行列透视\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding) => {\n // color\n encoding.color = unique(dimensions.filter((item) => item.encoding === 'color').map((item) => item.id))\n if (encoding.color.length === 0) {\n encoding.color = [MeasureName]\n }\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 = [MeasureName]\n }\n // tooltip\n encoding.tooltip = unique(dimensions.map((item) => item.id))\n encoding.tooltip = encoding.tooltip.filter((d) => d !== MeasureName)\n}\n\n/**\n * --------------------指标--------------------\n */\nconst generateDefaultMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.y = unique(\n measures\n .filter((item) => item.encoding === 'xAxis' || item.encoding === 'yAxis' || !item.encoding)\n .map((item) => item.id),\n )\n}\nconst generateMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.tooltip = measures.map((item) => item.id)\n encoding.y = unique(\n measures\n .filter((item) => item.encoding === 'xAxis' || item.encoding === 'yAxis' || !item.encoding)\n .map((item) => item.id),\n )\n const color = unique(measures.filter((item) => item.encoding === 'color').map((item) => item.id))\n if (color.length > 0) {\n encoding.color = [color[0]]\n }\n\n // tooltip\n const tooltip = unique(measures.filter((item) => item.encoding === 'tooltip').map((item) => item.id))\n encoding.tooltip = unique([...(encoding.tooltip || []), ...tooltip])\n}\n"],"names":["defaultEncodingForScatter","advancedVSeed","vseedMeasures","dimensions","measures","findAllMeasures","encoding","generateDefaultDimensionEncoding","generateDefaultMeasureEncoding","encodingForScatter","hasDimensionEncoding","item","hasMeasureEncoding","generateDimensionEncoding","generateMeasureEncoding","dimensionsWithoutMeasureName","MeasureName","uniqueDimIds","unique","d","color","tooltip"],"mappings":"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"}
1
+ {"version":3,"file":"pipeline/advanced/chart/pipes/encoding/scatter.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/scatter.ts"],"sourcesContent":["import { unique } from 'remeda'\nimport { MeasureName } from 'src/dataReshape'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Dimension, Dimensions, Encoding, Measure, Measures } from 'src/types'\n\nexport const defaultEncodingForScatter: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n const measures = findAllMeasures(vseedMeasures)\n const encoding: Encoding = {}\n generateDefaultDimensionEncoding(dimensions, encoding)\n generateDefaultMeasureEncoding(measures, encoding)\n return { ...advancedVSeed, encoding }\n}\n\nexport const encodingForScatter: AdvancedPipe = (advancedVSeed) => {\n const { measures: vseedMeasures = [], dimensions = [] } = advancedVSeed\n // prepare measures and dimensions\n const measures = findAllMeasures(vseedMeasures)\n\n // exist encoding condition\n const hasDimensionEncoding = dimensions.some((item: Dimension) => item.encoding)\n const hasMeasureEncoding = measures.some((item: Measure) => item.encoding)\n\n // encoding for modify in place\n const encoding: Encoding = {}\n\n if (hasDimensionEncoding) {\n generateDimensionEncoding(dimensions, encoding)\n } else {\n generateDefaultDimensionEncoding(dimensions, encoding)\n }\n\n if (hasMeasureEncoding) {\n generateMeasureEncoding(measures, encoding)\n } else {\n generateDefaultMeasureEncoding(measures, encoding)\n }\n\n return { ...advancedVSeed, encoding }\n}\n/**\n * --------------------维度--------------------\n */\nconst generateDefaultDimensionEncoding = (dimensions: Dimensions, encoding: Encoding) => {\n const dimensionsWithoutMeasureName = dimensions.filter((item) => item.id !== MeasureName)\n const uniqueDimIds = unique(dimensionsWithoutMeasureName.map((d) => d.id))\n encoding.color = uniqueDimIds.slice(0)\n encoding.detail = uniqueDimIds.slice(0)\n encoding.tooltip = uniqueDimIds.filter((d) => d !== MeasureName) // 展示指标名称之外的所有维度\n encoding.label = [] // 默认不展示标签\n encoding.row = [] // 默认不进行行透视\n encoding.column = [] // 默认不进行列透视\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding) => {\n // color\n encoding.color = unique(dimensions.filter((item) => item.encoding === 'color').map((item) => item.id))\n if (encoding.color.length === 0) {\n encoding.color = [MeasureName]\n }\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 = [MeasureName]\n }\n // tooltip\n encoding.tooltip = unique(dimensions.map((item) => item.id))\n encoding.tooltip = encoding.tooltip.filter((d) => d !== MeasureName)\n}\n\n/**\n * --------------------指标--------------------\n */\nconst generateDefaultMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.y = unique(\n measures\n .filter((item) => item.encoding === 'xAxis' || item.encoding === 'yAxis' || !item.encoding)\n .map((item) => item.id),\n )\n}\nconst generateMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.y = unique(\n measures\n .filter((item) => item.encoding === 'xAxis' || item.encoding === 'yAxis' || !item.encoding)\n .map((item) => item.id),\n )\n const color = unique(measures.filter((item) => item.encoding === 'color').map((item) => item.id))\n if (color.length > 0) {\n encoding.color = [color[0]]\n }\n\n // tooltip\n const tooltip = unique(measures.filter((item) => item.encoding === 'tooltip').map((item) => item.id))\n encoding.tooltip = unique([...(encoding.tooltip || []), ...tooltip])\n}\n"],"names":["defaultEncodingForScatter","advancedVSeed","vseedMeasures","dimensions","measures","findAllMeasures","encoding","generateDefaultDimensionEncoding","generateDefaultMeasureEncoding","encodingForScatter","hasDimensionEncoding","item","hasMeasureEncoding","generateDimensionEncoding","generateMeasureEncoding","dimensionsWithoutMeasureName","MeasureName","uniqueDimIds","unique","d","color","tooltip"],"mappings":"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"}
@@ -1,16 +1,15 @@
1
1
  import { isMeasureTreeWithChildren, isMeasureTreeWithParentId, normalizeMeasureTree } from "./utils.js";
2
2
  import { isPivotChart } from "../../../../utils/index.js";
3
- const buildMeasures = (advancedVSeed, context)=>{
4
- const { vseed } = context;
5
- if (isMeasureTreeWithChildren(vseed)) {
6
- advancedVSeed.measures = normalizeMeasureTree(vseed.measures);
3
+ const buildMeasures = (advancedVSeed)=>{
4
+ if (isMeasureTreeWithChildren(advancedVSeed.measures)) {
5
+ advancedVSeed.measures = normalizeMeasureTree(advancedVSeed.measures);
7
6
  return advancedVSeed;
8
7
  }
9
- if (isMeasureTreeWithParentId(vseed)) {
10
- advancedVSeed.measures = generateMeasuresByParentId(vseed.measures);
8
+ if (isMeasureTreeWithParentId(advancedVSeed.measures)) {
9
+ advancedVSeed.measures = generateMeasuresByParentId(advancedVSeed.measures);
11
10
  return advancedVSeed;
12
11
  }
13
- if (isPivotChart(vseed)) advancedVSeed.measures = basicMeasuresToMeasureTree(advancedVSeed.measures);
12
+ if (isPivotChart(advancedVSeed)) advancedVSeed.measures = basicMeasuresToMeasureTree(advancedVSeed.measures);
14
13
  return advancedVSeed;
15
14
  };
16
15
  const generateMeasuresByParentId = (measures)=>{
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/advanced/chart/pipes/measures/buildMeasures.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/measures/buildMeasures.ts"],"sourcesContent":["import type { AdvancedPipe, Column, MeasureGroup, Measures, MeasureTree } from 'src/types'\nimport { isMeasureTreeWithChildren, isMeasureTreeWithParentId, normalizeMeasureTree } from './utils'\nimport { isPivotChart } from 'src/pipeline/utils'\n\nexport const buildMeasures: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context as {\n vseed: Column\n }\n // 带Children的指标树, 不进行任何处理\n if (isMeasureTreeWithChildren(vseed)) {\n advancedVSeed.measures = normalizeMeasureTree(vseed.measures as MeasureTree)\n return advancedVSeed\n }\n // 带parentId的指标树, 转换为带children的指标树\n if (isMeasureTreeWithParentId(vseed)) {\n advancedVSeed.measures = generateMeasuresByParentId(vseed.measures as Measures)\n return advancedVSeed\n }\n\n /**\n * 透视图表, 自动生成指标树\n */\n if (isPivotChart(vseed)) {\n advancedVSeed.measures = basicMeasuresToMeasureTree(advancedVSeed.measures as Measures)\n }\n\n return advancedVSeed\n}\n\nconst generateMeasuresByParentId = (measures: Measures): MeasureTree => {\n const measureTree: MeasureGroup[] = []\n\n measures.forEach((measure) => {\n if (!measure.parentId) {\n return\n }\n\n const parent = measureTree.find((item) => item.id === measure.parentId)\n\n if (parent && 'children' in parent) {\n parent.children = parent.children || []\n parent.children.push(measure)\n } else {\n measureTree.push({\n id: measure.parentId,\n children: [measure],\n })\n }\n })\n\n return measureTree\n}\n\nconst basicMeasuresToMeasureTree = (measures: Measures): MeasureTree => {\n const id = measures.map((item) => item.id).join('-')\n const alias = measures.map((item) => item.alias || item.id).join('-')\n return [\n {\n id,\n alias,\n children: measures,\n },\n ]\n}\n"],"names":["buildMeasures","advancedVSeed","context","vseed","isMeasureTreeWithChildren","normalizeMeasureTree","isMeasureTreeWithParentId","generateMeasuresByParentId","isPivotChart","basicMeasuresToMeasureTree","measures","measureTree","measure","parent","item","id","alias"],"mappings":";;AAIO,MAAMA,gBAA8B,CAACC,eAAeC;IACzD,MAAM,EAAEC,KAAK,EAAE,GAAGD;IAIlB,IAAIE,0BAA0BD,QAAQ;QACpCF,cAAc,QAAQ,GAAGI,qBAAqBF,MAAM,QAAQ;QAC5D,OAAOF;IACT;IAEA,IAAIK,0BAA0BH,QAAQ;QACpCF,cAAc,QAAQ,GAAGM,2BAA2BJ,MAAM,QAAQ;QAClE,OAAOF;IACT;IAKA,IAAIO,aAAaL,QACfF,cAAc,QAAQ,GAAGQ,2BAA2BR,cAAc,QAAQ;IAG5E,OAAOA;AACT;AAEA,MAAMM,6BAA6B,CAACG;IAClC,MAAMC,cAA8B,EAAE;IAEtCD,SAAS,OAAO,CAAC,CAACE;QAChB,IAAI,CAACA,QAAQ,QAAQ,EACnB;QAGF,MAAMC,SAASF,YAAY,IAAI,CAAC,CAACG,OAASA,KAAK,EAAE,KAAKF,QAAQ,QAAQ;QAEtE,IAAIC,UAAU,cAAcA,QAAQ;YAClCA,OAAO,QAAQ,GAAGA,OAAO,QAAQ,IAAI,EAAE;YACvCA,OAAO,QAAQ,CAAC,IAAI,CAACD;QACvB,OACED,YAAY,IAAI,CAAC;YACf,IAAIC,QAAQ,QAAQ;YACpB,UAAU;gBAACA;aAAQ;QACrB;IAEJ;IAEA,OAAOD;AACT;AAEA,MAAMF,6BAA6B,CAACC;IAClC,MAAMK,KAAKL,SAAS,GAAG,CAAC,CAACI,OAASA,KAAK,EAAE,EAAE,IAAI,CAAC;IAChD,MAAME,QAAQN,SAAS,GAAG,CAAC,CAACI,OAASA,KAAK,KAAK,IAAIA,KAAK,EAAE,EAAE,IAAI,CAAC;IACjE,OAAO;QACL;YACEC;YACAC;YACA,UAAUN;QACZ;KACD;AACH"}
1
+ {"version":3,"file":"pipeline/advanced/chart/pipes/measures/buildMeasures.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/measures/buildMeasures.ts"],"sourcesContent":["import type { AdvancedPipe, AdvancedVSeed, MeasureGroup, Measures, MeasureTree } from 'src/types'\nimport { isMeasureTreeWithChildren, isMeasureTreeWithParentId, normalizeMeasureTree } from './utils'\nimport { isPivotChart } from 'src/pipeline/utils'\n\nexport const buildMeasures: AdvancedPipe = (advancedVSeed) => {\n // 带Children的指标树, 不进行任何处理\n if (isMeasureTreeWithChildren(advancedVSeed.measures)) {\n advancedVSeed.measures = normalizeMeasureTree(advancedVSeed.measures as MeasureTree)\n return advancedVSeed\n }\n // 带parentId的指标树, 转换为带children的指标树\n if (isMeasureTreeWithParentId(advancedVSeed.measures)) {\n advancedVSeed.measures = generateMeasuresByParentId(advancedVSeed.measures as Measures)\n return advancedVSeed\n }\n\n /**\n * 透视图表, 自动生成指标树\n */\n if (isPivotChart(advancedVSeed as AdvancedVSeed)) {\n advancedVSeed.measures = basicMeasuresToMeasureTree(advancedVSeed.measures as Measures)\n }\n\n return advancedVSeed\n}\n\nconst generateMeasuresByParentId = (measures: Measures): MeasureTree => {\n const measureTree: MeasureGroup[] = []\n\n measures.forEach((measure) => {\n if (!measure.parentId) {\n return\n }\n\n const parent = measureTree.find((item) => item.id === measure.parentId)\n\n if (parent && 'children' in parent) {\n parent.children = parent.children || []\n parent.children.push(measure)\n } else {\n measureTree.push({\n id: measure.parentId,\n children: [measure],\n })\n }\n })\n\n return measureTree\n}\n\nconst basicMeasuresToMeasureTree = (measures: Measures): MeasureTree => {\n const id = measures.map((item) => item.id).join('-')\n const alias = measures.map((item) => item.alias || item.id).join('-')\n return [\n {\n id,\n alias,\n children: measures,\n },\n ]\n}\n"],"names":["buildMeasures","advancedVSeed","isMeasureTreeWithChildren","normalizeMeasureTree","isMeasureTreeWithParentId","generateMeasuresByParentId","isPivotChart","basicMeasuresToMeasureTree","measures","measureTree","measure","parent","item","id","alias"],"mappings":";;AAIO,MAAMA,gBAA8B,CAACC;IAE1C,IAAIC,0BAA0BD,cAAc,QAAQ,GAAG;QACrDA,cAAc,QAAQ,GAAGE,qBAAqBF,cAAc,QAAQ;QACpE,OAAOA;IACT;IAEA,IAAIG,0BAA0BH,cAAc,QAAQ,GAAG;QACrDA,cAAc,QAAQ,GAAGI,2BAA2BJ,cAAc,QAAQ;QAC1E,OAAOA;IACT;IAKA,IAAIK,aAAaL,gBACfA,cAAc,QAAQ,GAAGM,2BAA2BN,cAAc,QAAQ;IAG5E,OAAOA;AACT;AAEA,MAAMI,6BAA6B,CAACG;IAClC,MAAMC,cAA8B,EAAE;IAEtCD,SAAS,OAAO,CAAC,CAACE;QAChB,IAAI,CAACA,QAAQ,QAAQ,EACnB;QAGF,MAAMC,SAASF,YAAY,IAAI,CAAC,CAACG,OAASA,KAAK,EAAE,KAAKF,QAAQ,QAAQ;QAEtE,IAAIC,UAAU,cAAcA,QAAQ;YAClCA,OAAO,QAAQ,GAAGA,OAAO,QAAQ,IAAI,EAAE;YACvCA,OAAO,QAAQ,CAAC,IAAI,CAACD;QACvB,OACED,YAAY,IAAI,CAAC;YACf,IAAIC,QAAQ,QAAQ;YACpB,UAAU;gBAACA;aAAQ;QACrB;IAEJ;IAEA,OAAOD;AACT;AAEA,MAAMF,6BAA6B,CAACC;IAClC,MAAMK,KAAKL,SAAS,GAAG,CAAC,CAACI,OAASA,KAAK,EAAE,EAAE,IAAI,CAAC;IAChD,MAAME,QAAQN,SAAS,GAAG,CAAC,CAACI,OAASA,KAAK,KAAK,IAAIA,KAAK,EAAE,EAAE,IAAI,CAAC;IACjE,OAAO;QACL;YACEC;YACAC;YACA,UAAUN;QACZ;KACD;AACH"}
@@ -1,15 +1,13 @@
1
1
  import { isMeasureTreeWithChildren, isMeasureTreeWithParentId } from "./utils.js";
2
+ import { clone } from "remeda";
2
3
  const buildMeasuresForDualAxis = (advancedVSeed, context)=>{
3
4
  const { vseed } = context;
4
- if (isMeasureTreeWithChildren(vseed)) {
5
- advancedVSeed.measures = vseed.measures;
5
+ if (isMeasureTreeWithChildren(advancedVSeed.measures)) return advancedVSeed;
6
+ if (isMeasureTreeWithParentId(advancedVSeed.measures)) {
7
+ advancedVSeed.measures = generateMeasuresByParentId(advancedVSeed.measures);
6
8
  return advancedVSeed;
7
9
  }
8
- if (isMeasureTreeWithParentId(vseed)) {
9
- advancedVSeed.measures = generateMeasuresByParentId(vseed.measures);
10
- return advancedVSeed;
11
- }
12
- const dualMeasures = vseed.dualMeasures ? vseed.dualMeasures : basicMeasuresToDualMeasures(advancedVSeed.measures || []);
10
+ const dualMeasures = vseed.dualMeasures ? clone(vseed.dualMeasures) : basicMeasuresToDualMeasures(advancedVSeed.measures || []);
13
11
  advancedVSeed.measures = dualMeasuresToMeasureTree(dualMeasures);
14
12
  return advancedVSeed;
15
13
  };
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/advanced/chart/pipes/measures/buildMeasuresForDualAxis.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/measures/buildMeasuresForDualAxis.ts"],"sourcesContent":["import type { AdvancedPipe, DualAxis, DualMeasures, MeasureGroup, Measures, MeasureTree } from 'src/types'\nimport { isMeasureTreeWithParentId, isMeasureTreeWithChildren } from './utils'\n\nexport const buildMeasuresForDualAxis: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context as {\n vseed: DualAxis\n }\n\n // 带Children的指标树, 不进行任何处理\n if (isMeasureTreeWithChildren(vseed)) {\n advancedVSeed.measures = vseed.measures\n return advancedVSeed\n }\n // 带parentId的指标树, 转换为带children的指标树\n if (isMeasureTreeWithParentId(vseed)) {\n advancedVSeed.measures = generateMeasuresByParentId(vseed.measures as Measures)\n return advancedVSeed\n }\n\n /**\n * 既不是带Children的指标树, 也不是带parentId的指标树, 则自动生成指标\n */\n const dualMeasures = vseed.dualMeasures\n ? 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 if (!item.parentId) {\n return\n }\n\n if (!dualMeasures.find((d) => d.id === item.parentId)) {\n dualMeasures.push({\n id: item.parentId,\n primaryMeasures: [],\n secondaryMeasures: [],\n })\n }\n\n const dualChart = dualMeasures.find((d) => d.id === item.parentId)\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]\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","basicMeasuresToDualMeasures","dualMeasuresToMeasureTree","basicMeasures","primaryMeasures","secondaryMeasures","index","item","encoding","Array","isPrimaryYAxis","isSecondaryYAxis","measureTree","id","groupChildren","groupId","arrPrimaryMeasures","alias","arrSecondaryMeasures","measures","d","dualChart","isPrimary","isSecondary","isEmpty"],"mappings":"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"}
1
+ {"version":3,"file":"pipeline/advanced/chart/pipes/measures/buildMeasuresForDualAxis.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/measures/buildMeasuresForDualAxis.ts"],"sourcesContent":["import type { AdvancedPipe, DualAxis, DualMeasures, MeasureGroup, Measures, MeasureTree } from 'src/types'\nimport { isMeasureTreeWithParentId, isMeasureTreeWithChildren } from './utils'\nimport { clone } from 'remeda'\n\nexport const buildMeasuresForDualAxis: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context as {\n vseed: DualAxis\n }\n\n // 带Children的指标树, 不进行任何处理\n if (isMeasureTreeWithChildren(advancedVSeed.measures)) {\n return advancedVSeed\n }\n // 带parentId的指标树, 转换为带children的指标树\n if (isMeasureTreeWithParentId(advancedVSeed.measures)) {\n advancedVSeed.measures = generateMeasuresByParentId(advancedVSeed.measures as Measures)\n return advancedVSeed\n }\n\n /**\n * 既不是带Children的指标树, 也不是带parentId的指标树, 则自动生成指标\n */\n const dualMeasures = vseed.dualMeasures\n ? clone(vseed.dualMeasures)\n : basicMeasuresToDualMeasures(advancedVSeed.measures || [])\n advancedVSeed.measures = dualMeasuresToMeasureTree(dualMeasures)\n\n return advancedVSeed\n}\n\nconst basicMeasuresToDualMeasures = (basicMeasures: Measures): DualMeasures => {\n const primaryMeasures: Measures = []\n const secondaryMeasures: Measures = []\n\n for (let index = 0; index < basicMeasures.length; index++) {\n const item = basicMeasures[index]\n const encoding = Array.isArray(item.encoding) ? item.encoding : [item.encoding]\n const isPrimaryYAxis = encoding.includes('primaryYAxis')\n const isSecondaryYAxis = encoding.includes('secondaryYAxis')\n\n if (isPrimaryYAxis) {\n primaryMeasures.push(item)\n } else if (isSecondaryYAxis) {\n secondaryMeasures.push(item)\n } else {\n if (index === 0) {\n primaryMeasures.push(item)\n } else {\n secondaryMeasures.push(item)\n }\n }\n }\n\n return [{ id: 'dualMeasures', primaryMeasures, secondaryMeasures }]\n}\n\nconst dualMeasuresToMeasureTree = (dualMeasures: DualMeasures): MeasureTree => {\n const measureTree = dualMeasures.map((item, index): MeasureGroup => {\n const { id, primaryMeasures, secondaryMeasures } = item\n const groupChildren: MeasureGroup[] = []\n\n let groupId: string = `${id}-`\n if (primaryMeasures) {\n const arrPrimaryMeasures = Array.isArray(primaryMeasures) ? primaryMeasures : [primaryMeasures]\n const alias = arrPrimaryMeasures.map((item) => item.alias || item.id).toString()\n groupId += alias\n groupChildren.push({\n id: `${index}-primary`,\n alias: arrPrimaryMeasures.map((item) => item.alias || item.id).toString(),\n children: arrPrimaryMeasures,\n })\n }\n if (secondaryMeasures) {\n const arrSecondaryMeasures = Array.isArray(secondaryMeasures) ? secondaryMeasures : [secondaryMeasures]\n const alias = arrSecondaryMeasures.map((item) => item.alias || item.id).toString()\n groupId += alias\n groupChildren.push({\n id: `${index}-secondary`,\n alias: arrSecondaryMeasures.map((item) => item.alias || item.id).toString(),\n children: arrSecondaryMeasures,\n })\n }\n\n return {\n id: groupId,\n alias: groupId,\n children: groupChildren,\n }\n })\n\n // 只有1个双轴图, 仅返回2层, vchart 绘制双轴图\n if (dualMeasures.length === 1) {\n return measureTree[0].children || []\n }\n\n // 有多个双轴图, 返回3层, pivot chart 绘制组合双轴图\n return measureTree\n}\n\nconst generateMeasuresByParentId = (measures: Measures) => {\n const dualMeasures: DualMeasures = []\n\n measures.forEach((item) => {\n if (!item.parentId) {\n return\n }\n\n if (!dualMeasures.find((d) => d.id === item.parentId)) {\n dualMeasures.push({\n id: item.parentId,\n primaryMeasures: [],\n secondaryMeasures: [],\n })\n }\n\n const dualChart = dualMeasures.find((d) => d.id === item.parentId)\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]\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","d","dualChart","isPrimary","isSecondary","isEmpty"],"mappings":";;AAIO,MAAMA,2BAAyC,CAACC,eAAeC;IACpE,MAAM,EAAEC,KAAK,EAAE,GAAGD;IAKlB,IAAIE,0BAA0BH,cAAc,QAAQ,GAClD,OAAOA;IAGT,IAAII,0BAA0BJ,cAAc,QAAQ,GAAG;QACrDA,cAAc,QAAQ,GAAGK,2BAA2BL,cAAc,QAAQ;QAC1E,OAAOA;IACT;IAKA,MAAMM,eAAeJ,MAAM,YAAY,GACnCK,MAAML,MAAM,YAAY,IACxBM,4BAA4BR,cAAc,QAAQ,IAAI,EAAE;IAC5DA,cAAc,QAAQ,GAAGS,0BAA0BH;IAEnD,OAAON;AACT;AAEA,MAAMQ,8BAA8B,CAACE;IACnC,MAAMC,kBAA4B,EAAE;IACpC,MAAMC,oBAA8B,EAAE;IAEtC,IAAK,IAAIC,QAAQ,GAAGA,QAAQH,cAAc,MAAM,EAAEG,QAAS;QACzD,MAAMC,OAAOJ,aAAa,CAACG,MAAM;QACjC,MAAME,WAAWC,MAAM,OAAO,CAACF,KAAK,QAAQ,IAAIA,KAAK,QAAQ,GAAG;YAACA,KAAK,QAAQ;SAAC;QAC/E,MAAMG,iBAAiBF,SAAS,QAAQ,CAAC;QACzC,MAAMG,mBAAmBH,SAAS,QAAQ,CAAC;QAE3C,IAAIE,gBACFN,gBAAgB,IAAI,CAACG;aAChB,IAAII,kBACTN,kBAAkB,IAAI,CAACE;aAEvB,IAAID,AAAU,MAAVA,OACFF,gBAAgB,IAAI,CAACG;aAErBF,kBAAkB,IAAI,CAACE;IAG7B;IAEA,OAAO;QAAC;YAAE,IAAI;YAAgBH;YAAiBC;QAAkB;KAAE;AACrE;AAEA,MAAMH,4BAA4B,CAACH;IACjC,MAAMa,cAAcb,aAAa,GAAG,CAAC,CAACQ,MAAMD;QAC1C,MAAM,EAAEO,EAAE,EAAET,eAAe,EAAEC,iBAAiB,EAAE,GAAGE;QACnD,MAAMO,gBAAgC,EAAE;QAExC,IAAIC,UAAkB,GAAGF,GAAG,CAAC,CAAC;QAC9B,IAAIT,iBAAiB;YACnB,MAAMY,qBAAqBP,MAAM,OAAO,CAACL,mBAAmBA,kBAAkB;gBAACA;aAAgB;YAC/F,MAAMa,QAAQD,mBAAmB,GAAG,CAAC,CAACT,OAASA,KAAK,KAAK,IAAIA,KAAK,EAAE,EAAE,QAAQ;YAC9EQ,WAAWE;YACXH,cAAc,IAAI,CAAC;gBACjB,IAAI,GAAGR,MAAM,QAAQ,CAAC;gBACtB,OAAOU,mBAAmB,GAAG,CAAC,CAACT,OAASA,KAAK,KAAK,IAAIA,KAAK,EAAE,EAAE,QAAQ;gBACvE,UAAUS;YACZ;QACF;QACA,IAAIX,mBAAmB;YACrB,MAAMa,uBAAuBT,MAAM,OAAO,CAACJ,qBAAqBA,oBAAoB;gBAACA;aAAkB;YACvG,MAAMY,QAAQC,qBAAqB,GAAG,CAAC,CAACX,OAASA,KAAK,KAAK,IAAIA,KAAK,EAAE,EAAE,QAAQ;YAChFQ,WAAWE;YACXH,cAAc,IAAI,CAAC;gBACjB,IAAI,GAAGR,MAAM,UAAU,CAAC;gBACxB,OAAOY,qBAAqB,GAAG,CAAC,CAACX,OAASA,KAAK,KAAK,IAAIA,KAAK,EAAE,EAAE,QAAQ;gBACzE,UAAUW;YACZ;QACF;QAEA,OAAO;YACL,IAAIH;YACJ,OAAOA;YACP,UAAUD;QACZ;IACF;IAGA,IAAIf,AAAwB,MAAxBA,aAAa,MAAM,EACrB,OAAOa,WAAW,CAAC,EAAE,CAAC,QAAQ,IAAI,EAAE;IAItC,OAAOA;AACT;AAEA,MAAMd,6BAA6B,CAACqB;IAClC,MAAMpB,eAA6B,EAAE;IAErCoB,SAAS,OAAO,CAAC,CAACZ;QAChB,IAAI,CAACA,KAAK,QAAQ,EAChB;QAGF,IAAI,CAACR,aAAa,IAAI,CAAC,CAACqB,IAAMA,EAAE,EAAE,KAAKb,KAAK,QAAQ,GAClDR,aAAa,IAAI,CAAC;YAChB,IAAIQ,KAAK,QAAQ;YACjB,iBAAiB,EAAE;YACnB,mBAAmB,EAAE;QACvB;QAGF,MAAMc,YAAYtB,aAAa,IAAI,CAAC,CAACqB,IAAMA,EAAE,EAAE,KAAKb,KAAK,QAAQ;QACjE,IAAI,CAACc,aAAa,CAACZ,MAAM,OAAO,CAACY,UAAU,eAAe,KAAK,CAACZ,MAAM,OAAO,CAACY,UAAU,iBAAiB,GACvG;QAGF,MAAMb,WAAWC,MAAM,OAAO,CAACF,KAAK,QAAQ,IAAIA,KAAK,QAAQ,GAAG;YAACA,KAAK,QAAQ;SAAC;QAC/E,MAAMe,YAAYd,SAAS,QAAQ,CAAC;QACpC,MAAMe,cAAcf,SAAS,QAAQ,CAAC;QACtC,MAAMgB,UAAU,CAACjB,KAAK,QAAQ;QAE9B,IAAIe,WACFD,UAAU,eAAe,CAAC,IAAI,CAACd;aAC1B,IAAIgB,aACTF,UAAU,iBAAiB,CAAC,IAAI,CAACd;aAC5B,IAAIiB,SACT,IAAIH,AAAqC,MAArCA,UAAU,eAAe,CAAC,MAAM,EAClCA,UAAU,eAAe,CAAC,IAAI,CAACd;aAE/Bc,UAAU,iBAAiB,CAAC,IAAI,CAACd;IAGvC;IAEA,OAAOL,0BAA0BH;AACnC"}
@@ -1,15 +1,13 @@
1
1
  import { isMeasureTreeWithChildren, isMeasureTreeWithParentId } from "./utils.js";
2
+ import { clone } from "remeda";
2
3
  const buildMeasuresForScatter = (advancedVSeed, context)=>{
3
4
  const { vseed } = context;
4
- if (isMeasureTreeWithChildren(vseed)) {
5
- advancedVSeed.measures = vseed.measures;
5
+ if (isMeasureTreeWithChildren(advancedVSeed.measures)) return advancedVSeed;
6
+ if (isMeasureTreeWithParentId(advancedVSeed.measures)) {
7
+ advancedVSeed.measures = generateMeasuresByParentId(advancedVSeed.measures);
6
8
  return advancedVSeed;
7
9
  }
8
- if (isMeasureTreeWithParentId(vseed)) {
9
- advancedVSeed.measures = generateMeasuresByParentId(vseed.measures);
10
- return advancedVSeed;
11
- }
12
- const scatterMeasures = vseed.scatterMeasures ? vseed.scatterMeasures : basicMeasuresToScatterMeasures(advancedVSeed.measures || []);
10
+ const scatterMeasures = vseed.scatterMeasures ? clone(vseed.scatterMeasures) : basicMeasuresToScatterMeasures(advancedVSeed.measures || []);
13
11
  advancedVSeed.measures = scatterMeasuresToMeasureTree(scatterMeasures);
14
12
  return advancedVSeed;
15
13
  };
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/advanced/chart/pipes/measures/buildMeasuresForScatter.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/measures/buildMeasuresForScatter.ts"],"sourcesContent":["import type { AdvancedPipe, MeasureGroup, Measures, MeasureTree, Scatter, ScatterMeasures } from 'src/types'\nimport { isMeasureTreeWithParentId, isMeasureTreeWithChildren } from './utils'\n\nexport const buildMeasuresForScatter: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context as {\n vseed: Scatter\n }\n\n // 带Children的指标树, 不进行任何处理\n if (isMeasureTreeWithChildren(vseed)) {\n advancedVSeed.measures = vseed.measures\n return advancedVSeed\n }\n // 带parentId的指标树, 转换为带children的指标树\n if (isMeasureTreeWithParentId(vseed)) {\n advancedVSeed.measures = generateMeasuresByParentId(vseed.measures as Measures)\n return advancedVSeed\n }\n\n /**\n * 既不是带Children的指标树, 也不是带parentId的指标树, 则自动生成指标\n */\n\n const scatterMeasures = vseed.scatterMeasures\n ? 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 if (!item.parentId) {\n return\n }\n\n if (!scatterMeasures.find((d) => d.id === item.parentId)) {\n scatterMeasures.push({\n id: item.parentId,\n yMeasures: [],\n xMeasures: [],\n })\n }\n\n const scatterChart = scatterMeasures.find((d) => d.id === item.parentId)\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]\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","basicMeasuresToScatterMeasures","scatterMeasuresToMeasureTree","basicMeasures","yMeasures","xMeasures","index","item","encoding","Array","isYAxis","isXAxis","measureTree","id","groupChildren","groupId","arrPrimaryMeasures","alias","arrSecondaryMeasures","measures","d","scatterChart","isX","isY","isEmpty"],"mappings":"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"}
1
+ {"version":3,"file":"pipeline/advanced/chart/pipes/measures/buildMeasuresForScatter.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/measures/buildMeasuresForScatter.ts"],"sourcesContent":["import type { AdvancedPipe, MeasureGroup, Measures, MeasureTree, Scatter, ScatterMeasures } from 'src/types'\nimport { isMeasureTreeWithParentId, isMeasureTreeWithChildren } from './utils'\nimport { clone } from 'remeda'\n\nexport const buildMeasuresForScatter: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context as {\n vseed: Scatter\n }\n\n // 带Children的指标树, 不进行任何处理\n if (isMeasureTreeWithChildren(advancedVSeed.measures)) {\n return advancedVSeed\n }\n // 带parentId的指标树, 转换为带children的指标树\n if (isMeasureTreeWithParentId(advancedVSeed.measures)) {\n advancedVSeed.measures = generateMeasuresByParentId(advancedVSeed.measures as Measures)\n return advancedVSeed\n }\n\n /**\n * 既不是带Children的指标树, 也不是带parentId的指标树, 则自动生成指标\n */\n\n const scatterMeasures = vseed.scatterMeasures\n ? clone(vseed.scatterMeasures)\n : basicMeasuresToScatterMeasures(advancedVSeed.measures || [])\n advancedVSeed.measures = scatterMeasuresToMeasureTree(scatterMeasures)\n\n return advancedVSeed\n}\n\nconst basicMeasuresToScatterMeasures = (basicMeasures: Measures): ScatterMeasures => {\n const yMeasures: Measures = []\n const xMeasures: Measures = []\n\n for (let index = 0; index < basicMeasures.length; index++) {\n const item = basicMeasures[index]\n const encoding = Array.isArray(item.encoding) ? item.encoding : [item.encoding]\n const isYAxis = encoding.includes('yAxis')\n const isXAxis = encoding.includes('xAxis')\n\n if (isYAxis) {\n yMeasures.push(item)\n } else if (isXAxis) {\n xMeasures.push(item)\n } else {\n if (index !== 0) {\n yMeasures.push(item)\n } else {\n xMeasures.push(item)\n }\n }\n }\n\n if (yMeasures.length === 0 && xMeasures.length > 0) {\n yMeasures.push(xMeasures[0])\n }\n\n return [{ id: 'scatterMeasures', xMeasures, yMeasures }]\n}\n\nconst scatterMeasuresToMeasureTree = (scatterMeasures: ScatterMeasures): MeasureTree => {\n const measureTree = scatterMeasures.map((item, index): MeasureGroup => {\n const { id, xMeasures, yMeasures } = item\n const groupChildren: MeasureGroup[] = []\n\n let groupId: string = `${id}-`\n if (xMeasures) {\n const arrPrimaryMeasures = Array.isArray(xMeasures) ? xMeasures : [xMeasures]\n const alias = arrPrimaryMeasures.map((item) => item.alias || item.id).toString()\n groupId += alias\n groupChildren.push({\n id: `${index}-x`,\n alias: arrPrimaryMeasures.map((item) => item.alias || item.id).toString(),\n children: arrPrimaryMeasures,\n })\n }\n if (yMeasures) {\n const arrSecondaryMeasures = Array.isArray(yMeasures) ? yMeasures : [yMeasures]\n const alias = arrSecondaryMeasures.map((item) => item.alias || item.id).toString()\n groupId += alias\n groupChildren.push({\n id: `${index}-y`,\n alias: arrSecondaryMeasures.map((item) => item.alias || item.id).toString(),\n children: arrSecondaryMeasures,\n })\n }\n\n return {\n id: groupId,\n alias: groupId,\n children: groupChildren,\n }\n })\n\n // 只有1个散点图, 仅返回2层, vchart 绘制散点图\n if (scatterMeasures.length === 1) {\n return measureTree[0].children || []\n }\n\n // 有多个散点图, 返回3层, pivot chart 绘制组合散点图\n return measureTree\n}\n\nconst generateMeasuresByParentId = (measures: Measures) => {\n const scatterMeasures: ScatterMeasures = []\n\n measures.forEach((item) => {\n if (!item.parentId) {\n return\n }\n\n if (!scatterMeasures.find((d) => d.id === item.parentId)) {\n scatterMeasures.push({\n id: item.parentId,\n yMeasures: [],\n xMeasures: [],\n })\n }\n\n const scatterChart = scatterMeasures.find((d) => d.id === item.parentId)\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]\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","d","scatterChart","isX","isY","isEmpty"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { AdvancedPipe } from '../../../../../types';
2
+ export declare const deleteTooltipMeasure: AdvancedPipe;
@@ -0,0 +1,12 @@
1
+ import { deleteMeasureTreeByCallback } from "../../../../utils/index.js";
2
+ const deleteTooltipMeasure = (advancedVSeed)=>{
3
+ const deleteBy = (measure)=>'tooltip' === measure.encoding;
4
+ const measureTree = deleteMeasureTreeByCallback(advancedVSeed.measures, deleteBy);
5
+ return {
6
+ ...advancedVSeed,
7
+ measures: measureTree
8
+ };
9
+ };
10
+ export { deleteTooltipMeasure };
11
+
12
+ //# sourceMappingURL=deleteTooltipMeasure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline/advanced/chart/pipes/measures/deleteTooltipMeasure.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/measures/deleteTooltipMeasure.ts"],"sourcesContent":["import { deleteMeasureTreeByCallback } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Measure } from 'src/types'\n\nexport const deleteTooltipMeasure: AdvancedPipe = (advancedVSeed) => {\n const deleteBy = (measure: Measure) => measure.encoding === 'tooltip'\n\n const measureTree = deleteMeasureTreeByCallback(advancedVSeed.measures, deleteBy)\n\n return {\n ...advancedVSeed,\n measures: measureTree,\n }\n}\n"],"names":["deleteTooltipMeasure","advancedVSeed","deleteBy","measure","measureTree","deleteMeasureTreeByCallback"],"mappings":";AAGO,MAAMA,uBAAqC,CAACC;IACjD,MAAMC,WAAW,CAACC,UAAqBA,AAAqB,cAArBA,QAAQ,QAAQ;IAEvD,MAAMC,cAAcC,4BAA4BJ,cAAc,QAAQ,EAAEC;IAExE,OAAO;QACL,GAAGD,aAAa;QAChB,UAAUG;IACZ;AACF"}
@@ -1,4 +1,5 @@
1
+ export * from './utils';
1
2
  export { buildMeasuresForDualAxis } from './buildMeasuresForDualAxis';
2
3
  export { buildMeasures } from './buildMeasures';
3
4
  export { buildMeasuresForScatter } from './buildMeasuresForScatter';
4
- export * from './utils';
5
+ export { deleteTooltipMeasure } from './deleteTooltipMeasure';
@@ -1,5 +1,6 @@
1
1
  import { buildMeasuresForDualAxis } from "./buildMeasuresForDualAxis.js";
2
2
  import { buildMeasures } from "./buildMeasures.js";
3
3
  import { buildMeasuresForScatter } from "./buildMeasuresForScatter.js";
4
+ import { deleteTooltipMeasure } from "./deleteTooltipMeasure.js";
4
5
  export * from "./utils.js";
5
- export { buildMeasures, buildMeasuresForDualAxis, buildMeasuresForScatter };
6
+ export { buildMeasures, buildMeasuresForDualAxis, buildMeasuresForScatter, deleteTooltipMeasure };
@@ -1,16 +1,16 @@
1
- import type { AdvancedVSeed, MeasureGroup, MeasureTree, VSeed } from '../../../../../types';
1
+ import type { MeasureGroup, MeasureTree } from '../../../../../types';
2
2
  /**
3
3
  * @description 检查是否为指标树, 指标树深度大于1. 如果存在一个指标为组, 即有children配置, 则认为是指标树.
4
4
  * @param vseed vseed
5
5
  * @returns
6
6
  */
7
- export declare const isMeasureTreeWithChildren: (vseed: VSeed | AdvancedVSeed) => boolean;
7
+ export declare const isMeasureTreeWithChildren: <T extends MeasureTree>(measures?: T) => boolean;
8
8
  /**
9
9
  * @description 检查是否为指标树, 指标树存在parentId. 如果存在一个指标有parentId, 则认为是指标树.
10
10
  * @param vseed vseed
11
11
  * @returns
12
12
  */
13
- export declare const isMeasureTreeWithParentId: (vseed: VSeed | AdvancedVSeed) => boolean;
13
+ export declare const isMeasureTreeWithParentId: <T extends MeasureTree>(measures?: T) => boolean;
14
14
  /**
15
15
  * @description 保证指标树中的每一组都有children, 没有children的指标, 会被放到一个默认的指标组中.
16
16
  * @param measures 指标树
@@ -1,10 +1,8 @@
1
- const isMeasureTreeWithChildren = (vseed)=>{
2
- const { measures } = vseed;
1
+ const isMeasureTreeWithChildren = (measures)=>{
3
2
  if (!measures) return false;
4
3
  return measures.some((measure)=>'children' in measure);
5
4
  };
6
- const isMeasureTreeWithParentId = (vseed)=>{
7
- const { measures } = vseed;
5
+ const isMeasureTreeWithParentId = (measures)=>{
8
6
  if (!measures) return false;
9
7
  return measures.some((measure)=>'parentId' in measure);
10
8
  };
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/advanced/chart/pipes/measures/utils.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/measures/utils.ts"],"sourcesContent":["import type { AdvancedVSeed, MeasureGroup, MeasureTree, VSeed } from 'src/types'\n\n/**\n * @description 检查是否为指标树, 指标树深度大于1. 如果存在一个指标为组, 即有children配置, 则认为是指标树.\n * @param vseed vseed\n * @returns\n */\nexport const isMeasureTreeWithChildren = (vseed: VSeed | AdvancedVSeed) => {\n const { measures } = vseed\n\n if (!measures) {\n return false\n }\n\n return measures.some((measure) => 'children' in measure)\n}\n\n/**\n * @description 检查是否为指标树, 指标树存在parentId. 如果存在一个指标有parentId, 则认为是指标树.\n * @param vseed vseed\n * @returns\n */\nexport const isMeasureTreeWithParentId = (vseed: VSeed | AdvancedVSeed) => {\n const { measures } = vseed\n\n if (!measures) {\n return false\n }\n\n return measures.some((measure) => 'parentId' in measure)\n}\n\n/**\n * @description 保证指标树中的每一组都有children, 没有children的指标, 会被放到一个默认的指标组中.\n * @param measures 指标树\n * @returns\n */\nexport const normalizeMeasureTree = (measures: MeasureTree) => {\n const createEmptyMeasureGroup = (): MeasureGroup => {\n return {\n id: 'group',\n alias: '',\n children: [],\n }\n }\n\n let currentGroup: MeasureGroup = createEmptyMeasureGroup()\n const measureGroups: MeasureGroup[] = []\n for (const measure of measures) {\n if ('children' in measure) {\n // 当前指标组之前的所有独立指标成组\n if (currentGroup.children?.length) {\n currentGroup.id = [currentGroup.id, ...currentGroup.children.map((item) => item.id)].join('-')\n currentGroup.alias = currentGroup.children.map((item) => item.alias).join('-')\n measureGroups.push(currentGroup)\n currentGroup = createEmptyMeasureGroup()\n }\n // 当前是指标组\n measureGroups.push(measure)\n } else {\n currentGroup.children?.push(measure)\n }\n }\n\n // 最后一组\n if (currentGroup.children?.length) {\n currentGroup.id = [currentGroup.id, ...currentGroup.children.map((item) => item.id)].join('-')\n currentGroup.alias = currentGroup.children.map((item) => item.alias).join('-')\n measureGroups.push(currentGroup)\n currentGroup = createEmptyMeasureGroup()\n }\n\n return measureGroups\n}\n"],"names":["isMeasureTreeWithChildren","vseed","measures","measure","isMeasureTreeWithParentId","normalizeMeasureTree","createEmptyMeasureGroup","currentGroup","measureGroups","item"],"mappings":"AAOO,MAAMA,4BAA4B,CAACC;IACxC,MAAM,EAAEC,QAAQ,EAAE,GAAGD;IAErB,IAAI,CAACC,UACH,OAAO;IAGT,OAAOA,SAAS,IAAI,CAAC,CAACC,UAAY,cAAcA;AAClD;AAOO,MAAMC,4BAA4B,CAACH;IACxC,MAAM,EAAEC,QAAQ,EAAE,GAAGD;IAErB,IAAI,CAACC,UACH,OAAO;IAGT,OAAOA,SAAS,IAAI,CAAC,CAACC,UAAY,cAAcA;AAClD;AAOO,MAAME,uBAAuB,CAACH;IACnC,MAAMI,0BAA0B,IACvB;YACL,IAAI;YACJ,OAAO;YACP,UAAU,EAAE;QACd;IAGF,IAAIC,eAA6BD;IACjC,MAAME,gBAAgC,EAAE;IACxC,KAAK,MAAML,WAAWD,SACpB,IAAI,cAAcC,SAAS;QAEzB,IAAII,aAAa,QAAQ,EAAE,QAAQ;YACjCA,aAAa,EAAE,GAAG;gBAACA,aAAa,EAAE;mBAAKA,aAAa,QAAQ,CAAC,GAAG,CAAC,CAACE,OAASA,KAAK,EAAE;aAAE,CAAC,IAAI,CAAC;YAC1FF,aAAa,KAAK,GAAGA,aAAa,QAAQ,CAAC,GAAG,CAAC,CAACE,OAASA,KAAK,KAAK,EAAE,IAAI,CAAC;YAC1ED,cAAc,IAAI,CAACD;YACnBA,eAAeD;QACjB;QAEAE,cAAc,IAAI,CAACL;IACrB,OACEI,aAAa,QAAQ,EAAE,KAAKJ;IAKhC,IAAII,aAAa,QAAQ,EAAE,QAAQ;QACjCA,aAAa,EAAE,GAAG;YAACA,aAAa,EAAE;eAAKA,aAAa,QAAQ,CAAC,GAAG,CAAC,CAACE,OAASA,KAAK,EAAE;SAAE,CAAC,IAAI,CAAC;QAC1FF,aAAa,KAAK,GAAGA,aAAa,QAAQ,CAAC,GAAG,CAAC,CAACE,OAASA,KAAK,KAAK,EAAE,IAAI,CAAC;QAC1ED,cAAc,IAAI,CAACD;QACnBA,eAAeD;IACjB;IAEA,OAAOE;AACT"}
1
+ {"version":3,"file":"pipeline/advanced/chart/pipes/measures/utils.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/measures/utils.ts"],"sourcesContent":["import type { MeasureGroup, MeasureTree } from 'src/types'\n\n/**\n * @description 检查是否为指标树, 指标树深度大于1. 如果存在一个指标为组, 即有children配置, 则认为是指标树.\n * @param vseed vseed\n * @returns\n */\nexport const isMeasureTreeWithChildren = <T extends MeasureTree>(measures?: T) => {\n if (!measures) {\n return false\n }\n\n return measures.some((measure) => 'children' in measure)\n}\n\n/**\n * @description 检查是否为指标树, 指标树存在parentId. 如果存在一个指标有parentId, 则认为是指标树.\n * @param vseed vseed\n * @returns\n */\nexport const isMeasureTreeWithParentId = <T extends MeasureTree>(measures?: T) => {\n if (!measures) {\n return false\n }\n\n return measures.some((measure) => 'parentId' in measure)\n}\n\n/**\n * @description 保证指标树中的每一组都有children, 没有children的指标, 会被放到一个默认的指标组中.\n * @param measures 指标树\n * @returns\n */\nexport const normalizeMeasureTree = (measures: MeasureTree) => {\n const createEmptyMeasureGroup = (): MeasureGroup => {\n return {\n id: 'group',\n alias: '',\n children: [],\n }\n }\n\n let currentGroup: MeasureGroup = createEmptyMeasureGroup()\n const measureGroups: MeasureGroup[] = []\n for (const measure of measures) {\n if ('children' in measure) {\n // 当前指标组之前的所有独立指标成组\n if (currentGroup.children?.length) {\n currentGroup.id = [currentGroup.id, ...currentGroup.children.map((item) => item.id)].join('-')\n currentGroup.alias = currentGroup.children.map((item) => item.alias).join('-')\n measureGroups.push(currentGroup)\n currentGroup = createEmptyMeasureGroup()\n }\n // 当前是指标组\n measureGroups.push(measure)\n } else {\n currentGroup.children?.push(measure)\n }\n }\n\n // 最后一组\n if (currentGroup.children?.length) {\n currentGroup.id = [currentGroup.id, ...currentGroup.children.map((item) => item.id)].join('-')\n currentGroup.alias = currentGroup.children.map((item) => item.alias).join('-')\n measureGroups.push(currentGroup)\n currentGroup = createEmptyMeasureGroup()\n }\n\n return measureGroups\n}\n"],"names":["isMeasureTreeWithChildren","measures","measure","isMeasureTreeWithParentId","normalizeMeasureTree","createEmptyMeasureGroup","currentGroup","measureGroups","item"],"mappings":"AAOO,MAAMA,4BAA4B,CAAwBC;IAC/D,IAAI,CAACA,UACH,OAAO;IAGT,OAAOA,SAAS,IAAI,CAAC,CAACC,UAAY,cAAcA;AAClD;AAOO,MAAMC,4BAA4B,CAAwBF;IAC/D,IAAI,CAACA,UACH,OAAO;IAGT,OAAOA,SAAS,IAAI,CAAC,CAACC,UAAY,cAAcA;AAClD;AAOO,MAAME,uBAAuB,CAACH;IACnC,MAAMI,0BAA0B,IACvB;YACL,IAAI;YACJ,OAAO;YACP,UAAU,EAAE;QACd;IAGF,IAAIC,eAA6BD;IACjC,MAAME,gBAAgC,EAAE;IACxC,KAAK,MAAML,WAAWD,SACpB,IAAI,cAAcC,SAAS;QAEzB,IAAII,aAAa,QAAQ,EAAE,QAAQ;YACjCA,aAAa,EAAE,GAAG;gBAACA,aAAa,EAAE;mBAAKA,aAAa,QAAQ,CAAC,GAAG,CAAC,CAACE,OAASA,KAAK,EAAE;aAAE,CAAC,IAAI,CAAC;YAC1FF,aAAa,KAAK,GAAGA,aAAa,QAAQ,CAAC,GAAG,CAAC,CAACE,OAASA,KAAK,KAAK,EAAE,IAAI,CAAC;YAC1ED,cAAc,IAAI,CAACD;YACnBA,eAAeD;QACjB;QAEAE,cAAc,IAAI,CAACL;IACrB,OACEI,aAAa,QAAQ,EAAE,KAAKJ;IAKhC,IAAII,aAAa,QAAQ,EAAE,QAAQ;QACjCA,aAAa,EAAE,GAAG;YAACA,aAAa,EAAE;eAAKA,aAAa,QAAQ,CAAC,GAAG,CAAC,CAACE,OAASA,KAAK,EAAE;SAAE,CAAC,IAAI,CAAC;QAC1FF,aAAa,KAAK,GAAGA,aAAa,QAAQ,CAAC,GAAG,CAAC,CAACE,OAASA,KAAK,KAAK,EAAE,IAAI,CAAC;QAC1ED,cAAc,IAAI,CAACD;QACnBA,eAAeD;IACjB;IAEA,OAAOE;AACT"}
@@ -1,11 +1,11 @@
1
- import { isEmpty } from "remeda";
2
- import { autoFormatter, createFormatter, findMeasureById } from "../../../../utils/index.js";
1
+ import { isEmpty, uniqueBy } from "remeda";
2
+ import { autoFormatter, createFormatter, findAllMeasures, findMeasureById } from "../../../../utils/index.js";
3
3
  import { ORIGINAL_DATA } from "../../../../../dataReshape/index.js";
4
4
  const tooltip_tooltip = (spec, context)=>{
5
5
  const result = {
6
6
  ...spec
7
7
  };
8
- const { advancedVSeed } = context;
8
+ const { advancedVSeed, vseed } = context;
9
9
  const { measures, datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed;
10
10
  const baseConfig = advancedVSeed.config[chartType];
11
11
  const { tooltip = {
@@ -19,7 +19,7 @@ const tooltip_tooltip = (spec, context)=>{
19
19
  title: {
20
20
  visible: false
21
21
  },
22
- content: createMarkContent(encoding.tooltip || [], dimensions, measures, locale, foldInfo, unfoldInfo)
22
+ content: createMarkContent(encoding.tooltip || [], dimensions, findAllMeasures(vseed.measures), locale, foldInfo, unfoldInfo)
23
23
  },
24
24
  dimension: {
25
25
  title: {
@@ -61,8 +61,8 @@ const createDimensionContent = (measures, foldInfo, unfoldInfo, locale)=>{
61
61
  ];
62
62
  };
63
63
  const createMarkContent = (tooltip, dimensions, measures, locale, foldInfo, unfoldInfo)=>{
64
- const dims = dimensions.filter((item)=>tooltip.includes(item.id));
65
- const meas = measures.filter((item)=>tooltip.includes(item.id));
64
+ const dims = uniqueBy(dimensions.filter((item)=>tooltip.includes(item.id)), (item)=>item.id);
65
+ const meas = uniqueBy(measures.filter((item)=>tooltip.includes(item.id)), (item)=>item.id);
66
66
  const dimContent = dims.map((item)=>({
67
67
  visible: true,
68
68
  hasShape: true,
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/chart/pipes/tooltip/tooltip.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltip.ts"],"sourcesContent":["import { isEmpty } from 'remeda'\nimport { autoFormatter, createFormatter, findMeasureById } from '../../../../utils'\nimport type { Datum, Dimensions, FoldInfo, Locale, Measures, SpecPipe, Tooltip, UnfoldInfo } from 'src/types'\nimport { ORIGINAL_DATA } from 'src/dataReshape'\n\nexport const tooltip: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed } = context\n const { measures, datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n const { foldInfo, unfoldInfo } = datasetReshapeInfo[0] as unknown as {\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n }\n\n result.tooltip = {\n visible: enable,\n mark: {\n title: {\n visible: false,\n },\n content: createMarkContent(encoding.tooltip || [], dimensions, measures, locale, foldInfo, unfoldInfo),\n },\n dimension: {\n title: {\n visible: true,\n },\n content: createDimensionContent(measures, foldInfo, unfoldInfo, locale),\n },\n }\n return result\n}\n\nexport const createDimensionContent = (\n measures: Measures,\n foldInfo: FoldInfo,\n unfoldInfo: UnfoldInfo,\n locale: Locale,\n) => {\n const { measureId, measureValue } = foldInfo\n const { encodingColor } = unfoldInfo\n\n return [\n {\n visible: true,\n shapeType: 'rectRound',\n hasShape: true,\n key: (v: unknown) => {\n const datum = v as Datum\n return (datum && (datum[encodingColor] as string)) || ''\n },\n value: (v: unknown) => {\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const value = datum[measureValue] as string | number\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n const { format = {}, autoFormat = true } = measure\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n if (autoFormat) {\n return autoFormatter(value, locale)\n }\n return String(value)\n },\n },\n ]\n}\n\nexport const createMarkContent = (\n tooltip: string[],\n dimensions: Dimensions,\n measures: Measures,\n locale: Locale,\n foldInfo: FoldInfo,\n unfoldInfo: UnfoldInfo,\n) => {\n const dims = dimensions.filter((item) => tooltip.includes(item.id))\n const meas = measures.filter((item) => tooltip.includes(item.id))\n\n const dimContent = dims.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const datum = v as Datum\n if (item.alias || item.id) {\n return item.alias || item.id\n }\n return datum && (datum[item.id] as string)\n },\n value: (v: unknown) => {\n const datum = v as Datum\n return datum && (datum[item.id] as string)\n },\n }))\n\n const meaContent = meas.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: item.alias || item.id,\n value: (v: unknown) => {\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const id = item.id\n if (!datum || !datum[ORIGINAL_DATA] || !datum[ORIGINAL_DATA]) {\n return ''\n }\n const originalData = datum[ORIGINAL_DATA] as Datum\n const value = originalData[id] as string | number\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n const { format = {}, autoFormat = true } = measure\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n if (autoFormat) {\n return autoFormatter(value, locale)\n }\n return String(value)\n },\n }))\n\n const defaultContent = {\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const { measureName } = foldInfo\n const { encodingColor: colorName } = unfoldInfo\n\n const datum = v as Datum\n return (datum && (datum[measureName || colorName] as string)) || ''\n },\n value: (v: unknown) => {\n const { measureId, measureValue } = foldInfo\n\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const value = datum[measureValue] as string | number\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n\n const { format = {}, autoFormat = true } = measure\n\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n if (autoFormat) {\n return autoFormatter(value, locale)\n }\n return String(value)\n },\n }\n\n return [...dimContent, defaultContent, ...meaContent]\n}\n"],"names":["tooltip","spec","context","result","advancedVSeed","measures","datasetReshapeInfo","chartType","locale","dimensions","encoding","baseConfig","enable","foldInfo","unfoldInfo","createMarkContent","createDimensionContent","measureId","measureValue","encodingColor","v","datum","value","id","measure","findMeasureById","String","format","autoFormat","isEmpty","formatter","createFormatter","autoFormatter","dims","item","meas","dimContent","meaContent","ORIGINAL_DATA","originalData","defaultContent","measureName","colorName"],"mappings":"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"}
1
+ {"version":3,"file":"pipeline/spec/chart/pipes/tooltip/tooltip.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltip.ts"],"sourcesContent":["import { isEmpty, uniqueBy } from 'remeda'\nimport { autoFormatter, createFormatter, findAllMeasures, findMeasureById } from '../../../../utils'\nimport type { Datum, Dimensions, FoldInfo, Locale, Measures, SpecPipe, Tooltip, UnfoldInfo } from 'src/types'\nimport { ORIGINAL_DATA } from 'src/dataReshape'\n\nexport const tooltip: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed, vseed } = context\n const { measures, datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n const { foldInfo, unfoldInfo } = datasetReshapeInfo[0] as unknown as {\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n }\n\n result.tooltip = {\n visible: enable,\n mark: {\n title: {\n visible: false,\n },\n content: createMarkContent(\n encoding.tooltip || [],\n dimensions,\n findAllMeasures(vseed.measures),\n locale,\n foldInfo,\n unfoldInfo,\n ),\n },\n dimension: {\n title: {\n visible: true,\n },\n content: createDimensionContent(measures, foldInfo, unfoldInfo, locale),\n },\n }\n return result\n}\n\nexport const createDimensionContent = (\n measures: Measures,\n foldInfo: FoldInfo,\n unfoldInfo: UnfoldInfo,\n locale: Locale,\n) => {\n const { measureId, measureValue } = foldInfo\n const { encodingColor } = unfoldInfo\n\n return [\n {\n visible: true,\n shapeType: 'rectRound',\n hasShape: true,\n key: (v: unknown) => {\n const datum = v as Datum\n return (datum && (datum[encodingColor] as string)) || ''\n },\n value: (v: unknown) => {\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const value = datum[measureValue] as string | number\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n const { format = {}, autoFormat = true } = measure\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n if (autoFormat) {\n return autoFormatter(value, locale)\n }\n return String(value)\n },\n },\n ]\n}\n\nexport const createMarkContent = (\n tooltip: string[],\n dimensions: Dimensions,\n measures: Measures,\n locale: Locale,\n foldInfo: FoldInfo,\n unfoldInfo: UnfoldInfo,\n) => {\n const dims = uniqueBy(\n dimensions.filter((item) => tooltip.includes(item.id)),\n (item) => item.id,\n )\n const meas = uniqueBy(\n measures.filter((item) => tooltip.includes(item.id)),\n (item) => item.id,\n )\n\n const dimContent = dims.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const datum = v as Datum\n if (item.alias || item.id) {\n return item.alias || item.id\n }\n return datum && (datum[item.id] as string)\n },\n value: (v: unknown) => {\n const datum = v as Datum\n return datum && (datum[item.id] as string)\n },\n }))\n\n const meaContent = meas.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: item.alias || item.id,\n value: (v: unknown) => {\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const id = item.id\n if (!datum || !datum[ORIGINAL_DATA] || !datum[ORIGINAL_DATA]) {\n return ''\n }\n const originalData = datum[ORIGINAL_DATA] as Datum\n const value = originalData[id] as string | number\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n const { format = {}, autoFormat = true } = measure\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n if (autoFormat) {\n return autoFormatter(value, locale)\n }\n return String(value)\n },\n }))\n\n const defaultContent = {\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const { measureName } = foldInfo\n const { encodingColor: colorName } = unfoldInfo\n\n const datum = v as Datum\n return (datum && (datum[measureName || colorName] as string)) || ''\n },\n value: (v: unknown) => {\n const { measureId, measureValue } = foldInfo\n\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const value = datum[measureValue] as string | number\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n\n const { format = {}, autoFormat = true } = measure\n\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n if (autoFormat) {\n return autoFormatter(value, locale)\n }\n return String(value)\n },\n }\n\n return [...dimContent, defaultContent, ...meaContent]\n}\n"],"names":["tooltip","spec","context","result","advancedVSeed","vseed","measures","datasetReshapeInfo","chartType","locale","dimensions","encoding","baseConfig","enable","foldInfo","unfoldInfo","createMarkContent","findAllMeasures","createDimensionContent","measureId","measureValue","encodingColor","v","datum","value","id","measure","findMeasureById","String","format","autoFormat","isEmpty","formatter","createFormatter","autoFormatter","dims","uniqueBy","item","meas","dimContent","meaContent","ORIGINAL_DATA","originalData","defaultContent","measureName","colorName"],"mappings":"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"}
@@ -1,10 +1,11 @@
1
1
  import { isNullish } from "remeda";
2
2
  import { createDimensionContent, createMarkContent } from "./tooltip.js";
3
+ import { findAllMeasures } from "../../../../utils/index.js";
3
4
  const tooltipPrimary = (spec, context)=>{
4
5
  const result = {
5
6
  ...spec
6
7
  };
7
- const { advancedVSeed } = context;
8
+ const { advancedVSeed, vseed } = context;
8
9
  const { measures, datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed;
9
10
  const baseConfig = advancedVSeed.config[chartType];
10
11
  const { tooltip = {
@@ -19,7 +20,7 @@ const tooltipPrimary = (spec, context)=>{
19
20
  title: {
20
21
  visible: false
21
22
  },
22
- content: createMarkContent(encoding.tooltip || [], dimensions, measures, locale, foldInfoList[0], unfoldInfo)
23
+ content: createMarkContent(encoding.tooltip || [], dimensions, findAllMeasures(vseed.measures), locale, foldInfoList[0], unfoldInfo)
23
24
  },
24
25
  dimension: {
25
26
  title: {
@@ -34,7 +35,7 @@ const tooltipSecondary = (spec, context)=>{
34
35
  const result = {
35
36
  ...spec
36
37
  };
37
- const { advancedVSeed } = context;
38
+ const { advancedVSeed, vseed } = context;
38
39
  const { measures, datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed;
39
40
  const baseConfig = advancedVSeed.config[chartType];
40
41
  const { tooltip = {
@@ -50,7 +51,7 @@ const tooltipSecondary = (spec, context)=>{
50
51
  title: {
51
52
  visible: false
52
53
  },
53
- content: createMarkContent(encoding.tooltip || [], dimensions, measures, locale, foldInfoList[1], unfoldInfo)
54
+ content: createMarkContent(encoding.tooltip || [], dimensions, findAllMeasures(vseed.measures), locale, foldInfoList[1], unfoldInfo)
54
55
  },
55
56
  dimension: {
56
57
  title: {
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/chart/pipes/tooltip/tooltipDualAxis.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltipDualAxis.ts"],"sourcesContent":["import { isNullish } from 'remeda'\nimport { createDimensionContent, createMarkContent } from './tooltip'\nimport type { FoldInfo, SpecPipe, Tooltip, UnfoldInfo } from 'src/types'\n\nexport const tooltipPrimary: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed } = context\n const { measures, datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n\n const foldInfoList = datasetReshapeInfo[0].foldInfoList as FoldInfo[]\n const unfoldInfo = datasetReshapeInfo[0].unfoldInfo\n\n result.tooltip = {\n visible: enable,\n mark: {\n title: {\n visible: false,\n },\n content: createMarkContent(encoding.tooltip || [], dimensions, measures, locale, foldInfoList[0], unfoldInfo),\n },\n dimension: {\n title: {\n visible: true,\n },\n content: createDimensionContent(measures, foldInfoList[0], unfoldInfo, locale),\n },\n }\n return result\n}\n\nexport const tooltipSecondary: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed } = context\n const { measures, datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n\n if (isNullish(datasetReshapeInfo[0].foldInfoList?.[1])) {\n return result\n }\n\n const foldInfoList = datasetReshapeInfo[0].foldInfoList as FoldInfo[]\n const unfoldInfo = datasetReshapeInfo[0].unfoldInfo as UnfoldInfo\n result.tooltip = {\n visible: enable,\n mark: {\n title: {\n visible: false,\n },\n content: createMarkContent(encoding.tooltip || [], dimensions, measures, locale, foldInfoList[1], unfoldInfo),\n },\n dimension: {\n title: {\n visible: true,\n },\n content: createDimensionContent(measures, foldInfoList[1], unfoldInfo, locale),\n },\n }\n return result\n}\n"],"names":["tooltipPrimary","spec","context","result","advancedVSeed","measures","datasetReshapeInfo","chartType","locale","dimensions","encoding","baseConfig","tooltip","enable","foldInfoList","unfoldInfo","createMarkContent","createDimensionContent","tooltipSecondary","isNullish"],"mappings":";;AAIO,MAAMA,iBAA2B,CAACC,MAAMC;IAC7C,MAAMC,SAAS;QAAE,GAAGF,IAAI;IAAC;IACzB,MAAM,EAAEG,aAAa,EAAE,GAAGF;IAC1B,MAAM,EAAEG,QAAQ,EAAEC,kBAAkB,EAAEC,SAAS,EAAEC,MAAM,EAAEC,UAAU,EAAEC,QAAQ,EAAE,GAAGN;IAClF,MAAMO,aAAaP,cAAc,MAAM,CAACG,UAAU;IAClD,MAAM,EAAEK,UAAU;QAAE,QAAQ;IAAK,CAAC,EAAE,GAAGD;IACvC,MAAM,EAAEE,MAAM,EAAE,GAAGD;IAEnB,MAAME,eAAeR,kBAAkB,CAAC,EAAE,CAAC,YAAY;IACvD,MAAMS,aAAaT,kBAAkB,CAAC,EAAE,CAAC,UAAU;IAEnDH,OAAO,OAAO,GAAG;QACf,SAASU;QACT,MAAM;YACJ,OAAO;gBACL,SAAS;YACX;YACA,SAASG,kBAAkBN,SAAS,OAAO,IAAI,EAAE,EAAED,YAAYJ,UAAUG,QAAQM,YAAY,CAAC,EAAE,EAAEC;QACpG;QACA,WAAW;YACT,OAAO;gBACL,SAAS;YACX;YACA,SAASE,uBAAuBZ,UAAUS,YAAY,CAAC,EAAE,EAAEC,YAAYP;QACzE;IACF;IACA,OAAOL;AACT;AAEO,MAAMe,mBAA6B,CAACjB,MAAMC;IAC/C,MAAMC,SAAS;QAAE,GAAGF,IAAI;IAAC;IACzB,MAAM,EAAEG,aAAa,EAAE,GAAGF;IAC1B,MAAM,EAAEG,QAAQ,EAAEC,kBAAkB,EAAEC,SAAS,EAAEC,MAAM,EAAEC,UAAU,EAAEC,QAAQ,EAAE,GAAGN;IAClF,MAAMO,aAAaP,cAAc,MAAM,CAACG,UAAU;IAClD,MAAM,EAAEK,UAAU;QAAE,QAAQ;IAAK,CAAC,EAAE,GAAGD;IACvC,MAAM,EAAEE,MAAM,EAAE,GAAGD;IAEnB,IAAIO,UAAUb,kBAAkB,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE,GACnD,OAAOH;IAGT,MAAMW,eAAeR,kBAAkB,CAAC,EAAE,CAAC,YAAY;IACvD,MAAMS,aAAaT,kBAAkB,CAAC,EAAE,CAAC,UAAU;IACnDH,OAAO,OAAO,GAAG;QACf,SAASU;QACT,MAAM;YACJ,OAAO;gBACL,SAAS;YACX;YACA,SAASG,kBAAkBN,SAAS,OAAO,IAAI,EAAE,EAAED,YAAYJ,UAAUG,QAAQM,YAAY,CAAC,EAAE,EAAEC;QACpG;QACA,WAAW;YACT,OAAO;gBACL,SAAS;YACX;YACA,SAASE,uBAAuBZ,UAAUS,YAAY,CAAC,EAAE,EAAEC,YAAYP;QACzE;IACF;IACA,OAAOL;AACT"}
1
+ {"version":3,"file":"pipeline/spec/chart/pipes/tooltip/tooltipDualAxis.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltipDualAxis.ts"],"sourcesContent":["import { isNullish } from 'remeda'\nimport { createDimensionContent, createMarkContent } from './tooltip'\nimport type { FoldInfo, SpecPipe, Tooltip, UnfoldInfo } from 'src/types'\nimport { findAllMeasures } from 'src/pipeline/utils'\n\nexport const tooltipPrimary: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed, vseed } = context\n const { measures, datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n\n const foldInfoList = datasetReshapeInfo[0].foldInfoList as FoldInfo[]\n const unfoldInfo = datasetReshapeInfo[0].unfoldInfo\n\n result.tooltip = {\n visible: enable,\n mark: {\n title: {\n visible: false,\n },\n content: createMarkContent(\n encoding.tooltip || [],\n dimensions,\n findAllMeasures(vseed.measures),\n locale,\n foldInfoList[0],\n unfoldInfo,\n ),\n },\n dimension: {\n title: {\n visible: true,\n },\n content: createDimensionContent(measures, foldInfoList[0], unfoldInfo, locale),\n },\n }\n return result\n}\n\nexport const tooltipSecondary: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed, vseed } = context\n const { measures, datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n\n if (isNullish(datasetReshapeInfo[0].foldInfoList?.[1])) {\n return result\n }\n\n const foldInfoList = datasetReshapeInfo[0].foldInfoList as FoldInfo[]\n const unfoldInfo = datasetReshapeInfo[0].unfoldInfo as UnfoldInfo\n result.tooltip = {\n visible: enable,\n mark: {\n title: {\n visible: false,\n },\n content: createMarkContent(\n encoding.tooltip || [],\n dimensions,\n findAllMeasures(vseed.measures),\n locale,\n foldInfoList[1],\n unfoldInfo,\n ),\n },\n dimension: {\n title: {\n visible: true,\n },\n content: createDimensionContent(measures, foldInfoList[1], unfoldInfo, locale),\n },\n }\n return result\n}\n"],"names":["tooltipPrimary","spec","context","result","advancedVSeed","vseed","measures","datasetReshapeInfo","chartType","locale","dimensions","encoding","baseConfig","tooltip","enable","foldInfoList","unfoldInfo","createMarkContent","findAllMeasures","createDimensionContent","tooltipSecondary","isNullish"],"mappings":";;;AAKO,MAAMA,iBAA2B,CAACC,MAAMC;IAC7C,MAAMC,SAAS;QAAE,GAAGF,IAAI;IAAC;IACzB,MAAM,EAAEG,aAAa,EAAEC,KAAK,EAAE,GAAGH;IACjC,MAAM,EAAEI,QAAQ,EAAEC,kBAAkB,EAAEC,SAAS,EAAEC,MAAM,EAAEC,UAAU,EAAEC,QAAQ,EAAE,GAAGP;IAClF,MAAMQ,aAAaR,cAAc,MAAM,CAACI,UAAU;IAClD,MAAM,EAAEK,UAAU;QAAE,QAAQ;IAAK,CAAC,EAAE,GAAGD;IACvC,MAAM,EAAEE,MAAM,EAAE,GAAGD;IAEnB,MAAME,eAAeR,kBAAkB,CAAC,EAAE,CAAC,YAAY;IACvD,MAAMS,aAAaT,kBAAkB,CAAC,EAAE,CAAC,UAAU;IAEnDJ,OAAO,OAAO,GAAG;QACf,SAASW;QACT,MAAM;YACJ,OAAO;gBACL,SAAS;YACX;YACA,SAASG,kBACPN,SAAS,OAAO,IAAI,EAAE,EACtBD,YACAQ,gBAAgBb,MAAM,QAAQ,GAC9BI,QACAM,YAAY,CAAC,EAAE,EACfC;QAEJ;QACA,WAAW;YACT,OAAO;gBACL,SAAS;YACX;YACA,SAASG,uBAAuBb,UAAUS,YAAY,CAAC,EAAE,EAAEC,YAAYP;QACzE;IACF;IACA,OAAON;AACT;AAEO,MAAMiB,mBAA6B,CAACnB,MAAMC;IAC/C,MAAMC,SAAS;QAAE,GAAGF,IAAI;IAAC;IACzB,MAAM,EAAEG,aAAa,EAAEC,KAAK,EAAE,GAAGH;IACjC,MAAM,EAAEI,QAAQ,EAAEC,kBAAkB,EAAEC,SAAS,EAAEC,MAAM,EAAEC,UAAU,EAAEC,QAAQ,EAAE,GAAGP;IAClF,MAAMQ,aAAaR,cAAc,MAAM,CAACI,UAAU;IAClD,MAAM,EAAEK,UAAU;QAAE,QAAQ;IAAK,CAAC,EAAE,GAAGD;IACvC,MAAM,EAAEE,MAAM,EAAE,GAAGD;IAEnB,IAAIQ,UAAUd,kBAAkB,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE,GACnD,OAAOJ;IAGT,MAAMY,eAAeR,kBAAkB,CAAC,EAAE,CAAC,YAAY;IACvD,MAAMS,aAAaT,kBAAkB,CAAC,EAAE,CAAC,UAAU;IACnDJ,OAAO,OAAO,GAAG;QACf,SAASW;QACT,MAAM;YACJ,OAAO;gBACL,SAAS;YACX;YACA,SAASG,kBACPN,SAAS,OAAO,IAAI,EAAE,EACtBD,YACAQ,gBAAgBb,MAAM,QAAQ,GAC9BI,QACAM,YAAY,CAAC,EAAE,EACfC;QAEJ;QACA,WAAW;YACT,OAAO;gBACL,SAAS;YACX;YACA,SAASG,uBAAuBb,UAAUS,YAAY,CAAC,EAAE,EAAEC,YAAYP;QACzE;IACF;IACA,OAAON;AACT"}
@@ -1,12 +1,12 @@
1
- import { isEmpty } from "remeda";
2
- import { autoFormatter, createFormatter, findMeasureById } from "../../../../utils/index.js";
1
+ import { isEmpty, uniqueBy } from "remeda";
2
+ import { autoFormatter, createFormatter, findAllMeasures, findMeasureById } from "../../../../utils/index.js";
3
3
  import { ORIGINAL_DATA } from "../../../../../dataReshape/index.js";
4
4
  const tooltipHeatmap = (spec, context)=>{
5
5
  const result = {
6
6
  ...spec
7
7
  };
8
- const { advancedVSeed } = context;
9
- const { measures, datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed;
8
+ const { advancedVSeed, vseed } = context;
9
+ const { datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed;
10
10
  const baseConfig = advancedVSeed.config[chartType];
11
11
  const { tooltip = {
12
12
  enable: true
@@ -19,7 +19,7 @@ const tooltipHeatmap = (spec, context)=>{
19
19
  title: {
20
20
  visible: false
21
21
  },
22
- content: createMarkContent(encoding.tooltip || [], dimensions, measures, locale, foldInfo)
22
+ content: createMarkContent(encoding.tooltip || [], dimensions, findAllMeasures(vseed.measures), locale, foldInfo)
23
23
  },
24
24
  dimension: {
25
25
  visible: false
@@ -28,8 +28,8 @@ const tooltipHeatmap = (spec, context)=>{
28
28
  return result;
29
29
  };
30
30
  const createMarkContent = (tooltip, dimensions, measures, locale, foldInfo)=>{
31
- const dims = dimensions.filter((item)=>tooltip.includes(item.id));
32
- const meas = measures.filter((item)=>tooltip.includes(item.id));
31
+ const dims = uniqueBy(dimensions.filter((item)=>tooltip.includes(item.id)), (item)=>item.id);
32
+ const meas = uniqueBy(measures.filter((item)=>tooltip.includes(item.id)), (item)=>item.id);
33
33
  const dimContent = dims.map((item)=>({
34
34
  visible: true,
35
35
  hasShape: true,
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/chart/pipes/tooltip/tooltipHeatmap.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltipHeatmap.ts"],"sourcesContent":["import { isEmpty } from 'remeda'\nimport { autoFormatter, createFormatter, findMeasureById } from '../../../../utils'\nimport type { Datum, Dimensions, FoldInfo, Locale, Measures, SpecPipe, Tooltip, UnfoldInfo } from 'src/types'\nimport { ORIGINAL_DATA } from 'src/dataReshape'\n\nexport const tooltipHeatmap: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed } = context\n const { measures, datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n const { foldInfo } = datasetReshapeInfo[0] as unknown as {\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n }\n\n result.tooltip = {\n visible: enable,\n\n mark: {\n title: {\n visible: false,\n },\n content: createMarkContent(encoding.tooltip || [], dimensions, measures, locale, foldInfo),\n },\n dimension: {\n visible: false,\n },\n }\n return result\n}\n\nexport const createMarkContent = (\n tooltip: string[],\n dimensions: Dimensions,\n measures: Measures,\n locale: Locale,\n foldInfo: FoldInfo,\n) => {\n const dims = dimensions.filter((item) => tooltip.includes(item.id))\n const meas = measures.filter((item) => tooltip.includes(item.id))\n\n const dimContent = dims.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const datum = v as Datum\n if (item.alias || item.id) {\n return item.alias || item.id\n }\n return datum && (datum[item.id] as string)\n },\n value: (v: unknown) => {\n const datum = v as Datum\n return datum && (datum[item.id] as string)\n },\n }))\n\n const meaContent = meas.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: item.alias || item.id,\n value: (v: unknown) => {\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const id = item.id\n if (!datum || !datum[ORIGINAL_DATA] || !datum[ORIGINAL_DATA]) {\n return ''\n }\n const originalData = datum[ORIGINAL_DATA] as Datum\n const value = originalData[id] as string | number\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n const { format = {}, autoFormat = true } = measure\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n if (autoFormat) {\n return autoFormatter(value, locale)\n }\n return String(value)\n },\n }))\n\n const foldMeaContent = [foldInfo].map((foldInfo) => {\n return {\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const { measureId, foldMap } = foldInfo\n const datum = v as Datum\n const id = datum[measureId] as string\n return foldMap[id] || id\n },\n value: (v: unknown) => {\n const { measureId, measureValue } = foldInfo\n\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const value = datum[measureValue] as string | number\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n\n const { format = {}, autoFormat = true } = measure\n\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n if (autoFormat) {\n return autoFormatter(value, locale)\n }\n return String(value)\n },\n }\n })\n return [...dimContent, ...foldMeaContent, ...meaContent]\n}\n"],"names":["tooltipHeatmap","spec","context","result","advancedVSeed","measures","datasetReshapeInfo","chartType","locale","dimensions","encoding","baseConfig","tooltip","enable","foldInfo","createMarkContent","dims","item","meas","dimContent","v","datum","meaContent","id","ORIGINAL_DATA","originalData","value","measure","findMeasureById","String","format","autoFormat","isEmpty","formatter","createFormatter","autoFormatter","foldMeaContent","measureId","foldMap","measureValue"],"mappings":"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"}
1
+ {"version":3,"file":"pipeline/spec/chart/pipes/tooltip/tooltipHeatmap.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/tooltip/tooltipHeatmap.ts"],"sourcesContent":["import { isEmpty, uniqueBy } from 'remeda'\nimport { autoFormatter, createFormatter, findAllMeasures, findMeasureById } from '../../../../utils'\nimport type { Datum, Dimensions, FoldInfo, Locale, Measures, SpecPipe, Tooltip, UnfoldInfo } from 'src/types'\nimport { ORIGINAL_DATA } from 'src/dataReshape'\n\nexport const tooltipHeatmap: SpecPipe = (spec, context) => {\n const result = { ...spec }\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { tooltip: Tooltip }\n const { tooltip = { enable: true } } = baseConfig\n const { enable } = tooltip\n const { foldInfo } = datasetReshapeInfo[0] as unknown as {\n foldInfo: FoldInfo\n unfoldInfo: UnfoldInfo\n }\n\n result.tooltip = {\n visible: enable,\n\n mark: {\n title: {\n visible: false,\n },\n content: createMarkContent(encoding.tooltip || [], dimensions, findAllMeasures(vseed.measures), locale, foldInfo),\n },\n dimension: {\n visible: false,\n },\n }\n return result\n}\n\nexport const createMarkContent = (\n tooltip: string[],\n dimensions: Dimensions,\n measures: Measures,\n locale: Locale,\n foldInfo: FoldInfo,\n) => {\n const dims = uniqueBy(\n dimensions.filter((item) => tooltip.includes(item.id)),\n (item) => item.id,\n )\n const meas = uniqueBy(\n measures.filter((item) => tooltip.includes(item.id)),\n (item) => item.id,\n )\n\n const dimContent = dims.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const datum = v as Datum\n if (item.alias || item.id) {\n return item.alias || item.id\n }\n return datum && (datum[item.id] as string)\n },\n value: (v: unknown) => {\n const datum = v as Datum\n return datum && (datum[item.id] as string)\n },\n }))\n\n const meaContent = meas.map((item) => ({\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: item.alias || item.id,\n value: (v: unknown) => {\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const id = item.id\n if (!datum || !datum[ORIGINAL_DATA] || !datum[ORIGINAL_DATA]) {\n return ''\n }\n const originalData = datum[ORIGINAL_DATA] as Datum\n const value = originalData[id] as string | number\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n const { format = {}, autoFormat = true } = measure\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n if (autoFormat) {\n return autoFormatter(value, locale)\n }\n return String(value)\n },\n }))\n\n const foldMeaContent = [foldInfo].map((foldInfo) => {\n return {\n visible: true,\n hasShape: true,\n shapeType: 'rectRound',\n key: (v: unknown) => {\n const { measureId, foldMap } = foldInfo\n const datum = v as Datum\n const id = datum[measureId] as string\n return foldMap[id] || id\n },\n value: (v: unknown) => {\n const { measureId, measureValue } = foldInfo\n\n const datum = v as Datum\n if (!datum) {\n return ''\n }\n const value = datum[measureValue] as string | number\n const id = datum[measureId] as string\n const measure = findMeasureById(measures, id)\n if (!measure) {\n return String(value)\n }\n\n const { format = {}, autoFormat = true } = measure\n\n if (!isEmpty(format)) {\n const formatter = createFormatter(format)\n return formatter(value)\n }\n if (autoFormat) {\n return autoFormatter(value, locale)\n }\n return String(value)\n },\n }\n })\n return [...dimContent, ...foldMeaContent, ...meaContent]\n}\n"],"names":["tooltipHeatmap","spec","context","result","advancedVSeed","vseed","datasetReshapeInfo","chartType","locale","dimensions","encoding","baseConfig","tooltip","enable","foldInfo","createMarkContent","findAllMeasures","measures","dims","uniqueBy","item","meas","dimContent","v","datum","meaContent","id","ORIGINAL_DATA","originalData","value","measure","findMeasureById","String","format","autoFormat","isEmpty","formatter","createFormatter","autoFormatter","foldMeaContent","measureId","foldMap","measureValue"],"mappings":"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"}
@@ -1,12 +1,12 @@
1
- import { isEmpty } from "remeda";
2
- import { autoFormatter, createFormatter, findMeasureById } from "../../../../utils/index.js";
1
+ import { isEmpty, uniqueBy } from "remeda";
2
+ import { autoFormatter, createFormatter, findAllMeasures, findMeasureById } from "../../../../utils/index.js";
3
3
  import { ORIGINAL_DATA } from "../../../../../dataReshape/index.js";
4
4
  const tooltipScatter = (spec, context)=>{
5
5
  const result = {
6
6
  ...spec
7
7
  };
8
- const { advancedVSeed } = context;
9
- const { measures, datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed;
8
+ const { advancedVSeed, vseed } = context;
9
+ const { datasetReshapeInfo, chartType, locale, dimensions, encoding } = advancedVSeed;
10
10
  const baseConfig = advancedVSeed.config[chartType];
11
11
  const { tooltip = {
12
12
  enable: true
@@ -19,7 +19,7 @@ const tooltipScatter = (spec, context)=>{
19
19
  title: {
20
20
  visible: false
21
21
  },
22
- content: createMarkContent(encoding.tooltip || [], dimensions, measures, locale, foldInfoList)
22
+ content: createMarkContent(encoding.tooltip || [], dimensions, findAllMeasures(vseed.measures), locale, foldInfoList)
23
23
  },
24
24
  dimension: {
25
25
  visible: false
@@ -28,8 +28,8 @@ const tooltipScatter = (spec, context)=>{
28
28
  return result;
29
29
  };
30
30
  const createMarkContent = (tooltip, dimensions, measures, locale, foldInfoList)=>{
31
- const dims = dimensions.filter((item)=>tooltip.includes(item.id));
32
- const meas = measures.filter((item)=>tooltip.includes(item.id));
31
+ const dims = uniqueBy(dimensions.filter((item)=>tooltip.includes(item.id)), (item)=>item.id);
32
+ const meas = uniqueBy(measures.filter((item)=>tooltip.includes(item.id)), (item)=>item.id);
33
33
  const dimContent = dims.map((item)=>({
34
34
  visible: true,
35
35
  hasShape: true,