Skip to content

Commit

Permalink
fix broken task metadata update
Browse files Browse the repository at this point in the history
  • Loading branch information
pedohorse committed Nov 2, 2024
1 parent f6b3390 commit 2831689
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 4 deletions.
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from datetime import timedelta
import imgui
from lifeblood import logging
from lifeblood.enums import InvocationState
from lifeblood.enums import InvocationState, TaskState
from lifeblood.ui_protocol_data import TaskData, IncompleteInvocationLogData, InvocationLogData
from .scene_task_preview import SceneTaskPreview
from ..drawable_task import DrawableTask
Expand Down Expand Up @@ -29,6 +29,7 @@ def __init__(self, scene: GraphicsSceneWithNodesAndTasks, task_data: TaskData, d
super().__init__(scene, task_data)
self.__scene_container = scene
self.__data_controller = data_controller
self.__meta_needs_to_be_requested = False
self.setAcceptHoverEvents(True)
# self.setFlags(QGraphicsItem.ItemIsSelectable)

Expand All @@ -51,6 +52,18 @@ def set_groups(self, groups: Set[str]):
super().set_groups(groups)
self.refresh_ui()

def set_state(self, state: Optional[TaskState], paused: Optional[bool]):
super().set_state(state, paused)
self.refresh_ui()

def set_state_details(self, state_details: Optional[str] = None):
super().set_state_details(state_details)
self.refresh_ui()

def set_progress(self, progress: float):
super().set_progress(progress)
self.refresh_ui()

def refresh_ui(self):
"""
unlike update - this method actually queries new task ui status
Expand All @@ -59,8 +72,7 @@ def refresh_ui(self):
"""
if not self.isSelected() and len(self.item_watchers()) == 0:
return
self.__data_controller.request_log_meta(self.get_id()) # update all task metadata: which nodes it ran on and invocation numbers only
self.__data_controller.request_attributes(self.get_id())
self.__meta_needs_to_be_requested = True # actual request will happen when DRAWN

for invoc_id, nid, invoc_dict in self.invocation_logs():
if invoc_dict is None:
Expand Down Expand Up @@ -133,9 +145,21 @@ def _draw_dict_table(attributes: dict, table_name: str):
imgui.next_column()
imgui.columns(1)

def request_update_meta_if_needed(self):
"""
note, this is just a request, actual update will come later
"""
if not self.__meta_needs_to_be_requested:
return
self.__meta_needs_to_be_requested = False
self.__data_controller.request_log_meta(self.get_id()) # update all task metadata: which nodes it ran on and invocation numbers only
self.__data_controller.request_attributes(self.get_id())

#
# interface
def draw_imgui_elements(self, drawing_widget):
self.request_update_meta_if_needed()

imgui.text(f'Task {self.get_id()} {self.name()}')
imgui.text(f'state: {self.state().name}')
imgui.text(f'groups: {", ".join(self.groups())}')
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
from ..editor_scene_integration import fetch_and_open_log_viewer
from .overlay_base import NodeEditorOverlayBase

from typing import Optional


class TaskHistoryOverlay(NodeEditorOverlayBase):
logger = get_logger('viewer.task_history_overlay')
Expand All @@ -31,7 +33,7 @@ def __init__(self, scene: QGraphicsImguiSceneWithDataController):
self.__node_mark_offset_top = node_mark_offset + QPointF(0, node_mark_shrink)
self.__node_mark_offset_bottom = node_mark_offset - QPointF(0, node_mark_shrink)

self.__highlighted_task = None
self.__highlighted_task: Optional[Task] = None
self.__buttons = None

def draw_scene_foreground(self, painter: QPainter, rect: QRectF):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
from lifeblood_viewer.nodeeditor import NodeEditor
from lifeblood_viewer.ui_scene_elements import ImguiViewWindow
from ..graphics_items import Node, NetworkItemWatcher
from ..graphics_items.pretty_items.fancy_items.scene_task import SceneTask
from PySide2.QtGui import QCursor

from typing import Optional
Expand Down Expand Up @@ -65,6 +66,8 @@ def draw_window_elements(self):
select_next_task = False
task_to_reselect = None
for task in self.__displayed_node.tasks_iter(order=self.__displayed_node.TaskSortOrder.ID):
if isinstance(task, SceneTask):
task.request_update_meta_if_needed() # note that this is async, so this will just do request, old data will be drawn in this call
if task.isSelected():
imgui.table_set_background_color(imgui.TABLE_BACKGROUND_TARGET_ROW_BG1, 2155896928)
if imgui.is_window_focused():
Expand Down

0 comments on commit 2831689

Please sign in to comment.