// +build js package main import ( "github.com/gopherjs/gopherjs/js" "github.com/mame82/hvue" ) type CompHIDJobsData struct { *js.Object } func newCompHIDJobsData(vm *hvue.VM) interface{} { cc := &CompHIDJobsData{ Object: js.Global.Get("Object").New(), } return cc } func InitCompHIDJobs() { hvue.NewComponent( "hid-job-overview", hvue.Template(compHIDJobOverviewTemplate), hvue.DataFunc(newCompHIDJobsData), hvue.Computed("jobs", func(vm *hvue.VM) interface{} { //return vm.Get("$store").Get("state").Get("hidJobList").Get("jobs") return vm.Get("$store").Get("getters").Get("hidjobs") }), ) hvue.NewComponent( "hid-job-overview-item", hvue.Template(compHIDJobOverViewItemTemplate), 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" } }), hvue.Computed("jobicon", 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 "error" case job.HasSucceeded && !job.HasFailed: return "check_circle" case !(job.HasFailed || job.HasSucceeded): return "sync" default: return "help" } }), hvue.PropObj("job", hvue.Required), ) } const ( /* // HIDJobList type jsHidJobState struct { *js.Object Id int64 `js:"id"` VmId int64 `js:"vmId"` HasFailed bool `js:"hasFailed"` HasSucceeded bool `js:"hasSucceeded"` LastMessage string `js:"lastMessage"` TextResult string `js:"textResult"` LastUpdateTime string `js:"lastUpdateTime"` //JSON timestamp from server ScriptSource string `js:"textSource"` } */ compHIDJobOverViewItemTemplate = ` Job {{ job.id }} State {{ jobstate }} {{ job.textResult }} ` //{ "evtype": 0, "vmId": 2, "jobId": 3, "hasError": false, "result": "null", "error": "", "message": "Script started", "time": "2018-07-30 04:56:42.297533 +0000 UTC m=+7625.097825001" } compHIDJobOverviewTemplate = ` Running Succeeded Failed ` )