From f7497348637984cf303a711506fa6aa229b4439b Mon Sep 17 00:00:00 2001 From: Chenlei Hu Date: Sun, 22 Sep 2024 12:12:48 +0900 Subject: [PATCH] Make optional node input's slot hollow circle (#912) * Use hollow circle for optional input * nit * Show hollow shape for optional input * Add playwright tests * Update litegraph * Update test expectations [skip ci] --------- Co-authored-by: github-actions --- .../assets/optional_input_correct_shape.json | 57 ++++++++++++++++++ .../assets/optional_input_no_shape.json | 56 +++++++++++++++++ .../assets/optional_input_wrong_shape.json | 57 ++++++++++++++++++ browser_tests/nodeBadge.spec.ts | 3 - browser_tests/nodeDisplay.spec.ts | 21 +++++++ .../optional-input-chromium-2x-linux.png | Bin 0 -> 44467 bytes .../optional-input-chromium-linux.png | Bin 0 -> 43749 bytes package-lock.json | 8 +-- package.json | 2 +- src/scripts/app.ts | 41 +++++++++++-- 10 files changed, 232 insertions(+), 13 deletions(-) create mode 100644 browser_tests/assets/optional_input_correct_shape.json create mode 100644 browser_tests/assets/optional_input_no_shape.json create mode 100644 browser_tests/assets/optional_input_wrong_shape.json create mode 100644 browser_tests/nodeDisplay.spec.ts create mode 100644 browser_tests/nodeDisplay.spec.ts-snapshots/optional-input-chromium-2x-linux.png create mode 100644 browser_tests/nodeDisplay.spec.ts-snapshots/optional-input-chromium-linux.png diff --git a/browser_tests/assets/optional_input_correct_shape.json b/browser_tests/assets/optional_input_correct_shape.json new file mode 100644 index 000000000..9a40eeb85 --- /dev/null +++ b/browser_tests/assets/optional_input_correct_shape.json @@ -0,0 +1,57 @@ +{ + "last_node_id": 5, + "last_link_id": 0, + "nodes": [ + { + "id": 5, + "type": "DevToolsNodeWithOptionalInput", + "pos": { + "0": 19, + "1": 46 + }, + "size": { + "0": 302.4000244140625, + "1": 46 + }, + "flags": {}, + "order": 0, + "mode": 0, + "inputs": [ + { + "name": "required_input", + "type": "IMAGE", + "link": null + }, + { + "name": "optional_input", + "type": "IMAGE", + "link": null, + "shape": 7 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": null + } + ], + "properties": { + "Node name for S&R": "DevToolsNodeWithOptionalInput" + } + } + ], + "links": [], + "groups": [], + "config": {}, + "extra": { + "ds": { + "scale": 1, + "offset": [ + 0, + 0 + ] + } + }, + "version": 0.4 +} \ No newline at end of file diff --git a/browser_tests/assets/optional_input_no_shape.json b/browser_tests/assets/optional_input_no_shape.json new file mode 100644 index 000000000..e56acc0d9 --- /dev/null +++ b/browser_tests/assets/optional_input_no_shape.json @@ -0,0 +1,56 @@ +{ + "last_node_id": 5, + "last_link_id": 0, + "nodes": [ + { + "id": 5, + "type": "DevToolsNodeWithOptionalInput", + "pos": { + "0": 19, + "1": 46 + }, + "size": { + "0": 302.4000244140625, + "1": 46 + }, + "flags": {}, + "order": 0, + "mode": 0, + "inputs": [ + { + "name": "required_input", + "type": "IMAGE", + "link": null + }, + { + "name": "optional_input", + "type": "IMAGE", + "link": null + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": null + } + ], + "properties": { + "Node name for S&R": "DevToolsNodeWithOptionalInput" + } + } + ], + "links": [], + "groups": [], + "config": {}, + "extra": { + "ds": { + "scale": 1, + "offset": [ + 0, + 0 + ] + } + }, + "version": 0.4 +} \ No newline at end of file diff --git a/browser_tests/assets/optional_input_wrong_shape.json b/browser_tests/assets/optional_input_wrong_shape.json new file mode 100644 index 000000000..094ecdb4f --- /dev/null +++ b/browser_tests/assets/optional_input_wrong_shape.json @@ -0,0 +1,57 @@ +{ + "last_node_id": 5, + "last_link_id": 0, + "nodes": [ + { + "id": 5, + "type": "DevToolsNodeWithOptionalInput", + "pos": { + "0": 19, + "1": 46 + }, + "size": { + "0": 302.4000244140625, + "1": 46 + }, + "flags": {}, + "order": 0, + "mode": 0, + "inputs": [ + { + "name": "required_input", + "type": "IMAGE", + "link": null + }, + { + "name": "optional_input", + "type": "IMAGE", + "link": null, + "shape": 6 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": null + } + ], + "properties": { + "Node name for S&R": "DevToolsNodeWithOptionalInput" + } + } + ], + "links": [], + "groups": [], + "config": {}, + "extra": { + "ds": { + "scale": 1, + "offset": [ + 0, + 0 + ] + } + }, + "version": 0.4 +} \ No newline at end of file diff --git a/browser_tests/nodeBadge.spec.ts b/browser_tests/nodeBadge.spec.ts index d993f2c78..7ebb06fd3 100644 --- a/browser_tests/nodeBadge.spec.ts +++ b/browser_tests/nodeBadge.spec.ts @@ -9,7 +9,6 @@ test.describe('Node Badge', () => { const LGraphBadge = window['LGraphBadge'] const app = window['app'] as ComfyApp const graph = app.graph - // @ts-expect-error - accessing private property const nodes = graph.nodes for (const node of nodes) { @@ -27,7 +26,6 @@ test.describe('Node Badge', () => { const LGraphBadge = window['LGraphBadge'] const app = window['app'] as ComfyApp const graph = app.graph - // @ts-expect-error - accessing private property const nodes = graph.nodes for (const node of nodes) { @@ -48,7 +46,6 @@ test.describe('Node Badge', () => { const LGraphBadge = window['LGraphBadge'] const app = window['app'] as ComfyApp const graph = app.graph - // @ts-expect-error - accessing private property const nodes = graph.nodes for (const node of nodes) { diff --git a/browser_tests/nodeDisplay.spec.ts b/browser_tests/nodeDisplay.spec.ts new file mode 100644 index 000000000..d17b0cb16 --- /dev/null +++ b/browser_tests/nodeDisplay.spec.ts @@ -0,0 +1,21 @@ +import { expect } from '@playwright/test' +import { comfyPageFixture as test } from './ComfyPage' + +// If an input is optional by node definition, it should be shown as +// a hollow circle no matter what shape it was defined in the workflow JSON. +test.describe('Optional input', () => { + test('No shape specified', async ({ comfyPage }) => { + await comfyPage.loadWorkflow('optional_input_no_shape') + await expect(comfyPage.canvas).toHaveScreenshot('optional_input.png') + }) + + test('Wrong shape specified', async ({ comfyPage }) => { + await comfyPage.loadWorkflow('optional_input_wrong_shape') + await expect(comfyPage.canvas).toHaveScreenshot('optional_input.png') + }) + + test('Correct shape specified', async ({ comfyPage }) => { + await comfyPage.loadWorkflow('optional_input_correct_shape') + await expect(comfyPage.canvas).toHaveScreenshot('optional_input.png') + }) +}) diff --git a/browser_tests/nodeDisplay.spec.ts-snapshots/optional-input-chromium-2x-linux.png b/browser_tests/nodeDisplay.spec.ts-snapshots/optional-input-chromium-2x-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..6d47c94412ec89cdf90f60425e6349c8e745ac55 GIT binary patch literal 44467 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 Z>Bh3?mu#E(O&cNhBlp{{^Nm9%KLj literal 0 HcmV?d00001 diff --git a/package-lock.json b/package-lock.json index a5f73cfba..7177f3c0e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "1.2.60", "dependencies": { "@atlaskit/pragmatic-drag-and-drop": "^1.2.1", - "@comfyorg/litegraph": "^0.7.75", + "@comfyorg/litegraph": "^0.7.76", "@primevue/themes": "^4.0.5", "@vitejs/plugin-vue": "^5.0.5", "@vueuse/core": "^11.0.0", @@ -1910,9 +1910,9 @@ "dev": true }, "node_modules/@comfyorg/litegraph": { - "version": "0.7.75", - "resolved": "https://registry.npmjs.org/@comfyorg/litegraph/-/litegraph-0.7.75.tgz", - "integrity": "sha512-RNYZVMoJ/a5btwP+S124FnrIVlwOdv6uNsTdYfwv7L8teDpwvf/TQa66QfCePqUlypBKEhKw+avTncLAu2FYUw==", + "version": "0.7.76", + "resolved": "https://registry.npmjs.org/@comfyorg/litegraph/-/litegraph-0.7.76.tgz", + "integrity": "sha512-SwlBq7WsolRyxqHsm+aXi8pSQDf3+Kt9ORBsznIvL42X+1RoAwetI0GDqML/zqKBI3zr9MbpjOboaeyVx3il1w==", "license": "MIT" }, "node_modules/@cspotcode/source-map-support": { diff --git a/package.json b/package.json index 4879bc65f..d2e3a8948 100644 --- a/package.json +++ b/package.json @@ -63,7 +63,7 @@ }, "dependencies": { "@atlaskit/pragmatic-drag-and-drop": "^1.2.1", - "@comfyorg/litegraph": "^0.7.75", + "@comfyorg/litegraph": "^0.7.76", "@primevue/themes": "^4.0.5", "@vitejs/plugin-vue": "^5.0.5", "@vueuse/core": "^11.0.0", diff --git a/src/scripts/app.ts b/src/scripts/app.ts index 9ac7ae785..42cadb7ab 100644 --- a/src/scripts/app.ts +++ b/src/scripts/app.ts @@ -1996,6 +1996,8 @@ export class ComfyApp { constructor(title?: string) { super(title) + const requiredInputs = nodeData.input.required + var inputs = nodeData['input']['required'] if (nodeData['input']['optional'] != undefined) { inputs = Object.assign( @@ -2025,7 +2027,12 @@ export class ComfyApp { } } else { // Node connection inputs - this.addInput(inputName, type) + const inputIsRequired = inputName in requiredInputs + const inputOptions = inputIsRequired + ? {} + : // @ts-expect-error LiteGraph.SlotShape is not typed. + { shape: LiteGraph.SlotShape.HollowCircle } + this.addInput(inputName, type, inputOptions) widgetCreated = false } // @ts-expect-error @@ -2048,10 +2055,11 @@ export class ComfyApp { let output = nodeData['output'][o] if (output instanceof Array) output = 'COMBO' const outputName = nodeData['output_name'][o] || output - const outputShape = nodeData['output_is_list'][o] - ? LiteGraph.GRID_SHAPE - : LiteGraph.CIRCLE_SHAPE - this.addOutput(outputName, output, { shape: outputShape }) + const outputIsList = nodeData['output_is_list'][o] + const outputOptions = outputIsList + ? { shape: LiteGraph.GRID_SHAPE } + : {} + this.addOutput(outputName, output, outputOptions) } const s = this.computeSize() @@ -2062,6 +2070,29 @@ export class ComfyApp { app.#invokeExtensionsAsync('nodeCreated', this) } + + configure(data: any) { + // Keep 'name', 'type', and 'shape' information from the original node definition. + const merge = ( + current: Record, + incoming: Record + ) => { + const result = { ...incoming } + for (const key of ['name', 'type', 'shape']) { + if (current[key] !== undefined) { + result[key] = current[key] + } + } + return result + } + for (const field of ['inputs', 'outputs']) { + const slots = data[field] ?? [] + data[field] = slots.map((slot, i) => + merge(this[field][i] ?? {}, slot) + ) + } + super.configure(data) + } } node.prototype.comfyClass = nodeData.name