From 4b2d5da2a4fd909ac5530211d6de8895c5d47cbe Mon Sep 17 00:00:00 2001 From: frikky Date: Tue, 7 Jul 2020 09:25:31 +0200 Subject: [PATCH] #35: Added PoC of node autocompleter --- frontend/src/AngularWorkflow.js | 163 ++++++++++++++++++-------- frontend/src/defaultCytoscapeStyle.js | 12 +- 2 files changed, 126 insertions(+), 49 deletions(-) diff --git a/frontend/src/AngularWorkflow.js b/frontend/src/AngularWorkflow.js index 69a5431c..5eaad198 100644 --- a/frontend/src/AngularWorkflow.js +++ b/frontend/src/AngularWorkflow.js @@ -35,6 +35,7 @@ import Switch from '@material-ui/core/Switch'; import ReactJson from 'react-json-view' import { useBeforeunload } from 'react-beforeunload'; +import ArrowUpwardIcon from '@material-ui/icons/ArrowUpward'; import CachedIcon from '@material-ui/icons/Cached'; import DirectionsRunIcon from '@material-ui/icons/DirectionsRun'; import PolymerIcon from '@material-ui/icons/Polymer'; @@ -326,6 +327,7 @@ const AngularWorkflow = (props) => { currentnode.removeClass('not-executing-highlight') currentnode.removeClass('success-highlight') currentnode.removeClass('failure-highlight') + currentnode.removeClass('shuffle-hover-highlight') currentnode.removeClass('awaiting-data-highlight') incomingEdges.addClass('success-highlight') currentnode.addClass('executing-highlight') @@ -334,6 +336,7 @@ const AngularWorkflow = (props) => { currentnode.removeClass('not-executing-highlight') currentnode.removeClass('success-highlight') currentnode.removeClass('failure-highlight') + currentnode.removeClass('shuffle-hover-highlight') currentnode.removeClass('awaiting-data-highlight') currentnode.removeClass('executing-highlight') currentnode.addClass('skipped-highlight') @@ -342,6 +345,7 @@ const AngularWorkflow = (props) => { currentnode.removeClass('not-executing-highlight') currentnode.removeClass('success-highlight') currentnode.removeClass('failure-highlight') + currentnode.removeClass('shuffle-hover-highlight') currentnode.removeClass('awaiting-data-highlight') currentnode.addClass('executing-highlight') @@ -363,6 +367,7 @@ const AngularWorkflow = (props) => { currentnode.removeClass('not-executing-highlight') currentnode.removeClass('executing-highlight') currentnode.removeClass('failure-highlight') + currentnode.removeClass('shuffle-hover-highlight') currentnode.removeClass('awaiting-data-highlight') currentnode.addClass('success-highlight') @@ -384,6 +389,7 @@ const AngularWorkflow = (props) => { if (targetnode !== undefined && !targetnode.classes().includes("success-highlight") && !targetnode.classes().includes("failure-highlight")) { targetnode.removeClass('not-executing-highlight') targetnode.removeClass('success-highlight') + targetnode.removeClass('shuffle-hover-highlight') targetnode.removeClass('failure-highlight') targetnode.removeClass('awaiting-data-highlight') targetnode.addClass('executing-highlight') @@ -398,6 +404,7 @@ const AngularWorkflow = (props) => { currentnode.removeClass('executing-highlight') currentnode.removeClass('success-highlight') currentnode.removeClass('awaiting-data-highlight') + currentnode.removeClass('shuffle-hover-highlight') currentnode.addClass('failure-highlight') if (!visited.includes(item.action.label)) { @@ -411,6 +418,7 @@ const AngularWorkflow = (props) => { currentnode.removeClass('executing-highlight') currentnode.removeClass('success-highlight') currentnode.removeClass('failure-highlight') + currentnode.removeClass('shuffle-hover-highlight') currentnode.addClass('awaiting-data-highlight') break default: @@ -1486,7 +1494,7 @@ const AngularWorkflow = (props) => { {workflow.workflow_variables === null ? null : workflow.workflow_variables.map(variable=> { return ( -
+
{ }}>
@@ -2197,7 +2205,6 @@ const AngularWorkflow = (props) => { var allkeys = [action.id] var handled = [] var results = [] - console.log("BEFORE PARENTS!") while(true) { for (var key in allkeys) { @@ -2247,6 +2254,7 @@ const AngularWorkflow = (props) => { const [selectedActionParameters, setSelectedActionParameters] = React.useState([]) const [selectedVariableParameter, setSelectedVariableParameter] = React.useState() const [showDropdown, setShowDropdown] = React.useState(false) + const [showDropdownNumber, setShowDropdownNumber] = React.useState(0) const [actionlist, setActionlist] = React.useState([]) useEffect(() => { @@ -2266,7 +2274,7 @@ const AngularWorkflow = (props) => { } if (actionlist.length === 0) { - actionlist.push({"type": "Execution Argument", "name": "Execution Argument", "value": "$exec", "highlight": "exec", "autocomplete": "$exec"}) + actionlist.push({"type": "Execution Argument", "name": "Execution Argument", "value": "$exec", "highlight": "exec", "autocomplete": "exec"}) if (workflow.workflow_variables !== null && workflow.workflow_variables !== undefined && workflow.workflow_variables.length > 0) { for (var key in workflow.workflow_variables) { const item = workflow.workflow_variables[key] @@ -2298,11 +2306,10 @@ const AngularWorkflow = (props) => { }) const changeActionParameter = (event, count) => { - console.log("EVENT: ", event.target.value) if (event.target.value[event.target.value.length-1] === "$") { - console.log("LAST IS $ - SHOULD SHOW DROPDOWN") if (!showDropdown) { setShowDropdown(true) + setShowDropdownNumber(count) } } else { if (showDropdown) { @@ -2393,39 +2400,7 @@ const AngularWorkflow = (props) => { // FIXME: Issue #40 - selectedActionParameters not reset if (Object.getOwnPropertyNames(selectedAction).length > 0 && selectedActionParameters.length > 0) { return ( -
- - {showDropdown ? - - : null} - - +
Arguments {selectedActionParameters.map((data, count) => { if (data.variant === "") { @@ -2473,14 +2448,14 @@ const AngularWorkflow = (props) => { }} onBlur={(event) => { // Super basic check - if (event.target.value.startsWith("{")) { - console.log("VALIDATING JSON") - try { - JSON.parse(event.target.value) - } catch (e) { - alert.error("Failed to parse json: ", e) - } - } + //if (event.target.value.startsWith("{")) { + // console.log("VALIDATING JSON") + // try { + // JSON.parse(event.target.value) + // } catch (e) { + // alert.error("Failed to parse json: ", e) + // } + //} }} /> @@ -2596,7 +2571,7 @@ const AngularWorkflow = (props) => { itemColor = "#ffeb3b" } return ( -
+
@@ -2630,6 +2605,98 @@ const AngularWorkflow = (props) => {
{datafield} + {showDropdown && showDropdownNumber === count && data.variant === "STATIC_VALUE" ? + + Autocomplete + + + : null} + +
)})}
@@ -2783,7 +2850,6 @@ const AngularWorkflow = (props) => { selectedAction.execution_variable = {"name": "No selection"} } else { const value = workflow.execution_variables.find(a => a.name === e.target.value) - console.log("FOUND: ", value) selectedAction.execution_variable = value } setSelectedAction(selectedAction) @@ -4431,6 +4497,7 @@ const AngularWorkflow = (props) => {
node', css: {