mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-04-30 03:01:54 +00:00
Skeleton queue button changes
This commit is contained in:
@@ -245,6 +245,7 @@
|
|||||||
--inverted-background-hover: var(--color-charcoal-600);
|
--inverted-background-hover: var(--color-charcoal-600);
|
||||||
--warning-background: var(--color-gold-400);
|
--warning-background: var(--color-gold-400);
|
||||||
--warning-background-hover: var(--color-gold-500);
|
--warning-background-hover: var(--color-gold-500);
|
||||||
|
--success-background: var(--color-jade-600);
|
||||||
--border-default: var(--color-smoke-600);
|
--border-default: var(--color-smoke-600);
|
||||||
--border-subtle: var(--color-smoke-400);
|
--border-subtle: var(--color-smoke-400);
|
||||||
--muted-background: var(--color-smoke-700);
|
--muted-background: var(--color-smoke-700);
|
||||||
@@ -370,6 +371,7 @@
|
|||||||
--inverted-background-hover: var(--color-smoke-200);
|
--inverted-background-hover: var(--color-smoke-200);
|
||||||
--warning-background: var(--color-gold-600);
|
--warning-background: var(--color-gold-600);
|
||||||
--warning-background-hover: var(--color-gold-500);
|
--warning-background-hover: var(--color-gold-500);
|
||||||
|
--success-background: var(--color-jade-600);
|
||||||
--border-default: var(--color-charcoal-200);
|
--border-default: var(--color-charcoal-200);
|
||||||
--border-subtle: var(--color-charcoal-300);
|
--border-subtle: var(--color-charcoal-300);
|
||||||
--muted-background: var(--color-charcoal-100);
|
--muted-background: var(--color-charcoal-100);
|
||||||
@@ -514,6 +516,7 @@
|
|||||||
--color-inverted-background-hover: var(--inverted-background-hover);
|
--color-inverted-background-hover: var(--inverted-background-hover);
|
||||||
--color-warning-background: var(--warning-background);
|
--color-warning-background: var(--warning-background);
|
||||||
--color-warning-background-hover: var(--warning-background-hover);
|
--color-warning-background-hover: var(--warning-background-hover);
|
||||||
|
--color-success-background: var(--success-background);
|
||||||
--color-border-default: var(--border-default);
|
--color-border-default: var(--border-default);
|
||||||
--color-border-subtle: var(--border-subtle);
|
--color-border-subtle: var(--border-subtle);
|
||||||
--color-muted-background: var(--muted-background);
|
--color-muted-background: var(--muted-background);
|
||||||
|
|||||||
@@ -1,7 +1,13 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { useEventListener, useInfiniteScroll, useScroll } from '@vueuse/core'
|
import {
|
||||||
|
useEventListener,
|
||||||
|
useInfiniteScroll,
|
||||||
|
useInterval,
|
||||||
|
useScroll
|
||||||
|
} from '@vueuse/core'
|
||||||
import { storeToRefs } from 'pinia'
|
import { storeToRefs } from 'pinia'
|
||||||
import Divider from 'primevue/divider'
|
import Divider from 'primevue/divider'
|
||||||
|
import ProgressSpinner from 'primevue/progressspinner'
|
||||||
import Splitter from 'primevue/splitter'
|
import Splitter from 'primevue/splitter'
|
||||||
import SplitterPanel from 'primevue/splitterpanel'
|
import SplitterPanel from 'primevue/splitterpanel'
|
||||||
import { computed, ref, shallowRef, useTemplateRef, watch } from 'vue'
|
import { computed, ref, shallowRef, useTemplateRef, watch } from 'vue'
|
||||||
@@ -15,6 +21,8 @@ import type { LGraphNode } from '@/lib/litegraph/src/LGraphNode'
|
|||||||
import { useMediaAssets } from '@/platform/assets/composables/media/useMediaAssets'
|
import { useMediaAssets } from '@/platform/assets/composables/media/useMediaAssets'
|
||||||
import { getOutputAssetMetadata } from '@/platform/assets/schemas/assetMetadataSchema'
|
import { getOutputAssetMetadata } from '@/platform/assets/schemas/assetMetadataSchema'
|
||||||
import type { AssetItem } from '@/platform/assets/schemas/assetSchema'
|
import type { AssetItem } from '@/platform/assets/schemas/assetSchema'
|
||||||
|
import SubscribeToRunButton from '@/platform/cloud/subscription/components/SubscribeToRun.vue'
|
||||||
|
import { useSubscription } from '@/platform/cloud/subscription/composables/useSubscription'
|
||||||
import { useTelemetry } from '@/platform/telemetry'
|
import { useTelemetry } from '@/platform/telemetry'
|
||||||
import { useWorkflowStore } from '@/platform/workflow/management/stores/workflowStore'
|
import { useWorkflowStore } from '@/platform/workflow/management/stores/workflowStore'
|
||||||
import type { ComfyWorkflowJSON } from '@/platform/workflow/validation/schemas/workflowSchema'
|
import type { ComfyWorkflowJSON } from '@/platform/workflow/validation/schemas/workflowSchema'
|
||||||
@@ -23,12 +31,16 @@ import NodeWidgets from '@/renderer/extensions/vueNodes/components/NodeWidgets.v
|
|||||||
import WidgetInputNumberInput from '@/renderer/extensions/vueNodes/widgets/components/WidgetInputNumber.vue'
|
import WidgetInputNumberInput from '@/renderer/extensions/vueNodes/widgets/components/WidgetInputNumber.vue'
|
||||||
import { app } from '@/scripts/app'
|
import { app } from '@/scripts/app'
|
||||||
import { useCommandStore } from '@/stores/commandStore'
|
import { useCommandStore } from '@/stores/commandStore'
|
||||||
|
import { useExecutionStore } from '@/stores/executionStore'
|
||||||
import { useQueueSettingsStore } from '@/stores/queueStore'
|
import { useQueueSettingsStore } from '@/stores/queueStore'
|
||||||
import { cn } from '@/utils/tailwindUtil'
|
import { cn } from '@/utils/tailwindUtil'
|
||||||
|
|
||||||
const outputs = useMediaAssets('output')
|
const outputs = useMediaAssets('output')
|
||||||
|
|
||||||
const commandStore = useCommandStore()
|
const commandStore = useCommandStore()
|
||||||
|
const executionStore = useExecutionStore()
|
||||||
|
const workflowStore = useWorkflowStore()
|
||||||
|
const { isActiveSubscription } = useSubscription()
|
||||||
|
|
||||||
const graphNodes = shallowRef<LGraphNode[]>(app.rootGraph.nodes)
|
const graphNodes = shallowRef<LGraphNode[]>(app.rootGraph.nodes)
|
||||||
useEventListener(
|
useEventListener(
|
||||||
@@ -112,6 +124,9 @@ watch(activeLoad, () => {
|
|||||||
outputElement.scrollIntoView({ block: 'nearest' })
|
outputElement.scrollIntoView({ block: 'nearest' })
|
||||||
})
|
})
|
||||||
|
|
||||||
|
//FIXME: actually implement this
|
||||||
|
const jobFinishedQueue = useInterval(1000)
|
||||||
|
|
||||||
function loadWorkflow(item: AssetItem, index: [number, number]) {
|
function loadWorkflow(item: AssetItem, index: [number, number]) {
|
||||||
const { workflow } = item.user_metadata as { workflow?: ComfyWorkflowJSON }
|
const { workflow } = item.user_metadata as { workflow?: ComfyWorkflowJSON }
|
||||||
if (!workflow) return
|
if (!workflow) return
|
||||||
@@ -378,12 +393,13 @@ function handleCenterWheel(e: WheelEvent) {
|
|||||||
<div
|
<div
|
||||||
class="h-12 border-x border-border-subtle py-2 px-4 gap-2 bg-comfy-menu-bg flex items-center"
|
class="h-12 border-x border-border-subtle py-2 px-4 gap-2 bg-comfy-menu-bg flex items-center"
|
||||||
>
|
>
|
||||||
<span class="font-bold truncate min-w-30">
|
<span
|
||||||
{{ useWorkflowStore().activeWorkflow?.filename }}
|
class="font-bold truncate min-w-30"
|
||||||
</span>
|
v-text="workflowStore.activeWorkflow?.filename"
|
||||||
|
/>
|
||||||
<div class="flex-1" />
|
<div class="flex-1" />
|
||||||
<i class="icon-[lucide--info]" />
|
<i class="icon-[lucide--info]" />
|
||||||
<Button>{{ t('Publish') }}</Button>
|
<Button> {{ t('publish') }} </Button>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
class="border gap-2 h-full border-[var(--interface-stroke)] bg-comfy-menu-bg flex flex-col px-2"
|
class="border gap-2 h-full border-[var(--interface-stroke)] bg-comfy-menu-bg flex flex-col px-2"
|
||||||
@@ -404,13 +420,39 @@ function handleCenterWheel(e: WheelEvent) {
|
|||||||
:widget="batchCountWidget"
|
:widget="batchCountWidget"
|
||||||
class="*:[.min-w-0]:w-24 grid-cols-[auto_96px]!"
|
class="*:[.min-w-0]:w-24 grid-cols-[auto_96px]!"
|
||||||
/>
|
/>
|
||||||
<Button
|
<SubscribeToRunButton
|
||||||
class="w-full mt-4 bg-primary-background h-10 text-sm"
|
v-if="!isActiveSubscription"
|
||||||
@click="runButtonClick"
|
class="w-full mt-4"
|
||||||
>
|
/>
|
||||||
<i class="icon-[lucide--play]" />
|
<div v-else class="flex mt-4 gap-2 relative">
|
||||||
{{ t('menu.run') }}
|
<Button
|
||||||
</Button>
|
variant="primary"
|
||||||
|
class="grow-1"
|
||||||
|
size="lg"
|
||||||
|
@click="runButtonClick"
|
||||||
|
>
|
||||||
|
<i class="icon-[lucide--play]" />
|
||||||
|
{{ t('menu.run') }}
|
||||||
|
</Button>
|
||||||
|
<Button
|
||||||
|
v-if="!executionStore.isIdle"
|
||||||
|
variant="destructive"
|
||||||
|
size="lg"
|
||||||
|
@click="console.error('not implemented')"
|
||||||
|
>
|
||||||
|
<i class="icon-[lucide--x]" />
|
||||||
|
</Button>
|
||||||
|
<div
|
||||||
|
class="absolute bg-base-foreground text-base-background rounded-sm flex h-8 p-1 pr-2 gap-2 items-center"
|
||||||
|
>
|
||||||
|
<i
|
||||||
|
v-if="jobFinishedQueue % 2"
|
||||||
|
class="icon-[lucide--check] size-5 bg-success-background"
|
||||||
|
/>
|
||||||
|
<ProgressSpinner v-else class="size-4" />
|
||||||
|
<span v-text="t('Job added to queue')" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</SplitterPanel>
|
</SplitterPanel>
|
||||||
|
|||||||
Reference in New Issue
Block a user