Implemented basic functions
This commit is contained in:
parent
89f483171a
commit
965e2daeb3
22 changed files with 711 additions and 58 deletions
109
main.go
109
main.go
|
|
@ -20,6 +20,7 @@ import (
|
|||
"path"
|
||||
"sort"
|
||||
"strconv"
|
||||
"time"
|
||||
)
|
||||
|
||||
const VERSION = "v1"
|
||||
|
|
@ -88,8 +89,23 @@ func main() { // {{{
|
|||
service.SetDatabase(sqlProvider)
|
||||
service.SetStaticFS(staticFS, "static")
|
||||
service.SetStaticDirectory("static", flagDev)
|
||||
service.InitDatabaseConnection()
|
||||
err = service.Db.Connect()
|
||||
if err != nil {
|
||||
logger.Error("application", "error", err)
|
||||
return
|
||||
}
|
||||
_, err = service.Db.Conn.Exec(`SET TIMEZONE TO 'Europe/Stockholm'`)
|
||||
if err != nil {
|
||||
logger.Error("application", "error", err)
|
||||
return
|
||||
}
|
||||
|
||||
service.Register("/", false, false, staticHandler)
|
||||
service.Register("/problems", false, false, pageProblems)
|
||||
service.Register("/datapoints", false, false, pageDatapoints)
|
||||
service.Register("/datapoint/edit/{id}", false, false, pageDatapointEdit)
|
||||
service.Register("/datapoint/update/{id}", false, false, pageDatapointUpdate)
|
||||
service.Register("/triggers", false, false, pageTriggers)
|
||||
service.Register("/trigger/edit/{id}", false, false, pageTriggerEdit)
|
||||
service.Register("/trigger/update/{id}", false, false, pageTriggerUpdate)
|
||||
|
|
@ -187,21 +203,26 @@ func getPage(layout, page string) (tmpl *template.Template, err error) { // {{{
|
|||
return tmpl, nil
|
||||
}
|
||||
|
||||
funcMap := template.FuncMap{
|
||||
"format_time": func(t time.Time) string {
|
||||
return t.Local().Format("2006-01-02 15:04:05")
|
||||
},
|
||||
}
|
||||
|
||||
filenames := []string{layoutFilename, pageFilename}
|
||||
filenames = append(filenames, componentFilenames...)
|
||||
logger.Info("template", "op", "parse", "layout", layout, "page", page, "filenames", filenames)
|
||||
if flagDev {
|
||||
parsedTemplates[page], err = template.ParseFS(os.DirFS("."), filenames...)
|
||||
tmpl, err = template.New("main.gotmpl").Funcs(funcMap).ParseFS(os.DirFS("."), filenames...)
|
||||
} else {
|
||||
parsedTemplates[page], err = template.ParseFS(viewFS, filenames...)
|
||||
tmpl, err = template.New("main.gotmpl").ParseFS(viewFS, filenames...)
|
||||
}
|
||||
tmpl = parsedTemplates[page]
|
||||
|
||||
if err != nil {
|
||||
err = we.Wrap(err).Log()
|
||||
return
|
||||
}
|
||||
|
||||
parsedTemplates[page] = tmpl
|
||||
return
|
||||
} // }}}
|
||||
|
||||
|
|
@ -237,6 +258,80 @@ func pageProblems(w http.ResponseWriter, _ *http.Request, _ *session.T) { // {{{
|
|||
page.Render(w)
|
||||
return
|
||||
} // }}}
|
||||
func pageDatapoints(w http.ResponseWriter, _ *http.Request, _ *session.T) { // {{{
|
||||
page := Page{
|
||||
LAYOUT: "main",
|
||||
PAGE: "datapoints",
|
||||
}
|
||||
|
||||
datapoints, err := DatapointsRetrieve()
|
||||
if err != nil {
|
||||
httpError(w, we.Wrap(err).Log())
|
||||
return
|
||||
}
|
||||
logger.Info("FOO", "dps", datapoints)
|
||||
|
||||
page.Data = map[string]any{
|
||||
"Datapoints": datapoints,
|
||||
}
|
||||
page.Render(w)
|
||||
return
|
||||
} // }}}
|
||||
func pageDatapointEdit(w http.ResponseWriter, r *http.Request, _ *session.T) { // {{{
|
||||
idStr := r.PathValue("id")
|
||||
id, err := strconv.Atoi(idStr)
|
||||
if err != nil {
|
||||
httpError(w, we.Wrap(err).Log())
|
||||
return
|
||||
}
|
||||
|
||||
var datapoint Datapoint
|
||||
if id == 0 {
|
||||
datapoint.Name = "new_datapoint"
|
||||
datapoint.Datatype = "INT"
|
||||
} else {
|
||||
datapoint, err = DatapointRetrieve(id, "")
|
||||
if err != nil {
|
||||
httpError(w, we.Wrap(err).Log())
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
page := Page{
|
||||
LAYOUT: "main",
|
||||
PAGE: "datapoint_edit",
|
||||
MENU: "datapoints",
|
||||
Icon: "datapoints",
|
||||
Label: "Datapoint",
|
||||
}
|
||||
|
||||
page.Data = map[string]any{
|
||||
"Datapoint": datapoint,
|
||||
}
|
||||
page.Render(w)
|
||||
return
|
||||
} // }}}
|
||||
func pageDatapointUpdate(w http.ResponseWriter, r *http.Request, _ *session.T) { // {{{
|
||||
idStr := r.PathValue("id")
|
||||
id, err := strconv.Atoi(idStr)
|
||||
if err != nil {
|
||||
httpError(w, we.Wrap(err).Log())
|
||||
return
|
||||
}
|
||||
|
||||
var dp Datapoint
|
||||
dp.ID = id
|
||||
dp.Name = r.FormValue("name")
|
||||
dp.Datatype = DatapointType(r.FormValue("datatype"))
|
||||
err = dp.Update()
|
||||
if err != nil {
|
||||
httpError(w, we.Wrap(err).Log())
|
||||
return
|
||||
}
|
||||
|
||||
w.Header().Add("Location", "/datapoints")
|
||||
w.WriteHeader(302)
|
||||
} // }}}
|
||||
func pageTriggers(w http.ResponseWriter, _ *http.Request, _ *session.T) { // {{{
|
||||
areas, err := TriggersRetrieve()
|
||||
if err != nil {
|
||||
|
|
@ -275,7 +370,7 @@ func pageTriggerEdit(w http.ResponseWriter, r *http.Request, _ *session.T) { //
|
|||
|
||||
datapoints := make(map[string]Datapoint)
|
||||
for _, dpname := range trigger.Datapoints {
|
||||
dp, err := DatapointRetrieve(dpname)
|
||||
dp, err := DatapointRetrieve(0, dpname)
|
||||
if err != nil {
|
||||
httpError(w, we.Wrap(err).Log())
|
||||
return
|
||||
|
|
@ -320,7 +415,7 @@ func pageTriggerUpdate(w http.ResponseWriter, r *http.Request, _ *session.T) { /
|
|||
return
|
||||
}
|
||||
|
||||
w.Header().Add("Location", fmt.Sprintf("/trigger/edit/%d", id))
|
||||
w.Header().Add("Location", "/triggers")
|
||||
w.WriteHeader(302)
|
||||
} // }}}
|
||||
func pageTriggerRun(w http.ResponseWriter, r *http.Request, _ *session.T) { // {{{
|
||||
|
|
@ -343,7 +438,7 @@ func pageTriggerRun(w http.ResponseWriter, r *http.Request, _ *session.T) { // {
|
|||
|
||||
datapoints := make(map[string]Datapoint)
|
||||
for _, dpname := range trigger.Datapoints {
|
||||
dp, err := DatapointRetrieve(dpname)
|
||||
dp, err := DatapointRetrieve(0, dpname)
|
||||
if err != nil {
|
||||
httpError(w, we.Wrap(err).Log())
|
||||
return
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue