{data.steps !== undefined && data.steps !== null && data.show_steps === true && setConfigureWorkflowModalOpen !== undefined ?
diff --git a/frontend/src/components/NewHeader.jsx b/frontend/src/components/NewHeader.jsx
index e9891240..277b1a40 100644
--- a/frontend/src/components/NewHeader.jsx
+++ b/frontend/src/components/NewHeader.jsx
@@ -615,7 +615,7 @@ const Header = (props) => {
- Version: 1.3.2
+ Version: 1.3.3
diff --git a/frontend/src/components/Oauth2Auth.jsx b/frontend/src/components/Oauth2Auth.jsx
index d9b58330..c76a6b59 100755
--- a/frontend/src/components/Oauth2Auth.jsx
+++ b/frontend/src/components/Oauth2Auth.jsx
@@ -97,6 +97,8 @@ const AuthenticationOauth2 = (props) => {
autoAuth,
authButtonOnly,
isLoggedIn,
+
+ setFinalized,
} = props;
let navigate = useNavigate();
@@ -489,20 +491,27 @@ const AuthenticationOauth2 = (props) => {
var open = true;
const timer = setInterval(() => {
if (newwin.closed) {
- console.log("Closing?")
-
+ console.log("Closing?")
setButtonClicked(false);
clearInterval(timer);
//alert('"Secure Payment" window closed!');
- //
- if (getAppAuthentication !== undefined) {
- getAppAuthentication(true, true, true);
- }
+ if (getAppAuthentication !== undefined) {
+ getAppAuthentication(true, true, true);
+ }
+
+ // This is more a guess than anything
+ // Should be handled in getAppAuthentication()
+ // in the parent component to make it accurate,
+ // seeing as we don't know what the parent component
+ // wants to happen
+ if (setFinalized !== undefined) {
+ setFinalized(true)
+ }
} else {
- console.log("Not closed")
- }
+ console.log("Not closed")
+ }
}, 1000);
//do {
// setTimeout(() => {
diff --git a/frontend/src/components/ParsedAction.jsx b/frontend/src/components/ParsedAction.jsx
index 66c159a0..aef01467 100755
--- a/frontend/src/components/ParsedAction.jsx
+++ b/frontend/src/components/ParsedAction.jsx
@@ -3373,14 +3373,16 @@ const ParsedAction = (props) => {
variant="outlined"
color="secondary"
/>
- : null}
-
- {data.label}
+ : null}
+ {data.app.app_version !== undefined && data.app.app_version !== null && data.app.app_version !== "" && data.app.app_version !== "undefined" ?
+
+ : null}
+ {data.label}
);
})}
diff --git a/frontend/src/components/ShuffleCodeEditor.jsx b/frontend/src/components/ShuffleCodeEditor.jsx
index 39b1a26c..c1926c72 100644
--- a/frontend/src/components/ShuffleCodeEditor.jsx
+++ b/frontend/src/components/ShuffleCodeEditor.jsx
@@ -47,6 +47,7 @@ import ReactJson from "react-json-view";
import PaperComponent from "../components/PaperComponent.jsx";
import CodeMirror from '@uiw/react-codemirror';
+import { python } from '@codemirror/lang-python';
//import 'codemirror/keymap/sublime';
//import 'codemirror/addon/selection/mark-selection.js'
//import 'codemirror/theme/gruvbox-dark.css';
@@ -212,6 +213,80 @@ const CodeEditor = (props) => {
expectedOutput(localcodedata)
}, [])
+ useEffect(() => {
+ expectedOutput(localcodedata)
+ }, [availableVariables])
+
+ var to_be_copied = "";
+ const HandleJsonCopy = (base, copy, base_node_name) => {
+ if (typeof copy.name === "string") {
+ copy.name = copy.name.replaceAll(" ", "_");
+ }
+
+ //lol
+ if (typeof base === 'object' || typeof base === 'dict') {
+ base = JSON.stringify(base)
+ }
+
+ if (base_node_name === "execution_argument" || base_node_name === "Execution Argument") {
+ base_node_name = "exec"
+ }
+
+ console.log("COPY: ", base_node_name, copy);
+
+ //var newitem = JSON.parse(base);
+ var newitem = validateJson(base).result
+
+
+ to_be_copied = "$" + base_node_name.toLowerCase().replaceAll(" ", "_");
+ for (let copykey in copy.namespace) {
+ if (copy.namespace[copykey].includes("Results for")) {
+ continue;
+ }
+
+ if (newitem !== undefined && newitem !== null) {
+ newitem = newitem[copy.namespace[copykey]];
+ if (!isNaN(copy.namespace[copykey])) {
+ to_be_copied += ".#";
+ } else {
+ to_be_copied += "." + copy.namespace[copykey];
+ }
+ }
+ }
+
+ if (newitem !== undefined && newitem !== null) {
+ newitem = newitem[copy.name];
+ if (!isNaN(copy.name)) {
+ to_be_copied += ".#";
+ } else {
+ to_be_copied += "." + copy.name;
+ }
+ }
+
+ to_be_copied.replaceAll(" ", "_");
+ const elementName = "copy_element_shuffle";
+ var copyText = document.getElementById(elementName);
+ if (copyText !== null && copyText !== undefined) {
+ console.log("NAVIGATOR: ", navigator);
+ const clipboard = navigator.clipboard;
+ if (clipboard === undefined) {
+ toast("Can only copy over HTTPS (port 3443)");
+ return;
+ }
+
+ navigator.clipboard.writeText(to_be_copied);
+ copyText.select();
+ copyText.setSelectionRange(0, 99999); /* For mobile devices */
+
+ /* Copy the text inside the text field */
+ document.execCommand("copy");
+ console.log("COPYING!");
+ toast("Copied JSON path to clipboard.")
+ } else {
+ console.log("Couldn't find element ", elementName);
+ }
+ }
+
const aiSubmit = (value, inputAction) => {
if (value === undefined || value === "") {
console.log("No value input!")
@@ -938,10 +1013,10 @@ const CodeEditor = (props) => {
style: {
zIndex: 12501,
color: "white",
- minWidth: isMobile ? "100%" : isFileEditor ? 650 : 1200,
- maxWidth: isMobile ? "100%" : isFileEditor ? 650 : 1200,
- minHeight: isMobile ? "100%" : 720,
- maxHeight: isMobile ? "100%" : 720,
+ minWidth: isMobile ? "100%" : isFileEditor ? 650 : 1100,
+ maxWidth: isMobile ? "100%" : isFileEditor ? 650 : 1100,
+ minHeight: isMobile ? "100%" : 620,
+ maxHeight: isMobile ? "100%" : 620,
border: theme.palette.defaultBorder,
padding: isMobile ? "25px 10px 25px 10px" : 25,
},
@@ -951,8 +1026,8 @@ const CodeEditor = (props) => {
style={{
zIndex: 5000,
position: "absolute",
- top: 14,
- right: 18,
+ top: 6,
+ right: 6,
color: "grey",
}}
onClick={() => {
@@ -1425,22 +1500,26 @@ const CodeEditor = (props) => {
borderRadius: theme.palette.borderRadius,
position: "relative",
paddingTop: 0,
- minHeight: 548,
- overflow: "hidden",
+ // minHeight: 548,
+ // overflow: "hidden",
}}>
{
console.log("CURSOR: ", value.getCursor())
@@ -1463,8 +1542,9 @@ const CodeEditor = (props) => {
}}
options={{
mode: validation === true ? "json" : "python",
- lineWrapping: linewrap,
+ lineWrapping: true,
theme: vscodeDark,
+ lineNumbers: true,
}}
/>
@@ -1604,7 +1684,7 @@ const CodeEditor = (props) => {
color="primary"
style={{
border: `1px solid ${theme.palette.primary.main}`,
- marginLeft: 200,
+ marginLeft: 175,
maxHeight: 35,
minWidth: 70,
}}
@@ -1633,8 +1713,8 @@ const CodeEditor = (props) => {
borderRadius: 5,
border: `2px solid ${theme.palette.inputColor}`,
padding: 10,
- maxHeight: 500,
- minheight: 500,
+ maxHeight: 450,
+ minheight: 450,
overflow: "auto",
}}
collapsed={false}
@@ -1643,7 +1723,12 @@ const CodeEditor = (props) => {
}}
displayDataTypes={false}
onSelect={(select) => {
- //HandleJsonCopy(validate.result, select, "exec");
+ var basename = "exec"
+ if (selectedAction !== undefined && selectedAction !== null && Object.keys(selectedAction).length !== 0) {
+ basename = selectedAction.label.toLowerCase().replaceAll(" ", "_")
+ }
+
+ HandleJsonCopy(expOutput, select, basename)
}}
name={"JSON autocompletion"}
/>
@@ -1659,10 +1744,10 @@ const CodeEditor = (props) => {
marginTop: -2,
border: `2px solid ${theme.palette.inputColor}`,
borderRadius: theme.palette.borderRadius,
- maxHeight: 500,
- minHeight: 500,
- minWidth: 580,
- maxWidth: 580,
+ maxHeight: 450,
+ minHeight: 450,
+ minWidth: 480,
+ maxWidth: 480,
overflow: "auto",
whiteSpace: "pre-wrap",
}}
@@ -1689,7 +1774,7 @@ const CodeEditor = (props) => {
}}
displayDataTypes={false}
onSelect={(select) => {
- //HandleJsonCopy(validate.result, select, "exec");
+ //HandleJsonCopy(executionResult.result, select, "exec");
}}
name={"Test result"}
/>
@@ -1725,7 +1810,7 @@ const CodeEditor = (props) => {