minewebgen - internal/js/main.go
1 package main // import "vimagination.zapto.org/minewebgen/internal/js"
2
3 import (
4 "honnef.co/go/js/dom"
5 "vimagination.zapto.org/gopherjs/style"
6 "vimagination.zapto.org/gopherjs/tabs"
7 "vimagination.zapto.org/gopherjs/xdom"
8 "vimagination.zapto.org/gopherjs/xjs"
9 )
10
11 func init() {
12 style.Add(`fieldset {
13 padding-left : 0;
14 padding-right : 0;
15 border : 1px solid #000;
16 }
17 fieldset legend {
18 border : 1px solid #000;
19 margin-left : auto;
20 margin-right : auto;
21 }
22
23 textarea {
24 width : 400px;
25 height : 200px;
26 }
27 `)
28 }
29
30 func SetTitle(title string) {
31 title += " Server"
32 xjs.SetInnerText(dom.GetWindow().Document().(dom.HTMLDocument).Body().ChildNodes()[0], title)
33 tDoc, ok := dom.GetWindow().Document().(dom.HTMLDocument)
34 if ok {
35 tDoc.SetTitle(title)
36 }
37 }
38
39 func main() {
40 dom.GetWindow().AddEventListener("load", false, func(dom.Event) {
41 go func() {
42 if err := rpcInit(); err != nil {
43 xjs.Alert("Failed to connect to RPC server: %s", err)
44 return
45 }
46 title, err := RPC.ServerName()
47 if err != nil {
48 xjs.Alert("Error retrieving server name: %s", err)
49 return
50 }
51 body := dom.GetWindow().Document().(dom.HTMLDocument).Body()
52 body.Underlying().Set("spellcheck", "false")
53 xjs.RemoveChildren(body)
54 body.AppendChild(xdom.H1())
55 SetTitle(title)
56 body.AppendChild(tabs.New([]tabs.Tab{
57 {"Servers", ServersTab()},
58 {"Maps", MapsTab()},
59 {"Generators", GeneratorsTab},
60 {"Settings", settingsTab},
61 }))
62 }()
63 })
64 }