Working on undo redo

This commit is contained in:
Kodjo Sossouvi
2025-07-25 17:22:18 +02:00
parent fb82365980
commit 72f5f30da6
6 changed files with 86 additions and 34 deletions

View File

@@ -7,7 +7,7 @@ from fasthtml.xtend import Script
from assets.icons import icon_error
from components.BaseComponent import BaseComponent
from components.workflows.assets.icons import icon_play, icon_pause, icon_stop
from components.workflows.commands import WorkflowDesignerCommandManager
from components.workflows.commands import WorkflowDesignerCommandManager, AddConnectorCommand
from components.workflows.components.WorkflowPlayer import WorkflowPlayer
from components.workflows.constants import WORKFLOW_DESIGNER_INSTANCE_ID, ProcessorTypes
from components.workflows.db_management import WorkflowsDesignerSettings, WorkflowComponent, \
@@ -16,6 +16,7 @@ from components_helpers import apply_boundaries, mk_tooltip, mk_dialog_buttons,
from core.instance_manager import InstanceManager
from core.jira import JiraRequestTypes, DEFAULT_SEARCH_FIELDS
from core.utils import get_unique_id, make_safe_id
from utils.ComponentsInstancesHelper import ComponentsInstancesHelper
from utils.DbManagementHelper import DbManagementHelper
logger = logging.getLogger("WorkflowDesigner")
@@ -80,8 +81,17 @@ class WorkflowDesigner(BaseComponent):
def set_boundaries(self, boundaries: dict):
self._boundaries = boundaries
def refresh_designer(self):
return self._mk_elements()
def get_state(self):
return self._state
def get_db(self):
return self._db
def get_key(self):
return self._key
def refresh_designer(self, oob=False):
return self._mk_canvas(oob)
def refresh_properties(self, oob=False):
return self._mk_properties(oob)
@@ -102,9 +112,16 @@ class WorkflowDesigner(BaseComponent):
properties={"processor_name": PROCESSOR_TYPES[component_type][0]}
)
command = AddConnectorCommand(self, component)
undo_redo = ComponentsInstancesHelper.get_undo_redo(self._session)
#undo_redo.push(command)
self._state.components[component_id] = component
self._db.save_state(self._key, self._state) # update db
return self.refresh_designer()
undo_redo.snapshot("add_component")
return command.redo(), undo_redo.refresh()
# self._state.components[component_id] = component
# self._db.save_state(self._key, self._state) # update db
# return self.refresh_designer()
def move_component(self, component_id, x, y):
if component_id in self._state.components: