From bf81b04fe47a1b8d3ce975fb6c04b959dd040d4c Mon Sep 17 00:00:00 2001 From: frikky Date: Sat, 6 Aug 2022 00:30:07 +0200 Subject: [PATCH] Made triggers only able to have one branch --- frontend/src/components/ParsedAction.jsx | 5 ++- frontend/src/views/AngularWorkflow.jsx | 47 +++++++++++++++++++++--- 2 files changed, 45 insertions(+), 7 deletions(-) diff --git a/frontend/src/components/ParsedAction.jsx b/frontend/src/components/ParsedAction.jsx index f4157487..3c54b6c0 100644 --- a/frontend/src/components/ParsedAction.jsx +++ b/frontend/src/components/ParsedAction.jsx @@ -1368,6 +1368,7 @@ const ParsedAction = (props) => { var hideBodyButton = ""; const hideBodyButtonValue = (
{ selectedActionParameters[count].options !== null && selectedActionParameters[count].options.length > 0) ) { - const parsedoptions = data.options !== undefined ? data.options : selectedActionParameters[count].options + const parsedoptions = data.options !== undefined && data.options !== null && data.options.length > 0 ? data.options : selectedActionParameters[count].options if (selectedActionParameters[count].value === "") { // && selectedActionParameters[count].required) { // Rofl, dirty workaround :) const e = { target: { - value: parsedoptions.options[0], + value: parsedoptions[0], }, }; diff --git a/frontend/src/views/AngularWorkflow.jsx b/frontend/src/views/AngularWorkflow.jsx index 21415e0b..126c7792 100644 --- a/frontend/src/views/AngularWorkflow.jsx +++ b/frontend/src/views/AngularWorkflow.jsx @@ -1703,10 +1703,11 @@ const AngularWorkflow = (defaultprops) => { if (responseJson.files !== undefined && responseJson.files !== null) { setFiles(responseJson); } else { - setFiles({"namespaces": []}); + setFiles({"namespaces": [ + "default" + ]}); } - console.log("NAMESPACES: ", responseJson.namespaces); if ( responseJson.namespaces !== undefined && responseJson.namespaces !== null @@ -3180,18 +3181,53 @@ const AngularWorkflow = (defaultprops) => { setLastSaved(false); const edge = event.target.data(); + console.log("edge: ", edge) + if (edge.source === undefined && edge.target === undefined) { + return + } + const sourcenode = cy.getElementById(edge.source) const destinationnode = cy.getElementById(edge.target) if (sourcenode === undefined || sourcenode === null || destinationnode === undefined || destinationnode === null) { } else { + console.log("Is it a trigger? If so, check if it already has a branch and remove it: ", sourcenode.data()) + if (sourcenode.data("type") === "TRIGGER") { + if (sourcenode.data("app_name") !== "Shuffle Workflow" && sourcenode.data("app_name") !== "User Input") { + setTimeout(() => { + const alledges = cy.edges().jsons() + console.log("edges: ", alledges, edge) + var targetedge = alledges.findIndex( + (data) => data.data.source === edge.source && data.data.id !== edge.id + ) + + console.log("Node: ", targetedge) + if (targetedge !== -1) { + event.target.remove() + + //console.log("Found branch already!") + alert.info("Triggers can have exactly one target node") + return + + + // name: "Shuffle Workflow", + // name: "User Input", + } else { + console.log("Node doesn't already have one") + } + }, 50) + } + } + const edgeCurve = calculateEdgeCurve(sourcenode.position(), destinationnode.position()) const currentedge = cy.getElementById(edge.id) if (currentedge !== undefined && currentedge !== null) { currentedge.style('control-point-distance', edgeCurve.distance) currentedge.style('control-point-weight', edgeCurve.weight) } + } + var targetnode = workflow.triggers.findIndex( (data) => data.id === edge.target ); @@ -3545,10 +3581,10 @@ const AngularWorkflow = (defaultprops) => { // trigger as source check const indexcheck = workflow.triggers.findIndex( - (data) => edge.data()["source"] === data.id + (data) => edge.data("source") === data.id ); if (indexcheck !== -1) { - console.log("Shouldnt remove edge from trigger"); + console.log("Shouldnt remove edge from trigger? "); } if (edge.data().source !== undefined) { @@ -4717,12 +4753,13 @@ const AngularWorkflow = (defaultprops) => { return false }, - preview: true, + preview: false, toggleOffOnLeave: true, loopAllowed: function (node) { return false; }, }); + // preview: true, cy.fit(null, 200);