view_config_page.gno
1.63 Kb · 52 lines
1package basedao
2
3import (
4 "gno.land/p/nt/ufmt/v0"
5 "gno.land/p/samcrew/daokit"
6)
7
8func (d *DAOPrivate) ConfigPageView() string {
9 return d.ConfigHeaderView() +
10 d.ConfigRolesView() +
11 d.ConfigResourcesView()
12}
13
14func (d *DAOPrivate) ConfigHeaderView() string {
15 name := d.GetProfileString(d.Realm.Address(), "DisplayName", "DAO")
16 s := ""
17 s += ufmt.Sprintf("# %s - Config ⚙️\n\n", name)
18 s += ufmt.Sprintf("\n--------------------------------\n")
19 return s
20}
21
22func (d *DAOPrivate) ConfigRolesView() string {
23 roles := d.Members.GetRoles()
24 s := ""
25 s += ufmt.Sprintf("## Roles 🎭\n\n")
26 s += ufmt.Sprintf("| **Color** | **Name** | **Description** |\n")
27 s += ufmt.Sprintf("|-----------|----------|-----------------|\n")
28 for _, role := range roles {
29 info := d.Members.RoleInfo(role)
30 s += ufmt.Sprintf("| %s %s | %s | %s |\n", info.Color, d.RoleColoredChip(role), d.RenderRoleLink(role), info.Description)
31 }
32 s += ufmt.Sprintf("\n--------------------------------\n")
33 return s
34}
35
36func (d *DAOPrivate) ConfigResourcesView() string {
37 s := ""
38 s += ufmt.Sprintf("## Resources 📦\n\n")
39 i := 1
40 d.Core.Resources.Tree.Iterate("", "", func(key string, value interface{}) bool {
41 resource := value.(*daokit.Resource)
42 s += ufmt.Sprintf("- **Resource #%d: %s**\n\n", i, key)
43 // TODO: add doc to handler and print here
44 s += ufmt.Sprintf(" - **Name:** %s\n", resource.DisplayName)
45 s += ufmt.Sprintf(" - **Description:** %s\n", resource.Description)
46 s += ufmt.Sprintf(" - **Condition:** %s\n\n", d.RenderWithRolesLinks(resource.Condition.Render()))
47 i += 1
48 return false
49 })
50 s += ufmt.Sprintf("\n--------------------------------\n")
51 return s
52}