feat: tepmlate for all person bricks
and separate page for temporary template viewing
This commit is contained in:
130
routes/room_page_templates_preview.go
Normal file
130
routes/room_page_templates_preview.go
Normal file
@@ -0,0 +1,130 @@
|
||||
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)
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user