Fixed WorkflowDesignerState
This commit is contained in:
@@ -93,7 +93,10 @@ class WorkflowDesigner(BaseComponent):
|
|||||||
return self._key
|
return self._key
|
||||||
|
|
||||||
def refresh_designer(self, oob=False):
|
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):
|
def refresh_properties(self, oob=False):
|
||||||
return self._mk_properties(oob)
|
return self._mk_properties(oob)
|
||||||
@@ -103,7 +106,7 @@ class WorkflowDesigner(BaseComponent):
|
|||||||
|
|
||||||
def refresh_state(self):
|
def refresh_state(self):
|
||||||
self._state = self._db.load_state(self._key)
|
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):
|
def add_component(self, component_type, x, y):
|
||||||
self._state.component_counter += 1
|
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)
|
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
|
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):
|
def delete_component(self, component_id):
|
||||||
# Remove component
|
# Remove component
|
||||||
if component_id in self._state.components:
|
if component_id in self._state.components:
|
||||||
component = self._state.components[component_id]
|
component = self._state.components[component_id]
|
||||||
del self._state.components[component_id]
|
del self._state.components[component_id]
|
||||||
|
|
||||||
# Remove related connections
|
# Remove related connections
|
||||||
self._state.connections = [connection for connection in self._state.connections
|
self._state.connections = [connection for connection in self._state.connections
|
||||||
if connection.from_id != component_id and connection.to_id != component_id]
|
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)
|
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)
|
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):
|
def add_connection(self, from_id, to_id):
|
||||||
# Check if connection already exists
|
# Check if connection already exists
|
||||||
@@ -169,7 +172,7 @@ class WorkflowDesigner(BaseComponent):
|
|||||||
undo_redo_attrs = UndoRedoAttrs(f"Add Connection", on_undo=self.refresh_state)
|
undo_redo_attrs = UndoRedoAttrs(f"Add Connection", on_undo=self.refresh_state)
|
||||||
self._db.save_state(self._key, self._state, undo_redo_attrs)
|
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):
|
def delete_connection(self, from_id, to_id):
|
||||||
for connection in self._state.connections:
|
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)
|
undo_redo_attrs = UndoRedoAttrs(f"Delete Connection", on_undo=self.refresh_state)
|
||||||
self._db.save_state(self._key, self._state, undo_redo_attrs)
|
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):
|
def set_designer_height(self, height):
|
||||||
self._state.designer_height = 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)
|
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):
|
def select_component(self, component_id):
|
||||||
if component_id in self._state.components:
|
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)
|
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)
|
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):
|
def save_properties(self, component_id: str, details: dict):
|
||||||
if component_id in self._state.components:
|
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)
|
self._db.save_state(self._key, self._state, undo_redo_attrs)
|
||||||
logger.debug(f"Saved properties for component {component_id}: {details}")
|
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):
|
def cancel_properties(self, component_id: str):
|
||||||
if component_id in self._state.components:
|
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)
|
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)
|
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):
|
def play_workflow(self, boundaries: dict):
|
||||||
self._error_message = None
|
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"),
|
P("Drag components from the toolbox to the canvas to create your workflow.", cls="text-sm mb-6"),
|
||||||
Div(
|
Div(
|
||||||
self._mk_media(),
|
self._mk_media(),
|
||||||
#self._mk_refresh_button(),
|
# self._mk_refresh_button(),
|
||||||
self._mk_error_message(),
|
self._mk_error_message(),
|
||||||
cls="flex mb-2",
|
cls="flex mb-2",
|
||||||
id=f"t_{self._id}"
|
id=f"t_{self._id}"
|
||||||
|
|||||||
@@ -59,9 +59,9 @@ class WorkflowsDesignerSettings:
|
|||||||
class WorkflowsDesignerState:
|
class WorkflowsDesignerState:
|
||||||
components: dict[str, WorkflowComponent] = field(default_factory=dict)
|
components: dict[str, WorkflowComponent] = field(default_factory=dict)
|
||||||
connections: list[Connection] = field(default_factory=list)
|
connections: list[Connection] = field(default_factory=list)
|
||||||
component_counter = 0
|
component_counter: int = 0
|
||||||
designer_height = 230
|
designer_height: int = 230
|
||||||
selected_component_id = None
|
selected_component_id: str | None = None
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
@@ -160,7 +160,7 @@ class WorkflowsDesignerDbManager:
|
|||||||
def __init__(self, session: dict, settings_manager: SettingsManager):
|
def __init__(self, session: dict, settings_manager: SettingsManager):
|
||||||
self._session = session
|
self._session = session
|
||||||
self._settings_manager = settings_manager
|
self._settings_manager = settings_manager
|
||||||
self._undo_redo = ComponentsInstancesHelper.get_undo_redo(session)
|
self._undo_redo = ComponentsInstancesHelper.get_undo_redo(session)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _get_db_entry(key):
|
def _get_db_entry(key):
|
||||||
|
|||||||
Reference in New Issue
Block a user