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

knowledgepixels / nanodash / 21590827488

02 Feb 2026 12:51PM UTC coverage: 13.774% (-0.2%) from 13.94%
21590827488

push

github

tkuhn
feat: Add filter fields to views to User and Query pages

545 of 5252 branches covered (10.38%)

Branch coverage included in aggregate %.

1492 of 9537 relevant lines covered (15.64%)

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

3
import java.util.ArrayList;
4
import java.util.List;
5

6
import org.apache.wicket.ajax.AjaxRequestTarget;
7
import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
8
import org.apache.wicket.ajax.markup.html.navigation.paging.AjaxPagingNavigator;
9
import org.apache.wicket.extensions.markup.html.repeater.data.table.NavigatorLabel;
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.panel.Panel;
14
import org.apache.wicket.markup.repeater.Item;
15
import org.apache.wicket.markup.repeater.data.DataView;
16
import org.apache.wicket.model.Model;
17
import org.nanopub.extra.services.ApiResponse;
18
import org.nanopub.extra.services.ApiResponseEntry;
19
import org.slf4j.Logger;
20
import org.slf4j.LoggerFactory;
21

22
import com.knowledgepixels.nanodash.FilteredListDataProvider;
23
import com.knowledgepixels.nanodash.GrlcQuery;
24

25
/**
26
 * A component that displays a list of queries.
27
 * Each query is linked to its corresponding QueryPage.
28
 */
29
public class QueryList extends Panel {
30

31
    private static final Logger logger = LoggerFactory.getLogger(QueryList.class);
×
32

33
    /**
34
     * Constructor for QueryList.
35
     *
36
     * @param id   the component ID
37
     * @param resp the API response containing query data
38
     */
39
    private Model<String> filterModel = Model.of("");
×
40
    private FilteredListDataProvider<GrlcQuery> filteredDataProvider;
41
    private DataView<GrlcQuery> dataView;
42

43
    public QueryList(String id, ApiResponse resp) {
44
        super(id);
×
45
        setOutputMarkupId(true);
×
46

47
        List<GrlcQuery> queries = new ArrayList<>();
×
48
        for (ApiResponseEntry e : resp.getData()) {
×
49
            try {
50
                queries.add(GrlcQuery.get(e.get("np")));
×
51
            } catch (Exception ex) {
×
52
                logger.error("Error processing query nanopub: {}", ex.getMessage());
×
53
            }
×
54
        }
×
55

56
        add(new Label("title", "Other Queries"));
×
57

58
        filteredDataProvider = new FilteredListDataProvider<>(queries, GrlcQuery::getLabel);
×
59
        dataView = new DataView<>("querylist", filteredDataProvider) {
×
60

61
            @Override
62
            protected void populateItem(Item<GrlcQuery> item) {
63
                item.add(new QueryItem("queryitem", item.getModelObject(), null, true));
×
64
            }
×
65

66
        };
67
        dataView.setItemsPerPage(10);
×
68
        dataView.setOutputMarkupId(true);
×
69

70
        TextField<String> filterField = new TextField<>("filter", filterModel);
×
71
        filterField.setOutputMarkupId(true);
×
72
        filterField.add(new AjaxFormComponentUpdatingBehavior("change") {
×
73
            @Override
74
            protected void onUpdate(AjaxRequestTarget target) {
75
                filteredDataProvider.setFilterText(filterModel.getObject());
×
76
                WebMarkupContainer nav = (WebMarkupContainer) get("navigation");
×
77
                nav.setVisible(dataView.getPageCount() > 1);
×
78
                target.add(QueryList.this);
×
79
            }
×
80
        });
81
        add(filterField);
×
82
        add(new WebMarkupContainer("buttons"));
×
83
        add(dataView);
×
84

85
        WebMarkupContainer navigation = new WebMarkupContainer("navigation");
×
86
        navigation.add(new NavigatorLabel("navigatorLabel", dataView));
×
87
        AjaxPagingNavigator pagingNavigator = new AjaxPagingNavigator("navigator", dataView);
×
88
        navigation.setVisible(dataView.getPageCount() > 1);
×
89
        navigation.add(pagingNavigator);
×
90
        add(navigation);
×
91
    }
×
92

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