@visactor/vtable 1.2.1-alpha.2 → 1.3.0

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 (145) hide show
  1. package/cjs/ListTable.js +2 -1
  2. package/cjs/ListTable.js.map +1 -1
  3. package/cjs/PivotChart.d.ts +1 -5
  4. package/cjs/PivotChart.js +7 -30
  5. package/cjs/PivotChart.js.map +1 -1
  6. package/cjs/PivotTable.d.ts +7 -2
  7. package/cjs/PivotTable.js +85 -17
  8. package/cjs/PivotTable.js.map +1 -1
  9. package/cjs/body-helper/style/Style.d.ts +3 -0
  10. package/cjs/body-helper/style/Style.js +32 -25
  11. package/cjs/body-helper/style/Style.js.map +1 -1
  12. package/cjs/components/tooltip/TooltipHandler.js +4 -2
  13. package/cjs/components/tooltip/TooltipHandler.js.map +1 -1
  14. package/cjs/components/tooltip/logic/BubbleTooltipElement.d.ts +2 -0
  15. package/cjs/components/tooltip/logic/BubbleTooltipElement.js +18 -4
  16. package/cjs/components/tooltip/logic/BubbleTooltipElement.js.map +1 -1
  17. package/cjs/components/tooltip/logic/BubbleTooltipElementStyle.js +1 -1
  18. package/cjs/components/tooltip/logic/BubbleTooltipElementStyle.js.map +1 -1
  19. package/cjs/core/BaseTable.d.ts +1 -1
  20. package/cjs/core/BaseTable.js +7 -7
  21. package/cjs/core/BaseTable.js.map +1 -1
  22. package/cjs/core/tableHelper.js +2 -1
  23. package/cjs/core/tableHelper.js.map +1 -1
  24. package/cjs/event/listener/container-dom.js +9 -6
  25. package/cjs/event/listener/container-dom.js.map +1 -1
  26. package/cjs/event/listener/table-group.js +8 -7
  27. package/cjs/event/listener/table-group.js.map +1 -1
  28. package/cjs/header-helper/header-helper.d.ts +1 -0
  29. package/cjs/header-helper/header-helper.js +12 -2
  30. package/cjs/header-helper/header-helper.js.map +1 -1
  31. package/cjs/header-helper/style/Style.d.ts +3 -0
  32. package/cjs/header-helper/style/Style.js +34 -27
  33. package/cjs/header-helper/style/Style.js.map +1 -1
  34. package/cjs/index.d.ts +1 -1
  35. package/cjs/index.js +2 -2
  36. package/cjs/index.js.map +1 -1
  37. package/cjs/layout/pivot-header-layout.js +26 -8
  38. package/cjs/layout/pivot-header-layout.js.map +1 -1
  39. package/cjs/layout/tree-helper.js +4 -1
  40. package/cjs/layout/tree-helper.js.map +1 -1
  41. package/cjs/scenegraph/icon/icon-update.js +1 -0
  42. package/cjs/scenegraph/icon/icon-update.js.map +1 -1
  43. package/cjs/scenegraph/utils/text-icon-layout.js +1 -1
  44. package/cjs/scenegraph/utils/text-icon-layout.js.map +1 -1
  45. package/cjs/state/select/update-position.js +1 -1
  46. package/cjs/state/select/update-position.js.map +1 -1
  47. package/cjs/state/state.js +7 -5
  48. package/cjs/state/state.js.map +1 -1
  49. package/cjs/themes/theme.js +3 -0
  50. package/cjs/themes/theme.js.map +1 -1
  51. package/cjs/ts-types/base-table.d.ts +3 -1
  52. package/cjs/ts-types/base-table.js.map +1 -1
  53. package/cjs/ts-types/column/style.d.ts +1 -0
  54. package/cjs/ts-types/column/style.js.map +1 -1
  55. package/cjs/ts-types/common.d.ts +4 -13
  56. package/cjs/ts-types/common.js.map +1 -1
  57. package/cjs/ts-types/icon.d.ts +1 -0
  58. package/cjs/ts-types/icon.js.map +1 -1
  59. package/cjs/ts-types/list-table/layout-map/api.d.ts +2 -1
  60. package/cjs/ts-types/list-table/layout-map/api.js.map +1 -1
  61. package/cjs/ts-types/pivot-table/dimension/basic-dimension.d.ts +3 -1
  62. package/cjs/ts-types/pivot-table/dimension/basic-dimension.js.map +1 -1
  63. package/cjs/ts-types/pivot-table/indicator/basic-indicator.d.ts +1 -0
  64. package/cjs/ts-types/pivot-table/indicator/basic-indicator.js.map +1 -1
  65. package/cjs/ts-types/style-define.d.ts +1 -0
  66. package/cjs/ts-types/style-define.js.map +1 -1
  67. package/cjs/ts-types/table-engine.d.ts +4 -1
  68. package/cjs/ts-types/table-engine.js.map +1 -1
  69. package/cjs/ts-types/tooltip.d.ts +1 -0
  70. package/cjs/ts-types/tooltip.js.map +1 -1
  71. package/cjs/vrender.js.map +1 -1
  72. package/dist/vtable.js +354 -91
  73. package/dist/vtable.min.js +2 -2
  74. package/es/ListTable.js +2 -1
  75. package/es/ListTable.js.map +1 -1
  76. package/es/PivotChart.d.ts +1 -5
  77. package/es/PivotChart.js +6 -31
  78. package/es/PivotChart.js.map +1 -1
  79. package/es/PivotTable.d.ts +7 -2
  80. package/es/PivotTable.js +87 -19
  81. package/es/PivotTable.js.map +1 -1
  82. package/es/body-helper/style/Style.d.ts +3 -0
  83. package/es/body-helper/style/Style.js +32 -25
  84. package/es/body-helper/style/Style.js.map +1 -1
  85. package/es/components/tooltip/TooltipHandler.js +4 -2
  86. package/es/components/tooltip/TooltipHandler.js.map +1 -1
  87. package/es/components/tooltip/logic/BubbleTooltipElement.d.ts +2 -0
  88. package/es/components/tooltip/logic/BubbleTooltipElement.js +18 -4
  89. package/es/components/tooltip/logic/BubbleTooltipElement.js.map +1 -1
  90. package/es/components/tooltip/logic/BubbleTooltipElementStyle.js +1 -1
  91. package/es/components/tooltip/logic/BubbleTooltipElementStyle.js.map +1 -1
  92. package/es/core/BaseTable.d.ts +1 -1
  93. package/es/core/BaseTable.js +7 -7
  94. package/es/core/BaseTable.js.map +1 -1
  95. package/es/core/tableHelper.js +2 -1
  96. package/es/core/tableHelper.js.map +1 -1
  97. package/es/event/listener/container-dom.js +9 -6
  98. package/es/event/listener/container-dom.js.map +1 -1
  99. package/es/event/listener/table-group.js +8 -7
  100. package/es/event/listener/table-group.js.map +1 -1
  101. package/es/header-helper/header-helper.d.ts +1 -0
  102. package/es/header-helper/header-helper.js +12 -2
  103. package/es/header-helper/header-helper.js.map +1 -1
  104. package/es/header-helper/style/Style.d.ts +3 -0
  105. package/es/header-helper/style/Style.js +34 -27
  106. package/es/header-helper/style/Style.js.map +1 -1
  107. package/es/index.d.ts +1 -1
  108. package/es/index.js +1 -1
  109. package/es/index.js.map +1 -1
  110. package/es/layout/pivot-header-layout.js +26 -8
  111. package/es/layout/pivot-header-layout.js.map +1 -1
  112. package/es/layout/tree-helper.js +4 -1
  113. package/es/layout/tree-helper.js.map +1 -1
  114. package/es/scenegraph/icon/icon-update.js +1 -0
  115. package/es/scenegraph/icon/icon-update.js.map +1 -1
  116. package/es/scenegraph/utils/text-icon-layout.js +1 -1
  117. package/es/scenegraph/utils/text-icon-layout.js.map +1 -1
  118. package/es/state/select/update-position.js +1 -1
  119. package/es/state/select/update-position.js.map +1 -1
  120. package/es/state/state.js +7 -5
  121. package/es/state/state.js.map +1 -1
  122. package/es/themes/theme.js +3 -0
  123. package/es/themes/theme.js.map +1 -1
  124. package/es/ts-types/base-table.d.ts +3 -1
  125. package/es/ts-types/base-table.js.map +1 -1
  126. package/es/ts-types/column/style.d.ts +1 -0
  127. package/es/ts-types/column/style.js.map +1 -1
  128. package/es/ts-types/common.d.ts +4 -13
  129. package/es/ts-types/common.js.map +1 -1
  130. package/es/ts-types/icon.d.ts +1 -0
  131. package/es/ts-types/icon.js.map +1 -1
  132. package/es/ts-types/list-table/layout-map/api.d.ts +2 -1
  133. package/es/ts-types/list-table/layout-map/api.js.map +1 -1
  134. package/es/ts-types/pivot-table/dimension/basic-dimension.d.ts +3 -1
  135. package/es/ts-types/pivot-table/dimension/basic-dimension.js.map +1 -1
  136. package/es/ts-types/pivot-table/indicator/basic-indicator.d.ts +1 -0
  137. package/es/ts-types/pivot-table/indicator/basic-indicator.js.map +1 -1
  138. package/es/ts-types/style-define.d.ts +1 -0
  139. package/es/ts-types/style-define.js.map +1 -1
  140. package/es/ts-types/table-engine.d.ts +4 -1
  141. package/es/ts-types/table-engine.js.map +1 -1
  142. package/es/ts-types/tooltip.d.ts +1 -0
  143. package/es/ts-types/tooltip.js.map +1 -1
  144. package/es/vrender.js.map +1 -1
  145. package/package.json +5 -5
@@ -156,7 +156,9 @@ function dealHeader(hd, _headerCellIds, results, roots, row, layoutMap) {
156
156
  style: "function" == typeof (null === (_f = null != indicatorInfo ? indicatorInfo : dimensionInfo) || void 0 === _f ? void 0 : _f.headerStyle) ? null === (_g = null != indicatorInfo ? indicatorInfo : dimensionInfo) || void 0 === _g ? void 0 : _g.headerStyle : Object.assign({}, null === (_h = null != indicatorInfo ? indicatorInfo : dimensionInfo) || void 0 === _h ? void 0 : _h.headerStyle),
157
157
  headerType: null !== (_k = null !== (_j = null == indicatorInfo ? void 0 : indicatorInfo.headerType) && void 0 !== _j ? _j : null == dimensionInfo ? void 0 : dimensionInfo.headerType) && void 0 !== _k ? _k : "text",
158
158
  headerIcon: null !== (_l = null == indicatorInfo ? void 0 : indicatorInfo.headerIcon) && void 0 !== _l ? _l : null == dimensionInfo ? void 0 : dimensionInfo.headerIcon,
159
- define: Object.assign({}, hd, null != indicatorInfo ? indicatorInfo : dimensionInfo),
159
+ define: Object.assign({}, hd, null != indicatorInfo ? indicatorInfo : Object.assign({}, dimensionInfo, {
160
+ sort: void 0
161
+ })),
160
162
  fieldFormat: null !== (_m = null == indicatorInfo ? void 0 : indicatorInfo.headerFormat) && void 0 !== _m ? _m : null == dimensionInfo ? void 0 : dimensionInfo.headerFormat,
161
163
  dropDownMenu: null !== (_o = null == indicatorInfo ? void 0 : indicatorInfo.dropDownMenu) && void 0 !== _o ? _o : null == dimensionInfo ? void 0 : dimensionInfo.dropDownMenu,
162
164
  pivotInfo: {
@@ -168,6 +170,7 @@ function dealHeader(hd, _headerCellIds, results, roots, row, layoutMap) {
168
170
  minWidth: null == dimensionInfo ? void 0 : dimensionInfo.minWidth,
169
171
  maxWidth: null == dimensionInfo ? void 0 : dimensionInfo.maxWidth,
170
172
  showSort: null !== (_p = null == indicatorInfo ? void 0 : indicatorInfo.showSort) && void 0 !== _p ? _p : null == dimensionInfo ? void 0 : dimensionInfo.showSort,
173
+ sort: null == indicatorInfo ? void 0 : indicatorInfo.sort,
171
174
  description: null == dimensionInfo ? void 0 : dimensionInfo.description
172
175
  };
173
176
  indicatorInfo ? (indicatorInfo.customRender && (hd.customRender = indicatorInfo.customRender),
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/layout/tree-helper.ts"],"names":[],"mappings":"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","file":"tree-helper.js","sourcesContent":["import { cloneDeep, isValid } from '@visactor/vutils';\nimport { NumberMap } from '../tools/NumberMap';\nimport { IndicatorDimensionKeyPlaceholder } from '../tools/global';\nimport type { Either } from '../tools/helper';\nimport type {\n CellInfo,\n ColumnIconOption,\n FieldData,\n HeaderData,\n ICustomRender,\n IDimension,\n IHeaderTreeDefine,\n IIndicator,\n IRowDimension,\n LayoutObjectId\n} from '../ts-types';\nimport { HierarchyState } from '../ts-types';\nimport type { PivotHeaderLayoutMap } from './pivot-header-layout';\nimport type { ILinkDimension } from '../ts-types/pivot-table/dimension/link-dimension';\nimport type { IImageDimension } from '../ts-types/pivot-table/dimension/image-dimension';\n// import { sharedVar } from './pivot-header-layout';\n\ninterface ITreeLayoutBaseHeadNode {\n id: number;\n // dimensionKey: string;\n // // title: string;\n // indicatorKey?: string;\n value: string;\n children: ITreeLayoutHeadNode[] | undefined;\n columns?: any; //兼容ListTable情况 simple-header-layout中增加了columnTree\n level: number;\n /** 节点跨占层数 如汇总节点跨几层维度 */\n levelSpan: number;\n startIndex: number;\n size: number; //对应到colSpan或者rowSpan\n // parsing?: 'img' | 'link' | 'video' | 'templateLink';\n startInTotal: number;\n // headerStyle:HeaderStyleOption| null;\n customRender?: ICustomRender;\n\n hierarchyState: HierarchyState;\n headerIcon?: (string | ColumnIconOption)[] | ((args: CellInfo) => (string | ColumnIconOption)[]);\n}\n\ninterface ITreeLayoutDimensionHeadNode extends ITreeLayoutBaseHeadNode {\n dimensionKey: string;\n virtual?: boolean;\n}\ninterface ITreeLayoutIndicatorHeadNode extends ITreeLayoutBaseHeadNode {\n indicatorKey: string;\n}\nexport type ITreeLayoutHeadNode = Either<ITreeLayoutDimensionHeadNode, ITreeLayoutIndicatorHeadNode>;\nexport class DimensionTree {\n sharedVar: { seqId: number };\n // 每一个值对应的序号 结果缓存\n // cache: {\n // [propName: string]: any;\n // };\n //树形展示 会将非叶子节点单独展示一行 所以size会增加非叶子节点的个数\n sizeIncludeParent = false;\n rowExpandLevel: number;\n hierarchyType: 'grid' | 'tree';\n tree: ITreeLayoutHeadNode = {\n id: 0,\n dimensionKey: '',\n // title: '',\n value: '',\n children: [],\n level: -1,\n levelSpan: 1,\n startIndex: 0,\n size: 0,\n startInTotal: 0,\n hierarchyState: undefined\n };\n\n totalLevel = 0;\n\n // blockLevel: number = 0;\n\n // blockStartIndexMap: Map<number, boolean> = new Map();\n // blockEndIndexMap: Map<number, boolean> = new Map();\n dimensionKeys: NumberMap<string> = new NumberMap<string>();\n dimensionKeysIncludeVirtual: NumberMap<string> = new NumberMap<string>();\n // dimensions: IDimension[] | undefined;//目前用不到这个\n cache: Map<number, any> = new Map();\n constructor(\n tree: ITreeLayoutHeadNode[],\n sharedVar: { seqId: number },\n hierarchyType: 'grid' | 'tree' = 'grid',\n rowExpandLevel: number = undefined\n ) {\n this.sizeIncludeParent = rowExpandLevel !== null && rowExpandLevel !== undefined;\n this.rowExpandLevel = rowExpandLevel;\n this.hierarchyType = hierarchyType;\n this.sharedVar = sharedVar;\n this.reset(tree);\n }\n\n reset(tree: ITreeLayoutHeadNode[], updateTreeNode = false) {\n // 清空缓存的计算\n // this.cache = {};\n // this.dimensions = dimensions;\n this.cache.clear();\n this.dimensionKeys = new NumberMap<string>();\n this.dimensionKeysIncludeVirtual = new NumberMap<string>();\n this.tree.children = tree as ITreeLayoutHeadNode[];\n // const re = { totalLevel: 0 };\n // if (updateTreeNode) this.updateTreeNode(this.tree, 0, re, this.tree);\n // else\n this.setTreeNode(this.tree, 0, this.tree);\n // this.totalLevel = this.dimensionKeys.count();\n }\n setTreeNode(node: ITreeLayoutHeadNode, startIndex: number, parent: ITreeLayoutHeadNode): number {\n node.startIndex = startIndex;\n node.startInTotal = (parent.startInTotal ?? 0) + node.startIndex;\n // if (node.dimensionKey) {\n // !this.dimensionKeys.contain(node.dimensionKey) &&\n // this.dimensionKeys.put(node.level, node.dimensionKey);\n // if (!node.id) node.id = ++seqId;\n // }\n if (node.dimensionKey ?? node.indicatorKey) {\n if (\n !node.virtual &&\n !this.dimensionKeys.contain(node.indicatorKey ? IndicatorDimensionKeyPlaceholder : node.dimensionKey)\n ) {\n this.dimensionKeys.put(node.level, node.indicatorKey ? IndicatorDimensionKeyPlaceholder : node.dimensionKey);\n }\n if (\n !this.dimensionKeysIncludeVirtual.contain(\n node.indicatorKey ? IndicatorDimensionKeyPlaceholder : node.dimensionKey\n )\n ) {\n this.dimensionKeysIncludeVirtual.put(\n node.level,\n node.indicatorKey ? IndicatorDimensionKeyPlaceholder : node.dimensionKey\n );\n }\n if (!node.id) {\n node.id = ++this.sharedVar.seqId;\n }\n }\n let size = node.dimensionKey ? (this.sizeIncludeParent ? 1 : 0) : 0;\n const children = node.children || node.columns;\n //平铺展示 分析所有层级\n if (this.hierarchyType === 'grid') {\n if (children?.length >= 1) {\n children.forEach((n: any) => {\n n.level = (node.level ?? 0) + 1;\n this.totalLevel = Math.max(this.totalLevel, n.level + 1);\n size += this.setTreeNode(n, size, node);\n });\n } else {\n size = 1;\n // re.totalLevel = Math.max(re.totalLevel, (node.level ?? -1) + 1);\n }\n } else if (node.hierarchyState === HierarchyState.expand && children?.length >= 1) {\n //树形展示 有子节点 且下一层需要展开\n children.forEach((n: any) => {\n n.level = (node.level ?? 0) + 1;\n this.totalLevel = Math.max(this.totalLevel, n.level + 1);\n size += this.setTreeNode(n, size, node);\n });\n } else if (node.hierarchyState === HierarchyState.collapse && children?.length >= 1) {\n //树形展示 有子节点 且下一层不需要展开\n children.forEach((n: any) => {\n n.level = (node.level ?? 0) + 1;\n this.totalLevel = Math.max(this.totalLevel, n.level + 1);\n this.setTreeNode(n, size, node);\n });\n } else if (\n !node.hierarchyState &&\n node.level + 1 < this.rowExpandLevel &&\n (children?.length >= 1 || children === true)\n ) {\n //树形展示 有子节点 且下一层需要展开\n node.hierarchyState = HierarchyState.expand;\n children?.length >= 1 &&\n children.forEach((n: any) => {\n n.level = (node.level ?? 0) + 1;\n this.totalLevel = Math.max(this.totalLevel, n.level + 1);\n size += this.setTreeNode(n, size, node);\n });\n } else if (children?.length >= 1 || children === true) {\n //树形展示 有子节点 且下一层不需要展开\n node.hierarchyState = HierarchyState.collapse;\n children?.length >= 1 &&\n children.forEach((n: any) => {\n n.level = (node.level ?? 0) + 1;\n this.totalLevel = Math.max(this.totalLevel, n.level + 1);\n this.setTreeNode(n, size, node);\n });\n } else {\n //树形展示 无children子节点。但不能确定是最后一层的叶子节点 totalLevel还不能确定是计算完整棵树的整体深度\n node.hierarchyState = HierarchyState.none;\n size = 1;\n // re.totalLevel = Math.max(re.totalLevel, (node.level ?? -1) + 1);\n }\n\n node.size = size;\n // startInTotal = parent.startIndex + prevStartIndex\n return size;\n }\n getTreePath(index: number, maxDeep = 30): Array<ITreeLayoutHeadNode> {\n const path: any[] = [];\n this.searchPath(index, this.tree, path, maxDeep);\n path.shift();\n return path;\n }\n\n getTreePathByCellIds(ids: LayoutObjectId[]): Array<ITreeLayoutHeadNode> {\n const path: any[] = [];\n let nodes = this.tree.children;\n for (let i = 0; i < ids.length; i++) {\n const id = ids[i];\n const pathNode = this.findNodeById(nodes, id);\n if (pathNode) {\n path.push(pathNode);\n nodes = pathNode.children;\n } else {\n break;\n }\n }\n // path.shift();\n return path;\n }\n findNodeById(nodes: ITreeLayoutHeadNode[], id: LayoutObjectId) {\n return nodes.find(node => {\n return node.id === id;\n });\n }\n searchPath(index: number, node: ITreeLayoutHeadNode, path: Array<ITreeLayoutHeadNode>, maxDeep: number) {\n if (!node) {\n return;\n }\n if (index < node.startIndex || index >= node.startIndex + node.size) {\n return;\n }\n path.push(node);\n if (!node.children || node.children.length === 0 || node.level >= maxDeep) {\n return;\n }\n\n // const cIndex = index - node.startIndex;\n // for (let i = 0; i < node.children.length; i++) {\n // const element = node.children[i];\n // if (cIndex >= element.startIndex && cIndex < element.startIndex + element.size) {\n // this.searchPath(cIndex, element, path, maxDeep);\n // break;\n // }\n // }\n\n // use dichotomy to optimize search performance\n const cIndex = index - node.startIndex;\n\n if (this.cache.has(node.level + 1)) {\n const cacheNode = this.cache.get(node.level + 1);\n if (cIndex >= cacheNode.startIndex && cIndex < cacheNode.startIndex + cacheNode.size) {\n this.searchPath(cIndex, cacheNode, path, maxDeep);\n return;\n }\n }\n\n let left = 0;\n let right = node.children.length - 1;\n\n while (left <= right) {\n const middle = Math.floor((left + right) / 2);\n const element = node.children[middle];\n\n if (cIndex >= element.startIndex && cIndex < element.startIndex + element.size) {\n this.cache.set(element.level, element);\n const deleteLevels: number[] = [];\n this.cache.forEach((node, key) => {\n if (key > element.level) {\n deleteLevels.push(key);\n }\n });\n deleteLevels.forEach(key => {\n this.cache.delete(key);\n });\n this.searchPath(cIndex, element, path, maxDeep);\n break;\n } else if (cIndex < element.startIndex) {\n right = middle - 1;\n } else {\n left = middle + 1;\n }\n }\n return;\n }\n /**\n * 将该树中 层级为level 的sourceIndex处的节点移动到targetIndex位置\n * @param level\n * @param sourceIndex\n * @param targetIndex\n */\n movePosition(level: number, sourceIndex: number, targetIndex: number) {\n // let sourceNode: IPivotLayoutHeadNode;\n let parNode: ITreeLayoutHeadNode;\n let sourceSubIndex: number;\n let targetSubIndex: number;\n /**\n * 对parNode的子节点第subIndex处的node节点 进行判断是否为sourceIndex或者targetIndex\n * 如果是 则记录下subIndex 以对parNode中个节点位置进行移位\n * @param node\n * @param subIndex\n * @returns\n */\n const findTargetNode = (node: ITreeLayoutHeadNode, subIndex: number) => {\n if (sourceSubIndex !== undefined && targetSubIndex !== undefined) {\n return;\n }\n if (node.level === level) {\n if (node.startInTotal === sourceIndex) {\n // sourceNode = node;\n sourceSubIndex = subIndex;\n }\n // if (node.startInTotal === targetIndex) targetSubIndex = subIndex;\n // 判断targetIndex是否在node的范围内 将当前node的subIndex记为targetSubIndex\n if (node.startInTotal <= targetIndex && targetIndex <= node.startInTotal + node.size - 1) {\n targetSubIndex = subIndex;\n }\n }\n const children = node.children || node.columns;\n if (children && node.level < level) {\n parNode = node;\n for (let i = 0; i < children.length; i++) {\n if (\n (sourceIndex >= children[i].startInTotal && sourceIndex <= children[i].startInTotal + children[i].size) ||\n (targetIndex >= children[i].startInTotal && targetIndex <= children[i].startInTotal + children[i].size)\n ) {\n findTargetNode(children[i], i);\n }\n }\n }\n };\n findTargetNode(this.tree, 0);\n\n //对parNode子节点位置进行移位【根据sourceSubIndex和targetSubIndex】\n const children = parNode.children || parNode.columns;\n const sourceColumns = children.splice(sourceSubIndex, 1);\n sourceColumns.unshift(targetSubIndex as any, 0 as any);\n Array.prototype.splice.apply(children, sourceColumns);\n }\n /** 获取纯净树结构 没有level size index这些属性 */\n getCopiedTree() {\n const children = cloneDeep(this.tree.children);\n clearNode(children);\n return children;\n }\n}\n\n//#region 为方法getLayoutRowTree提供的类型和工具方法\nexport type LayouTreeNode = {\n dimensionKey?: string;\n indicatorKey?: string;\n value: string;\n hierarchyState: HierarchyState;\n children?: LayouTreeNode[];\n};\n\nexport function generateLayoutTree(tree: LayouTreeNode[], children: ITreeLayoutHeadNode[]) {\n children?.forEach((node: ITreeLayoutHeadNode) => {\n const diemnsonNode: {\n dimensionKey?: string;\n indicatorKey?: string;\n value: string;\n virtual?: boolean;\n hierarchyState: HierarchyState;\n children: any;\n } = {\n dimensionKey: node.dimensionKey,\n indicatorKey: node.indicatorKey,\n value: node.value,\n hierarchyState: node.hierarchyState,\n children: undefined,\n virtual: node.virtual ?? false\n };\n tree.push(diemnsonNode);\n if (node.children) {\n diemnsonNode.children = [];\n generateLayoutTree(diemnsonNode.children, node.children);\n }\n });\n}\n//#endregion\n\n//#region 为方法getLayoutRowTreeCount提的工具方法\nexport function countLayoutTree(children: { children?: any }[], countParentNode: boolean) {\n let count = 0;\n children?.forEach((node: ITreeLayoutHeadNode) => {\n if (countParentNode) {\n count++;\n } else {\n if (!node.children || node.children.length === 0) {\n count++;\n }\n }\n if (node.children) {\n count += countLayoutTree(node.children, countParentNode);\n }\n });\n return count;\n}\n//#endregion\n\nexport function dealHeader(\n hd: ITreeLayoutHeadNode,\n _headerCellIds: number[][],\n results: HeaderData[],\n roots: number[],\n row: number,\n layoutMap: PivotHeaderLayoutMap\n) {\n // const col = this._columns.length;\n const id = hd.id;\n const dimensionInfo: IDimension =\n (layoutMap.rowsDefine?.find(dimension =>\n typeof dimension === 'string' ? false : dimension.dimensionKey === hd.dimensionKey\n ) as IDimension) ??\n (layoutMap.columnsDefine?.find(dimension =>\n typeof dimension === 'string' ? false : dimension.dimensionKey === hd.dimensionKey\n ) as IDimension);\n const indicatorInfo = layoutMap.indicatorsDefine?.find(indicator => {\n if (typeof indicator === 'string') {\n return false;\n }\n if (hd.indicatorKey) {\n return indicator.indicatorKey === hd.indicatorKey;\n }\n return indicator.title === hd.value;\n }) as IIndicator;\n const cell: HeaderData = {\n id,\n title: hd.value ?? indicatorInfo?.title,\n field: hd.dimensionKey,\n style:\n typeof (indicatorInfo ?? dimensionInfo)?.headerStyle === 'function'\n ? (indicatorInfo ?? dimensionInfo)?.headerStyle\n : Object.assign({}, (indicatorInfo ?? dimensionInfo)?.headerStyle),\n headerType: indicatorInfo?.headerType ?? dimensionInfo?.headerType ?? 'text',\n headerIcon: indicatorInfo?.headerIcon ?? dimensionInfo?.headerIcon,\n // define: <any>hd,\n define: Object.assign({}, <any>hd, indicatorInfo ?? dimensionInfo),\n fieldFormat: indicatorInfo?.headerFormat ?? dimensionInfo?.headerFormat,\n // iconPositionList:[]\n dropDownMenu: indicatorInfo?.dropDownMenu ?? dimensionInfo?.dropDownMenu,\n pivotInfo: {\n value: hd.value,\n dimensionKey: hd.dimensionKey,\n isPivotCorner: false\n // customInfo: dimensionInfo?.customInfo\n },\n width: (dimensionInfo as IRowDimension)?.width,\n minWidth: (dimensionInfo as IRowDimension)?.minWidth,\n maxWidth: (dimensionInfo as IRowDimension)?.maxWidth,\n showSort: indicatorInfo?.showSort ?? dimensionInfo?.showSort,\n description: dimensionInfo?.description\n };\n\n if (indicatorInfo) {\n //收集indicatorDimensionKey 提到了构造函数中\n // this.indicatorDimensionKey = dimensionInfo.dimensionKey;\n if (indicatorInfo.customRender) {\n hd.customRender = indicatorInfo.customRender;\n }\n if (!isValid(layoutMap._indicators?.find(indicator => indicator.indicatorKey === indicatorInfo.indicatorKey))) {\n layoutMap._indicators?.push({\n id: ++layoutMap.sharedVar.seqId,\n indicatorKey: indicatorInfo.indicatorKey,\n field: indicatorInfo.indicatorKey,\n fieldFormat: indicatorInfo?.format,\n cellType: indicatorInfo?.cellType ?? (indicatorInfo as any)?.columnType ?? 'text',\n chartModule: 'chartModule' in indicatorInfo ? indicatorInfo.chartModule : null,\n chartSpec: 'chartSpec' in indicatorInfo ? indicatorInfo.chartSpec : null,\n sparklineSpec: 'sparklineSpec' in indicatorInfo ? indicatorInfo.sparklineSpec : null,\n style: indicatorInfo?.style,\n icon: indicatorInfo?.icon,\n define: Object.assign({}, <any>hd, indicatorInfo, {\n dragHeader: dimensionInfo?.dragHeader\n }),\n width: indicatorInfo?.width,\n minWidth: indicatorInfo?.minWidth,\n maxWidth: indicatorInfo?.maxWidth,\n disableColumnResize: indicatorInfo?.disableColumnResize\n });\n }\n } else if (hd.indicatorKey) {\n //兼容当某个指标没有设置在dimension.indicators中\n if (!isValid(layoutMap._indicators?.find(indicator => indicator.indicatorKey === hd.indicatorKey))) {\n layoutMap._indicators?.push({\n id: ++layoutMap.sharedVar.seqId,\n indicatorKey: hd.indicatorKey,\n field: hd.indicatorKey,\n cellType: 'text',\n define: Object.assign({}, <any>hd)\n });\n }\n }\n // if (dimensionInfo.indicators) {\n // layoutMap.hideIndicatorName = dimensionInfo.hideIndicatorName ?? false;\n // layoutMap.indicatorsAsCol = dimensionInfo.indicatorsAsCol ?? true;\n // }\n results[id] = cell;\n layoutMap._headerObjects[id] = cell;\n _headerCellIds[row][layoutMap.colIndex] = id;\n for (let r = row - 1; r >= 0; r--) {\n _headerCellIds[r][layoutMap.colIndex] = roots[r];\n }\n\n // 处理汇总小计跨维度层级的情况\n if ((hd as any).levelSpan > 1) {\n for (let i = 1; i < (hd as any).levelSpan; i++) {\n if (!_headerCellIds[row + i]) {\n _headerCellIds[row + i] = [];\n }\n _headerCellIds[row + i][layoutMap.colIndex] = id;\n }\n }\n\n if ((hd as ITreeLayoutHeadNode).children?.length >= 1) {\n layoutMap._addHeaders(\n _headerCellIds,\n row + ((hd as any).levelSpan ?? 1),\n (hd as ITreeLayoutHeadNode).children ?? [],\n [...roots, ...Array((hd as any).levelSpan ?? 1).fill(id)],\n results\n );\n // .forEach(c => results.push(c));\n } else {\n // columns.push([\"\"])//代码一个路径\n for (let r = row + 1; r < _headerCellIds.length; r++) {\n _headerCellIds[r][layoutMap.colIndex] = id;\n\n // if ((hd as any).levelSpan > 1) {\n // for (let i = 1; i < (hd as any).levelSpan; i++) {\n // _headerCellIds[r + i][layoutMap.colIndex] = id;\n // }\n // }\n }\n layoutMap.colIndex++;\n }\n}\n\nexport function dealHeaderForTreeMode(\n hd: ITreeLayoutHeadNode,\n _headerCellIds: number[][],\n results: HeaderData[],\n roots: number[],\n row: number,\n totalLevel: number,\n show: boolean,\n dimensions: (IDimension | string)[],\n layoutMap: PivotHeaderLayoutMap\n) {\n const id = hd.id;\n // const dimensionInfo: IDimension =\n // (this.rowsDefine?.find(dimension =>\n // typeof dimension === 'string' ? false : dimension.dimensionKey === hd.dimensionKey\n // ) as IDimension) ??\n // (this.columnsDefine?.find(dimension =>\n // typeof dimension === 'string' ? false : dimension.dimensionKey === hd.dimensionKey\n // ) as IDimension);\n const dimensionInfo: IDimension = dimensions.find(dimension =>\n typeof dimension === 'string' ? false : dimension.dimensionKey === hd.dimensionKey\n ) as IDimension;\n\n const cell: HeaderData = {\n id,\n title: hd.value,\n field: hd.dimensionKey as FieldData,\n //如果不是整棵树的叶子节点,都靠左显示\n style:\n hd.level + 1 === totalLevel || typeof dimensionInfo?.headerStyle === 'function'\n ? dimensionInfo?.headerStyle\n : Object.assign({}, dimensionInfo?.headerStyle, { textAlign: 'left' }),\n headerType: dimensionInfo?.headerType ?? 'text',\n headerIcon: dimensionInfo?.headerIcon,\n define: Object.assign(<any>hd, {\n linkJump: (dimensionInfo as ILinkDimension)?.linkJump,\n linkDetect: (dimensionInfo as ILinkDimension)?.linkDetect,\n templateLink: (dimensionInfo as ILinkDimension)?.templateLink,\n\n // image相关 to be fixed\n keepAspectRatio: (dimensionInfo as IImageDimension)?.keepAspectRatio ?? false,\n imageAutoSizing: (dimensionInfo as IImageDimension)?.imageAutoSizing,\n\n headerCustomRender: dimensionInfo?.headerCustomRender,\n headerCustomLayout: dimensionInfo?.headerCustomLayout,\n dragHeader: dimensionInfo?.dragHeader,\n disableHeaderHover: !!dimensionInfo?.disableHeaderHover,\n disableHeaderSelect: !!dimensionInfo?.disableHeaderSelect\n }), //这里不能新建对象,要用hd保持引用关系\n fieldFormat: dimensionInfo?.headerFormat,\n // iconPositionList:[]\n dropDownMenu: dimensionInfo?.dropDownMenu,\n pivotInfo: {\n value: hd.value,\n dimensionKey: hd.dimensionKey as string,\n isPivotCorner: false\n // customInfo: dimensionInfo?.customInfo\n },\n hierarchyLevel: hd.level,\n dimensionTotalLevel: totalLevel,\n hierarchyState: hd.hierarchyState, //hd.level + 1 === totalLevel ? undefined : hd.hierarchyState,\n width: (dimensionInfo as IRowDimension)?.width,\n minWidth: (dimensionInfo as IRowDimension)?.minWidth,\n maxWidth: (dimensionInfo as IRowDimension)?.maxWidth,\n parentCellId: roots[roots.length - 1]\n };\n\n results[id] = cell;\n // this._cellIdDiemnsionMap.set(id, {\n // dimensionKey: hd.dimensionKey,\n // value: hd.value\n // });\n layoutMap._headerObjects[id] = cell;\n _headerCellIds[row][layoutMap.colIndex] = id;\n for (let r = row - 1; r >= 0; r--) {\n _headerCellIds[r][layoutMap.colIndex] = roots[r];\n }\n if (hd.hierarchyState === HierarchyState.expand && (hd as ITreeLayoutHeadNode).children?.length >= 1) {\n //row传值 colIndex++和_addHeaders有区别\n show && layoutMap.colIndex++;\n layoutMap._addHeadersForTreeMode(\n _headerCellIds,\n row,\n (hd as ITreeLayoutHeadNode).children ?? [],\n [...roots, id],\n totalLevel,\n show && hd.hierarchyState === HierarchyState.expand, //当前节点show 且当前节点状态为展开 则传给子节点为show:true\n dimensions,\n results\n );\n // .forEach(c => results.push(c));\n } else {\n // columns.push([\"\"])//代码一个路径\n show && layoutMap.colIndex++;\n for (let r = row + 1; r < _headerCellIds.length; r++) {\n _headerCellIds[r][layoutMap.colIndex] = id;\n }\n }\n}\n\nfunction clearNode(children: any) {\n for (let i = 0; i < children.length; i++) {\n const node = children[i];\n delete node.level;\n delete node.startIndex;\n delete node.id;\n delete node.levelSpan;\n delete node.size;\n delete node.startInTotal;\n const childrenNew = node.children || node.columns;\n if (childrenNew) {\n clearNode(childrenNew);\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/layout/tree-helper.ts"],"names":[],"mappings":"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","file":"tree-helper.js","sourcesContent":["import { cloneDeep, isValid } from '@visactor/vutils';\nimport { NumberMap } from '../tools/NumberMap';\nimport { IndicatorDimensionKeyPlaceholder } from '../tools/global';\nimport type { Either } from '../tools/helper';\nimport type {\n CellInfo,\n ColumnIconOption,\n FieldData,\n HeaderData,\n ICustomRender,\n IDimension,\n IHeaderTreeDefine,\n IIndicator,\n IRowDimension,\n LayoutObjectId\n} from '../ts-types';\nimport { HierarchyState } from '../ts-types';\nimport type { PivotHeaderLayoutMap } from './pivot-header-layout';\nimport type { ILinkDimension } from '../ts-types/pivot-table/dimension/link-dimension';\nimport type { IImageDimension } from '../ts-types/pivot-table/dimension/image-dimension';\n// import { sharedVar } from './pivot-header-layout';\n\ninterface ITreeLayoutBaseHeadNode {\n id: number;\n // dimensionKey: string;\n // // title: string;\n // indicatorKey?: string;\n value: string;\n children: ITreeLayoutHeadNode[] | undefined;\n columns?: any; //兼容ListTable情况 simple-header-layout中增加了columnTree\n level: number;\n /** 节点跨占层数 如汇总节点跨几层维度 */\n levelSpan: number;\n startIndex: number;\n size: number; //对应到colSpan或者rowSpan\n // parsing?: 'img' | 'link' | 'video' | 'templateLink';\n startInTotal: number;\n // headerStyle:HeaderStyleOption| null;\n customRender?: ICustomRender;\n\n hierarchyState: HierarchyState;\n headerIcon?: (string | ColumnIconOption)[] | ((args: CellInfo) => (string | ColumnIconOption)[]);\n}\n\ninterface ITreeLayoutDimensionHeadNode extends ITreeLayoutBaseHeadNode {\n dimensionKey: string;\n virtual?: boolean;\n}\ninterface ITreeLayoutIndicatorHeadNode extends ITreeLayoutBaseHeadNode {\n indicatorKey: string;\n}\nexport type ITreeLayoutHeadNode = Either<ITreeLayoutDimensionHeadNode, ITreeLayoutIndicatorHeadNode>;\nexport class DimensionTree {\n sharedVar: { seqId: number };\n // 每一个值对应的序号 结果缓存\n // cache: {\n // [propName: string]: any;\n // };\n //树形展示 会将非叶子节点单独展示一行 所以size会增加非叶子节点的个数\n sizeIncludeParent = false;\n rowExpandLevel: number;\n hierarchyType: 'grid' | 'tree';\n tree: ITreeLayoutHeadNode = {\n id: 0,\n dimensionKey: '',\n // title: '',\n value: '',\n children: [],\n level: -1,\n levelSpan: 1,\n startIndex: 0,\n size: 0,\n startInTotal: 0,\n hierarchyState: undefined\n };\n\n totalLevel = 0;\n\n // blockLevel: number = 0;\n\n // blockStartIndexMap: Map<number, boolean> = new Map();\n // blockEndIndexMap: Map<number, boolean> = new Map();\n dimensionKeys: NumberMap<string> = new NumberMap<string>();\n dimensionKeysIncludeVirtual: NumberMap<string> = new NumberMap<string>();\n // dimensions: IDimension[] | undefined;//目前用不到这个\n cache: Map<number, any> = new Map();\n constructor(\n tree: ITreeLayoutHeadNode[],\n sharedVar: { seqId: number },\n hierarchyType: 'grid' | 'tree' = 'grid',\n rowExpandLevel: number = undefined\n ) {\n this.sizeIncludeParent = rowExpandLevel !== null && rowExpandLevel !== undefined;\n this.rowExpandLevel = rowExpandLevel;\n this.hierarchyType = hierarchyType;\n this.sharedVar = sharedVar;\n this.reset(tree);\n }\n\n reset(tree: ITreeLayoutHeadNode[], updateTreeNode = false) {\n // 清空缓存的计算\n // this.cache = {};\n // this.dimensions = dimensions;\n this.cache.clear();\n this.dimensionKeys = new NumberMap<string>();\n this.dimensionKeysIncludeVirtual = new NumberMap<string>();\n this.tree.children = tree as ITreeLayoutHeadNode[];\n // const re = { totalLevel: 0 };\n // if (updateTreeNode) this.updateTreeNode(this.tree, 0, re, this.tree);\n // else\n this.setTreeNode(this.tree, 0, this.tree);\n // this.totalLevel = this.dimensionKeys.count();\n }\n setTreeNode(node: ITreeLayoutHeadNode, startIndex: number, parent: ITreeLayoutHeadNode): number {\n node.startIndex = startIndex;\n node.startInTotal = (parent.startInTotal ?? 0) + node.startIndex;\n // if (node.dimensionKey) {\n // !this.dimensionKeys.contain(node.dimensionKey) &&\n // this.dimensionKeys.put(node.level, node.dimensionKey);\n // if (!node.id) node.id = ++seqId;\n // }\n if (node.dimensionKey ?? node.indicatorKey) {\n if (\n !node.virtual &&\n !this.dimensionKeys.contain(node.indicatorKey ? IndicatorDimensionKeyPlaceholder : node.dimensionKey)\n ) {\n this.dimensionKeys.put(node.level, node.indicatorKey ? IndicatorDimensionKeyPlaceholder : node.dimensionKey);\n }\n if (\n !this.dimensionKeysIncludeVirtual.contain(\n node.indicatorKey ? IndicatorDimensionKeyPlaceholder : node.dimensionKey\n )\n ) {\n this.dimensionKeysIncludeVirtual.put(\n node.level,\n node.indicatorKey ? IndicatorDimensionKeyPlaceholder : node.dimensionKey\n );\n }\n if (!node.id) {\n node.id = ++this.sharedVar.seqId;\n }\n }\n let size = node.dimensionKey ? (this.sizeIncludeParent ? 1 : 0) : 0;\n const children = node.children || node.columns;\n //平铺展示 分析所有层级\n if (this.hierarchyType === 'grid') {\n if (children?.length >= 1) {\n children.forEach((n: any) => {\n n.level = (node.level ?? 0) + 1;\n this.totalLevel = Math.max(this.totalLevel, n.level + 1);\n size += this.setTreeNode(n, size, node);\n });\n } else {\n size = 1;\n // re.totalLevel = Math.max(re.totalLevel, (node.level ?? -1) + 1);\n }\n } else if (node.hierarchyState === HierarchyState.expand && children?.length >= 1) {\n //树形展示 有子节点 且下一层需要展开\n children.forEach((n: any) => {\n n.level = (node.level ?? 0) + 1;\n this.totalLevel = Math.max(this.totalLevel, n.level + 1);\n size += this.setTreeNode(n, size, node);\n });\n } else if (node.hierarchyState === HierarchyState.collapse && children?.length >= 1) {\n //树形展示 有子节点 且下一层不需要展开\n children.forEach((n: any) => {\n n.level = (node.level ?? 0) + 1;\n this.totalLevel = Math.max(this.totalLevel, n.level + 1);\n this.setTreeNode(n, size, node);\n });\n } else if (\n !node.hierarchyState &&\n node.level + 1 < this.rowExpandLevel &&\n (children?.length >= 1 || children === true)\n ) {\n //树形展示 有子节点 且下一层需要展开\n node.hierarchyState = HierarchyState.expand;\n children?.length >= 1 &&\n children.forEach((n: any) => {\n n.level = (node.level ?? 0) + 1;\n this.totalLevel = Math.max(this.totalLevel, n.level + 1);\n size += this.setTreeNode(n, size, node);\n });\n } else if (children?.length >= 1 || children === true) {\n //树形展示 有子节点 且下一层不需要展开\n node.hierarchyState = HierarchyState.collapse;\n children?.length >= 1 &&\n children.forEach((n: any) => {\n n.level = (node.level ?? 0) + 1;\n this.totalLevel = Math.max(this.totalLevel, n.level + 1);\n this.setTreeNode(n, size, node);\n });\n } else {\n //树形展示 无children子节点。但不能确定是最后一层的叶子节点 totalLevel还不能确定是计算完整棵树的整体深度\n node.hierarchyState = HierarchyState.none;\n size = 1;\n // re.totalLevel = Math.max(re.totalLevel, (node.level ?? -1) + 1);\n }\n\n node.size = size;\n // startInTotal = parent.startIndex + prevStartIndex\n return size;\n }\n getTreePath(index: number, maxDeep = 30): Array<ITreeLayoutHeadNode> {\n const path: any[] = [];\n this.searchPath(index, this.tree, path, maxDeep);\n path.shift();\n return path;\n }\n\n getTreePathByCellIds(ids: LayoutObjectId[]): Array<ITreeLayoutHeadNode> {\n const path: any[] = [];\n let nodes = this.tree.children;\n for (let i = 0; i < ids.length; i++) {\n const id = ids[i];\n const pathNode = this.findNodeById(nodes, id);\n if (pathNode) {\n path.push(pathNode);\n nodes = pathNode.children;\n } else {\n break;\n }\n }\n // path.shift();\n return path;\n }\n findNodeById(nodes: ITreeLayoutHeadNode[], id: LayoutObjectId) {\n return nodes.find(node => {\n return node.id === id;\n });\n }\n searchPath(index: number, node: ITreeLayoutHeadNode, path: Array<ITreeLayoutHeadNode>, maxDeep: number) {\n if (!node) {\n return;\n }\n if (index < node.startIndex || index >= node.startIndex + node.size) {\n return;\n }\n path.push(node);\n if (!node.children || node.children.length === 0 || node.level >= maxDeep) {\n return;\n }\n\n // const cIndex = index - node.startIndex;\n // for (let i = 0; i < node.children.length; i++) {\n // const element = node.children[i];\n // if (cIndex >= element.startIndex && cIndex < element.startIndex + element.size) {\n // this.searchPath(cIndex, element, path, maxDeep);\n // break;\n // }\n // }\n\n // use dichotomy to optimize search performance\n const cIndex = index - node.startIndex;\n\n if (this.cache.has(node.level + 1)) {\n const cacheNode = this.cache.get(node.level + 1);\n if (cIndex >= cacheNode.startIndex && cIndex < cacheNode.startIndex + cacheNode.size) {\n this.searchPath(cIndex, cacheNode, path, maxDeep);\n return;\n }\n }\n\n let left = 0;\n let right = node.children.length - 1;\n\n while (left <= right) {\n const middle = Math.floor((left + right) / 2);\n const element = node.children[middle];\n\n if (cIndex >= element.startIndex && cIndex < element.startIndex + element.size) {\n this.cache.set(element.level, element);\n const deleteLevels: number[] = [];\n this.cache.forEach((node, key) => {\n if (key > element.level) {\n deleteLevels.push(key);\n }\n });\n deleteLevels.forEach(key => {\n this.cache.delete(key);\n });\n this.searchPath(cIndex, element, path, maxDeep);\n break;\n } else if (cIndex < element.startIndex) {\n right = middle - 1;\n } else {\n left = middle + 1;\n }\n }\n return;\n }\n /**\n * 将该树中 层级为level 的sourceIndex处的节点移动到targetIndex位置\n * @param level\n * @param sourceIndex\n * @param targetIndex\n */\n movePosition(level: number, sourceIndex: number, targetIndex: number) {\n // let sourceNode: IPivotLayoutHeadNode;\n let parNode: ITreeLayoutHeadNode;\n let sourceSubIndex: number;\n let targetSubIndex: number;\n /**\n * 对parNode的子节点第subIndex处的node节点 进行判断是否为sourceIndex或者targetIndex\n * 如果是 则记录下subIndex 以对parNode中个节点位置进行移位\n * @param node\n * @param subIndex\n * @returns\n */\n const findTargetNode = (node: ITreeLayoutHeadNode, subIndex: number) => {\n if (sourceSubIndex !== undefined && targetSubIndex !== undefined) {\n return;\n }\n if (node.level === level) {\n if (node.startInTotal === sourceIndex) {\n // sourceNode = node;\n sourceSubIndex = subIndex;\n }\n // if (node.startInTotal === targetIndex) targetSubIndex = subIndex;\n // 判断targetIndex是否在node的范围内 将当前node的subIndex记为targetSubIndex\n if (node.startInTotal <= targetIndex && targetIndex <= node.startInTotal + node.size - 1) {\n targetSubIndex = subIndex;\n }\n }\n const children = node.children || node.columns;\n if (children && node.level < level) {\n parNode = node;\n for (let i = 0; i < children.length; i++) {\n if (\n (sourceIndex >= children[i].startInTotal && sourceIndex <= children[i].startInTotal + children[i].size) ||\n (targetIndex >= children[i].startInTotal && targetIndex <= children[i].startInTotal + children[i].size)\n ) {\n findTargetNode(children[i], i);\n }\n }\n }\n };\n findTargetNode(this.tree, 0);\n\n //对parNode子节点位置进行移位【根据sourceSubIndex和targetSubIndex】\n const children = parNode.children || parNode.columns;\n const sourceColumns = children.splice(sourceSubIndex, 1);\n sourceColumns.unshift(targetSubIndex as any, 0 as any);\n Array.prototype.splice.apply(children, sourceColumns);\n }\n /** 获取纯净树结构 没有level size index这些属性 */\n getCopiedTree() {\n const children = cloneDeep(this.tree.children);\n clearNode(children);\n return children;\n }\n}\n\n//#region 为方法getLayoutRowTree提供的类型和工具方法\nexport type LayouTreeNode = {\n dimensionKey?: string;\n indicatorKey?: string;\n value: string;\n hierarchyState: HierarchyState;\n children?: LayouTreeNode[];\n};\n\nexport function generateLayoutTree(tree: LayouTreeNode[], children: ITreeLayoutHeadNode[]) {\n children?.forEach((node: ITreeLayoutHeadNode) => {\n const diemnsonNode: {\n dimensionKey?: string;\n indicatorKey?: string;\n value: string;\n virtual?: boolean;\n hierarchyState: HierarchyState;\n children: any;\n } = {\n dimensionKey: node.dimensionKey,\n indicatorKey: node.indicatorKey,\n value: node.value,\n hierarchyState: node.hierarchyState,\n children: undefined,\n virtual: node.virtual ?? false\n };\n tree.push(diemnsonNode);\n if (node.children) {\n diemnsonNode.children = [];\n generateLayoutTree(diemnsonNode.children, node.children);\n }\n });\n}\n//#endregion\n\n//#region 为方法getLayoutRowTreeCount提的工具方法\nexport function countLayoutTree(children: { children?: any }[], countParentNode: boolean) {\n let count = 0;\n children?.forEach((node: ITreeLayoutHeadNode) => {\n if (countParentNode) {\n count++;\n } else {\n if (!node.children || node.children.length === 0) {\n count++;\n }\n }\n if (node.children) {\n count += countLayoutTree(node.children, countParentNode);\n }\n });\n return count;\n}\n//#endregion\n\nexport function dealHeader(\n hd: ITreeLayoutHeadNode,\n _headerCellIds: number[][],\n results: HeaderData[],\n roots: number[],\n row: number,\n layoutMap: PivotHeaderLayoutMap\n) {\n // const col = this._columns.length;\n const id = hd.id;\n const dimensionInfo: IDimension =\n (layoutMap.rowsDefine?.find(dimension =>\n typeof dimension === 'string' ? false : dimension.dimensionKey === hd.dimensionKey\n ) as IDimension) ??\n (layoutMap.columnsDefine?.find(dimension =>\n typeof dimension === 'string' ? false : dimension.dimensionKey === hd.dimensionKey\n ) as IDimension);\n const indicatorInfo = layoutMap.indicatorsDefine?.find(indicator => {\n if (typeof indicator === 'string') {\n return false;\n }\n if (hd.indicatorKey) {\n return indicator.indicatorKey === hd.indicatorKey;\n }\n return indicator.title === hd.value;\n }) as IIndicator;\n const cell: HeaderData = {\n id,\n title: hd.value ?? indicatorInfo?.title,\n field: hd.dimensionKey,\n style:\n typeof (indicatorInfo ?? dimensionInfo)?.headerStyle === 'function'\n ? (indicatorInfo ?? dimensionInfo)?.headerStyle\n : Object.assign({}, (indicatorInfo ?? dimensionInfo)?.headerStyle),\n headerType: indicatorInfo?.headerType ?? dimensionInfo?.headerType ?? 'text',\n headerIcon: indicatorInfo?.headerIcon ?? dimensionInfo?.headerIcon,\n // define: <any>hd,\n define: Object.assign({}, <any>hd, indicatorInfo ?? Object.assign({}, dimensionInfo, { sort: undefined })),\n fieldFormat: indicatorInfo?.headerFormat ?? dimensionInfo?.headerFormat,\n // iconPositionList:[]\n dropDownMenu: indicatorInfo?.dropDownMenu ?? dimensionInfo?.dropDownMenu,\n pivotInfo: {\n value: hd.value,\n dimensionKey: hd.dimensionKey,\n isPivotCorner: false\n // customInfo: dimensionInfo?.customInfo\n },\n width: (dimensionInfo as IRowDimension)?.width,\n minWidth: (dimensionInfo as IRowDimension)?.minWidth,\n maxWidth: (dimensionInfo as IRowDimension)?.maxWidth,\n showSort: indicatorInfo?.showSort ?? dimensionInfo?.showSort,\n sort: indicatorInfo?.sort,\n description: dimensionInfo?.description\n };\n\n if (indicatorInfo) {\n //收集indicatorDimensionKey 提到了构造函数中\n // this.indicatorDimensionKey = dimensionInfo.dimensionKey;\n if (indicatorInfo.customRender) {\n hd.customRender = indicatorInfo.customRender;\n }\n if (!isValid(layoutMap._indicators?.find(indicator => indicator.indicatorKey === indicatorInfo.indicatorKey))) {\n layoutMap._indicators?.push({\n id: ++layoutMap.sharedVar.seqId,\n indicatorKey: indicatorInfo.indicatorKey,\n field: indicatorInfo.indicatorKey,\n fieldFormat: indicatorInfo?.format,\n cellType: indicatorInfo?.cellType ?? (indicatorInfo as any)?.columnType ?? 'text',\n chartModule: 'chartModule' in indicatorInfo ? indicatorInfo.chartModule : null,\n chartSpec: 'chartSpec' in indicatorInfo ? indicatorInfo.chartSpec : null,\n sparklineSpec: 'sparklineSpec' in indicatorInfo ? indicatorInfo.sparklineSpec : null,\n style: indicatorInfo?.style,\n icon: indicatorInfo?.icon,\n define: Object.assign({}, <any>hd, indicatorInfo, {\n dragHeader: dimensionInfo?.dragHeader\n }),\n width: indicatorInfo?.width,\n minWidth: indicatorInfo?.minWidth,\n maxWidth: indicatorInfo?.maxWidth,\n disableColumnResize: indicatorInfo?.disableColumnResize\n });\n }\n } else if (hd.indicatorKey) {\n //兼容当某个指标没有设置在dimension.indicators中\n if (!isValid(layoutMap._indicators?.find(indicator => indicator.indicatorKey === hd.indicatorKey))) {\n layoutMap._indicators?.push({\n id: ++layoutMap.sharedVar.seqId,\n indicatorKey: hd.indicatorKey,\n field: hd.indicatorKey,\n cellType: 'text',\n define: Object.assign({}, <any>hd)\n });\n }\n }\n // if (dimensionInfo.indicators) {\n // layoutMap.hideIndicatorName = dimensionInfo.hideIndicatorName ?? false;\n // layoutMap.indicatorsAsCol = dimensionInfo.indicatorsAsCol ?? true;\n // }\n results[id] = cell;\n layoutMap._headerObjects[id] = cell;\n _headerCellIds[row][layoutMap.colIndex] = id;\n for (let r = row - 1; r >= 0; r--) {\n _headerCellIds[r][layoutMap.colIndex] = roots[r];\n }\n\n // 处理汇总小计跨维度层级的情况\n if ((hd as any).levelSpan > 1) {\n for (let i = 1; i < (hd as any).levelSpan; i++) {\n if (!_headerCellIds[row + i]) {\n _headerCellIds[row + i] = [];\n }\n _headerCellIds[row + i][layoutMap.colIndex] = id;\n }\n }\n\n if ((hd as ITreeLayoutHeadNode).children?.length >= 1) {\n layoutMap._addHeaders(\n _headerCellIds,\n row + ((hd as any).levelSpan ?? 1),\n (hd as ITreeLayoutHeadNode).children ?? [],\n [...roots, ...Array((hd as any).levelSpan ?? 1).fill(id)],\n results\n );\n // .forEach(c => results.push(c));\n } else {\n // columns.push([\"\"])//代码一个路径\n for (let r = row + 1; r < _headerCellIds.length; r++) {\n _headerCellIds[r][layoutMap.colIndex] = id;\n\n // if ((hd as any).levelSpan > 1) {\n // for (let i = 1; i < (hd as any).levelSpan; i++) {\n // _headerCellIds[r + i][layoutMap.colIndex] = id;\n // }\n // }\n }\n layoutMap.colIndex++;\n }\n}\n\nexport function dealHeaderForTreeMode(\n hd: ITreeLayoutHeadNode,\n _headerCellIds: number[][],\n results: HeaderData[],\n roots: number[],\n row: number,\n totalLevel: number,\n show: boolean,\n dimensions: (IDimension | string)[],\n layoutMap: PivotHeaderLayoutMap\n) {\n const id = hd.id;\n // const dimensionInfo: IDimension =\n // (this.rowsDefine?.find(dimension =>\n // typeof dimension === 'string' ? false : dimension.dimensionKey === hd.dimensionKey\n // ) as IDimension) ??\n // (this.columnsDefine?.find(dimension =>\n // typeof dimension === 'string' ? false : dimension.dimensionKey === hd.dimensionKey\n // ) as IDimension);\n const dimensionInfo: IDimension = dimensions.find(dimension =>\n typeof dimension === 'string' ? false : dimension.dimensionKey === hd.dimensionKey\n ) as IDimension;\n\n const cell: HeaderData = {\n id,\n title: hd.value,\n field: hd.dimensionKey as FieldData,\n //如果不是整棵树的叶子节点,都靠左显示\n style:\n hd.level + 1 === totalLevel || typeof dimensionInfo?.headerStyle === 'function'\n ? dimensionInfo?.headerStyle\n : Object.assign({}, dimensionInfo?.headerStyle, { textAlign: 'left' }),\n headerType: dimensionInfo?.headerType ?? 'text',\n headerIcon: dimensionInfo?.headerIcon,\n define: Object.assign(<any>hd, {\n linkJump: (dimensionInfo as ILinkDimension)?.linkJump,\n linkDetect: (dimensionInfo as ILinkDimension)?.linkDetect,\n templateLink: (dimensionInfo as ILinkDimension)?.templateLink,\n\n // image相关 to be fixed\n keepAspectRatio: (dimensionInfo as IImageDimension)?.keepAspectRatio ?? false,\n imageAutoSizing: (dimensionInfo as IImageDimension)?.imageAutoSizing,\n\n headerCustomRender: dimensionInfo?.headerCustomRender,\n headerCustomLayout: dimensionInfo?.headerCustomLayout,\n dragHeader: dimensionInfo?.dragHeader,\n disableHeaderHover: !!dimensionInfo?.disableHeaderHover,\n disableHeaderSelect: !!dimensionInfo?.disableHeaderSelect\n }), //这里不能新建对象,要用hd保持引用关系\n fieldFormat: dimensionInfo?.headerFormat,\n // iconPositionList:[]\n dropDownMenu: dimensionInfo?.dropDownMenu,\n pivotInfo: {\n value: hd.value,\n dimensionKey: hd.dimensionKey as string,\n isPivotCorner: false\n // customInfo: dimensionInfo?.customInfo\n },\n hierarchyLevel: hd.level,\n dimensionTotalLevel: totalLevel,\n hierarchyState: hd.hierarchyState, //hd.level + 1 === totalLevel ? undefined : hd.hierarchyState,\n width: (dimensionInfo as IRowDimension)?.width,\n minWidth: (dimensionInfo as IRowDimension)?.minWidth,\n maxWidth: (dimensionInfo as IRowDimension)?.maxWidth,\n parentCellId: roots[roots.length - 1]\n };\n\n results[id] = cell;\n // this._cellIdDiemnsionMap.set(id, {\n // dimensionKey: hd.dimensionKey,\n // value: hd.value\n // });\n layoutMap._headerObjects[id] = cell;\n _headerCellIds[row][layoutMap.colIndex] = id;\n for (let r = row - 1; r >= 0; r--) {\n _headerCellIds[r][layoutMap.colIndex] = roots[r];\n }\n if (hd.hierarchyState === HierarchyState.expand && (hd as ITreeLayoutHeadNode).children?.length >= 1) {\n //row传值 colIndex++和_addHeaders有区别\n show && layoutMap.colIndex++;\n layoutMap._addHeadersForTreeMode(\n _headerCellIds,\n row,\n (hd as ITreeLayoutHeadNode).children ?? [],\n [...roots, id],\n totalLevel,\n show && hd.hierarchyState === HierarchyState.expand, //当前节点show 且当前节点状态为展开 则传给子节点为show:true\n dimensions,\n results\n );\n // .forEach(c => results.push(c));\n } else {\n // columns.push([\"\"])//代码一个路径\n show && layoutMap.colIndex++;\n for (let r = row + 1; r < _headerCellIds.length; r++) {\n _headerCellIds[r][layoutMap.colIndex] = id;\n }\n }\n}\n\nfunction clearNode(children: any) {\n for (let i = 0; i < children.length; i++) {\n const node = children[i];\n delete node.level;\n delete node.startIndex;\n delete node.id;\n delete node.levelSpan;\n delete node.size;\n delete node.startInTotal;\n const childrenNew = node.children || node.columns;\n if (childrenNew) {\n clearNode(childrenNew);\n }\n }\n}\n"]}
@@ -83,6 +83,7 @@ function setIconHoverStyle(baseIcon, col, row, cellGroup, scene) {
83
83
  },
84
84
  placement: baseIcon.tooltip.placement
85
85
  },
86
+ disappearDelay: baseIcon.tooltip.disappearDelay,
86
87
  style: Object.assign({}, null === (_a = scene.table.internalProps.theme) || void 0 === _a ? void 0 : _a.tooltipStyle, null === (_b = baseIcon.tooltip) || void 0 === _b ? void 0 : _b.style)
87
88
  };
88
89
  scene.table.internalProps.tooltipHandler.isBinded(tooltipOptions) || scene.table.showTooltip(col, row, tooltipOptions);
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/scenegraph/icon/icon-update.ts"],"names":[],"mappings":"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","file":"icon-update.js","sourcesContent":["import { isValid } from '@visactor/vutils';\nimport type { Group } from '../graphic/group';\nimport type { Scenegraph } from '../scenegraph';\nimport type { ColumnIconOption, SortOrder, SvgIcon } from '../../ts-types';\nimport { IconFuncTypeEnum } from '../../ts-types';\nimport type { Icon } from '../graphic/icon';\nimport type { TooltipOptions } from '../../ts-types/tooltip';\nimport type { IRect } from './../../vrender';\nimport { IContainPointMode, createRect } from './../../vrender';\nimport { dealWithIcon } from '../utils/text-icon-layout';\nimport type { BaseTableAPI } from '../../ts-types/base-table';\nimport { getCellMergeRange } from '../../tools/merge-range';\n\nexport function hideHoverIcon(col: number, row: number, scene: Scenegraph) {\n if (col === -1 || row === -1) {\n return;\n }\n // const cellGroup = scene.getCell(col, row);\n // hideIcon(scene, cellGroup, 'mouseenter_cell');\n\n // hideIcon\n updateCellRangeIcon(\n col,\n row,\n (icon: Icon) => icon.attribute.visibleTime === 'mouseenter_cell',\n (icon: Icon) => {\n icon.setAttribute('opacity', 0);\n\n const iconBack = icon.parent.getChildByName('icon-back') as IRect;\n if (iconBack) {\n iconBack.setAttribute('visible', false);\n }\n },\n scene\n );\n scene.updateNextFrame();\n}\n\nexport function showHoverIcon(col: number, row: number, scene: Scenegraph) {\n if (col === -1 || row === -1) {\n return;\n }\n // const cellGroup = scene.getCell(col, row);\n // showIcon(scene, cellGroup, 'mouseenter_cell');\n\n // showIcon\n updateCellRangeIcon(\n col,\n row,\n (icon: Icon) => icon.attribute.visibleTime === 'mouseenter_cell',\n (icon: Icon) => {\n icon.setAttribute('opacity', 1);\n },\n scene\n );\n scene.updateNextFrame();\n}\n\nexport function hideClickIcon(col: number, row: number, scene: Scenegraph) {\n if (col === -1 || row === -1) {\n return;\n }\n // const cellGroup = scene.getCell(col, row);\n // hideIcon(scene, cellGroup, 'click_cell');\n\n // hideIcon\n updateCellRangeIcon(\n col,\n row,\n (icon: Icon) => icon.attribute.visibleTime === 'click_cell',\n (icon: Icon) => {\n icon.setAttribute('opacity', 0);\n },\n scene\n );\n scene.updateNextFrame();\n}\n\nexport function showClickIcon(col: number, row: number, scene: Scenegraph) {\n if (col === -1 || row === -1) {\n return;\n }\n // const cellGroup = scene.getCell(col, row);\n // showIcon(scene, cellGroup, 'click_cell');\n\n // showIcon\n updateCellRangeIcon(\n col,\n row,\n (icon: Icon) => icon.attribute.visibleTime === 'click_cell',\n (icon: Icon) => {\n icon.setAttribute('opacity', 1);\n },\n scene\n );\n scene.updateNextFrame();\n}\n\n/**\n * @description: 获取指定单元格指定位置的icon mark\n * @param {number} col\n * @param {number} row\n * @param {number} x\n * @param {number} y\n * @return {*}\n */\nexport function getIconByXY(col: number, row: number, x: number, y: number, scene: Scenegraph): Icon | undefined {\n const cellGroup = scene.getCell(col, row);\n let pickMark;\n cellGroup.forEachChildren((mark: Icon) => {\n if (mark.role && mark.role.startsWith('icon') && mark.containsPoint(x, y, IContainPointMode.GLOBAL)) {\n pickMark = mark;\n }\n });\n return pickMark;\n}\n\n/**\n * @description: 将指定icon mark设置为Hover样式\n * @param {Icon} icon\n * @param {number} col\n * @param {number} row\n * @return {*}\n */\nexport function setIconHoverStyle(baseIcon: Icon, col: number, row: number, cellGroup: Group, scene: Scenegraph) {\n if (baseIcon.attribute.backgroundColor || baseIcon.attribute.hoverImage) {\n updateCellRangeIcon(\n col,\n row,\n // filter\n (icon: Icon) => icon.name === baseIcon.name,\n (icon: Icon) => {\n // hover展示背景\n if (icon.attribute.backgroundColor) {\n let iconBack = icon.parent.getChildByName('icon-back') as IRect;\n if (iconBack) {\n iconBack.setAttributes({\n x:\n (icon.attribute.x ?? 0) +\n // (icon.attribute.dx ?? 0) +\n (icon.AABBBounds.width() - icon.backgroundWidth) / 2,\n y: (icon.attribute.y ?? 0) + (icon.AABBBounds.height() - icon.backgroundHeight) / 2,\n dx: icon.attribute.dx ?? 0,\n dy: icon.attribute.dy ?? 0,\n width: icon.backgroundWidth,\n height: icon.backgroundHeight,\n fill: icon.attribute.backgroundColor,\n cornerRadius: 5,\n visible: true\n });\n } else {\n iconBack = createRect({\n x:\n (icon.attribute.x ?? 0) +\n // (icon.attribute.dx ?? 0) +\n (icon.AABBBounds.width() - icon.backgroundWidth) / 2,\n y: (icon.attribute.y ?? 0) + (icon.AABBBounds.height() - icon.backgroundHeight) / 2,\n dx: icon.attribute.dx ?? 0,\n dy: icon.attribute.dy ?? 0,\n width: icon.backgroundWidth,\n height: icon.backgroundHeight,\n fill: icon.attribute.backgroundColor,\n cornerRadius: 5,\n pickable: false,\n visible: true\n }) as IRect;\n iconBack.name = 'icon-back';\n // cellGroup.appendChild(iconBack);\n }\n icon.parent.insertBefore(iconBack, icon);\n }\n\n // hover更换图片\n if (icon.attribute.hoverImage && icon.attribute.image !== icon.attribute.hoverImage) {\n icon.image = icon.attribute.hoverImage;\n }\n },\n scene\n );\n }\n // hover展示tooltip\n if (baseIcon.tooltip) {\n const { x1: left, x2: right, y1: top, y2: bottom } = baseIcon.globalAABBBounds;\n const tooltipOptions: TooltipOptions = {\n content: baseIcon.tooltip.title,\n referencePosition: {\n rect: {\n left: left,\n right: right,\n top: top,\n bottom: bottom,\n width: baseIcon.globalAABBBounds.width(),\n height: baseIcon.globalAABBBounds.height()\n },\n placement: baseIcon.tooltip.placement\n },\n style: Object.assign({}, scene.table.internalProps.theme?.tooltipStyle, baseIcon.tooltip?.style)\n };\n if (!scene.table.internalProps.tooltipHandler.isBinded(tooltipOptions)) {\n scene.table.showTooltip(col, row, tooltipOptions);\n }\n }\n}\n\n/**\n * @description: 将指定icon mark设置为Normal样式\n * @param {Icon} icon\n * @param {number} col\n * @param {number} row\n * @return {*}\n */\nexport function setIconNormalStyle(baseIcon: Icon, col: number, row: number, scene: Scenegraph) {\n if (baseIcon.attribute.backgroundColor || baseIcon.attribute.hoverImage) {\n updateCellRangeIcon(\n col,\n row,\n // filter\n (icon: Icon) => icon.name === baseIcon.name,\n (icon: Icon) => {\n const iconBack = icon.parent.getChildByName('icon-back') as IRect;\n if (iconBack) {\n iconBack.setAttribute('visible', false);\n }\n\n // hover更换图片\n if (icon.attribute.hoverImage && icon.attribute.image !== icon.attribute.originImage) {\n icon.image = icon.attribute.originImage;\n }\n },\n scene\n );\n }\n}\n\nexport function updateIcon(baseIcon: Icon, iconConfig: ColumnIconOption, col: number, row: number, scene: Scenegraph) {\n // 直接更新mark attribute\n // dealWithIcon(iconConfig, icon);\n // icon.name = iconConfig.name;\n // scene.updateNextFrame();\n const iconName = baseIcon.name;\n updateCellRangeIcon(\n col,\n row,\n // filter\n (icon: Icon) => icon.name === iconName,\n // dealer\n (icon: Icon) => {\n dealWithIcon(iconConfig, icon);\n icon.name = iconConfig.name;\n },\n scene\n );\n\n scene.updateNextFrame();\n}\n\nfunction resetSortIcon(oldSortCol: number, oldSortRow: number, iconConfig: ColumnIconOption, scene: Scenegraph) {\n const oldSortCell = scene.getCell(oldSortCol, oldSortRow);\n if (\n isValid(oldSortCell.mergeStartCol) &&\n isValid(oldSortCell.mergeStartRow) &&\n isValid(oldSortCell.mergeEndCol) &&\n isValid(oldSortCell.mergeEndRow)\n ) {\n for (let col = oldSortCell.mergeStartCol; col <= oldSortCell.mergeEndCol; col++) {\n for (let row = oldSortCell.mergeStartRow; row <= oldSortCell.mergeEndRow; row++) {\n let oldIconMark: Icon;\n scene.getCell(col, row).forEachChildren((mark: Icon) => {\n if (mark.attribute.funcType === 'sort') {\n oldIconMark = mark;\n return true;\n }\n return false;\n });\n if (oldIconMark) {\n dealWithIcon(iconConfig, oldIconMark);\n oldIconMark.name = iconConfig.name;\n }\n }\n }\n } else {\n let oldIconMark: Icon;\n oldSortCell.forEachChildren((mark: Icon) => {\n if (mark.attribute.funcType === 'sort') {\n oldIconMark = mark;\n return true;\n }\n return false;\n });\n if (oldIconMark) {\n // updateIcon(oldIconMark, oldIcon);\n dealWithIcon(iconConfig, oldIconMark);\n oldIconMark.name = iconConfig.name;\n }\n }\n}\n\nfunction checkSameCell(col1: number, row1: number, col2: number, row2: number, table: BaseTableAPI) {\n const range1 = table.getCellRange(col1, row1);\n const range2 = table.getCellRange(col2, row2);\n if (\n range1.start.col === range2.start.col &&\n range1.start.row === range2.start.row &&\n range1.end.col === range2.end.col &&\n range1.end.row === range2.end.row\n ) {\n return true;\n }\n return false;\n}\n\nexport function updateSortIcon(\n col: number,\n row: number,\n iconMark: Icon,\n order: SortOrder,\n oldSortCol: number,\n oldSortRow: number,\n oldIconMark: Icon | undefined,\n scene: Scenegraph\n) {\n // 更新icon\n const icon = scene.table.internalProps.headerHelper.getSortIcon(order, scene.table, col, row);\n if (iconMark) {\n updateIcon(iconMark, icon, col, row, scene);\n }\n\n // 更新旧frozen icon\n if (!checkSameCell(col, row, oldSortCol, oldSortRow, scene.table)) {\n const oldIcon = scene.table.internalProps.headerHelper.getSortIcon('normal', scene.table, oldSortCol, oldSortRow);\n if (oldIconMark) {\n updateIcon(oldIconMark, oldIcon, oldSortCol, oldSortRow, scene);\n } else {\n resetSortIcon(oldSortCol, oldSortRow, oldIcon, scene);\n }\n }\n}\n\nexport function updateFrozenIcon(scene: Scenegraph) {\n // 依据新旧冻结列确定更新范围\n for (let col = 0; col < scene.table.colCount; col++) {\n for (let row = 0; row < scene.table.columnHeaderLevelCount; row++) {\n updateCellRangeIcon(\n col,\n row,\n // filter\n (icon: Icon) => icon.attribute.funcType === 'frozen',\n // dealer\n (icon: Icon) => {\n const iconConfig = scene.table.internalProps.headerHelper.getFrozenIcon(col, row);\n dealWithIcon(iconConfig, icon);\n icon.name = iconConfig.name;\n },\n scene\n );\n }\n }\n}\n\nexport function updateHierarchyIcon(col: number, row: number, scene: Scenegraph) {\n let iconConfig: SvgIcon;\n if (scene.table.isHeader(col, row)) {\n iconConfig = scene.table.internalProps.headerHelper.getHierarchyIcon(col, row);\n } else {\n iconConfig = scene.table.internalProps.bodyHelper.getHierarchyIcon(col, row);\n }\n\n updateCellRangeIcon(\n col,\n row,\n // filter\n (icon: Icon) =>\n icon.attribute.funcType === IconFuncTypeEnum.collapse || icon.attribute.funcType === IconFuncTypeEnum.expand,\n // dealer\n (icon: Icon) => {\n dealWithIcon(iconConfig, icon);\n icon.name = iconConfig.name;\n },\n scene\n );\n}\n\nexport function updateCellGroupIcon(cellGroup: Group, filter: (icon: Icon) => boolean, dealer: (icon: Icon) => void) {\n cellGroup.forEachChildren((child: any) => {\n if (child.type === 'group') {\n updateCellGroupIcon(child, filter, dealer);\n } else if (filter(child)) {\n dealer(child);\n }\n });\n}\n\nexport function updateCellRangeIcon(\n col: number,\n row: number,\n filter: (icon: Icon) => boolean,\n dealer: (icon: Icon) => void,\n scene: Scenegraph\n) {\n const cellGroup = scene.getCell(col, row);\n if (\n cellGroup.role === 'cell' &&\n isValid(cellGroup.mergeStartCol) &&\n isValid(cellGroup.mergeStartRow) &&\n isValid(cellGroup.mergeEndCol) &&\n isValid(cellGroup.mergeEndRow)\n ) {\n const { colStart, colEnd, rowStart, rowEnd } = getCellMergeRange(cellGroup, scene);\n for (let col = colStart; col <= colEnd; col++) {\n for (let row = rowStart; row <= rowEnd; row++) {\n updateCellGroupIcon(scene.highPerformanceGetCell(col, row), filter, dealer);\n }\n }\n } else {\n updateCellGroupIcon(cellGroup, filter, dealer);\n }\n}\n\nexport function residentHoverIcon(col: number, row: number, scene: Scenegraph) {\n updateCellRangeIcon(\n col,\n row,\n // filter\n (icon: Icon) => icon.attribute.funcType === IconFuncTypeEnum.dropDown,\n // dealer\n (icon: Icon) => {\n (icon as any).oldVisibleTime = icon.attribute.visibleTime;\n icon.setAttribute('visibleTime', 'always');\n icon.setAttribute('opacity', 1);\n },\n scene\n );\n}\n\nexport function resetResidentHoverIcon(col: number, row: number, scene: Scenegraph) {\n updateCellRangeIcon(\n col,\n row,\n // filter\n (icon: Icon) => icon.attribute.funcType === IconFuncTypeEnum.dropDown,\n // dealer\n (icon: Icon) => {\n (icon as any).oldVisibleTime && icon.setAttribute('visibleTime', (icon as any).oldVisibleTime);\n icon.setAttribute('opacity', icon.attribute.visibleTime === 'always' ? 1 : 0);\n },\n scene\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/scenegraph/icon/icon-update.ts"],"names":[],"mappings":"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","file":"icon-update.js","sourcesContent":["import { isValid } from '@visactor/vutils';\nimport type { Group } from '../graphic/group';\nimport type { Scenegraph } from '../scenegraph';\nimport type { ColumnIconOption, SortOrder, SvgIcon } from '../../ts-types';\nimport { IconFuncTypeEnum } from '../../ts-types';\nimport type { Icon } from '../graphic/icon';\nimport type { TooltipOptions } from '../../ts-types/tooltip';\nimport type { IRect } from './../../vrender';\nimport { IContainPointMode, createRect } from './../../vrender';\nimport { dealWithIcon } from '../utils/text-icon-layout';\nimport type { BaseTableAPI } from '../../ts-types/base-table';\nimport { getCellMergeRange } from '../../tools/merge-range';\n\nexport function hideHoverIcon(col: number, row: number, scene: Scenegraph) {\n if (col === -1 || row === -1) {\n return;\n }\n // const cellGroup = scene.getCell(col, row);\n // hideIcon(scene, cellGroup, 'mouseenter_cell');\n\n // hideIcon\n updateCellRangeIcon(\n col,\n row,\n (icon: Icon) => icon.attribute.visibleTime === 'mouseenter_cell',\n (icon: Icon) => {\n icon.setAttribute('opacity', 0);\n\n const iconBack = icon.parent.getChildByName('icon-back') as IRect;\n if (iconBack) {\n iconBack.setAttribute('visible', false);\n }\n },\n scene\n );\n scene.updateNextFrame();\n}\n\nexport function showHoverIcon(col: number, row: number, scene: Scenegraph) {\n if (col === -1 || row === -1) {\n return;\n }\n // const cellGroup = scene.getCell(col, row);\n // showIcon(scene, cellGroup, 'mouseenter_cell');\n\n // showIcon\n updateCellRangeIcon(\n col,\n row,\n (icon: Icon) => icon.attribute.visibleTime === 'mouseenter_cell',\n (icon: Icon) => {\n icon.setAttribute('opacity', 1);\n },\n scene\n );\n scene.updateNextFrame();\n}\n\nexport function hideClickIcon(col: number, row: number, scene: Scenegraph) {\n if (col === -1 || row === -1) {\n return;\n }\n // const cellGroup = scene.getCell(col, row);\n // hideIcon(scene, cellGroup, 'click_cell');\n\n // hideIcon\n updateCellRangeIcon(\n col,\n row,\n (icon: Icon) => icon.attribute.visibleTime === 'click_cell',\n (icon: Icon) => {\n icon.setAttribute('opacity', 0);\n },\n scene\n );\n scene.updateNextFrame();\n}\n\nexport function showClickIcon(col: number, row: number, scene: Scenegraph) {\n if (col === -1 || row === -1) {\n return;\n }\n // const cellGroup = scene.getCell(col, row);\n // showIcon(scene, cellGroup, 'click_cell');\n\n // showIcon\n updateCellRangeIcon(\n col,\n row,\n (icon: Icon) => icon.attribute.visibleTime === 'click_cell',\n (icon: Icon) => {\n icon.setAttribute('opacity', 1);\n },\n scene\n );\n scene.updateNextFrame();\n}\n\n/**\n * @description: 获取指定单元格指定位置的icon mark\n * @param {number} col\n * @param {number} row\n * @param {number} x\n * @param {number} y\n * @return {*}\n */\nexport function getIconByXY(col: number, row: number, x: number, y: number, scene: Scenegraph): Icon | undefined {\n const cellGroup = scene.getCell(col, row);\n let pickMark;\n cellGroup.forEachChildren((mark: Icon) => {\n if (mark.role && mark.role.startsWith('icon') && mark.containsPoint(x, y, IContainPointMode.GLOBAL)) {\n pickMark = mark;\n }\n });\n return pickMark;\n}\n\n/**\n * @description: 将指定icon mark设置为Hover样式\n * @param {Icon} icon\n * @param {number} col\n * @param {number} row\n * @return {*}\n */\nexport function setIconHoverStyle(baseIcon: Icon, col: number, row: number, cellGroup: Group, scene: Scenegraph) {\n if (baseIcon.attribute.backgroundColor || baseIcon.attribute.hoverImage) {\n updateCellRangeIcon(\n col,\n row,\n // filter\n (icon: Icon) => icon.name === baseIcon.name,\n (icon: Icon) => {\n // hover展示背景\n if (icon.attribute.backgroundColor) {\n let iconBack = icon.parent.getChildByName('icon-back') as IRect;\n if (iconBack) {\n iconBack.setAttributes({\n x:\n (icon.attribute.x ?? 0) +\n // (icon.attribute.dx ?? 0) +\n (icon.AABBBounds.width() - icon.backgroundWidth) / 2,\n y: (icon.attribute.y ?? 0) + (icon.AABBBounds.height() - icon.backgroundHeight) / 2,\n dx: icon.attribute.dx ?? 0,\n dy: icon.attribute.dy ?? 0,\n width: icon.backgroundWidth,\n height: icon.backgroundHeight,\n fill: icon.attribute.backgroundColor,\n cornerRadius: 5,\n visible: true\n });\n } else {\n iconBack = createRect({\n x:\n (icon.attribute.x ?? 0) +\n // (icon.attribute.dx ?? 0) +\n (icon.AABBBounds.width() - icon.backgroundWidth) / 2,\n y: (icon.attribute.y ?? 0) + (icon.AABBBounds.height() - icon.backgroundHeight) / 2,\n dx: icon.attribute.dx ?? 0,\n dy: icon.attribute.dy ?? 0,\n width: icon.backgroundWidth,\n height: icon.backgroundHeight,\n fill: icon.attribute.backgroundColor,\n cornerRadius: 5,\n pickable: false,\n visible: true\n }) as IRect;\n iconBack.name = 'icon-back';\n // cellGroup.appendChild(iconBack);\n }\n icon.parent.insertBefore(iconBack, icon);\n }\n\n // hover更换图片\n if (icon.attribute.hoverImage && icon.attribute.image !== icon.attribute.hoverImage) {\n icon.image = icon.attribute.hoverImage;\n }\n },\n scene\n );\n }\n // hover展示tooltip\n if (baseIcon.tooltip) {\n const { x1: left, x2: right, y1: top, y2: bottom } = baseIcon.globalAABBBounds;\n const tooltipOptions: TooltipOptions = {\n content: baseIcon.tooltip.title,\n referencePosition: {\n rect: {\n left: left,\n right: right,\n top: top,\n bottom: bottom,\n width: baseIcon.globalAABBBounds.width(),\n height: baseIcon.globalAABBBounds.height()\n },\n placement: baseIcon.tooltip.placement\n },\n disappearDelay: baseIcon.tooltip.disappearDelay,\n style: Object.assign({}, scene.table.internalProps.theme?.tooltipStyle, baseIcon.tooltip?.style)\n };\n if (!scene.table.internalProps.tooltipHandler.isBinded(tooltipOptions)) {\n scene.table.showTooltip(col, row, tooltipOptions);\n }\n }\n}\n\n/**\n * @description: 将指定icon mark设置为Normal样式\n * @param {Icon} icon\n * @param {number} col\n * @param {number} row\n * @return {*}\n */\nexport function setIconNormalStyle(baseIcon: Icon, col: number, row: number, scene: Scenegraph) {\n if (baseIcon.attribute.backgroundColor || baseIcon.attribute.hoverImage) {\n updateCellRangeIcon(\n col,\n row,\n // filter\n (icon: Icon) => icon.name === baseIcon.name,\n (icon: Icon) => {\n const iconBack = icon.parent.getChildByName('icon-back') as IRect;\n if (iconBack) {\n iconBack.setAttribute('visible', false);\n }\n\n // hover更换图片\n if (icon.attribute.hoverImage && icon.attribute.image !== icon.attribute.originImage) {\n icon.image = icon.attribute.originImage;\n }\n },\n scene\n );\n }\n}\n\nexport function updateIcon(baseIcon: Icon, iconConfig: ColumnIconOption, col: number, row: number, scene: Scenegraph) {\n // 直接更新mark attribute\n // dealWithIcon(iconConfig, icon);\n // icon.name = iconConfig.name;\n // scene.updateNextFrame();\n const iconName = baseIcon.name;\n updateCellRangeIcon(\n col,\n row,\n // filter\n (icon: Icon) => icon.name === iconName,\n // dealer\n (icon: Icon) => {\n dealWithIcon(iconConfig, icon);\n icon.name = iconConfig.name;\n },\n scene\n );\n\n scene.updateNextFrame();\n}\n\nfunction resetSortIcon(oldSortCol: number, oldSortRow: number, iconConfig: ColumnIconOption, scene: Scenegraph) {\n const oldSortCell = scene.getCell(oldSortCol, oldSortRow);\n if (\n isValid(oldSortCell.mergeStartCol) &&\n isValid(oldSortCell.mergeStartRow) &&\n isValid(oldSortCell.mergeEndCol) &&\n isValid(oldSortCell.mergeEndRow)\n ) {\n for (let col = oldSortCell.mergeStartCol; col <= oldSortCell.mergeEndCol; col++) {\n for (let row = oldSortCell.mergeStartRow; row <= oldSortCell.mergeEndRow; row++) {\n let oldIconMark: Icon;\n scene.getCell(col, row).forEachChildren((mark: Icon) => {\n if (mark.attribute.funcType === 'sort') {\n oldIconMark = mark;\n return true;\n }\n return false;\n });\n if (oldIconMark) {\n dealWithIcon(iconConfig, oldIconMark);\n oldIconMark.name = iconConfig.name;\n }\n }\n }\n } else {\n let oldIconMark: Icon;\n oldSortCell.forEachChildren((mark: Icon) => {\n if (mark.attribute.funcType === 'sort') {\n oldIconMark = mark;\n return true;\n }\n return false;\n });\n if (oldIconMark) {\n // updateIcon(oldIconMark, oldIcon);\n dealWithIcon(iconConfig, oldIconMark);\n oldIconMark.name = iconConfig.name;\n }\n }\n}\n\nfunction checkSameCell(col1: number, row1: number, col2: number, row2: number, table: BaseTableAPI) {\n const range1 = table.getCellRange(col1, row1);\n const range2 = table.getCellRange(col2, row2);\n if (\n range1.start.col === range2.start.col &&\n range1.start.row === range2.start.row &&\n range1.end.col === range2.end.col &&\n range1.end.row === range2.end.row\n ) {\n return true;\n }\n return false;\n}\n\nexport function updateSortIcon(\n col: number,\n row: number,\n iconMark: Icon,\n order: SortOrder,\n oldSortCol: number,\n oldSortRow: number,\n oldIconMark: Icon | undefined,\n scene: Scenegraph\n) {\n // 更新icon\n const icon = scene.table.internalProps.headerHelper.getSortIcon(order, scene.table, col, row);\n if (iconMark) {\n updateIcon(iconMark, icon, col, row, scene);\n }\n\n // 更新旧frozen icon\n if (!checkSameCell(col, row, oldSortCol, oldSortRow, scene.table)) {\n const oldIcon = scene.table.internalProps.headerHelper.getSortIcon('normal', scene.table, oldSortCol, oldSortRow);\n if (oldIconMark) {\n updateIcon(oldIconMark, oldIcon, oldSortCol, oldSortRow, scene);\n } else {\n resetSortIcon(oldSortCol, oldSortRow, oldIcon, scene);\n }\n }\n}\n\nexport function updateFrozenIcon(scene: Scenegraph) {\n // 依据新旧冻结列确定更新范围\n for (let col = 0; col < scene.table.colCount; col++) {\n for (let row = 0; row < scene.table.columnHeaderLevelCount; row++) {\n updateCellRangeIcon(\n col,\n row,\n // filter\n (icon: Icon) => icon.attribute.funcType === 'frozen',\n // dealer\n (icon: Icon) => {\n const iconConfig = scene.table.internalProps.headerHelper.getFrozenIcon(col, row);\n dealWithIcon(iconConfig, icon);\n icon.name = iconConfig.name;\n },\n scene\n );\n }\n }\n}\n\nexport function updateHierarchyIcon(col: number, row: number, scene: Scenegraph) {\n let iconConfig: SvgIcon;\n if (scene.table.isHeader(col, row)) {\n iconConfig = scene.table.internalProps.headerHelper.getHierarchyIcon(col, row);\n } else {\n iconConfig = scene.table.internalProps.bodyHelper.getHierarchyIcon(col, row);\n }\n\n updateCellRangeIcon(\n col,\n row,\n // filter\n (icon: Icon) =>\n icon.attribute.funcType === IconFuncTypeEnum.collapse || icon.attribute.funcType === IconFuncTypeEnum.expand,\n // dealer\n (icon: Icon) => {\n dealWithIcon(iconConfig, icon);\n icon.name = iconConfig.name;\n },\n scene\n );\n}\n\nexport function updateCellGroupIcon(cellGroup: Group, filter: (icon: Icon) => boolean, dealer: (icon: Icon) => void) {\n cellGroup.forEachChildren((child: any) => {\n if (child.type === 'group') {\n updateCellGroupIcon(child, filter, dealer);\n } else if (filter(child)) {\n dealer(child);\n }\n });\n}\n\nexport function updateCellRangeIcon(\n col: number,\n row: number,\n filter: (icon: Icon) => boolean,\n dealer: (icon: Icon) => void,\n scene: Scenegraph\n) {\n const cellGroup = scene.getCell(col, row);\n if (\n cellGroup.role === 'cell' &&\n isValid(cellGroup.mergeStartCol) &&\n isValid(cellGroup.mergeStartRow) &&\n isValid(cellGroup.mergeEndCol) &&\n isValid(cellGroup.mergeEndRow)\n ) {\n const { colStart, colEnd, rowStart, rowEnd } = getCellMergeRange(cellGroup, scene);\n for (let col = colStart; col <= colEnd; col++) {\n for (let row = rowStart; row <= rowEnd; row++) {\n updateCellGroupIcon(scene.highPerformanceGetCell(col, row), filter, dealer);\n }\n }\n } else {\n updateCellGroupIcon(cellGroup, filter, dealer);\n }\n}\n\nexport function residentHoverIcon(col: number, row: number, scene: Scenegraph) {\n updateCellRangeIcon(\n col,\n row,\n // filter\n (icon: Icon) => icon.attribute.funcType === IconFuncTypeEnum.dropDown,\n // dealer\n (icon: Icon) => {\n (icon as any).oldVisibleTime = icon.attribute.visibleTime;\n icon.setAttribute('visibleTime', 'always');\n icon.setAttribute('opacity', 1);\n },\n scene\n );\n}\n\nexport function resetResidentHoverIcon(col: number, row: number, scene: Scenegraph) {\n updateCellRangeIcon(\n col,\n row,\n // filter\n (icon: Icon) => icon.attribute.funcType === IconFuncTypeEnum.dropDown,\n // dealer\n (icon: Icon) => {\n (icon as any).oldVisibleTime && icon.setAttribute('visibleTime', (icon as any).oldVisibleTime);\n icon.setAttribute('opacity', icon.attribute.visibleTime === 'always' ? 1 : 0);\n },\n scene\n );\n}\n"]}
@@ -219,7 +219,7 @@ function updateCellContentWidth(cellGroup, distWidth, cellHeight, detaX, autoRow
219
219
  const oldCellHeight = Math.round(Math.max(leftIconHeight, rightIconHeight, oldTextHeight) + padding[0] + padding[2]);
220
220
  if (cellGroup.forEachChildren((child => {
221
221
  var _a;
222
- if ("icon-left" === child.role) ; else if ("icon-right" === child.role) child.setAttribute("x", child.attribute.x + detaX); else if ("icon-absolute-right" === child.role) child.setAttribute("x", child.attribute.x + detaX); else if ("content" === child.name || "text" === child.name) {
222
+ if ("icon-left" === child.role) ; else if ("icon-right" === child.role) child.setAttribute("x", child.attribute.x + detaX); else if ("icon-absolute-right" === child.role) child.setAttribute("x", child.attribute.x + detaX); else if ("content" === child.name || "text" === child.name && "richtext" !== child.type) {
223
223
  const childTextAlign = null !== (_a = child.attribute.textAlign) && void 0 !== _a ? _a : textAlign;
224
224
  "center" === childTextAlign ? child.setAttribute("x", padding[3] + leftIconWidth + (distWidth - (padding[1] + padding[3]) - leftIconWidth - rightIconWidth) / 2) : "right" === childTextAlign && child.setAttribute("x", padding[3] + distWidth - (padding[1] + padding[3]) - rightIconWidth);
225
225
  } else "mark" === child.name && child.setAttribute("x", cellGroup.attribute.width);