Reworked tree

This commit is contained in:
Magnus Åhall 2025-07-04 16:40:13 +02:00
parent c0255fadb8
commit a6bb845c9d
9 changed files with 314 additions and 117 deletions

View file

@ -3,6 +3,7 @@ package main
import (
// External
"git.ahall.se/go/html_template"
werr "git.gibonuddevalla.se/go/wrappederror"
// Standard
"encoding/json"
@ -26,6 +27,7 @@ func initWebserver() (err error) {
engine, err = HTMLTemplate.NewEngine(subViewFS, subStaticFS, flagDev)
if err != nil {
err = werr.Wrap(err)
return
}
@ -34,6 +36,7 @@ func initWebserver() (err error) {
http.HandleFunc("/nodes/tree/{startNode}", actionNodesTree)
http.HandleFunc("/nodes/{nodeID}", actionNode)
http.HandleFunc("/nodes/update/{nodeID}", actionNodeUpdate)
http.HandleFunc("/nodes/rename/{nodeID}", actionNodeRename)
http.HandleFunc("/nodes/create", actionNodeCreate)
http.HandleFunc("/types/{typeID}", actionType)
http.HandleFunc("/types/", actionTypesAll)
@ -66,6 +69,7 @@ func pageApp(w http.ResponseWriter, r *http.Request) { // {{{
ts, err := GetTypes()
if err != nil {
err = werr.Wrap(err)
httpError(w, err)
return
}
@ -74,6 +78,7 @@ func pageApp(w http.ResponseWriter, r *http.Request) { // {{{
err = engine.Render(page, w, r)
if err != nil {
err = werr.Wrap(err)
w.Write([]byte(err.Error()))
}
} // }}}
@ -92,6 +97,7 @@ func actionNodesTree(w http.ResponseWriter, r *http.Request) { // {{{
topNode, err := GetNodeTree(startNode, maxDepth)
if err != nil {
err = werr.Wrap(err)
httpError(w, err)
return
}
@ -114,6 +120,7 @@ func actionNode(w http.ResponseWriter, r *http.Request) { // {{{
node, err := GetNode(nodeID)
if err != nil {
err = werr.Wrap(err)
httpError(w, err)
return
}
@ -137,6 +144,31 @@ func actionNodeUpdate(w http.ResponseWriter, r *http.Request) { // {{{
err := UpdateNode(nodeID, data)
if err != nil {
err = werr.Wrap(err)
httpError(w, err)
return
}
out := struct {
OK bool
}{
true,
}
j, _ := json.Marshal(out)
w.Write(j)
} // }}}
func actionNodeRename(w http.ResponseWriter, r *http.Request) { // {{{
nodeID := 0
nodeIDStr := r.PathValue("nodeID")
nodeID, _ = strconv.Atoi(nodeIDStr)
data, _ := io.ReadAll(r.Body)
var req struct { Name string }
err := json.Unmarshal(data, &req)
err = RenameNode(nodeID, req.Name)
if err != nil {
err = werr.Wrap(err)
httpError(w, err)
return
}
@ -158,12 +190,14 @@ func actionNodeCreate(w http.ResponseWriter, r *http.Request) { // {{{
data, _ := io.ReadAll(r.Body)
err := json.Unmarshal(data, &req)
if err != nil {
err = werr.Wrap(err)
httpError(w, err)
return
}
err = CreateNode(req.ParentNodeID, req.TypeID, req.Name)
if err != nil {
err = werr.Wrap(err)
httpError(w, err)
return
}
@ -183,6 +217,7 @@ func actionType(w http.ResponseWriter, r *http.Request) { // {{{
typ, err := GetType(typeID)
if err != nil {
err = werr.Wrap(err)
httpError(w, err)
return
}
@ -193,6 +228,7 @@ func actionType(w http.ResponseWriter, r *http.Request) { // {{{
func actionTypesAll(w http.ResponseWriter, r *http.Request) { // {{{
types, err := GetTypes()
if err != nil {
err = werr.Wrap(err)
httpError(w, err)
return
}