Refactored properties component
This commit is contained in:
@@ -629,7 +629,7 @@ function bindWorkflowProperties(elementId) {
|
|||||||
const totalWidth = properties_component.getBoundingClientRect().width
|
const totalWidth = properties_component.getBoundingClientRect().width
|
||||||
console.debug("totalWidth", totalWidth)
|
console.debug("totalWidth", totalWidth)
|
||||||
|
|
||||||
const minPropertiesWidth = Math.floor(totalWidth * 0.2); // 20% minimum
|
const minPropertiesWidth = 340; // this value avoid scroll bars
|
||||||
|
|
||||||
const inputSection = document.getElementById(`pi_${elementId}`);
|
const inputSection = document.getElementById(`pi_${elementId}`);
|
||||||
const propertiesSection = document.getElementById(`pp_${elementId}`);
|
const propertiesSection = document.getElementById(`pp_${elementId}`);
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ class WorkflowDesignerCommandManager(BaseCommandManager):
|
|||||||
def save_properties(self, component_id: str):
|
def save_properties(self, component_id: str):
|
||||||
return {
|
return {
|
||||||
"hx_post": f"{ROUTE_ROOT}{Routes.SaveProperties}",
|
"hx_post": f"{ROUTE_ROOT}{Routes.SaveProperties}",
|
||||||
"hx-target": f"#p_{self._id}",
|
"hx-target": f"#ppc_{self._id}",
|
||||||
"hx-swap": "outerHTML",
|
"hx-swap": "outerHTML",
|
||||||
"hx-vals": f'js:{{"_id": "{self._id}", "component_id": "{component_id}"}}',
|
"hx-vals": f'js:{{"_id": "{self._id}", "component_id": "{component_id}"}}',
|
||||||
}
|
}
|
||||||
@@ -54,7 +54,7 @@ class WorkflowDesignerCommandManager(BaseCommandManager):
|
|||||||
def cancel_properties(self, component_id: str):
|
def cancel_properties(self, component_id: str):
|
||||||
return {
|
return {
|
||||||
"hx_post": f"{ROUTE_ROOT}{Routes.CancelProperties}",
|
"hx_post": f"{ROUTE_ROOT}{Routes.CancelProperties}",
|
||||||
"hx-target": f"#p_{self._id}",
|
"hx-target": f"#ppc_{self._id}",
|
||||||
"hx-swap": "outerHTML",
|
"hx-swap": "outerHTML",
|
||||||
"hx-vals": f'js:{{"_id": "{self._id}", "component_id": "{component_id}"}}',
|
"hx-vals": f'js:{{"_id": "{self._id}", "component_id": "{component_id}"}}',
|
||||||
}
|
}
|
||||||
@@ -62,7 +62,7 @@ class WorkflowDesignerCommandManager(BaseCommandManager):
|
|||||||
def on_processor_details_event(self, component_id: str, event_name: str):
|
def on_processor_details_event(self, component_id: str, event_name: str):
|
||||||
return {
|
return {
|
||||||
"hx_post": f"{ROUTE_ROOT}{Routes.OnProcessorDetailsEvent}",
|
"hx_post": f"{ROUTE_ROOT}{Routes.OnProcessorDetailsEvent}",
|
||||||
"hx-target": f"#p_{self._id}",
|
"hx-target": f"#ppc_{self._id}",
|
||||||
"hx-trigger": "change",
|
"hx-trigger": "change",
|
||||||
"hx-swap": "outerHTML",
|
"hx-swap": "outerHTML",
|
||||||
"hx-vals": f'js:{{"_id": "{self._id}", "component_id": "{component_id}", "event_name": "{event_name}"}}',
|
"hx-vals": f'js:{{"_id": "{self._id}", "component_id": "{component_id}", "event_name": "{event_name}"}}',
|
||||||
|
|||||||
@@ -86,6 +86,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)
|
||||||
self.properties.update_layout()
|
self.properties.update_layout()
|
||||||
|
self.properties.update_component(self._state.selected_component_id)
|
||||||
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):
|
||||||
@@ -201,13 +202,13 @@ 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(), self._undo_redo.refresh()
|
return self.properties.refresh(mode="form"), 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:
|
||||||
logger.debug(f"Cancel saving properties for component {component_id}")
|
logger.debug(f"Cancel saving properties for component {component_id}")
|
||||||
|
|
||||||
return self.refresh_properties()
|
return self.properties.refresh(mode="form")
|
||||||
|
|
||||||
def set_selected_processor(self, component_id: str, processor_name: str):
|
def set_selected_processor(self, component_id: str, processor_name: str):
|
||||||
if component_id in self._state.components:
|
if component_id in self._state.components:
|
||||||
@@ -249,7 +250,7 @@ class WorkflowDesigner(BaseComponent):
|
|||||||
elif event_name == "OnJiraRequestTypeChanged":
|
elif event_name == "OnJiraRequestTypeChanged":
|
||||||
component.properties["request_type"] = details["request_type"]
|
component.properties["request_type"] = details["request_type"]
|
||||||
|
|
||||||
return self.refresh_properties()
|
return self.properties.refresh(mode="form")
|
||||||
|
|
||||||
def get_workflow_name(self):
|
def get_workflow_name(self):
|
||||||
return self._designer_settings.workflow_name
|
return self._designer_settings.workflow_name
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ from components.BaseComponent import BaseComponent
|
|||||||
from components.workflows.constants import COMPONENT_TYPES, PROCESSOR_TYPES
|
from components.workflows.constants import COMPONENT_TYPES, PROCESSOR_TYPES
|
||||||
from components_helpers import mk_dialog_buttons
|
from components_helpers import mk_dialog_buttons
|
||||||
from core.jira import JiraRequestTypes, DEFAULT_SEARCH_FIELDS
|
from core.jira import JiraRequestTypes, DEFAULT_SEARCH_FIELDS
|
||||||
from core.utils import merge_classes
|
from utils.DbManagementHelper import DbManagementHelper
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
@@ -152,7 +152,6 @@ class WorkflowDesignerProperties(BaseComponent):
|
|||||||
),
|
),
|
||||||
id=f"ppf_{self._id}",
|
id=f"ppf_{self._id}",
|
||||||
cls="wkf-properties-content-form",
|
cls="wkf-properties-content-form",
|
||||||
#style=" flex-grow: 1;overflow: auto;"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
def _mk_select_processor(self):
|
def _mk_select_processor(self):
|
||||||
@@ -217,16 +216,8 @@ class WorkflowDesignerProperties(BaseComponent):
|
|||||||
P("Put the issue id here"),
|
P("Put the issue id here"),
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
|
|
||||||
def _mk_extra_parameters():
|
|
||||||
if request_type == JiraRequestTypes.Issues.value:
|
|
||||||
return Input(type="text",
|
|
||||||
name="fields",
|
|
||||||
value=self._component.properties.get("fields", DEFAULT_SEARCH_FIELDS),
|
|
||||||
placeholder="default fields",
|
|
||||||
cls="input w-full ml-2")
|
|
||||||
else:
|
else:
|
||||||
return None
|
return [Div("** Not Implemented **")]
|
||||||
|
|
||||||
request_type = self._component.properties.get("request_type", JiraRequestTypes.Issues.value)
|
request_type = self._component.properties.get("request_type", JiraRequestTypes.Issues.value)
|
||||||
return Div(
|
return Div(
|
||||||
@@ -247,6 +238,88 @@ class WorkflowDesignerProperties(BaseComponent):
|
|||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def _mk_details_producer_repository(self):
|
||||||
|
selected_repo = self._component.properties.get("repository", None)
|
||||||
|
selected_table = self._component.properties.get("table", None)
|
||||||
|
|
||||||
|
def _mk_repositories_options():
|
||||||
|
repositories = DbManagementHelper.list_repositories(self._session)
|
||||||
|
if len(repositories) == 0:
|
||||||
|
return [Option("No repository available", disabled=True)]
|
||||||
|
|
||||||
|
return ([Option("Choose a repository", disabled=True, selected="selected" if selected_repo is None else None)] +
|
||||||
|
[Option(repo.name, selected="selected" if repo.name == selected_repo else None)
|
||||||
|
for repo in DbManagementHelper.list_repositories(self._session)])
|
||||||
|
|
||||||
|
def _mk_tables_options():
|
||||||
|
if selected_repo is None:
|
||||||
|
return [Option("No repository selected", disabled=True, selected="selected")]
|
||||||
|
|
||||||
|
tables = DbManagementHelper.list_tables(self._session, selected_repo)
|
||||||
|
if len(tables) == 0:
|
||||||
|
return [Option("No table available", disabled=True)]
|
||||||
|
|
||||||
|
return ([Option("Choose a table", disabled=True, selected="selected" if selected_table is None else None)] +
|
||||||
|
[Option(table, selected="selected" if table == selected_table else None)
|
||||||
|
for table in DbManagementHelper.list_tables(self._session, selected_repo)])
|
||||||
|
|
||||||
|
return Div(
|
||||||
|
Fieldset(
|
||||||
|
Legend("Repository", cls="fieldset-legend"),
|
||||||
|
Div(
|
||||||
|
Select(
|
||||||
|
*_mk_repositories_options(),
|
||||||
|
cls="select w-64",
|
||||||
|
id=f"repository_{self._id}",
|
||||||
|
name="repository",
|
||||||
|
**self._commands.on_processor_details_event(self._component.id, "OnRepositoryChanged"),
|
||||||
|
),
|
||||||
|
P("Select the repository"),
|
||||||
|
),
|
||||||
|
Div(
|
||||||
|
Select(
|
||||||
|
*_mk_tables_options(),
|
||||||
|
cls="select w-64",
|
||||||
|
id=f"table_{self._id}",
|
||||||
|
name="table",
|
||||||
|
),
|
||||||
|
P("Select the table"),
|
||||||
|
),
|
||||||
|
|
||||||
|
cls="fieldset bg-base-200 border-base-300 rounded-box border p-4"
|
||||||
|
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
def _mk_details_filter_default(self):
|
||||||
|
return Div(
|
||||||
|
Fieldset(
|
||||||
|
Legend("Filter", cls="fieldset-legend"),
|
||||||
|
Input(type="text",
|
||||||
|
name="filter",
|
||||||
|
value=self._component.properties.get("filter", ""),
|
||||||
|
placeholder="Filter expression",
|
||||||
|
cls="input w-full"),
|
||||||
|
P("Filter expression"),
|
||||||
|
cls="fieldset bg-base-200 border-base-300 rounded-box border p-4"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
def _mk_details_presenter_default(self):
|
||||||
|
return Div(
|
||||||
|
Fieldset(
|
||||||
|
Legend("Presenter", cls="fieldset-legend"),
|
||||||
|
Input(type="text",
|
||||||
|
name="columns",
|
||||||
|
value=self._component.properties.get("columns", ""),
|
||||||
|
placeholder="Columns to display, separated by comma",
|
||||||
|
cls="input w-full"),
|
||||||
|
P("Comma separated list of columns to display. Use '*' to display all columns, 'source=dest' to rename columns."),
|
||||||
|
P("Use 'parent.*=*' to display all columns from object 'parent' and rename them removing the 'parent' prefix."),
|
||||||
|
cls="fieldset bg-base-200 border-base-300 rounded-box border p-4"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
def __ft__(self, oob=False):
|
def __ft__(self, oob=False):
|
||||||
# return self.render()
|
# return self.render()
|
||||||
return Div(
|
return Div(
|
||||||
|
|||||||
Reference in New Issue
Block a user