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

knowledgepixels / nanodash / 22679314407

04 Mar 2026 04:42PM UTC coverage: 15.81% (-0.1%) from 15.951%
22679314407

Pull #372

github

web-flow
Merge 62604b6f9 into bf50833e3
Pull Request #372: Add component for showing full URIs as plain links + ExploreDisplayMenu

701 of 5379 branches covered (13.03%)

Branch coverage included in aggregate %.

1727 of 9978 relevant lines covered (17.31%)

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/component/QueryResultNanopubSet.java
1
package com.knowledgepixels.nanodash.component;
2

3
import com.knowledgepixels.nanodash.NanodashSession;
4
import com.knowledgepixels.nanodash.QueryResult;
5
import com.knowledgepixels.nanodash.ViewDisplay;
6
import com.knowledgepixels.nanodash.component.menu.ViewDisplayMenu;
7
import org.apache.wicket.ajax.AjaxRequestTarget;
8
import org.apache.wicket.ajax.markup.html.AjaxLink;
9
import org.apache.wicket.behavior.AttributeAppender;
10
import org.apache.wicket.markup.html.WebMarkupContainer;
11
import org.apache.wicket.markup.html.basic.Label;
12
import org.nanopub.extra.services.ApiResponse;
13
import org.nanopub.extra.services.QueryRef;
14
import org.slf4j.Logger;
15
import org.slf4j.LoggerFactory;
16

17
/**
18
 * Component for displaying query results in a list format.
19
 */
20
public class QueryResultNanopubSet extends QueryResult {
21

22
    private static final Logger logger = LoggerFactory.getLogger(QueryResultNanopubSet.class);
×
23
    private final WebMarkupContainer viewSelector;
24

25
    /**
26
     * Constructor for QueryResultList.
27
     *
28
     * @param markupId    the markup ID
29
     * @param queryRef    the query reference
30
     * @param response    the API response
31
     * @param viewDisplay the view display
32
     */
33
    QueryResultNanopubSet(String markupId, QueryRef queryRef, ApiResponse response, ViewDisplay viewDisplay) {
34
        super(markupId, queryRef, response, viewDisplay);
×
35

36
        logger.info("Rendering {} with '{}' mode.", this.getClass().getName(), NanodashSession.get().getNanopubResultsViewMode().getValue());
×
37

38
        viewSelector = new WebMarkupContainer("viewSelector");
×
39
        viewSelector.setOutputMarkupId(true);
×
40

41
        viewSelector.add(new AjaxLink<>("listEnabler") {
×
42
            @Override
43
            public void onClick(AjaxRequestTarget target) {
44
                NanodashSession.get().setNanopubResultsViewMode(NanopubResults.ViewMode.LIST);
×
45
                logger.info("ListEnabler -- Switched to '{}' mode", NanodashSession.get().getNanopubResultsViewMode().getValue());
×
46
            }
×
47
        });
48

49
        viewSelector.add(new AjaxLink<>("gridEnabler") {
×
50
            @Override
51
            public void onClick(AjaxRequestTarget target) {
52
                NanodashSession.get().setNanopubResultsViewMode(NanopubResults.ViewMode.GRID);
×
53
                logger.info("GridEnabler -- Switched to '{}' mode", NanodashSession.get().getNanopubResultsViewMode().getValue());
×
54
            }
×
55
        });
56

57
        viewSelector.add(new Label("np"));
×
58
        add(viewSelector);
×
59
        showViewDisplayMenu = false; // handled in populateComponent() inside viewSelector
×
60

61
        String titleLabel = grlcQuery.getLabel();
×
62
        if (viewDisplay.getView().getTitle() != null) {
×
63
            titleLabel = viewDisplay.getView().getTitle();
×
64
        }
65
        add(new Label("title", titleLabel));
×
66
        setOutputMarkupId(true);
×
67
    }
×
68

69
    @Override
70
    protected void populateComponent() {
71
        logger.info("Populating the component with nanopub results.");
×
72
        NanopubResults nanopubResults = NanopubResults.fromApiResponse("nanopubs", response, 10);
×
73
        nanopubResults.add(AttributeAppender.append("class", NanodashSession.get().getNanopubResultsViewMode().getValue()));
×
74
        add(nanopubResults);
×
75

76
        if (viewDisplay.getNanopubId() != null) {
×
77
            viewSelector.addOrReplace(new ViewDisplayMenu("np", viewDisplay, queryRef, pageResource));
×
78
        } else {
79
            viewSelector.addOrReplace(new Label("np").setVisible(false));
×
80
        }
81
    }
×
82

83
    /**
84
     * Sets the visibility of the title.
85
     *
86
     * @param hasTitle true to show the title, false to hide it
87
     */
88
    public void setTitleVisible(boolean hasTitle) {
89
        this.get("title").setVisible(hasTitle);
×
90
        if (!hasTitle) {
×
91
            viewSelector.add(AttributeAppender.append("class", " no-title"));
×
92
        }
93
    }
×
94

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

© 2026 Coveralls, Inc