From fd4fe15f49be5cd68c4af8fdba8dbaf61cbc68cc Mon Sep 17 00:00:00 2001 From: Faton Ramadani Date: Thu, 11 Jul 2024 12:00:52 +0200 Subject: [PATCH] fix(frontend): app editor improvements (#4052) * fix(frontend): wip * fix(frontend): fix dataflow to error handler module * fix(frontend): add missing flow_input and result properties * fix(frontend): fix build * fix(frontend): improve code --- .../src/lib/components/ApiConnectForm.svelte | 3 + .../display/dbtable/AppDbExplorer.svelte | 5 ++ .../table/AppAggridInfiniteTable.svelte | 6 ++ .../helpers/RunnableComponent.svelte | 1 + .../components/layout/AppDecisionTree.svelte | 73 +++++++++---------- .../DecisionTreeGraphEditor.svelte | 22 +++++- .../UnsavedConfirmationModal.svelte | 1 - .../flows/content/FlowModuleComponent.svelte | 20 +---- .../flows/content/FlowModuleSuspend.svelte | 2 +- .../lib/components/flows/previousResults.ts | 43 +++++++++++ .../src/lib/components/graph/FlowGraph.svelte | 12 ++- .../propertyPicker/PropPicker.svelte | 30 ++++++++ frontend/src/lib/utils.ts | 5 +- 13 files changed, 154 insertions(+), 69 deletions(-) diff --git a/frontend/src/lib/components/ApiConnectForm.svelte b/frontend/src/lib/components/ApiConnectForm.svelte index edc7bfc14e..a008dd2b05 100644 --- a/frontend/src/lib/components/ApiConnectForm.svelte +++ b/frontend/src/lib/components/ApiConnectForm.svelte @@ -32,6 +32,9 @@ viewJsonSchema = false try { schema = resourceTypeInfo.schema as any + + schema.order = schema.order ?? Object.keys(schema.properties).sort() + notFound = false } catch (e) { notFound = true diff --git a/frontend/src/lib/components/apps/components/display/dbtable/AppDbExplorer.svelte b/frontend/src/lib/components/apps/components/display/dbtable/AppDbExplorer.svelte index 4975a254eb..b173a0fc70 100644 --- a/frontend/src/lib/components/apps/components/display/dbtable/AppDbExplorer.svelte +++ b/frontend/src/lib/components/apps/components/display/dbtable/AppDbExplorer.svelte @@ -290,6 +290,11 @@ return } + if (!runnableComponent) { + params.successCallback([], 0) + return + } + runnableComponent?.runComponent(undefined, undefined, undefined, currentParams, { done: (items) => { let lastRow = -1 diff --git a/frontend/src/lib/components/apps/components/display/table/AppAggridInfiniteTable.svelte b/frontend/src/lib/components/apps/components/display/table/AppAggridInfiniteTable.svelte index c4470ed230..292da12613 100644 --- a/frontend/src/lib/components/apps/components/display/table/AppAggridInfiniteTable.svelte +++ b/frontend/src/lib/components/apps/components/display/table/AppAggridInfiniteTable.svelte @@ -90,6 +90,12 @@ if (!runnableComponent && result) { params.successCallback(result, result.length) + return + } + + if (!runnableComponent && !result) { + params.successCallback([], 0) + return } runnableComponent?.runComponent(undefined, undefined, undefined, currentParams, { diff --git a/frontend/src/lib/components/apps/components/helpers/RunnableComponent.svelte b/frontend/src/lib/components/apps/components/helpers/RunnableComponent.svelte index 3b98e1b677..bea9c6dadc 100644 --- a/frontend/src/lib/components/apps/components/helpers/RunnableComponent.svelte +++ b/frontend/src/lib/components/apps/components/helpers/RunnableComponent.svelte @@ -629,6 +629,7 @@ onDestroy(() => { $initialized.initializedComponents = $initialized.initializedComponents.filter((c) => c !== id) delete $errorByComponent[id] + if ($runnableComponents[id]) { $runnableComponents[id] = { ...$runnableComponents[id], diff --git a/frontend/src/lib/components/apps/components/layout/AppDecisionTree.svelte b/frontend/src/lib/components/apps/components/layout/AppDecisionTree.svelte index 5e747ffe03..54a671bbd9 100644 --- a/frontend/src/lib/components/apps/components/layout/AppDecisionTree.svelte +++ b/frontend/src/lib/components/apps/components/layout/AppDecisionTree.svelte @@ -62,58 +62,51 @@ const history: string[] = [] + function updateCurrentNode(node, index) { + currentNodeId = node.next[index].id + history.push(node.id) + selectedConditionIndex = index + 1 + $focusedGrid = { + parentComponentId: id, + subGridIndex: nodes.findIndex((node) => node.id == currentNodeId) + } + } + function next() { const resolvedNodeConditions = resolvedConditions[currentNodeId] + const node = nodes.find((node) => node.id == currentNodeId) - let found: boolean = false + if (!node) { + return + } - resolvedNodeConditions.forEach((condition, index) => { - if (found) return - - const node = nodes.find((node) => node.id == currentNodeId) - - if (condition && node && resolvedNext[node.id] !== false) { - found = true - currentNodeId = node.next[index].id - - history.push(node.id) - - selectedConditionIndex = index + 1 - - $focusedGrid = { - parentComponentId: id, - subGridIndex: nodes.findIndex((node) => node.id == currentNodeId) - } + for (let index = 0; index < resolvedNodeConditions.length; index++) { + const condition = resolvedNodeConditions[index] + if (condition && resolvedNext[node.id] !== false) { + updateCurrentNode(node, index) + return } - }) + } + } + function updateFocusedGrid(nodeId) { + currentNodeId = nodeId + selectedConditionIndex = nodes.findIndex((node) => node.id == currentNodeId) + $focusedGrid = { + parentComponentId: id, + subGridIndex: selectedConditionIndex + } } function prev() { - const previsouNodeId = history.pop() + const previousNodeId = history.pop() - if (previsouNodeId) { - currentNodeId = previsouNodeId - - selectedConditionIndex = nodes.findIndex((next) => next.id == currentNodeId) - - $focusedGrid = { - parentComponentId: id, - subGridIndex: selectedConditionIndex - } + if (previousNodeId) { + updateFocusedGrid(previousNodeId) } else { - // if no history, go to first node - + // if no history, go to the first node const node = getFirstNode(nodes) - if (node) { - currentNodeId = node.id - - selectedConditionIndex = nodes.findIndex((next) => next.id == currentNodeId) - - $focusedGrid = { - parentComponentId: id, - subGridIndex: selectedConditionIndex - } + updateFocusedGrid(node.id) } } } diff --git a/frontend/src/lib/components/apps/editor/settingsPanel/DecisionTreeGraphEditor.svelte b/frontend/src/lib/components/apps/editor/settingsPanel/DecisionTreeGraphEditor.svelte index 38b58e356d..c159990519 100644 --- a/frontend/src/lib/components/apps/editor/settingsPanel/DecisionTreeGraphEditor.svelte +++ b/frontend/src/lib/components/apps/editor/settingsPanel/DecisionTreeGraphEditor.svelte @@ -1,5 +1,5 @@