initial commit

This commit is contained in:
Adrian Zürcher
2025-08-04 16:59:29 +02:00
commit 21b41de886
10 changed files with 470 additions and 0 deletions

67
handlers/htopHandler.go Normal file
View File

@@ -0,0 +1,67 @@
package handlers
import (
"html/template"
"net/http"
"processSupervisor/models"
)
func HtopHandler(w http.ResponseWriter, r *http.Request) {
table, err := models.GetTable()
if err != nil {
http.Error(w, "Failed to get processes", 500)
return
}
table.Sort(r)
funcMap := template.FuncMap{
"div": divide,
}
w.Header().Set("Content-Type", "text/html; charset=utf-8")
// Detect HTMX request via the HX-Request header
if r.Header.Get("HX-Request") == "true" {
tmpl := template.Must(
template.New("table.html").Funcs(funcMap).ParseFiles("templates/partials/table.html"),
)
tmpl.Execute(w, table)
return
}
tmpl := template.Must(
template.New("htop.html").Funcs(funcMap).ParseFiles(
"templates/htop.html",
"templates/partials/table.html",
),
)
tmpl.Execute(w, table)
}
func divide(a any, b any) float64 {
af := toFloat64(a)
bf := toFloat64(b)
if bf == 0 {
return 0
}
return af / bf
}
func toFloat64(v any) float64 {
switch val := v.(type) {
case int:
return float64(val)
case int32:
return float64(val)
case int64:
return float64(val)
case uint64:
return float64(val)
case float32:
return float64(val)
case float64:
return val
default:
return 0
}
}