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

knowledgepixels / nanodash / 22630596072

03 Mar 2026 03:41PM UTC coverage: 15.949% (-0.08%) from 16.03%
22630596072

Pull #369

github

web-flow
Merge 6951bc4cf into 85e0af2dc
Pull Request #369: Replace "^" for view displays with dropdown menu

699 of 5317 branches covered (13.15%)

Branch coverage included in aggregate %.

1721 of 9856 relevant lines covered (17.46%)

2.4 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 org.apache.wicket.ajax.AjaxRequestTarget;
7
import org.apache.wicket.ajax.markup.html.AjaxLink;
8
import org.apache.wicket.behavior.AttributeAppender;
9
import org.apache.wicket.markup.html.WebMarkupContainer;
10
import org.apache.wicket.markup.html.basic.Label;
11
import org.nanopub.extra.services.ApiResponse;
12
import org.nanopub.extra.services.QueryRef;
13
import org.slf4j.Logger;
14
import org.slf4j.LoggerFactory;
15

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

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

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

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

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

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

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

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

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

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

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

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

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