view_members_page.gno
1.04 Kb · 44 lines
1package basedao
2
3import (
4 "gno.land/p/nt/ufmt/v0"
5 "gno.land/p/samcrew/piechart"
6)
7
8func (d *DAOPrivate) MembersPageView(path string) string {
9 memberCount := d.Members.MembersCount()
10 membersNoRoleCount := d.Members.CountMembersWithoutRole()
11 roles := d.Members.GetRoles()
12
13 pieSlices := []piechart.PieSlice{}
14
15 for _, role := range roles {
16 count := d.Members.CountMembersWithRole(role)
17 if count == 0 {
18 continue
19 }
20 roleInfo := d.Members.RoleInfo(role)
21 pieSlices = append(pieSlices, piechart.PieSlice{
22 Value: float64(count),
23 Color: roleInfo.Color,
24 Label: roleInfo.Name,
25 })
26 }
27
28 if membersNoRoleCount > 0 {
29 pieSlices = append(pieSlices, piechart.PieSlice{
30 Value: float64(membersNoRoleCount),
31 Color: "#CDCDCD",
32 Label: "No role assigned",
33 })
34 }
35
36 s := ""
37 s += ufmt.Sprintf("## Members 👥 (%d)\n\n", memberCount)
38 s += d.RenderMembersTable(path, d.Members.Members) + "\n"
39 if len(pieSlices) > 1 {
40 s += piechart.Render(pieSlices, "Roles distribution:")
41 }
42 s += ufmt.Sprintf("\n--------------------------------\n")
43 return s
44}