From b3c9da81ac5b634a6bc178e509924ee3323f5545 Mon Sep 17 00:00:00 2001 From: Rui-Sun Date: Thu, 21 Dec 2023 12:04:39 +0800 Subject: [PATCH 1/5] fix: add row height round in resetRowHeight --- .../@visactor/vtable/develop_2023-12-21-04-03.json | 10 ++++++++++ packages/vtable/src/scenegraph/layout/update-width.ts | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 common/changes/@visactor/vtable/develop_2023-12-21-04-03.json diff --git a/common/changes/@visactor/vtable/develop_2023-12-21-04-03.json b/common/changes/@visactor/vtable/develop_2023-12-21-04-03.json new file mode 100644 index 000000000..f3aa4069b --- /dev/null +++ b/common/changes/@visactor/vtable/develop_2023-12-21-04-03.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@visactor/vtable", + "comment": "fix: add row height round in resetRowHeight", + "type": "none" + } + ], + "packageName": "@visactor/vtable" +} \ No newline at end of file diff --git a/packages/vtable/src/scenegraph/layout/update-width.ts b/packages/vtable/src/scenegraph/layout/update-width.ts index b0bc3b69d..80687acac 100644 --- a/packages/vtable/src/scenegraph/layout/update-width.ts +++ b/packages/vtable/src/scenegraph/layout/update-width.ts @@ -480,7 +480,7 @@ function updateMergeCellContentWidth( */ function resetRowHeight(scene: Scenegraph, row: number) { // 获取高度 - const maxHeight = computeRowHeight(row, 0, scene.table.colCount - 1, scene.table); + const maxHeight = Math.round(computeRowHeight(row, 0, scene.table.colCount - 1, scene.table)); // 更新table行高存储 scene.table._setRowHeight(row, maxHeight, true); From 270f6184a98466a390d67879d1dd20d4121bce74 Mon Sep 17 00:00:00 2001 From: fangsmile <892739385@qq.com> Date: Thu, 21 Dec 2023 18:50:34 +0800 Subject: [PATCH 2/5] fix: edit bug #771 --- packages/vtable/examples/list/list.ts | 4 +-- packages/vtable/src/edit/edit-manager.ts | 12 +++---- .../vtable/src/event/listener/scroll-bar.ts | 19 ++-------- .../vtable/src/event/listener/table-group.ts | 20 +++++++---- .../src/state/select/update-position.ts | 17 ++++----- packages/vtable/src/state/state.ts | 36 ++++++++++--------- 6 files changed, 50 insertions(+), 58 deletions(-) diff --git a/packages/vtable/examples/list/list.ts b/packages/vtable/examples/list/list.ts index 5af241953..17fc7b371 100644 --- a/packages/vtable/examples/list/list.ts +++ b/packages/vtable/examples/list/list.ts @@ -16,7 +16,7 @@ const generatePersons = count => { }; export function createTable() { - const records = generatePersons(1000); + const records = generatePersons(1000000); const columns: VTable.ColumnsDefine = [ { field: '', @@ -316,7 +316,7 @@ export function createTable() { bottomFrozenRowCount: 2, rightFrozenColCount: 2, overscrollBehavior: 'none', - // autoWrapText: true, + autoWrapText: true, heightMode: 'autoHeight' // widthMode: 'adaptive' }; diff --git a/packages/vtable/src/edit/edit-manager.ts b/packages/vtable/src/edit/edit-manager.ts index bffa26be0..b58f875f8 100644 --- a/packages/vtable/src/edit/edit-manager.ts +++ b/packages/vtable/src/edit/edit-manager.ts @@ -43,12 +43,6 @@ export class EditManeger { this.startEditCell(col, row); } }); - document.body.addEventListener('pointerdown', (e: PointerEvent) => { - const target = e.target; - if (this.editingEditor && !this.editingEditor.targetIsOnEditor(target as HTMLElement)) { - this.completeEdit(); - } - }); handler.on(this.table.getElement(), 'wheel', (e: WheelEvent) => { this.completeEdit(); @@ -86,8 +80,10 @@ export class EditManeger { ); } } - completeEdit() { - if (this.editingEditor) { + /** 如果是事件触发调用该接口 请传入原始事件对象 将判断事件对象是否在编辑器本身上面 来处理是否结束编辑 */ + completeEdit(e?: any) { + const target = e?.target; + if (this.editingEditor && (!target || (target && !this.editingEditor.targetIsOnEditor(target as HTMLElement)))) { const changedValue = this.editingEditor.getValue(); (this.table as ListTableAPI).changeCellValue(this.editCell.col, this.editCell.row, changedValue); this.editingEditor.exit(); diff --git a/packages/vtable/src/event/listener/scroll-bar.ts b/packages/vtable/src/event/listener/scroll-bar.ts index 4d2c5a603..a88d602d6 100644 --- a/packages/vtable/src/event/listener/scroll-bar.ts +++ b/packages/vtable/src/event/listener/scroll-bar.ts @@ -36,14 +36,7 @@ export function bindScrollBarListener(eventManager: EventManager) { if (stateManager.interactionState !== InteractionState.scrolling) { stateManager.updateInteractionState(InteractionState.scrolling); } - const eventArgsSet: SceneEvent = getCellEventArgsSet(e); - if ( - scenegraph.table.stateManager.menu.isShow && - (eventArgsSet.eventArgs?.target as any) !== scenegraph.table.stateManager.residentHoverIcon?.icon - ) { - scenegraph.table.stateManager.hideMenu(); - } - + scenegraph.table.stateManager.hideMenu(); (scenegraph.table as ListTableAPI).editorManager?.completeEdit(); }); scenegraph.component.vScrollBar.addEventListener('pointerup', () => { @@ -64,15 +57,7 @@ export function bindScrollBarListener(eventManager: EventManager) { if (stateManager.interactionState !== InteractionState.scrolling) { stateManager.updateInteractionState(InteractionState.scrolling); } - - const eventArgsSet: SceneEvent = getCellEventArgsSet(e); - if ( - scenegraph.table.stateManager.menu.isShow && - (eventArgsSet.eventArgs?.target as any) !== scenegraph.table.stateManager.residentHoverIcon?.icon - ) { - scenegraph.table.stateManager.hideMenu(); - } - + scenegraph.table.stateManager.hideMenu(); (scenegraph.table as ListTableAPI).editorManager?.completeEdit(); }); scenegraph.component.hScrollBar.addEventListener('pointerup', () => { diff --git a/packages/vtable/src/event/listener/table-group.ts b/packages/vtable/src/event/listener/table-group.ts index 433dd5f23..1b3e74531 100644 --- a/packages/vtable/src/event/listener/table-group.ts +++ b/packages/vtable/src/event/listener/table-group.ts @@ -27,6 +27,7 @@ export function bindTableGroupListener(eventManager: EventManager) { const table = eventManager.table; const stateManager = table.stateManager; + // 有被阻止冒泡的场景 就触发不到这里的事件了 document.body.addEventListener('pointerdown', e => { console.log('body pointerdown'); table.eventManager.LastBodyPointerXY = { x: e.x, y: e.y }; @@ -280,7 +281,13 @@ export function bindTableGroupListener(eventManager: EventManager) { }); } }); + /** + * 两种场景会触发这里的pointerupoutside + * 1. 鼠标down和up的场景树节点不一样 + * 2. 点击到非stage的(非canvas) 其他dom节点 + */ table.scenegraph.tableGroup.addEventListener('pointerupoutside', (e: FederatedPointerEvent) => { + console.log('pointerupoutside'); const eventArgsSet: SceneEvent = getCellEventArgsSet(e); if (stateManager.menu.isShow && (eventArgsSet.eventArgs?.target as any) !== stateManager.residentHoverIcon?.icon) { setTimeout(() => { @@ -330,9 +337,7 @@ export function bindTableGroupListener(eventManager: EventManager) { } } } - if ((table as ListTableAPI).editorManager) { - (table as ListTableAPI).editorManager.completeEdit(); - } + (table as ListTableAPI).editorManager?.completeEdit(e.nativeEvent); stateManager.updateInteractionState(InteractionState.default); eventManager.dealTableHover(); //点击到表格外部不需要取消选中状态 @@ -362,10 +367,12 @@ export function bindTableGroupListener(eventManager: EventManager) { table.scenegraph.updateChartState(null); } // 处理menu - if (stateManager.menu.isShow && (eventArgsSet.eventArgs?.target as any) !== stateManager.residentHoverIcon?.icon) { + if ((eventArgsSet.eventArgs?.target as any) !== stateManager.residentHoverIcon?.icon) { // 点击在menu外,且不是下拉菜单的icon,移除menu stateManager.hideMenu(); } + (table as ListTableAPI).editorManager?.completeEdit(e.nativeEvent); + const hitIcon = (eventArgsSet?.eventArgs?.target as any)?.role?.startsWith('icon') ? eventArgsSet.eventArgs.target : undefined; @@ -601,12 +608,13 @@ export function bindTableGroupListener(eventManager: EventManager) { } } }); - // click outside + // stage 的pointerdown监听 如果点击在表格内部 是会被阻止点的tableGroup的pointerdown 监听有stopPropagation table.scenegraph.stage.addEventListener('pointerdown', (e: FederatedPointerEvent) => { const eventArgsSet: SceneEvent = getCellEventArgsSet(e); - if (stateManager.menu.isShow && (eventArgsSet.eventArgs?.target as any) !== stateManager.residentHoverIcon?.icon) { + if ((eventArgsSet.eventArgs?.target as any) !== stateManager.residentHoverIcon?.icon) { stateManager.hideMenu(); } + (table as ListTableAPI).editorManager?.completeEdit(e.nativeEvent); }); // click outside table.scenegraph.stage.addEventListener('pointertap', (e: FederatedPointerEvent) => { diff --git a/packages/vtable/src/state/select/update-position.ts b/packages/vtable/src/state/select/update-position.ts index 86b8c8916..e36a26e4f 100644 --- a/packages/vtable/src/state/select/update-position.ts +++ b/packages/vtable/src/state/select/update-position.ts @@ -134,7 +134,7 @@ export function updateSelectPosition( start: { col, row: cellRange.start.row }, end: { col: table.colCount - 1, row: cellRange.end.row } }); - } else { + } else if (col >= 0 && row >= 0) { state.select.ranges.push({ start: { col, row }, end: { col, row } @@ -143,13 +143,14 @@ export function updateSelectPosition( cellPos.col = col; cellPos.row = row; // scenegraph.setCellNormalStyle(col, row); - const currentRange = state.select.ranges[state.select.ranges.length - 1]; - scenegraph.updateCellSelectBorder( - currentRange.start.col, - currentRange.start.row, - currentRange.end.col, - currentRange.end.row - ); + const currentRange = state.select.ranges?.[state.select.ranges.length - 1]; + currentRange && + scenegraph.updateCellSelectBorder( + currentRange.start.col, + currentRange.start.row, + currentRange.end.col, + currentRange.end.row + ); } } else if (interactionState === InteractionState.grabing && !table.stateManager.isResizeCol()) { // 可能有cellPosStart从-1开始grabing的情况 diff --git a/packages/vtable/src/state/state.ts b/packages/vtable/src/state/state.ts index 70dce97c3..84897322b 100644 --- a/packages/vtable/src/state/state.ts +++ b/packages/vtable/src/state/state.ts @@ -841,23 +841,25 @@ export class StateManager { } hideMenu() { - this.table.fireListeners(TABLE_EVENT_TYPE.DROPDOWN_MENU_CLEAR, null); - this.table.fireListeners(TABLE_EVENT_TYPE.HIDE_MENU, null); - this.menu.isShow = false; - this.table.scenegraph.component.menu.detach(); - if (this.residentHoverIcon) { - this.table.scenegraph.setIconNormalStyle( - this.residentHoverIcon.icon, - this.residentHoverIcon.col, - this.residentHoverIcon.row - ); - // this.residentHoverIcon.icon.setAttribute('visibleTime', (this.residentHoverIcon.icon as any).oldVisibleTime); - // this.residentHoverIcon.icon.setAttribute( - // 'opacity', - // this.residentHoverIcon.icon.attribute.visibleTime === 'always' ? 1 : 0 - // ); - this.table.scenegraph.resetResidentHoverIcon(this.residentHoverIcon.col, this.residentHoverIcon.row); - this.residentHoverIcon = null; + if (this.menu.isShow) { + this.table.fireListeners(TABLE_EVENT_TYPE.DROPDOWN_MENU_CLEAR, null); + this.table.fireListeners(TABLE_EVENT_TYPE.HIDE_MENU, null); + this.menu.isShow = false; + this.table.scenegraph.component.menu.detach(); + if (this.residentHoverIcon) { + this.table.scenegraph.setIconNormalStyle( + this.residentHoverIcon.icon, + this.residentHoverIcon.col, + this.residentHoverIcon.row + ); + // this.residentHoverIcon.icon.setAttribute('visibleTime', (this.residentHoverIcon.icon as any).oldVisibleTime); + // this.residentHoverIcon.icon.setAttribute( + // 'opacity', + // this.residentHoverIcon.icon.attribute.visibleTime === 'always' ? 1 : 0 + // ); + this.table.scenegraph.resetResidentHoverIcon(this.residentHoverIcon.col, this.residentHoverIcon.row); + this.residentHoverIcon = null; + } } } From a5ac50ef0712ec4de2487e839e947ac66a2a613e Mon Sep 17 00:00:00 2001 From: fangsmile <892739385@qq.com> Date: Thu, 21 Dec 2023 18:51:16 +0800 Subject: [PATCH 3/5] docs: update changlog of rush --- .../771-bug-edit-cell-bug_2023-12-21-10-51.json | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 common/changes/@visactor/vtable/771-bug-edit-cell-bug_2023-12-21-10-51.json diff --git a/common/changes/@visactor/vtable/771-bug-edit-cell-bug_2023-12-21-10-51.json b/common/changes/@visactor/vtable/771-bug-edit-cell-bug_2023-12-21-10-51.json new file mode 100644 index 000000000..9d94069e3 --- /dev/null +++ b/common/changes/@visactor/vtable/771-bug-edit-cell-bug_2023-12-21-10-51.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "fix: edit bug #771\n\n", + "type": "none", + "packageName": "@visactor/vtable" + } + ], + "packageName": "@visactor/vtable", + "email": "892739385@qq.com" +} \ No newline at end of file From b4693bbcfd419277575725ef1ffe5450881ece5b Mon Sep 17 00:00:00 2001 From: fangsmile <892739385@qq.com> Date: Thu, 21 Dec 2023 19:50:38 +0800 Subject: [PATCH 4/5] fix: icon not show bug --- packages/vtable/src/scenegraph/icon/icon-update.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/vtable/src/scenegraph/icon/icon-update.ts b/packages/vtable/src/scenegraph/icon/icon-update.ts index 9f99d4511..92bd932c2 100644 --- a/packages/vtable/src/scenegraph/icon/icon-update.ts +++ b/packages/vtable/src/scenegraph/icon/icon-update.ts @@ -432,7 +432,7 @@ export function resetResidentHoverIcon(col: number, row: number, scene: Scenegra (icon: Icon) => icon.attribute.funcType === IconFuncTypeEnum.dropDown, // dealer (icon: Icon) => { - icon.setAttribute('visibleTime', (icon as any).oldVisibleTime); + (icon as any).oldVisibleTime && icon.setAttribute('visibleTime', (icon as any).oldVisibleTime); icon.setAttribute('opacity', icon.attribute.visibleTime === 'always' ? 1 : 0); }, scene From f18b46315c600b13a5eaee7e29ec7c13d93d6c91 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 21 Dec 2023 12:01:14 +0000 Subject: [PATCH 5/5] build: prelease version 0.17.2 --- .../771-bug-edit-cell-bug_2023-12-21-10-51.json | 11 ----------- .../vtable/develop_2023-12-21-04-03.json | 10 ---------- common/config/rush/version-policies.json | 2 +- packages/react-vtable/package.json | 2 +- packages/vtable-editors/package.json | 2 +- packages/vtable-export/package.json | 2 +- packages/vtable/CHANGELOG.json | 15 +++++++++++++++ packages/vtable/CHANGELOG.md | 12 +++++++++++- packages/vtable/package.json | 2 +- 9 files changed, 31 insertions(+), 27 deletions(-) delete mode 100644 common/changes/@visactor/vtable/771-bug-edit-cell-bug_2023-12-21-10-51.json delete mode 100644 common/changes/@visactor/vtable/develop_2023-12-21-04-03.json diff --git a/common/changes/@visactor/vtable/771-bug-edit-cell-bug_2023-12-21-10-51.json b/common/changes/@visactor/vtable/771-bug-edit-cell-bug_2023-12-21-10-51.json deleted file mode 100644 index 9d94069e3..000000000 --- a/common/changes/@visactor/vtable/771-bug-edit-cell-bug_2023-12-21-10-51.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "changes": [ - { - "comment": "fix: edit bug #771\n\n", - "type": "none", - "packageName": "@visactor/vtable" - } - ], - "packageName": "@visactor/vtable", - "email": "892739385@qq.com" -} \ No newline at end of file diff --git a/common/changes/@visactor/vtable/develop_2023-12-21-04-03.json b/common/changes/@visactor/vtable/develop_2023-12-21-04-03.json deleted file mode 100644 index f3aa4069b..000000000 --- a/common/changes/@visactor/vtable/develop_2023-12-21-04-03.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "@visactor/vtable", - "comment": "fix: add row height round in resetRowHeight", - "type": "none" - } - ], - "packageName": "@visactor/vtable" -} \ No newline at end of file diff --git a/common/config/rush/version-policies.json b/common/config/rush/version-policies.json index ed2bd6610..128c43d0b 100644 --- a/common/config/rush/version-policies.json +++ b/common/config/rush/version-policies.json @@ -1 +1 @@ -[{"definitionName":"lockStepVersion","policyName":"vtableMain","version":"0.17.1","mainProject":"@visactor/vtable","nextBump":"patch"}] +[{"definitionName":"lockStepVersion","policyName":"vtableMain","version":"0.17.2","mainProject":"@visactor/vtable","nextBump":"patch"}] diff --git a/packages/react-vtable/package.json b/packages/react-vtable/package.json index 0f96399ff..f6ab44e60 100644 --- a/packages/react-vtable/package.json +++ b/packages/react-vtable/package.json @@ -1,6 +1,6 @@ { "name": "@visactor/react-vtable", - "version": "0.17.1", + "version": "0.17.2", "description": "The react version of VTable", "keywords": [ "react", diff --git a/packages/vtable-editors/package.json b/packages/vtable-editors/package.json index 6b0d7369a..5146901d1 100644 --- a/packages/vtable-editors/package.json +++ b/packages/vtable-editors/package.json @@ -1,6 +1,6 @@ { "name": "@visactor/vtable-editors", - "version": "0.17.1", + "version": "0.17.2", "description": "", "sideEffects": false, "main": "cjs/index.js", diff --git a/packages/vtable-export/package.json b/packages/vtable-export/package.json index 32c885ab2..05102b08d 100644 --- a/packages/vtable-export/package.json +++ b/packages/vtable-export/package.json @@ -1,6 +1,6 @@ { "name": "@visactor/vtable-export", - "version": "0.17.1", + "version": "0.17.2", "description": "The export util of VTable", "author": { "name": "VisActor", diff --git a/packages/vtable/CHANGELOG.json b/packages/vtable/CHANGELOG.json index 3b8897c7d..36b15a258 100644 --- a/packages/vtable/CHANGELOG.json +++ b/packages/vtable/CHANGELOG.json @@ -1,6 +1,21 @@ { "name": "@visactor/vtable", "entries": [ + { + "version": "0.17.2", + "tag": "@visactor/vtable_v0.17.2", + "date": "Thu, 21 Dec 2023 11:54:58 GMT", + "comments": { + "none": [ + { + "comment": "fix: edit bug #771\n\n" + }, + { + "comment": "fix: add row height round in resetRowHeight" + } + ] + } + }, { "version": "0.17.1", "tag": "@visactor/vtable_v0.17.1", diff --git a/packages/vtable/CHANGELOG.md b/packages/vtable/CHANGELOG.md index 89bcdfe21..28fd4a206 100644 --- a/packages/vtable/CHANGELOG.md +++ b/packages/vtable/CHANGELOG.md @@ -1,6 +1,16 @@ # Change Log - @visactor/vtable -This log was last generated on Thu, 21 Dec 2023 04:01:16 GMT and should not be manually modified. +This log was last generated on Thu, 21 Dec 2023 11:54:58 GMT and should not be manually modified. + +## 0.17.2 +Thu, 21 Dec 2023 11:54:58 GMT + +### Updates + +- fix: edit bug #771 + + +- fix: add row height round in resetRowHeight ## 0.17.1 Thu, 21 Dec 2023 04:01:16 GMT diff --git a/packages/vtable/package.json b/packages/vtable/package.json index 943db87a7..20a3019a5 100644 --- a/packages/vtable/package.json +++ b/packages/vtable/package.json @@ -1,6 +1,6 @@ { "name": "@visactor/vtable", - "version": "0.17.1", + "version": "0.17.2", "description": "canvas table width high performance", "keywords": [ "grid",