feat: tepmlate for all person bricks
and separate page for temporary template viewing
This commit is contained in:
parent
4764300d08
commit
9f4fe20979
|
@ -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)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -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)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -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
|
||||||
style="--brick-color: var({{ .ColorClass }})"
|
class="border-2 p-3 flex flex-row gap-x-3"
|
||||||
>
|
style="--brick-color: var({{ .ColorClass }})"
|
||||||
{{ template "inactive-brick" . }}
|
>
|
||||||
{{ template "raised-brick" . }}
|
{{ template "inactiveBrick" .ColorClass }} {{ template "raisedBrick"
|
||||||
{{ template "speaker-brick" . }}
|
.ColorClass }} {{ template "speakerBrick" .ColorClass }} {{ template
|
||||||
{{ template "mark-brick" . }}
|
"markBrick" .ColorClass }}
|
||||||
</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}}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue