From 63f8b1fda8df8e3057a577b25b3e0db16406f45a Mon Sep 17 00:00:00 2001 From: frikky Date: Thu, 7 Jan 2021 14:58:34 +0100 Subject: [PATCH] #222: Fixed bug where copy workflow doesn't copy everything --- backend/go-app/walkoff.go | 55 ++++++++++++++++-- frontend/src/views/AngularWorkflow.jsx | 80 ++++++++++++++++++-------- frontend/src/views/Apps.jsx | 2 +- 3 files changed, 106 insertions(+), 31 deletions(-) diff --git a/backend/go-app/walkoff.go b/backend/go-app/walkoff.go index 4d7eab27..a47a6506 100644 --- a/backend/go-app/walkoff.go +++ b/backend/go-app/walkoff.go @@ -1638,13 +1638,13 @@ func setNewWorkflow(resp http.ResponseWriter, request *http.Request) { user.ActiveOrg.Users = []User{} workflow.ExecutingOrg = user.ActiveOrg workflow.OrgId = user.ActiveOrg.Id + log.Printf("TRIGGERS: %d", len(workflow.Triggers)) ctx := context.Background() - log.Printf("Saved new workflow %s with name %s", workflow.ID, workflow.Name) - err = increaseStatisticsField(ctx, "total_workflows", workflow.ID, 1, workflow.OrgId) - if err != nil { - log.Printf("Failed to increase total workflows stats: %s", err) - } + //err = increaseStatisticsField(ctx, "total_workflows", workflow.ID, 1, workflow.OrgId) + //if err != nil { + // log.Printf("Failed to increase total workflows stats: %s", err) + //} if len(workflow.Actions) == 0 { workflow.Actions = []Action{} @@ -1724,14 +1724,56 @@ func setNewWorkflow(resp http.ResponseWriter, request *http.Request) { workflow.Actions = []Action{} for _, item := range workflow.Actions { + oldId := item.ID + sourceIndexes := []int{} + destinationIndexes := []int{} + for branchIndex, branch := range workflow.Branches { + if branch.SourceID == oldId { + sourceIndexes = append(sourceIndexes, branchIndex) + } + + if branch.DestinationID == oldId { + destinationIndexes = append(destinationIndexes, branchIndex) + } + } + item.ID = uuid.NewV4().String() + for _, index := range sourceIndexes { + workflow.Branches[index].SourceID = item.ID + } + + for _, index := range destinationIndexes { + workflow.Branches[index].DestinationID = item.ID + } + newActions = append(newActions, item) } newTriggers := []Trigger{} for _, item := range workflow.Triggers { - item.Status = "uninitialized" + oldId := item.ID + sourceIndexes := []int{} + destinationIndexes := []int{} + for branchIndex, branch := range workflow.Branches { + if branch.SourceID == oldId { + sourceIndexes = append(sourceIndexes, branchIndex) + } + + if branch.DestinationID == oldId { + destinationIndexes = append(destinationIndexes, branchIndex) + } + } + item.ID = uuid.NewV4().String() + for _, index := range sourceIndexes { + workflow.Branches[index].SourceID = item.ID + } + + for _, index := range destinationIndexes { + workflow.Branches[index].DestinationID = item.ID + } + + item.Status = "uninitialized" newTriggers = append(newTriggers, item) } @@ -1765,6 +1807,7 @@ func setNewWorkflow(resp http.ResponseWriter, request *http.Request) { return } + log.Printf("Saved new workflow %s with name %s", workflow.ID, workflow.Name) //memcacheName := fmt.Sprintf("%s_workflows", user.Username) //memcache.Delete(ctx, memcacheName) diff --git a/frontend/src/views/AngularWorkflow.jsx b/frontend/src/views/AngularWorkflow.jsx index d9558537..d5480ac3 100644 --- a/frontend/src/views/AngularWorkflow.jsx +++ b/frontend/src/views/AngularWorkflow.jsx @@ -251,14 +251,16 @@ const AngularWorkflow = (props) => { if (responseJson !== undefined) { setWorkflows(responseJson) - const trigger = workflow.triggers[trigger_index] - if (trigger.parameters.length >= 3) { - for (var key in trigger.parameters) { - const param = trigger.parameters[key] - if (param.name === "workflow") { - const sub = responseJson.find(data => data.id === param.value) - if (sub !== undefined && subworkflow.id !== sub.id) { - setSubworkflow(sub) + if (trigger_index > -1) { + const trigger = workflow.triggers[trigger_index] + if (trigger.parameters.length >= 3) { + for (var key in trigger.parameters) { + const param = trigger.parameters[key] + if (param.name === "workflow") { + const sub = responseJson.find(data => data.id === param.value) + if (sub !== undefined && subworkflow.id !== sub.id) { + setSubworkflow(sub) + } } } } @@ -1517,6 +1519,8 @@ const AngularWorkflow = (props) => { getAppAuthentication() getEnvironments() getWorkflowExecution(props.match.params.key) + getAvailableWorkflows(-1) + getSettings() return } @@ -3034,7 +3038,7 @@ const AngularWorkflow = (props) => { if (Object.getOwnPropertyNames(selectedAction).length > 0 && selectedActionParameters.length > 0) { return (
- Arguments + Parameters {selectedActionParameters.map((data, count) => { if (data.variant === "") { data.variant = "STATIC_VALUE" @@ -4518,11 +4522,6 @@ const AngularWorkflow = (props) => { setConditionValue(conditionValue) setVariableAnchorEl(null) }} key={"ends with"}>ends with - { - conditionValue.value = "endswith" - setConditionValue(conditionValue) - setVariableAnchorEl(null) - }} key={"ends with"}>ends with { conditionValue.value = "contains" setConditionValue(conditionValue) @@ -5017,11 +5016,11 @@ const AngularWorkflow = (props) => { workflow.triggers[selectedTriggerIndex].parameters[1] = {"name": "argument", "value": ""} workflow.triggers[selectedTriggerIndex].parameters[2] = {"name": "user_apikey", "value": ""} - console.log(userSettings) + console.log("SETTINGS: ", userSettings) if (userSettings !== undefined && userSettings !== null && userSettings.apikey !== null && userSettings.apikey !== undefined && userSettings.apikey.length > 0) { workflow.triggers[selectedTriggerIndex].parameters[2] = {"name": "user_apikey", "value": userSettings.apikey} } - } + } return(
@@ -5054,7 +5053,7 @@ const AngularWorkflow = (props) => {
- Arguments + Parameters
@@ -5121,6 +5120,32 @@ const AngularWorkflow = (props) => { setWorkflow(workflow) }} /> +
+
+
+ API-key: +
+
+ { + workflow.triggers[selectedTriggerIndex].parameters[2].value = e.target.value + setWorkflow(workflow) + }} + />
@@ -5222,18 +5247,25 @@ const AngularWorkflow = (props) => {
- Arguments + Parameters
- Webhook URI: + Webhook URI
{ - //alert.info("Saved URI to clipboard") - console.log("Copy to clipboooooard") + var copyText = document.getElementById("webhook_uri_field"); + navigator.clipboard.writeText(copyText.value) + copyText.select(); + copyText.setSelectionRange(0, 99999); /* For mobile devices */ + + /* Copy the text inside the text field */ + document.execCommand("copy"); + alert.success("Copied Webhook URL") }} InputProps={{ style:{ @@ -5557,7 +5589,7 @@ const AngularWorkflow = (props) => {
- Arguments + Parameters
@@ -5679,7 +5711,7 @@ const AngularWorkflow = (props) => { if (Object.getOwnPropertyNames(selectedTrigger).length > 0 && workflow.triggers[selectedTriggerIndex] !== undefined) { if (workflow.triggers[selectedTriggerIndex].parameters === undefined || workflow.triggers[selectedTriggerIndex].parameters === null || workflow.triggers[selectedTriggerIndex].parameters.length === 0) { workflow.triggers[selectedTriggerIndex].parameters = [] - workflow.triggers[selectedTriggerIndex].parameters[0] = {"name": "cron", "value": "*/2 * * * *"} + workflow.triggers[selectedTriggerIndex].parameters[0] = {"name": "cron", "value": "120"} workflow.triggers[selectedTriggerIndex].parameters[1] = {"name": "execution_argument", "value": '{"example": {"json": "is cool"}}'} setWorkflow(workflow) } @@ -5766,7 +5798,7 @@ const AngularWorkflow = (props) => {
- Arguments + Parameters
diff --git a/frontend/src/views/Apps.jsx b/frontend/src/views/Apps.jsx index c081f94f..c9312c6d 100644 --- a/frontend/src/views/Apps.jsx +++ b/frontend/src/views/Apps.jsx @@ -704,7 +704,7 @@ const Apps = (props) => { {selectedAction.parameters !== undefined && selectedAction.parameters !== null ?
- Arguments + Parameters {selectedAction.parameters.map(data => { var itemColor = "#f85a3e" if (!data.required) {