cloud-control-panel/main.go

139 lines
3.3 KiB
Go
Raw Normal View History

package main
import "log"
import "os"
import "time"
// import "fmt"
import "github.com/gookit/config"
import "git.wit.com/wit/gui"
var GITCOMMIT string // this is passed in as an ldflag
var GOVERSION string // this is passed in as an ldflag
// import "github.com/davecgh/go-spew/spew"
// reminder to use this for JSON
// https://github.com/tidwall/gjson
// value := gjson.Get(json, "name.last")
// println(value.String())
// value := gjson.Get(json, friends.#[last=="Murphy"].first)
// use mergo to merge structs
// import "github.com/imdario/mergo"
// mergo.Merge(&dest, src)
// always sorted slice (new project)
// https://github.com/yaa110/sslice
// several smart slice functions (new project. April 2019)
// https://github.com/elliotchance/pie
// Exit and write out the config
// (in yaml and json I guess.)
// switch to json once it can be made human readable
func onExit() {
log.Println("Sleep for 1 second")
time.Sleep(1 * 1000 * 1000 * 1000)
f, err := os.Create("/tmp/cloud-control-panel.yaml")
if err == nil {
config.DumpTo(f, "yaml")
}
f, err = os.Create("/tmp/cloud-control-panel.json")
if err == nil {
config.DumpTo(f, "json")
}
os.Exit(0)
}
func main() {
parseConfig()
// only test the socket code if no GUI
if (config.String("nogui") == "true") {
log.Println("Need to re-implement this")
onExit()
}
initChannel()
go processEvents()
go gorillaDial("v000185.testing.com.customers.wprod.wit.com:9000")
go watchGUI()
gui.Data.Width = config.Int("width")
gui.Data.Height = config.Int("height")
gui.Data.Version = "v0.4 "
gui.Data.GitCommit = GITCOMMIT
gui.Data.GoVersion = GOVERSION
gui.Data.ButtonClickNew = buttonClickNew
// make this the main loop in an attempt to figure out the crashes
// do not change this until the GUI is stable
gui.GoMainWindow()
}
func buttonClickNew(b *gui.ButtonMap) {
log.Println("buttonClickNew() b =", b)
log.Println("\tb.Name", b.Name)
log.Println("\tb.Note", b.Note)
if (b.Note == "BACK") {
gui.Data.State = "splash"
}
if (b.Note == "BMATH") {
log.Println("\tTRIGGER BMATH HERE")
log.Println("\tTRIGGER BMATH HERE")
log.Println("\tTRIGGER BMATH HERE")
gui.Data.State = "bmath"
for {
log.Println("Sleep() in buttonClickNew() gui.Data.State =", gui.Data.State)
time.Sleep(200 * time.Millisecond)
if (gui.Data.State == "bmath done") {
count := countVMS(currentMessage)
mh := gui.AddVmsTab(count)
ReadReceivedData(currentMessage, mh)
return
}
}
}
if (gui.Data.State == "splash") {
gui.ShowAccountQuestionTab()
gui.Data.State = "account1"
return
} else if (gui.Data.State == "account1") {
gui.ShowAccountTab()
gui.Data.State = "main"
} else if (gui.Data.State == "main") {
gui.ShowMainTab()
gui.Data.State = "done"
}
}
func watchGUI() {
log.Println("Sleep(2000)")
time.Sleep(2000 * time.Millisecond)
for {
log.Println("Sleep() in watchGUI() gui.Data.State =", gui.Data.State)
time.Sleep(2000 * time.Millisecond)
if (gui.Data.State == "bmath") {
log.Println("\tTRIGGERING BMATH HERE")
log.Println("\tTRIGGERING BMATH HERE")
log.Println("\tTRIGGERING BMATH HERE")
gorillaSendProtobuf()
}
if (gui.Data.State == "kill") {
log.Println("gui.State = kill")
log.Println("gui.State = kill")
log.Println("gui.State = kill")
os.Exit(0)
}
}
}