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

knowledgepixels / nanodash / 19368829457

14 Nov 2025 03:12PM UTC coverage: 14.107% (+0.4%) from 13.676%
19368829457

push

github

tkuhn
feat(SpaceUserList): Show source nanopubs for Space memberships

535 of 4786 branches covered (11.18%)

Branch coverage included in aggregate %.

1385 of 8824 relevant lines covered (15.7%)

0.7 hits per line

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

0.0
src/main/java/com/knowledgepixels/nanodash/component/SpaceUserList.java
1
package com.knowledgepixels.nanodash.component;
2

3
import com.knowledgepixels.nanodash.Space;
4
import com.knowledgepixels.nanodash.SpaceMemberRole;
5
import com.knowledgepixels.nanodash.User;
6
import com.knowledgepixels.nanodash.Utils;
7
import com.knowledgepixels.nanodash.page.PublishPage;
8
import com.knowledgepixels.nanodash.page.UserPage;
9
import org.apache.commons.lang3.tuple.Pair;
10
import org.apache.wicket.markup.html.panel.Panel;
11
import org.apache.wicket.markup.repeater.Item;
12
import org.apache.wicket.markup.repeater.data.DataView;
13
import org.apache.wicket.markup.repeater.data.ListDataProvider;
14
import org.apache.wicket.request.mapper.parameter.PageParameters;
15
import org.eclipse.rdf4j.model.IRI;
16

17
import java.util.ArrayList;
18
import java.util.List;
19

20
public class SpaceUserList extends Panel {
21

22
    public SpaceUserList(String markupId, Space space) {
23
        super(markupId);
×
24

25
        List<Pair<SpaceMemberRole, List<Pair<IRI,String>>>> userLists = new ArrayList<>();
×
26
        for (SpaceMemberRole r : space.getRoles()) {
×
27
            // list of pairs of userId + nanopubId:
28
            List<Pair<IRI,String>> userList = new ArrayList<>();
×
29
            for (IRI userId : space.getUsers()) {
×
30
                for (Pair<SpaceMemberRole,String> p : space.getMemberRoles(userId)) {
×
31
                    if (p.getLeft().equals(r)) {
×
32
                        userList.add(Pair.of(userId, p.getRight()));
×
33
                        break;
×
34
                    }
35
                }
×
36
            }
×
37
            userLists.add(Pair.of(r, userList));
×
38
        }
×
39

40
        add(new DataView<Pair<SpaceMemberRole, List<Pair<IRI,String>>>>("user-lists", new ListDataProvider<>(userLists)) {
×
41
            @Override
42
            protected void populateItem(Item<Pair<SpaceMemberRole, List<Pair<IRI,String>>>> item) {
43
                SpaceMemberRole role = item.getModelObject().getLeft();
×
44
                ItemListPanel<Pair<IRI,String>> panel = new ItemListPanel<>(
×
45
                        "user-list",
46
                        role.getTitle(),
×
47
                        item.getModelObject().getRight(),
×
48
                        // FIXME add the source nanopublication
49
                        m -> new ItemListElement("item", UserPage.class, new PageParameters().add("id", m), User.getShortDisplayName(m.getLeft()), null, Utils.getAsNanopub(m.getRight()))).setSpace(space);
×
50
                if (role.getRoleAssignmentTemplate() != null) {
×
51
                    if (!role.isAdminRole() || SpaceMemberRole.isCurrentUserAdmin(space)) {
×
52
                        panel.addButton("+", PublishPage.class, new PageParameters()
×
53
                                .set("template", role.getRoleAssignmentTemplate().getId())
×
54
                                .set("param_space", space.getId())
×
55
                                .set("refresh-upon-publish", space.getId())
×
56
                        );
57
                    }
58
                }
59
                item.add(panel);
×
60
            }
×
61
        });
62
    }
×
63

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