Added single app testing from GUI
This commit is contained in:
@@ -115,8 +115,8 @@ const App = (message, props) => {
|
||||
<Route exact path="/webhooks/:key" render={props => <EditWebhook isLoaded={isLoaded} globalUrl={globalUrl} {...props} />} />
|
||||
<Route exact path="/schedules" render={props => <Schedules globalUrl={globalUrl} {...props} />} />
|
||||
<Route exact path="/dashboard" render={props => <Dashboard isLoaded={isLoaded} isLoggedIn={isLoggedIn} globalUrl={globalUrl} {...props} />} />
|
||||
<Route exact path="/apps" render={props => <Apps isLoaded={isLoaded} isLoggedIn={isLoggedIn} globalUrl={globalUrl} userdata={userdata} {...props} />} />
|
||||
<Route exact path="/apps/new" render={props => <AppCreator isLoaded={isLoaded} isLoggedIn={isLoggedIn} globalUrl={globalUrl} {...props} />} />
|
||||
<Route exact path="/apps" render={props => <Apps isLoaded={isLoaded} isLoggedIn={isLoggedIn} globalUrl={globalUrl} userdata={userdata} {...props} />} />
|
||||
<Route exact path="/apps/edit/:appid" render={props => <AppCreator isLoaded={isLoaded} isLoggedIn={isLoggedIn} globalUrl={globalUrl} {...props} />} />
|
||||
<Route exact path="/schedules/:key" render={props => <EditSchedule globalUrl={globalUrl} {...props} />} />
|
||||
<Route exact path="/workflows" render={props => <Workflows cookies={cookies} removeCookie={removeCookie} isLoaded={isLoaded} isLoggedIn={isLoggedIn} globalUrl={globalUrl} cookies={cookies} userdata={userdata} {...props} />} />
|
||||
|
||||
@@ -50,6 +50,7 @@ const ParsedAction = (props) => {
|
||||
|
||||
const theme = useTheme();
|
||||
const classes = useStyles()
|
||||
const keywords = ["len(", "lower(", "upper(", "trim(", "split(", "length(", "number(", "parse(", "join("]
|
||||
const getParents = (action) => {
|
||||
if (cy === undefined) {
|
||||
return []
|
||||
@@ -757,6 +758,23 @@ const ParsedAction = (props) => {
|
||||
}}
|
||||
/>
|
||||
|
||||
console.log("FIELD VALUE: ", data.value)
|
||||
//const regexp = new RegExp("\W+\.", "g")
|
||||
//let match
|
||||
//while ((match = regexp.exec(data.value)) !== null) {
|
||||
// console.log(`Found ${match[0]} start=${match.index} end=${regexp.lastIndex}.`);
|
||||
//}
|
||||
|
||||
//const str = = data.value.search(submatch)
|
||||
//console.log("FOUND? ", n)
|
||||
for (var key in keywords) {
|
||||
const keyword = keywords[key]
|
||||
if (data.value.includes(keyword)) {
|
||||
console.log("INCLUDED: ", keyword)
|
||||
}
|
||||
}
|
||||
|
||||
//const keywords = ["len", "lower", "upper", "trim", "split", "length", "number", "parse", "join"]
|
||||
if (selectedActionParameters[count].schema !== undefined && selectedActionParameters[count].schema !== null && selectedActionParameters[count].schema.type === "file") {
|
||||
datafield =
|
||||
<TextField
|
||||
@@ -875,7 +893,11 @@ const ParsedAction = (props) => {
|
||||
return
|
||||
}
|
||||
|
||||
console.log("AUTOCOMPLETE1: ", values)
|
||||
|
||||
var toComplete = selectedActionParameters[count].value.trim().endsWith("$") ? values[0].autocomplete : "$"+values[0].autocomplete
|
||||
toComplete = toComplete.toLowerCase().replaceAll(" ", "_")
|
||||
console.log("AUTOCOMPLETE: ", toComplete)
|
||||
for (var key in values) {
|
||||
if (key == 0 || values[key].autocomplete.length === 0) {
|
||||
continue
|
||||
@@ -1353,6 +1375,9 @@ const ParsedAction = (props) => {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
console.log("DID REPLACE ACTUALLY WORK?? - Something is buggy.")
|
||||
setWorkflow(workflow)
|
||||
}}
|
||||
/>
|
||||
</span>
|
||||
|
||||
@@ -154,7 +154,7 @@ const Admin = (props) => {
|
||||
// Need to wait because query in ES is too fast
|
||||
setTimeout(() => {
|
||||
getAppAuthentication()
|
||||
}, 1000)
|
||||
}, 500)
|
||||
alert.success("Successfully deleted authentication!")
|
||||
}
|
||||
}),
|
||||
@@ -228,7 +228,7 @@ const Admin = (props) => {
|
||||
.then((responseJson) => {
|
||||
setTimeout(() => {
|
||||
handleGetOrg(org_id)
|
||||
}, 1000)
|
||||
}, 500)
|
||||
})
|
||||
.catch(error => {
|
||||
alert.error("Err: " + error.toString())
|
||||
@@ -264,12 +264,13 @@ const Admin = (props) => {
|
||||
console.log("Cloud sync fail?")
|
||||
}
|
||||
|
||||
setTimeout(() => {
|
||||
return response.json()
|
||||
}, 1000)
|
||||
return response.json()
|
||||
//setTimeout(() => {
|
||||
//}, 1000)
|
||||
})
|
||||
.then((responseJson) => {
|
||||
if (!responseJson.success && responseJson.reason !== undefined) {
|
||||
console.log("RESP: ", responseJson)
|
||||
if (responseJson.success === false && responseJson.reason !== undefined) {
|
||||
setOrgSyncResponse(responseJson.reason)
|
||||
alert.error("Failed to handle sync: "+responseJson.reason)
|
||||
} else if (!responseJson.success) {
|
||||
@@ -355,7 +356,7 @@ const Admin = (props) => {
|
||||
setSelectedUserModalOpen(false)
|
||||
setTimeout(() => {
|
||||
getAppAuthentication()
|
||||
}, 1000)
|
||||
}, 500)
|
||||
}
|
||||
}),
|
||||
)
|
||||
@@ -513,7 +514,7 @@ const Admin = (props) => {
|
||||
setModalOpen(false)
|
||||
setTimeout(() => {
|
||||
getUsers()
|
||||
}, 1000)
|
||||
}, 500)
|
||||
}
|
||||
}),
|
||||
)
|
||||
@@ -548,7 +549,7 @@ const Admin = (props) => {
|
||||
setModalOpen(false)
|
||||
setTimeout(() => {
|
||||
getUsers()
|
||||
}, 1000)
|
||||
}, 500)
|
||||
}
|
||||
}),
|
||||
)
|
||||
@@ -1649,7 +1650,7 @@ const Admin = (props) => {
|
||||
</div>
|
||||
{orgSyncResponse.length > 0 ?
|
||||
<Typography style={{marginTop: 5, marginBottom: 10}}>
|
||||
Message from Shuffle: <b>{orgSyncResponse}</b>
|
||||
Message from Shuffle Cloud: <b>{orgSyncResponse}</b>
|
||||
</Typography>
|
||||
: null
|
||||
}
|
||||
|
||||
@@ -1571,17 +1571,13 @@ const AngularWorkflow = (props) => {
|
||||
}
|
||||
}
|
||||
|
||||
console.log("ID ETC: ", idnumber, paramname)
|
||||
if (idnumber >= 0 && paramname.length > 0) {
|
||||
const exampledata = GetExampleResult(nodedata)
|
||||
const parsedname = paramname.toLowerCase().trim().replaceAll("_", " ")
|
||||
console.log("EX: ", exampledata)
|
||||
|
||||
console.log("NAME: ", parsedname)
|
||||
const foundresult = GetParamMatch(parsedname, exampledata, "")
|
||||
console.log("RESULT: ", foundresult)
|
||||
if (foundresult.length > 0) {
|
||||
console.log("FOUND: ", paramname, foundresult)
|
||||
console.log("FOUND RESULT: ", paramname, foundresult)
|
||||
newValue = `${newValue}${foundresult}`
|
||||
}
|
||||
|
||||
@@ -2100,9 +2096,13 @@ const AngularWorkflow = (props) => {
|
||||
return ""
|
||||
}
|
||||
|
||||
if (exampledata === null) {
|
||||
return ""
|
||||
}
|
||||
|
||||
// Basically just a stupid if-else :)
|
||||
const synonyms = {
|
||||
"id": ["id", "ref", "sourceref", "reference", "sourcereference", "alert id", "case id", "incident id", "service id",],
|
||||
"id": ["id", "ref", "sourceref", "reference", "sourcereference", "alert id", "case id", "incident id", "service id", "sid", "uid", "uuid"],
|
||||
"title": ["title", "name", "message"],
|
||||
"description": ["description", "explanation", "story", "details",],
|
||||
"email": ["mail", "email", "sender", "receiver", "recipient"],
|
||||
@@ -7535,7 +7535,7 @@ const AngularWorkflow = (props) => {
|
||||
|
||||
/* Copy the text inside the text field */
|
||||
document.execCommand("copy")
|
||||
alert.success("Copied data")
|
||||
//alert.success("Copied data")
|
||||
} else {
|
||||
console.log("Failed to copy from "+elementName+": ", copyText)
|
||||
}
|
||||
@@ -7544,7 +7544,7 @@ const AngularWorkflow = (props) => {
|
||||
const HandleJsonCopy = (base, copy, base_node_name) => {
|
||||
console.log("COPY: ", copy)
|
||||
var newitem = JSON.parse(base)
|
||||
to_be_copied = "$"+base_node_name
|
||||
to_be_copied = "$"+base_node_name.toLowerCase().replaceAll(" ", "_")
|
||||
for (var key in copy.namespace) {
|
||||
if (copy.namespace[key].includes("Results for")) {
|
||||
continue
|
||||
@@ -7591,7 +7591,7 @@ const AngularWorkflow = (props) => {
|
||||
|
||||
/* Copy the text inside the text field */
|
||||
document.execCommand("copy");
|
||||
alert.success("Copied "+to_be_copied)
|
||||
//alert.success("Copied "+to_be_copied)
|
||||
console.log("COPYING!")
|
||||
} else {
|
||||
console.log("Couldn't find element ", elementName)
|
||||
@@ -8097,7 +8097,7 @@ const AngularWorkflow = (props) => {
|
||||
{validate.valid ? <ReactJson
|
||||
src={validate.result}
|
||||
theme="solarized"
|
||||
collapsed={false}
|
||||
collapsed={selectedResult.result.length < 10000 ? false : true}
|
||||
displayDataTypes={false}
|
||||
enableClipboard={(copy) => {
|
||||
handleReactJsonClipboard(copy)
|
||||
@@ -8131,7 +8131,7 @@ const AngularWorkflow = (props) => {
|
||||
|
||||
/* Copy the text inside the text field */
|
||||
document.execCommand("copy");
|
||||
alert.success("Copied "+to_be_copied)
|
||||
//alert.success("Copied "+to_be_copied)
|
||||
} else {
|
||||
console.log("Failed to copy. copy_element_shuffle is undefined")
|
||||
}
|
||||
|
||||
@@ -2443,7 +2443,7 @@ const AppCreator = (props) => {
|
||||
version: selectedAction.app_version,
|
||||
})
|
||||
|
||||
const [requiresAuthentication, setRequiresAuthentication] = useState(app.authentication.required && app.authentication.parameters !== undefined && app.authentication.parameters !== null)
|
||||
const [requiresAuthentication, setRequiresAuthentication] = useState(app.authentication !== null && app.authentication !== undefined && app.authentication.required && app.authentication.parameters !== undefined && app.authentication.parameters !== null ? true : false)
|
||||
const [workflow, setWorkflow] = useState({
|
||||
name: "",
|
||||
description: "",
|
||||
@@ -2699,7 +2699,7 @@ const AppCreator = (props) => {
|
||||
for (var key in selectedApp.authentication.parameters) {
|
||||
if (authenticationOption.fields[selectedApp.authentication.parameters[key].name].length === 0) {
|
||||
alert.info("Field "+selectedApp.authentication.parameters[key].name+" can't be empty")
|
||||
return
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2744,6 +2744,7 @@ const AppCreator = (props) => {
|
||||
authenticationOption.label = selectedApp.name+" authentication"
|
||||
}
|
||||
|
||||
console.log("PRE RETURN")
|
||||
return (
|
||||
<div>
|
||||
<DialogContent>
|
||||
@@ -3032,7 +3033,7 @@ const AppCreator = (props) => {
|
||||
Continue
|
||||
</Button>
|
||||
</DialogActions>
|
||||
<ParsedActionHandler />
|
||||
{/*<ParsedActionHandler />*/}
|
||||
</FormControl>
|
||||
</Dialog>
|
||||
: null;
|
||||
|
||||
@@ -531,7 +531,7 @@ const Workflows = (props) => {
|
||||
deleteWorkflow(selectedWorkflowId)
|
||||
setTimeout(() => {
|
||||
getAvailableWorkflows()
|
||||
}, 1000)
|
||||
}, 500)
|
||||
}
|
||||
setDeleteModalOpen(false)
|
||||
}} color="primary">
|
||||
@@ -1489,7 +1489,9 @@ const Workflows = (props) => {
|
||||
window.location.pathname = "/workflows/"+responseJson["id"]
|
||||
} else if (!redirect) {
|
||||
// Update :)
|
||||
getAvailableWorkflows()
|
||||
setTimeout(() => {
|
||||
getAvailableWorkflows()
|
||||
}, 500)
|
||||
setImportLoading(false)
|
||||
} else {
|
||||
alert.info("Successfully changed basic info for workflow")
|
||||
|
||||
Reference in New Issue
Block a user