Rework templates to be less hard-coded

This commit is contained in:
Andrew-71 2024-03-30 13:51:29 +03:00
parent a66e26477c
commit 02e1c80c24
7 changed files with 28 additions and 32 deletions

View file

@ -14,7 +14,7 @@
<link rel="icon" type="image/x-icon" href="/public/favicon.ico">
<link rel="stylesheet" href="/public/main.css">
<script src="/public/date.js"></script>
<title>Hibiscus.txt</title>
<title>Hibiscus</title>
</head>
<body>
{{template "header" .}}

View file

@ -1,4 +0,0 @@
{{define "main"}}
<h2><label for="day">{{ .Date }}</label> | <a href="/day">Go back</a></h2>
<textarea id="day" cols="40" rows="15" readonly>{{ .Day }}</textarea>
{{end}}

7
pages/edit.html Normal file
View file

@ -0,0 +1,7 @@
{{define "main"}}
<form method="POST">
<h2><label for="text">{{ .Title }}:</label></h2>
<textarea id="text" cols="40" rows="15" name="text">{{ .Content }}</textarea>
<button type="submit">Save</button>
</form>
{{end}}

4
pages/entry.html Normal file
View file

@ -0,0 +1,4 @@
{{define "main"}}
<h2><label for="text">{{ .Title }}</label> | <a href="/day">Go back</a></h2>
<textarea id="text" cols="40" rows="15" readonly>{{ .Content }}</textarea>
{{end}}

View file

@ -1,7 +0,0 @@
{{define "main"}}
<form method="POST">
<h2><label for="day">Your day so far:</label></h2>
<textarea id="day" cols="40" rows="15" name="day">{{ .Day }}</textarea>
<button type="submit">Save</button>
</form>
{{end}}

View file

@ -2,7 +2,7 @@
<h2>{{.Title}}</h2>
<ul>
{{range .Entries}}
<li><a href="/day/{{.Link}}">{{.Name}}</a></li>
<li><a href="/{{.Link}}">{{.Title}}</a></li>
{{end}}
</ul>
{{end}}

View file

@ -10,18 +10,14 @@ import (
"time"
)
type DayData struct {
Day string
Date string
}
type List struct {
type EntryList struct {
Title string
Entries []ListEntry
Entries []Entry
}
type ListEntry struct {
Name string
type Entry struct {
Title string
Content string
Link string
}
@ -50,14 +46,14 @@ func GetToday(w http.ResponseWriter, r *http.Request) {
}
}
files := []string{"./pages/base.html", "./pages/index.html"}
files := []string{"./pages/base.html", "./pages/edit.html"}
ts, err := template.ParseFiles(files...)
if err != nil {
InternalError(w, r)
return
}
err = ts.ExecuteTemplate(w, "base", DayData{Day: string(day)})
err = ts.ExecuteTemplate(w, "base", Entry{Title: "Your day so far", Content: string(day)})
if err != nil {
InternalError(w, r)
return
@ -66,7 +62,7 @@ func GetToday(w http.ResponseWriter, r *http.Request) {
// PostToday saves today's entry from form and redirects back to GET
func PostToday(w http.ResponseWriter, r *http.Request) {
err := SaveToday([]byte(r.FormValue("day")))
err := SaveToday([]byte(r.FormValue("text")))
if err != nil {
slog.Error("error saving today's file", "error", err)
}
@ -81,7 +77,7 @@ func GetDays(w http.ResponseWriter, r *http.Request) {
InternalError(w, r)
return
}
var daysFormatted []ListEntry
var daysFormatted []Entry
for i, _ := range day {
v := day[len(day)-1-i] // This is suboptimal, but reverse order is better here
dayString := v
@ -92,10 +88,10 @@ func GetDays(w http.ResponseWriter, r *http.Request) {
if v == time.Now().Format(time.DateOnly) {
dayString = "Today"
}
daysFormatted = append(daysFormatted, ListEntry{Name: dayString, Link: v})
daysFormatted = append(daysFormatted, Entry{Title: dayString, Link: "day/" + v})
}
files := []string{"./pages/base.html", "./pages/days.html"}
files := []string{"./pages/base.html", "./pages/list.html"}
ts, err := template.ParseFiles(files...)
if err != nil {
slog.Error("Error parsing template files", "error", err)
@ -103,7 +99,7 @@ func GetDays(w http.ResponseWriter, r *http.Request) {
return
}
err = ts.ExecuteTemplate(w, "base", List{Title: "Previous days", Entries: daysFormatted})
err = ts.ExecuteTemplate(w, "base", EntryList{Title: "Previous days", Entries: daysFormatted})
if err != nil {
slog.Error("Error executing template", "error", err)
InternalError(w, r)
@ -130,7 +126,7 @@ func GetDay(w http.ResponseWriter, r *http.Request) {
return
}
files := []string{"./pages/base.html", "./pages/day.html"}
files := []string{"./pages/base.html", "./pages/entry.html"}
ts, err := template.ParseFiles(files...)
if err != nil {
InternalError(w, r)
@ -142,7 +138,7 @@ func GetDay(w http.ResponseWriter, r *http.Request) {
dayString = t.Format("02 Jan 2006")
}
err = ts.ExecuteTemplate(w, "base", DayData{Day: string(day), Date: dayString})
err = ts.ExecuteTemplate(w, "base", Entry{Content: string(day), Title: dayString})
if err != nil {
InternalError(w, r)
return