• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

knowledgepixels / nanodash / 23302971328

19 Mar 2026 03:35PM UTC coverage: 16.327% (+0.08%) from 16.251%
23302971328

push

github

tkuhn
feat: add emojis to space type section titles

Add emoji icons for all 14 space types (Alliance, Consortium, etc.)
shown in section headings on the spaces list page and subspace sections
on individual space pages.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

728 of 5521 branches covered (13.19%)

Branch coverage included in aggregate %.

1865 of 10361 relevant lines covered (18.0%)

2.47 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
src/main/java/com/knowledgepixels/nanodash/page/SpaceListPage.java
1
package com.knowledgepixels.nanodash.page;
2

3
import com.knowledgepixels.nanodash.domain.Project;
4
import com.knowledgepixels.nanodash.QueryApiAccess;
5
import com.knowledgepixels.nanodash.domain.Space;
6
import com.knowledgepixels.nanodash.component.ItemListElement;
7
import com.knowledgepixels.nanodash.component.ItemListPanel;
8
import com.knowledgepixels.nanodash.component.TitleBar;
9
import com.knowledgepixels.nanodash.repository.SpaceRepository;
10
import com.knowledgepixels.nanodash.vocabulary.KPXL_TERMS;
11
import org.apache.wicket.request.mapper.parameter.PageParameters;
12
import org.nanopub.extra.services.QueryRef;
13

14
/**
15
 * A page that lists all available connectors.
16
 */
17
public class SpaceListPage extends NanodashPage {
18

19
    /**
20
     * The mount path for this page.
21
     */
22
    public static final String MOUNT_PATH = "/spaces";
23

24
    /**
25
     * {@inheritDoc}
26
     */
27
    @Override
28
    public String getMountPath() {
29
        return MOUNT_PATH;
×
30
    }
31

32
    /**
33
     * Constructor for the SpaceListPage.
34
     *
35
     * @param parameters the page parameters
36
     */
37
    public SpaceListPage(final PageParameters parameters) {
38
        super(parameters);
×
39

40
        add(new TitleBar("titlebar", this, "connectors"));
×
41

42
        addSpacePanel("Alliance", true);
×
43
        addSpacePanel("Consortium", false);
×
44
        addSpacePanel("Organization", true);
×
45
        addSpacePanel("Taskforce", false);
×
46
        addSpacePanel("Division", true);
×
47
        addSpacePanel("Taskunit", false);
×
48
        addSpacePanel("Group", true);
×
49
        addSpacePanel("Project", false);
×
50
        addSpacePanel("Program", true);
×
51
        addSpacePanel("Initiative", false);
×
52
        addSpacePanel("Outlet", true);
×
53
        addSpacePanel("Campaign", false);
×
54
        addSpacePanel("Community", true);
×
55
        addSpacePanel("Event", false);
×
56

57
        add(new ItemListPanel<Project>(
×
58
                "legacy-projects",
59
                "📁 Legacy Projects",
60
                new QueryRef(QueryApiAccess.GET_PROJECTS),
61
                (apiResponse) -> {
62
                    Project.refresh(apiResponse);
×
63
                    return Project.getProjectList();
×
64
                },
65
                (project) -> {
66
                    return new ItemListElement("item", ProjectPage.class, new PageParameters().set("id", project.getId()), project.getLabel());
×
67
                }
68
        ).setDescription("These legacy project pages will be migrated into the Spaces above:"));
×
69
    }
×
70

71
    private void addSpacePanel(String type, boolean openEnded) {
72
        String typePl = type + "s";
×
73
        typePl = typePl.replaceFirst("ys$", "ies");
×
74

75
        PageParameters newLinkParams = new PageParameters()
×
76
                .set("param_type", KPXL_TERMS.NAMESPACE + type)
×
77
                .set("template-version", "latest")
×
78
                .set("refresh-upon-publish", "spaces")
×
79
                .set("postpub-redirect-url", MOUNT_PATH);
×
80
        if (openEnded) {
×
81
            newLinkParams.set("template", "https://w3id.org/np/RA7dQfmndqKmooQ4PlHyQsAql9i2tg_8GLHf_dqtxsGEQ");
×
82
        } else {
83
            newLinkParams.set("template", "https://w3id.org/np/RAaE7NP9RNIx03AHZxanFMdtUuaTfe50ns5tHhpEVloQ4");
×
84
        }
85

86
        add(new ItemListPanel<Space>(
×
87
                typePl.toLowerCase(),
×
88
                Space.getTypeEmoji(type) + " " + typePl,
×
89
                new QueryRef(QueryApiAccess.GET_SPACES),
90
                (apiResponse) -> {
91
                    SpaceRepository.get().refresh(apiResponse);
×
92
                    return SpaceRepository.get().findByType(KPXL_TERMS.NAMESPACE + type);
×
93
                },
94
                (space) -> {
95
                    return new ItemListElement("item", SpacePage.class, new PageParameters().set("id", space.getId()), space.getLabel());
×
96
                }
97
        ).addButton("+", PublishPage.class, newLinkParams));
×
98
    }
×
99

100
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc