Spaces:
Running
Running
File size: 1,530 Bytes
0f8b3a0 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | from __future__ import annotations
from typing import TYPE_CHECKING
from velai.dataflow.enums import NodeState
from velai.nodes.base_node import BaseNode
if TYPE_CHECKING:
from velai.dataflow.nodes import NodeInstance
from velai.ui.vueflow_canvas import VueFlowCanvas
class ProgressStateUpdater:
def __init__(self, canvas: VueFlowCanvas) -> None:
self.canvas = canvas
async def update(self, node: NodeInstance) -> None:
"""Update the progress UI based on the current state of the node."""
node_id = node.node_id
state = node.state
if state == NodeState.QUEUED:
await self.canvas.set_node_processing(node_id, True)
await self.canvas.update_node_progress(node_id, None, None)
elif state == NodeState.PROCESSING:
await self.canvas.set_node_processing(node_id, True)
if isinstance(node, BaseNode):
# Only show message if it's not None or empty
msg = node.data.progress_message
if not msg:
msg = None
await self.canvas.update_node_progress(
node_id,
node.data.progress_value,
msg,
)
else:
await self.canvas.update_node_progress(node_id, None, None)
elif state == NodeState.IDLE:
await self.canvas.set_node_processing(node_id, False)
await self.canvas.update_node_progress(node_id, None, None)
|