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

knowledgepixels / nanodash / 27145358627

08 Jun 2026 02:39PM UTC coverage: 20.682% (-0.3%) from 20.947%
27145358627

push

github

web-flow
Merge pull request #479 from knowledgepixels/feat/about-pages-478

Resource-page tabs, presets, and role-gated view actions (#478, #302)

1052 of 6429 branches covered (16.36%)

Branch coverage included in aggregate %.

2642 of 11432 relevant lines covered (23.11%)

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

3
import com.knowledgepixels.nanodash.FilteredQueryResultDataProvider;
4
import com.knowledgepixels.nanodash.QueryResult;
5
import com.knowledgepixels.nanodash.QueryResultDataProvider;
6
import com.knowledgepixels.nanodash.ViewDisplay;
7
import com.knowledgepixels.nanodash.page.ExplorePage;
8
import org.apache.wicket.ajax.AjaxRequestTarget;
9
import org.apache.wicket.markup.html.WebMarkupContainer;
10
import org.apache.wicket.markup.html.basic.Label;
11
import org.apache.wicket.markup.html.form.TextField;
12
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
13
import org.apache.wicket.markup.html.list.ListItem;
14
import org.apache.wicket.markup.html.list.ListView;
15
import org.apache.wicket.model.Model;
16
import org.apache.wicket.request.mapper.parameter.PageParameters;
17
import org.nanopub.extra.services.ApiResponse;
18
import org.nanopub.extra.services.ApiResponseEntry;
19
import org.nanopub.extra.services.QueryRef;
20

21
/**
22
 * Component for displaying query results in a list format.
23
 */
24
public class QueryResultPlainParagraph extends QueryResult {
25

26
    private FilteredQueryResultDataProvider filteredDataProvider;
27
    private Model<String> filterModel = Model.of("");
×
28
    private WebMarkupContainer paragraphsContainer;
29

30
    /**
31
     * Constructor for QueryResultList.
32
     *
33
     * @param markupId    the markup ID
34
     * @param queryRef    the query reference
35
     * @param response    the API response
36
     * @param viewDisplay the view display
37
     */
38
    QueryResultPlainParagraph(String markupId, QueryRef queryRef, ApiResponse response, ViewDisplay viewDisplay) {
39
        super(markupId, queryRef, response, viewDisplay);
×
40

41
        String label = grlcQuery.getLabel();
×
42
        if (viewDisplay.getTitle() != null) {
×
43
            label = viewDisplay.getTitle();
×
44
        }
45
        add(new Label("label", label));
×
46
        setOutputMarkupId(true);
×
47

48
        TextField<String> filterField = new TextField<>("filter", filterModel);
×
49
        filterField.setOutputMarkupId(true);
×
50
        filterField.add(new FilterUpdatingBehavior() {
×
51
            @Override
52
            protected void onUpdate(AjaxRequestTarget target) {
53
                if (filteredDataProvider != null && paragraphsContainer != null) {
×
54
                    filteredDataProvider.setFilterText(filterModel.getObject());
×
55
                    paragraphsContainer.addOrReplace(buildParagraphsView());
×
56
                    target.add(paragraphsContainer);
×
57
                }
58
            }
×
59
        });
60
        filterField.setVisible(!fitsOnFirstPage());
×
61
        add(filterField);
×
62

63
        populateComponent();
×
64
    }
×
65

66
    @Override
67
    protected void populateComponent() {
68
        filteredDataProvider = new FilteredQueryResultDataProvider(new QueryResultDataProvider(response.getData()), response);
×
69

70
        paragraphsContainer = new WebMarkupContainer("paragraphs-container");
×
71
        paragraphsContainer.setOutputMarkupId(true);
×
72
        paragraphsContainer.add(buildParagraphsView());
×
73
        paragraphsContainer.add(new Label("no-records", "(nothing found)") {
×
74
            @Override
75
            protected void onConfigure() {
76
                super.onConfigure();
×
77
                setVisible(filteredDataProvider.getFilteredData().isEmpty());
×
78
            }
×
79
        });
80
        add(paragraphsContainer);
×
81
    }
×
82

83
    private ListView<ApiResponseEntry> buildParagraphsView() {
84
        return new ListView<>("paragraphs", filteredDataProvider.getFilteredData()) {
×
85
            @Override
86
            protected void populateItem(ListItem<ApiResponseEntry> item) {
87
                item.add(new Label("title", item.getModelObject().get("title")));
×
88
                String npId = item.getModelObject().get("np");
×
89
                if (npId != null && !npId.isBlank()) {
×
90
                    item.add(new BookmarkablePageLink<Void>("pnp", ExplorePage.class, new PageParameters().set("id", npId)));
×
91
                } else {
92
                    item.add(new Label("pnp").setVisible(false));
×
93
                }
94
                item.add(new Label("content", item.getModelObject().get("content")).setEscapeModelStrings(false));
×
95
            }
×
96
        };
97
    }
98

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