Make checkboxes for variable dates
This commit is contained in:
parent
1bfbd566fd
commit
e964123131
@ -84,23 +84,27 @@ func disableIf(cond bool, input hm.Term) hm.Term {
|
||||
}
|
||||
|
||||
type voteState struct {
|
||||
name string
|
||||
name string
|
||||
earliestDate, latestDate time.Time
|
||||
}
|
||||
|
||||
func voteForm(disabled bool, st voteState) hm.Term {
|
||||
var rows = hm.Terms{
|
||||
e.Thead()(
|
||||
e.Th()(),
|
||||
e.Th()(hm.Text("May 3")),
|
||||
e.Th()(hm.Text("May 4")),
|
||||
e.Th()(hm.Text("May 5")),
|
||||
),
|
||||
var dates []time.Time
|
||||
for curr := st.earliestDate; curr.Before(st.latestDate.Add(time.Hour)); curr = curr.AddDate(0, 0, 1) {
|
||||
dates = append(dates, curr)
|
||||
}
|
||||
for slot := 0; slot < 24; slot++ {
|
||||
|
||||
var ths = hm.Terms{e.Th()()}
|
||||
for _, date := range dates {
|
||||
ths = append(ths, e.Th()(hm.Text(date.Format("Jan 2"))))
|
||||
}
|
||||
|
||||
var rows = hm.Terms{e.Thead()(ths)}
|
||||
for hour := 0; hour < 24; hour++ {
|
||||
var row = hm.Terms{
|
||||
e.Td()(hm.Text(timeLabels[slot])),
|
||||
e.Td()(hm.Text(timeLabels[hour])),
|
||||
}
|
||||
for day := 0; day < 3; day++ {
|
||||
for day := 0; day < len(dates); day++ {
|
||||
row = append(row, e.Td()(disableIf(disabled, e.Input(a.Type("checkbox")))))
|
||||
}
|
||||
rows = append(rows, e.Tr()(row))
|
||||
@ -119,16 +123,26 @@ func voteForm(disabled bool, st voteState) hm.Term {
|
||||
|
||||
func (h *handler) handleVote(w http.ResponseWriter, r *http.Request) {
|
||||
// TODO use actual data
|
||||
state := voteState{
|
||||
name: "Suzie Q",
|
||||
earliestDate: time.Date(2006, time.May, 3, 0, 0, 0, 0, time.UTC),
|
||||
latestDate: time.Date(2006, time.May, 8, 0, 0, 0, 0, time.UTC),
|
||||
}
|
||||
body := hm.Terms{
|
||||
e.H2()(hm.Text("Billy's birthday party")),
|
||||
e.P()(hm.Text("At Billy's house. Bring presents. Eat cake.")),
|
||||
voteForm(false, voteState{}),
|
||||
voteForm(false, state),
|
||||
}
|
||||
_ = h.writePage(w, body)
|
||||
}
|
||||
|
||||
func (h *handler) handleDoVote(w http.ResponseWriter, r *http.Request) {
|
||||
// TODO use actual data
|
||||
state := voteState{
|
||||
name: "Suzie Q",
|
||||
earliestDate: time.Date(2006, time.May, 3, 0, 0, 0, 0, time.UTC),
|
||||
latestDate: time.Date(2006, time.May, 8, 0, 0, 0, 0, time.UTC),
|
||||
}
|
||||
body := hm.Terms{
|
||||
e.H2()(hm.Text("Billy's birthday party")),
|
||||
e.P()(hm.Text("At Billy's house. Bring presents. Eat cake.")),
|
||||
@ -138,7 +152,7 @@ func (h *handler) handleDoVote(w http.ResponseWriter, r *http.Request) {
|
||||
e.A(a.Href("#"))(hm.Text("this link")),
|
||||
hm.Text("."),
|
||||
),
|
||||
voteForm(true, voteState{name: "Suzie Q"}),
|
||||
voteForm(true, state),
|
||||
}
|
||||
_ = h.writePage(w, body)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user