Search Apps Documentation Source Content File Folder Download Copy Actions Download

view_role_detail_page.gno

1.27 Kb Β· 45 lines
 1package basedao
 2
 3import (
 4	"gno.land/p/demo/svg"
 5	"gno.land/p/moul/md"
 6	"gno.land/p/nt/avl/v0"
 7	"gno.land/p/nt/ufmt/v0"
 8)
 9
10func (d *DAOPrivate) RoleDetailPageView(path string, name string) string {
11	return d.RoleDetailHeaderView() +
12		d.RoleDetailView(path, name)
13}
14
15func (d *DAOPrivate) RoleDetailHeaderView() string {
16	name := d.GetProfileString(d.Realm.Address(), "DisplayName", "DAO")
17	s := ""
18	s += md.H1(ufmt.Sprintf("%s - Role Detail 🎭", name))
19	s += ufmt.Sprintf("\n--------------------------------\n")
20	return s
21}
22
23func (d *DAOPrivate) RoleDetailView(path string, name string) string {
24	info := d.Members.RoleInfo(name)
25	memberCount := d.Members.CountMembersWithRole(name)
26	roleMembers := d.Members.GetMembersWithRole(name)
27	var roleMembersTree = avl.NewTree()
28	for _, member := range roleMembers {
29		roleMembersTree.Set(member, struct{}{})
30	}
31
32	s := ""
33	s += md.H2(ufmt.Sprintf("Name - %s πŸ“œ", info.Name))
34	s += md.H2(ufmt.Sprintf("Color - %s %s", info.Color, d.RoleColoredChip(name, &svg.Canvas{
35		Width:  24,
36		Height: 24,
37	})))
38	s += md.H2("Description πŸ“")
39	s += md.Paragraph(info.Description)
40	s += md.H2(ufmt.Sprintf("Members πŸ‘₯ (%d)", memberCount))
41	s += d.RenderMembersTable(path, roleMembersTree)
42	s += ufmt.Sprintf("\n--------------------------------\n")
43
44	return s
45}