Compare commits

...

4 Commits

3 changed files with 93 additions and 3 deletions

41
main.go
View File

@ -1,3 +1,42 @@
package main
func main() {}
import (
"html/template"
"log"
"net/http"
)
type Person struct {
FirstName string
LastName string
}
type Instructor Person
type Participant struct {
Person
Company string
}
type Briefing struct {
Instructor
Date string
Time string
State string
Location string
Participants []Participant
}
func main() {
mux := http.NewServeMux()
mux.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("static/"))))
mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
template.Must(template.ParseFiles("templates/index.html")).Execute(w, nil)
})
mux.HandleFunc("/add-participant/", func(w http.ResponseWriter, r *http.Request) {
template.Must(template.ParseFiles("templates/index.html", "templates/participant.html")).ExecuteTemplate(w, "participant", nil)
})
log.Fatalln(http.ListenAndServe(":8080", mux))
}

View File

@ -10,10 +10,49 @@
<body>
<h1>Sicherheitsunterweisung</h1>
<form>
<div id="date">
<label for="date-input">Datum</label>
<input type="date" name="date" id="date-input" />
</div>
<div id="time">
<label for="time-input">Uhrzeit</label>
<input type="time" name="time" id="time-input" />
</div>
<div id="state">
<label for="state-input">Stand vom</label>
<input type="date" name="state" id="state-input" />
</div>
<div id="location">
<label for="location-input">Ort</label>
<input type="text" name="location" id="location-input" />
</div>
<div id="participants">
<button type="button" hx-post="/add-participant/" hx-target="#participants" hx-swap="beforeend"
hx-trigger="click">
+
</button>
<div id="participant-{{ .ID }}">
<label for="participant-first-input-{{ .ID }}">Vorname</label>
<input type="text" name="participant-first" id="participant-first-input-{{ .ID }}" />
<label for="participant-last-input-{{ .ID }}">Nachname</label>
<input type="text" name="participant-last" id="participant-last-input-{{ .ID }}" />
<label for="participant-company-input-{{ .ID }}">Firma</label>
<input type="text" name="participant-company" id="participant-company-input-{{ .ID }}" />
</div>
</div>
<button type="submit">Senden</button>
</form>
<script src="/static/js/htmx.min.js" type="text/javascript"></script>
</body>

View File

@ -0,0 +1,12 @@
{{ define "participant" }}
<div id="participant-{{ .ID }}">
<label for="participant-first-input-{{ .ID }}">Vorname</label>
<input type="text" name="participant-first" id="participant-first-input-{{ .ID }}" />
<label for="participant-last-input-{{ .ID }}">Nachname</label>
<input type="text" name="participant-last" id="participant-last-input-{{ .ID }}" />
<label for="participant-company-input-{{ .ID }}">Firma</label>
<input type="text" name="participant-company" id="participant-company-input-{{ .ID }}" />
</div>
{{ end }}