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

knowledgepixels / nanodash / 21590827488

02 Feb 2026 12:51PM UTC coverage: 13.774% (-0.2%) from 13.94%
21590827488

push

github

tkuhn
feat: Add filter fields to views to User and Query pages

545 of 5252 branches covered (10.38%)

Branch coverage included in aggregate %.

1492 of 9537 relevant lines covered (15.64%)

2.07 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 java.util.ArrayList;
4
import java.util.List;
5
import java.util.stream.Collectors;
6

7
import org.apache.wicket.markup.html.link.ExternalLink;
8
import org.apache.wicket.request.mapper.parameter.PageParameters;
9
import org.eclipse.rdf4j.model.IRI;
10
import org.nanopub.extra.services.ApiResponseEntry;
11
import org.nanopub.extra.services.QueryRef;
12

13
import com.knowledgepixels.nanodash.User;
14
import com.knowledgepixels.nanodash.Utils;
15
import com.knowledgepixels.nanodash.component.ItemListElement;
16
import com.knowledgepixels.nanodash.component.ItemListPanel;
17
import com.knowledgepixels.nanodash.component.TitleBar;
18

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

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

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

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

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

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

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

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

95
        add(new ItemListPanel<IRI>(
×
96
                "approved-human-users",
97
                "Approved Human Users",
98
                User.getUsers(true).stream().filter(iri -> !User.isSoftware(iri)).collect(Collectors.toList()),
×
99
                (userIri) -> {
100
                    return new ItemListElement("item", UserPage.class, new PageParameters().set("id", userIri), User.getShortDisplayName(userIri));
×
101
                },
102
                User::getShortDisplayName
103
            ));
104

105
        add(new ItemListPanel<IRI>(
×
106
                "approved-software-agents",
107
                "Approved Software Agents",
108
                User.getUsers(true).stream().filter(User::isSoftware).collect(Collectors.toList()),
×
109
                (userIri) -> {
110
                    return new ItemListElement("item", UserPage.class, new PageParameters().set("id", userIri), User.getShortDisplayName(userIri));
×
111
                },
112
                User::getShortDisplayName
113
            ));
114

115
        add(new ItemListPanel<IRI>(
×
116
                "other-users",
117
                "Non-Approved Users",
118
                User.getUsers(false),
×
119
                (userIri) -> {
120
                    return new ItemListElement("item", UserPage.class, new PageParameters().set("id", userIri), User.getShortDisplayName(userIri));
×
121
                },
122
                User::getShortDisplayName
123
            ));
124

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

129
    /**
130
     * {@inheritDoc}
131
     */
132
    @Override
133
    protected boolean hasAutoRefreshEnabled() {
134
        return true;
×
135
    }
136

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