diff --git a/web_client/hvueCompHIDJobs.go b/web_client/hvueCompHIDJobs.go index 6a72ca7..4b947a9 100644 --- a/web_client/hvueCompHIDJobs.go +++ b/web_client/hvueCompHIDJobs.go @@ -35,6 +35,14 @@ func InitCompHIDJobs() { hvue.NewComponent( "hid-job-overview-item", hvue.Template(compHIDJobOverViewItemTemplate), + hvue.DataFunc(func(vm *hvue.VM) interface{} { + data := &struct { + *js.Object + ShowDetails bool `js:"ShowDetails"` + }{Object: O()} + data.ShowDetails = false + return data + }), hvue.Method("cancel", func(vm *hvue.VM) { job := &jsHidJobState{Object:vm.Get("job")} println("Aborting job :", job.Id) @@ -91,6 +99,61 @@ func InitCompHIDJobs() { hvue.PropObj("job", hvue.Required), ) + hvue.NewComponent( + "job-detail-modal", + hvue.Template(templateHIDJobDetails), + hvue.ComputedWithGetSet( + "visible", + func(vm *hvue.VM) interface{} { + return vm.Get("value") + }, + func(vm *hvue.VM, newValue *js.Object) { + vm.Call("$emit", "input", newValue) + }, + ), + hvue.PropObj( + "value", + hvue.Required, + hvue.Types(hvue.PBoolean), + ), + hvue.PropObj( + "job", + hvue.Required, + ), + hvue.Computed("jobstate", + func(vm *hvue.VM) interface{} { + //fetch job and cast back to jobstate + job := &jsHidJobState{Object:vm.Get("job")} + switch { + case job.HasFailed && !job.HasSucceeded: + return "FAILED" + case job.HasSucceeded && !job.HasFailed: + return "SUCCEEDED" + case !(job.HasFailed || job.HasSucceeded): + return "RUNNING" + default: + return "UNKNOWN_STATE" + + } + }), + hvue.Computed("jobcolor", + func(vm *hvue.VM) interface{} { + //fetch job and cast back to jobstate + job := &jsHidJobState{Object:vm.Get("job")} + switch { + case job.HasFailed && !job.HasSucceeded: + return "negative" + case job.HasSucceeded && !job.HasFailed: + return "positive" + case !(job.HasFailed || job.HasSucceeded): + return "warning" + default: + return "info" + + } + }), + ) + } const ( @@ -109,32 +172,115 @@ ScriptSource string `js:"textSource"` } */ + templateHIDJobDetails = ` + + + + + HIDScript job details + + + + + + + + Job ID + + + + + + + + + + VM ID + + + + + + + + + + Sate + + + + + + + + + + + HIDScript result + + + + + + + + + + + HIDScript source + + + + + + + + + + + + + + + + + + + + +` + compHIDJobOverViewItemTemplate = ` + + Job {{ job.id }} State {{ jobstate }} - - - - {{ job.textResult }} - - - show job result - - - - - - - cancel HIDScript job {{ job.id }} - - + + + + + + + cancel HIDScript job {{ job.id }} + + + + + + + show HIDScript job details + + + + + ` diff --git a/web_client/main.go b/web_client/main.go index 5f041f4..f9de19f 100644 --- a/web_client/main.go +++ b/web_client/main.go @@ -45,14 +45,10 @@ func Router(router *js.Object) hvue.ComponentOption { func main() { - println(GetBaseURL()) + //println(GetBaseURL()) store := InitGlobalState() //sets Vuex store in JS window.store -// RpcClient.StartListening() //Start event listening after global state is initiated (contains the event handlers) - - // ToDo: delete because debug -// RpcClient.GetAllDeployedEthernetInterfaceSettings(time.Second*10) router := NewVueRouter( "/usb", diff --git a/web_client/vueRouter.go b/web_client/vueRouter.go index 98aad72..6f78bb2 100644 --- a/web_client/vueRouter.go +++ b/web_client/vueRouter.go @@ -3,7 +3,6 @@ package main import ( "github.com/gopherjs/gopherjs/js" "github.com/mame82/hvue" - ) //Very simple vue-router binding, support only Component templates for routes @@ -37,6 +36,8 @@ func VueRouterRoute(path, name, template string) VueRouterOption { } } + + func NewVueRouter(defaultRoute string, opts ...VueRouterOption) *js.Object { c := &VueRouterConfig{Object:O()} c.Routes = js.Global.Get("Array").New()