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

knowledgepixels / nanodash / 24334200781

13 Apr 2026 08:45AM UTC coverage: 16.094% (-0.05%) from 16.148%
24334200781

Pull #437

github

web-flow
Merge 91539235a into d46e750d5
Pull Request #437: feat: add filter field to all view types and convert publish page panels to proper views

789 of 6058 branches covered (13.02%)

Branch coverage included in aggregate %.

1977 of 11128 relevant lines covered (17.77%)

2.43 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.ajax.form.AjaxFormComponentUpdatingBehavior;
10
import org.apache.wicket.markup.html.WebMarkupContainer;
11
import org.apache.wicket.markup.html.basic.Label;
12
import org.apache.wicket.markup.html.form.TextField;
13
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
14
import org.apache.wicket.markup.html.list.ListItem;
15
import org.apache.wicket.markup.html.list.ListView;
16
import org.apache.wicket.model.Model;
17
import org.apache.wicket.request.mapper.parameter.PageParameters;
18
import org.nanopub.extra.services.ApiResponse;
19
import org.nanopub.extra.services.ApiResponseEntry;
20
import org.nanopub.extra.services.QueryRef;
21

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

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

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

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

49
        TextField<String> filterField = new TextField<>("filter", filterModel);
×
50
        filterField.setOutputMarkupId(true);
×
51
        filterField.add(new AjaxFormComponentUpdatingBehavior("change") {
×
52
            @Override
53
            protected void onUpdate(AjaxRequestTarget target) {
54
                if (filteredDataProvider != null && paragraphsContainer != null) {
×
55
                    filteredDataProvider.setFilterText(filterModel.getObject());
×
56
                    paragraphsContainer.addOrReplace(buildParagraphsView());
×
57
                    target.add(paragraphsContainer);
×
58
                }
59
            }
×
60
        });
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
        add(paragraphsContainer);
×
74
    }
×
75

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

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