@visactor/vtable 0.24.0 → 0.24.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 (61) hide show
  1. package/cjs/ListTable.js +7 -25
  2. package/cjs/ListTable.js.map +1 -1
  3. package/cjs/PivotChart.js +5 -17
  4. package/cjs/PivotChart.js.map +1 -1
  5. package/cjs/PivotTable.d.ts +4 -4
  6. package/cjs/PivotTable.js +32 -29
  7. package/cjs/PivotTable.js.map +1 -1
  8. package/cjs/core/BaseTable.d.ts +1 -0
  9. package/cjs/core/BaseTable.js +17 -6
  10. package/cjs/core/BaseTable.js.map +1 -1
  11. package/cjs/dataset/flatDataToObject.d.ts +7 -0
  12. package/cjs/dataset/flatDataToObject.js +3 -0
  13. package/cjs/dataset/flatDataToObject.js.map +1 -1
  14. package/cjs/index.d.ts +1 -1
  15. package/cjs/index.js +1 -1
  16. package/cjs/index.js.map +1 -1
  17. package/cjs/layout/pivot-header-layout.js +8 -6
  18. package/cjs/layout/pivot-header-layout.js.map +1 -1
  19. package/cjs/layout/row-height-map.js +3 -1
  20. package/cjs/layout/row-height-map.js.map +1 -1
  21. package/cjs/layout/simple-header-layout.js +17 -1
  22. package/cjs/layout/simple-header-layout.js.map +1 -1
  23. package/cjs/scenegraph/layout/compute-col-width.js +1 -1
  24. package/cjs/scenegraph/layout/compute-col-width.js.map +1 -1
  25. package/cjs/scenegraph/layout/compute-row-height.js +1 -1
  26. package/cjs/scenegraph/layout/compute-row-height.js.map +1 -1
  27. package/cjs/scenegraph/scenegraph.js +1 -1
  28. package/cjs/themes/component.js +1 -1
  29. package/cjs/vrender.js.map +1 -1
  30. package/dist/vtable.js +110 -97
  31. package/dist/vtable.min.js +2 -2
  32. package/es/ListTable.js +7 -25
  33. package/es/ListTable.js.map +1 -1
  34. package/es/PivotChart.js +5 -17
  35. package/es/PivotChart.js.map +1 -1
  36. package/es/PivotTable.d.ts +4 -4
  37. package/es/PivotTable.js +31 -28
  38. package/es/PivotTable.js.map +1 -1
  39. package/es/core/BaseTable.d.ts +1 -0
  40. package/es/core/BaseTable.js +17 -6
  41. package/es/core/BaseTable.js.map +1 -1
  42. package/es/dataset/flatDataToObject.d.ts +7 -0
  43. package/es/dataset/flatDataToObject.js +3 -0
  44. package/es/dataset/flatDataToObject.js.map +1 -1
  45. package/es/index.d.ts +1 -1
  46. package/es/index.js +1 -1
  47. package/es/index.js.map +1 -1
  48. package/es/layout/pivot-header-layout.js +8 -6
  49. package/es/layout/pivot-header-layout.js.map +1 -1
  50. package/es/layout/row-height-map.js +3 -1
  51. package/es/layout/row-height-map.js.map +1 -1
  52. package/es/layout/simple-header-layout.js +17 -1
  53. package/es/layout/simple-header-layout.js.map +1 -1
  54. package/es/scenegraph/layout/compute-col-width.js +1 -1
  55. package/es/scenegraph/layout/compute-col-width.js.map +1 -1
  56. package/es/scenegraph/layout/compute-row-height.js +1 -1
  57. package/es/scenegraph/layout/compute-row-height.js.map +1 -1
  58. package/es/scenegraph/scenegraph.js +1 -1
  59. package/es/themes/component.js +1 -1
  60. package/es/vrender.js.map +1 -1
  61. package/package.json +2 -2
@@ -25,6 +25,13 @@ export declare class FlatDataToObjects {
25
25
  indicatorsAsCol: boolean;
26
26
  indicatorDimensionKey: string | number;
27
27
  }, records?: any[]);
28
+ changeDataConfig(dataConfig: {
29
+ rows: string[];
30
+ columns: string[];
31
+ indicators: string[];
32
+ indicatorsAsCol: boolean;
33
+ indicatorDimensionKey: string | number;
34
+ }): void;
28
35
  setRecords(records: any[]): void;
29
36
  processRecords(): void;
30
37
  processRecord(record: any): void;
@@ -17,6 +17,9 @@ class FlatDataToObjects {
17
17
  "undefined" != typeof window && window.performance.now();
18
18
  }
19
19
  }
20
+ changeDataConfig(dataConfig) {
21
+ this.dataConfig = dataConfig;
22
+ }
20
23
  setRecords(records) {
21
24
  this.processRecords();
22
25
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/dataset/flatDataToObject.ts"],"names":[],"mappings":"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","file":"flatDataToObject.js","sourcesContent":["import { isValid } from '@visactor/vutils';\nimport { Env } from '../tools/env';\n\n// if (Env.mode === 'node') {\n// // eslint-disable-next-line no-global-assign\n// window = {\n// performance: {\n// now: () => -1,\n// },\n// } as any;\n// }\n/**\n * 针对聚合好的flat数据转为便于查询的行列树对象,每一个显示的指标值都能从一条数据记录中获得\n */\nexport class FlatDataToObjects {\n /**\n * 用户配置\n */\n dataConfig: {\n rows: string[]; //行维度字段数组;\n columns: string[]; //列维度字段数组;\n indicators: string[]; //具体展示指标;\n indicatorsAsCol: boolean;\n indicatorDimensionKey: string | number;\n };\n /**\n * 明细数据\n */\n records: any[];\n /**\n * 树形节点,最后的子节点对应到body部分的每个单元格 树结构: 行-列-单元格\n */\n tree: Record<string, Record<string, Record<string, any>>> = {};\n changedTree: Record<string, Record<string, Record<string, any>>> = {};\n private colFlatKeys = {};\n private rowFlatKeys = {};\n\n // //列表头的每列对应的表头键值\n // colKeys: string[][] = [];\n // //行表头的每行对应的表头键值\n // rowKeys: string[][] = [];\n // /**\n // * 对应dataset中的rowKeys,行表头的每行表头键值,包含小计总计\n // */\n // rowKeysPath: string[][];\n // /**\n // * 对应dataset中的colKeys,列表头的每列表头键值,包含小计总计\n // */\n // colKeysPath: string[][];\n\n stringJoinChar = String.fromCharCode(0);\n //缓存rows对应每个值是否为汇总字段\n private rowsIsTotal: boolean[] = [];\n private colsIsTotal: boolean[] = [];\n private colGrandTotalLabel: string;\n private colSubTotalLabel: string;\n private rowGrandTotalLabel: string;\n private rowSubTotalLabel: string;\n constructor(\n dataConfig: {\n rows: string[]; //行维度字段数组;\n columns: string[]; //列维度字段数组;\n indicators: string[]; //具体展示指标;\n indicatorsAsCol: boolean;\n indicatorDimensionKey: string | number;\n },\n records?: any[]\n ) {\n this.dataConfig = dataConfig;\n // this.allTotal = new SumAggregator(this.dataConfig.indicators[0]);\n\n if (records) {\n //处理数据\n this.records = records;\n const t0 = typeof window !== 'undefined' ? window.performance.now() : 0;\n this.setRecords(records);\n const t1 = typeof window !== 'undefined' ? window.performance.now() : 0;\n console.log('processRecords:', t1 - t0);\n }\n\n // delete this.rowFlatKeys;\n // delete this.colFlatKeys;\n }\n\n setRecords(records: any[]) {\n this.processRecords();\n }\n /**\n * 处理数据,遍历所有条目,过滤和派生字段的处理有待优化TODO\n */\n processRecords() {\n for (let i = 0, len = this.records.length; i < len; i++) {\n const record = this.records[i];\n this.processRecord(record);\n }\n }\n\n /**\n * 处理单条数据\n * @param record\n * @returns\n */\n processRecord(record: any) {\n const colKey: any[] = [];\n const rowKey: any[] = [];\n\n for (let l = 0, len1 = this.dataConfig.rows.length; l < len1; l++) {\n const rowAttr = this.dataConfig.rows[l];\n if (\n // record[rowAttr] !== null &&\n record[rowAttr] !== undefined &&\n rowAttr !== this.dataConfig.indicatorDimensionKey\n ) {\n rowKey.push(record[rowAttr]);\n }\n }\n for (let n = 0, len2 = this.dataConfig.columns.length; n < len2; n++) {\n const colAttr = this.dataConfig.columns[n];\n if (\n // record[colAttr] !== null &&\n record[colAttr] !== undefined &&\n colAttr !== this.dataConfig.indicatorDimensionKey\n ) {\n colKey.push(record[colAttr]);\n }\n }\n\n this.dataConfig.indicators?.forEach((indicatorKey: string | number) => {\n const recordValue: string | number = record[indicatorKey];\n // const indicatorName = this.dataConfig.indicators[indicatorKey];\n if (recordValue !== undefined) {\n if (this.dataConfig.indicatorsAsCol) {\n colKey.push(indicatorKey);\n } else {\n rowKey.push(indicatorKey);\n }\n }\n\n // record[indicatorKey] && (recordValue = record[indicatorKey]);\n\n // this.allTotal.push(record);\n\n const flatRowKey = rowKey.join(this.stringJoinChar);\n const flatColKey = colKey.join(this.stringJoinChar);\n\n if (rowKey.length !== 0) {\n if (!this.rowFlatKeys[flatRowKey]) {\n this.rowFlatKeys[flatRowKey] = 1;\n }\n }\n if (colKey.length !== 0) {\n if (!this.colFlatKeys[flatColKey]) {\n this.colFlatKeys[flatColKey] = 1;\n }\n }\n\n if (colKey.length !== 0 || rowKey.length !== 0) {\n if (!this.tree[flatRowKey]) {\n this.tree[flatRowKey] = {};\n }\n if (recordValue !== undefined) {\n this.tree[flatRowKey][flatColKey] = { value: recordValue, record };\n if (this.dataConfig.indicatorsAsCol) {\n colKey.pop();\n } else {\n rowKey.pop();\n }\n }\n }\n });\n }\n\n getTreeNode(\n rowKey: string[] | string = [],\n colKey: string[] | string = [],\n indicator: string,\n considerChangedValue: boolean = true\n ): Record<string, any> {\n let flatRowKey;\n let flatColKey;\n if (typeof rowKey === 'string') {\n flatRowKey = rowKey;\n } else {\n //考虑 指标key有可能在数组中间位置或者前面的可能 将其删除再添加到尾部\n let isHasIndicator = false;\n rowKey.map((key, i) => {\n if (key === indicator) {\n rowKey.splice(i, 1);\n isHasIndicator = true;\n }\n });\n isHasIndicator && rowKey.push(indicator);\n flatRowKey = rowKey.join(this.stringJoinChar);\n }\n\n if (typeof colKey === 'string') {\n flatColKey = colKey;\n } else {\n //考虑 指标key有可能在数组中间位置或者前面的可能 将其删除再添加到尾部\n let isHasIndicator = false;\n colKey.map((key, i) => {\n if (key === indicator) {\n colKey.splice(i, 1);\n isHasIndicator = true;\n }\n });\n isHasIndicator && colKey.push(indicator);\n flatColKey = colKey.join(this.stringJoinChar);\n }\n if (considerChangedValue && isValid(this.changedTree[flatRowKey]?.[flatColKey])) {\n return { value: this.changedTree[flatRowKey][flatColKey], record: this.tree?.[flatRowKey]?.[flatColKey]?.record };\n }\n return this.tree?.[flatRowKey]?.[flatColKey] ?? undefined;\n }\n\n changeTreeNodeValue(\n rowKey: string[] | string = [],\n colKey: string[] | string = [],\n indicator: string,\n newValue: any\n ) {\n let flatRowKey;\n let flatColKey;\n if (typeof rowKey === 'string') {\n flatRowKey = rowKey;\n } else {\n //考虑 指标key有可能在数组中间位置或者前面的可能 将其删除再添加到尾部\n let isHasIndicator = false;\n rowKey.map((key, i) => {\n if (key === indicator) {\n rowKey.splice(i, 1);\n isHasIndicator = true;\n }\n });\n isHasIndicator && rowKey.push(indicator);\n flatRowKey = rowKey.join(this.stringJoinChar);\n }\n\n if (typeof colKey === 'string') {\n flatColKey = colKey;\n } else {\n //考虑 指标key有可能在数组中间位置或者前面的可能 将其删除再添加到尾部\n let isHasIndicator = false;\n colKey.map((key, i) => {\n if (key === indicator) {\n colKey.splice(i, 1);\n isHasIndicator = true;\n }\n });\n isHasIndicator && colKey.push(indicator);\n flatColKey = colKey.join(this.stringJoinChar);\n }\n\n if (this.changedTree[flatRowKey]) {\n this.changedTree[flatRowKey][flatColKey] = newValue;\n } else {\n this.changedTree[flatRowKey] = {};\n this.changedTree[flatRowKey][flatColKey] = newValue;\n }\n }\n addRecords(records: any[]) {\n for (let i = 0, len = records.length; i < len; i++) {\n const record = records[i];\n this.processRecord(record);\n }\n this.records.push(records);\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/dataset/flatDataToObject.ts"],"names":[],"mappings":"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","file":"flatDataToObject.js","sourcesContent":["import { isValid } from '@visactor/vutils';\nimport { Env } from '../tools/env';\n\n// if (Env.mode === 'node') {\n// // eslint-disable-next-line no-global-assign\n// window = {\n// performance: {\n// now: () => -1,\n// },\n// } as any;\n// }\n/**\n * 针对聚合好的flat数据转为便于查询的行列树对象,每一个显示的指标值都能从一条数据记录中获得\n */\nexport class FlatDataToObjects {\n /**\n * 用户配置\n */\n dataConfig: {\n rows: string[]; //行维度字段数组;\n columns: string[]; //列维度字段数组;\n indicators: string[]; //具体展示指标;\n indicatorsAsCol: boolean;\n indicatorDimensionKey: string | number;\n };\n /**\n * 明细数据\n */\n records: any[];\n /**\n * 树形节点,最后的子节点对应到body部分的每个单元格 树结构: 行-列-单元格\n */\n tree: Record<string, Record<string, Record<string, any>>> = {};\n changedTree: Record<string, Record<string, Record<string, any>>> = {};\n private colFlatKeys = {};\n private rowFlatKeys = {};\n\n // //列表头的每列对应的表头键值\n // colKeys: string[][] = [];\n // //行表头的每行对应的表头键值\n // rowKeys: string[][] = [];\n // /**\n // * 对应dataset中的rowKeys,行表头的每行表头键值,包含小计总计\n // */\n // rowKeysPath: string[][];\n // /**\n // * 对应dataset中的colKeys,列表头的每列表头键值,包含小计总计\n // */\n // colKeysPath: string[][];\n\n stringJoinChar = String.fromCharCode(0);\n //缓存rows对应每个值是否为汇总字段\n private rowsIsTotal: boolean[] = [];\n private colsIsTotal: boolean[] = [];\n private colGrandTotalLabel: string;\n private colSubTotalLabel: string;\n private rowGrandTotalLabel: string;\n private rowSubTotalLabel: string;\n constructor(\n dataConfig: {\n rows: string[]; //行维度字段数组;\n columns: string[]; //列维度字段数组;\n indicators: string[]; //具体展示指标;\n indicatorsAsCol: boolean;\n indicatorDimensionKey: string | number;\n },\n records?: any[]\n ) {\n this.dataConfig = dataConfig;\n // this.allTotal = new SumAggregator(this.dataConfig.indicators[0]);\n\n if (records) {\n //处理数据\n this.records = records;\n const t0 = typeof window !== 'undefined' ? window.performance.now() : 0;\n this.setRecords(records);\n const t1 = typeof window !== 'undefined' ? window.performance.now() : 0;\n console.log('processRecords:', t1 - t0);\n }\n\n // delete this.rowFlatKeys;\n // delete this.colFlatKeys;\n }\n changeDataConfig(dataConfig: {\n rows: string[]; //行维度字段数组;\n columns: string[]; //列维度字段数组;\n indicators: string[]; //具体展示指标;\n indicatorsAsCol: boolean;\n indicatorDimensionKey: string | number;\n }) {\n this.dataConfig = dataConfig;\n }\n setRecords(records: any[]) {\n this.processRecords();\n }\n /**\n * 处理数据,遍历所有条目,过滤和派生字段的处理有待优化TODO\n */\n processRecords() {\n for (let i = 0, len = this.records.length; i < len; i++) {\n const record = this.records[i];\n this.processRecord(record);\n }\n }\n\n /**\n * 处理单条数据\n * @param record\n * @returns\n */\n processRecord(record: any) {\n const colKey: any[] = [];\n const rowKey: any[] = [];\n\n for (let l = 0, len1 = this.dataConfig.rows.length; l < len1; l++) {\n const rowAttr = this.dataConfig.rows[l];\n if (\n // record[rowAttr] !== null &&\n record[rowAttr] !== undefined &&\n rowAttr !== this.dataConfig.indicatorDimensionKey\n ) {\n rowKey.push(record[rowAttr]);\n }\n }\n for (let n = 0, len2 = this.dataConfig.columns.length; n < len2; n++) {\n const colAttr = this.dataConfig.columns[n];\n if (\n // record[colAttr] !== null &&\n record[colAttr] !== undefined &&\n colAttr !== this.dataConfig.indicatorDimensionKey\n ) {\n colKey.push(record[colAttr]);\n }\n }\n\n this.dataConfig.indicators?.forEach((indicatorKey: string | number) => {\n const recordValue: string | number = record[indicatorKey];\n // const indicatorName = this.dataConfig.indicators[indicatorKey];\n if (recordValue !== undefined) {\n if (this.dataConfig.indicatorsAsCol) {\n colKey.push(indicatorKey);\n } else {\n rowKey.push(indicatorKey);\n }\n }\n\n // record[indicatorKey] && (recordValue = record[indicatorKey]);\n\n // this.allTotal.push(record);\n\n const flatRowKey = rowKey.join(this.stringJoinChar);\n const flatColKey = colKey.join(this.stringJoinChar);\n\n if (rowKey.length !== 0) {\n if (!this.rowFlatKeys[flatRowKey]) {\n this.rowFlatKeys[flatRowKey] = 1;\n }\n }\n if (colKey.length !== 0) {\n if (!this.colFlatKeys[flatColKey]) {\n this.colFlatKeys[flatColKey] = 1;\n }\n }\n\n if (colKey.length !== 0 || rowKey.length !== 0) {\n if (!this.tree[flatRowKey]) {\n this.tree[flatRowKey] = {};\n }\n if (recordValue !== undefined) {\n this.tree[flatRowKey][flatColKey] = { value: recordValue, record };\n if (this.dataConfig.indicatorsAsCol) {\n colKey.pop();\n } else {\n rowKey.pop();\n }\n }\n }\n });\n }\n\n getTreeNode(\n rowKey: string[] | string = [],\n colKey: string[] | string = [],\n indicator: string,\n considerChangedValue: boolean = true\n ): Record<string, any> {\n let flatRowKey;\n let flatColKey;\n if (typeof rowKey === 'string') {\n flatRowKey = rowKey;\n } else {\n //考虑 指标key有可能在数组中间位置或者前面的可能 将其删除再添加到尾部\n let isHasIndicator = false;\n rowKey.map((key, i) => {\n if (key === indicator) {\n rowKey.splice(i, 1);\n isHasIndicator = true;\n }\n });\n isHasIndicator && rowKey.push(indicator);\n flatRowKey = rowKey.join(this.stringJoinChar);\n }\n\n if (typeof colKey === 'string') {\n flatColKey = colKey;\n } else {\n //考虑 指标key有可能在数组中间位置或者前面的可能 将其删除再添加到尾部\n let isHasIndicator = false;\n colKey.map((key, i) => {\n if (key === indicator) {\n colKey.splice(i, 1);\n isHasIndicator = true;\n }\n });\n isHasIndicator && colKey.push(indicator);\n flatColKey = colKey.join(this.stringJoinChar);\n }\n if (considerChangedValue && isValid(this.changedTree[flatRowKey]?.[flatColKey])) {\n return { value: this.changedTree[flatRowKey][flatColKey], record: this.tree?.[flatRowKey]?.[flatColKey]?.record };\n }\n return this.tree?.[flatRowKey]?.[flatColKey] ?? undefined;\n }\n\n changeTreeNodeValue(\n rowKey: string[] | string = [],\n colKey: string[] | string = [],\n indicator: string,\n newValue: any\n ) {\n let flatRowKey;\n let flatColKey;\n if (typeof rowKey === 'string') {\n flatRowKey = rowKey;\n } else {\n //考虑 指标key有可能在数组中间位置或者前面的可能 将其删除再添加到尾部\n let isHasIndicator = false;\n rowKey.map((key, i) => {\n if (key === indicator) {\n rowKey.splice(i, 1);\n isHasIndicator = true;\n }\n });\n isHasIndicator && rowKey.push(indicator);\n flatRowKey = rowKey.join(this.stringJoinChar);\n }\n\n if (typeof colKey === 'string') {\n flatColKey = colKey;\n } else {\n //考虑 指标key有可能在数组中间位置或者前面的可能 将其删除再添加到尾部\n let isHasIndicator = false;\n colKey.map((key, i) => {\n if (key === indicator) {\n colKey.splice(i, 1);\n isHasIndicator = true;\n }\n });\n isHasIndicator && colKey.push(indicator);\n flatColKey = colKey.join(this.stringJoinChar);\n }\n\n if (this.changedTree[flatRowKey]) {\n this.changedTree[flatRowKey][flatColKey] = newValue;\n } else {\n this.changedTree[flatRowKey] = {};\n this.changedTree[flatRowKey][flatColKey] = newValue;\n }\n }\n addRecords(records: any[]) {\n for (let i = 0, len = records.length; i < len; i++) {\n const record = records[i];\n this.processRecord(record);\n }\n this.records.push(records);\n }\n}\n"]}
package/cjs/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.24.0";
19
+ export declare const version = "0.24.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/cjs/index.js CHANGED
@@ -142,6 +142,6 @@ Object.defineProperty(exports, "getDataCellPath", {
142
142
  get: function() {
143
143
  return get_data_path_1.getDataCellPath;
144
144
  }
145
- }), __exportStar(require("./render/jsx"), exports), exports.version = "0.24.0",
145
+ }), __exportStar(require("./render/jsx"), exports), exports.version = "0.24.1",
146
146
  exports.getIcons = getIcons, exports.clearGlobal = clearGlobal, TYPES.AggregationType;
147
147
  //# sourceMappingURL=index.js.map
package/cjs/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,uCAA4D;AA8F1D,4FA9FO,qBAAW,OA8FP;AA7Fb,IAAA,4BAAkB,GAAE,CAAC;AAErB,kDAAoC;AAqDlC,sBAAK;AApDP,6CAA+B;AAqD7B,oBAAI;AApDN,6CAA+B;AA4E7B,oBAAI;AA3EN,+CAAiC;AACjC,qDAAuC;AA+ErC,4BAAQ;AA9EV,iDAAmC;AAwEjC,wBAAM;AAvER,yEAA2D;AAiFzD,wCAAc;AA3DhB,2CAAwC;AA2BtC,0FA3BO,qBAAS,OA2BP;AA1BX,6CAA0C;AA4BxC,2FA5BO,uBAAU,OA4BP;AA3BZ,6CAA0C;AA8BxC,2FA9BO,uBAAU,OA8BP;AA5BZ,8DAAgD;AAwD9C,oCAAY;AAtDd,wEAAoE;AAuDlE,2FAvDO,wBAAU,OAuDP;AAtDZ,gGAAqF;AAuDnF,4FAvDO,iCAAW,OAuDP;AAtDb,kEAA+F;AAyD7F,mGAzDO,iCAAkB,OAyDP;AADlB,yGAxD2B,uCAAwB,OAwD3B;AAnD1B,uDAAwD;AAA/C,gHAAA,eAAe,OAAA;AACxB,+CAA6B;AAEhB,QAAA,OAAO,GAAG,QAAQ,CAAC;AAqDhC,SAAS,QAAQ;IAGf,OAAO,KAAK,CAAC,GAAG,EAAE,CAAC;AACrB,CAAC;AArBC,4BAAQ;AAuBV,SAAS,WAAW;IAClB,QAAQ,CAAC,QAAQ,EAAE,CAAC;AAGtB,CAAC;AA1BC,kCAAW;AA2Bb,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.24.0\";\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,uCAA4D;AA8F1D,4FA9FO,qBAAW,OA8FP;AA7Fb,IAAA,4BAAkB,GAAE,CAAC;AAErB,kDAAoC;AAqDlC,sBAAK;AApDP,6CAA+B;AAqD7B,oBAAI;AApDN,6CAA+B;AA4E7B,oBAAI;AA3EN,+CAAiC;AACjC,qDAAuC;AA+ErC,4BAAQ;AA9EV,iDAAmC;AAwEjC,wBAAM;AAvER,yEAA2D;AAiFzD,wCAAc;AA3DhB,2CAAwC;AA2BtC,0FA3BO,qBAAS,OA2BP;AA1BX,6CAA0C;AA4BxC,2FA5BO,uBAAU,OA4BP;AA3BZ,6CAA0C;AA8BxC,2FA9BO,uBAAU,OA8BP;AA5BZ,8DAAgD;AAwD9C,oCAAY;AAtDd,wEAAoE;AAuDlE,2FAvDO,wBAAU,OAuDP;AAtDZ,gGAAqF;AAuDnF,4FAvDO,iCAAW,OAuDP;AAtDb,kEAA+F;AAyD7F,mGAzDO,iCAAkB,OAyDP;AADlB,yGAxD2B,uCAAwB,OAwD3B;AAnD1B,uDAAwD;AAA/C,gHAAA,eAAe,OAAA;AACxB,+CAA6B;AAEhB,QAAA,OAAO,GAAG,QAAQ,CAAC;AAqDhC,SAAS,QAAQ;IAGf,OAAO,KAAK,CAAC,GAAG,EAAE,CAAC;AACrB,CAAC;AArBC,4BAAQ;AAuBV,SAAS,WAAW;IAClB,QAAQ,CAAC,QAAQ,EAAE,CAAC;AAGtB,CAAC;AA1BC,kCAAW;AA2Bb,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.24.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"]}
@@ -77,8 +77,7 @@ class PivotHeaderLayoutMap {
77
77
  extensionRow.rows.forEach((row => {
78
78
  "string" == typeof row ? rowKeys.push(row) : rowKeys.push(row.dimensionKey);
79
79
  })), this._extensionRowDimensionKeys.push(rowKeys), this.fullRowDimensionKeys = this.fullRowDimensionKeys.concat(rowKeys);
80
- }))), this.rowsDefine.length > this.fullRowDimensionKeys.length) for (let i = this.fullRowDimensionKeys.length; i <= this.rowsDefine.length - 1; i++) this.fullRowDimensionKeys.push("string" == typeof this.rowsDefine[i] ? this.rowsDefine[i] : this.rowsDefine[i].dimensionKey);
81
- if (this.sharedVar.seqId = Math.max(this.sharedVar.seqId, this._headerObjects.length),
80
+ }))), this.sharedVar.seqId = Math.max(this.sharedVar.seqId, this._headerObjects.length),
82
81
  "column" === this.cornerSetting.titleOnDimension) this.cornerHeaderObjs = this._addCornerHeaders(this.columnHeaderTitle ? [ "" ].concat(this.colDimensionKeys) : this.colDimensionKeys, this.columnsDefine); else if ("row" === this.cornerSetting.titleOnDimension) if ("tree" === this.rowHierarchyType && (null === (_s = this.extensionRows) || void 0 === _s ? void 0 : _s.length) >= 1) {
83
82
  const rowTreeFirstKey = [];
84
83
  rowTreeFirstKey.push(this.rowDimensionKeys[0]), this._extensionRowDimensionKeys.forEach((extensionRowKeys => {
@@ -312,7 +311,7 @@ class PivotHeaderLayoutMap {
312
311
  maxWidth: dimension.maxWidth
313
312
  });
314
313
  }));
315
- if (this.indicatorsAsCol) for (let i = this.rowHeaderLevelCount; i < this.colCount; i++) {
314
+ if (this.indicatorsAsCol) for (let i = this.rowHeaderLevelCount + this.leftRowSeriesNumberColumnCount; i < this.colCount; i++) {
316
315
  const cellDefine = this.getBody(i, this.columnHeaderLevelCount);
317
316
  returnWidths[i] = {
318
317
  width: null == cellDefine ? void 0 : cellDefine.width,
@@ -322,14 +321,15 @@ class PivotHeaderLayoutMap {
322
321
  } else {
323
322
  let maxWidth, minWidth, isAuto, width = 0;
324
323
  null === (_c = this._indicators) || void 0 === _c || _c.forEach(((obj, index) => {
324
+ var _a, _b;
325
325
  "number" == typeof obj.width ? width = Math.max(obj.width, width) : "auto" === obj.width && (isAuto = !0),
326
- "number" == typeof obj.minWidth && (minWidth = Math.max(obj.minWidth, minWidth)),
327
- "number" == typeof obj.maxWidth && (maxWidth = Math.max(obj.maxWidth, maxWidth));
326
+ "number" == typeof obj.minWidth && (minWidth = Math.max(obj.minWidth, null !== (_a = minWidth) && void 0 !== _a ? _a : 0)),
327
+ "number" == typeof obj.maxWidth && (maxWidth = Math.min(obj.maxWidth, null !== (_b = maxWidth) && void 0 !== _b ? _b : Number.MAX_VALUE));
328
328
  })), width = width > 0 ? width : isAuto ? "auto" : void 0, returnWidths.fill({
329
329
  width: width,
330
330
  minWidth: minWidth,
331
331
  maxWidth: maxWidth
332
- }, this.rowHeaderLevelCount, this.colCount - this.rightFrozenColCount);
332
+ }, this.rowHeaderLevelCount + this.leftRowSeriesNumberColumnCount, this.colCount - this.rightFrozenColCount);
333
333
  }
334
334
  this._columnWidths = returnWidths;
335
335
  }
@@ -808,6 +808,8 @@ class PivotHeaderLayoutMap {
808
808
  }))), hd = this.getHeader(col, row);
809
809
  if (hd.define.hierarchyState = hd.define.hierarchyState === ts_types_1.HierarchyState.collapse ? ts_types_1.HierarchyState.expand : ts_types_1.HierarchyState.collapse,
810
810
  this.rowDimensionTree.reset(this.rowDimensionTree.tree.children, !0), this._rowHeaderCellIds_FULL = [],
811
+ this.rowDimensionKeys = this.rowDimensionTree.dimensionKeys.valueArr(), this.fullRowDimensionKeys = [],
812
+ this.fullRowDimensionKeys = this.fullRowDimensionKeys.concat(this.rowDimensionKeys),
811
813
  this._addHeadersForTreeMode(this._rowHeaderCellIds_FULL, 0, this.rowDimensionTree.tree.children, [], this.rowDimensionTree.totalLevel, !0, this.rowsDefine, this.rowHeaderObjs),
812
814
  this.rowHeaderTitle) {
813
815
  const id = ++this.sharedVar.seqId, firstColIds = Array(this.rowCount - this.columnHeaderLevelCount).fill(id);