Begin work on status messages

Amolith created

Change summary

ws/static/home.html |  9 +++++----
ws/ws.go            | 13 ++++++++++++-
2 files changed, 17 insertions(+), 5 deletions(-)

Detailed changes

ws/static/home.html 🔗

@@ -21,11 +21,12 @@
         <header class="wrapper">
             <h1>Willow &nbsp;&nbsp;&nbsp;<span><a href="/logout">Log out</a></span></h1>
             <p><a href="/new">Track a new project</a></p>
+            <p class="message-{{ .MessageType }}">{{ .Message }}</p>
         </header>
         <div class="two_column">
             <div class="projects">
                 <!-- Range through projects that aren't yet up-to-date -->
-                {{- range . -}}
+                {{- range .Projects -}}
                 {{- if ne .Running (index .Releases 0).Tag -}}
                 <h2>Outdated projects</h2>
                 {{- break -}}
@@ -43,13 +44,13 @@
                 {{- end -}}
 
                 <!-- Range through projects that _are_ up-to-date -->
-                {{- range . -}}
+                {{- range .Projects -}}
                 {{- if eq .Running (index .Releases 0).Tag -}}
                 <h2>Up-to-date projects</h2>
                 {{- break -}}
                 {{- end -}}
                 {{- end -}}
-                {{- range . -}}
+                {{- range .Projects -}}
                 {{- if eq .Running (index .Releases 0).Tag -}}
                 <div class="project card">
                     <h3><a href="{{ .URL }}">{{ .Name }}</a>&nbsp;&nbsp;&nbsp;<span class="delete"><a href="/new?action=delete&id={{ .ID }}">Delete?</a></span></h3>
@@ -60,7 +61,7 @@
             </div>
             <div class="release_notes">
                 <h2>Release notes</h2>
-                {{- range . -}}
+                {{- range .Projects -}}
                 <div id="{{ (index .Releases 0).ID }}" class="release_note card">
                     <h3>{{ .Name }}: release notes for <a href="{{ (index .Releases 0).URL }}">{{ (index .Releases 0).Tag }}</a> <span class="close"><a href="#">&#x2716;</a></span></h3>
                     {{- if eq .Forge "github" "gitea" "forgejo" -}}

ws/ws.go 🔗

@@ -29,6 +29,12 @@ type Handler struct {
 	Mu            *sync.Mutex
 }
 
+type page struct {
+	Projects    []project.Project
+	Message     string
+	MessageType string
+}
+
 //go:embed static
 var fs embed.FS
 
@@ -51,7 +57,12 @@ func (h Handler) RootHandler(w http.ResponseWriter, r *http.Request) {
 		return
 	}
 	tmpl := template.Must(template.ParseFS(fs, "static/home.html"))
-	if err := tmpl.Execute(w, data); err != nil {
+	p := page{
+		Projects:    data,
+		Message:     "Hello world",
+		MessageType: "info",
+	}
+	if err := tmpl.Execute(w, p); err != nil {
 		fmt.Println(err)
 	}
 }