Search Apps Documentation Source Content File Folder Download Copy Actions Download

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}