Minor fixes to frontend

This commit is contained in:
frikky
2021-03-01 11:57:48 +01:00
parent 5a37acf5ba
commit f91307e0a2
6 changed files with 50 additions and 15 deletions
+1 -1
View File
@@ -54,7 +54,7 @@ These are the main areas to contribute in:
* Workflow creation (GUI & Conceptualizing) * Workflow creation (GUI & Conceptualizing)
* Content Creation (Blogs, videos etc) * Content Creation (Blogs, videos etc)
Contributing guidelines for Github are outlined [here](https://github.com/frikky/Shuffle/blob/master/.github/CONTRIBUTING.md). Contributing guidelines are outlined [here](https://github.com/frikky/Shuffle/blob/master/.github/CONTRIBUTING.md).
## Contributors ## Contributors
![ICPL logo](https://github.com/frikky/Shuffle/blob/launch/frontend/src/assets/img/icpl_logo.png) ![ICPL logo](https://github.com/frikky/Shuffle/blob/launch/frontend/src/assets/img/icpl_logo.png)
+6 -1
View File
@@ -195,6 +195,11 @@ type WorkflowApp struct {
DocumentationUrl string `json:"documentation_url" datastore:"documentation_url"` DocumentationUrl string `json:"documentation_url" datastore:"documentation_url"`
GithubUrl string `json:"github_url" datastore:"github_url"` GithubUrl string `json:"github_url" datastore:"github_url"`
} }
FolderMount struct {
FolderMount bool `json:"folder_mount" datastore:"folder_mount"`
SourceFolder string `json:"source_folder" datastore:"source_folder"`
DestinationFolder string `json:"destination_folder" datastore:"destination_folder"`
}
Actions []WorkflowAppAction `json:"actions" yaml:"actions" required:true datastore:"actions,noindex"` Actions []WorkflowAppAction `json:"actions" yaml:"actions" required:true datastore:"actions,noindex"`
Authentication Authentication `json:"authentication" yaml:"authentication" required:false datastore:"authentication"` Authentication Authentication `json:"authentication" yaml:"authentication" required:false datastore:"authentication"`
Tags []string `json:"tags" yaml:"tags" required:false datastore:"activated"` Tags []string `json:"tags" yaml:"tags" required:false datastore:"activated"`
@@ -6421,7 +6426,7 @@ func iterateWorkflowGithubFolders(fs billy.Filesystem, dir []os.FileInfo, extra
} }
} }
*/ */
log.Printf("Import workflow from file: %s", filename) log.Printf("Import workflow from file: %s", filename)
ctx := context.Background() ctx := context.Background()
err = setWorkflow(ctx, workflow, workflow.ID, secondsOffset) err = setWorkflow(ctx, workflow, workflow.ID, secondsOffset)
+4 -4
View File
@@ -987,7 +987,7 @@ const AngularWorkflow = (props) => {
setApps(responseJson) setApps(responseJson)
//getAppAuthentication() //getAppAuthentication()
setFilteredApps(responseJson.filter(app => !internalIds.includes(app.name))) setFilteredApps(responseJson.filter(app => !internalIds.includes(app.name) && !(!app.activated && app.generated)))
setPrioritizedApps(responseJson.filter(app => internalIds.includes(app.name))) setPrioritizedApps(responseJson.filter(app => internalIds.includes(app.name)))
}) })
.catch(error => { .catch(error => {
@@ -6637,7 +6637,7 @@ const AngularWorkflow = (props) => {
<b>Actions</b> <b>Actions</b>
<div> <div>
{executionData.status !== undefined && executionData.status !== "ABORTED" && executionData.status !== "FINISHED" && executionData.status !== "FAILURE" && executionData.status !== "WAITING" ? <CircularProgress style={{marginLeft: 20}}/> : null} {executionData.status !== undefined && executionData.status !== "ABORTED" && executionData.status !== "FINISHED" && executionData.status !== "FAILURE" && executionData.status !== "WAITING" && !(executionData.results === undefined || executionData.results === null || executionData.results.length === 0 && executionData.status === "EXECUTING")? <CircularProgress style={{marginLeft: 20}}/> : null}
</div> </div>
</div> </div>
{executionData.results === undefined || executionData.results === null || executionData.results.length === 0 && executionData.status === "EXECUTING" ? {executionData.results === undefined || executionData.results === null || executionData.results.length === 0 && executionData.status === "EXECUTING" ?
@@ -6712,7 +6712,7 @@ const AngularWorkflow = (props) => {
}} }}
name={"Results for "+data.action.label} name={"Results for "+data.action.label}
/> />
{data.action.app_name === "shuffle-subflow" ? {data.action.app_name === "shuffle-subflow" && validate.result.success !== undefined && validate.result.success === true ?
<span> <span>
{validate.valid && data.action.parameters !== undefined && data.action.parameters !== null ? {validate.valid && data.action.parameters !== undefined && data.action.parameters !== null ?
<a rel="norefferer" href={`/workflows/${data.action.parameters[0].value}?view=executions&execution_id=${validate.result.execution_id}`} target="_blank" style={{textDecoration: "none", color: "#f85a3e"}}>See subflow execution</a> <a rel="norefferer" href={`/workflows/${data.action.parameters[0].value}?view=executions&execution_id=${validate.result.execution_id}`} target="_blank" style={{textDecoration: "none", color: "#f85a3e"}}>See subflow execution</a>
@@ -6724,7 +6724,7 @@ const AngularWorkflow = (props) => {
} }
</span> </span>
: :
<div style={{maxHeight: 250, overflowX: "hidden", overflowY: "auto",}}> <div style={{maxHeight: 250, overflowX: "hidden", overflowY: "auto", whiteSpace: "pre-wrap"}}>
<b>Result</b>&nbsp; <b>Result</b>&nbsp;
{data.result} {data.result}
</div> </div>
+3 -1
View File
@@ -201,7 +201,8 @@ const Apps = (props) => {
}) })
.then((responseJson) => { .then((responseJson) => {
//console.log("Apps: ", responseJson) //console.log("Apps: ", responseJson)
responseJson = sortByKey(responseJson, "large_image") //responseJson = sortByKey(responseJson, "large_image")
responseJson = sortByKey(responseJson, "generated")
setApps(responseJson) setApps(responseJson)
setFilteredApps(responseJson) setFilteredApps(responseJson)
@@ -781,6 +782,7 @@ const Apps = (props) => {
var tmpapps = searchableApps.filter(data => data.name.toLowerCase().includes(searchfield) || data.description.toLowerCase().includes(searchfield)) var tmpapps = searchableApps.filter(data => data.name.toLowerCase().includes(searchfield) || data.description.toLowerCase().includes(searchfield))
newapps.push(...tmpapps) newapps.push(...tmpapps)
console.log(newapps)
setFilteredApps(newapps) setFilteredApps(newapps)
//if ((newapps.length === 0 || searchBackend) && !appSearchLoading) { //if ((newapps.length === 0 || searchBackend) && !appSearchLoading) {
+4 -8
View File
@@ -2,20 +2,16 @@ FROM golang:1.16.0-buster as builder
WORKDIR /app WORKDIR /app
COPY worker.go /app/worker.go
RUN go env -w GO111MODULE=auto
RUN go get -u github.com/docker/docker/api/types RUN go get -u github.com/docker/docker/api/types
RUN go get -u github.com/docker/docker/api/types/container RUN go get -u github.com/docker/docker/api/types/container
RUN go get -u github.com/docker/docker/client RUN go get -u github.com/docker/docker/client
RUN go get -u github.com/gorilla/mux RUN go get -u github.com/gorilla/mux
RUN go get -u github.com/patrickmn/go-cache RUN go get -u github.com/patrickmn/go-cache
COPY worker.go /app/worker.go RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o worker .
RUN go env -w GO111MODULE=auto && \
go get github.com/docker/docker/api/types && \
go get github.com/docker/docker/api/types/container && \
go get github.com/docker/docker/client && \
go get github.com/gorilla/mux && \
go get github.com/patrickmn/go-cache && \
CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o worker .
FROM alpine:3.12 FROM alpine:3.12
+32
View File
@@ -18,6 +18,7 @@ import (
"github.com/docker/docker/api/types" "github.com/docker/docker/api/types"
"github.com/docker/docker/api/types/container" "github.com/docker/docker/api/types/container"
"github.com/docker/docker/api/types/mount"
dockerclient "github.com/docker/docker/client" dockerclient "github.com/docker/docker/client"
"github.com/gorilla/mux" "github.com/gorilla/mux"
@@ -877,6 +878,37 @@ func deployApp(cli *dockerclient.Client, image string, identifier string, env []
hostConfig.AutoRemove = true hostConfig.AutoRemove = true
} }
// FIXME: Add proper foldermounts here
//log.Printf("\n\nPRE FOLDERMOUNT\n\n")
//volumeBinds := []string{"/tmp/shuffle-mount:/rules"}
//volumeBinds := []string{"/tmp/shuffle-mount:/rules"}
volumeBinds := []string{}
if len(volumeBinds) > 0 {
log.Printf("[INFO] Setting up binds for container!")
hostConfig.Binds = volumeBinds
hostConfig.Mounts = []mount.Mount{}
for _, bind := range volumeBinds {
if !strings.Contains(bind, ":") || strings.Contains(bind, "..") || strings.HasPrefix(bind, "~") {
log.Printf("[WARNING] Bind %s is invalid.", bind)
continue
}
log.Printf("[INFO] Appending bind %s", bind)
bindSplit := strings.Split(bind, ":")
sourceFolder := bindSplit[0]
destinationFolder := bindSplit[0]
hostConfig.Mounts = append(hostConfig.Mounts, mount.Mount{
Type: mount.TypeBind,
Source: sourceFolder,
Target: destinationFolder,
})
}
} else {
log.Printf("[WARNING] No mounted folders")
}
// hostConfig.Binds = volumeBinds
//}
config := &container.Config{ config := &container.Config{
Image: image, Image: image,
Env: env, Env: env,