diff --git a/routes/room_page.go b/routes/room_page.go index 252ae72..bf6b9f9 100644 --- a/routes/room_page.go +++ b/routes/room_page.go @@ -237,54 +237,3 @@ func roomPageRoute( } } -func roomTemplatesPreview( - templateFs *embed.FS, -) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - - type BrickData struct { - ColorClass template.CSS - Name string - } - - contentData := struct { - Bricks []BrickData - }{ - Bricks: []BrickData{ - { - Name: "expand", - ColorClass: "--expand-color", - }, - { - Name: "probing question", - ColorClass: "--probing-q-color", - }, - { - Name: "change topic", - ColorClass: "--change-topic-color", - }, - { - Name: "clarifying question", - ColorClass: "--clarifying-q-color", - }, - { - Name: "meta", - ColorClass: "--meta-color", - }, - }, - } - - pageData := pageData{ - Header: headerData{Title: "look at the room templates"}, - Content: contentData, - } - - baseFile := "templates/base.gohtml" - tmpl := template.Must(template.ParseFS(templateFs, baseFile, "templates/tableTemplates.gohtml")) - err := tmpl.ExecuteTemplate(w, "full-page", pageData) - if err != nil { - log.Printf("yoyo, error %s", err) - } - - } -} diff --git a/routes/room_page_templates_preview.go b/routes/room_page_templates_preview.go new file mode 100644 index 0000000..35f9355 --- /dev/null +++ b/routes/room_page_templates_preview.go @@ -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) + } + + } +} diff --git a/routes/templates/tableTemplates.gohtml b/routes/templates/tableTemplates.gohtml index 0f62515..03cc301 100644 --- a/routes/templates/tableTemplates.gohtml +++ b/routes/templates/tableTemplates.gohtml @@ -1,58 +1,97 @@ {{define "main-content"}} -Single templates -
+ + +

Single templates

+
inactive:
- {{ block "inactive-brick" . }} + {{ block "inactiveBrick" .DefaultColor }}
{{ end }}
raised:
- {{ block "raised-brick" . }} + {{ block "raisedBrick" .DefaultColor }}
{{ end }}
speaker:
- {{ block "speaker-brick" . }} + {{ block "speakerBrick" .DefaultColor }}
{{ end }}
mark:
- {{ block "mark-brick" . }} + {{ block "markBrick" .DefaultColor }}
X
{{ end }}
-For each type -
+ + +

For each type

+
{{ range .Bricks }}
for {{ .Name }}
-
- {{ template "inactive-brick" . }} - {{ template "raised-brick" . }} - {{ template "speaker-brick" . }} - {{ template "mark-brick" . }} +
+ {{ template "inactiveBrick" .ColorClass }} {{ template "raisedBrick" + .ColorClass }} {{ template "speakerBrick" .ColorClass }} {{ template + "markBrick" .ColorClass }}
{{ end }}
+ + +

Now for BrickData taking parametrized template name

+{{ block "brick" .ABrick }} + +{{ if eq .TemplateType "inactiveBrick" }} +{{ template "inactiveBrick" .ColorClass }} + +{{ else if eq .TemplateType "raisedBrick" }} +{{ template "raisedBrick" .ColorClass }} + +{{ else if eq .TemplateType "speakerBrick" }} +{{ template "speakerBrick" .ColorClass }} + +{{ else if eq .TemplateType "markBrick" }} +{{ template "markBrick" .ColorClass }} +{{ end }} + {{end}} + +

Now for a person

+
+{{ block "personBlocks" .TestPerson }} + +{{ range (bricksForPerson .) }} +{{ template "brick" . }} +{{ end }} +

{{ .Name }}

+ +{{ end }} +
+ + +

And now i'll want to get all persons for a room

+ +{{end}} +