@visactor/vseed 0.4.7 → 0.4.9

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 (131) hide show
  1. package/dist/cjs/index.cjs +2 -2
  2. package/dist/cjs/index.cjs.map +1 -1
  3. package/dist/esm/dataSelector/selector.d.ts +15 -1
  4. package/dist/esm/dataSelector/selector.js +16 -1
  5. package/dist/esm/dataSelector/selector.js.map +1 -1
  6. package/dist/esm/pipeline/advanced/table/pipeline/pivotTable.js +2 -3
  7. package/dist/esm/pipeline/advanced/table/pipeline/pivotTable.js.map +1 -1
  8. package/dist/esm/pipeline/advanced/table/pipes/default/index.d.ts +0 -1
  9. package/dist/esm/pipeline/advanced/table/pipes/default/index.js +1 -2
  10. package/dist/esm/pipeline/advanced/table/pipes/encoding/pivotTable.js +6 -3
  11. package/dist/esm/pipeline/advanced/table/pipes/encoding/pivotTable.js.map +1 -1
  12. package/dist/esm/pipeline/advanced/table/pipes/index.d.ts +0 -1
  13. package/dist/esm/pipeline/advanced/table/pipes/index.js +0 -1
  14. package/dist/esm/pipeline/spec/table/pipeline/pivotTable.js +1 -1
  15. package/dist/esm/pipeline/spec/table/pipeline/pivotTable.js.map +1 -1
  16. package/dist/esm/pipeline/spec/table/pipeline/table.js +2 -1
  17. package/dist/esm/pipeline/spec/table/pipeline/table.js.map +1 -1
  18. package/dist/esm/pipeline/spec/table/pipes/cellStyle/common.d.ts +29 -0
  19. package/dist/esm/pipeline/spec/table/pipes/cellStyle/common.js +40 -3
  20. package/dist/esm/pipeline/spec/table/pipes/cellStyle/common.js.map +1 -1
  21. package/dist/esm/pipeline/spec/table/pipes/cellStyle/pivot.js +39 -7
  22. package/dist/esm/pipeline/spec/table/pipes/cellStyle/pivot.js.map +1 -1
  23. package/dist/esm/pipeline/spec/table/pipes/cellStyle/table.js +46 -6
  24. package/dist/esm/pipeline/spec/table/pipes/cellStyle/table.js.map +1 -1
  25. package/dist/esm/pipeline/spec/table/pipes/columns/measuresToColumns.js +3 -0
  26. package/dist/esm/pipeline/spec/table/pipes/columns/measuresToColumns.js.map +1 -1
  27. package/dist/esm/pipeline/spec/table/pipes/columns/pivotColumns.js +2 -12
  28. package/dist/esm/pipeline/spec/table/pipes/columns/pivotColumns.js.map +1 -1
  29. package/dist/esm/pipeline/spec/table/pipes/corner/titleOnDimension.js +3 -2
  30. package/dist/esm/pipeline/spec/table/pipes/corner/titleOnDimension.js.map +1 -1
  31. package/dist/esm/pipeline/spec/table/pipes/indicators/pivotDataConfig.js +3 -2
  32. package/dist/esm/pipeline/spec/table/pipes/indicators/pivotDataConfig.js.map +1 -1
  33. package/dist/esm/pipeline/spec/table/pipes/indicators/pivotIndicators.js +20 -25
  34. package/dist/esm/pipeline/spec/table/pipes/indicators/pivotIndicators.js.map +1 -1
  35. package/dist/esm/pipeline/spec/table/pipes/rows/pivotRows.js +2 -12
  36. package/dist/esm/pipeline/spec/table/pipes/rows/pivotRows.js.map +1 -1
  37. package/dist/esm/pipeline/spec/table/pipes/theme/bottomFrozenStyle.d.ts +2 -0
  38. package/dist/esm/pipeline/spec/table/pipes/theme/bottomFrozenStyle.js +51 -0
  39. package/dist/esm/pipeline/spec/table/pipes/theme/bottomFrozenStyle.js.map +1 -0
  40. package/dist/esm/pipeline/spec/table/pipes/theme/index.d.ts +1 -0
  41. package/dist/esm/pipeline/spec/table/pipes/theme/index.js +1 -0
  42. package/dist/esm/theme/common/table.d.ts +35 -0
  43. package/dist/esm/theme/common/table.js +19 -3
  44. package/dist/esm/theme/common/table.js.map +1 -1
  45. package/dist/esm/types/chartType/area/zArea.d.ts +80 -0
  46. package/dist/esm/types/chartType/areaPercent/zAreaPercent.d.ts +80 -0
  47. package/dist/esm/types/chartType/bar/zBar.d.ts +48 -0
  48. package/dist/esm/types/chartType/barParallel/zBarParallel.d.ts +48 -0
  49. package/dist/esm/types/chartType/barPercent/zBarPercent.d.ts +48 -0
  50. package/dist/esm/types/chartType/boxPlot/zBoxPlot.d.ts +48 -0
  51. package/dist/esm/types/chartType/circlePacking/zCirclePacking.d.ts +8 -0
  52. package/dist/esm/types/chartType/column/zColumn.d.ts +48 -0
  53. package/dist/esm/types/chartType/columnParallel/zColumnParallel.d.ts +48 -0
  54. package/dist/esm/types/chartType/columnPercent/zColumnPercent.d.ts +48 -0
  55. package/dist/esm/types/chartType/donut/zDonut.d.ts +8 -0
  56. package/dist/esm/types/chartType/dualAxis/zDualAxis.d.ts +96 -0
  57. package/dist/esm/types/chartType/funnel/zFunnel.d.ts +8 -0
  58. package/dist/esm/types/chartType/heatmap/zHeatmap.d.ts +8 -0
  59. package/dist/esm/types/chartType/histogram/zHistogram.d.ts +48 -0
  60. package/dist/esm/types/chartType/line/zLine.d.ts +64 -0
  61. package/dist/esm/types/chartType/pie/zPie.d.ts +8 -0
  62. package/dist/esm/types/chartType/pivotTable/pivotTable.d.ts +6 -0
  63. package/dist/esm/types/chartType/pivotTable/zPivotTable.d.ts +47 -4
  64. package/dist/esm/types/chartType/pivotTable/zPivotTable.js +1 -0
  65. package/dist/esm/types/chartType/pivotTable/zPivotTable.js.map +1 -1
  66. package/dist/esm/types/chartType/raceBar/zRaceBar.d.ts +48 -0
  67. package/dist/esm/types/chartType/raceColumn/zRaceColumn.d.ts +48 -0
  68. package/dist/esm/types/chartType/raceDonut/zRaceDonut.d.ts +8 -0
  69. package/dist/esm/types/chartType/raceLine/zRaceLine.d.ts +64 -0
  70. package/dist/esm/types/chartType/racePie/zRacePie.d.ts +8 -0
  71. package/dist/esm/types/chartType/raceScatter/zRaceScatter.d.ts +48 -0
  72. package/dist/esm/types/chartType/radar/zRadar.d.ts +8 -0
  73. package/dist/esm/types/chartType/rose/zRose.d.ts +8 -0
  74. package/dist/esm/types/chartType/roseParallel/zRoseParallel.d.ts +8 -0
  75. package/dist/esm/types/chartType/scatter/zScatter.d.ts +48 -0
  76. package/dist/esm/types/chartType/sunburst/zSunburst.d.ts +8 -0
  77. package/dist/esm/types/chartType/table/zTable.d.ts +46 -4
  78. package/dist/esm/types/chartType/treeMap/zTreeMap.d.ts +8 -0
  79. package/dist/esm/types/dataSelector/selector.d.ts +40 -0
  80. package/dist/esm/types/dataSelector/selector.js +9 -1
  81. package/dist/esm/types/dataSelector/selector.js.map +1 -1
  82. package/dist/esm/types/properties/annotation/annotation.d.ts +24 -0
  83. package/dist/esm/types/properties/annotation/zAnnotationArea.d.ts +4 -0
  84. package/dist/esm/types/properties/annotation/zAnnotationPoint.d.ts +8 -0
  85. package/dist/esm/types/properties/cellStyle/bodyCellStyle.d.ts +71 -5
  86. package/dist/esm/types/properties/cellStyle/bodyCellStyle.js +16 -4
  87. package/dist/esm/types/properties/cellStyle/bodyCellStyle.js.map +1 -1
  88. package/dist/esm/types/properties/cellStyle/cellStyle.d.ts +23 -2
  89. package/dist/esm/types/properties/config/annotation/zAnnotation.d.ts +8 -0
  90. package/dist/esm/types/properties/config/area.d.ts +24 -0
  91. package/dist/esm/types/properties/config/bar.d.ts +36 -0
  92. package/dist/esm/types/properties/config/boxplot.d.ts +12 -0
  93. package/dist/esm/types/properties/config/circlePacking.d.ts +8 -0
  94. package/dist/esm/types/properties/config/column.d.ts +36 -0
  95. package/dist/esm/types/properties/config/config.d.ts +328 -0
  96. package/dist/esm/types/properties/config/dualAxis.d.ts +12 -0
  97. package/dist/esm/types/properties/config/funnel.d.ts +8 -0
  98. package/dist/esm/types/properties/config/heatmap.d.ts +8 -0
  99. package/dist/esm/types/properties/config/histogram.d.ts +12 -0
  100. package/dist/esm/types/properties/config/label/zLabel.d.ts +8 -0
  101. package/dist/esm/types/properties/config/label/zPieLabel.d.ts +8 -0
  102. package/dist/esm/types/properties/config/line.d.ts +12 -0
  103. package/dist/esm/types/properties/config/pie.d.ts +24 -0
  104. package/dist/esm/types/properties/config/pivotTable.d.ts +10 -0
  105. package/dist/esm/types/properties/config/race.d.ts +72 -0
  106. package/dist/esm/types/properties/config/rose.d.ts +16 -0
  107. package/dist/esm/types/properties/config/scatter.d.ts +12 -0
  108. package/dist/esm/types/properties/config/sunburst.d.ts +8 -0
  109. package/dist/esm/types/properties/config/table.d.ts +10 -0
  110. package/dist/esm/types/properties/config/table.js +14 -1
  111. package/dist/esm/types/properties/config/table.js.map +1 -1
  112. package/dist/esm/types/properties/config/treeMap.d.ts +8 -0
  113. package/dist/esm/types/properties/markStyle/barStyle.d.ts +8 -0
  114. package/dist/esm/types/properties/markStyle/boxPlotStyle.d.ts +4 -0
  115. package/dist/esm/types/properties/markStyle/lineStyle.d.ts +8 -0
  116. package/dist/esm/types/properties/markStyle/markStyle.d.ts +80 -0
  117. package/dist/esm/types/properties/markStyle/outlierStyle.d.ts +4 -0
  118. package/dist/esm/types/properties/markStyle/pointStyle.d.ts +8 -0
  119. package/dist/esm/types/properties/markStyle/zAreaStyle.d.ts +8 -0
  120. package/dist/esm/types/properties/theme/customTheme.d.ts +656 -0
  121. package/dist/umd/index.js +24330 -23191
  122. package/dist/umd/index.js.map +1 -1
  123. package/package.json +3 -1
  124. package/dist/esm/pipeline/advanced/table/pipes/default/defaultMeasureId.d.ts +0 -2
  125. package/dist/esm/pipeline/advanced/table/pipes/default/defaultMeasureId.js +0 -19
  126. package/dist/esm/pipeline/advanced/table/pipes/default/defaultMeasureId.js.map +0 -1
  127. package/dist/esm/pipeline/advanced/table/pipes/reshape/index.d.ts +0 -1
  128. package/dist/esm/pipeline/advanced/table/pipes/reshape/index.js +0 -2
  129. package/dist/esm/pipeline/advanced/table/pipes/reshape/reshapePivotTable.d.ts +0 -2
  130. package/dist/esm/pipeline/advanced/table/pipes/reshape/reshapePivotTable.js +0 -32
  131. package/dist/esm/pipeline/advanced/table/pipes/reshape/reshapePivotTable.js.map +0 -1
@@ -1,42 +1,82 @@
1
1
  import { array } from "@visactor/vutils";
2
2
  import { isNullish, isNumber, isPlainObject, isString } from "remeda";
3
- import { selector as selector_js_selector, selectorWithDynamicFilter } from "../../../../../dataSelector/selector.js";
4
- import { getCellOriginalDataByDatum, pickBodyCellStyle } from "./common.js";
3
+ import { isFieldSelector, matchesFieldSelector, selector, selectorWithDynamicFilter } from "../../../../../dataSelector/selector.js";
4
+ import { applyColorScale, getCellOriginalDataByDatum, getColumnMinMax, pickBodyCellStyle } from "./common.js";
5
5
  import { preorderTraverse } from "../../../../utils/tree/traverse.js";
6
6
  const tableBodyCell = (spec, context)=>{
7
7
  const { advancedVSeed } = context;
8
- const { cellStyle } = advancedVSeed;
8
+ const { cellStyle, config, chartType } = advancedVSeed;
9
9
  const bodyCellStyle = cellStyle?.bodyCellStyle;
10
+ const themeConfig = config?.[chartType];
10
11
  if (!bodyCellStyle) return spec;
11
12
  const bodyCellStyleList = array(bodyCellStyle);
12
13
  const columns = spec.columns || [];
13
14
  const selectedPos = [];
15
+ const allData = advancedVSeed.dataset || [];
14
16
  const setStyleOfColumn = (col)=>{
15
17
  const field = col.field;
16
18
  const matchedStyles = bodyCellStyleList.filter((style)=>{
17
19
  if (style?.dynamicFilter) return style.dynamicFilter?.result?.success === true || !!style.dynamicFilter?.fallback;
18
20
  if (isNullish(style.selector)) return true;
19
21
  const selectors = array(style.selector);
20
- return selectors.some((selector)=>isPlainObject(selector) ? isNullish(selector.field) || selector.field === field : isNumber(selector) || isString(selector));
22
+ return selectors.some((sel)=>{
23
+ if (isFieldSelector(sel)) return matchesFieldSelector(field, sel);
24
+ if (isPlainObject(sel)) return isNullish(sel.field) || sel.field === field;
25
+ return isNumber(sel) || isString(sel);
26
+ });
21
27
  });
22
28
  if (!matchedStyles.length) return false;
23
29
  const hasDynamicFilter = matchedStyles.some((style)=>!!style.dynamicFilter);
30
+ const progressBarStyle = matchedStyles.filter((s)=>s.enableProgressBar && s?.selector && matchesFieldSelector(field, s.selector)).pop();
31
+ const backgroundColorScale = matchedStyles.find((s)=>s.enableBackgroundColorScale && s?.selector && matchesFieldSelector(field, s.selector));
32
+ let columnMin;
33
+ let columnMax;
34
+ if (progressBarStyle || backgroundColorScale) {
35
+ const { min, max } = getColumnMinMax(allData, field);
36
+ columnMin = min;
37
+ columnMax = max;
38
+ if (progressBarStyle) {
39
+ col.cellType = 'progressbar';
40
+ col.barType = 'negative';
41
+ col.min = progressBarStyle.barMin ?? columnMin;
42
+ col.max = progressBarStyle.barMin ?? columnMax;
43
+ }
44
+ }
24
45
  col.style = (datum)=>{
25
46
  const originalDatum = {
26
47
  [field]: datum.dataValue
27
48
  };
28
49
  const currentCellData = getCellOriginalDataByDatum(datum, hasDynamicFilter, originalDatum);
29
50
  const mergedStyle = matchedStyles.reduce((result, style)=>{
30
- const shouldApply = style.dynamicFilter ? selectorWithDynamicFilter(currentCellData || originalDatum, style.dynamicFilter, style.selector) : selector_js_selector(originalDatum, style.selector);
51
+ const shouldApply = style.dynamicFilter ? selectorWithDynamicFilter(currentCellData || originalDatum, style.dynamicFilter, style.selector) : selector(originalDatum, style.selector);
31
52
  if (shouldApply) {
32
53
  if (selectedPos.length && selectedPos[0].col === datum?.col && selectedPos[0].row === datum?.row) selectedPos.length = 0;
33
54
  selectedPos.push({
34
55
  col: datum?.col,
35
56
  row: datum?.row
36
57
  });
58
+ let cellStyle = pickBodyCellStyle(style);
59
+ if (style.enableBackgroundColorScale) {
60
+ const scaledColor = applyColorScale(datum.dataValue, {
61
+ minValue: columnMin,
62
+ maxValue: columnMax,
63
+ ...themeConfig.backgroundColorScale,
64
+ ...style?.backgroundColorScale
65
+ });
66
+ if (scaledColor) cellStyle.bgColor = scaledColor;
67
+ }
68
+ if ('progressbar' === col.cellType) cellStyle = {
69
+ ...cellStyle,
70
+ barHeight: themeConfig?.barHeight,
71
+ barMarkInBar: themeConfig?.barMarkInBar,
72
+ barMarkWidth: themeConfig?.barMarkWidth,
73
+ barPadding: themeConfig?.barPadding,
74
+ barRightToLeft: themeConfig?.barRightToLeft,
75
+ barAxisColor: themeConfig?.barAxisColor
76
+ };
37
77
  return {
38
78
  ...result,
39
- ...pickBodyCellStyle(style)
79
+ ...cellStyle
40
80
  };
41
81
  }
42
82
  return result;
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/table/pipes/cellStyle/table.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/cellStyle/table.ts"],"sourcesContent":["import type { ListTableConstructorOptions, ColumnDefine } from '@visactor/vtable'\nimport { array } from '@visactor/vutils'\nimport { isNullish, isNumber, isPlainObject, isString } from 'remeda'\nimport { selector, selectorWithDynamicFilter } from 'src/dataSelector/selector'\nimport type { BodyCellStyle, ListTableSpecPipe } from 'src/types'\nimport type { MeasureSelector, Selectors } from 'src/types/dataSelector'\nimport { getCellOriginalDataByDatum, pickBodyCellStyle } from './common'\nimport { preorderTraverse } from 'src/pipeline/utils/tree/traverse'\n\nexport const tableBodyCell: ListTableSpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { cellStyle } = advancedVSeed\n const bodyCellStyle = cellStyle?.bodyCellStyle\n\n if (!bodyCellStyle) {\n return spec as ListTableConstructorOptions\n }\n const bodyCellStyleList = array(bodyCellStyle) as BodyCellStyle[]\n const columns = (spec as ListTableConstructorOptions).columns || []\n const selectedPos: { col: number; row: number }[] = []\n const setStyleOfColumn = (col: ColumnDefine) => {\n const field = col.field as string\n const matchedStyles = bodyCellStyleList.filter((style) => {\n if (style?.dynamicFilter) {\n return style.dynamicFilter?.result?.success === true || !!style.dynamicFilter?.fallback\n }\n if (isNullish(style.selector)) {\n return true\n }\n const selectors = array(style.selector) as Selectors\n\n return selectors.some((selector) => {\n return isPlainObject(selector)\n ? isNullish(selector.field) || (selector as MeasureSelector).field === field\n : isNumber(selector) || isString(selector)\n })\n })\n\n if (!matchedStyles.length) {\n return false\n }\n\n const hasDynamicFilter = matchedStyles.some((style) => !!style.dynamicFilter)\n\n col.style = (datum: any) => {\n const originalDatum = {\n [field]: datum.dataValue,\n }\n const currentCellData = getCellOriginalDataByDatum(datum, hasDynamicFilter, originalDatum)\n\n const mergedStyle = matchedStyles.reduce<Record<string, any>>((result, style) => {\n const shouldApply = style.dynamicFilter\n ? selectorWithDynamicFilter(currentCellData || originalDatum, style.dynamicFilter, style.selector)\n : selector(originalDatum, style.selector)\n\n if (shouldApply) {\n if (selectedPos.length && selectedPos[0].col === datum?.col && selectedPos[0].row === datum?.row) {\n // 说明重复进入了,清空历史\n selectedPos.length = 0\n }\n selectedPos.push({\n col: datum?.col,\n row: datum?.row,\n })\n return {\n ...result,\n ...pickBodyCellStyle(style),\n }\n }\n\n return result\n }, {})\n\n return mergedStyle\n }\n return false\n }\n\n preorderTraverse<ColumnDefine, 'columns'>(columns, setStyleOfColumn, 'columns')\n ;(spec as any).runningConfig = {\n ...((spec as any).runningConfig || {}),\n selectedPos,\n }\n\n return spec as ListTableConstructorOptions\n}\n"],"names":["tableBodyCell","spec","context","advancedVSeed","cellStyle","bodyCellStyle","bodyCellStyleList","array","columns","selectedPos","setStyleOfColumn","col","field","matchedStyles","style","isNullish","selectors","selector","isPlainObject","isNumber","isString","hasDynamicFilter","datum","originalDatum","currentCellData","getCellOriginalDataByDatum","mergedStyle","result","shouldApply","selectorWithDynamicFilter","pickBodyCellStyle","preorderTraverse"],"mappings":";;;;;AASO,MAAMA,gBAAmC,CAACC,MAAMC;IACrD,MAAM,EAAEC,aAAa,EAAE,GAAGD;IAC1B,MAAM,EAAEE,SAAS,EAAE,GAAGD;IACtB,MAAME,gBAAgBD,WAAW;IAEjC,IAAI,CAACC,eACH,OAAOJ;IAET,MAAMK,oBAAoBC,MAAMF;IAChC,MAAMG,UAAWP,KAAqC,OAAO,IAAI,EAAE;IACnE,MAAMQ,cAA8C,EAAE;IACtD,MAAMC,mBAAmB,CAACC;QACxB,MAAMC,QAAQD,IAAI,KAAK;QACvB,MAAME,gBAAgBP,kBAAkB,MAAM,CAAC,CAACQ;YAC9C,IAAIA,OAAO,eACT,OAAOA,MAAM,aAAa,EAAE,QAAQ,YAAY,QAAQ,CAAC,CAACA,MAAM,aAAa,EAAE;YAEjF,IAAIC,UAAUD,MAAM,QAAQ,GAC1B,OAAO;YAET,MAAME,YAAYT,MAAMO,MAAM,QAAQ;YAEtC,OAAOE,UAAU,IAAI,CAAC,CAACC,WACdC,cAAcD,YACjBF,UAAUE,SAAS,KAAK,KAAMA,SAA6B,KAAK,KAAKL,QACrEO,SAASF,aAAaG,SAASH;QAEvC;QAEA,IAAI,CAACJ,cAAc,MAAM,EACvB,OAAO;QAGT,MAAMQ,mBAAmBR,cAAc,IAAI,CAAC,CAACC,QAAU,CAAC,CAACA,MAAM,aAAa;QAE5EH,IAAI,KAAK,GAAG,CAACW;YACX,MAAMC,gBAAgB;gBACpB,CAACX,MAAM,EAAEU,MAAM,SAAS;YAC1B;YACA,MAAME,kBAAkBC,2BAA2BH,OAAOD,kBAAkBE;YAE5E,MAAMG,cAAcb,cAAc,MAAM,CAAsB,CAACc,QAAQb;gBACrE,MAAMc,cAAcd,MAAM,aAAa,GACnCe,0BAA0BL,mBAAmBD,eAAeT,MAAM,aAAa,EAAEA,MAAM,QAAQ,IAC/FG,qBAASM,eAAeT,MAAM,QAAQ;gBAE1C,IAAIc,aAAa;oBACf,IAAInB,YAAY,MAAM,IAAIA,WAAW,CAAC,EAAE,CAAC,GAAG,KAAKa,OAAO,OAAOb,WAAW,CAAC,EAAE,CAAC,GAAG,KAAKa,OAAO,KAE3Fb,YAAY,MAAM,GAAG;oBAEvBA,YAAY,IAAI,CAAC;wBACf,KAAKa,OAAO;wBACZ,KAAKA,OAAO;oBACd;oBACA,OAAO;wBACL,GAAGK,MAAM;wBACT,GAAGG,kBAAkBhB,MAAM;oBAC7B;gBACF;gBAEA,OAAOa;YACT,GAAG,CAAC;YAEJ,OAAOD;QACT;QACA,OAAO;IACT;IAEAK,iBAA0CvB,SAASE,kBAAkB;IACnET,KAAa,aAAa,GAAG;QAC7B,GAAKA,KAAa,aAAa,IAAI,CAAC,CAAC;QACrCQ;IACF;IAEA,OAAOR;AACT"}
1
+ {"version":3,"file":"pipeline/spec/table/pipes/cellStyle/table.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/cellStyle/table.ts"],"sourcesContent":["import type { ListTableConstructorOptions, ColumnDefine, ProgressbarColumnDefine } from '@visactor/vtable'\nimport { array } from '@visactor/vutils'\nimport { isNullish, isNumber, isPlainObject, isString } from 'remeda'\nimport { isFieldSelector, matchesFieldSelector, selector, selectorWithDynamicFilter } from 'src/dataSelector/selector'\nimport type { BodyCellStyle, ListTableSpecPipe, TableConfig } from 'src/types'\nimport type { FieldSelector, MeasureSelector } from 'src/types/dataSelector'\nimport { getCellOriginalDataByDatum, pickBodyCellStyle, applyColorScale, getColumnMinMax } from './common'\nimport { preorderTraverse } from 'src/pipeline/utils/tree/traverse'\n\nexport const tableBodyCell: ListTableSpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { cellStyle, config, chartType } = advancedVSeed\n const bodyCellStyle = cellStyle?.bodyCellStyle\n const themeConfig = config?.[chartType] as TableConfig\n\n if (!bodyCellStyle) {\n return spec as ListTableConstructorOptions\n }\n\n const bodyCellStyleList = array(bodyCellStyle) as BodyCellStyle[]\n const columns = (spec as ListTableConstructorOptions).columns || []\n const selectedPos: { col: number; row: number }[] = []\n const allData = advancedVSeed.dataset || []\n\n const setStyleOfColumn = (col: ColumnDefine) => {\n const field = col.field as string\n\n // 过滤出匹配当前列的样式配置\n const matchedStyles = bodyCellStyleList.filter((style) => {\n // 检查 dynamicFilter\n if (style?.dynamicFilter) {\n return style.dynamicFilter?.result?.success === true || !!style.dynamicFilter?.fallback\n }\n\n // 检查 selector\n if (isNullish(style.selector)) {\n return true\n }\n\n const selectors = array(style.selector) as any[]\n return selectors.some((sel) => {\n // 1. FieldSelector(字段选择器)\n if (isFieldSelector(sel)) {\n return matchesFieldSelector(field, sel)\n }\n\n // 2. MeasureSelector/DimensionSelector(条件选择器)\n if (isPlainObject(sel)) {\n return isNullish(sel.field) || (sel as MeasureSelector).field === field\n }\n\n // 3. ValueSelector(值选择器)\n return isNumber(sel) || isString(sel)\n })\n })\n\n if (!matchedStyles.length) {\n return false\n }\n\n const hasDynamicFilter = matchedStyles.some((style) => !!style.dynamicFilter)\n\n // 前置处理:检查是否需要 progressBar\n const progressBarStyle = matchedStyles\n .filter((s) => s.enableProgressBar && s?.selector && matchesFieldSelector(field, s.selector as FieldSelector))\n .pop()\n const backgroundColorScale = matchedStyles.find(\n (s) => s.enableBackgroundColorScale && s?.selector && matchesFieldSelector(field, s.selector as FieldSelector),\n )\n let columnMin: number\n let columnMax: number\n if (progressBarStyle || backgroundColorScale) {\n const { min, max } = getColumnMinMax(allData, field)\n columnMin = min\n columnMax = max\n if (progressBarStyle) {\n col.cellType = 'progressbar'\n ;(col as ProgressbarColumnDefine).barType = 'negative'\n ;(col as ProgressbarColumnDefine).min = progressBarStyle.barMin ?? columnMin\n ;(col as ProgressbarColumnDefine).max = progressBarStyle.barMin ?? columnMax\n }\n }\n\n // 统一的 col.style 回调\n col.style = (datum: any) => {\n const originalDatum = {\n [field]: datum.dataValue,\n }\n const currentCellData = getCellOriginalDataByDatum(datum, hasDynamicFilter, originalDatum)\n\n const mergedStyle = matchedStyles.reduce<Record<string, any>>((result, style) => {\n const shouldApply = style.dynamicFilter\n ? selectorWithDynamicFilter(currentCellData || originalDatum, style.dynamicFilter, style.selector)\n : selector(originalDatum, style.selector)\n\n if (shouldApply) {\n if (selectedPos.length && selectedPos[0].col === datum?.col && selectedPos[0].row === datum?.row) {\n // 说明重复进入了,清空历史\n selectedPos.length = 0\n }\n selectedPos.push({\n col: datum?.col,\n row: datum?.row,\n })\n\n let cellStyle = pickBodyCellStyle(style)\n\n // 应用 backgroundColorScale\n if (style.enableBackgroundColorScale) {\n const scaledColor = applyColorScale(datum.dataValue, {\n minValue: columnMin,\n maxValue: columnMax,\n ...themeConfig.backgroundColorScale,\n ...style?.backgroundColorScale,\n } as any)\n if (scaledColor) {\n cellStyle.bgColor = scaledColor\n }\n }\n // 如果开启了数据条样式\n if (col.cellType === 'progressbar') {\n cellStyle = {\n ...cellStyle,\n barHeight: themeConfig?.barHeight,\n barMarkInBar: themeConfig?.barMarkInBar,\n barMarkWidth: themeConfig?.barMarkWidth,\n barPadding: themeConfig?.barPadding,\n barRightToLeft: themeConfig?.barRightToLeft,\n barAxisColor: themeConfig?.barAxisColor,\n }\n }\n\n return {\n ...result,\n ...cellStyle,\n }\n }\n\n return result\n }, {})\n\n return mergedStyle\n }\n\n return false\n }\n\n preorderTraverse<ColumnDefine, 'columns'>(columns, setStyleOfColumn, 'columns')\n ;(spec as any).runningConfig = {\n ...((spec as any).runningConfig || {}),\n selectedPos,\n }\n\n return spec as ListTableConstructorOptions\n}\n"],"names":["tableBodyCell","spec","context","advancedVSeed","cellStyle","config","chartType","bodyCellStyle","themeConfig","bodyCellStyleList","array","columns","selectedPos","allData","setStyleOfColumn","col","field","matchedStyles","style","isNullish","selectors","sel","isFieldSelector","matchesFieldSelector","isPlainObject","isNumber","isString","hasDynamicFilter","progressBarStyle","s","backgroundColorScale","columnMin","columnMax","min","max","getColumnMinMax","datum","originalDatum","currentCellData","getCellOriginalDataByDatum","mergedStyle","result","shouldApply","selectorWithDynamicFilter","selector","pickBodyCellStyle","scaledColor","applyColorScale","preorderTraverse"],"mappings":";;;;;AASO,MAAMA,gBAAmC,CAACC,MAAMC;IACrD,MAAM,EAAEC,aAAa,EAAE,GAAGD;IAC1B,MAAM,EAAEE,SAAS,EAAEC,MAAM,EAAEC,SAAS,EAAE,GAAGH;IACzC,MAAMI,gBAAgBH,WAAW;IACjC,MAAMI,cAAcH,QAAQ,CAACC,UAAU;IAEvC,IAAI,CAACC,eACH,OAAON;IAGT,MAAMQ,oBAAoBC,MAAMH;IAChC,MAAMI,UAAWV,KAAqC,OAAO,IAAI,EAAE;IACnE,MAAMW,cAA8C,EAAE;IACtD,MAAMC,UAAUV,cAAc,OAAO,IAAI,EAAE;IAE3C,MAAMW,mBAAmB,CAACC;QACxB,MAAMC,QAAQD,IAAI,KAAK;QAGvB,MAAME,gBAAgBR,kBAAkB,MAAM,CAAC,CAACS;YAE9C,IAAIA,OAAO,eACT,OAAOA,MAAM,aAAa,EAAE,QAAQ,YAAY,QAAQ,CAAC,CAACA,MAAM,aAAa,EAAE;YAIjF,IAAIC,UAAUD,MAAM,QAAQ,GAC1B,OAAO;YAGT,MAAME,YAAYV,MAAMQ,MAAM,QAAQ;YACtC,OAAOE,UAAU,IAAI,CAAC,CAACC;gBAErB,IAAIC,gBAAgBD,MAClB,OAAOE,qBAAqBP,OAAOK;gBAIrC,IAAIG,cAAcH,MAChB,OAAOF,UAAUE,IAAI,KAAK,KAAMA,IAAwB,KAAK,KAAKL;gBAIpE,OAAOS,SAASJ,QAAQK,SAASL;YACnC;QACF;QAEA,IAAI,CAACJ,cAAc,MAAM,EACvB,OAAO;QAGT,MAAMU,mBAAmBV,cAAc,IAAI,CAAC,CAACC,QAAU,CAAC,CAACA,MAAM,aAAa;QAG5E,MAAMU,mBAAmBX,cACtB,MAAM,CAAC,CAACY,IAAMA,EAAE,iBAAiB,IAAIA,GAAG,YAAYN,qBAAqBP,OAAOa,EAAE,QAAQ,GAC1F,GAAG;QACN,MAAMC,uBAAuBb,cAAc,IAAI,CAC7C,CAACY,IAAMA,EAAE,0BAA0B,IAAIA,GAAG,YAAYN,qBAAqBP,OAAOa,EAAE,QAAQ;QAE9F,IAAIE;QACJ,IAAIC;QACJ,IAAIJ,oBAAoBE,sBAAsB;YAC5C,MAAM,EAAEG,GAAG,EAAEC,GAAG,EAAE,GAAGC,gBAAgBtB,SAASG;YAC9Ce,YAAYE;YACZD,YAAYE;YACZ,IAAIN,kBAAkB;gBACpBb,IAAI,QAAQ,GAAG;gBACbA,IAAgC,OAAO,GAAG;gBAC1CA,IAAgC,GAAG,GAAGa,iBAAiB,MAAM,IAAIG;gBACjEhB,IAAgC,GAAG,GAAGa,iBAAiB,MAAM,IAAII;YACrE;QACF;QAGAjB,IAAI,KAAK,GAAG,CAACqB;YACX,MAAMC,gBAAgB;gBACpB,CAACrB,MAAM,EAAEoB,MAAM,SAAS;YAC1B;YACA,MAAME,kBAAkBC,2BAA2BH,OAAOT,kBAAkBU;YAE5E,MAAMG,cAAcvB,cAAc,MAAM,CAAsB,CAACwB,QAAQvB;gBACrE,MAAMwB,cAAcxB,MAAM,aAAa,GACnCyB,0BAA0BL,mBAAmBD,eAAenB,MAAM,aAAa,EAAEA,MAAM,QAAQ,IAC/F0B,SAASP,eAAenB,MAAM,QAAQ;gBAE1C,IAAIwB,aAAa;oBACf,IAAI9B,YAAY,MAAM,IAAIA,WAAW,CAAC,EAAE,CAAC,GAAG,KAAKwB,OAAO,OAAOxB,WAAW,CAAC,EAAE,CAAC,GAAG,KAAKwB,OAAO,KAE3FxB,YAAY,MAAM,GAAG;oBAEvBA,YAAY,IAAI,CAAC;wBACf,KAAKwB,OAAO;wBACZ,KAAKA,OAAO;oBACd;oBAEA,IAAIhC,YAAYyC,kBAAkB3B;oBAGlC,IAAIA,MAAM,0BAA0B,EAAE;wBACpC,MAAM4B,cAAcC,gBAAgBX,MAAM,SAAS,EAAE;4BACnD,UAAUL;4BACV,UAAUC;4BACV,GAAGxB,YAAY,oBAAoB;4BACnC,GAAGU,OAAO,oBAAoB;wBAChC;wBACA,IAAI4B,aACF1C,UAAU,OAAO,GAAG0C;oBAExB;oBAEA,IAAI/B,AAAiB,kBAAjBA,IAAI,QAAQ,EACdX,YAAY;wBACV,GAAGA,SAAS;wBACZ,WAAWI,aAAa;wBACxB,cAAcA,aAAa;wBAC3B,cAAcA,aAAa;wBAC3B,YAAYA,aAAa;wBACzB,gBAAgBA,aAAa;wBAC7B,cAAcA,aAAa;oBAC7B;oBAGF,OAAO;wBACL,GAAGiC,MAAM;wBACT,GAAGrC,SAAS;oBACd;gBACF;gBAEA,OAAOqC;YACT,GAAG,CAAC;YAEJ,OAAOD;QACT;QAEA,OAAO;IACT;IAEAQ,iBAA0CrC,SAASG,kBAAkB;IACnEb,KAAa,aAAa,GAAG;QAC7B,GAAKA,KAAa,aAAa,IAAI,CAAC,CAAC;QACrCW;IACF;IAEA,OAAOX;AACT"}
@@ -1,5 +1,7 @@
1
1
  import { createFormatterByMeasure, isMeasure } from "../../../../utils/index.js";
2
2
  import { treeTreeToColumns } from "./utils.js";
3
+ import { isNullish } from "remeda";
4
+ import { isUndefined } from "@visactor/vutils";
3
5
  const measureTreeToColumns = (spec, context)=>{
4
6
  const { advancedVSeed } = context;
5
7
  const measureTree = advancedVSeed.measureTree;
@@ -27,6 +29,7 @@ const fieldFormat = (node)=>{
27
29
  return (datum)=>{
28
30
  const { id } = node;
29
31
  const value = datum[id];
32
+ if (isNullish(value) || isUndefined(value)) return value;
30
33
  return formatter(value);
31
34
  };
32
35
  };
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/table/pipes/columns/measuresToColumns.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/columns/measuresToColumns.ts"],"sourcesContent":["import type { ListTableConstructorOptions } from '@visactor/vtable'\nimport { createFormatterByMeasure, isMeasure } from 'src/pipeline/utils'\nimport type { MeasureGroup, Measure, MeasureTree, ListTableSpecPipe, Datum } from 'src/types'\nimport { treeTreeToColumns } from './utils'\n\nexport const measureTreeToColumns: ListTableSpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const measureTree = (advancedVSeed as unknown as { measureTree: MeasureTree }).measureTree\n const result = { ...spec } as ListTableConstructorOptions\n\n const eachNode = (node: Measure | MeasureGroup) => {\n if (isMeasure(node)) {\n return {\n width: 'auto',\n fieldFormat: fieldFormat(node),\n }\n }\n\n return {}\n }\n const columns = treeTreeToColumns<Measure, MeasureGroup>(measureTree, eachNode)\n return {\n ...result,\n columns: [...(result.columns || []), ...columns] as ListTableConstructorOptions['columns'],\n }\n}\n\nconst fieldFormat = (node: Measure) => {\n const formatter = createFormatterByMeasure(node)\n\n return (datum: Datum) => {\n const { id } = node\n const value = datum[id] as number | string | undefined\n return formatter(value)\n }\n}\n"],"names":["measureTreeToColumns","spec","context","advancedVSeed","measureTree","result","eachNode","node","isMeasure","fieldFormat","columns","treeTreeToColumns","formatter","createFormatterByMeasure","datum","id","value"],"mappings":";;AAKO,MAAMA,uBAA0C,CAACC,MAAMC;IAC5D,MAAM,EAAEC,aAAa,EAAE,GAAGD;IAC1B,MAAME,cAAeD,cAA0D,WAAW;IAC1F,MAAME,SAAS;QAAE,GAAGJ,IAAI;IAAC;IAEzB,MAAMK,WAAW,CAACC;QAChB,IAAIC,UAAUD,OACZ,OAAO;YACL,OAAO;YACP,aAAaE,YAAYF;QAC3B;QAGF,OAAO,CAAC;IACV;IACA,MAAMG,UAAUC,kBAAyCP,aAAaE;IACtE,OAAO;QACL,GAAGD,MAAM;QACT,SAAS;eAAKA,OAAO,OAAO,IAAI,EAAE;eAAMK;SAAQ;IAClD;AACF;AAEA,MAAMD,cAAc,CAACF;IACnB,MAAMK,YAAYC,yBAAyBN;IAE3C,OAAO,CAACO;QACN,MAAM,EAAEC,EAAE,EAAE,GAAGR;QACf,MAAMS,QAAQF,KAAK,CAACC,GAAG;QACvB,OAAOH,UAAUI;IACnB;AACF"}
1
+ {"version":3,"file":"pipeline/spec/table/pipes/columns/measuresToColumns.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/columns/measuresToColumns.ts"],"sourcesContent":["import type { ListTableConstructorOptions } from '@visactor/vtable'\nimport { createFormatterByMeasure, isMeasure } from 'src/pipeline/utils'\nimport type { MeasureGroup, Measure, MeasureTree, ListTableSpecPipe, Datum } from 'src/types'\nimport { treeTreeToColumns } from './utils'\nimport { isNullish } from 'remeda'\nimport { isUndefined } from '@visactor/vutils'\n\nexport const measureTreeToColumns: ListTableSpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const measureTree = (advancedVSeed as unknown as { measureTree: MeasureTree }).measureTree\n const result = { ...spec } as ListTableConstructorOptions\n\n const eachNode = (node: Measure | MeasureGroup) => {\n if (isMeasure(node)) {\n return {\n width: 'auto',\n fieldFormat: fieldFormat(node),\n }\n }\n\n return {}\n }\n const columns = treeTreeToColumns<Measure, MeasureGroup>(measureTree, eachNode)\n return {\n ...result,\n columns: [...(result.columns || []), ...columns] as ListTableConstructorOptions['columns'],\n }\n}\n\nconst fieldFormat = (node: Measure) => {\n const formatter = createFormatterByMeasure(node)\n\n return (datum: Datum) => {\n const { id } = node\n const value = datum[id] as number | string | undefined\n if (isNullish(value) || isUndefined(value)) {\n return value\n }\n return formatter(value)\n }\n}\n"],"names":["measureTreeToColumns","spec","context","advancedVSeed","measureTree","result","eachNode","node","isMeasure","fieldFormat","columns","treeTreeToColumns","formatter","createFormatterByMeasure","datum","id","value","isNullish","isUndefined"],"mappings":";;;;AAOO,MAAMA,uBAA0C,CAACC,MAAMC;IAC5D,MAAM,EAAEC,aAAa,EAAE,GAAGD;IAC1B,MAAME,cAAeD,cAA0D,WAAW;IAC1F,MAAME,SAAS;QAAE,GAAGJ,IAAI;IAAC;IAEzB,MAAMK,WAAW,CAACC;QAChB,IAAIC,UAAUD,OACZ,OAAO;YACL,OAAO;YACP,aAAaE,YAAYF;QAC3B;QAGF,OAAO,CAAC;IACV;IACA,MAAMG,UAAUC,kBAAyCP,aAAaE;IACtE,OAAO;QACL,GAAGD,MAAM;QACT,SAAS;eAAKA,OAAO,OAAO,IAAI,EAAE;eAAMK;SAAQ;IAClD;AACF;AAEA,MAAMD,cAAc,CAACF;IACnB,MAAMK,YAAYC,yBAAyBN;IAE3C,OAAO,CAACO;QACN,MAAM,EAAEC,EAAE,EAAE,GAAGR;QACf,MAAMS,QAAQF,KAAK,CAACC,GAAG;QACvB,IAAIE,UAAUD,UAAUE,YAAYF,QAClC,OAAOA;QAET,OAAOJ,UAAUI;IACnB;AACF"}
@@ -1,25 +1,15 @@
1
- import { MeasureId } from "../../../../../dataReshape/index.js";
2
- import { findAllMeasures } from "../../../../utils/index.js";
3
1
  const pivotColumns = (spec, context)=>{
4
2
  const { advancedVSeed } = context;
5
3
  const { encoding } = advancedVSeed;
6
4
  const dimensions = advancedVSeed.dimensionTree;
7
5
  const columns = dimensions.filter((item)=>encoding.column?.includes(item.id));
8
- const allMeasures = findAllMeasures(advancedVSeed.measureTree);
9
6
  return {
10
7
  ...spec,
11
- columns: columns.map((item)=>{
12
- const res = {
8
+ columns: columns.map((item)=>({
13
9
  dimensionKey: item.id,
14
10
  title: item.alias || item.id,
15
11
  width: 'auto'
16
- };
17
- if (item.id === MeasureId) res.headerFormat = (measureId)=>{
18
- const measure = allMeasures.find((m)=>m.id === measureId);
19
- return measure?.alias ?? measureId;
20
- };
21
- return res;
22
- })
12
+ }))
23
13
  };
24
14
  };
25
15
  export { pivotColumns };
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/table/pipes/columns/pivotColumns.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/columns/pivotColumns.ts"],"sourcesContent":["import type { PivotTableConstructorOptions } from '@visactor/vtable'\nimport { MeasureId } from 'src/dataReshape'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { Dimensions, PivotTableSpecPipe } from 'src/types'\n\nexport const pivotColumns: PivotTableSpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { encoding } = advancedVSeed\n const dimensions = advancedVSeed.dimensionTree as Dimensions\n const columns = dimensions.filter((item) => encoding.column?.includes(item.id))\n const allMeasures = findAllMeasures(advancedVSeed.measureTree)\n\n return {\n ...spec,\n columns: columns.map((item) => {\n const res = {\n dimensionKey: item.id,\n title: item.alias || item.id,\n width: 'auto',\n }\n if (item.id === MeasureId) {\n ;(res as any).headerFormat = (measureId: string) => {\n const measure = allMeasures.find((m) => m.id === measureId)\n\n return measure?.alias ?? measureId\n }\n }\n\n return res\n }),\n } as PivotTableConstructorOptions\n}\n"],"names":["pivotColumns","spec","context","advancedVSeed","encoding","dimensions","columns","item","allMeasures","findAllMeasures","res","MeasureId","measureId","measure","m"],"mappings":";;AAKO,MAAMA,eAAmC,CAACC,MAAMC;IACrD,MAAM,EAAEC,aAAa,EAAE,GAAGD;IAC1B,MAAM,EAAEE,QAAQ,EAAE,GAAGD;IACrB,MAAME,aAAaF,cAAc,aAAa;IAC9C,MAAMG,UAAUD,WAAW,MAAM,CAAC,CAACE,OAASH,SAAS,MAAM,EAAE,SAASG,KAAK,EAAE;IAC7E,MAAMC,cAAcC,gBAAgBN,cAAc,WAAW;IAE7D,OAAO;QACL,GAAGF,IAAI;QACP,SAASK,QAAQ,GAAG,CAAC,CAACC;YACpB,MAAMG,MAAM;gBACV,cAAcH,KAAK,EAAE;gBACrB,OAAOA,KAAK,KAAK,IAAIA,KAAK,EAAE;gBAC5B,OAAO;YACT;YACA,IAAIA,KAAK,EAAE,KAAKI,WACZD,IAAY,YAAY,GAAG,CAACE;gBAC5B,MAAMC,UAAUL,YAAY,IAAI,CAAC,CAACM,IAAMA,EAAE,EAAE,KAAKF;gBAEjD,OAAOC,SAAS,SAASD;YAC3B;YAGF,OAAOF;QACT;IACF;AACF"}
1
+ {"version":3,"file":"pipeline/spec/table/pipes/columns/pivotColumns.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/columns/pivotColumns.ts"],"sourcesContent":["import type { PivotTableConstructorOptions } from '@visactor/vtable'\nimport type { Dimensions, PivotTableSpecPipe } from 'src/types'\n\nexport const pivotColumns: PivotTableSpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { encoding } = advancedVSeed\n const dimensions = advancedVSeed.dimensionTree as Dimensions\n const columns = dimensions.filter((item) => encoding.column?.includes(item.id))\n\n return {\n ...spec,\n columns: columns.map((item) => {\n return {\n dimensionKey: item.id,\n title: item.alias || item.id,\n width: 'auto',\n }\n }),\n } as PivotTableConstructorOptions\n}\n"],"names":["pivotColumns","spec","context","advancedVSeed","encoding","dimensions","columns","item"],"mappings":"AAGO,MAAMA,eAAmC,CAACC,MAAMC;IACrD,MAAM,EAAEC,aAAa,EAAE,GAAGD;IAC1B,MAAM,EAAEE,QAAQ,EAAE,GAAGD;IACrB,MAAME,aAAaF,cAAc,aAAa;IAC9C,MAAMG,UAAUD,WAAW,MAAM,CAAC,CAACE,OAASH,SAAS,MAAM,EAAE,SAASG,KAAK,EAAE;IAE7E,OAAO;QACL,GAAGN,IAAI;QACP,SAASK,QAAQ,GAAG,CAAC,CAACC,OACb;gBACL,cAAcA,KAAK,EAAE;gBACrB,OAAOA,KAAK,KAAK,IAAIA,KAAK,EAAE;gBAC5B,OAAO;YACT;IAEJ;AACF"}
@@ -1,9 +1,10 @@
1
1
  const titleOnDimension = (spec)=>{
2
- const { rows = [], columns = [] } = spec;
2
+ const { rows = [], columns = [], indicatorsAsCol, indicators = [] } = spec;
3
+ const rowsLength = rows.length + (indicatorsAsCol ? 0 : indicators?.length > 0 ? 1 : 0);
3
4
  return {
4
5
  ...spec,
5
6
  corner: {
6
- titleOnDimension: rows.length <= 1 && columns.length >= 1 ? 'column' : 'row'
7
+ titleOnDimension: rowsLength <= 1 && columns.length >= 1 && !indicatorsAsCol ? 'column' : 'row'
7
8
  }
8
9
  };
9
10
  };
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/table/pipes/corner/titleOnDimension.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/corner/titleOnDimension.ts"],"sourcesContent":["import type { PivotTableSpecPipe } from 'src/types'\n\nexport const titleOnDimension: PivotTableSpecPipe = (spec) => {\n const { rows = [], columns = [] } = spec\n\n return {\n ...spec,\n corner: {\n titleOnDimension: (rows as any[]).length <= 1 && (columns as any[]).length >= 1 ? 'column' : 'row',\n },\n }\n}\n"],"names":["titleOnDimension","spec","rows","columns"],"mappings":"AAEO,MAAMA,mBAAuC,CAACC;IACnD,MAAM,EAAEC,OAAO,EAAE,EAAEC,UAAU,EAAE,EAAE,GAAGF;IAEpC,OAAO;QACL,GAAGA,IAAI;QACP,QAAQ;YACN,kBAAmBC,KAAe,MAAM,IAAI,KAAMC,QAAkB,MAAM,IAAI,IAAI,WAAW;QAC/F;IACF;AACF"}
1
+ {"version":3,"file":"pipeline/spec/table/pipes/corner/titleOnDimension.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/corner/titleOnDimension.ts"],"sourcesContent":["import type { PivotTableSpecPipe } from 'src/types'\n\nexport const titleOnDimension: PivotTableSpecPipe = (spec) => {\n const { rows = [], columns = [], indicatorsAsCol, indicators = [] } = spec\n const rowsLength = rows.length + (indicatorsAsCol ? 0 : indicators?.length > 0 ? 1 : 0)\n\n return {\n ...spec,\n corner: {\n titleOnDimension: rowsLength <= 1 && columns.length >= 1 && !indicatorsAsCol ? 'column' : 'row',\n },\n }\n}\n"],"names":["titleOnDimension","spec","rows","columns","indicatorsAsCol","indicators","rowsLength"],"mappings":"AAEO,MAAMA,mBAAuC,CAACC;IACnD,MAAM,EAAEC,OAAO,EAAE,EAAEC,UAAU,EAAE,EAAEC,eAAe,EAAEC,aAAa,EAAE,EAAE,GAAGJ;IACtE,MAAMK,aAAaJ,KAAK,MAAM,GAAIE,CAAAA,kBAAkB,IAAIC,YAAY,SAAS,IAAI,IAAI;IAErF,OAAO;QACL,GAAGJ,IAAI;QACP,QAAQ;YACN,kBAAkBK,cAAc,KAAKH,QAAQ,MAAM,IAAI,KAAK,CAACC,kBAAkB,WAAW;QAC5F;IACF;AACF"}
@@ -5,7 +5,7 @@ const dataConfig = (spec, context)=>{
5
5
  const measures = findAllMeasures(advancedVSeed.measureTree);
6
6
  const aggregationRules = measures.map((measure)=>({
7
7
  field: measure.id,
8
- aggregationType: 'NONE',
8
+ aggregationType: 'SUM',
9
9
  indicatorKey: measure.id
10
10
  }));
11
11
  const dataConfigObj = {
@@ -15,9 +15,9 @@ const dataConfig = (spec, context)=>{
15
15
  if (totals) {
16
16
  const grandTotalLabel = intl.i18n`总计`;
17
17
  const subTotalLabel = intl.i18n`小计`;
18
- const dimensionIds = (advancedVSeed.dimensionTree || []).map((dim)=>dim.id);
19
18
  dataConfigObj.totals = {};
20
19
  if (totals.row) {
20
+ const dimensionIds = (advancedVSeed.dimensionTree || []).filter((dim)=>'row' === dim.encoding).map((dim)=>dim.id);
21
21
  const rowSubDimensions = totals.row.subTotalsDimensions?.filter((dim)=>dimensionIds.includes(dim));
22
22
  const normalizedRowSubDimensions = totals.row.showSubTotals && (!rowSubDimensions || 0 === rowSubDimensions.length) ? dimensionIds.length > 0 ? [
23
23
  dimensionIds[0]
@@ -31,6 +31,7 @@ const dataConfig = (spec, context)=>{
31
31
  };
32
32
  }
33
33
  if (totals.column) {
34
+ const dimensionIds = (advancedVSeed.dimensionTree || []).filter((dim)=>'column' === dim.encoding).map((dim)=>dim.id);
34
35
  const columnSubDimensions = totals.column.subTotalsDimensions?.filter((dim)=>dimensionIds.includes(dim));
35
36
  const normalizedColumnSubDimensions = totals.column.showSubTotals && (!columnSubDimensions || 0 === columnSubDimensions.length) ? dimensionIds.length > 0 ? [
36
37
  dimensionIds[0]
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/table/pipes/indicators/pivotDataConfig.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/indicators/pivotDataConfig.ts"],"sourcesContent":["import { intl } from 'src/i18n'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { PivotTable, PivotTableSpecPipe } from 'src/types'\n\nexport const dataConfig: PivotTableSpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const measures = findAllMeasures(advancedVSeed.measureTree)\n\n const aggregationRules = measures.map((measure) => ({\n field: measure.id,\n aggregationType: 'NONE',\n indicatorKey: measure.id,\n }))\n\n const dataConfigObj: any = {\n aggregationRules,\n }\n\n // 处理totals配置\n const { totals } = vseed as PivotTable\n if (totals) {\n const grandTotalLabel = intl.i18n`总计`\n const subTotalLabel = intl.i18n`小计`\n const dimensionIds = (advancedVSeed.dimensionTree || []).map((dim) => dim.id)\n\n dataConfigObj.totals = {}\n\n // 处理行配置\n if (totals.row) {\n const rowSubDimensions = totals.row.subTotalsDimensions?.filter((dim) => dimensionIds.includes(dim))\n const normalizedRowSubDimensions =\n totals.row.showSubTotals && (!rowSubDimensions || rowSubDimensions.length === 0)\n ? dimensionIds.length > 0\n ? [dimensionIds[0]]\n : []\n : rowSubDimensions\n\n dataConfigObj.totals.row = {\n showGrandTotals: totals.row.showGrandTotals ?? false,\n showSubTotals: totals.row.showSubTotals ?? false,\n subTotalsDimensions: normalizedRowSubDimensions,\n grandTotalLabel,\n subTotalLabel,\n }\n }\n\n // 处理列配置\n if (totals.column) {\n const columnSubDimensions = totals.column.subTotalsDimensions?.filter((dim) => dimensionIds.includes(dim))\n const normalizedColumnSubDimensions =\n totals.column.showSubTotals && (!columnSubDimensions || columnSubDimensions.length === 0)\n ? dimensionIds.length > 0\n ? [dimensionIds[0]]\n : []\n : columnSubDimensions\n\n dataConfigObj.totals.column = {\n showGrandTotals: totals.column.showGrandTotals ?? false,\n showSubTotals: totals.column.showSubTotals ?? false,\n subTotalsDimensions: normalizedColumnSubDimensions,\n grandTotalLabel,\n subTotalLabel,\n }\n }\n }\n\n return {\n ...spec,\n dataConfig: dataConfigObj,\n }\n}\n"],"names":["dataConfig","spec","context","advancedVSeed","vseed","measures","findAllMeasures","aggregationRules","measure","dataConfigObj","totals","grandTotalLabel","intl","subTotalLabel","dimensionIds","dim","rowSubDimensions","normalizedRowSubDimensions","columnSubDimensions","normalizedColumnSubDimensions"],"mappings":";;AAIO,MAAMA,aAAiC,CAACC,MAAMC;IACnD,MAAM,EAAEC,aAAa,EAAEC,KAAK,EAAE,GAAGF;IACjC,MAAMG,WAAWC,gBAAgBH,cAAc,WAAW;IAE1D,MAAMI,mBAAmBF,SAAS,GAAG,CAAC,CAACG,UAAa;YAClD,OAAOA,QAAQ,EAAE;YACjB,iBAAiB;YACjB,cAAcA,QAAQ,EAAE;QAC1B;IAEA,MAAMC,gBAAqB;QACzBF;IACF;IAGA,MAAM,EAAEG,MAAM,EAAE,GAAGN;IACnB,IAAIM,QAAQ;QACV,MAAMC,kBAAkBC,KAAK,IAAI,CAAC,EAAE,CAAC;QACrC,MAAMC,gBAAgBD,KAAK,IAAI,CAAC,EAAE,CAAC;QACnC,MAAME,eAAgBX,AAAAA,CAAAA,cAAc,aAAa,IAAI,EAAC,EAAG,GAAG,CAAC,CAACY,MAAQA,IAAI,EAAE;QAE5EN,cAAc,MAAM,GAAG,CAAC;QAGxB,IAAIC,OAAO,GAAG,EAAE;YACd,MAAMM,mBAAmBN,OAAO,GAAG,CAAC,mBAAmB,EAAE,OAAO,CAACK,MAAQD,aAAa,QAAQ,CAACC;YAC/F,MAAME,6BACJP,OAAO,GAAG,CAAC,aAAa,IAAK,EAACM,oBAAoBA,AAA4B,MAA5BA,iBAAiB,MAAM,AAAK,IAC1EF,aAAa,MAAM,GAAG,IACpB;gBAACA,YAAY,CAAC,EAAE;aAAC,GACjB,EAAE,GACJE;YAENP,cAAc,MAAM,CAAC,GAAG,GAAG;gBACzB,iBAAiBC,OAAO,GAAG,CAAC,eAAe,IAAI;gBAC/C,eAAeA,OAAO,GAAG,CAAC,aAAa,IAAI;gBAC3C,qBAAqBO;gBACrBN;gBACAE;YACF;QACF;QAGA,IAAIH,OAAO,MAAM,EAAE;YACjB,MAAMQ,sBAAsBR,OAAO,MAAM,CAAC,mBAAmB,EAAE,OAAO,CAACK,MAAQD,aAAa,QAAQ,CAACC;YACrG,MAAMI,gCACJT,OAAO,MAAM,CAAC,aAAa,IAAK,EAACQ,uBAAuBA,AAA+B,MAA/BA,oBAAoB,MAAM,AAAK,IACnFJ,aAAa,MAAM,GAAG,IACpB;gBAACA,YAAY,CAAC,EAAE;aAAC,GACjB,EAAE,GACJI;YAENT,cAAc,MAAM,CAAC,MAAM,GAAG;gBAC5B,iBAAiBC,OAAO,MAAM,CAAC,eAAe,IAAI;gBAClD,eAAeA,OAAO,MAAM,CAAC,aAAa,IAAI;gBAC9C,qBAAqBS;gBACrBR;gBACAE;YACF;QACF;IACF;IAEA,OAAO;QACL,GAAGZ,IAAI;QACP,YAAYQ;IACd;AACF"}
1
+ {"version":3,"file":"pipeline/spec/table/pipes/indicators/pivotDataConfig.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/indicators/pivotDataConfig.ts"],"sourcesContent":["import { intl } from 'src/i18n'\nimport { findAllMeasures } from 'src/pipeline/utils'\nimport type { Dimension, PivotTable, PivotTableSpecPipe } from 'src/types'\n\nexport const dataConfig: PivotTableSpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const measures = findAllMeasures(advancedVSeed.measureTree)\n\n const aggregationRules = measures.map((measure) => ({\n field: measure.id,\n aggregationType: 'SUM',\n indicatorKey: measure.id,\n }))\n\n const dataConfigObj: any = {\n aggregationRules,\n }\n\n // 处理totals配置\n const { totals } = vseed as PivotTable\n if (totals) {\n const grandTotalLabel = intl.i18n`总计`\n const subTotalLabel = intl.i18n`小计`\n\n dataConfigObj.totals = {}\n\n // 处理行配置\n if (totals.row) {\n const dimensionIds = (advancedVSeed.dimensionTree || [])\n .filter((dim: Dimension) => dim.encoding === 'row')\n .map((dim) => dim.id)\n const rowSubDimensions = totals.row.subTotalsDimensions?.filter((dim) => dimensionIds.includes(dim))\n const normalizedRowSubDimensions =\n totals.row.showSubTotals && (!rowSubDimensions || rowSubDimensions.length === 0)\n ? dimensionIds.length > 0\n ? [dimensionIds[0]]\n : []\n : rowSubDimensions\n\n dataConfigObj.totals.row = {\n showGrandTotals: totals.row.showGrandTotals ?? false,\n showSubTotals: totals.row.showSubTotals ?? false,\n subTotalsDimensions: normalizedRowSubDimensions,\n grandTotalLabel,\n subTotalLabel,\n }\n }\n\n // 处理列配置\n if (totals.column) {\n const dimensionIds = (advancedVSeed.dimensionTree || [])\n .filter((dim: Dimension) => dim.encoding === 'column')\n .map((dim) => dim.id)\n const columnSubDimensions = totals.column.subTotalsDimensions?.filter((dim) => dimensionIds.includes(dim))\n const normalizedColumnSubDimensions =\n totals.column.showSubTotals && (!columnSubDimensions || columnSubDimensions.length === 0)\n ? dimensionIds.length > 0\n ? [dimensionIds[0]]\n : []\n : columnSubDimensions\n\n dataConfigObj.totals.column = {\n showGrandTotals: totals.column.showGrandTotals ?? false,\n showSubTotals: totals.column.showSubTotals ?? false,\n subTotalsDimensions: normalizedColumnSubDimensions,\n grandTotalLabel,\n subTotalLabel,\n }\n }\n }\n\n return {\n ...spec,\n dataConfig: dataConfigObj,\n }\n}\n"],"names":["dataConfig","spec","context","advancedVSeed","vseed","measures","findAllMeasures","aggregationRules","measure","dataConfigObj","totals","grandTotalLabel","intl","subTotalLabel","dimensionIds","dim","rowSubDimensions","normalizedRowSubDimensions","columnSubDimensions","normalizedColumnSubDimensions"],"mappings":";;AAIO,MAAMA,aAAiC,CAACC,MAAMC;IACnD,MAAM,EAAEC,aAAa,EAAEC,KAAK,EAAE,GAAGF;IACjC,MAAMG,WAAWC,gBAAgBH,cAAc,WAAW;IAE1D,MAAMI,mBAAmBF,SAAS,GAAG,CAAC,CAACG,UAAa;YAClD,OAAOA,QAAQ,EAAE;YACjB,iBAAiB;YACjB,cAAcA,QAAQ,EAAE;QAC1B;IAEA,MAAMC,gBAAqB;QACzBF;IACF;IAGA,MAAM,EAAEG,MAAM,EAAE,GAAGN;IACnB,IAAIM,QAAQ;QACV,MAAMC,kBAAkBC,KAAK,IAAI,CAAC,EAAE,CAAC;QACrC,MAAMC,gBAAgBD,KAAK,IAAI,CAAC,EAAE,CAAC;QAEnCH,cAAc,MAAM,GAAG,CAAC;QAGxB,IAAIC,OAAO,GAAG,EAAE;YACd,MAAMI,eAAgBX,AAAAA,CAAAA,cAAc,aAAa,IAAI,EAAC,EACnD,MAAM,CAAC,CAACY,MAAmBA,AAAiB,UAAjBA,IAAI,QAAQ,EACvC,GAAG,CAAC,CAACA,MAAQA,IAAI,EAAE;YACtB,MAAMC,mBAAmBN,OAAO,GAAG,CAAC,mBAAmB,EAAE,OAAO,CAACK,MAAQD,aAAa,QAAQ,CAACC;YAC/F,MAAME,6BACJP,OAAO,GAAG,CAAC,aAAa,IAAK,EAACM,oBAAoBA,AAA4B,MAA5BA,iBAAiB,MAAM,AAAK,IAC1EF,aAAa,MAAM,GAAG,IACpB;gBAACA,YAAY,CAAC,EAAE;aAAC,GACjB,EAAE,GACJE;YAENP,cAAc,MAAM,CAAC,GAAG,GAAG;gBACzB,iBAAiBC,OAAO,GAAG,CAAC,eAAe,IAAI;gBAC/C,eAAeA,OAAO,GAAG,CAAC,aAAa,IAAI;gBAC3C,qBAAqBO;gBACrBN;gBACAE;YACF;QACF;QAGA,IAAIH,OAAO,MAAM,EAAE;YACjB,MAAMI,eAAgBX,AAAAA,CAAAA,cAAc,aAAa,IAAI,EAAC,EACnD,MAAM,CAAC,CAACY,MAAmBA,AAAiB,aAAjBA,IAAI,QAAQ,EACvC,GAAG,CAAC,CAACA,MAAQA,IAAI,EAAE;YACtB,MAAMG,sBAAsBR,OAAO,MAAM,CAAC,mBAAmB,EAAE,OAAO,CAACK,MAAQD,aAAa,QAAQ,CAACC;YACrG,MAAMI,gCACJT,OAAO,MAAM,CAAC,aAAa,IAAK,EAACQ,uBAAuBA,AAA+B,MAA/BA,oBAAoB,MAAM,AAAK,IACnFJ,aAAa,MAAM,GAAG,IACpB;gBAACA,YAAY,CAAC,EAAE;aAAC,GACjB,EAAE,GACJI;YAENT,cAAc,MAAM,CAAC,MAAM,GAAG;gBAC5B,iBAAiBC,OAAO,MAAM,CAAC,eAAe,IAAI;gBAClD,eAAeA,OAAO,MAAM,CAAC,aAAa,IAAI;gBAC9C,qBAAqBS;gBACrBR;gBACAE;YACF;QACF;IACF;IAEA,OAAO;QACL,GAAGZ,IAAI;QACP,YAAYQ;IACd;AACF"}
@@ -1,38 +1,33 @@
1
1
  import { isNumber } from "remeda";
2
2
  import { intl } from "../../../../../i18n/index.js";
3
- import { createFormatterByMeasure, findMeasureById } from "../../../../utils/index.js";
3
+ import { createFormatterByMeasure, findAllMeasures } from "../../../../utils/index.js";
4
4
  const pivotIndicators = (spec, context)=>{
5
- const { advancedVSeed } = context;
6
- const { measureTree, datasetReshapeInfo } = advancedVSeed;
7
- const { foldInfo } = datasetReshapeInfo[0];
8
- const hasRow = spec?.rows?.length > 0;
9
- const foldMapValues = Object.values(foldInfo.foldMap);
5
+ const { advancedVSeed, vseed } = context;
6
+ const { measureTree } = advancedVSeed;
7
+ const measures = findAllMeasures(measureTree);
8
+ const indicatorsAsCol = vseed.indicatorsAsCol ?? false;
10
9
  return {
11
10
  ...spec,
12
11
  indicatorTitle: intl.i18n`指标名称`,
13
- indicatorsAsCol: hasRow,
14
- hideIndicatorName: hasRow,
15
- indicators: [
16
- {
12
+ indicatorsAsCol,
13
+ hideIndicatorName: measures.length <= 1,
14
+ indicators: measures.map((measure)=>{
15
+ const formatter = createFormatterByMeasure(measure);
16
+ return {
17
17
  cellType: 'text',
18
- indicatorKey: foldInfo.measureValue,
19
- title: foldMapValues.length > 1 ? '' : foldMapValues[0],
18
+ indicatorKey: measure.id,
19
+ title: measure.alias || measure.id,
20
20
  width: 'auto',
21
- format: fieldFormat(measureTree, foldInfo)
22
- }
23
- ]
21
+ format: (value, col, row, table)=>{
22
+ if (!isNumber(col) || !isNumber(row) || !table) return value;
23
+ const datum = table.getCellOriginRecord(col, row);
24
+ if (!datum?.[0]) return value;
25
+ return formatter(value);
26
+ }
27
+ };
28
+ })
24
29
  };
25
30
  };
26
- const fieldFormat = (measureTree, foldInfo)=>(value, col, row, table)=>{
27
- if (!isNumber(col) || !isNumber(row) || !table) return value;
28
- const datum = table.getCellOriginRecord(col, row);
29
- if (!datum[0]) return value;
30
- const { measureId: foldMeasureId } = foldInfo;
31
- const measureId = datum[0][foldMeasureId];
32
- const measure = findMeasureById(measureTree, measureId);
33
- const formatter = createFormatterByMeasure(measure);
34
- return formatter(value);
35
- };
36
31
  export { pivotIndicators };
37
32
 
38
33
  //# sourceMappingURL=pivotIndicators.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/table/pipes/indicators/pivotIndicators.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/indicators/pivotIndicators.ts"],"sourcesContent":["import type { PivotChartConstructorOptions, BaseTableAPI } from '@visactor/vtable'\nimport { isNumber } from 'remeda'\nimport { intl } from 'src/i18n'\nimport { createFormatterByMeasure, findMeasureById } from 'src/pipeline/utils'\nimport type { Datum, FoldInfo, MeasureTree, PivotTableSpecPipe } from 'src/types'\n\nexport const pivotIndicators: PivotTableSpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const { measureTree, datasetReshapeInfo } = advancedVSeed\n const { foldInfo } = datasetReshapeInfo[0]\n const hasRow = ((spec as any)?.rows as any[])?.length > 0\n const foldMapValues = Object.values(foldInfo.foldMap)\n\n return {\n ...spec,\n indicatorTitle: intl.i18n`指标名称`,\n indicatorsAsCol: hasRow,\n hideIndicatorName: hasRow,\n indicators: [\n {\n cellType: 'text',\n indicatorKey: foldInfo.measureValue,\n title: foldMapValues.length > 1 ? '' : foldMapValues[0],\n width: 'auto',\n format: fieldFormat(measureTree as MeasureTree, foldInfo as FoldInfo),\n },\n ] as unknown as PivotChartConstructorOptions['indicators'],\n }\n}\n\nconst fieldFormat = (measureTree: MeasureTree, foldInfo: FoldInfo) => {\n return (value: number | string, col?: number, row?: number, table?: BaseTableAPI) => {\n if (!isNumber(col) || !isNumber(row) || !table) {\n return value\n }\n\n const datum = table.getCellOriginRecord(col, row) as Datum[]\n if (!datum[0]) {\n return value\n }\n const { measureId: foldMeasureId } = foldInfo\n const measureId = datum[0][foldMeasureId] as string\n const measure = findMeasureById(measureTree, measureId)\n const formatter = createFormatterByMeasure(measure)\n return formatter(value)\n }\n}\n"],"names":["pivotIndicators","spec","context","advancedVSeed","measureTree","datasetReshapeInfo","foldInfo","hasRow","foldMapValues","Object","intl","fieldFormat","value","col","row","table","isNumber","datum","foldMeasureId","measureId","measure","findMeasureById","formatter","createFormatterByMeasure"],"mappings":";;;AAMO,MAAMA,kBAAsC,CAACC,MAAMC;IACxD,MAAM,EAAEC,aAAa,EAAE,GAAGD;IAC1B,MAAM,EAAEE,WAAW,EAAEC,kBAAkB,EAAE,GAAGF;IAC5C,MAAM,EAAEG,QAAQ,EAAE,GAAGD,kBAAkB,CAAC,EAAE;IAC1C,MAAME,SAAWN,MAAc,MAAgB,SAAS;IACxD,MAAMO,gBAAgBC,OAAO,MAAM,CAACH,SAAS,OAAO;IAEpD,OAAO;QACL,GAAGL,IAAI;QACP,gBAAgBS,KAAK,IAAI,CAAC,IAAI,CAAC;QAC/B,iBAAiBH;QACjB,mBAAmBA;QACnB,YAAY;YACV;gBACE,UAAU;gBACV,cAAcD,SAAS,YAAY;gBACnC,OAAOE,cAAc,MAAM,GAAG,IAAI,KAAKA,aAAa,CAAC,EAAE;gBACvD,OAAO;gBACP,QAAQG,YAAYP,aAA4BE;YAClD;SACD;IACH;AACF;AAEA,MAAMK,cAAc,CAACP,aAA0BE,WACtC,CAACM,OAAwBC,KAAcC,KAAcC;QAC1D,IAAI,CAACC,SAASH,QAAQ,CAACG,SAASF,QAAQ,CAACC,OACvC,OAAOH;QAGT,MAAMK,QAAQF,MAAM,mBAAmB,CAACF,KAAKC;QAC7C,IAAI,CAACG,KAAK,CAAC,EAAE,EACX,OAAOL;QAET,MAAM,EAAE,WAAWM,aAAa,EAAE,GAAGZ;QACrC,MAAMa,YAAYF,KAAK,CAAC,EAAE,CAACC,cAAc;QACzC,MAAME,UAAUC,gBAAgBjB,aAAae;QAC7C,MAAMG,YAAYC,yBAAyBH;QAC3C,OAAOE,UAAUV;IACnB"}
1
+ {"version":3,"file":"pipeline/spec/table/pipes/indicators/pivotIndicators.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/indicators/pivotIndicators.ts"],"sourcesContent":["import type { PivotChartConstructorOptions, BaseTableAPI } from '@visactor/vtable'\nimport { isNumber } from 'remeda'\nimport { intl } from 'src/i18n'\nimport { createFormatterByMeasure, findAllMeasures } from 'src/pipeline/utils'\nimport type { Datum, MeasureTree, PivotTable, PivotTableSpecPipe } from 'src/types'\n\nexport const pivotIndicators: PivotTableSpecPipe = (spec, context) => {\n const { advancedVSeed, vseed } = context\n const { measureTree } = advancedVSeed\n const measures = findAllMeasures(measureTree as MeasureTree)\n\n // 用户可配置 indicatorsAsCol,默认 true\n const indicatorsAsCol = (vseed as PivotTable).indicatorsAsCol ?? false\n\n return {\n ...spec,\n indicatorTitle: intl.i18n`指标名称`,\n indicatorsAsCol,\n hideIndicatorName: measures.length <= 1,\n indicators: measures.map((measure) => {\n const formatter = createFormatterByMeasure(measure)\n return {\n cellType: 'text',\n indicatorKey: measure.id,\n title: measure.alias || measure.id,\n width: 'auto',\n format: (value: number | string, col?: number, row?: number, table?: BaseTableAPI) => {\n if (!isNumber(col) || !isNumber(row) || !table) {\n return value\n }\n const datum = table.getCellOriginRecord(col, row) as Datum[]\n if (!datum?.[0]) {\n return value\n }\n return formatter(value)\n },\n }\n }) as unknown as PivotChartConstructorOptions['indicators'],\n }\n}\n"],"names":["pivotIndicators","spec","context","advancedVSeed","vseed","measureTree","measures","findAllMeasures","indicatorsAsCol","intl","measure","formatter","createFormatterByMeasure","value","col","row","table","isNumber","datum"],"mappings":";;;AAMO,MAAMA,kBAAsC,CAACC,MAAMC;IACxD,MAAM,EAAEC,aAAa,EAAEC,KAAK,EAAE,GAAGF;IACjC,MAAM,EAAEG,WAAW,EAAE,GAAGF;IACxB,MAAMG,WAAWC,gBAAgBF;IAGjC,MAAMG,kBAAmBJ,MAAqB,eAAe,IAAI;IAEjE,OAAO;QACL,GAAGH,IAAI;QACP,gBAAgBQ,KAAK,IAAI,CAAC,IAAI,CAAC;QAC/BD;QACA,mBAAmBF,SAAS,MAAM,IAAI;QACtC,YAAYA,SAAS,GAAG,CAAC,CAACI;YACxB,MAAMC,YAAYC,yBAAyBF;YAC3C,OAAO;gBACL,UAAU;gBACV,cAAcA,QAAQ,EAAE;gBACxB,OAAOA,QAAQ,KAAK,IAAIA,QAAQ,EAAE;gBAClC,OAAO;gBACP,QAAQ,CAACG,OAAwBC,KAAcC,KAAcC;oBAC3D,IAAI,CAACC,SAASH,QAAQ,CAACG,SAASF,QAAQ,CAACC,OACvC,OAAOH;oBAET,MAAMK,QAAQF,MAAM,mBAAmB,CAACF,KAAKC;oBAC7C,IAAI,CAACG,OAAO,CAAC,EAAE,EACb,OAAOL;oBAET,OAAOF,UAAUE;gBACnB;YACF;QACF;IACF;AACF"}
@@ -1,25 +1,15 @@
1
- import { MeasureId } from "../../../../../dataReshape/index.js";
2
- import { findAllMeasures } from "../../../../utils/measures/find.js";
3
1
  const pivotRows = (spec, context)=>{
4
2
  const { advancedVSeed } = context;
5
3
  const dimensions = advancedVSeed.dimensionTree;
6
4
  const { encoding } = advancedVSeed;
7
5
  const rows = dimensions.filter((item)=>encoding.row?.includes(item.id));
8
- const allMeasures = findAllMeasures(advancedVSeed.measureTree);
9
6
  return {
10
7
  ...spec,
11
- rows: rows.map((item)=>{
12
- const res = {
8
+ rows: rows.map((item)=>({
13
9
  dimensionKey: item.id,
14
10
  title: item.alias || item.id,
15
11
  width: 'auto'
16
- };
17
- if (item.id === MeasureId) res.headerFormat = (measureId)=>{
18
- const measure = allMeasures.find((m)=>m.id === measureId);
19
- return measure?.alias ?? measureId;
20
- };
21
- return res;
22
- })
12
+ }))
23
13
  };
24
14
  };
25
15
  export { pivotRows };
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/table/pipes/rows/pivotRows.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/rows/pivotRows.ts"],"sourcesContent":["import { MeasureId } from 'src/dataReshape'\nimport { findAllMeasures } from 'src/pipeline/utils/measures/find'\nimport type { Dimensions, PivotTableSpecPipe } from 'src/types'\n\nexport const pivotRows: PivotTableSpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const dimensions = advancedVSeed.dimensionTree as Dimensions\n const { encoding } = advancedVSeed\n const rows = dimensions.filter((item) => encoding.row?.includes(item.id))\n const allMeasures = findAllMeasures(advancedVSeed.measureTree)\n\n return {\n ...spec,\n rows: rows.map((item) => {\n const res = {\n dimensionKey: item.id,\n title: item.alias || item.id,\n width: 'auto',\n }\n\n if (item.id === MeasureId) {\n ;(res as any).headerFormat = (measureId: string) => {\n const measure = allMeasures.find((m) => m.id === measureId)\n\n return measure?.alias ?? measureId\n }\n }\n\n return res\n }),\n }\n}\n"],"names":["pivotRows","spec","context","advancedVSeed","dimensions","encoding","rows","item","allMeasures","findAllMeasures","res","MeasureId","measureId","measure","m"],"mappings":";;AAIO,MAAMA,YAAgC,CAACC,MAAMC;IAClD,MAAM,EAAEC,aAAa,EAAE,GAAGD;IAC1B,MAAME,aAAaD,cAAc,aAAa;IAC9C,MAAM,EAAEE,QAAQ,EAAE,GAAGF;IACrB,MAAMG,OAAOF,WAAW,MAAM,CAAC,CAACG,OAASF,SAAS,GAAG,EAAE,SAASE,KAAK,EAAE;IACvE,MAAMC,cAAcC,gBAAgBN,cAAc,WAAW;IAE7D,OAAO;QACL,GAAGF,IAAI;QACP,MAAMK,KAAK,GAAG,CAAC,CAACC;YACd,MAAMG,MAAM;gBACV,cAAcH,KAAK,EAAE;gBACrB,OAAOA,KAAK,KAAK,IAAIA,KAAK,EAAE;gBAC5B,OAAO;YACT;YAEA,IAAIA,KAAK,EAAE,KAAKI,WACZD,IAAY,YAAY,GAAG,CAACE;gBAC5B,MAAMC,UAAUL,YAAY,IAAI,CAAC,CAACM,IAAMA,EAAE,EAAE,KAAKF;gBAEjD,OAAOC,SAAS,SAASD;YAC3B;YAGF,OAAOF;QACT;IACF;AACF"}
1
+ {"version":3,"file":"pipeline/spec/table/pipes/rows/pivotRows.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/rows/pivotRows.ts"],"sourcesContent":["import type { Dimensions, PivotTableSpecPipe } from 'src/types'\n\nexport const pivotRows: PivotTableSpecPipe = (spec, context) => {\n const { advancedVSeed } = context\n const dimensions = advancedVSeed.dimensionTree as Dimensions\n const { encoding } = advancedVSeed\n const rows = dimensions.filter((item) => encoding.row?.includes(item.id))\n\n return {\n ...spec,\n rows: rows.map((item) => {\n return {\n dimensionKey: item.id,\n title: item.alias || item.id,\n width: 'auto',\n }\n }),\n }\n}\n"],"names":["pivotRows","spec","context","advancedVSeed","dimensions","encoding","rows","item"],"mappings":"AAEO,MAAMA,YAAgC,CAACC,MAAMC;IAClD,MAAM,EAAEC,aAAa,EAAE,GAAGD;IAC1B,MAAME,aAAaD,cAAc,aAAa;IAC9C,MAAM,EAAEE,QAAQ,EAAE,GAAGF;IACrB,MAAMG,OAAOF,WAAW,MAAM,CAAC,CAACG,OAASF,SAAS,GAAG,EAAE,SAASE,KAAK,EAAE;IAEvE,OAAO;QACL,GAAGN,IAAI;QACP,MAAMK,KAAK,GAAG,CAAC,CAACC,OACP;gBACL,cAAcA,KAAK,EAAE;gBACrB,OAAOA,KAAK,KAAK,IAAIA,KAAK,EAAE;gBAC5B,OAAO;YACT;IAEJ;AACF"}
@@ -0,0 +1,2 @@
1
+ import type { PivotTableSpecPipe } from '../../../../../types';
2
+ export declare const bottomFrozenStyle: PivotTableSpecPipe;
@@ -0,0 +1,51 @@
1
+ const bottomFrozenStyle = (spec, context)=>{
2
+ const result = {
3
+ ...spec
4
+ };
5
+ const { advancedVSeed } = context;
6
+ const { config, chartType } = advancedVSeed;
7
+ const themConfig = config?.[chartType];
8
+ if (!result.theme || !themConfig) return result;
9
+ const borderColor = themConfig.borderColor || 'rgb(224, 224, 224)';
10
+ const backgroundColor = themConfig.headerBackgroundColor || '#EEF1F5';
11
+ const fontColor = themConfig.headerFontColor || '#1B1F23';
12
+ const fontSize = themConfig.headerFontSize || 12;
13
+ const hoverCellBgColor = themConfig.hoverHeaderBackgroundColor || '#bedaff';
14
+ const hoverInlineColor = themConfig.hoverHeaderInlineBackgroundColor || '#bedaff';
15
+ result.theme.bottomFrozenStyle = {
16
+ borderColor,
17
+ borderLineWidth: 1,
18
+ padding: [
19
+ 8,
20
+ 12,
21
+ 8,
22
+ 12
23
+ ],
24
+ textAlign: 'center',
25
+ hover: {
26
+ cellBgColor: hoverCellBgColor,
27
+ inlineRowBgColor: hoverInlineColor,
28
+ inlineColumnBgColor: hoverInlineColor
29
+ },
30
+ frameStyle: {
31
+ borderColor,
32
+ borderLineWidth: [
33
+ 0,
34
+ 0,
35
+ 1,
36
+ 0
37
+ ]
38
+ },
39
+ fontSize,
40
+ fontVariant: 'normal',
41
+ fontStyle: 'normal',
42
+ fontWeight: 'bold',
43
+ color: fontColor,
44
+ bgColor: backgroundColor,
45
+ lineHeight: 1.5 * fontSize
46
+ };
47
+ return result;
48
+ };
49
+ export { bottomFrozenStyle };
50
+
51
+ //# sourceMappingURL=bottomFrozenStyle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline/spec/table/pipes/theme/bottomFrozenStyle.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/table/pipes/theme/bottomFrozenStyle.ts"],"sourcesContent":["import type { PivotTableSpecPipe, TableConfig } from 'src/types'\nimport type { ThemeLike, WithTheme } from './type'\n\nexport const bottomFrozenStyle: PivotTableSpecPipe = (spec, context) => {\n const result = { ...spec } as Partial<typeof spec> & WithTheme\n const { advancedVSeed } = context\n const { config, chartType } = advancedVSeed\n const themConfig = config?.[chartType] as TableConfig\n\n if (!result.theme || !themConfig) return result\n\n const borderColor = themConfig.borderColor || 'rgb(224, 224, 224)'\n const backgroundColor = themConfig.headerBackgroundColor || '#EEF1F5'\n const fontColor = themConfig.headerFontColor || '#1B1F23'\n const fontSize = themConfig.headerFontSize || 12\n const hoverCellBgColor = themConfig.hoverHeaderBackgroundColor || '#bedaff'\n const hoverInlineColor = themConfig.hoverHeaderInlineBackgroundColor || '#bedaff'\n\n ;(result.theme as ThemeLike).bottomFrozenStyle = {\n borderColor,\n borderLineWidth: 1,\n padding: [8, 12, 8, 12],\n textAlign: 'center',\n hover: {\n cellBgColor: hoverCellBgColor,\n inlineRowBgColor: hoverInlineColor,\n inlineColumnBgColor: hoverInlineColor,\n },\n frameStyle: {\n borderColor,\n borderLineWidth: [0, 0, 1, 0],\n },\n fontSize,\n fontVariant: 'normal',\n fontStyle: 'normal',\n fontWeight: 'bold',\n color: fontColor,\n bgColor: backgroundColor,\n lineHeight: fontSize * 1.5,\n }\n\n return result\n}\n"],"names":["bottomFrozenStyle","spec","context","result","advancedVSeed","config","chartType","themConfig","borderColor","backgroundColor","fontColor","fontSize","hoverCellBgColor","hoverInlineColor"],"mappings":"AAGO,MAAMA,oBAAwC,CAACC,MAAMC;IAC1D,MAAMC,SAAS;QAAE,GAAGF,IAAI;IAAC;IACzB,MAAM,EAAEG,aAAa,EAAE,GAAGF;IAC1B,MAAM,EAAEG,MAAM,EAAEC,SAAS,EAAE,GAAGF;IAC9B,MAAMG,aAAaF,QAAQ,CAACC,UAAU;IAEtC,IAAI,CAACH,OAAO,KAAK,IAAI,CAACI,YAAY,OAAOJ;IAEzC,MAAMK,cAAcD,WAAW,WAAW,IAAI;IAC9C,MAAME,kBAAkBF,WAAW,qBAAqB,IAAI;IAC5D,MAAMG,YAAYH,WAAW,eAAe,IAAI;IAChD,MAAMI,WAAWJ,WAAW,cAAc,IAAI;IAC9C,MAAMK,mBAAmBL,WAAW,0BAA0B,IAAI;IAClE,MAAMM,mBAAmBN,WAAW,gCAAgC,IAAI;IAEtEJ,OAAO,KAAK,CAAe,iBAAiB,GAAG;QAC/CK;QACA,iBAAiB;QACjB,SAAS;YAAC;YAAG;YAAI;YAAG;SAAG;QACvB,WAAW;QACX,OAAO;YACL,aAAaI;YACb,kBAAkBC;YAClB,qBAAqBA;QACvB;QACA,YAAY;YACVL;YACA,iBAAiB;gBAAC;gBAAG;gBAAG;gBAAG;aAAE;QAC/B;QACAG;QACA,aAAa;QACb,WAAW;QACX,YAAY;QACZ,OAAOD;QACP,SAASD;QACT,YAAYE,AAAW,MAAXA;IACd;IAEA,OAAOR;AACT"}
@@ -1,5 +1,6 @@
1
1
  export * from './bodyStyle';
2
2
  export * from './headerStyle';
3
+ export * from './bottomFrozenStyle';
3
4
  export * from './rowHeaderStyle';
4
5
  export * from './cornerHeaderStyle';
5
6
  export * from './frameStyle';
@@ -1,5 +1,6 @@
1
1
  export * from "./bodyStyle.js";
2
2
  export * from "./headerStyle.js";
3
+ export * from "./bottomFrozenStyle.js";
3
4
  export * from "./rowHeaderStyle.js";
4
5
  export * from "./cornerHeaderStyle.js";
5
6
  export * from "./frameStyle.js";
@@ -2,6 +2,17 @@ export declare const getDefaultTableConfig: () => {
2
2
  bodyFontSize: number;
3
3
  bodyBackgroundColor: string;
4
4
  headerFontSize: number;
5
+ barHeight: string;
6
+ barMarkInBar: boolean;
7
+ barMarkWidth: number;
8
+ barPadding: (string | number)[];
9
+ barRightToLeft: boolean;
10
+ barPositiveColor: string;
11
+ barNegativeColor: string;
12
+ backgroundColorScale: {
13
+ minColor: string;
14
+ maxColor: string;
15
+ };
5
16
  };
6
17
  export declare const getLightTableConfig: () => {
7
18
  borderColor: string;
@@ -15,9 +26,21 @@ export declare const getLightTableConfig: () => {
15
26
  selectedBorderColor: string;
16
27
  selectedBackgroundColor: string;
17
28
  backgroundColor: string;
29
+ barAxisColor: string;
18
30
  bodyFontSize: number;
19
31
  bodyBackgroundColor: string;
20
32
  headerFontSize: number;
33
+ barHeight: string;
34
+ barMarkInBar: boolean;
35
+ barMarkWidth: number;
36
+ barPadding: (string | number)[];
37
+ barRightToLeft: boolean;
38
+ barPositiveColor: string;
39
+ barNegativeColor: string;
40
+ backgroundColorScale: {
41
+ minColor: string;
42
+ maxColor: string;
43
+ };
21
44
  };
22
45
  export declare const getDarkTableConfig: () => {
23
46
  borderColor: string;
@@ -30,9 +53,21 @@ export declare const getDarkTableConfig: () => {
30
53
  hoverHeaderInlineBackgroundColor: string;
31
54
  selectedBorderColor: string;
32
55
  selectedBackgroundColor: string;
56
+ barAxisColor: string;
33
57
  bodyFontSize: number;
34
58
  bodyBackgroundColor: string;
35
59
  headerFontSize: number;
60
+ barHeight: string;
61
+ barMarkInBar: boolean;
62
+ barMarkWidth: number;
63
+ barPadding: (string | number)[];
64
+ barRightToLeft: boolean;
65
+ barPositiveColor: string;
66
+ barNegativeColor: string;
67
+ backgroundColorScale: {
68
+ minColor: string;
69
+ maxColor: string;
70
+ };
36
71
  };
37
72
  export declare const getLightPivotChartGridConfig: () => {
38
73
  borderColor?: string | null | undefined;
@@ -1,7 +1,21 @@
1
1
  const getDefaultTableConfig = ()=>({
2
2
  bodyFontSize: 12,
3
3
  bodyBackgroundColor: 'transparent',
4
- headerFontSize: 12
4
+ headerFontSize: 12,
5
+ barHeight: '100%',
6
+ barMarkInBar: false,
7
+ barMarkWidth: 2,
8
+ barPadding: [
9
+ '25%',
10
+ 10
11
+ ],
12
+ barRightToLeft: false,
13
+ barPositiveColor: 'rgba(188,220,194, 0.5)',
14
+ barNegativeColor: 'rgba(241,188,191, 0.5)',
15
+ backgroundColorScale: {
16
+ minColor: '#D8CFFF',
17
+ maxColor: '#6B4FD7'
18
+ }
5
19
  });
6
20
  const getLightTableConfig = ()=>({
7
21
  ...getDefaultTableConfig(),
@@ -15,7 +29,8 @@ const getLightTableConfig = ()=>({
15
29
  hoverHeaderInlineBackgroundColor: '#D9DDE455',
16
30
  selectedBorderColor: '#4080ff',
17
31
  selectedBackgroundColor: '#bedaff33',
18
- backgroundColor: 'transparent'
32
+ backgroundColor: 'transparent',
33
+ barAxisColor: '#9EAFC6'
19
34
  });
20
35
  const getDarkTableConfig = ()=>({
21
36
  ...getDefaultTableConfig(),
@@ -28,7 +43,8 @@ const getDarkTableConfig = ()=>({
28
43
  hoverHeaderBackgroundColor: '#6f7984cc',
29
44
  hoverHeaderInlineBackgroundColor: '#4b4f54',
30
45
  selectedBorderColor: '#3073f2',
31
- selectedBackgroundColor: '#4284ff33'
46
+ selectedBackgroundColor: '#4284ff33',
47
+ barAxisColor: '#9EAFC6'
32
48
  });
33
49
  const pickPivotChartGridConfig = (tableConfig)=>({
34
50
  outlineBorderLineWidth: 0,
@@ -1 +1 @@
1
- {"version":3,"file":"theme/common/table.js","sources":["webpack://@visactor/vseed/./src/theme/common/table.ts"],"sourcesContent":["import type { PivotChartGridConfig } from 'src/types'\n\nexport const getDefaultTableConfig = () => ({\n bodyFontSize: 12,\n bodyBackgroundColor: 'transparent',\n headerFontSize: 12,\n})\n\nexport const getLightTableConfig = () => ({\n ...getDefaultTableConfig(),\n borderColor: '#e3e5eb',\n\n bodyFontColor: '#141414',\n\n headerFontColor: '#21252c',\n headerBackgroundColor: '#f6f7f9',\n\n hoverBodyBackgroundColor: '#bedaff',\n hoverBodyInlineBackgroundColor: '#bedaff33',\n hoverHeaderBackgroundColor: '#D9DDE4',\n hoverHeaderInlineBackgroundColor: '#D9DDE455',\n\n selectedBorderColor: '#4080ff',\n selectedBackgroundColor: '#bedaff33',\n\n backgroundColor: 'transparent',\n})\n\nexport const getDarkTableConfig = () => ({\n ...getDefaultTableConfig(),\n borderColor: '#4b4e53',\n\n bodyFontColor: '#fdfdfd',\n headerFontColor: '#fdfdfd',\n headerBackgroundColor: '#36393e',\n\n hoverBodyBackgroundColor: '#4284ff66',\n hoverBodyInlineBackgroundColor: '#4284ff10',\n hoverHeaderBackgroundColor: '#6f7984cc',\n hoverHeaderInlineBackgroundColor: '#4b4f54',\n\n selectedBorderColor: '#3073f2',\n selectedBackgroundColor: '#4284ff33',\n})\n\nconst pickPivotChartGridConfig = (tableConfig: any) => {\n return {\n outlineBorderLineWidth: 0,\n frameCornerRadius: 0,\n borderColor: tableConfig.borderColor,\n bodyFontColor: tableConfig.bodyFontColor,\n headerFontColor: tableConfig.headerFontColor,\n\n headerBackgroundColor: 'transparent',\n hoverHeaderBackgroundColor: tableConfig.hoverHeaderBackgroundColor,\n hoverHeaderInlineBackgroundColor: tableConfig.hoverHeaderInlineBackgroundColor,\n\n titleFontColor: tableConfig.headerFontColor,\n titleFontSize: tableConfig.headerFontSize,\n titleFontWeight: 'bold',\n }\n}\n\nexport const getLightPivotChartGridConfig = () => {\n const res = pickPivotChartGridConfig(getLightTableConfig()) as PivotChartGridConfig\n\n res.hoverHeaderInlineBackgroundColor = '#D9DDE446'\n\n res.chartGridColor = '#F0F1F6'\n res.axisLabelColor = '#BCC1CB'\n\n return res\n}\n\nexport const getDarkPivotChartGridConfig = () => {\n const res = pickPivotChartGridConfig(getDarkTableConfig()) as PivotChartGridConfig\n\n res.hoverHeaderInlineBackgroundColor = '#4b4f5446'\n\n return res\n}\n"],"names":["getDefaultTableConfig","getLightTableConfig","getDarkTableConfig","pickPivotChartGridConfig","tableConfig","getLightPivotChartGridConfig","res","getDarkPivotChartGridConfig"],"mappings":"AAEO,MAAMA,wBAAwB,IAAO;QAC1C,cAAc;QACd,qBAAqB;QACrB,gBAAgB;IAClB;AAEO,MAAMC,sBAAsB,IAAO;QACxC,GAAGD,uBAAuB;QAC1B,aAAa;QAEb,eAAe;QAEf,iBAAiB;QACjB,uBAAuB;QAEvB,0BAA0B;QAC1B,gCAAgC;QAChC,4BAA4B;QAC5B,kCAAkC;QAElC,qBAAqB;QACrB,yBAAyB;QAEzB,iBAAiB;IACnB;AAEO,MAAME,qBAAqB,IAAO;QACvC,GAAGF,uBAAuB;QAC1B,aAAa;QAEb,eAAe;QACf,iBAAiB;QACjB,uBAAuB;QAEvB,0BAA0B;QAC1B,gCAAgC;QAChC,4BAA4B;QAC5B,kCAAkC;QAElC,qBAAqB;QACrB,yBAAyB;IAC3B;AAEA,MAAMG,2BAA2B,CAACC,cACzB;QACL,wBAAwB;QACxB,mBAAmB;QACnB,aAAaA,YAAY,WAAW;QACpC,eAAeA,YAAY,aAAa;QACxC,iBAAiBA,YAAY,eAAe;QAE5C,uBAAuB;QACvB,4BAA4BA,YAAY,0BAA0B;QAClE,kCAAkCA,YAAY,gCAAgC;QAE9E,gBAAgBA,YAAY,eAAe;QAC3C,eAAeA,YAAY,cAAc;QACzC,iBAAiB;IACnB;AAGK,MAAMC,+BAA+B;IAC1C,MAAMC,MAAMH,yBAAyBF;IAErCK,IAAI,gCAAgC,GAAG;IAEvCA,IAAI,cAAc,GAAG;IACrBA,IAAI,cAAc,GAAG;IAErB,OAAOA;AACT;AAEO,MAAMC,8BAA8B;IACzC,MAAMD,MAAMH,yBAAyBD;IAErCI,IAAI,gCAAgC,GAAG;IAEvC,OAAOA;AACT"}
1
+ {"version":3,"file":"theme/common/table.js","sources":["webpack://@visactor/vseed/./src/theme/common/table.ts"],"sourcesContent":["import type { PivotChartGridConfig } from 'src/types'\n\nexport const getDefaultTableConfig = () => ({\n bodyFontSize: 12,\n bodyBackgroundColor: 'transparent',\n headerFontSize: 12,\n barHeight: '100%',\n barMarkInBar: false,\n barMarkWidth: 2,\n barPadding: ['25%', 10],\n barRightToLeft: false,\n barPositiveColor: 'rgba(188,220,194, 0.5)',\n barNegativeColor: 'rgba(241,188,191, 0.5)',\n backgroundColorScale: {\n minColor: '#D8CFFF',\n maxColor: '#6B4FD7',\n },\n})\n\nexport const getLightTableConfig = () => ({\n ...getDefaultTableConfig(),\n borderColor: '#e3e5eb',\n\n bodyFontColor: '#141414',\n\n headerFontColor: '#21252c',\n headerBackgroundColor: '#f6f7f9',\n\n hoverBodyBackgroundColor: '#bedaff',\n hoverBodyInlineBackgroundColor: '#bedaff33',\n hoverHeaderBackgroundColor: '#D9DDE4',\n hoverHeaderInlineBackgroundColor: '#D9DDE455',\n\n selectedBorderColor: '#4080ff',\n selectedBackgroundColor: '#bedaff33',\n\n backgroundColor: 'transparent',\n\n barAxisColor: '#9EAFC6',\n})\n\nexport const getDarkTableConfig = () => ({\n ...getDefaultTableConfig(),\n borderColor: '#4b4e53',\n\n bodyFontColor: '#fdfdfd',\n headerFontColor: '#fdfdfd',\n headerBackgroundColor: '#36393e',\n\n hoverBodyBackgroundColor: '#4284ff66',\n hoverBodyInlineBackgroundColor: '#4284ff10',\n hoverHeaderBackgroundColor: '#6f7984cc',\n hoverHeaderInlineBackgroundColor: '#4b4f54',\n\n selectedBorderColor: '#3073f2',\n selectedBackgroundColor: '#4284ff33',\n barAxisColor: '#9EAFC6',\n})\n\nconst pickPivotChartGridConfig = (tableConfig: any) => {\n return {\n outlineBorderLineWidth: 0,\n frameCornerRadius: 0,\n borderColor: tableConfig.borderColor,\n bodyFontColor: tableConfig.bodyFontColor,\n headerFontColor: tableConfig.headerFontColor,\n\n headerBackgroundColor: 'transparent',\n hoverHeaderBackgroundColor: tableConfig.hoverHeaderBackgroundColor,\n hoverHeaderInlineBackgroundColor: tableConfig.hoverHeaderInlineBackgroundColor,\n\n titleFontColor: tableConfig.headerFontColor,\n titleFontSize: tableConfig.headerFontSize,\n titleFontWeight: 'bold',\n }\n}\n\nexport const getLightPivotChartGridConfig = () => {\n const res = pickPivotChartGridConfig(getLightTableConfig()) as PivotChartGridConfig\n\n res.hoverHeaderInlineBackgroundColor = '#D9DDE446'\n\n res.chartGridColor = '#F0F1F6'\n res.axisLabelColor = '#BCC1CB'\n\n return res\n}\n\nexport const getDarkPivotChartGridConfig = () => {\n const res = pickPivotChartGridConfig(getDarkTableConfig()) as PivotChartGridConfig\n\n res.hoverHeaderInlineBackgroundColor = '#4b4f5446'\n\n return res\n}\n"],"names":["getDefaultTableConfig","getLightTableConfig","getDarkTableConfig","pickPivotChartGridConfig","tableConfig","getLightPivotChartGridConfig","res","getDarkPivotChartGridConfig"],"mappings":"AAEO,MAAMA,wBAAwB,IAAO;QAC1C,cAAc;QACd,qBAAqB;QACrB,gBAAgB;QAChB,WAAW;QACX,cAAc;QACd,cAAc;QACd,YAAY;YAAC;YAAO;SAAG;QACvB,gBAAgB;QAChB,kBAAkB;QAClB,kBAAkB;QAClB,sBAAsB;YACpB,UAAU;YACV,UAAU;QACZ;IACF;AAEO,MAAMC,sBAAsB,IAAO;QACxC,GAAGD,uBAAuB;QAC1B,aAAa;QAEb,eAAe;QAEf,iBAAiB;QACjB,uBAAuB;QAEvB,0BAA0B;QAC1B,gCAAgC;QAChC,4BAA4B;QAC5B,kCAAkC;QAElC,qBAAqB;QACrB,yBAAyB;QAEzB,iBAAiB;QAEjB,cAAc;IAChB;AAEO,MAAME,qBAAqB,IAAO;QACvC,GAAGF,uBAAuB;QAC1B,aAAa;QAEb,eAAe;QACf,iBAAiB;QACjB,uBAAuB;QAEvB,0BAA0B;QAC1B,gCAAgC;QAChC,4BAA4B;QAC5B,kCAAkC;QAElC,qBAAqB;QACrB,yBAAyB;QACzB,cAAc;IAChB;AAEA,MAAMG,2BAA2B,CAACC,cACzB;QACL,wBAAwB;QACxB,mBAAmB;QACnB,aAAaA,YAAY,WAAW;QACpC,eAAeA,YAAY,aAAa;QACxC,iBAAiBA,YAAY,eAAe;QAE5C,uBAAuB;QACvB,4BAA4BA,YAAY,0BAA0B;QAClE,kCAAkCA,YAAY,gCAAgC;QAE9E,gBAAgBA,YAAY,eAAe;QAC3C,eAAeA,YAAY,cAAc;QACzC,iBAAiB;IACnB;AAGK,MAAMC,+BAA+B;IAC1C,MAAMC,MAAMH,yBAAyBF;IAErCK,IAAI,gCAAgC,GAAG;IAEvCA,IAAI,cAAc,GAAG;IACrBA,IAAI,cAAc,GAAG;IAErB,OAAOA;AACT;AAEO,MAAMC,8BAA8B;IACzC,MAAMD,MAAMH,yBAAyBD;IAErCI,IAAI,gCAAgC,GAAG;IAEvC,OAAOA;AACT"}