@visactor/vtable-plugins 1.23.2 → 1.23.3
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.js +5 -3
- 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 +48 -9
- 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.js +5 -3
- 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 +6 -6
|
@@ -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,MAAM,UAAU,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;AAKD,MAAM,UAAU,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;AAKD,MAAM,UAAU,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","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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@visactor/vtable-plugins",
|
|
3
|
-
"version": "1.23.
|
|
3
|
+
"version": "1.23.3",
|
|
4
4
|
"description": "The search util of VTable",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "VisActor",
|
|
@@ -42,8 +42,8 @@
|
|
|
42
42
|
"@types/file-saver": "2.0.7"
|
|
43
43
|
},
|
|
44
44
|
"peerDependencies": {
|
|
45
|
-
"@visactor/vtable": "1.23.
|
|
46
|
-
"@visactor/vtable
|
|
45
|
+
"@visactor/vtable-gantt": "1.23.3",
|
|
46
|
+
"@visactor/vtable": "1.23.3"
|
|
47
47
|
},
|
|
48
48
|
"peerDependenciesMeta": {
|
|
49
49
|
"@visactor/vtable-gantt": {
|
|
@@ -95,9 +95,9 @@
|
|
|
95
95
|
"@types/react-is": "^17.0.3",
|
|
96
96
|
"rollup-plugin-node-resolve": "5.2.0",
|
|
97
97
|
"@types/lodash": "4.14.182",
|
|
98
|
-
"@visactor/vtable": "1.23.
|
|
99
|
-
"@visactor/vtable-
|
|
100
|
-
"@visactor/vtable-
|
|
98
|
+
"@visactor/vtable": "1.23.3",
|
|
99
|
+
"@visactor/vtable-editors": "1.23.3",
|
|
100
|
+
"@visactor/vtable-gantt": "1.23.3",
|
|
101
101
|
"@internal/bundler": "0.0.1",
|
|
102
102
|
"@internal/eslint-config": "0.0.1",
|
|
103
103
|
"@internal/ts-config": "0.0.1"
|