Initial rendering of the node tree
This commit is contained in:
commit
c5bec0afa6
7477 changed files with 8513 additions and 0 deletions
74
webserver.go
Normal file
74
webserver.go
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
// External
|
||||
"git.ahall.se/go/html_template"
|
||||
|
||||
// Standard
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io/fs"
|
||||
"net/http"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
var (
|
||||
engine HTMLTemplate.Engine
|
||||
)
|
||||
|
||||
func initWebserver() (err error) {
|
||||
address := fmt.Sprintf("%s:%d", config.Network.Address, config.Network.Port)
|
||||
logger.Info("webserver", "listen", address)
|
||||
|
||||
subViewFS, _ := fs.Sub(viewFS, "views")
|
||||
subStaticFS, _ := fs.Sub(staticFS, "static")
|
||||
|
||||
engine, err = HTMLTemplate.NewEngine(subViewFS, subStaticFS, flagDev)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
http.HandleFunc("/", pageIndex)
|
||||
http.HandleFunc("/app", pageApp)
|
||||
http.HandleFunc("/nodes/tree/{startNode}", actionNodesTree)
|
||||
|
||||
err = http.ListenAndServe(address, nil)
|
||||
return
|
||||
}
|
||||
|
||||
func pageIndex(w http.ResponseWriter, r *http.Request) { // {{{
|
||||
if r.URL.Path == "/" {
|
||||
http.Redirect(w, r, "/app", http.StatusSeeOther)
|
||||
} else {
|
||||
engine.StaticResource(w, r)
|
||||
}
|
||||
} // }}}
|
||||
|
||||
func pageApp(w http.ResponseWriter, r *http.Request) { // {{{
|
||||
page := NewPage("app")
|
||||
err := engine.Render(page, w, r)
|
||||
if err != nil {
|
||||
w.Write([]byte(err.Error()))
|
||||
}
|
||||
} // }}}
|
||||
|
||||
func actionNodesTree(w http.ResponseWriter, r *http.Request) { // {{{
|
||||
var err error
|
||||
|
||||
startNode := 0
|
||||
startNodeStr := r.PathValue("startNode")
|
||||
startNode, _ = strconv.Atoi(startNodeStr)
|
||||
|
||||
var maxDepth int
|
||||
if maxDepth, err = strconv.Atoi(r.URL.Query().Get("depth")); err != nil {
|
||||
maxDepth = 3
|
||||
}
|
||||
|
||||
topNode, err := GetNode(startNode, maxDepth)
|
||||
if err != nil {
|
||||
logger.Error("test", "error", err)
|
||||
}
|
||||
|
||||
j, _ := json.Marshal(topNode)
|
||||
w.Write(j)
|
||||
} // }}}
|
||||
Loading…
Add table
Add a link
Reference in a new issue