Fixed file search issue
This commit is contained in:
@@ -241,16 +241,15 @@ func buildImageMemory(fs billy.Filesystem, tags []string, dockerfileFolder strin
|
|||||||
BuildArgs: map[string]*string{},
|
BuildArgs: map[string]*string{},
|
||||||
Labels: labels,
|
Labels: labels,
|
||||||
}
|
}
|
||||||
|
|
||||||
// NetworkMode: "host",
|
// NetworkMode: "host",
|
||||||
|
|
||||||
httpProxy := os.Getenv("HTTP_PROXY")
|
httpProxy := os.Getenv("HTTP_PROXY")
|
||||||
if len(httpProxy) > 0 {
|
if len(httpProxy) > 0 {
|
||||||
buildOptions.BuildArgs["http_proxy"] = &httpProxy
|
buildOptions.BuildArgs["HTTP_PROXY"] = &httpProxy
|
||||||
}
|
}
|
||||||
httpsProxy := os.Getenv("HTTPS_PROXY")
|
httpsProxy := os.Getenv("HTTPS_PROXY")
|
||||||
if len(httpProxy) > 0 {
|
if len(httpProxy) > 0 {
|
||||||
buildOptions.BuildArgs["https_proxy"] = &httpsProxy
|
buildOptions.BuildArgs["HTTPS_PROXY"] = &httpsProxy
|
||||||
}
|
}
|
||||||
|
|
||||||
// Build the actual image
|
// Build the actual image
|
||||||
@@ -352,7 +351,7 @@ func buildImage(tags []string, dockerfileFolder string) error {
|
|||||||
|
|
||||||
httpProxy := os.Getenv("HTTP_PROXY")
|
httpProxy := os.Getenv("HTTP_PROXY")
|
||||||
if len(httpProxy) > 0 {
|
if len(httpProxy) > 0 {
|
||||||
buildOptions.BuildArgs["http_proxy"] = &httpProxy
|
buildOptions.BuildArgs["HTTP_PROXY"] = &httpProxy
|
||||||
}
|
}
|
||||||
httpsProxy := os.Getenv("HTTPS_PROXY")
|
httpsProxy := os.Getenv("HTTPS_PROXY")
|
||||||
if len(httpProxy) > 0 {
|
if len(httpProxy) > 0 {
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ require (
|
|||||||
github.com/gorilla/mux v1.8.0
|
github.com/gorilla/mux v1.8.0
|
||||||
github.com/h2non/filetype v1.1.3
|
github.com/h2non/filetype v1.1.3
|
||||||
github.com/satori/go.uuid v1.2.0
|
github.com/satori/go.uuid v1.2.0
|
||||||
github.com/shuffle/shuffle-shared v0.3.70
|
github.com/shuffle/shuffle-shared v0.3.71
|
||||||
golang.org/x/crypto v0.3.0
|
golang.org/x/crypto v0.3.0
|
||||||
google.golang.org/api v0.103.0
|
google.golang.org/api v0.103.0
|
||||||
google.golang.org/appengine v1.6.7
|
google.golang.org/appengine v1.6.7
|
||||||
|
|||||||
@@ -369,7 +369,7 @@ func handleGetStreamResults(resp http.ResponseWriter, request *http.Request) {
|
|||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
workflowExecution, err := shuffle.GetWorkflowExecution(ctx, actionResult.ExecutionId)
|
workflowExecution, err := shuffle.GetWorkflowExecution(ctx, actionResult.ExecutionId)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("[WARNING] Failed getting execution (streamresult) %s: %s", actionResult.ExecutionId, err)
|
log.Printf("[WARNING][%s] Failed getting execution (streamresult): %s", actionResult.ExecutionId, err)
|
||||||
resp.WriteHeader(401)
|
resp.WriteHeader(401)
|
||||||
resp.Write([]byte(fmt.Sprintf(`{"success": false, "reason": "Bad authorization key or execution_id might not exist."}`)))
|
resp.Write([]byte(fmt.Sprintf(`{"success": false, "reason": "Bad authorization key or execution_id might not exist."}`)))
|
||||||
return
|
return
|
||||||
|
|||||||
+33
-33
@@ -1,38 +1,38 @@
|
|||||||
version: '3'
|
version: '3'
|
||||||
services:
|
services:
|
||||||
frontend:
|
#frontend:
|
||||||
image: ghcr.io/shuffle/shuffle-frontend:latest
|
# image: ghcr.io/shuffle/shuffle-frontend:latest
|
||||||
container_name: shuffle-frontend
|
# container_name: shuffle-frontend
|
||||||
hostname: shuffle-frontend
|
# hostname: shuffle-frontend
|
||||||
ports:
|
# ports:
|
||||||
- "${FRONTEND_PORT}:80"
|
# - "${FRONTEND_PORT}:80"
|
||||||
- "${FRONTEND_PORT_HTTPS}:443"
|
# - "${FRONTEND_PORT_HTTPS}:443"
|
||||||
networks:
|
# networks:
|
||||||
- shuffle
|
# - shuffle
|
||||||
environment:
|
# environment:
|
||||||
- BACKEND_HOSTNAME=${BACKEND_HOSTNAME}
|
# - BACKEND_HOSTNAME=${BACKEND_HOSTNAME}
|
||||||
restart: unless-stopped
|
# restart: unless-stopped
|
||||||
depends_on:
|
# depends_on:
|
||||||
- backend
|
# - backend
|
||||||
backend:
|
#backend:
|
||||||
image: ghcr.io/shuffle/shuffle-backend:latest
|
# image: ghcr.io/shuffle/shuffle-backend:latest
|
||||||
container_name: shuffle-backend
|
# container_name: shuffle-backend
|
||||||
hostname: ${BACKEND_HOSTNAME}
|
# hostname: ${BACKEND_HOSTNAME}
|
||||||
# Here for debugging:
|
# # Here for debugging:
|
||||||
ports:
|
# ports:
|
||||||
- "${BACKEND_PORT}:5001"
|
# - "${BACKEND_PORT}:5001"
|
||||||
networks:
|
# networks:
|
||||||
- shuffle
|
# - shuffle
|
||||||
volumes:
|
# volumes:
|
||||||
- /var/run/docker.sock:/var/run/docker.sock
|
# - /var/run/docker.sock:/var/run/docker.sock
|
||||||
- ${SHUFFLE_APP_HOTLOAD_LOCATION}:/shuffle-apps:z
|
# - ${SHUFFLE_APP_HOTLOAD_LOCATION}:/shuffle-apps:z
|
||||||
- ${SHUFFLE_FILE_LOCATION}:/shuffle-files:z
|
# - ${SHUFFLE_FILE_LOCATION}:/shuffle-files:z
|
||||||
env_file: .env
|
# env_file: .env
|
||||||
environment:
|
# environment:
|
||||||
#- DOCKER_HOST=tcp://docker-socket-proxy:2375
|
# #- DOCKER_HOST=tcp://docker-socket-proxy:2375
|
||||||
- SHUFFLE_APP_HOTLOAD_FOLDER=/shuffle-apps
|
# - SHUFFLE_APP_HOTLOAD_FOLDER=/shuffle-apps
|
||||||
- SHUFFLE_FILE_LOCATION=/shuffle-files
|
# - SHUFFLE_FILE_LOCATION=/shuffle-files
|
||||||
restart: unless-stopped
|
# restart: unless-stopped
|
||||||
orborus:
|
orborus:
|
||||||
image: ghcr.io/shuffle/shuffle-orborus:latest
|
image: ghcr.io/shuffle/shuffle-orborus:latest
|
||||||
container_name: shuffle-orborus
|
container_name: shuffle-orborus
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
"@emotion/is-prop-valid": "^1.1.1",
|
"@emotion/is-prop-valid": "^1.1.1",
|
||||||
"@emotion/react": "^11.7.0",
|
"@emotion/react": "^11.7.0",
|
||||||
"@emotion/styled": "^11.6.0",
|
"@emotion/styled": "^11.6.0",
|
||||||
|
"@lezer/highlight": "^1.1.3",
|
||||||
"@material-ui/core": "^4.5.2",
|
"@material-ui/core": "^4.5.2",
|
||||||
"@material-ui/icons": "^4.5.1",
|
"@material-ui/icons": "^4.5.1",
|
||||||
"@material-ui/lab": "^4.0.0-alpha.58",
|
"@material-ui/lab": "^4.0.0-alpha.58",
|
||||||
@@ -17,6 +18,7 @@
|
|||||||
"@mui/icons-material": "^5.2.1",
|
"@mui/icons-material": "^5.2.1",
|
||||||
"@mui/material": "^5.2.3",
|
"@mui/material": "^5.2.3",
|
||||||
"@mui/x-data-grid": "^5.17.11",
|
"@mui/x-data-grid": "^5.17.11",
|
||||||
|
"@uiw/codemirror-themes": "^4.19.9",
|
||||||
"@uiw/react-codemirror": "^3.2.1",
|
"@uiw/react-codemirror": "^3.2.1",
|
||||||
"@use-it/interval": "^1.0.0",
|
"@use-it/interval": "^1.0.0",
|
||||||
"algoliasearch": "^4.13.1",
|
"algoliasearch": "^4.13.1",
|
||||||
@@ -83,7 +85,7 @@
|
|||||||
"zone.js": "~0.11.4"
|
"zone.js": "~0.11.4"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "react-scripts start",
|
"start": "PORT=3000 react-scripts start",
|
||||||
"build": "react-scripts build",
|
"build": "react-scripts build",
|
||||||
"test": "react-scripts test",
|
"test": "react-scripts test",
|
||||||
"eject": "react-scripts eject",
|
"eject": "react-scripts eject",
|
||||||
|
|||||||
@@ -541,8 +541,8 @@ const App = (message, props) => {
|
|||||||
/>
|
/>
|
||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
<Route exact path="/workflows/:key/run" element={<RunWorkflow serverside={serverside} userdata={userdata} globalUrl={globalUrl} isLoaded={isLoaded} isLoggedIn={isLoggedIn} surfaceColor={theme.palette.surfaceColor} inputColor={theme.palette.inputColor}{...props} /> } />
|
<Route exact path="/workflows/:key/run" element={<RunWorkflow userdata={userdata} globalUrl={globalUrl} isLoaded={isLoaded} isLoggedIn={isLoggedIn} surfaceColor={theme.palette.surfaceColor} inputColor={theme.palette.inputColor}{...props} /> } />
|
||||||
<Route exact path="/workflows/:key/execute" element={<RunWorkflow serverside={serverside} userdata={userdata} globalUrl={globalUrl} isLoaded={isLoaded} isLoggedIn={isLoggedIn} surfaceColor={theme.palette.surfaceColor} inputColor={theme.palette.inputColor}{...props} /> } />
|
<Route exact path="/workflows/:key/execute" element={<RunWorkflow userdata={userdata} globalUrl={globalUrl} isLoaded={isLoaded} isLoggedIn={isLoggedIn} surfaceColor={theme.palette.surfaceColor} inputColor={theme.palette.inputColor}{...props} /> } />
|
||||||
<Route
|
<Route
|
||||||
exact
|
exact
|
||||||
path="/docs/:key"
|
path="/docs/:key"
|
||||||
|
|||||||
@@ -1298,7 +1298,10 @@ const AppFramework = (props) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//setDiscoveryData({})
|
//setDiscoveryData({})
|
||||||
|
if (setDiscoveryWrapper !== undefined) {
|
||||||
setDiscoveryWrapper({})
|
setDiscoveryWrapper({})
|
||||||
|
}
|
||||||
|
|
||||||
setSelectionOpen(false)
|
setSelectionOpen(false)
|
||||||
setDefaultSearch("")
|
setDefaultSearch("")
|
||||||
setPaperTitle("")
|
setPaperTitle("")
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ const Files = (props) => {
|
|||||||
const [renderTextBox, setRenderTextBox] = React.useState(false);
|
const [renderTextBox, setRenderTextBox] = React.useState(false);
|
||||||
|
|
||||||
const alert = useAlert();
|
const alert = useAlert();
|
||||||
const allowedFileTypes = ["txt", "py", "yaml", "yml","json", "html", "js", "csv",]
|
const allowedFileTypes = ["txt", "py", "yaml", "yml","json", "html", "js", "csv", "log"]
|
||||||
var upload = "";
|
var upload = "";
|
||||||
|
|
||||||
const handleKeyDown = (event) => {
|
const handleKeyDown = (event) => {
|
||||||
@@ -108,11 +108,7 @@ const Files = (props) => {
|
|||||||
setFiles([]);
|
setFiles([]);
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log("NAMESPACES: ", responseJson.namespaces);
|
if (responseJson.namespaces !== undefined && responseJson.namespaces !== null) {
|
||||||
if (
|
|
||||||
responseJson.namespaces !== undefined &&
|
|
||||||
responseJson.namespaces !== null
|
|
||||||
) {
|
|
||||||
setFileNamespaces(responseJson.namespaces);
|
setFileNamespaces(responseJson.namespaces);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@@ -574,7 +570,7 @@ const Files = (props) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const filenamesplit = file.filename.split(".")
|
const filenamesplit = file.filename.split(".")
|
||||||
const iseditable = file.filesize < 100000 && file.status === "active" && allowedFileTypes.includes(filenamesplit[filenamesplit.length-1])
|
const iseditable = file.filesize < 2000000 && file.status === "active" && allowedFileTypes.includes(filenamesplit[filenamesplit.length-1])
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<ListItem
|
<ListItem
|
||||||
|
|||||||
@@ -18,8 +18,8 @@ import theme from '../theme';
|
|||||||
import Checkbox from '@mui/material/Checkbox';
|
import Checkbox from '@mui/material/Checkbox';
|
||||||
import { orange } from '@mui/material/colors';
|
import { orange } from '@mui/material/colors';
|
||||||
import { isMobile } from "react-device-detect"
|
import { isMobile } from "react-device-detect"
|
||||||
import { GetParsedPaths, FindJsonPath } from "../views/Apps.jsx";
|
|
||||||
import NestedMenuItem from "material-ui-nested-menu-item";
|
import NestedMenuItem from "material-ui-nested-menu-item";
|
||||||
|
import { GetParsedPaths, FindJsonPath } from "../views/Apps.jsx";
|
||||||
|
|
||||||
import {
|
import {
|
||||||
FullscreenExit as FullscreenExitIcon,
|
FullscreenExit as FullscreenExitIcon,
|
||||||
@@ -83,12 +83,12 @@ const shuffleTheme = createTheme({
|
|||||||
theme: 'dark',
|
theme: 'dark',
|
||||||
settings: {
|
settings: {
|
||||||
background: '#282828',
|
background: '#282828',
|
||||||
foreground: '#ffffff',
|
foreground: '#282828',
|
||||||
caret: '#5d00ff',
|
caret: '#5d00ff',
|
||||||
selection: '#036dd626',
|
selection: '#036dd626',
|
||||||
selectionMatch: '#036dd626',
|
selectionMatch: '#036dd626',
|
||||||
lineHighlight: '#8a91991a',
|
lineHighlight: '#8a91991a',
|
||||||
gutterBackground: '#fff',
|
gutterBackground: '#282828',
|
||||||
gutterForeground: '#8a919966',
|
gutterForeground: '#8a919966',
|
||||||
fontSize: 18,
|
fontSize: 18,
|
||||||
borderRadius: theme.palette.borderRadius,
|
borderRadius: theme.palette.borderRadius,
|
||||||
@@ -156,7 +156,6 @@ const CodeEditor = (props) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
let navigate = useNavigate();
|
let navigate = useNavigate();
|
||||||
// console.log("is it file editor? - ", isFileEditor);
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
var allVariables = []
|
var allVariables = []
|
||||||
@@ -449,9 +448,9 @@ const CodeEditor = (props) => {
|
|||||||
const found = input.match(/[$]{1}([a-zA-Z0-9_-]+\.?){1}([a-zA-Z0-9#_-]+\.?){0,}/g)
|
const found = input.match(/[$]{1}([a-zA-Z0-9_-]+\.?){1}([a-zA-Z0-9#_-]+\.?){0,}/g)
|
||||||
|
|
||||||
console.log("FOUND: ", found)
|
console.log("FOUND: ", found)
|
||||||
|
|
||||||
// Whelp this is inefficient af. Single loop pls
|
// Whelp this is inefficient af. Single loop pls
|
||||||
// When the found array is empty.
|
// When the found array is empty.
|
||||||
|
if (found !== null && found !== undefined) {
|
||||||
try {
|
try {
|
||||||
for (var i = 0; i < found.length; i++) {
|
for (var i = 0; i < found.length; i++) {
|
||||||
try {
|
try {
|
||||||
@@ -545,6 +544,7 @@ const CodeEditor = (props) => {
|
|||||||
} catch (e) {
|
} catch (e) {
|
||||||
//console.log("Outer replace error: ", e)
|
//console.log("Outer replace error: ", e)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const tmpValidation = validateJson(input.valueOf())
|
const tmpValidation = validateJson(input.valueOf())
|
||||||
//setValidation(true)
|
//setValidation(true)
|
||||||
@@ -687,15 +687,15 @@ const CodeEditor = (props) => {
|
|||||||
PaperComponent={PaperComponent}
|
PaperComponent={PaperComponent}
|
||||||
PaperProps={{
|
PaperProps={{
|
||||||
style: {
|
style: {
|
||||||
backgroundColor: theme.palette.surfaceColor,
|
|
||||||
color: "white",
|
|
||||||
minWidth: isMobile ? "100%" : 1200,
|
|
||||||
maxWidth: isMobile ? "100%" : 1200,
|
|
||||||
minHeight: isMobile ? "100%" : 900,
|
|
||||||
maxHeight: isMobile ? "100%" : 900,
|
|
||||||
padding: isMobile ? "25px 10px 25px 10px" : 25,
|
|
||||||
border: theme.palette.defaultBorder,
|
|
||||||
zIndex: 12501,
|
zIndex: 12501,
|
||||||
|
color: "white",
|
||||||
|
minWidth: isMobile ? "100%" : isFileEditor ? 650 : 1200,
|
||||||
|
maxWidth: isMobile ? "100%" : isFileEditor ? 650 : 1200,
|
||||||
|
minHeight: isMobile ? "100%" : 720,
|
||||||
|
maxHeight: isMobile ? "100%" : 720,
|
||||||
|
border: theme.palette.defaultBorder,
|
||||||
|
padding: isMobile ? "25px 10px 25px 10px" : 25,
|
||||||
|
backgroundColor: theme.palette.surfaceColor,
|
||||||
},
|
},
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
@@ -1156,6 +1156,11 @@ const CodeEditor = (props) => {
|
|||||||
theme={shuffleTheme}
|
theme={shuffleTheme}
|
||||||
value = {localcodedata}
|
value = {localcodedata}
|
||||||
height={isFileEditor ? 450 : 700}
|
height={isFileEditor ? 450 : 700}
|
||||||
|
width={isFileEditor ? 650 : 550}
|
||||||
|
style={{
|
||||||
|
maxWidth: isFileEditor ? 450 : 500,
|
||||||
|
wordBreak: "break-word",
|
||||||
|
}}
|
||||||
onCursorActivity = {(value) => {
|
onCursorActivity = {(value) => {
|
||||||
// console.log(value.getCursor())
|
// console.log(value.getCursor())
|
||||||
setCurrentCharacter(value.getCursor().ch)
|
setCurrentCharacter(value.getCursor().ch)
|
||||||
@@ -1165,6 +1170,8 @@ const CodeEditor = (props) => {
|
|||||||
highlight_variables(value)
|
highlight_variables(value)
|
||||||
}}
|
}}
|
||||||
onChange={(value) => {
|
onChange={(value) => {
|
||||||
|
//console.log("Value: '", value.getValue(), "'")
|
||||||
|
|
||||||
setlocalcodedata(value.getValue())
|
setlocalcodedata(value.getValue())
|
||||||
expectedOutput(value.getValue())
|
expectedOutput(value.getValue())
|
||||||
|
|
||||||
@@ -1179,7 +1186,7 @@ const CodeEditor = (props) => {
|
|||||||
styleSelectedText: true,
|
styleSelectedText: true,
|
||||||
keyMap: 'sublime',
|
keyMap: 'sublime',
|
||||||
mode: 'python',
|
mode: 'python',
|
||||||
lineWrapping: linewrap,
|
lineWrapping: true,
|
||||||
//theme: codeTheme,
|
//theme: codeTheme,
|
||||||
// mode: {codelang},
|
// mode: {codelang},
|
||||||
}}
|
}}
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ import {
|
|||||||
DialogContent,
|
DialogContent,
|
||||||
CircularProgress,
|
CircularProgress,
|
||||||
Box,
|
Box,
|
||||||
|
InputAdornment,
|
||||||
} from "@material-ui/core";
|
} from "@material-ui/core";
|
||||||
|
|
||||||
import { Autocomplete } from "@mui/material";
|
import { Autocomplete } from "@mui/material";
|
||||||
@@ -67,6 +68,8 @@ import {
|
|||||||
Schedule as ScheduleIcon,
|
Schedule as ScheduleIcon,
|
||||||
Cloud as CloudIcon,
|
Cloud as CloudIcon,
|
||||||
Business as BusinessIcon,
|
Business as BusinessIcon,
|
||||||
|
Visibility as VisibilityIcon,
|
||||||
|
VisibilityOff as VisibilityOffIcon,
|
||||||
} from "@material-ui/icons";
|
} from "@material-ui/icons";
|
||||||
|
|
||||||
import { useAlert } from "react-alert";
|
import { useAlert } from "react-alert";
|
||||||
@@ -185,6 +188,8 @@ const Admin = (props) => {
|
|||||||
const [dealerror, setDealerror] = React.useState("");
|
const [dealerror, setDealerror] = React.useState("");
|
||||||
const [dealList, setDealList] = React.useState([]);
|
const [dealList, setDealList] = React.useState([]);
|
||||||
const [adminTab, setAdminTab] = React.useState(1);
|
const [adminTab, setAdminTab] = React.useState(1);
|
||||||
|
const [showApiKey, setShowApiKey] = useState(false);
|
||||||
|
|
||||||
|
|
||||||
const [billingInfo, setBillingInfo] = React.useState({});
|
const [billingInfo, setBillingInfo] = React.useState({});
|
||||||
|
|
||||||
@@ -2242,7 +2247,7 @@ const Admin = (props) => {
|
|||||||
<DialogTitle>
|
<DialogTitle>
|
||||||
<span style={{ color: "white" }}>Enable cloud features</span>
|
<span style={{ color: "white" }}>Enable cloud features</span>
|
||||||
</DialogTitle>
|
</DialogTitle>
|
||||||
<DialogContent>
|
<DialogContent color="textSecondary">
|
||||||
What does{" "}
|
What does{" "}
|
||||||
<a
|
<a
|
||||||
href="https://shuffler.io/docs/organizations#cloud_sync"
|
href="https://shuffler.io/docs/organizations#cloud_sync"
|
||||||
@@ -2532,18 +2537,26 @@ const Admin = (props) => {
|
|||||||
Billing
|
Billing
|
||||||
</span>
|
</span>
|
||||||
/>
|
/>
|
||||||
|
<Tab
|
||||||
|
disabled={true}
|
||||||
|
label=<span>
|
||||||
|
Branding
|
||||||
|
</span>
|
||||||
|
/>
|
||||||
<Tab
|
<Tab
|
||||||
disabled={true}
|
disabled={true}
|
||||||
label=<span>
|
label=<span>
|
||||||
Usage
|
Usage
|
||||||
</span>
|
</span>
|
||||||
/>
|
/>
|
||||||
|
{/*
|
||||||
<Tab
|
<Tab
|
||||||
disabled={true}
|
disabled={true}
|
||||||
label=<span>
|
label=<span>
|
||||||
Notifications
|
Notifications
|
||||||
</span>
|
</span>
|
||||||
/>
|
/>
|
||||||
|
*/}
|
||||||
</Tabs>
|
</Tabs>
|
||||||
|
|
||||||
<Divider
|
<Divider
|
||||||
@@ -2614,13 +2627,28 @@ const Admin = (props) => {
|
|||||||
<div style={{ display: "flex" }}>
|
<div style={{ display: "flex" }}>
|
||||||
<TextField
|
<TextField
|
||||||
color="primary"
|
color="primary"
|
||||||
style={{ backgroundColor: theme.palette.inputColor }}
|
style={{
|
||||||
|
backgroundColor: theme.palette.inputColor,
|
||||||
|
maxWidth: 500,
|
||||||
|
}}
|
||||||
InputProps={{
|
InputProps={{
|
||||||
style: {
|
style: {
|
||||||
height: "50px",
|
height: "50px",
|
||||||
color: "white",
|
color: "white",
|
||||||
fontSize: "1em",
|
fontSize: "1em",
|
||||||
},
|
},
|
||||||
|
endAdornment: (
|
||||||
|
<InputAdornment position="end">
|
||||||
|
<IconButton
|
||||||
|
aria-label="toggle password visibility"
|
||||||
|
onClick={() => {
|
||||||
|
setShowApiKey(!showApiKey)
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{showApiKey ? <VisibilityIcon /> : <VisibilityOffIcon />}
|
||||||
|
</IconButton>
|
||||||
|
</InputAdornment>
|
||||||
|
)
|
||||||
}}
|
}}
|
||||||
required
|
required
|
||||||
fullWidth={true}
|
fullWidth={true}
|
||||||
@@ -2631,6 +2659,7 @@ const Admin = (props) => {
|
|||||||
placeholder="Cloud Apikey"
|
placeholder="Cloud Apikey"
|
||||||
variant="outlined"
|
variant="outlined"
|
||||||
defaultValue={userSettings.apikey}
|
defaultValue={userSettings.apikey}
|
||||||
|
type={!isCloud || showApiKey ? "text" : "password"}
|
||||||
/>
|
/>
|
||||||
{selectedOrganization.cloud_sync_active ? (
|
{selectedOrganization.cloud_sync_active ? (
|
||||||
<Button
|
<Button
|
||||||
@@ -2718,10 +2747,11 @@ const Admin = (props) => {
|
|||||||
) : null}
|
) : null}
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
<Typography
|
<Typography variant="h6" style={{ marginLeft: 5, marginTop: 40, marginBottom: 5 }}>
|
||||||
style={{ marginTop: 40, marginLeft: 10, marginBottom: 5 }}
|
Cloud sync features
|
||||||
>
|
</Typography>
|
||||||
Cloud sync features (monthly usage)
|
<Typography variant="body2" color="textSecondary" style={{marginBottom: 10, marginLeft: 5, }}>
|
||||||
|
If not otherwise specified, Usage will reset monthly
|
||||||
</Typography>
|
</Typography>
|
||||||
<Grid container style={{ width: "100%", marginBottom: 15 }}>
|
<Grid container style={{ width: "100%", marginBottom: 15 }}>
|
||||||
{selectedOrganization.sync_features === undefined ||
|
{selectedOrganization.sync_features === undefined ||
|
||||||
|
|||||||
@@ -8320,17 +8320,15 @@ const AngularWorkflow = (defaultprops) => {
|
|||||||
|
|
||||||
var injectedData = <div></div>;
|
var injectedData = <div></div>;
|
||||||
|
|
||||||
if (
|
if (selectedEdge.conditions !== undefined && selectedEdge.conditions !== null && selectedEdge.conditions.length > 0) {
|
||||||
selectedEdge.conditions !== undefined &&
|
|
||||||
selectedEdge.conditions !== null &&
|
|
||||||
selectedEdge.conditions.length > 0
|
|
||||||
) {
|
|
||||||
injectedData = selectedEdge.conditions.map((condition, index) => {
|
injectedData = selectedEdge.conditions.map((condition, index) => {
|
||||||
return ConditionHandler(condition, index);
|
return ConditionHandler(condition, index);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// FIXME - remove index
|
// Startnode = dest node
|
||||||
|
const conditionsDisabled = false
|
||||||
|
|
||||||
const conditionId = uuidv4();
|
const conditionId = uuidv4();
|
||||||
return (
|
return (
|
||||||
<div style={appApiViewStyle}>
|
<div style={appApiViewStyle}>
|
||||||
@@ -8363,7 +8361,7 @@ const AngularWorkflow = (defaultprops) => {
|
|||||||
|
|
||||||
<Button
|
<Button
|
||||||
style={{ margin: "auto", marginTop: "10px" }}
|
style={{ margin: "auto", marginTop: "10px" }}
|
||||||
color="primary"
|
color="secondary"
|
||||||
variant="outlined"
|
variant="outlined"
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
if (conditionsModalOpen) {
|
if (conditionsModalOpen) {
|
||||||
@@ -8396,6 +8394,13 @@ const AngularWorkflow = (defaultprops) => {
|
|||||||
>
|
>
|
||||||
New condition
|
New condition
|
||||||
</Button>
|
</Button>
|
||||||
|
|
||||||
|
{/* Check if dest is the same as start */}
|
||||||
|
{conditionsDisabled ?
|
||||||
|
<Typography variant="body1">
|
||||||
|
Conditions are unavailable between triggers and the startnode.
|
||||||
|
</Typography>
|
||||||
|
: null}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1618,7 +1618,16 @@ const AppCreator = (defaultprops) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
setProjectCategories(all_categories);
|
setProjectCategories(all_categories);
|
||||||
|
|
||||||
|
// Rearrange them by which has action_label
|
||||||
|
const firstActions = newActions.filter(data => data.action_label !== undefined && data.action_label !== null && data.action_label !== "No Label")
|
||||||
|
console.log("First actions: ", firstActions)
|
||||||
|
const secondActions = newActions.filter(data => data.action_label === undefined || data.action_label === null || data.action_label === "No Label")
|
||||||
|
newActions = firstActions.concat(secondActions)
|
||||||
setActions(newActions);
|
setActions(newActions);
|
||||||
|
//data.paths[item.url][item.method.toLowerCase()]["x-label"] = item.action_label
|
||||||
|
|
||||||
|
|
||||||
setFilteredActions(newActions);
|
setFilteredActions(newActions);
|
||||||
setIsAppLoaded(true);
|
setIsAppLoaded(true);
|
||||||
};
|
};
|
||||||
@@ -4031,12 +4040,16 @@ const AppCreator = (defaultprops) => {
|
|||||||
}}
|
}}
|
||||||
value={data.action_label}
|
value={data.action_label}
|
||||||
style={{
|
style={{
|
||||||
|
border: data.action_label === undefined || data.action_label === "No Label" ? "" : `2px solid ${bgColor}`,
|
||||||
|
borderRadius: theme.shape.borderRadius,
|
||||||
backgroundColor: inputColor,
|
backgroundColor: inputColor,
|
||||||
paddingLeft: 10,
|
paddingLeft: 10,
|
||||||
color: "white",
|
color: "white",
|
||||||
height: 30,
|
height: 30,
|
||||||
maxWidth: 50,
|
maxWidth: 35,
|
||||||
marginLeft: 10,
|
marginLeft: 10,
|
||||||
|
marginRight: 10,
|
||||||
|
overflow: "hidden",
|
||||||
}}
|
}}
|
||||||
inputProps={{
|
inputProps={{
|
||||||
name: "Method",
|
name: "Method",
|
||||||
@@ -4048,7 +4061,8 @@ const AppCreator = (defaultprops) => {
|
|||||||
<MenuItem
|
<MenuItem
|
||||||
key={labelindex}
|
key={labelindex}
|
||||||
value={label}
|
value={label}
|
||||||
style={{ }}
|
style={{
|
||||||
|
}}
|
||||||
>
|
>
|
||||||
{label}
|
{label}
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
|
|||||||
Reference in New Issue
Block a user