mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-04-20 14:30:41 +00:00
## Summary Merges latest changes from `main` as of 10-06-2025. ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-5965-Merge-main-as-of-10-06-2025-into-rh-test-2856d73d3650812cb95fd8917278a770) by [Unito](https://www.unito.io) --------- Signed-off-by: Marcel Petrick <mail@marcelpetrick.it> Co-authored-by: filtered <176114999+webfiltered@users.noreply.github.com> Co-authored-by: Christian Byrne <cbyrne@comfy.org> Co-authored-by: github-actions <github-actions@github.com> Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Alexander Brown <drjkl@comfy.org> Co-authored-by: Benjamin Lu <benceruleanlu@proton.me> Co-authored-by: Terry Jia <terryjia88@gmail.com> Co-authored-by: snomiao <snomiao@gmail.com> Co-authored-by: Simula_r <18093452+simula-r@users.noreply.github.com> Co-authored-by: Jake Schroeder <jake.schroeder@isophex.com> Co-authored-by: Comfy Org PR Bot <snomiao+comfy-pr@gmail.com> Co-authored-by: AustinMroz <4284322+AustinMroz@users.noreply.github.com> Co-authored-by: GitHub Action <action@github.com> Co-authored-by: Johnpaul Chiwetelu <49923152+Myestery@users.noreply.github.com> Co-authored-by: Marcel Petrick <mail@marcelpetrick.it> Co-authored-by: Alexander Brown <DrJKL0424@gmail.com> Co-authored-by: Benjamin Lu <benjaminlu1107@gmail.com> Co-authored-by: Alexander Piskun <13381981+bigcat88@users.noreply.github.com> Co-authored-by: Rizumu Ayaka <rizumu@ayaka.moe> Co-authored-by: JakeSchroeder <jake@axiom.co> Co-authored-by: AustinMroz <austin@comfy.org> Co-authored-by: DrJKL <DrJKL@users.noreply.github.com> Co-authored-by: ComfyUI Wiki <contact@comfyui-wiki.com>
89 lines
2.4 KiB
Vue
89 lines
2.4 KiB
Vue
<template>
|
|
<tr
|
|
class="border-neutral-700 border-solid border-y"
|
|
:class="{
|
|
'opacity-50': runner.resolved,
|
|
'opacity-75': isLoading && runner.resolved
|
|
}"
|
|
>
|
|
<td class="text-center w-16">
|
|
<TaskListStatusIcon :state="runner.state" :loading="isLoading" />
|
|
</td>
|
|
<td>
|
|
<p class="inline-block">
|
|
{{ task.name }}
|
|
</p>
|
|
<Button
|
|
class="inline-block mx-2"
|
|
type="button"
|
|
:icon="PrimeIcons.INFO_CIRCLE"
|
|
severity="secondary"
|
|
:text="true"
|
|
@click="toggle"
|
|
/>
|
|
|
|
<Popover ref="infoPopover" class="block m-1 max-w-64 min-w-32">
|
|
<span class="whitespace-pre-line">{{ task.description }}</span>
|
|
</Popover>
|
|
</td>
|
|
<td class="text-right px-4">
|
|
<Button
|
|
:icon="task.button?.icon"
|
|
:label="task.button?.text"
|
|
:severity
|
|
icon-pos="right"
|
|
:loading="isExecuting"
|
|
@click="(event) => $emit('execute', event)"
|
|
/>
|
|
</td>
|
|
</tr>
|
|
</template>
|
|
|
|
<script setup lang="ts">
|
|
import { PrimeIcons } from '@primevue/core/api'
|
|
import Button from 'primevue/button'
|
|
import Popover from 'primevue/popover'
|
|
import { computed, ref } from 'vue'
|
|
|
|
import { useMaintenanceTaskStore } from '@/stores/maintenanceTaskStore'
|
|
import type { MaintenanceTask } from '@/types/desktop/maintenanceTypes'
|
|
import type { PrimeVueSeverity } from '@/types/primeVueTypes'
|
|
import { useMinLoadingDurationRef } from '@/utils/refUtil'
|
|
|
|
import TaskListStatusIcon from './TaskListStatusIcon.vue'
|
|
|
|
const taskStore = useMaintenanceTaskStore()
|
|
const runner = computed(() => taskStore.getRunner(props.task))
|
|
|
|
// Properties
|
|
const props = defineProps<{
|
|
task: MaintenanceTask
|
|
}>()
|
|
|
|
// Events
|
|
defineEmits<{
|
|
execute: [event: MouseEvent]
|
|
}>()
|
|
|
|
// Binding
|
|
const severity = computed<PrimeVueSeverity>(() =>
|
|
runner.value.state === 'error' || runner.value.state === 'warning'
|
|
? 'primary'
|
|
: 'secondary'
|
|
)
|
|
|
|
// Use a minimum run time to ensure tasks "feel" like they have run
|
|
const reactiveLoading = computed(() => !!runner.value.refreshing)
|
|
const reactiveExecuting = computed(() => !!runner.value.executing)
|
|
|
|
const isLoading = useMinLoadingDurationRef(reactiveLoading, 250)
|
|
const isExecuting = useMinLoadingDurationRef(reactiveExecuting, 250)
|
|
|
|
// Popover
|
|
const infoPopover = ref<InstanceType<typeof Popover> | null>(null)
|
|
|
|
const toggle = (event: Event) => {
|
|
infoPopover.value?.toggle(event)
|
|
}
|
|
</script>
|