From 6949bb2814e964b0d87c43645844449cd60384d2 Mon Sep 17 00:00:00 2001 From: Kodjo Sossouvi Date: Sat, 2 Aug 2025 01:22:45 +0200 Subject: [PATCH] Fixed WorkflowDesignerState --- .../workflows/components/WorkflowDesigner.py | 29 ++++++++++--------- src/components/workflows/db_management.py | 8 ++--- 2 files changed, 20 insertions(+), 17 deletions(-) diff --git a/src/components/workflows/components/WorkflowDesigner.py b/src/components/workflows/components/WorkflowDesigner.py index c0366d0..224d291 100644 --- a/src/components/workflows/components/WorkflowDesigner.py +++ b/src/components/workflows/components/WorkflowDesigner.py @@ -93,7 +93,10 @@ class WorkflowDesigner(BaseComponent): return self._key def refresh_designer(self, oob=False): - return self._mk_canvas(oob) + if oob: + return self._mk_canvas(oob) + else: + return self._mk_elements() def refresh_properties(self, oob=False): return self._mk_properties(oob) @@ -103,7 +106,7 @@ class WorkflowDesigner(BaseComponent): def refresh_state(self): self._state = self._db.load_state(self._key) - return self.__ft__(oob=True) + return self.__ft__(oob=True) def add_component(self, component_type, x, y): self._state.component_counter += 1 @@ -137,14 +140,14 @@ class WorkflowDesigner(BaseComponent): undo_redo_attrs = UndoRedoAttrs(f"Move Component '{component.title}'", on_undo=self.refresh_state) self._db.save_state(self._key, self._state, undo_redo_attrs) # update db - return self.refresh_designer(), self.refresh_properties(True) + return self.refresh_designer(), self.refresh_properties(True), self._undo_redo.refresh() def delete_component(self, component_id): # Remove component if component_id in self._state.components: component = self._state.components[component_id] del self._state.components[component_id] - + # Remove related connections self._state.connections = [connection for connection in self._state.connections if connection.from_id != component_id and connection.to_id != component_id] @@ -153,7 +156,7 @@ class WorkflowDesigner(BaseComponent): undo_redo_attrs = UndoRedoAttrs(f"Remove Component '{component.title}'", on_undo=self.refresh_state) self._db.save_state(self._key, self._state, undo_redo_attrs) - return self.refresh_designer() + return self.refresh_designer(), self._undo_redo.refresh() def add_connection(self, from_id, to_id): # Check if connection already exists @@ -169,7 +172,7 @@ class WorkflowDesigner(BaseComponent): undo_redo_attrs = UndoRedoAttrs(f"Add Connection", on_undo=self.refresh_state) self._db.save_state(self._key, self._state, undo_redo_attrs) - return self.refresh_designer() + return self.refresh_designer(), self._undo_redo.refresh() def delete_connection(self, from_id, to_id): for connection in self._state.connections: @@ -180,14 +183,14 @@ class WorkflowDesigner(BaseComponent): undo_redo_attrs = UndoRedoAttrs(f"Delete Connection", on_undo=self.refresh_state) self._db.save_state(self._key, self._state, undo_redo_attrs) - return self.refresh_designer() + return self.refresh_designer(), self._undo_redo.refresh() def set_designer_height(self, height): self._state.designer_height = height - undo_redo_attrs = UndoRedoAttrs(f"Resize Designer", on_undo=self.refresh_state) + undo_redo_attrs = UndoRedoAttrs(f"Resize Designer", on_undo=lambda: self.refresh_state()) self._db.save_state(self._key, self._state, undo_redo_attrs) - return self.__ft__() # refresh the whole component + return self.__ft__(), self._undo_redo.refresh() # refresh the whole component def select_component(self, component_id): if component_id in self._state.components: @@ -197,7 +200,7 @@ class WorkflowDesigner(BaseComponent): undo_redo_attrs = UndoRedoAttrs(f"Select Component {component.title}", on_undo=self.refresh_state) self._db.save_state(self._key, self._state, undo_redo_attrs) - return self.refresh_properties() + return self.refresh_properties(), self._undo_redo.refresh() def save_properties(self, component_id: str, details: dict): if component_id in self._state.components: @@ -208,7 +211,7 @@ class WorkflowDesigner(BaseComponent): self._db.save_state(self._key, self._state, undo_redo_attrs) logger.debug(f"Saved properties for component {component_id}: {details}") - return self.refresh_properties() + return self.refresh_properties(), self._undo_redo.refresh() def cancel_properties(self, component_id: str): if component_id in self._state.components: @@ -223,7 +226,7 @@ class WorkflowDesigner(BaseComponent): undo_redo_attrs = UndoRedoAttrs(f"Set Processor for {component.title}", on_undo=self.refresh_state) self._db.save_state(self._key, self._state, undo_redo_attrs) - return self.refresh_properties() + return self.refresh_properties(), self._undo_redo.refresh() def play_workflow(self, boundaries: dict): self._error_message = None @@ -273,7 +276,7 @@ class WorkflowDesigner(BaseComponent): P("Drag components from the toolbox to the canvas to create your workflow.", cls="text-sm mb-6"), Div( self._mk_media(), - #self._mk_refresh_button(), + # self._mk_refresh_button(), self._mk_error_message(), cls="flex mb-2", id=f"t_{self._id}" diff --git a/src/components/workflows/db_management.py b/src/components/workflows/db_management.py index ad2b104..dca6564 100644 --- a/src/components/workflows/db_management.py +++ b/src/components/workflows/db_management.py @@ -59,9 +59,9 @@ class WorkflowsDesignerSettings: class WorkflowsDesignerState: components: dict[str, WorkflowComponent] = field(default_factory=dict) connections: list[Connection] = field(default_factory=list) - component_counter = 0 - designer_height = 230 - selected_component_id = None + component_counter: int = 0 + designer_height: int = 230 + selected_component_id: str | None = None @dataclass @@ -160,7 +160,7 @@ class WorkflowsDesignerDbManager: def __init__(self, session: dict, settings_manager: SettingsManager): self._session = session self._settings_manager = settings_manager - self._undo_redo = ComponentsInstancesHelper.get_undo_redo(session) + self._undo_redo = ComponentsInstancesHelper.get_undo_redo(session) @staticmethod def _get_db_entry(key):