From 5ee0fd3519d54c909ecde74e6e2b35481d246985 Mon Sep 17 00:00:00 2001 From: Chenlei Hu Date: Wed, 25 Sep 2024 11:55:50 +0900 Subject: [PATCH] Rework queue button (#968) * Move queue button to right side * Rework split button * Group * Remove unused code * x2 buttons * Use primevue divider * adjust style * Add tooltip * Update test * Add clearing pending tasks button to queue bar * Fix state * Dropdown list fix --- browser_tests/appMenu.spec.ts | 6 +- browser_tests/helpers/appMenu.ts | 39 +-- src/components/appMenu/AppMenu.vue | 224 +++++++----------- src/components/appMenu/BatchCountEdit.vue | 69 ++++++ .../sidebar/tabs/QueueSidebarTab.vue | 19 +- src/i18n.ts | 2 +- src/scripts/ui/menu/menu.css | 11 - src/stores/commandStore.ts | 10 + src/stores/queueStore.ts | 2 +- src/stores/workspaceStateStore.ts | 6 +- 10 files changed, 188 insertions(+), 200 deletions(-) create mode 100644 src/components/appMenu/BatchCountEdit.vue diff --git a/browser_tests/appMenu.spec.ts b/browser_tests/appMenu.spec.ts index 61eb18512..f7b3d1495 100644 --- a/browser_tests/appMenu.spec.ts +++ b/browser_tests/appMenu.spec.ts @@ -12,10 +12,6 @@ test.describe('AppMenu', () => { }) test.afterEach(async ({ comfyPage }) => { - const currentThemeId = await comfyPage.menu.getThemeId() - if (currentThemeId !== 'dark') { - await comfyPage.menu.toggleTheme() - } await comfyPage.setSetting('Comfy.UseNewMenu', 'Disabled') }) @@ -27,7 +23,7 @@ test.describe('AppMenu', () => { ws }) => { // Enable change auto-queue mode - let queueOpts = await comfyPage.appMenu.queueButton.toggleOptions() + const queueOpts = await comfyPage.appMenu.queueButton.toggleOptions() expect(await queueOpts.getMode()).toBe('disabled') await queueOpts.setMode('change') await comfyPage.nextFrame() diff --git a/browser_tests/helpers/appMenu.ts b/browser_tests/helpers/appMenu.ts index 3bf1070e2..840005dec 100644 --- a/browser_tests/helpers/appMenu.ts +++ b/browser_tests/helpers/appMenu.ts @@ -1,4 +1,5 @@ import type { Page, Locator } from '@playwright/test' +import type { AutoQueueMode } from '../../src/stores/queueStore' export class ComfyAppMenu { public readonly root: Locator @@ -27,39 +28,17 @@ class ComfyQueueButton { } class ComfyQueueButtonOptions { - public readonly popup: Locator - public readonly modes: { - disabled: { input: Locator; wrapper: Locator } - instant: { input: Locator; wrapper: Locator } - change: { input: Locator; wrapper: Locator } - } + constructor(public readonly page: Page) {} - constructor(public readonly page: Page) { - this.popup = page.getByTestId('queue-options') - this.modes = (['disabled', 'instant', 'change'] as const).reduce( - (modes, mode) => { - modes[mode] = { - input: page.locator(`#autoqueue-${mode}`), - wrapper: page.getByTestId(`autoqueue-${mode}`) - } - return modes - }, - {} as ComfyQueueButtonOptions['modes'] - ) - } - - public async setMode(mode: keyof ComfyQueueButtonOptions['modes']) { - await this.modes[mode].input.click() + public async setMode(mode: AutoQueueMode) { + await this.page.evaluate((mode) => { + window['app'].extensionManager.queueSettings.mode = mode + }, mode) } public async getMode() { - return ( - await Promise.all( - Object.entries(this.modes).map(async ([mode, opt]) => [ - mode, - await opt.wrapper.getAttribute('data-p-checked') - ]) - ) - ).find(([, checked]) => checked === 'true')?.[0] + return await this.page.evaluate(() => { + return window['app'].extensionManager.queueSettings.mode + }) } } diff --git a/src/components/appMenu/AppMenu.vue b/src/components/appMenu/AppMenu.vue index eb8e1899d..035c617ea 100644 --- a/src/components/appMenu/AppMenu.vue +++ b/src/components/appMenu/AppMenu.vue @@ -1,73 +1,47 @@