@visactor/vtable-plugins 1.23.1 → 1.23.3-alpha.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.
- package/cjs/master-detail-plugin/config.d.ts +4 -1
- package/cjs/master-detail-plugin/config.js +26 -5
- package/cjs/master-detail-plugin/config.js.map +1 -1
- package/cjs/master-detail-plugin/core.d.ts +2 -1
- package/cjs/master-detail-plugin/core.js +6 -6
- package/cjs/master-detail-plugin/core.js.map +1 -1
- package/cjs/master-detail-plugin/events.d.ts +2 -1
- package/cjs/master-detail-plugin/events.js +3 -3
- package/cjs/master-detail-plugin/events.js.map +1 -1
- package/cjs/master-detail-plugin/types.d.ts +1 -0
- package/cjs/master-detail-plugin/types.js.map +1 -1
- package/dist/vtable-plugins.js +49 -15
- package/dist/vtable-plugins.min.js +3 -3
- package/es/master-detail-plugin/config.d.ts +4 -1
- package/es/master-detail-plugin/config.js +26 -5
- package/es/master-detail-plugin/config.js.map +1 -1
- package/es/master-detail-plugin/core.d.ts +2 -1
- package/es/master-detail-plugin/core.js +6 -6
- package/es/master-detail-plugin/core.js.map +1 -1
- package/es/master-detail-plugin/events.d.ts +2 -1
- package/es/master-detail-plugin/events.js +3 -3
- package/es/master-detail-plugin/events.js.map +1 -1
- package/es/master-detail-plugin/types.d.ts +1 -0
- package/es/master-detail-plugin/types.js.map +1 -1
- package/package.json +8 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/master-detail-plugin/events.ts"],"names":[],"mappings":"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","file":"events.js","sourcesContent":["import * as VTable from '@visactor/vtable';\r\n\r\n/**\r\n * 事件处理相关功能\r\n */\r\nexport class EventManager {\r\n private expandedRows: number[] = [];\r\n private originalResize: (() => void) | undefined;\r\n private eventHandlers: Array<{ type: string; handler: (...args: unknown[]) => unknown }> = [];\r\n private allExpandedRowsBeforeMove: Set<number> = new Set();\r\n private isCleanedUp = false;\r\n\r\n constructor(private table: VTable.ListTable) {}\r\n\r\n /**\r\n * 绑定事件处理器\r\n */\r\n bindEventHandlers(): void {\r\n const scrollHandler = () => this.onUpdateSubTablePositions();\r\n const resizeRowHandler = () => this.onUpdateSubTablePositionsForRow();\r\n this.table.on(VTable.TABLE_EVENT_TYPE.SCROLL, scrollHandler);\r\n this.table.on(VTable.TABLE_EVENT_TYPE.RESIZE_ROW, resizeRowHandler);\r\n this.eventHandlers.push(\r\n { type: VTable.TABLE_EVENT_TYPE.SCROLL, handler: scrollHandler },\r\n { type: VTable.TABLE_EVENT_TYPE.RESIZE_ROW, handler: resizeRowHandler }\r\n );\r\n this.wrapTableResizeMethod();\r\n this.bindTreeHierarchyStateChange();\r\n this.bindRowMoveEvents();\r\n }\r\n\r\n /**\r\n * 包装表格resize方法\r\n */\r\n private wrapTableResizeMethod(): void {\r\n const originalResize = this.table.resize.bind(this.table);\r\n this.originalResize = originalResize;\r\n this.table.resize = () => {\r\n originalResize();\r\n this.onUpdateSubTablePositions();\r\n };\r\n }\r\n\r\n /**\r\n * 处理单元格内容宽度更新后的事件\r\n */\r\n handleAfterUpdateCellContentWidth(eventData: {\r\n col: number;\r\n row: number;\r\n cellHeight: number;\r\n cellGroup: any;\r\n padding: [number, number, number, number];\r\n textBaseline: CanvasTextBaseline;\r\n }): void {\r\n const { col, row, cellGroup, cellHeight, padding, textBaseline } = eventData;\r\n // 检查是否为 customMergeCell,如果是则修正文字位置\r\n if (this.isCustomMergeCell(col, row)) {\r\n this.fixCustomMergeCellTextPosition(cellGroup, padding);\r\n return;\r\n }\r\n let effectiveCellHeight = cellHeight;\r\n if (cellGroup.col !== undefined && cellGroup.row !== undefined) {\r\n try {\r\n const recordIndex = this.table.getRecordShowIndexByCell(cellGroup.col, cellGroup.row);\r\n if (recordIndex !== undefined) {\r\n const originalHeight = this.getOriginalRowHeight?.(recordIndex) || 0;\r\n if (originalHeight > 0) {\r\n effectiveCellHeight = originalHeight;\r\n // 重新调整单元格内容的纵向位置,使用原始高度\r\n const newHeight = effectiveCellHeight - (padding[0] + padding[2]);\r\n cellGroup.forEachChildren((child: any) => {\r\n if (child.type === 'rect' || child.type === 'chart' || child.name === VTable.CUSTOM_CONTAINER_NAME) {\r\n return;\r\n }\r\n if (child.name === 'mark') {\r\n child.setAttribute('y', 0);\r\n } else if (textBaseline === 'middle') {\r\n child.setAttribute('y', padding[0] + (newHeight - child.AABBBounds.height()) / 2);\r\n } else if (textBaseline === 'bottom') {\r\n child.setAttribute('y', padding[0] + newHeight - child.AABBBounds.height());\r\n } else {\r\n child.setAttribute('y', padding[0]);\r\n }\r\n });\r\n }\r\n }\r\n } catch (error) {\r\n console.warn(\r\n 'Failed to get original row height in masterDetail mode (handleAfterUpdateCellContentWidth):',\r\n error\r\n );\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * 修正 customMergeCell 的文字位置\r\n */\r\n private fixCustomMergeCellTextPosition(cellGroup: any, padding: [number, number, number, number]): void {\r\n const { col, row } = cellGroup;\r\n const table = this.table as any;\r\n const customMerge = table.getCustomMerge(col, row);\r\n if (!customMerge || !customMerge.style || !customMerge.range) {\r\n return;\r\n }\r\n // 获取配置的 textAlign,默认为 'left'\r\n const configuredTextAlign = customMerge.style.textAlign || 'left';\r\n const { start, end } = customMerge.range;\r\n let totalMergeWidth = 0;\r\n let mergeStartX = 0;\r\n for (let c = start.col; c <= end.col; c++) {\r\n totalMergeWidth += table.getColWidth(c);\r\n }\r\n for (let c = 0; c < start.col; c++) {\r\n mergeStartX += table.getColWidth(c);\r\n }\r\n cellGroup.forEachChildren((child: any) => {\r\n if (child.name === 'text' || child.name === 'content') {\r\n let xPosition: number;\r\n if (configuredTextAlign === 'center') {\r\n // 居中对齐:合并区域起始位置 + padding + 合并区域宽度的一半\r\n xPosition = mergeStartX + padding[3] + (totalMergeWidth - padding[1] - padding[3]) / 2;\r\n } else if (configuredTextAlign === 'right') {\r\n // 右对齐:合并区域起始位置 + 合并区域总宽度 - 右padding\r\n xPosition = mergeStartX + totalMergeWidth - padding[1];\r\n } else {\r\n // 左对齐:合并区域起始位置 + 左padding\r\n xPosition = mergeStartX + padding[3];\r\n }\r\n child.setAttribute('x', xPosition);\r\n child.setAttribute('textAlign', configuredTextAlign);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * 检查是否为 customMergeCell\r\n */\r\n private isCustomMergeCell(col: number, row: number): boolean {\r\n try {\r\n const table = this.table;\r\n if (table && table.getCustomMerge) {\r\n const customMerge = table.getCustomMerge(col, row);\r\n return !!customMerge;\r\n }\r\n } catch (error) {\r\n console.warn('Error checking custom merge cell:', error);\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * 处理选择边框高度更新后的事件\r\n */\r\n handleAfterUpdateSelectBorderHeight(eventData: {\r\n startRow: number;\r\n endRow: number;\r\n currentHeight: number;\r\n selectComp: { rect: any; fillhandle?: any; role: string };\r\n }): void {\r\n const { startRow, endRow, selectComp } = eventData;\r\n // 判断是否为单选一个单元格\r\n const isSingleCellSelection = startRow === endRow;\r\n // 判断选中区域的最后一行是否为展开行\r\n const isLastRowExpanded = this.expandedRows.includes(endRow);\r\n if (isSingleCellSelection) {\r\n // 单选一个CellGroup,使用原始高度\r\n const headerCount = this.table.columnHeaderLevelCount || 0;\r\n const bodyRowIndex = startRow - headerCount;\r\n const originalHeight = this.getOriginalRowHeight?.(bodyRowIndex) || 0;\r\n if (originalHeight > 0 && originalHeight !== eventData.currentHeight) {\r\n selectComp.rect.setAttributes({\r\n height: originalHeight\r\n });\r\n if (selectComp.fillhandle) {\r\n const currentY = selectComp.rect.attribute.y;\r\n selectComp.fillhandle.setAttributes({\r\n y: currentY + originalHeight\r\n });\r\n }\r\n }\r\n } else if (isLastRowExpanded) {\r\n // 多行选中且最后一行是展开行,需要调整总高度\r\n const headerCount = this.table.columnHeaderLevelCount || 0;\r\n const lastRowBodyIndex = endRow - headerCount;\r\n const lastRowOriginalHeight = this.getOriginalRowHeight?.(lastRowBodyIndex) || 0;\r\n if (lastRowOriginalHeight > 0) {\r\n // 获取最后一行的当前逻辑高度\r\n const lastRowCurrentHeight = this.table.getRowHeight(endRow);\r\n // 计算调整后的总高度:当前总高度 - 最后一行当前高度 + 最后一行原始高度\r\n const adjustedTotalHeight = eventData.currentHeight - lastRowCurrentHeight + lastRowOriginalHeight;\r\n selectComp.rect.setAttributes({\r\n height: adjustedTotalHeight\r\n });\r\n if (selectComp.fillhandle) {\r\n const currentY = selectComp.rect.attribute.y;\r\n selectComp.fillhandle.setAttributes({\r\n y: currentY + adjustedTotalHeight\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * 排序前的操作\r\n */\r\n executeMasterDetailBeforeSort(): void {\r\n const table = this.table as any;\r\n if (table.internalProps.expandedRecordIndices && table.internalProps.expandedRecordIndices.length > 0) {\r\n table.internalProps._tempExpandedRecordIndices = [...table.internalProps.expandedRecordIndices];\r\n }\r\n if (this.expandedRows.length > 0) {\r\n const expandedRowIndices = [...this.expandedRows];\r\n expandedRowIndices.forEach(rowIndex => {\r\n try {\r\n const tableOptions = (table as any).options;\r\n if (tableOptions && tableOptions.pagination) {\r\n this.onCollapseRowToNoRealRecordIndex?.(rowIndex);\r\n } else {\r\n this.onCollapseRow?.(rowIndex);\r\n }\r\n } catch (e) {\r\n // 收起失败\r\n console.warn(`Failed to collapse row ${rowIndex} before sort:`, e);\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * 排序后的操作\r\n */\r\n executeMasterDetailAfterSort(): void {\r\n const table = this.table as any;\r\n const tempExpandedRecordIndices = table.internalProps._tempExpandedRecordIndices;\r\n if (tempExpandedRecordIndices && tempExpandedRecordIndices.length > 0) {\r\n const recordIndicesArray = [...tempExpandedRecordIndices];\r\n recordIndicesArray.forEach(recordIndex => {\r\n const bodyRowIndex = table.getBodyRowIndexByRecordIndex(recordIndex);\r\n if (bodyRowIndex >= 0) {\r\n try {\r\n const targetRowIndex = bodyRowIndex + table.columnHeaderLevelCount;\r\n this.onExpandRow?.(targetRowIndex);\r\n } catch (e) {\r\n console.warn(`Failed to expand row ${bodyRowIndex + table.columnHeaderLevelCount} after sort:`, e);\r\n }\r\n }\r\n });\r\n // 清理临时变量\r\n delete table.internalProps._tempExpandedRecordIndices;\r\n }\r\n }\r\n /**\r\n * 获取展开的行数组\r\n */\r\n getExpandedRows(): number[] {\r\n return this.expandedRows;\r\n }\r\n\r\n /**\r\n * 设置展开的行数组\r\n */\r\n setExpandedRows(rows: number[]): void {\r\n this.expandedRows = rows;\r\n }\r\n\r\n /**\r\n * 添加展开行\r\n */\r\n addExpandedRow(rowIndex: number): void {\r\n if (!this.expandedRows.includes(rowIndex)) {\r\n this.expandedRows.push(rowIndex);\r\n }\r\n }\r\n\r\n /**\r\n * 移除展开行\r\n */\r\n removeExpandedRow(rowIndex: number): void {\r\n const index = this.expandedRows.indexOf(rowIndex);\r\n if (index > -1) {\r\n this.expandedRows.splice(index, 1);\r\n }\r\n }\r\n\r\n /**\r\n * 检查行是否展开\r\n */\r\n isRowExpanded(rowIndex: number): boolean {\r\n return this.expandedRows.includes(rowIndex);\r\n }\r\n\r\n /**\r\n * 绑定树状态变化事件\r\n */\r\n private bindTreeHierarchyStateChange(): void {\r\n const hierarchyStateChangeHandler = (args: unknown) => {\r\n const { col, row } = args as {\r\n col: number;\r\n row: number;\r\n };\r\n const record = this.getRecordByRowIndex(row - this.table.columnHeaderLevelCount);\r\n if (record && typeof record === 'object' && 'children' in record && record.children === true) {\r\n return;\r\n }\r\n this.onToggleRowExpand?.(row, col);\r\n };\r\n this.table.on(VTable.TABLE_EVENT_TYPE.TREE_HIERARCHY_STATE_CHANGE, hierarchyStateChangeHandler);\r\n this.eventHandlers.push({\r\n type: VTable.TABLE_EVENT_TYPE.TREE_HIERARCHY_STATE_CHANGE,\r\n handler: hierarchyStateChangeHandler\r\n });\r\n }\r\n\r\n /**\r\n * 获取指定行的记录数据\r\n */\r\n private getRecordByRowIndex(bodyRowIndex: number): unknown {\r\n try {\r\n const table = this.table;\r\n const recordIndex = table.getRecordShowIndexByCell(0, bodyRowIndex + table.columnHeaderLevelCount);\r\n return table.dataSource.get(recordIndex);\r\n } catch (error) {\r\n console.warn('Error getting record by row index:', error);\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * 绑定行移动事件处理\r\n */\r\n private bindRowMoveEvents(): void {\r\n const moveStartHandler = (args: any) => {\r\n if (!args || typeof args.col !== 'number' || typeof args.row !== 'number') {\r\n return;\r\n }\r\n const { col, row } = args;\r\n const cellLocation = this.table.getCellLocation(col, row);\r\n const isRowMove =\r\n cellLocation === 'rowHeader' || (this.table.internalProps.layoutMap as any).isSeriesNumberInBody?.(col, row);\r\n if (!isRowMove) {\r\n return;\r\n }\r\n this.allExpandedRowsBeforeMove.clear();\r\n const currentExpandedRows = [...this.expandedRows];\r\n currentExpandedRows.forEach(rowIndex => {\r\n this.allExpandedRowsBeforeMove.add(rowIndex);\r\n });\r\n currentExpandedRows.forEach(rowIndex => {\r\n this.onCollapseRow?.(rowIndex);\r\n });\r\n };\r\n\r\n const moveSuccessHandler = (args: any) => {\r\n // 如果没有记录的展开状态,说明不是行移动或没有展开的行\r\n if (this.allExpandedRowsBeforeMove.size === 0) {\r\n return;\r\n }\r\n\r\n // 直接从columnMove状态获取原始的移动参数\r\n const columnMoveState = this.table.stateManager?.columnMove;\r\n const { colSource, rowSource, colTarget, rowTarget } = columnMoveState;\r\n // 移动成功后,恢复所有之前展开的行\r\n setTimeout(() => {\r\n const sourceRowIndex = rowSource;\r\n const targetRowIndex = rowTarget;\r\n const moveDirection = targetRowIndex > sourceRowIndex ? 'down' : 'up';\r\n // 计算移动后各行的新位置并重新展开\r\n this.allExpandedRowsBeforeMove.forEach(originalRowIndex => {\r\n let newRowIndex = originalRowIndex;\r\n\r\n if (sourceRowIndex === originalRowIndex) {\r\n newRowIndex = targetRowIndex;\r\n } else if (moveDirection === 'down') {\r\n if (originalRowIndex <= targetRowIndex && originalRowIndex > sourceRowIndex) {\r\n newRowIndex = originalRowIndex - 1;\r\n }\r\n } else if (moveDirection === 'up') {\r\n if (originalRowIndex >= targetRowIndex && originalRowIndex < sourceRowIndex) {\r\n newRowIndex = originalRowIndex + 1;\r\n }\r\n }\r\n this.onExpandRow?.(newRowIndex);\r\n });\r\n // 清空状态记录\r\n this.allExpandedRowsBeforeMove.clear();\r\n }, 0);\r\n };\r\n\r\n const moveFailHandler = (args: any) => {\r\n // 如果没有记录的展开状态,说明不是行移动或没有展开的行\r\n if (this.allExpandedRowsBeforeMove.size === 0) {\r\n return;\r\n }\r\n\r\n // 移动失败时,在原位置恢复所有展开的行\r\n setTimeout(() => {\r\n this.allExpandedRowsBeforeMove.forEach(originalRowIndex => {\r\n this.onExpandRow?.(originalRowIndex);\r\n });\r\n this.allExpandedRowsBeforeMove.clear();\r\n }, 0);\r\n };\r\n\r\n this.table.on(VTable.TABLE_EVENT_TYPE.CHANGE_HEADER_POSITION_START, moveStartHandler);\r\n this.table.on(VTable.TABLE_EVENT_TYPE.CHANGE_HEADER_POSITION, moveSuccessHandler);\r\n this.table.on(VTable.TABLE_EVENT_TYPE.CHANGE_HEADER_POSITION_FAIL, moveFailHandler);\r\n this.eventHandlers.push(\r\n { type: VTable.TABLE_EVENT_TYPE.CHANGE_HEADER_POSITION_START, handler: moveStartHandler },\r\n { type: VTable.TABLE_EVENT_TYPE.CHANGE_HEADER_POSITION, handler: moveSuccessHandler },\r\n { type: VTable.TABLE_EVENT_TYPE.CHANGE_HEADER_POSITION_FAIL, handler: moveFailHandler }\r\n );\r\n }\r\n\r\n /**\r\n * 清理事件处理器\r\n */\r\n cleanup(): void {\r\n if (this.isCleanedUp) {\r\n return; // 防止重复清理\r\n }\r\n this.isCleanedUp = true;\r\n // 清理展开状态数组\r\n this.expandedRows.length = 0;\r\n // 清理行移动状态\r\n this.allExpandedRowsBeforeMove.clear();\r\n // 恢复原始的resize方法\r\n if (this.originalResize && this.table) {\r\n try {\r\n this.table.resize = this.originalResize;\r\n this.originalResize = undefined;\r\n } catch (error) {\r\n console.warn('Error restoring original resize method:', error);\r\n }\r\n }\r\n // 移除所有事件监听器\r\n try {\r\n if (this.table) {\r\n this.eventHandlers.forEach(({ type, handler }) => {\r\n try {\r\n (this.table.off as (type: string, handler: unknown) => void)(type, handler);\r\n } catch (error) {\r\n console.warn(`Error removing event listener ${type}:`, error);\r\n }\r\n });\r\n this.eventHandlers.length = 0;\r\n }\r\n } catch (error) {\r\n console.warn('Error removing event listeners:', error);\r\n }\r\n // 清理回调函数引用\r\n this.onUpdateSubTablePositions = undefined;\r\n this.onUpdateSubTablePositionsForRow = undefined;\r\n this.onExpandRow = undefined;\r\n this.onCollapseRow = undefined;\r\n this.onCollapseRowToNoRealRecordIndex = undefined;\r\n this.onToggleRowExpand = undefined;\r\n this.getOriginalRowHeight = undefined;\r\n // 清理表格引用,避免循环引用\r\n (this as unknown as { table: unknown }).table = null;\r\n }\r\n\r\n // 回调函数,需要从外部注入\r\n private onUpdateSubTablePositions?: () => void;\r\n private onUpdateSubTablePositionsForRow?: () => void;\r\n private onExpandRow?: (rowIndex: number, colIndex?: number) => void;\r\n private onCollapseRow?: (rowIndex: number, colIndex?: number) => void;\r\n private onCollapseRowToNoRealRecordIndex?: (rowIndex: number) => void;\r\n private onToggleRowExpand?: (rowIndex: number, colIndex?: number) => void;\r\n private getOriginalRowHeight?: (bodyRowIndex: number) => number;\r\n\r\n /**\r\n * 设置回调函数\r\n */\r\n setCallbacks(callbacks: {\r\n onUpdateSubTablePositions?: () => void;\r\n onUpdateSubTablePositionsForRow?: () => void;\r\n onExpandRow?: (rowIndex: number, colIndex?: number) => void;\r\n onCollapseRow?: (rowIndex: number, colIndex?: number) => void;\r\n onCollapseRowToNoRealRecordIndex?: (rowIndex: number) => void;\r\n onToggleRowExpand?: (rowIndex: number, colIndex?: number) => void;\r\n getOriginalRowHeight?: (bodyRowIndex: number) => number;\r\n }): void {\r\n this.onUpdateSubTablePositions = callbacks.onUpdateSubTablePositions;\r\n this.onUpdateSubTablePositionsForRow = callbacks.onUpdateSubTablePositionsForRow;\r\n this.onExpandRow = callbacks.onExpandRow;\r\n this.onCollapseRow = callbacks.onCollapseRow;\r\n this.onCollapseRowToNoRealRecordIndex = callbacks.onCollapseRowToNoRealRecordIndex;\r\n this.onToggleRowExpand = callbacks.onToggleRowExpand;\r\n this.getOriginalRowHeight = callbacks.getOriginalRowHeight;\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/master-detail-plugin/events.ts"],"names":[],"mappings":"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","file":"events.js","sourcesContent":["import * as VTable from '@visactor/vtable';\r\n\r\n/**\r\n * 事件处理相关功能\r\n */\r\nexport class EventManager {\r\n private expandedRows: number[] = [];\r\n private originalResize: (() => void) | undefined;\r\n private eventHandlers: Array<{ type: string; handler: (...args: unknown[]) => unknown }> = [];\r\n private allExpandedRowsBeforeMove: Set<number> = new Set();\r\n private isCleanedUp = false;\r\n private childrenKey: string;\r\n\r\n constructor(private table: VTable.ListTable, childrenKey: string = 'children') {\r\n this.childrenKey = childrenKey;\r\n }\r\n\r\n /**\r\n * 绑定事件处理器\r\n */\r\n bindEventHandlers(): void {\r\n const scrollHandler = () => this.onUpdateSubTablePositions();\r\n const resizeRowHandler = () => this.onUpdateSubTablePositionsForRow();\r\n this.table.on(VTable.TABLE_EVENT_TYPE.SCROLL, scrollHandler);\r\n this.table.on(VTable.TABLE_EVENT_TYPE.RESIZE_ROW, resizeRowHandler);\r\n this.eventHandlers.push(\r\n { type: VTable.TABLE_EVENT_TYPE.SCROLL, handler: scrollHandler },\r\n { type: VTable.TABLE_EVENT_TYPE.RESIZE_ROW, handler: resizeRowHandler }\r\n );\r\n this.wrapTableResizeMethod();\r\n this.bindTreeHierarchyStateChange();\r\n this.bindRowMoveEvents();\r\n }\r\n\r\n /**\r\n * 包装表格resize方法\r\n */\r\n private wrapTableResizeMethod(): void {\r\n const originalResize = this.table.resize.bind(this.table);\r\n this.originalResize = originalResize;\r\n this.table.resize = () => {\r\n originalResize();\r\n this.onUpdateSubTablePositions();\r\n };\r\n }\r\n\r\n /**\r\n * 处理单元格内容宽度更新后的事件\r\n */\r\n handleAfterUpdateCellContentWidth(eventData: {\r\n col: number;\r\n row: number;\r\n cellHeight: number;\r\n cellGroup: any;\r\n padding: [number, number, number, number];\r\n textBaseline: CanvasTextBaseline;\r\n }): void {\r\n const { col, row, cellGroup, cellHeight, padding, textBaseline } = eventData;\r\n // 检查是否为 customMergeCell,如果是则修正文字位置\r\n if (this.isCustomMergeCell(col, row)) {\r\n this.fixCustomMergeCellTextPosition(cellGroup, padding);\r\n return;\r\n }\r\n let effectiveCellHeight = cellHeight;\r\n if (cellGroup.col !== undefined && cellGroup.row !== undefined) {\r\n try {\r\n const recordIndex = this.table.getRecordShowIndexByCell(cellGroup.col, cellGroup.row);\r\n if (recordIndex !== undefined) {\r\n const originalHeight = this.getOriginalRowHeight?.(recordIndex) || 0;\r\n if (originalHeight > 0) {\r\n effectiveCellHeight = originalHeight;\r\n // 重新调整单元格内容的纵向位置,使用原始高度\r\n const newHeight = effectiveCellHeight - (padding[0] + padding[2]);\r\n cellGroup.forEachChildren((child: any) => {\r\n if (child.type === 'rect' || child.type === 'chart' || child.name === VTable.CUSTOM_CONTAINER_NAME) {\r\n return;\r\n }\r\n if (child.name === 'mark') {\r\n child.setAttribute('y', 0);\r\n } else if (textBaseline === 'middle') {\r\n child.setAttribute('y', padding[0] + (newHeight - child.AABBBounds.height()) / 2);\r\n } else if (textBaseline === 'bottom') {\r\n child.setAttribute('y', padding[0] + newHeight - child.AABBBounds.height());\r\n } else {\r\n child.setAttribute('y', padding[0]);\r\n }\r\n });\r\n }\r\n }\r\n } catch (error) {\r\n console.warn(\r\n 'Failed to get original row height in masterDetail mode (handleAfterUpdateCellContentWidth):',\r\n error\r\n );\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * 修正 customMergeCell 的文字位置\r\n */\r\n private fixCustomMergeCellTextPosition(cellGroup: any, padding: [number, number, number, number]): void {\r\n const { col, row } = cellGroup;\r\n const table = this.table as any;\r\n const customMerge = table.getCustomMerge(col, row);\r\n if (!customMerge || !customMerge.style || !customMerge.range) {\r\n return;\r\n }\r\n // 获取配置的 textAlign,默认为 'left'\r\n const configuredTextAlign = customMerge.style.textAlign || 'left';\r\n const { start, end } = customMerge.range;\r\n let totalMergeWidth = 0;\r\n let mergeStartX = 0;\r\n for (let c = start.col; c <= end.col; c++) {\r\n totalMergeWidth += table.getColWidth(c);\r\n }\r\n for (let c = 0; c < start.col; c++) {\r\n mergeStartX += table.getColWidth(c);\r\n }\r\n cellGroup.forEachChildren((child: any) => {\r\n if (child.name === 'text' || child.name === 'content') {\r\n let xPosition: number;\r\n if (configuredTextAlign === 'center') {\r\n // 居中对齐:合并区域起始位置 + padding + 合并区域宽度的一半\r\n xPosition = mergeStartX + padding[3] + (totalMergeWidth - padding[1] - padding[3]) / 2;\r\n } else if (configuredTextAlign === 'right') {\r\n // 右对齐:合并区域起始位置 + 合并区域总宽度 - 右padding\r\n xPosition = mergeStartX + totalMergeWidth - padding[1];\r\n } else {\r\n // 左对齐:合并区域起始位置 + 左padding\r\n xPosition = mergeStartX + padding[3];\r\n }\r\n child.setAttribute('x', xPosition);\r\n child.setAttribute('textAlign', configuredTextAlign);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * 检查是否为 customMergeCell\r\n */\r\n private isCustomMergeCell(col: number, row: number): boolean {\r\n try {\r\n const table = this.table;\r\n if (table && table.getCustomMerge) {\r\n const customMerge = table.getCustomMerge(col, row);\r\n return !!customMerge;\r\n }\r\n } catch (error) {\r\n console.warn('Error checking custom merge cell:', error);\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * 处理选择边框高度更新后的事件\r\n */\r\n handleAfterUpdateSelectBorderHeight(eventData: {\r\n startRow: number;\r\n endRow: number;\r\n currentHeight: number;\r\n selectComp: { rect: any; fillhandle?: any; role: string };\r\n }): void {\r\n const { startRow, endRow, selectComp } = eventData;\r\n // 判断是否为单选一个单元格\r\n const isSingleCellSelection = startRow === endRow;\r\n // 判断选中区域的最后一行是否为展开行\r\n const isLastRowExpanded = this.expandedRows.includes(endRow);\r\n if (isSingleCellSelection) {\r\n // 单选一个CellGroup,使用原始高度\r\n const headerCount = this.table.columnHeaderLevelCount || 0;\r\n const bodyRowIndex = startRow - headerCount;\r\n const originalHeight = this.getOriginalRowHeight?.(bodyRowIndex) || 0;\r\n if (originalHeight > 0 && originalHeight !== eventData.currentHeight) {\r\n selectComp.rect.setAttributes({\r\n height: originalHeight\r\n });\r\n if (selectComp.fillhandle) {\r\n const currentY = selectComp.rect.attribute.y;\r\n selectComp.fillhandle.setAttributes({\r\n y: currentY + originalHeight\r\n });\r\n }\r\n }\r\n } else if (isLastRowExpanded) {\r\n // 多行选中且最后一行是展开行,需要调整总高度\r\n const headerCount = this.table.columnHeaderLevelCount || 0;\r\n const lastRowBodyIndex = endRow - headerCount;\r\n const lastRowOriginalHeight = this.getOriginalRowHeight?.(lastRowBodyIndex) || 0;\r\n if (lastRowOriginalHeight > 0) {\r\n // 获取最后一行的当前逻辑高度\r\n const lastRowCurrentHeight = this.table.getRowHeight(endRow);\r\n // 计算调整后的总高度:当前总高度 - 最后一行当前高度 + 最后一行原始高度\r\n const adjustedTotalHeight = eventData.currentHeight - lastRowCurrentHeight + lastRowOriginalHeight;\r\n selectComp.rect.setAttributes({\r\n height: adjustedTotalHeight\r\n });\r\n if (selectComp.fillhandle) {\r\n const currentY = selectComp.rect.attribute.y;\r\n selectComp.fillhandle.setAttributes({\r\n y: currentY + adjustedTotalHeight\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * 排序前的操作\r\n */\r\n executeMasterDetailBeforeSort(): void {\r\n const table = this.table as any;\r\n if (table.internalProps.expandedRecordIndices && table.internalProps.expandedRecordIndices.length > 0) {\r\n table.internalProps._tempExpandedRecordIndices = [...table.internalProps.expandedRecordIndices];\r\n }\r\n if (this.expandedRows.length > 0) {\r\n const expandedRowIndices = [...this.expandedRows];\r\n expandedRowIndices.forEach(rowIndex => {\r\n try {\r\n const tableOptions = (table as any).options;\r\n if (tableOptions && tableOptions.pagination) {\r\n this.onCollapseRowToNoRealRecordIndex?.(rowIndex);\r\n } else {\r\n this.onCollapseRow?.(rowIndex);\r\n }\r\n } catch (e) {\r\n // 收起失败\r\n console.warn(`Failed to collapse row ${rowIndex} before sort:`, e);\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * 排序后的操作\r\n */\r\n executeMasterDetailAfterSort(): void {\r\n const table = this.table as any;\r\n const tempExpandedRecordIndices = table.internalProps._tempExpandedRecordIndices;\r\n if (tempExpandedRecordIndices && tempExpandedRecordIndices.length > 0) {\r\n const recordIndicesArray = [...tempExpandedRecordIndices];\r\n recordIndicesArray.forEach(recordIndex => {\r\n const bodyRowIndex = table.getBodyRowIndexByRecordIndex(recordIndex);\r\n if (bodyRowIndex >= 0) {\r\n try {\r\n const targetRowIndex = bodyRowIndex + table.columnHeaderLevelCount;\r\n this.onExpandRow?.(targetRowIndex);\r\n } catch (e) {\r\n console.warn(`Failed to expand row ${bodyRowIndex + table.columnHeaderLevelCount} after sort:`, e);\r\n }\r\n }\r\n });\r\n // 清理临时变量\r\n delete table.internalProps._tempExpandedRecordIndices;\r\n }\r\n }\r\n /**\r\n * 获取展开的行数组\r\n */\r\n getExpandedRows(): number[] {\r\n return this.expandedRows;\r\n }\r\n\r\n /**\r\n * 设置展开的行数组\r\n */\r\n setExpandedRows(rows: number[]): void {\r\n this.expandedRows = rows;\r\n }\r\n\r\n /**\r\n * 添加展开行\r\n */\r\n addExpandedRow(rowIndex: number): void {\r\n if (!this.expandedRows.includes(rowIndex)) {\r\n this.expandedRows.push(rowIndex);\r\n }\r\n }\r\n\r\n /**\r\n * 移除展开行\r\n */\r\n removeExpandedRow(rowIndex: number): void {\r\n const index = this.expandedRows.indexOf(rowIndex);\r\n if (index > -1) {\r\n this.expandedRows.splice(index, 1);\r\n }\r\n }\r\n\r\n /**\r\n * 检查行是否展开\r\n */\r\n isRowExpanded(rowIndex: number): boolean {\r\n return this.expandedRows.includes(rowIndex);\r\n }\r\n\r\n /**\r\n * 绑定树状态变化事件\r\n */\r\n private bindTreeHierarchyStateChange(): void {\r\n const hierarchyStateChangeHandler = (args: unknown) => {\r\n const { col, row } = args as {\r\n col: number;\r\n row: number;\r\n };\r\n const record = this.getRecordByRowIndex(row - this.table.columnHeaderLevelCount);\r\n if (\r\n record &&\r\n typeof record === 'object' &&\r\n this.childrenKey in record &&\r\n (record as Record<string, unknown>)[this.childrenKey] === true\r\n ) {\r\n return;\r\n }\r\n this.onToggleRowExpand?.(row, col);\r\n };\r\n this.table.on(VTable.TABLE_EVENT_TYPE.TREE_HIERARCHY_STATE_CHANGE, hierarchyStateChangeHandler);\r\n this.eventHandlers.push({\r\n type: VTable.TABLE_EVENT_TYPE.TREE_HIERARCHY_STATE_CHANGE,\r\n handler: hierarchyStateChangeHandler\r\n });\r\n }\r\n\r\n /**\r\n * 获取指定行的记录数据\r\n */\r\n private getRecordByRowIndex(bodyRowIndex: number): unknown {\r\n try {\r\n const table = this.table;\r\n const recordIndex = table.getRecordShowIndexByCell(0, bodyRowIndex + table.columnHeaderLevelCount);\r\n return table.dataSource.get(recordIndex);\r\n } catch (error) {\r\n console.warn('Error getting record by row index:', error);\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * 绑定行移动事件处理\r\n */\r\n private bindRowMoveEvents(): void {\r\n const moveStartHandler = (args: any) => {\r\n if (!args || typeof args.col !== 'number' || typeof args.row !== 'number') {\r\n return;\r\n }\r\n const { col, row } = args;\r\n const cellLocation = this.table.getCellLocation(col, row);\r\n const isRowMove =\r\n cellLocation === 'rowHeader' || (this.table.internalProps.layoutMap as any).isSeriesNumberInBody?.(col, row);\r\n if (!isRowMove) {\r\n return;\r\n }\r\n this.allExpandedRowsBeforeMove.clear();\r\n const currentExpandedRows = [...this.expandedRows];\r\n currentExpandedRows.forEach(rowIndex => {\r\n this.allExpandedRowsBeforeMove.add(rowIndex);\r\n });\r\n currentExpandedRows.forEach(rowIndex => {\r\n this.onCollapseRow?.(rowIndex);\r\n });\r\n };\r\n\r\n const moveSuccessHandler = (args: any) => {\r\n // 如果没有记录的展开状态,说明不是行移动或没有展开的行\r\n if (this.allExpandedRowsBeforeMove.size === 0) {\r\n return;\r\n }\r\n\r\n // 直接从columnMove状态获取原始的移动参数\r\n const columnMoveState = this.table.stateManager?.columnMove;\r\n const { colSource, rowSource, colTarget, rowTarget } = columnMoveState;\r\n // 移动成功后,恢复所有之前展开的行\r\n setTimeout(() => {\r\n const sourceRowIndex = rowSource;\r\n const targetRowIndex = rowTarget;\r\n const moveDirection = targetRowIndex > sourceRowIndex ? 'down' : 'up';\r\n // 计算移动后各行的新位置并重新展开\r\n this.allExpandedRowsBeforeMove.forEach(originalRowIndex => {\r\n let newRowIndex = originalRowIndex;\r\n\r\n if (sourceRowIndex === originalRowIndex) {\r\n newRowIndex = targetRowIndex;\r\n } else if (moveDirection === 'down') {\r\n if (originalRowIndex <= targetRowIndex && originalRowIndex > sourceRowIndex) {\r\n newRowIndex = originalRowIndex - 1;\r\n }\r\n } else if (moveDirection === 'up') {\r\n if (originalRowIndex >= targetRowIndex && originalRowIndex < sourceRowIndex) {\r\n newRowIndex = originalRowIndex + 1;\r\n }\r\n }\r\n this.onExpandRow?.(newRowIndex);\r\n });\r\n // 清空状态记录\r\n this.allExpandedRowsBeforeMove.clear();\r\n }, 0);\r\n };\r\n\r\n const moveFailHandler = (args: any) => {\r\n // 如果没有记录的展开状态,说明不是行移动或没有展开的行\r\n if (this.allExpandedRowsBeforeMove.size === 0) {\r\n return;\r\n }\r\n\r\n // 移动失败时,在原位置恢复所有展开的行\r\n setTimeout(() => {\r\n this.allExpandedRowsBeforeMove.forEach(originalRowIndex => {\r\n this.onExpandRow?.(originalRowIndex);\r\n });\r\n this.allExpandedRowsBeforeMove.clear();\r\n }, 0);\r\n };\r\n\r\n this.table.on(VTable.TABLE_EVENT_TYPE.CHANGE_HEADER_POSITION_START, moveStartHandler);\r\n this.table.on(VTable.TABLE_EVENT_TYPE.CHANGE_HEADER_POSITION, moveSuccessHandler);\r\n this.table.on(VTable.TABLE_EVENT_TYPE.CHANGE_HEADER_POSITION_FAIL, moveFailHandler);\r\n this.eventHandlers.push(\r\n { type: VTable.TABLE_EVENT_TYPE.CHANGE_HEADER_POSITION_START, handler: moveStartHandler },\r\n { type: VTable.TABLE_EVENT_TYPE.CHANGE_HEADER_POSITION, handler: moveSuccessHandler },\r\n { type: VTable.TABLE_EVENT_TYPE.CHANGE_HEADER_POSITION_FAIL, handler: moveFailHandler }\r\n );\r\n }\r\n\r\n /**\r\n * 清理事件处理器\r\n */\r\n cleanup(): void {\r\n if (this.isCleanedUp) {\r\n return; // 防止重复清理\r\n }\r\n this.isCleanedUp = true;\r\n // 清理展开状态数组\r\n this.expandedRows.length = 0;\r\n // 清理行移动状态\r\n this.allExpandedRowsBeforeMove.clear();\r\n // 恢复原始的resize方法\r\n if (this.originalResize && this.table) {\r\n try {\r\n this.table.resize = this.originalResize;\r\n this.originalResize = undefined;\r\n } catch (error) {\r\n console.warn('Error restoring original resize method:', error);\r\n }\r\n }\r\n // 移除所有事件监听器\r\n try {\r\n if (this.table) {\r\n this.eventHandlers.forEach(({ type, handler }) => {\r\n try {\r\n (this.table.off as (type: string, handler: unknown) => void)(type, handler);\r\n } catch (error) {\r\n console.warn(`Error removing event listener ${type}:`, error);\r\n }\r\n });\r\n this.eventHandlers.length = 0;\r\n }\r\n } catch (error) {\r\n console.warn('Error removing event listeners:', error);\r\n }\r\n // 清理回调函数引用\r\n this.onUpdateSubTablePositions = undefined;\r\n this.onUpdateSubTablePositionsForRow = undefined;\r\n this.onExpandRow = undefined;\r\n this.onCollapseRow = undefined;\r\n this.onCollapseRowToNoRealRecordIndex = undefined;\r\n this.onToggleRowExpand = undefined;\r\n this.getOriginalRowHeight = undefined;\r\n // 清理表格引用,避免循环引用\r\n (this as unknown as { table: unknown }).table = null;\r\n }\r\n\r\n // 回调函数,需要从外部注入\r\n private onUpdateSubTablePositions?: () => void;\r\n private onUpdateSubTablePositionsForRow?: () => void;\r\n private onExpandRow?: (rowIndex: number, colIndex?: number) => void;\r\n private onCollapseRow?: (rowIndex: number, colIndex?: number) => void;\r\n private onCollapseRowToNoRealRecordIndex?: (rowIndex: number) => void;\r\n private onToggleRowExpand?: (rowIndex: number, colIndex?: number) => void;\r\n private getOriginalRowHeight?: (bodyRowIndex: number) => number;\r\n\r\n /**\r\n * 设置回调函数\r\n */\r\n setCallbacks(callbacks: {\r\n onUpdateSubTablePositions?: () => void;\r\n onUpdateSubTablePositionsForRow?: () => void;\r\n onExpandRow?: (rowIndex: number, colIndex?: number) => void;\r\n onCollapseRow?: (rowIndex: number, colIndex?: number) => void;\r\n onCollapseRowToNoRealRecordIndex?: (rowIndex: number) => void;\r\n onToggleRowExpand?: (rowIndex: number, colIndex?: number) => void;\r\n getOriginalRowHeight?: (bodyRowIndex: number) => number;\r\n }): void {\r\n this.onUpdateSubTablePositions = callbacks.onUpdateSubTablePositions;\r\n this.onUpdateSubTablePositionsForRow = callbacks.onUpdateSubTablePositionsForRow;\r\n this.onExpandRow = callbacks.onExpandRow;\r\n this.onCollapseRow = callbacks.onCollapseRow;\r\n this.onCollapseRowToNoRealRecordIndex = callbacks.onCollapseRowToNoRealRecordIndex;\r\n this.onToggleRowExpand = callbacks.onToggleRowExpand;\r\n this.getOriginalRowHeight = callbacks.getOriginalRowHeight;\r\n }\r\n}\r\n"]}
|
|
@@ -8,6 +8,7 @@ export interface DetailTableOptions extends VTable.ListTableConstructorOptions {
|
|
|
8
8
|
}
|
|
9
9
|
export interface MasterDetailPluginOptions {
|
|
10
10
|
enableCheckboxCascade?: boolean;
|
|
11
|
+
childrenKey?: string;
|
|
11
12
|
detailTableOptions?: DetailTableOptions | ((params: {
|
|
12
13
|
data: unknown;
|
|
13
14
|
bodyRowIndex: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/master-detail-plugin/types.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"sources":["../src/master-detail-plugin/types.ts"],"names":[],"mappings":";;;AA+EA,SAAgB,iBAAiB,CAAC,CAAkB,EAAE,CAAkB;IACtE,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;QAClD,OAAO,CAAC,KAAK,CAAC,CAAC;KAChB;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QACxC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;KAC3E;IAED,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QAC7C,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;KACrC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;QAC7C,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;KACrC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAfD,8CAeC;AAKD,SAAgB,mBAAmB,CAAC,KAA4B,EAAE,MAAuB;IACvF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;AAC7D,CAAC;AAFD,kDAEC;AAKD,SAAgB,uBAAuB,CAAC,KAA4B,EAAE,MAAuB;IAC3F,OAAO,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;AAClE,CAAC;AAFD,0DAEC","file":"types.js","sourcesContent":["import type * as VTable from '@visactor/vtable';\r\nimport type { Group } from '@visactor/vtable/src/vrender';\r\n\r\n/** 子表配置接口 - 继承 ListTableConstructorOptions */\r\nexport interface DetailTableOptions extends VTable.ListTableConstructorOptions {\r\n style?: {\r\n margin?: number | [number, number] | [number, number, number, number];\r\n height?: number | 'auto';\r\n };\r\n}\r\n\r\n/**\r\n * 主从表插件配置选项\r\n */\r\nexport interface MasterDetailPluginOptions {\r\n /** 是否启用checkbox级联功能 - 控制主从表之间的复选框联动,默认为 true */\r\n enableCheckboxCascade?: boolean;\r\n /** 子表数据的字段名 - 用于指定记录中子表数据所在的属性名,默认为 'children' */\r\n childrenKey?: string;\r\n /** 子表配置 - 可以是静态配置对象或动态配置函数 */\r\n detailTableOptions?: DetailTableOptions | ((params: { data: unknown; bodyRowIndex: number }) => DetailTableOptions);\r\n}\r\n\r\n/**\r\n * 子表checkbox状态接口\r\n */\r\nexport interface SubTableCheckboxState {\r\n checkedState: Record<string, Record<string | number, boolean | 'indeterminate'>>;\r\n headerCheckedState: Record<string | number, boolean | 'indeterminate'>;\r\n}\r\n\r\n/**\r\n * 内部属性扩展接口\r\n */\r\nexport interface InternalProps {\r\n expandedRecordIndices: (number | number[])[];\r\n subTableInstances: Map<number, VTable.ListTable>;\r\n originalRowHeights: Map<number, number>;\r\n _tempExpandedRecordIndices?: (number | number[])[];\r\n subTableCheckboxStates?: Map<number, SubTableCheckboxState>;\r\n}\r\n\r\n/**\r\n * 事件数据接口\r\n */\r\nexport interface CellContentWidthEventData {\r\n col: number;\r\n row: number;\r\n distWidth: number;\r\n cellHeight: number;\r\n detaX: number;\r\n autoRowHeight: boolean;\r\n needUpdateRowHeight: boolean;\r\n cellGroup: Group;\r\n padding: [number, number, number, number];\r\n textAlign: CanvasTextAlign;\r\n textBaseline: CanvasTextBaseline;\r\n}\r\n\r\nexport interface SelectBorderHeightEventData {\r\n startRow: number;\r\n endRow: number;\r\n currentHeight: number;\r\n selectComp: { rect: unknown; fillhandle?: unknown; role: string };\r\n}\r\n\r\n/**\r\n * 懒加载状态枚举\r\n */\r\nexport type LazyLoadState = 'loading' | 'loaded' | 'error';\r\n\r\n/**\r\n * 记录索引类型 - 支持单个数字或数字数组\r\n */\r\nexport type RecordIndexType = number | number[];\r\n\r\n/**\r\n * 工具函数:比较两个记录索引是否相等\r\n */\r\nexport function recordIndexEquals(a: RecordIndexType, b: RecordIndexType): boolean {\r\n if (typeof a === 'number' && typeof b === 'number') {\r\n return a === b;\r\n }\r\n if (Array.isArray(a) && Array.isArray(b)) {\r\n return a.length === b.length && a.every((val, index) => val === b[index]);\r\n }\r\n // 一个是数字,一个是数组的情况\r\n if (typeof a === 'number' && Array.isArray(b)) {\r\n return b.length === 1 && b[0] === a;\r\n }\r\n if (Array.isArray(a) && typeof b === 'number') {\r\n return a.length === 1 && a[0] === b;\r\n }\r\n return false;\r\n}\r\n\r\n/**\r\n * 工具函数:检查记录索引数组中是否包含指定索引\r\n */\r\nexport function includesRecordIndex(array: (number | number[])[], target: RecordIndexType): boolean {\r\n return array.some(item => recordIndexEquals(item, target));\r\n}\r\n\r\n/**\r\n * 工具函数:在记录索引数组中查找指定索引的位置\r\n */\r\nexport function findRecordIndexPosition(array: (number | number[])[], target: RecordIndexType): number {\r\n return array.findIndex(item => recordIndexEquals(item, target));\r\n}\r\n\r\n/**\r\n * 子表事件信息接口\r\n */\r\nexport interface SubTableEventInfo {\r\n /** 子表事件类型 */\r\n eventType: keyof typeof VTable.TABLE_EVENT_TYPE;\r\n /** 主表行索引(不包含表头) */\r\n masterBodyRowIndex: number;\r\n /** 主表行索引(包含表头) */\r\n masterRowIndex: number;\r\n /** 子表实例 */\r\n subTable: unknown;\r\n /** 原始事件数据 */\r\n originalEventArgs?: unknown;\r\n}\r\n"]}
|
package/dist/vtable-plugins.js
CHANGED
|
@@ -5921,16 +5921,45 @@
|
|
|
5921
5921
|
pluginOptions;
|
|
5922
5922
|
table;
|
|
5923
5923
|
expandRowCallback;
|
|
5924
|
+
childrenKey;
|
|
5924
5925
|
constructor(pluginOptions, table) {
|
|
5925
5926
|
this.pluginOptions = pluginOptions;
|
|
5926
5927
|
this.table = table;
|
|
5928
|
+
this.childrenKey = pluginOptions.childrenKey || 'children';
|
|
5929
|
+
}
|
|
5930
|
+
getChildrenKey() {
|
|
5931
|
+
return this.childrenKey;
|
|
5927
5932
|
}
|
|
5928
5933
|
setExpandRowCallback(callback) {
|
|
5929
5934
|
this.expandRowCallback = callback;
|
|
5930
5935
|
}
|
|
5936
|
+
ensureChildrenAlias(record) {
|
|
5937
|
+
if (this.childrenKey === 'children') {
|
|
5938
|
+
return;
|
|
5939
|
+
}
|
|
5940
|
+
if (record && typeof record === 'object') {
|
|
5941
|
+
const recordObj = record;
|
|
5942
|
+
const key = this.childrenKey;
|
|
5943
|
+
const descriptor = Object.getOwnPropertyDescriptor(recordObj, 'children');
|
|
5944
|
+
if (descriptor && descriptor.get) {
|
|
5945
|
+
return;
|
|
5946
|
+
}
|
|
5947
|
+
Object.defineProperty(recordObj, 'children', {
|
|
5948
|
+
get() {
|
|
5949
|
+
return this[key];
|
|
5950
|
+
},
|
|
5951
|
+
set(value) {
|
|
5952
|
+
this[key] = value;
|
|
5953
|
+
},
|
|
5954
|
+
enumerable: false,
|
|
5955
|
+
configurable: true
|
|
5956
|
+
});
|
|
5957
|
+
}
|
|
5958
|
+
}
|
|
5931
5959
|
hasChildren(record) {
|
|
5932
|
-
|
|
5933
|
-
|
|
5960
|
+
const key = this.childrenKey;
|
|
5961
|
+
if (record && typeof record === 'object' && key in record) {
|
|
5962
|
+
const children = record[key];
|
|
5934
5963
|
return Array.isArray(children) && children.length > 0;
|
|
5935
5964
|
}
|
|
5936
5965
|
return false;
|
|
@@ -5998,7 +6027,8 @@
|
|
|
5998
6027
|
recordList.forEach(record => {
|
|
5999
6028
|
if (record && typeof record === 'object') {
|
|
6000
6029
|
const recordObj = record;
|
|
6001
|
-
|
|
6030
|
+
this.ensureChildrenAlias(record);
|
|
6031
|
+
if (this.hasChildren(record) || recordObj[this.childrenKey] === true) {
|
|
6002
6032
|
if (recordObj.hierarchyState === 'expand') {
|
|
6003
6033
|
recordObj.hierarchyState = HierarchyState.expand;
|
|
6004
6034
|
}
|
|
@@ -6041,7 +6071,7 @@
|
|
|
6041
6071
|
const record = allRecords[recordIndex];
|
|
6042
6072
|
if (record && typeof record === 'object') {
|
|
6043
6073
|
const recordObj = record;
|
|
6044
|
-
if ((this.hasChildren(record) || recordObj.
|
|
6074
|
+
if ((this.hasChildren(record) || recordObj[this.childrenKey] === true) &&
|
|
6045
6075
|
recordObj.hierarchyState === HierarchyState.expand) {
|
|
6046
6076
|
if (!expandedRecordIndices.includes(recordIndex)) {
|
|
6047
6077
|
expandedRecordIndices.push(recordIndex);
|
|
@@ -6117,8 +6147,10 @@
|
|
|
6117
6147
|
eventHandlers = [];
|
|
6118
6148
|
allExpandedRowsBeforeMove = new Set();
|
|
6119
6149
|
isCleanedUp = false;
|
|
6120
|
-
|
|
6150
|
+
childrenKey;
|
|
6151
|
+
constructor(table, childrenKey = 'children') {
|
|
6121
6152
|
this.table = table;
|
|
6153
|
+
this.childrenKey = childrenKey;
|
|
6122
6154
|
}
|
|
6123
6155
|
bindEventHandlers() {
|
|
6124
6156
|
const scrollHandler = () => this.onUpdateSubTablePositions();
|
|
@@ -6327,7 +6359,10 @@
|
|
|
6327
6359
|
const hierarchyStateChangeHandler = (args) => {
|
|
6328
6360
|
const { col, row } = args;
|
|
6329
6361
|
const record = this.getRecordByRowIndex(row - this.table.columnHeaderLevelCount);
|
|
6330
|
-
if (record &&
|
|
6362
|
+
if (record &&
|
|
6363
|
+
typeof record === 'object' &&
|
|
6364
|
+
this.childrenKey in record &&
|
|
6365
|
+
record[this.childrenKey] === true) {
|
|
6331
6366
|
return;
|
|
6332
6367
|
}
|
|
6333
6368
|
this.onToggleRowExpand?.(row, col);
|
|
@@ -8134,7 +8169,7 @@
|
|
|
8134
8169
|
}
|
|
8135
8170
|
initializeManagers() {
|
|
8136
8171
|
this.configManager = new ConfigManager(this.pluginOptions, this.table);
|
|
8137
|
-
this.eventManager = new EventManager(this.table);
|
|
8172
|
+
this.eventManager = new EventManager(this.table, this.configManager.getChildrenKey());
|
|
8138
8173
|
const enableCheckboxCascade = this.pluginOptions.enableCheckboxCascade ?? true;
|
|
8139
8174
|
this.subTableManager = new SubTableManager(this.table, enableCheckboxCascade);
|
|
8140
8175
|
this.configManager.setRowExpandedChecker((row) => this.eventManager.isRowExpanded(row));
|
|
@@ -8249,7 +8284,10 @@
|
|
|
8249
8284
|
const record = getRecordByRowIndex(this.table, bodyRowIndex);
|
|
8250
8285
|
const detailConfig = this.configManager.getDetailConfigForRecord(record, bodyRowIndex);
|
|
8251
8286
|
const height = detailConfig?.style?.height || 300;
|
|
8252
|
-
const
|
|
8287
|
+
const childrenKey = this.configManager.getChildrenKey();
|
|
8288
|
+
const childrenData = Array.isArray(record[childrenKey])
|
|
8289
|
+
? record[childrenKey]
|
|
8290
|
+
: [];
|
|
8253
8291
|
const isAutoHeight = height === 'auto';
|
|
8254
8292
|
const deltaHeight = isAutoHeight ? 300 : typeof height === 'number' ? height : 300;
|
|
8255
8293
|
this.updateRowHeightForExpand(rowIndex, deltaHeight);
|
|
@@ -8473,16 +8511,12 @@
|
|
|
8473
8511
|
}
|
|
8474
8512
|
}
|
|
8475
8513
|
setRecordChildren(children, col, row) {
|
|
8476
|
-
const
|
|
8477
|
-
if (recordIndex === undefined || recordIndex === null) {
|
|
8478
|
-
return;
|
|
8479
|
-
}
|
|
8480
|
-
const realRecordIndex = typeof recordIndex === 'number' ? recordIndex : recordIndex[0];
|
|
8481
|
-
const record = this.table.dataSource.get(realRecordIndex);
|
|
8514
|
+
const record = this.table.getCellOriginRecord(col, row);
|
|
8482
8515
|
if (!record) {
|
|
8483
8516
|
return;
|
|
8484
8517
|
}
|
|
8485
|
-
|
|
8518
|
+
const childrenKey = this.configManager.getChildrenKey();
|
|
8519
|
+
record[childrenKey] = children;
|
|
8486
8520
|
this.expandRow(row, col);
|
|
8487
8521
|
this.table.scenegraph.updateCellContent(col, row);
|
|
8488
8522
|
}
|