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

knowledgepixels / nanodash / 22760940566

06 Mar 2026 11:11AM UTC coverage: 15.877% (+0.009%) from 15.868%
22760940566

push

github

web-flow
Merge pull request #379 from knowledgepixels/222-profile-logo

Users can set a profile picture

705 of 5393 branches covered (13.07%)

Branch coverage included in aggregate %.

1741 of 10013 relevant lines covered (17.39%)

2.37 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/UserListPage.java
1
package com.knowledgepixels.nanodash.page;
2

3
import com.knowledgepixels.nanodash.QueryApiAccess;
4
import com.knowledgepixels.nanodash.Utils;
5
import com.knowledgepixels.nanodash.component.ItemListElement;
6
import com.knowledgepixels.nanodash.component.ItemListPanel;
7
import com.knowledgepixels.nanodash.component.TitleBar;
8
import com.knowledgepixels.nanodash.domain.IndividualAgent;
9
import com.knowledgepixels.nanodash.domain.User;
10
import org.apache.wicket.markup.html.link.ExternalLink;
11
import org.apache.wicket.request.mapper.parameter.PageParameters;
12
import org.eclipse.rdf4j.model.IRI;
13
import org.nanopub.extra.services.ApiResponseEntry;
14
import org.nanopub.extra.services.QueryRef;
15

16
import java.util.ArrayList;
17
import java.util.List;
18
import java.util.stream.Collectors;
19

20
/**
21
 * Page that lists all users and groups.
22
 */
23
public class UserListPage extends NanodashPage {
24

25
    /**
26
     * The mount path for this page.
27
     */
28
    public static final String MOUNT_PATH = "/userlist";
29

30
    /**
31
     * {@inheritDoc}
32
     */
33
    @Override
34
    public String getMountPath() {
35
        return MOUNT_PATH;
×
36
    }
37

38
    /**
39
     * Constructor for the user list page.
40
     *
41
     * @param parameters the page parameters
42
     */
43
    public UserListPage(final PageParameters parameters) {
44
        super(parameters);
×
45

46
        add(new TitleBar("titlebar", this, "users"));
×
47

48
//                final List<Group> groupList = new ArrayList<Group>(Group.getGroups());
49
//                add(new DataView<Group>("groups", new ListDataProvider<Group>(groupList)) {
50
//
51
//                        @Override
52
//                        protected void populateItem(Item<Group> item) {
53
//                                Group g = item.getModelObject();
54
//                                PageParameters params = new PageParameters();
55
//                                params.add("id", g.getIri());
56
//                                BookmarkablePageLink<Void> l = new BookmarkablePageLink<Void>("grouplink", GroupPage.class, params);
57
//                                l.add(new Label("linktext", g.getName()));
58
//                                item.add(l);
59
//                        }
60
//
61
//                });
62

63
        add(new ItemListPanel<IRI>(
×
64
                "topcreators",
65
                "Most Active Nanopublishers Last Month",
66
                new QueryRef(QueryApiAccess.GET_TOP_CREATORS_LAST30D),
67
                (apiResponse) -> {
68
                    List<IRI> users = new ArrayList<>();
×
69
                    for (ApiResponseEntry e : apiResponse.getData()) {
×
70
                        users.add(Utils.vf.createIRI(e.get("userid")));
×
71
                    }
×
72
                    return users;
×
73
                },
74
                (userIri) -> new ItemListElement("item", UserPage.class, new PageParameters().set("id", userIri), User.getShortDisplayName(userIri))
×
75
        ));
76

77
        add(new ItemListPanel<IRI>(
×
78
                "latestusers",
79
                "Latest New Users",
80
                new QueryRef(QueryApiAccess.GET_LATEST_USERS),
81
                (apiResponse) -> {
82
                    List<IRI> users = new ArrayList<>();
×
83
                    for (ApiResponseEntry e : apiResponse.getData()) {
×
84
                        users.add(Utils.vf.createIRI(e.get("user")));
×
85
                    }
×
86
                    return users;
×
87
                },
88
                (userIri) -> new ItemListElement("item", UserPage.class, new PageParameters().set("id", userIri), User.getShortDisplayName(userIri)),
×
89
                User::getShortDisplayName
90
        ));
91

92
        add(new ItemListPanel<IRI>(
×
93
                "approved-human-users",
94
                "Human Users",
95
                User.getUsers(true).stream().filter(iri -> !IndividualAgent.isSoftware(iri)).collect(Collectors.toList()),
×
96
                (userIri) -> new ItemListElement("item", UserPage.class, new PageParameters().set("id", userIri), User.getShortDisplayName(userIri)),
×
97
                User::getShortDisplayName
98
        ));
99

100
        add(new ItemListPanel<IRI>(
×
101
                "approved-software-agents",
102
                "Software Agents",
103
                User.getUsers(true).stream().filter(IndividualAgent::isSoftware).collect(Collectors.toList()),
×
104
                (userIri) -> new ItemListElement("item", UserPage.class, new PageParameters().set("id", userIri), User.getShortDisplayName(userIri)),
×
105
                User::getShortDisplayName
106
        ));
107

108
        add(new ItemListPanel<IRI>(
×
109
                "other-users",
110
                "Non-Approved Users",
111
                User.getUsers(false),
×
112
                (userIri) -> new ItemListElement("item", UserPage.class, new PageParameters().set("id", userIri), User.getShortDisplayName(userIri)),
×
113
                User::getShortDisplayName
114
        ));
115

116
        add(new ExternalLink("approve", PublishPage.MOUNT_PATH + "?template=http://purl.org/np/RA6TVVSnZChEwyxjvFDNAujk1i8sSPnQx60ZQjldtiDkw&template-version=latest", "approve somebody else"));
×
117
        //add(new ExternalLink("newgroup", PublishPage.MOUNT_PATH + "?template=http://purl.org/np/RAJz6w5cvlsFGkCDtWOUXt2VwEQ3tVGtPdy3atPj_DUhk&template-version=latest", "new group"));
118
    }
×
119

120
    /**
121
     * {@inheritDoc}
122
     */
123
    @Override
124
    protected boolean hasAutoRefreshEnabled() {
125
        return true;
×
126
    }
127

128
}
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