131 lines
2.9 KiB
Go
131 lines
2.9 KiB
Go
package routes
|
|
|
|
import (
|
|
"embed"
|
|
"html/template"
|
|
"log"
|
|
"net/http"
|
|
"slices"
|
|
|
|
"sunshine.industries/some-automoderation/rooms"
|
|
)
|
|
|
|
type brickState struct {
|
|
ColorClass template.CSS
|
|
TemplateType string
|
|
}
|
|
type personData struct {
|
|
Name string
|
|
IsSpeaker bool
|
|
IsMark bool
|
|
IsRaised bool
|
|
Raised rooms.HandGesture
|
|
Mark rooms.HandGesture
|
|
}
|
|
|
|
var brickColors = map[rooms.HandGesture]template.CSS{
|
|
rooms.Meta: "--meta-color",
|
|
rooms.ClarifyingQ: "--clarifying-q-color",
|
|
rooms.Expand: "--expand-color",
|
|
rooms.ProbingQ: "--probing-q-color",
|
|
rooms.ChangeTopic: "--change-topic-color",
|
|
}
|
|
|
|
func bricksForPerson(pData personData) []brickState {
|
|
var result = make([]brickState, 5)
|
|
for gesture := rooms.ChangeTopic; gesture <= rooms.Meta; gesture++ {
|
|
// for index := rooms.Meta; index >= rooms.ChangeTopic; index-- {
|
|
// log.Printf(">>>>> iteraging for %d", gesture)
|
|
// this results in iteration 4,3,2,1,0,255 wow
|
|
templateType := "inactiveBrick"
|
|
switch {
|
|
case pData.IsMark && gesture == pData.Mark:
|
|
templateType = "markBrick"
|
|
case pData.IsSpeaker && gesture == pData.Raised:
|
|
templateType = "speakerBrick"
|
|
case pData.IsRaised && gesture == pData.Raised:
|
|
templateType = "raisedBrick"
|
|
}
|
|
|
|
result[gesture] = brickState{
|
|
ColorClass: brickColors[gesture],
|
|
TemplateType: templateType,
|
|
}
|
|
}
|
|
|
|
slices.Reverse(result)
|
|
return result
|
|
}
|
|
|
|
func roomTemplatesPreview(
|
|
templateFs *embed.FS,
|
|
) http.HandlerFunc {
|
|
return func(w http.ResponseWriter, r *http.Request) {
|
|
|
|
type SingleBrickData struct {
|
|
ColorClass template.CSS
|
|
Name string
|
|
}
|
|
|
|
testPersonData := personData{
|
|
Name: "John Doe",
|
|
IsRaised: true,
|
|
Raised: rooms.Expand,
|
|
IsMark: true,
|
|
Mark: rooms.ProbingQ,
|
|
}
|
|
|
|
contentData := struct {
|
|
DefaultColor template.CSS
|
|
Bricks []SingleBrickData
|
|
ABrick brickState
|
|
TestPerson personData
|
|
}{
|
|
DefaultColor: "--expand-color",
|
|
ABrick: brickState{
|
|
ColorClass: "--expand-color",
|
|
TemplateType: "raisedBrick",
|
|
},
|
|
Bricks: []SingleBrickData{
|
|
{
|
|
Name: "expand",
|
|
ColorClass: brickColors[rooms.Expand],
|
|
},
|
|
{
|
|
Name: "probing question",
|
|
ColorClass: brickColors[rooms.ProbingQ],
|
|
},
|
|
{
|
|
Name: "change topic",
|
|
ColorClass: brickColors[rooms.ChangeTopic],
|
|
},
|
|
{
|
|
Name: "clarifying question",
|
|
ColorClass: brickColors[rooms.ClarifyingQ],
|
|
},
|
|
{
|
|
Name: "meta",
|
|
ColorClass: brickColors[rooms.Meta],
|
|
},
|
|
},
|
|
TestPerson: testPersonData,
|
|
}
|
|
|
|
pageData := pageData{
|
|
Header: headerData{Title: "look at the room templates"},
|
|
Content: contentData,
|
|
}
|
|
|
|
baseFile := "templates/base.gohtml"
|
|
tmpl := template.Must(template.New("").Funcs(template.FuncMap{
|
|
"bricksForPerson": bricksForPerson,
|
|
}).ParseFS(templateFs, baseFile, "templates/tableTemplates.gohtml"))
|
|
|
|
err := tmpl.ExecuteTemplate(w, "full-page", pageData)
|
|
if err != nil {
|
|
log.Printf("yoyo, error %s", err)
|
|
}
|
|
|
|
}
|
|
}
|