feat: template for all room participants
This commit is contained in:
parent
f8db7c14c8
commit
384afa0e00
|
@ -31,6 +31,42 @@ var brickColors = map[rooms.HandGesture]template.CSS{
|
||||||
rooms.ChangeTopic: "--change-topic-color",
|
rooms.ChangeTopic: "--change-topic-color",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func personsFromRoom(room rooms.Room) []personData {
|
||||||
|
// TODO start from the 'logged in person'
|
||||||
|
result := make([]personData, 0, len(room.Paricipants))
|
||||||
|
for _, pId := range room.Paricipants {
|
||||||
|
result = append(result, personDataFromRoom(room, pId))
|
||||||
|
}
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|
||||||
|
func personDataFromRoom(room rooms.Room, pId rooms.PersonId) personData {
|
||||||
|
person, exists := room.AllKnownPeople[pId]
|
||||||
|
if !exists || !slices.Contains(room.Paricipants, pId) {
|
||||||
|
return personData{}
|
||||||
|
}
|
||||||
|
|
||||||
|
hand, handExists := room.ParticipantHands[pId]
|
||||||
|
var mark rooms.HandGesture
|
||||||
|
var markExists bool
|
||||||
|
for gesture := rooms.ChangeTopic; gesture <= rooms.Meta; gesture++ {
|
||||||
|
if room.Marks[gesture] == pId {
|
||||||
|
markExists = true
|
||||||
|
mark = gesture
|
||||||
|
}
|
||||||
|
}
|
||||||
|
isSpeaker := room.CurrentSpeaker == pId
|
||||||
|
|
||||||
|
return personData{
|
||||||
|
Name: person.Name,
|
||||||
|
IsSpeaker: isSpeaker,
|
||||||
|
IsRaised: handExists,
|
||||||
|
Raised: hand,
|
||||||
|
IsMark: markExists,
|
||||||
|
Mark: mark,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func bricksForPerson(pData personData) []brickState {
|
func bricksForPerson(pData personData) []brickState {
|
||||||
var result = make([]brickState, 5)
|
var result = make([]brickState, 5)
|
||||||
for gesture := rooms.ChangeTopic; gesture <= rooms.Meta; gesture++ {
|
for gesture := rooms.ChangeTopic; gesture <= rooms.Meta; gesture++ {
|
||||||
|
@ -75,11 +111,46 @@ func roomTemplatesPreview(
|
||||||
Mark: rooms.ProbingQ,
|
Mark: rooms.ProbingQ,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var person1 = rooms.Person{
|
||||||
|
Id: rooms.PersonId(100),
|
||||||
|
Name: "test person 1",
|
||||||
|
}
|
||||||
|
var person2 = rooms.Person{
|
||||||
|
Id: rooms.PersonId(200),
|
||||||
|
Name: "test person 2",
|
||||||
|
}
|
||||||
|
var person3 = rooms.Person{
|
||||||
|
Id: rooms.PersonId(300),
|
||||||
|
Name: "test person 3",
|
||||||
|
}
|
||||||
|
aRoom := rooms.Room{
|
||||||
|
Name: "test",
|
||||||
|
CurrentSpeaker: person3.Id,
|
||||||
|
AllKnownPeople: map[rooms.PersonId]rooms.Person{
|
||||||
|
person1.Id: person1,
|
||||||
|
person2.Id: person2,
|
||||||
|
person3.Id: person3,
|
||||||
|
},
|
||||||
|
Paricipants: []rooms.PersonId{
|
||||||
|
person1.Id,
|
||||||
|
person2.Id,
|
||||||
|
person3.Id,
|
||||||
|
},
|
||||||
|
ParticipantHands: map[rooms.PersonId]rooms.HandGesture{
|
||||||
|
person3.Id: rooms.ClarifyingQ,
|
||||||
|
person2.Id: rooms.Meta,
|
||||||
|
},
|
||||||
|
Marks: map[rooms.HandGesture]rooms.PersonId{
|
||||||
|
rooms.Expand: person1.Id,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
contentData := struct {
|
contentData := struct {
|
||||||
DefaultColor template.CSS
|
DefaultColor template.CSS
|
||||||
Bricks []SingleBrickData
|
Bricks []SingleBrickData
|
||||||
ABrick brickState
|
ABrick brickState
|
||||||
TestPerson personData
|
TestPerson personData
|
||||||
|
ARoom rooms.Room
|
||||||
}{
|
}{
|
||||||
DefaultColor: "--expand-color",
|
DefaultColor: "--expand-color",
|
||||||
ABrick: brickState{
|
ABrick: brickState{
|
||||||
|
@ -109,6 +180,7 @@ func roomTemplatesPreview(
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
TestPerson: testPersonData,
|
TestPerson: testPersonData,
|
||||||
|
ARoom: aRoom,
|
||||||
}
|
}
|
||||||
|
|
||||||
pageData := pageData{
|
pageData := pageData{
|
||||||
|
@ -119,6 +191,7 @@ func roomTemplatesPreview(
|
||||||
baseFile := "templates/base.gohtml"
|
baseFile := "templates/base.gohtml"
|
||||||
tmpl := template.Must(template.New("").Funcs(template.FuncMap{
|
tmpl := template.Must(template.New("").Funcs(template.FuncMap{
|
||||||
"bricksForPerson": bricksForPerson,
|
"bricksForPerson": bricksForPerson,
|
||||||
|
"personsFromRoom": personsFromRoom,
|
||||||
}).ParseFS(templateFs, baseFile, "templates/tableTemplates.gohtml"))
|
}).ParseFS(templateFs, baseFile, "templates/tableTemplates.gohtml"))
|
||||||
|
|
||||||
err := tmpl.ExecuteTemplate(w, "full-page", pageData)
|
err := tmpl.ExecuteTemplate(w, "full-page", pageData)
|
||||||
|
|
|
@ -82,16 +82,29 @@
|
||||||
<div class="border p-3">
|
<div class="border p-3">
|
||||||
{{ block "personBlocks" .TestPerson }}
|
{{ block "personBlocks" .TestPerson }}
|
||||||
|
|
||||||
{{ range (bricksForPerson .) }}
|
<div>
|
||||||
{{ template "brick" . }}
|
{{ range (bricksForPerson .) }}
|
||||||
{{ end }}
|
{{ template "brick" . }}
|
||||||
<p>{{ .Name }}</p>
|
{{ end }}
|
||||||
|
<p>{{ .Name }}</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<h2>And now i'll want to get all persons for a room</h2>
|
<h2>And now i'll want to get all persons for a room</h2>
|
||||||
|
<div class="grid place-content-center">
|
||||||
|
{{ block "roomPeople" .ARoom }}
|
||||||
|
<div
|
||||||
|
class="flex flex-row"
|
||||||
|
>
|
||||||
|
{{ range (personsFromRoom .) }}
|
||||||
|
{{ template "personBlocks" . }}
|
||||||
|
{{ end }}
|
||||||
|
</div>
|
||||||
|
{{end}}
|
||||||
|
</div>
|
||||||
|
|
||||||
{{end}}
|
{{end}}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue