@visactor/vtable 0.25.3 → 0.25.4-alpha.1

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 (53) hide show
  1. package/cjs/ListTable.js +6 -5
  2. package/cjs/ListTable.js.map +1 -1
  3. package/cjs/PivotChart.js +3 -3
  4. package/cjs/PivotChart.js.map +1 -1
  5. package/cjs/PivotTable.js +3 -3
  6. package/cjs/PivotTable.js.map +1 -1
  7. package/cjs/components/axis/axis.js +2 -2
  8. package/cjs/components/axis/axis.js.map +1 -1
  9. package/cjs/core/BaseTable.js +4 -3
  10. package/cjs/core/BaseTable.js.map +1 -1
  11. package/cjs/index.d.ts +1 -1
  12. package/cjs/index.js +1 -1
  13. package/cjs/index.js.map +1 -1
  14. package/cjs/layout/chart-helper/get-chart-spec.js +2 -2
  15. package/cjs/layout/chart-helper/get-chart-spec.js.map +1 -1
  16. package/cjs/layout/pivot-header-layout.d.ts +1 -0
  17. package/cjs/layout/pivot-header-layout.js +19 -3
  18. package/cjs/layout/pivot-header-layout.js.map +1 -1
  19. package/cjs/scenegraph/group-creater/column-helper.js +1 -1
  20. package/cjs/scenegraph/group-creater/column-helper.js.map +1 -1
  21. package/cjs/scenegraph/scenegraph.js +1 -1
  22. package/cjs/themes/component.js +1 -1
  23. package/cjs/ts-types/base-table.d.ts +1 -0
  24. package/cjs/ts-types/base-table.js.map +1 -1
  25. package/cjs/vrender.js.map +1 -1
  26. package/dist/vtable.js +34 -6
  27. package/dist/vtable.min.js +1 -1
  28. package/es/ListTable.js +1 -1
  29. package/es/ListTable.js.map +1 -1
  30. package/es/PivotChart.js +1 -1
  31. package/es/PivotChart.js.map +1 -1
  32. package/es/PivotTable.js +1 -1
  33. package/es/PivotTable.js.map +1 -1
  34. package/es/components/axis/axis.js +1 -1
  35. package/es/components/axis/axis.js.map +1 -1
  36. package/es/core/BaseTable.js +4 -3
  37. package/es/core/BaseTable.js.map +1 -1
  38. package/es/index.d.ts +1 -1
  39. package/es/index.js +1 -1
  40. package/es/index.js.map +1 -1
  41. package/es/layout/chart-helper/get-chart-spec.js +1 -1
  42. package/es/layout/chart-helper/get-chart-spec.js.map +1 -1
  43. package/es/layout/pivot-header-layout.d.ts +1 -0
  44. package/es/layout/pivot-header-layout.js +19 -3
  45. package/es/layout/pivot-header-layout.js.map +1 -1
  46. package/es/scenegraph/group-creater/column-helper.js +1 -1
  47. package/es/scenegraph/group-creater/column-helper.js.map +1 -1
  48. package/es/scenegraph/scenegraph.js +1 -1
  49. package/es/themes/component.js +1 -1
  50. package/es/ts-types/base-table.d.ts +1 -0
  51. package/es/ts-types/base-table.js.map +1 -1
  52. package/es/vrender.js.map +1 -1
  53. package/package.json +5 -5
package/es/index.d.ts CHANGED
@@ -16,7 +16,7 @@ import { renderChart } from './scenegraph/graphic/contributions/chart-render-hel
16
16
  import { restoreMeasureText, setCustomAlphabetCharSet } from './scenegraph/utils/text-measure';
17
17
  export { getDataCellPath } from './tools/get-data-path';
18
18
  export * from './render/jsx';
19
- export declare const version = "0.25.3";
19
+ export declare const version = "0.25.4-alpha.1";
20
20
  export { TYPES, core, ListTable, ListTableConstructorOptions, PivotTable, PivotTableConstructorOptions, PivotChartConstructorOptions, PivotChart, IHeaderTreeDefine, IDimension, IIndicator, ITitleDefine, ICornerDefine, ColumnsDefine, ColumnDefine, LinkColumnDefine, ChartColumnDefine, ImageColumnDefine, SparklineColumnDefine, ProgressbarColumnDefine, TextColumnDefine, GroupColumnDefine, TextAlignType, TextBaselineType, themes, data, MousePointerCellEvent, getIcons, clearGlobal, register, DataStatistics, CustomLayout, updateCell, renderChart, graphicUtil, setCustomAlphabetCharSet, restoreMeasureText };
21
21
  declare function getIcons(): {
22
22
  [key: string]: TYPES.ColumnIconOption;
package/es/index.js CHANGED
@@ -34,7 +34,7 @@ export { getDataCellPath } from "./tools/get-data-path";
34
34
 
35
35
  export * from "./render/jsx";
36
36
 
37
- export const version = "0.25.3";
37
+ export const version = "0.25.4-alpha.1";
38
38
 
39
39
  export { TYPES, core, ListTable, PivotTable, PivotChart, themes, data, getIcons, clearGlobal, register, DataStatistics, CustomLayout, updateCell, renderChart, graphicUtil, setCustomAlphabetCharSet, restoreMeasureText };
40
40
 
package/es/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC5D,kBAAkB,EAAE,CAAC;AAErB,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,cAAc,MAAM,0BAA0B,CAAC;AAsB3D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,KAAK,YAAY,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,wDAAwD,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAK/F,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,cAAc,cAAc,CAAC;AAE7B,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC;AAIhC,OAAO,EAKL,KAAK,EACL,IAAI,EACJ,SAAS,EAET,UAAU,EAGV,UAAU,EAiBV,MAAM,EACN,IAAI,EAEJ,QAAQ,EACR,WAAW,EAEX,QAAQ,EAIR,cAAc,EACd,YAAY,EACZ,UAAU,EACV,WAAW,EACX,WAAW,EACX,wBAAwB,EACxB,kBAAkB,EACnB,CAAC;AAGF,SAAS,QAAQ;IAGf,OAAO,KAAK,CAAC,GAAG,EAAE,CAAC;AACrB,CAAC;AAED,SAAS,WAAW;IAClB,QAAQ,CAAC,QAAQ,EAAE,CAAC;AAGtB,CAAC;AACD,KAAK,CAAC,eAAe,CAAC","file":"index.js","sourcesContent":["/* eslint-disable sort-imports */\nimport { graphicUtil, registerForVrender } from './vrender';\nregisterForVrender();\n\nimport * as TYPES from './ts-types';\nimport * as core from './core';\nimport * as data from './data';\nimport * as icons from './icons';\nimport * as register from './register';\nimport * as themes from './themes';\nimport * as DataStatistics from './dataset/DataStatistics';\nimport type {\n ColumnDefine,\n ColumnsDefine,\n LinkColumnDefine,\n ChartColumnDefine,\n ImageColumnDefine,\n SparklineColumnDefine,\n ProgressbarColumnDefine,\n TextColumnDefine,\n GroupColumnDefine,\n ListTableConstructorOptions,\n PivotTableConstructorOptions,\n PivotChartConstructorOptions,\n IHeaderTreeDefine,\n IDimension,\n IIndicator,\n ITitleDefine,\n ICornerDefine,\n TextAlignType,\n TextBaselineType\n} from './ts-types';\nimport { ListTable } from './ListTable';\nimport { PivotTable } from './PivotTable';\nimport { PivotChart } from './PivotChart';\nimport type { MousePointerCellEvent } from './ts-types/events';\nimport * as CustomLayout from './render/layout';\n\nimport { updateCell } from './scenegraph/group-creater/cell-helper';\nimport { renderChart } from './scenegraph/graphic/contributions/chart-render-helper';\nimport { restoreMeasureText, setCustomAlphabetCharSet } from './scenegraph/utils/text-measure';\n\n// import { container, loadCanvasPicker } from '@src/vrender';\n// loadCanvasPicker(container);\n\nexport { getDataCellPath } from './tools/get-data-path';\nexport * from './render/jsx';\n\nexport const version = \"0.25.3\";\n/**\n * @namespace VTable\n */\nexport {\n /**\n * Types\n * @namespace VTable.TYPES\n */\n TYPES,\n core,\n ListTable,\n ListTableConstructorOptions,\n PivotTable,\n PivotTableConstructorOptions,\n PivotChartConstructorOptions,\n PivotChart,\n IHeaderTreeDefine,\n IDimension,\n IIndicator,\n ITitleDefine,\n ICornerDefine,\n ColumnsDefine,\n ColumnDefine,\n LinkColumnDefine,\n ChartColumnDefine,\n ImageColumnDefine,\n SparklineColumnDefine,\n ProgressbarColumnDefine,\n TextColumnDefine,\n GroupColumnDefine,\n TextAlignType,\n TextBaselineType,\n themes,\n data,\n MousePointerCellEvent,\n getIcons,\n clearGlobal,\n //plugin registers\n register,\n /**\n * 暂不推荐使用\n */\n DataStatistics,\n CustomLayout,\n updateCell,\n renderChart,\n graphicUtil,\n setCustomAlphabetCharSet,\n restoreMeasureText\n};\n\n/** @private */\nfunction getIcons(): {\n [key: string]: TYPES.ColumnIconOption;\n} {\n return icons.get();\n}\n/** 清理内部的全局变量 如注册的icon theme等 以及共享的header column类实例 */\nfunction clearGlobal() {\n register.clearAll();\n // headers.type.clearGlobal();\n // columns.type.clearGlobal();\n}\nTYPES.AggregationType;\n"]}
1
+ {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC5D,kBAAkB,EAAE,CAAC;AAErB,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,cAAc,MAAM,0BAA0B,CAAC;AAsB3D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,KAAK,YAAY,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,wDAAwD,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAK/F,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,cAAc,cAAc,CAAC;AAE7B,MAAM,CAAC,MAAM,OAAO,GAAG,gBAAgB,CAAC;AAIxC,OAAO,EAKL,KAAK,EACL,IAAI,EACJ,SAAS,EAET,UAAU,EAGV,UAAU,EAiBV,MAAM,EACN,IAAI,EAEJ,QAAQ,EACR,WAAW,EAEX,QAAQ,EAIR,cAAc,EACd,YAAY,EACZ,UAAU,EACV,WAAW,EACX,WAAW,EACX,wBAAwB,EACxB,kBAAkB,EACnB,CAAC;AAGF,SAAS,QAAQ;IAGf,OAAO,KAAK,CAAC,GAAG,EAAE,CAAC;AACrB,CAAC;AAED,SAAS,WAAW;IAClB,QAAQ,CAAC,QAAQ,EAAE,CAAC;AAGtB,CAAC;AACD,KAAK,CAAC,eAAe,CAAC","file":"index.js","sourcesContent":["/* eslint-disable sort-imports */\nimport { graphicUtil, registerForVrender } from './vrender';\nregisterForVrender();\n\nimport * as TYPES from './ts-types';\nimport * as core from './core';\nimport * as data from './data';\nimport * as icons from './icons';\nimport * as register from './register';\nimport * as themes from './themes';\nimport * as DataStatistics from './dataset/DataStatistics';\nimport type {\n ColumnDefine,\n ColumnsDefine,\n LinkColumnDefine,\n ChartColumnDefine,\n ImageColumnDefine,\n SparklineColumnDefine,\n ProgressbarColumnDefine,\n TextColumnDefine,\n GroupColumnDefine,\n ListTableConstructorOptions,\n PivotTableConstructorOptions,\n PivotChartConstructorOptions,\n IHeaderTreeDefine,\n IDimension,\n IIndicator,\n ITitleDefine,\n ICornerDefine,\n TextAlignType,\n TextBaselineType\n} from './ts-types';\nimport { ListTable } from './ListTable';\nimport { PivotTable } from './PivotTable';\nimport { PivotChart } from './PivotChart';\nimport type { MousePointerCellEvent } from './ts-types/events';\nimport * as CustomLayout from './render/layout';\n\nimport { updateCell } from './scenegraph/group-creater/cell-helper';\nimport { renderChart } from './scenegraph/graphic/contributions/chart-render-helper';\nimport { restoreMeasureText, setCustomAlphabetCharSet } from './scenegraph/utils/text-measure';\n\n// import { container, loadCanvasPicker } from '@src/vrender';\n// loadCanvasPicker(container);\n\nexport { getDataCellPath } from './tools/get-data-path';\nexport * from './render/jsx';\n\nexport const version = \"0.25.4-alpha.1\";\n/**\n * @namespace VTable\n */\nexport {\n /**\n * Types\n * @namespace VTable.TYPES\n */\n TYPES,\n core,\n ListTable,\n ListTableConstructorOptions,\n PivotTable,\n PivotTableConstructorOptions,\n PivotChartConstructorOptions,\n PivotChart,\n IHeaderTreeDefine,\n IDimension,\n IIndicator,\n ITitleDefine,\n ICornerDefine,\n ColumnsDefine,\n ColumnDefine,\n LinkColumnDefine,\n ChartColumnDefine,\n ImageColumnDefine,\n SparklineColumnDefine,\n ProgressbarColumnDefine,\n TextColumnDefine,\n GroupColumnDefine,\n TextAlignType,\n TextBaselineType,\n themes,\n data,\n MousePointerCellEvent,\n getIcons,\n clearGlobal,\n //plugin registers\n register,\n /**\n * 暂不推荐使用\n */\n DataStatistics,\n CustomLayout,\n updateCell,\n renderChart,\n graphicUtil,\n setCustomAlphabetCharSet,\n restoreMeasureText\n};\n\n/** @private */\nfunction getIcons(): {\n [key: string]: TYPES.ColumnIconOption;\n} {\n return icons.get();\n}\n/** 清理内部的全局变量 如注册的icon theme等 以及共享的header column类实例 */\nfunction clearGlobal() {\n register.clearAll();\n // headers.type.clearGlobal();\n // columns.type.clearGlobal();\n}\nTYPES.AggregationType;\n"]}
@@ -6,7 +6,7 @@ import { getAxisDomainRangeAndLabels } from "./get-axis-domain";
6
6
 
7
7
  import { getNewRangeToAlign } from "./zero-align";
8
8
 
9
- import { cloneDeepSpec } from "./../../vutil-extension-temp/index.ts";
9
+ import { cloneDeepSpec } from "./../../vutil-extension-temp";
10
10
 
11
11
  const NO_AXISID_FRO_VTABLE = "NO_AXISID_FRO_VTABLE";
12
12
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/layout/chart-helper/get-chart-spec.ts"],"names":[],"mappings":"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","file":"get-chart-spec.js","sourcesContent":["import { cloneDeep, isArray, isNumber, merge } from '@visactor/vutils';\nimport type { PivotHeaderLayoutMap } from '../pivot-header-layout';\nimport type { SimpleHeaderLayoutMap } from '../simple-header-layout';\nimport { getAxisOption, getAxisRange } from './get-axis-config';\nimport { getAxisDomainRangeAndLabels } from './get-axis-domain';\nimport { getNewRangeToAlign } from './zero-align';\nimport type { IChartIndicator } from '../../ts-types';\nimport { cloneDeepSpec } from './../../vutil-extension-temp/index.ts';\n\nconst NO_AXISID_FRO_VTABLE = 'NO_AXISID_FRO_VTABLE';\n\nexport function getRawChartSpec(col: number, row: number, layout: PivotHeaderLayoutMap): any {\n const paths = layout.getCellHeaderPaths(col, row);\n let indicatorObj;\n if (layout.indicatorsAsCol) {\n const indicatorKey = paths.colHeaderPaths.find(colPath => colPath.indicatorKey)?.indicatorKey;\n indicatorObj = layout.columnObjects.find(indicator => indicator.indicatorKey === indicatorKey);\n } else {\n const indicatorKey = paths.rowHeaderPaths.find(rowPath => rowPath.indicatorKey)?.indicatorKey;\n indicatorObj = layout.columnObjects.find(indicator => indicator.indicatorKey === indicatorKey);\n }\n const chartSpec = indicatorObj?.chartSpec;\n\n if (typeof chartSpec === 'function') {\n // 动态组织spec\n const arg = {\n col,\n row,\n dataValue: layout._table.getCellOriginValue(col, row) || '',\n value: layout._table.getCellValue(col, row) || '',\n rect: layout._table.getCellRangeRelativeRect(layout._table.getCellRange(col, row)),\n table: layout._table\n };\n return chartSpec(arg);\n }\n return chartSpec;\n}\nexport function isShareChartSpec(col: number, row: number, layout: PivotHeaderLayoutMap): any {\n const paths = layout.getCellHeaderPaths(col, row);\n let indicatorObj;\n if (layout.indicatorsAsCol) {\n const indicatorKey = paths.colHeaderPaths.find(colPath => colPath.indicatorKey)?.indicatorKey;\n indicatorObj = layout.columnObjects.find(indicator => indicator.indicatorKey === indicatorKey);\n } else {\n const indicatorKey = paths.rowHeaderPaths.find(rowPath => rowPath.indicatorKey)?.indicatorKey;\n indicatorObj = layout.columnObjects.find(indicator => indicator.indicatorKey === indicatorKey);\n }\n const chartSpec = indicatorObj?.chartSpec;\n\n if (typeof chartSpec === 'function') {\n return false;\n }\n return true;\n}\n/** 检查是否有直角坐标系的图表 */\nexport function checkHasCartesianChart(layout: PivotHeaderLayoutMap) {\n let isHasCartesianChart = false;\n for (let i = 0; i < layout.indicatorsDefine.length; i++) {\n //columnObjects数量和指标数量一样 并不是每个列都有 所有会快一些\n const columnObj = layout.indicatorsDefine[i] as IChartIndicator;\n if (columnObj.chartSpec) {\n if (\n columnObj.chartSpec.type !== 'wordCloud' &&\n columnObj.chartSpec.type !== 'radar' &&\n columnObj.chartSpec.type !== 'gauge' &&\n columnObj.chartSpec.type !== 'pie' &&\n columnObj.chartSpec.type !== 'funnel' &&\n columnObj.chartSpec.type !== 'rose'\n ) {\n isHasCartesianChart = true;\n break;\n }\n }\n }\n return isHasCartesianChart;\n}\n\n/** 检查是否有直角坐标系的图表 */\nexport function isCartesianChart(col: number, row: number, layout: PivotHeaderLayoutMap) {\n let isHasCartesianChart = true;\n const chartSpec = layout.getRawChartSpec(col, row);\n if (chartSpec) {\n if (\n chartSpec.type === 'pie' ||\n chartSpec.type === 'radar' ||\n chartSpec.type === 'gauge' ||\n chartSpec.type === 'wordCloud' ||\n chartSpec.type === 'funnel' ||\n chartSpec.type === 'rose'\n ) {\n isHasCartesianChart = false;\n }\n } else {\n isHasCartesianChart = false;\n }\n return isHasCartesianChart;\n}\n\n/** 检查是否有直角坐标系的图表 整行或者整列去检查 */\nexport function isHasCartesianChartInline(\n col: number,\n row: number,\n checkDirection: 'col' | 'row',\n layout: PivotHeaderLayoutMap\n) {\n let isHasCartesianChart = false;\n if ((layout.indicatorsAsCol && checkDirection === 'row') || (!layout.indicatorsAsCol && checkDirection === 'col')) {\n for (let i = 0; i < layout.indicatorsDefine.length; i++) {\n //columnObjects数量和指标数量一样 并不是每个列都有 所有会快一些\n const columnObj = layout.indicatorsDefine[i] as IChartIndicator;\n if (columnObj.chartSpec) {\n if (\n columnObj.chartSpec.type !== 'pie' &&\n columnObj.chartSpec.type !== 'wordCloud' &&\n columnObj.chartSpec.type !== 'radar' &&\n columnObj.chartSpec.type !== 'gauge' &&\n columnObj.chartSpec.type !== 'funnel' &&\n columnObj.chartSpec.type !== 'rose'\n ) {\n isHasCartesianChart = true;\n break;\n }\n }\n }\n } else {\n const chartSpec = layout.getRawChartSpec(col, row);\n if (chartSpec) {\n if (\n chartSpec.type !== 'pie' &&\n chartSpec.type !== 'radar' &&\n chartSpec.type !== 'gauge' &&\n chartSpec.type !== 'wordCloud' &&\n chartSpec.type !== 'funnel' &&\n chartSpec.type !== 'rose'\n ) {\n isHasCartesianChart = true;\n }\n } else {\n isHasCartesianChart = false;\n }\n }\n return isHasCartesianChart;\n}\n\nexport function getChartSpec(col: number, row: number, layout: PivotHeaderLayoutMap): any {\n let chartSpec = layout.getRawChartSpec(col, row);\n if (chartSpec) {\n if (layout._table.isPivotChart()) {\n chartSpec = cloneDeepSpec(chartSpec);\n chartSpec.sortDataByAxis = true;\n if (isArray(chartSpec.series)) {\n chartSpec.series.forEach((serie: any) => {\n serie.sortDataByAxis = true;\n });\n }\n if (chartSpec.type !== 'gauge' && chartSpec.type !== 'rose' && chartSpec.type !== 'radar') {\n chartSpec.axes = layout.getChartAxes(col, row);\n }\n chartSpec.padding = 0;\n chartSpec.dataZoom = []; // Do not support datazoom temply\n return chartSpec;\n }\n return chartSpec;\n }\n return null;\n}\n\nexport function getChartAxes(col: number, row: number, layout: PivotHeaderLayoutMap): any {\n const axes = [];\n if (layout.indicatorsAsCol) {\n const indicatorKeys = layout.getIndicatorKeyInChartSpec(col, row);\n // const colIndex = layout.getRecordIndexByCol(col);\n const colPath = layout.getColKeysPath(col, row);\n indicatorKeys.forEach((key, index) => {\n const { range, isZeroAlign, axisOption } = getRange(\n col,\n row,\n index,\n index === 0 ? 'bottom' : 'top',\n indicatorKeys,\n colPath,\n layout\n );\n if (isZeroAlign) {\n const subAxisRange = getRange(\n col,\n row,\n indicatorKeys.length - 1 - index,\n index === 0 ? 'top' : 'bottom',\n indicatorKeys,\n colPath,\n layout\n );\n\n if (subAxisRange) {\n const { range: subRange } = subAxisRange;\n\n const align = getNewRangeToAlign(range, subRange);\n if (align) {\n range.min = align.range1[0];\n range.max = align.range1[1];\n }\n }\n }\n if (isNumber(axisOption?.min)) {\n (range as any).min = axisOption.min;\n }\n if (isNumber(axisOption?.max)) {\n (range as any).max = axisOption.max;\n }\n axes.push(\n merge(\n {\n range\n },\n axisOption,\n {\n type: axisOption?.type || 'linear',\n orient: index === 0 ? 'bottom' : 'top',\n // visible: true,\n label: { visible: false },\n // label: { flush: true },\n title: { visible: false },\n domainLine: { visible: false },\n seriesIndex: index,\n // height: -1,\n\n sync: { axisId: NO_AXISID_FRO_VTABLE } // hack for fs\n }\n )\n );\n });\n\n let rowDimensionKey = layout.getDimensionKeyInChartSpec(layout.rowHeaderLevelCount, row);\n if (isArray(rowDimensionKey)) {\n rowDimensionKey = rowDimensionKey[0];\n }\n const data =\n layout.dataset.cacheCollectedValues[rowDimensionKey] ||\n layout.dataset.collectedValues[rowDimensionKey] ||\n ([] as string[]);\n const rowPath = layout.getRowKeysPath(col, row);\n const domain = data[rowPath ?? ''] as Set<string>;\n const { axisOption, isPercent, chartType } = getAxisOption(col, row, 'left', layout);\n axes.push(\n merge(\n {\n domain: chartType === 'scatter' && !Array.isArray(domain) ? undefined : Array.from(domain ?? []),\n range: chartType === 'scatter' && !Array.isArray(domain) ? domain : undefined\n },\n axisOption,\n {\n type: chartType === 'scatter' && !Array.isArray(domain) ? axisOption?.type ?? 'linear' : 'band',\n orient: 'left',\n // visible: true,\n label: { visible: false },\n domainLine: { visible: false },\n tick: { visible: false },\n subTick: { visible: false },\n title: { visible: false }\n // height: -1,\n // width: -1\n // autoIndent: false,\n }\n )\n );\n } else {\n const indicatorKeys = layout.getIndicatorKeyInChartSpec(col, row);\n const rowPath = layout.getRowKeysPath(col, row);\n indicatorKeys.forEach((key, index) => {\n const { range, isZeroAlign, axisOption } = getRange(\n col,\n row,\n index,\n index === 0 ? 'left' : 'right',\n indicatorKeys,\n rowPath,\n layout\n );\n if (isZeroAlign) {\n const subAxisRange = getRange(\n col,\n row,\n indicatorKeys.length - 1 - index,\n index === 0 ? 'right' : 'left',\n indicatorKeys,\n rowPath,\n layout\n );\n\n if (subAxisRange) {\n const { range: subRange } = subAxisRange;\n\n const align = getNewRangeToAlign(range, subRange);\n if (align) {\n range.min = align.range1[0];\n range.max = align.range1[1];\n }\n }\n }\n if (isNumber(axisOption?.min)) {\n (range as any).min = axisOption.min;\n }\n if (isNumber(axisOption?.max)) {\n (range as any).max = axisOption.max;\n }\n\n axes.push(\n merge(\n {\n range\n },\n axisOption,\n {\n type: axisOption?.type || 'linear',\n orient: index === 0 ? 'left' : 'right',\n // visible: true,\n label: { visible: false },\n // label: { flush: true },\n title: { visible: false },\n domainLine: { visible: false },\n seriesIndex: index,\n // width: -1,\n // grid: index === 0 ? undefined : { visible: false }\n\n sync: { axisId: NO_AXISID_FRO_VTABLE } // hack for fs\n }\n )\n );\n });\n\n let columnDimensionKey = layout.getDimensionKeyInChartSpec(col, layout.columnHeaderLevelCount);\n if (isArray(columnDimensionKey)) {\n columnDimensionKey = columnDimensionKey[0];\n }\n const data =\n layout.dataset.cacheCollectedValues[columnDimensionKey] ||\n layout.dataset.collectedValues[columnDimensionKey] ||\n ([] as string[]);\n const colPath = layout.getColKeysPath(col, row);\n const domain: string[] | Set<string> = (data?.[colPath ?? ''] as Set<string>) ?? [];\n\n const { axisOption, isPercent, chartType } = getAxisOption(col, row, 'bottom', layout);\n axes.push(\n merge(\n {\n domain: chartType === 'scatter' && !Array.isArray(domain) ? undefined : Array.from(domain ?? []),\n range: chartType === 'scatter' && !Array.isArray(domain) ? domain : undefined\n },\n axisOption,\n {\n type: chartType === 'scatter' && !Array.isArray(domain) ? axisOption?.type ?? 'linear' : 'band',\n orient: 'bottom',\n visible: true,\n label: { visible: false },\n domainLine: { visible: false },\n tick: { visible: false },\n subTick: { visible: false },\n title: { visible: false }\n // height: -1\n // autoIndent: false,\n }\n )\n );\n }\n return axes;\n}\n/**\n * 获取单元格对应spec的dataId。\n * 如果是spec外层的dataId,则是string,否则通过series获取到的是Record<string, string> => <dataId, series-chart的指标key用于过滤数据>\n * @param col\n * @param row\n * @param layout\n * @returns\n */\nexport function getChartDataId(\n col: number,\n row: number,\n layout: PivotHeaderLayoutMap | SimpleHeaderLayoutMap\n): string | Record<string, string> {\n const chartSpec = layout.getRawChartSpec(col, row);\n // 如果chartSpec配置了组合图 series 则需要考虑 series中存在的多个指标\n if (chartSpec?.series) {\n const dataIdfield: Record<string, string> = {};\n\n if (chartSpec.data?.id) {\n dataIdfield[chartSpec.data.id] = undefined;\n }\n chartSpec?.series.forEach((seriesSpec: any) => {\n if (!seriesSpec.data?.fromDataId) {\n if (!seriesSpec.data?.transforms) {\n const seriesField = seriesSpec.direction === 'horizontal' ? seriesSpec.xField : seriesSpec.yField;\n dataIdfield[seriesSpec.data?.id ?? chartSpec.data?.id ?? 'data'] = seriesSpec.data?.id\n ? seriesField\n : undefined;\n } else {\n dataIdfield[seriesSpec.data?.id ?? chartSpec.data?.id ?? 'data'] = undefined;\n }\n }\n });\n return dataIdfield;\n }\n return chartSpec.data.id;\n}\n\nfunction getRange(\n col: number,\n row: number,\n index: number,\n position: 'bottom' | 'top' | 'left' | 'right',\n indicatorKeys: string[],\n path: string,\n layout: PivotHeaderLayoutMap\n) {\n const { axisOption, isPercent, isZeroAlign, seriesIndice } = getAxisOption(col, row, position, layout);\n const range = getAxisRange(layout.dataset.collectedValues, indicatorKeys, isZeroAlign, path, seriesIndice ?? index);\n\n if (isPercent) {\n (range as any).min = (range as any).min < 0 ? -1 : 0;\n (range as any).max = (range as any).max > 0 ? 1 : 0;\n }\n if (axisOption?.zero || range.min === range.max) {\n range.min = Math.min(range.min, 0);\n range.max = Math.max(range.max, 0);\n }\n if (axisOption?.nice) {\n const { range: axisRange } = getAxisDomainRangeAndLabels(\n range.min,\n range.max,\n axisOption,\n isZeroAlign,\n layout._table.getColWidth(col)\n );\n range.min = axisRange[0];\n range.max = axisRange[1];\n }\n if (isNumber(axisOption?.min)) {\n (range as any).min = axisOption.min;\n }\n if (isNumber(axisOption?.max)) {\n (range as any).max = axisOption.max;\n }\n\n return {\n range,\n isZeroAlign,\n axisOption\n };\n}\n/** 检查是否有直角坐标系的图表 */\nexport function checkHasChart(layout: PivotHeaderLayoutMap | SimpleHeaderLayoutMap) {\n let isHasChart = false;\n for (let i = 0; i < layout.columnObjects.length; i++) {\n const columnObj = layout.columnObjects[i];\n if (columnObj.chartSpec) {\n isHasChart = true;\n break;\n }\n }\n return isHasChart;\n}\n"]}
1
+ {"version":3,"sources":["../src/layout/chart-helper/get-chart-spec.ts"],"names":[],"mappings":"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","file":"get-chart-spec.js","sourcesContent":["import { cloneDeep, isArray, isNumber, merge } from '@visactor/vutils';\nimport type { PivotHeaderLayoutMap } from '../pivot-header-layout';\nimport type { SimpleHeaderLayoutMap } from '../simple-header-layout';\nimport { getAxisOption, getAxisRange } from './get-axis-config';\nimport { getAxisDomainRangeAndLabels } from './get-axis-domain';\nimport { getNewRangeToAlign } from './zero-align';\nimport type { IChartIndicator } from '../../ts-types';\nimport { cloneDeepSpec } from './../../vutil-extension-temp';\n\nconst NO_AXISID_FRO_VTABLE = 'NO_AXISID_FRO_VTABLE';\n\nexport function getRawChartSpec(col: number, row: number, layout: PivotHeaderLayoutMap): any {\n const paths = layout.getCellHeaderPaths(col, row);\n let indicatorObj;\n if (layout.indicatorsAsCol) {\n const indicatorKey = paths.colHeaderPaths.find(colPath => colPath.indicatorKey)?.indicatorKey;\n indicatorObj = layout.columnObjects.find(indicator => indicator.indicatorKey === indicatorKey);\n } else {\n const indicatorKey = paths.rowHeaderPaths.find(rowPath => rowPath.indicatorKey)?.indicatorKey;\n indicatorObj = layout.columnObjects.find(indicator => indicator.indicatorKey === indicatorKey);\n }\n const chartSpec = indicatorObj?.chartSpec;\n\n if (typeof chartSpec === 'function') {\n // 动态组织spec\n const arg = {\n col,\n row,\n dataValue: layout._table.getCellOriginValue(col, row) || '',\n value: layout._table.getCellValue(col, row) || '',\n rect: layout._table.getCellRangeRelativeRect(layout._table.getCellRange(col, row)),\n table: layout._table\n };\n return chartSpec(arg);\n }\n return chartSpec;\n}\nexport function isShareChartSpec(col: number, row: number, layout: PivotHeaderLayoutMap): any {\n const paths = layout.getCellHeaderPaths(col, row);\n let indicatorObj;\n if (layout.indicatorsAsCol) {\n const indicatorKey = paths.colHeaderPaths.find(colPath => colPath.indicatorKey)?.indicatorKey;\n indicatorObj = layout.columnObjects.find(indicator => indicator.indicatorKey === indicatorKey);\n } else {\n const indicatorKey = paths.rowHeaderPaths.find(rowPath => rowPath.indicatorKey)?.indicatorKey;\n indicatorObj = layout.columnObjects.find(indicator => indicator.indicatorKey === indicatorKey);\n }\n const chartSpec = indicatorObj?.chartSpec;\n\n if (typeof chartSpec === 'function') {\n return false;\n }\n return true;\n}\n/** 检查是否有直角坐标系的图表 */\nexport function checkHasCartesianChart(layout: PivotHeaderLayoutMap) {\n let isHasCartesianChart = false;\n for (let i = 0; i < layout.indicatorsDefine.length; i++) {\n //columnObjects数量和指标数量一样 并不是每个列都有 所有会快一些\n const columnObj = layout.indicatorsDefine[i] as IChartIndicator;\n if (columnObj.chartSpec) {\n if (\n columnObj.chartSpec.type !== 'wordCloud' &&\n columnObj.chartSpec.type !== 'radar' &&\n columnObj.chartSpec.type !== 'gauge' &&\n columnObj.chartSpec.type !== 'pie' &&\n columnObj.chartSpec.type !== 'funnel' &&\n columnObj.chartSpec.type !== 'rose'\n ) {\n isHasCartesianChart = true;\n break;\n }\n }\n }\n return isHasCartesianChart;\n}\n\n/** 检查是否有直角坐标系的图表 */\nexport function isCartesianChart(col: number, row: number, layout: PivotHeaderLayoutMap) {\n let isHasCartesianChart = true;\n const chartSpec = layout.getRawChartSpec(col, row);\n if (chartSpec) {\n if (\n chartSpec.type === 'pie' ||\n chartSpec.type === 'radar' ||\n chartSpec.type === 'gauge' ||\n chartSpec.type === 'wordCloud' ||\n chartSpec.type === 'funnel' ||\n chartSpec.type === 'rose'\n ) {\n isHasCartesianChart = false;\n }\n } else {\n isHasCartesianChart = false;\n }\n return isHasCartesianChart;\n}\n\n/** 检查是否有直角坐标系的图表 整行或者整列去检查 */\nexport function isHasCartesianChartInline(\n col: number,\n row: number,\n checkDirection: 'col' | 'row',\n layout: PivotHeaderLayoutMap\n) {\n let isHasCartesianChart = false;\n if ((layout.indicatorsAsCol && checkDirection === 'row') || (!layout.indicatorsAsCol && checkDirection === 'col')) {\n for (let i = 0; i < layout.indicatorsDefine.length; i++) {\n //columnObjects数量和指标数量一样 并不是每个列都有 所有会快一些\n const columnObj = layout.indicatorsDefine[i] as IChartIndicator;\n if (columnObj.chartSpec) {\n if (\n columnObj.chartSpec.type !== 'pie' &&\n columnObj.chartSpec.type !== 'wordCloud' &&\n columnObj.chartSpec.type !== 'radar' &&\n columnObj.chartSpec.type !== 'gauge' &&\n columnObj.chartSpec.type !== 'funnel' &&\n columnObj.chartSpec.type !== 'rose'\n ) {\n isHasCartesianChart = true;\n break;\n }\n }\n }\n } else {\n const chartSpec = layout.getRawChartSpec(col, row);\n if (chartSpec) {\n if (\n chartSpec.type !== 'pie' &&\n chartSpec.type !== 'radar' &&\n chartSpec.type !== 'gauge' &&\n chartSpec.type !== 'wordCloud' &&\n chartSpec.type !== 'funnel' &&\n chartSpec.type !== 'rose'\n ) {\n isHasCartesianChart = true;\n }\n } else {\n isHasCartesianChart = false;\n }\n }\n return isHasCartesianChart;\n}\n\nexport function getChartSpec(col: number, row: number, layout: PivotHeaderLayoutMap): any {\n let chartSpec = layout.getRawChartSpec(col, row);\n if (chartSpec) {\n if (layout._table.isPivotChart()) {\n chartSpec = cloneDeepSpec(chartSpec);\n chartSpec.sortDataByAxis = true;\n if (isArray(chartSpec.series)) {\n chartSpec.series.forEach((serie: any) => {\n serie.sortDataByAxis = true;\n });\n }\n if (chartSpec.type !== 'gauge' && chartSpec.type !== 'rose' && chartSpec.type !== 'radar') {\n chartSpec.axes = layout.getChartAxes(col, row);\n }\n chartSpec.padding = 0;\n chartSpec.dataZoom = []; // Do not support datazoom temply\n return chartSpec;\n }\n return chartSpec;\n }\n return null;\n}\n\nexport function getChartAxes(col: number, row: number, layout: PivotHeaderLayoutMap): any {\n const axes = [];\n if (layout.indicatorsAsCol) {\n const indicatorKeys = layout.getIndicatorKeyInChartSpec(col, row);\n // const colIndex = layout.getRecordIndexByCol(col);\n const colPath = layout.getColKeysPath(col, row);\n indicatorKeys.forEach((key, index) => {\n const { range, isZeroAlign, axisOption } = getRange(\n col,\n row,\n index,\n index === 0 ? 'bottom' : 'top',\n indicatorKeys,\n colPath,\n layout\n );\n if (isZeroAlign) {\n const subAxisRange = getRange(\n col,\n row,\n indicatorKeys.length - 1 - index,\n index === 0 ? 'top' : 'bottom',\n indicatorKeys,\n colPath,\n layout\n );\n\n if (subAxisRange) {\n const { range: subRange } = subAxisRange;\n\n const align = getNewRangeToAlign(range, subRange);\n if (align) {\n range.min = align.range1[0];\n range.max = align.range1[1];\n }\n }\n }\n if (isNumber(axisOption?.min)) {\n (range as any).min = axisOption.min;\n }\n if (isNumber(axisOption?.max)) {\n (range as any).max = axisOption.max;\n }\n axes.push(\n merge(\n {\n range\n },\n axisOption,\n {\n type: axisOption?.type || 'linear',\n orient: index === 0 ? 'bottom' : 'top',\n // visible: true,\n label: { visible: false },\n // label: { flush: true },\n title: { visible: false },\n domainLine: { visible: false },\n seriesIndex: index,\n // height: -1,\n\n sync: { axisId: NO_AXISID_FRO_VTABLE } // hack for fs\n }\n )\n );\n });\n\n let rowDimensionKey = layout.getDimensionKeyInChartSpec(layout.rowHeaderLevelCount, row);\n if (isArray(rowDimensionKey)) {\n rowDimensionKey = rowDimensionKey[0];\n }\n const data =\n layout.dataset.cacheCollectedValues[rowDimensionKey] ||\n layout.dataset.collectedValues[rowDimensionKey] ||\n ([] as string[]);\n const rowPath = layout.getRowKeysPath(col, row);\n const domain = data[rowPath ?? ''] as Set<string>;\n const { axisOption, isPercent, chartType } = getAxisOption(col, row, 'left', layout);\n axes.push(\n merge(\n {\n domain: chartType === 'scatter' && !Array.isArray(domain) ? undefined : Array.from(domain ?? []),\n range: chartType === 'scatter' && !Array.isArray(domain) ? domain : undefined\n },\n axisOption,\n {\n type: chartType === 'scatter' && !Array.isArray(domain) ? axisOption?.type ?? 'linear' : 'band',\n orient: 'left',\n // visible: true,\n label: { visible: false },\n domainLine: { visible: false },\n tick: { visible: false },\n subTick: { visible: false },\n title: { visible: false }\n // height: -1,\n // width: -1\n // autoIndent: false,\n }\n )\n );\n } else {\n const indicatorKeys = layout.getIndicatorKeyInChartSpec(col, row);\n const rowPath = layout.getRowKeysPath(col, row);\n indicatorKeys.forEach((key, index) => {\n const { range, isZeroAlign, axisOption } = getRange(\n col,\n row,\n index,\n index === 0 ? 'left' : 'right',\n indicatorKeys,\n rowPath,\n layout\n );\n if (isZeroAlign) {\n const subAxisRange = getRange(\n col,\n row,\n indicatorKeys.length - 1 - index,\n index === 0 ? 'right' : 'left',\n indicatorKeys,\n rowPath,\n layout\n );\n\n if (subAxisRange) {\n const { range: subRange } = subAxisRange;\n\n const align = getNewRangeToAlign(range, subRange);\n if (align) {\n range.min = align.range1[0];\n range.max = align.range1[1];\n }\n }\n }\n if (isNumber(axisOption?.min)) {\n (range as any).min = axisOption.min;\n }\n if (isNumber(axisOption?.max)) {\n (range as any).max = axisOption.max;\n }\n\n axes.push(\n merge(\n {\n range\n },\n axisOption,\n {\n type: axisOption?.type || 'linear',\n orient: index === 0 ? 'left' : 'right',\n // visible: true,\n label: { visible: false },\n // label: { flush: true },\n title: { visible: false },\n domainLine: { visible: false },\n seriesIndex: index,\n // width: -1,\n // grid: index === 0 ? undefined : { visible: false }\n\n sync: { axisId: NO_AXISID_FRO_VTABLE } // hack for fs\n }\n )\n );\n });\n\n let columnDimensionKey = layout.getDimensionKeyInChartSpec(col, layout.columnHeaderLevelCount);\n if (isArray(columnDimensionKey)) {\n columnDimensionKey = columnDimensionKey[0];\n }\n const data =\n layout.dataset.cacheCollectedValues[columnDimensionKey] ||\n layout.dataset.collectedValues[columnDimensionKey] ||\n ([] as string[]);\n const colPath = layout.getColKeysPath(col, row);\n const domain: string[] | Set<string> = (data?.[colPath ?? ''] as Set<string>) ?? [];\n\n const { axisOption, isPercent, chartType } = getAxisOption(col, row, 'bottom', layout);\n axes.push(\n merge(\n {\n domain: chartType === 'scatter' && !Array.isArray(domain) ? undefined : Array.from(domain ?? []),\n range: chartType === 'scatter' && !Array.isArray(domain) ? domain : undefined\n },\n axisOption,\n {\n type: chartType === 'scatter' && !Array.isArray(domain) ? axisOption?.type ?? 'linear' : 'band',\n orient: 'bottom',\n visible: true,\n label: { visible: false },\n domainLine: { visible: false },\n tick: { visible: false },\n subTick: { visible: false },\n title: { visible: false }\n // height: -1\n // autoIndent: false,\n }\n )\n );\n }\n return axes;\n}\n/**\n * 获取单元格对应spec的dataId。\n * 如果是spec外层的dataId,则是string,否则通过series获取到的是Record<string, string> => <dataId, series-chart的指标key用于过滤数据>\n * @param col\n * @param row\n * @param layout\n * @returns\n */\nexport function getChartDataId(\n col: number,\n row: number,\n layout: PivotHeaderLayoutMap | SimpleHeaderLayoutMap\n): string | Record<string, string> {\n const chartSpec = layout.getRawChartSpec(col, row);\n // 如果chartSpec配置了组合图 series 则需要考虑 series中存在的多个指标\n if (chartSpec?.series) {\n const dataIdfield: Record<string, string> = {};\n\n if (chartSpec.data?.id) {\n dataIdfield[chartSpec.data.id] = undefined;\n }\n chartSpec?.series.forEach((seriesSpec: any) => {\n if (!seriesSpec.data?.fromDataId) {\n if (!seriesSpec.data?.transforms) {\n const seriesField = seriesSpec.direction === 'horizontal' ? seriesSpec.xField : seriesSpec.yField;\n dataIdfield[seriesSpec.data?.id ?? chartSpec.data?.id ?? 'data'] = seriesSpec.data?.id\n ? seriesField\n : undefined;\n } else {\n dataIdfield[seriesSpec.data?.id ?? chartSpec.data?.id ?? 'data'] = undefined;\n }\n }\n });\n return dataIdfield;\n }\n return chartSpec.data.id;\n}\n\nfunction getRange(\n col: number,\n row: number,\n index: number,\n position: 'bottom' | 'top' | 'left' | 'right',\n indicatorKeys: string[],\n path: string,\n layout: PivotHeaderLayoutMap\n) {\n const { axisOption, isPercent, isZeroAlign, seriesIndice } = getAxisOption(col, row, position, layout);\n const range = getAxisRange(layout.dataset.collectedValues, indicatorKeys, isZeroAlign, path, seriesIndice ?? index);\n\n if (isPercent) {\n (range as any).min = (range as any).min < 0 ? -1 : 0;\n (range as any).max = (range as any).max > 0 ? 1 : 0;\n }\n if (axisOption?.zero || range.min === range.max) {\n range.min = Math.min(range.min, 0);\n range.max = Math.max(range.max, 0);\n }\n if (axisOption?.nice) {\n const { range: axisRange } = getAxisDomainRangeAndLabels(\n range.min,\n range.max,\n axisOption,\n isZeroAlign,\n layout._table.getColWidth(col)\n );\n range.min = axisRange[0];\n range.max = axisRange[1];\n }\n if (isNumber(axisOption?.min)) {\n (range as any).min = axisOption.min;\n }\n if (isNumber(axisOption?.max)) {\n (range as any).max = axisOption.max;\n }\n\n return {\n range,\n isZeroAlign,\n axisOption\n };\n}\n/** 检查是否有直角坐标系的图表 */\nexport function checkHasChart(layout: PivotHeaderLayoutMap | SimpleHeaderLayoutMap) {\n let isHasChart = false;\n for (let i = 0; i < layout.columnObjects.length; i++) {\n const columnObj = layout.columnObjects[i];\n if (columnObj.chartSpec) {\n isHasChart = true;\n break;\n }\n }\n return isHasChart;\n}\n"]}
@@ -226,4 +226,5 @@ export declare class PivotHeaderLayoutMap implements LayoutMapAPI {
226
226
  getSeriesNumberHeader(col: number, row: number): SeriesNumberColumnData;
227
227
  getSeriesNumberBody(col: number, row: number): SeriesNumberColumnData;
228
228
  changeTreeNodeTitle(col: number, row: number, value: string): void;
229
+ clearCellIds(): void;
229
230
  }
@@ -111,7 +111,8 @@ export class PivotHeaderLayoutMap {
111
111
  this._chartPaddingOuter = null !== (_g = isArray(bandAxisConfig.paddingOuter) ? bandAxisConfig.paddingOuter[0] : bandAxisConfig.paddingOuter) && void 0 !== _g ? _g : 0),
112
112
  this._chartItemSpanSize > 0 || (null === (_h = indicatorObject.chartSpec.series) || void 0 === _h || _h.find((seriesObject => (seriesObject.barWidth && "number" == typeof seriesObject.barWidth && (this._chartItemSpanSize = seriesObject.barWidth),
113
113
  this._chartItemSpanSize > 0))), !1);
114
- }))), this.handleRowSeriesNumber(table.internalProps.rowSeriesNumber), this.setColumnWidths();
114
+ }))), this.handleRowSeriesNumber(table.internalProps.rowSeriesNumber), this.setColumnWidths(),
115
+ this.clearCellIds();
115
116
  }
116
117
  handleRowSeriesNumber(rowSeriesNumber) {
117
118
  var _a;
@@ -499,7 +500,7 @@ export class PivotHeaderLayoutMap {
499
500
  return this.columnHeaderTitle && (count += 1), this._table.isPivotChart() && this.indicatorsAsCol && !this.hasTwoIndicatorAxes && checkHasCartesianChart(this) && (count -= 1),
500
501
  void (this.columnHeaderLevelCount = count);
501
502
  }
502
- this.columnHeaderLevelCount = 0;
503
+ this.columnHeaderLevelCount = this.indicatorsAsCol ? this.hideIndicatorName ? 0 : 1 : 0;
503
504
  }
504
505
  resetRowHeaderLevelCount() {
505
506
  var _a, _b;
@@ -1365,7 +1366,7 @@ export class PivotHeaderLayoutMap {
1365
1366
  this.rowDimensionTree = new DimensionTree(null !== (_b = this.rowTree) && void 0 !== _b ? _b : [], this.sharedVar, this.rowHierarchyType, "tree" === this.rowHierarchyType ? this.rowExpandLevel : void 0),
1366
1367
  this._generateColHeaderIds(), this.colIndex = 0, this._generateRowHeaderIds(), this.resetColumnHeaderLevelCount(),
1367
1368
  this._rowHeaderCellIds_FULL = transpose(this._rowHeaderCellIds_FULL), this._headerObjectMap = this._headerObjects.reduce(((o, e) => (o[e.id] = e,
1368
- o)), {}), this.setPagination(this.pagination);
1369
+ o)), {}), this.setPagination(this.pagination), this.clearCellIds();
1369
1370
  }
1370
1371
  isSeriesNumberInHeader(col, row) {
1371
1372
  return this.leftRowSeriesNumberColumnCount > 0 && col >= 0 && row >= 0 && col < this.leftRowSeriesNumberColumnCount && row < this.headerLevelCount || this.rightRowSeriesNumberColumnCount > 0 && row >= 0 && col >= this.colCount - this.rightRowSeriesNumberColumnCount && row < this.headerLevelCount;
@@ -1394,6 +1395,21 @@ export class PivotHeaderLayoutMap {
1394
1395
  const id = this.getCellId(col, row);
1395
1396
  this._headerObjectMap[id].title = value;
1396
1397
  }
1398
+ clearCellIds() {
1399
+ if (!this.showColumnHeader) if (this.indicatorsAsCol && !this.hideIndicatorName) {
1400
+ const indicatorIndex = this.colDimensionKeys.indexOf(IndicatorDimensionKeyPlaceholder);
1401
+ this._columnHeaderCellIds = this._columnHeaderCellIds.splice(indicatorIndex, 1);
1402
+ } else this._columnHeaderCellIds.splice(0, this._columnHeaderCellIds.length);
1403
+ if (!this.showRowHeader) if (this.indicatorsAsCol || this.hideIndicatorName) this._rowHeaderCellIds_FULL.forEach((cellIds => {
1404
+ cellIds.splice(0, cellIds.length);
1405
+ })); else {
1406
+ const indicatorIndex = this.rowDimensionKeys.indexOf(IndicatorDimensionKeyPlaceholder);
1407
+ this._rowHeaderCellIds_FULL.forEach((cellIds => {
1408
+ const indicator = cellIds.splice(indicatorIndex, 1);
1409
+ cellIds.splice(0, cellIds.length), cellIds.push(indicator[0]);
1410
+ }));
1411
+ }
1412
+ }
1397
1413
  }
1398
1414
 
1399
1415
  function scaleWholeRangeSize(count, bandwidth, paddingInner, paddingOuter) {