From 4ad1e67ebf954859c5272f21aa37b697c3adae2f Mon Sep 17 00:00:00 2001 From: Chenlei Hu Date: Mon, 2 Sep 2024 18:01:02 -0400 Subject: [PATCH] Double click group title to edit (#714) * Double click group title to edit * Add playwright test * Update test expectations [skip ci] --------- Co-authored-by: github-actions --- browser_tests/assets/single_group.json | 88 +++++++++++++++ browser_tests/interaction.spec.ts | 15 +++ .../group-title-edited-chromium-linux.png | Bin 0 -> 64083 bytes package-lock.json | 8 +- package.json | 2 +- src/components/graph/GraphCanvas.vue | 2 + src/components/graph/GroupTitleEditor.vue | 104 ++++++++++++++++++ src/components/graph/NodeTitleEditor.vue | 3 +- .../searchbox/NodeSearchBoxPopover.vue | 4 + src/extensions/core/groupOptions.ts | 4 +- src/extensions/core/snapToGrid.ts | 4 - src/stores/settingStore.ts | 7 ++ 12 files changed, 228 insertions(+), 13 deletions(-) create mode 100644 browser_tests/assets/single_group.json create mode 100644 browser_tests/interaction.spec.ts-snapshots/group-title-edited-chromium-linux.png create mode 100644 src/components/graph/GroupTitleEditor.vue diff --git a/browser_tests/assets/single_group.json b/browser_tests/assets/single_group.json new file mode 100644 index 000000000..8a076bd2c --- /dev/null +++ b/browser_tests/assets/single_group.json @@ -0,0 +1,88 @@ +{ + "last_node_id": 9, + "last_link_id": 13, + "nodes": [ + { + "id": 3, + "type": "KSampler", + "pos": { + "0": 10.321063995361328, + "1": 73.14462280273438 + }, + "size": { + "0": 315, + "1": 262 + }, + "flags": {}, + "order": 0, + "mode": 0, + "inputs": [ + { + "name": "model", + "type": "MODEL", + "link": null + }, + { + "name": "positive", + "type": "CONDITIONING", + "link": null + }, + { + "name": "negative", + "type": "CONDITIONING", + "link": null + }, + { + "name": "latent_image", + "type": "LATENT", + "link": null + } + ], + "outputs": [ + { + "name": "LATENT", + "type": "LATENT", + "links": [], + "slot_index": 0 + } + ], + "properties": { + "Node name for S&R": "KSampler" + }, + "widgets_values": [ + 156680208700286, + "randomize", + 20, + 8, + "euler", + "normal", + 1 + ] + } + ], + "links": [], + "groups": [ + { + "title": "Group", + "bounding": [ + 0, + 0, + 335, + 346 + ], + "color": "#3f789e", + "font_size": 24 + } + ], + "config": {}, + "extra": { + "ds": { + "scale": 1, + "offset": [ + 0, + 0 + ] + } + }, + "version": 0.4 +} \ No newline at end of file diff --git a/browser_tests/interaction.spec.ts b/browser_tests/interaction.spec.ts index b5583736a..9948a2458 100644 --- a/browser_tests/interaction.spec.ts +++ b/browser_tests/interaction.spec.ts @@ -169,6 +169,21 @@ test.describe('Node Interaction', () => { }) }) +test.describe('Group Interaction', () => { + test('Can double click group title to edit', async ({ comfyPage }) => { + await comfyPage.loadWorkflow('single_group') + await comfyPage.canvas.dblclick({ + position: { + x: 50, + y: 10 + } + }) + await comfyPage.page.keyboard.type('Hello World') + await comfyPage.page.keyboard.press('Enter') + await expect(comfyPage.canvas).toHaveScreenshot('group-title-edited.png') + }) +}) + test.describe('Canvas Interaction', () => { test('Can zoom in/out', async ({ comfyPage }) => { await comfyPage.zoom(-100) diff --git a/browser_tests/interaction.spec.ts-snapshots/group-title-edited-chromium-linux.png b/browser_tests/interaction.spec.ts-snapshots/group-title-edited-chromium-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..22860669fec873e01bc8b195ec77710978d0b33a GIT binary patch literal 64083 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 literal 0 HcmV?d00001 diff --git a/package-lock.json b/package-lock.json index fbf20201b..358c8c60a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "1.2.43", "dependencies": { "@atlaskit/pragmatic-drag-and-drop": "^1.2.1", - "@comfyorg/litegraph": "^0.7.58", + "@comfyorg/litegraph": "^0.7.59", "@primevue/themes": "^4.0.0-rc.2", "@vitejs/plugin-vue": "^5.0.5", "@vueuse/core": "^11.0.0", @@ -1883,9 +1883,9 @@ "dev": true }, "node_modules/@comfyorg/litegraph": { - "version": "0.7.58", - "resolved": "https://registry.npmjs.org/@comfyorg/litegraph/-/litegraph-0.7.58.tgz", - "integrity": "sha512-0+anFQgfGVLy33jyTKfvMFQ7mhv51wvBvqvG9Jc23aJHKW8/FJw6rdrsWDRNhSM1zfxhMPWWvDCoHhQt3mnR1g==", + "version": "0.7.59", + "resolved": "https://registry.npmjs.org/@comfyorg/litegraph/-/litegraph-0.7.59.tgz", + "integrity": "sha512-Qy4uRa/16MxvsNubBXs+hOVVXKpmNHiQCg/VanFEv2koYrXi4mf/9zKWNNNukoDgL2aMoFpVkXS5O/TiWzFWbg==", "license": "MIT" }, "node_modules/@cspotcode/source-map-support": { diff --git a/package.json b/package.json index cc3211aba..e662521df 100644 --- a/package.json +++ b/package.json @@ -59,7 +59,7 @@ }, "dependencies": { "@atlaskit/pragmatic-drag-and-drop": "^1.2.1", - "@comfyorg/litegraph": "^0.7.58", + "@comfyorg/litegraph": "^0.7.59", "@primevue/themes": "^4.0.0-rc.2", "@vitejs/plugin-vue": "^5.0.5", "@vueuse/core": "^11.0.0", diff --git a/src/components/graph/GraphCanvas.vue b/src/components/graph/GraphCanvas.vue index b7e83bb93..775ec73e4 100644 --- a/src/components/graph/GraphCanvas.vue +++ b/src/components/graph/GraphCanvas.vue @@ -6,6 +6,7 @@ + @@ -14,6 +15,7 @@ + + diff --git a/src/components/graph/NodeTitleEditor.vue b/src/components/graph/NodeTitleEditor.vue index d369addc6..99d466ef7 100644 --- a/src/components/graph/NodeTitleEditor.vue +++ b/src/components/graph/NodeTitleEditor.vue @@ -55,8 +55,7 @@ const extension: ComfyExtension = { showInput.value = true const isCollapsed = node.flags?.collapsed - const [x1, y1, x2, y2] = this.getBounding() - const [nodeWidth, nodeHeight] = this.size + const [x1, y1, nodeWidth, nodeHeight] = this.getBounding() const canvasWidth = // @ts-expect-error Remove after collapsed_width is exposed in LiteGraph isCollapsed && node._collapsed_width ? node._collapsed_width : nodeWidth diff --git a/src/components/searchbox/NodeSearchBoxPopover.vue b/src/components/searchbox/NodeSearchBoxPopover.vue index 7ae1928a3..1b97f42af 100644 --- a/src/components/searchbox/NodeSearchBoxPopover.vue +++ b/src/components/searchbox/NodeSearchBoxPopover.vue @@ -100,6 +100,10 @@ const linkReleaseTriggerMode = computed(() => { }) const canvasEventHandler = (e: LiteGraphCanvasEvent) => { + if (!['empty-release', 'empty-double-click'].includes(e.detail.subType)) { + return + } + const shiftPressed = (e.detail.originalEvent as KeyboardEvent).shiftKey if (e.detail.subType === 'empty-release') { diff --git a/src/extensions/core/groupOptions.ts b/src/extensions/core/groupOptions.ts index 21d7e8dbc..f9e677a3e 100644 --- a/src/extensions/core/groupOptions.ts +++ b/src/extensions/core/groupOptions.ts @@ -1,3 +1,4 @@ +import { LGraphGroup } from '@comfyorg/litegraph' import { app } from '../../scripts/app' import { LGraphCanvas, LiteGraph } from '@comfyorg/litegraph' @@ -77,8 +78,7 @@ app.registerExtension({ content: 'Add Group For Selected Nodes', disabled: !Object.keys(app.canvas.selected_nodes || {}).length, callback: () => { - // @ts-expect-error - var group = new LiteGraph.LGraphGroup() + const group = new LGraphGroup() addNodesToGroup(group, this.selected_nodes) app.canvas.graph.add(group) this.graph.change() diff --git a/src/extensions/core/snapToGrid.ts b/src/extensions/core/snapToGrid.ts index 049e5f516..c44cdc015 100644 --- a/src/extensions/core/snapToGrid.ts +++ b/src/extensions/core/snapToGrid.ts @@ -156,13 +156,11 @@ app.registerExtension({ if (this.selected_group_resizing) { roundVectorToGrid(this.selected_group.size) } else if (selectedAndMovingGroup) { - // @ts-expect-error const [x, y] = roundVectorToGrid([...selectedAndMovingGroup.pos]) const f = ctx.fillStyle const s = ctx.strokeStyle ctx.fillStyle = 'rgba(100, 100, 100, 0.33)' ctx.strokeStyle = 'rgba(100, 100, 100, 0.66)' - // @ts-expect-error ctx.rect(x, y, ...selectedAndMovingGroup.size) ctx.fill() ctx.stroke() @@ -183,9 +181,7 @@ app.registerExtension({ // @ts-expect-error const lastGroup = app.graph._groups[app.graph._groups.length - 1] if (lastGroup) { - // @ts-expect-error roundVectorToGrid(lastGroup.pos) - // @ts-expect-error roundVectorToGrid(lastGroup.size) } } diff --git a/src/stores/settingStore.ts b/src/stores/settingStore.ts index b7107e7b9..2d60fb67b 100644 --- a/src/stores/settingStore.ts +++ b/src/stores/settingStore.ts @@ -277,6 +277,13 @@ export const useSettingStore = defineStore('setting', { defaultValue: true }) + app.ui.settings.addSetting({ + id: 'Comfy.Group.DoubleClickTitleToEdit', + name: 'Double click group title to edit', + type: 'boolean', + defaultValue: true + }) + app.ui.settings.addSetting({ id: 'Comfy.Window.UnloadConfirmation', name: 'Show confirmation when closing window',