feat: tepmlate for all person bricks

and separate page for temporary template viewing
This commit is contained in:
efim 2023-11-16 03:53:25 +00:00
parent 4764300d08
commit 9f4fe20979
3 changed files with 189 additions and 71 deletions

View File

@ -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)
}
}
}

View 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)
}
}
}

View File

@ -1,58 +1,97 @@
{{define "main-content"}} {{define "main-content"}}
<p2>Single templates</p2>
<section
class="grid grid-cols-2 border-4" <h2>Single templates</h2>
style="--brick-color: var(--expand-color)" <section class="grid grid-cols-2 border-4">
>
<div class="border-2">inactive:</div> <div class="border-2">inactive:</div>
<div class="border-2 p-3"> <div class="border-2 p-3">
{{ block "inactive-brick" . }} {{ block "inactiveBrick" .DefaultColor }}
<div <div
class="h-8 w-20 border-[hsl(var(--brick-color))]/25 border bg-[hsl(var(--brick-color))]/5" class="h-8 w-20 border-[hsl(var(--brick-color))]/25 border bg-[hsl(var(--brick-color))]/5"
style="--brick-color: var({{.}})"
></div> ></div>
{{ end }} {{ end }}
</div> </div>
<div class="border-2">raised:</div> <div class="border-2">raised:</div>
<div class="border-2 p-3"> <div class="border-2 p-3">
{{ block "raised-brick" . }} {{ block "raisedBrick" .DefaultColor }}
<div <div
class="h-8 w-20 border-[hsl(var(--brick-color))] border-2 bg-[hsl(var(--brick-color))]/25" class="h-8 w-20 border-[hsl(var(--brick-color))] border-2 bg-[hsl(var(--brick-color))]/25"
style="--brick-color: var({{.}})"
></div> ></div>
{{ end }} {{ end }}
</div> </div>
<div class="border-2">speaker:</div> <div class="border-2">speaker:</div>
<div class="border-2 p-3"> <div class="border-2 p-3">
{{ block "speaker-brick" . }} {{ block "speakerBrick" .DefaultColor }}
<div <div
class="h-8 w-20 border-[hsl(var(--brick-color))] border-2 bg-[hsl(var(--brick-color))]/50 shadow-[0_0_15px_rgba(0,_0,_0,_0.5)] shadow-[hsl(var(--brick-color))] animate-pulse" class="h-8 w-20 border-[hsl(var(--brick-color))] border-2 bg-[hsl(var(--brick-color))]/50 shadow-[0_0_15px_rgba(0,_0,_0,_0.5)] shadow-[hsl(var(--brick-color))] animate-pulse"
style="--brick-color: var({{.}})"
></div> ></div>
{{ end }} {{ end }}
</div> </div>
<div class="border-2">mark:</div> <div class="border-2">mark:</div>
<div class="border-2 p-3"> <div class="border-2 p-3">
{{ block "mark-brick" . }} {{ block "markBrick" .DefaultColor }}
<div <div
class="h-8 w-20 border-[hsl(var(--brick-color))]/25 border bg-[hsl(var(--brick-color))]/5 grid place-content-center font-bold text-[hsl(var(--brick-color))]/50" class="h-8 w-20 border-[hsl(var(--brick-color))]/25 border bg-[hsl(var(--brick-color))]/5 grid place-content-center font-bold text-[hsl(var(--brick-color))]/50"
style="--brick-color: var({{.}})"
> >
X X
</div> </div>
{{ end }} {{ end }}
</div> </div>
</section> </section>
<p2>For each type</p2>
<section
class="grid grid-cols-2 border-4" <h2>For each type</h2>
> <section class="grid grid-cols-2 border-4">
{{ range .Bricks }} {{ range .Bricks }}
<div class="border-2">for {{ .Name }}</div> <div class="border-2">for {{ .Name }}</div>
<div class="border-2 p-3 flex flex-row gap-x-3" <div
class="border-2 p-3 flex flex-row gap-x-3"
style="--brick-color: var({{ .ColorClass }})" style="--brick-color: var({{ .ColorClass }})"
> >
{{ template "inactive-brick" . }} {{ template "inactiveBrick" .ColorClass }} {{ template "raisedBrick"
{{ template "raised-brick" . }} .ColorClass }} {{ template "speakerBrick" .ColorClass }} {{ template
{{ template "speaker-brick" . }} "markBrick" .ColorClass }}
{{ template "mark-brick" . }}
</div> </div>
{{ end }} {{ end }}
</section> </section>
<h2>Now for BrickData taking parametrized template name</h2>
{{ 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 }}
{{end}}
<h2>Now for a person</h2>
<div class="border p-3">
{{ block "personBlocks" .TestPerson }}
{{ range (bricksForPerson .) }}
{{ template "brick" . }}
{{ end }}
<p>{{ .Name }}</p>
{{ end }}
</div>
<h2>And now i'll want to get all persons for a room</h2>
{{end}}