76 lines
1.4 KiB
Go
76 lines
1.4 KiB
Go
package webui
|
|
|
|
import (
|
|
"database/sql"
|
|
"html/template"
|
|
"net/http"
|
|
"sevenkeys/logic"
|
|
"strconv"
|
|
)
|
|
|
|
type BaseHandler struct {
|
|
db *sql.DB
|
|
}
|
|
|
|
func NewBaseHandler(db *sql.DB) *BaseHandler {
|
|
return &BaseHandler{
|
|
db: db,
|
|
}
|
|
}
|
|
|
|
func (h *BaseHandler) storageAreasHandler(w http.ResponseWriter, r *http.Request) {
|
|
storageAreas, err := logic.GetAllStorageAreas(h.db)
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
const tmpl = `
|
|
<html>
|
|
<head><title>Sevenkeys</title></head>
|
|
<body>
|
|
{{range $val := .}}
|
|
<a href="/storage/{{$val.Id}}">{{$val.Name}} ({{$val.StorageType}})</a><br>
|
|
{{end}}
|
|
</body>
|
|
</html>
|
|
`
|
|
t := template.Must(template.New("tmpl").Parse(tmpl))
|
|
t.Execute(w, storageAreas)
|
|
}
|
|
|
|
func (h *BaseHandler) storageHandler(w http.ResponseWriter, r *http.Request) {
|
|
storageAreaIdParam := r.PathValue("id")
|
|
|
|
storageAreaId, err := strconv.Atoi(storageAreaIdParam)
|
|
if err != nil {
|
|
return
|
|
}
|
|
productLocations, err := logic.GetAllProductsInStorageArea(h.db, storageAreaId)
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
const tmpl = `
|
|
<html>
|
|
<head><title>Sevenkeys</title></head>
|
|
<body>
|
|
<ol>
|
|
{{range $val := .}}
|
|
<li>{{$val}}</li>
|
|
{{end}}
|
|
<ol>
|
|
</body>
|
|
</html>
|
|
`
|
|
t := template.Must(template.New("tmpl").Parse(tmpl))
|
|
t.Execute(w, productLocations)
|
|
}
|
|
|
|
func Start(db *sql.DB) {
|
|
handlers := NewBaseHandler(db)
|
|
|
|
http.HandleFunc("/", handlers.storageAreasHandler)
|
|
http.HandleFunc("/storage/{id}", handlers.storageHandler)
|
|
http.ListenAndServe(":8080", nil)
|
|
}
|