source: vlo/branches/to-wicket-1.6/vlo_web_app/src/main/java/eu/clarin/cmdi/vlo/pages/ShowAllFacetValuesPage.java @ 4201

Last change on this file since 4201 was 4201, checked in by keeloo, 10 years ago

After splitting of a branch (r4199) including code for moving from wicket 1.4 to wicket 6, some more modifications in the direction of that target.

File size: 3.0 KB
Line 
1package eu.clarin.cmdi.vlo.pages;
2
3import java.util.Map;
4
5import org.apache.wicket.request.mapper.parameter.PageParameters;
6import org.apache.wicket.markup.html.WebMarkupContainer;
7import org.apache.wicket.markup.html.basic.Label;
8import org.apache.wicket.markup.html.link.BookmarkablePageLink;
9import org.apache.wicket.markup.repeater.RepeatingView;
10
11public class ShowAllFacetValuesPage extends BasePage {
12
13        public static final String SELECTED_FACET_PARAM = "selectedFacet";
14        public static final String FACET_MIN_OCCURS = "facetMinOccurs";
15        public static final Integer FACET_MIN_OCCURS_VALUE = 2; // for parameter FACET_MIN_OCCURS to show only values that occur with this minimal frequency
16
17        public ShowAllFacetValuesPage(PageParameters parameters) {
18                super(parameters);
19                final SearchPageQuery query = new SearchPageQuery(parameters);
20
21                // show facets that were already chosen
22                addFilteredFacets(query);
23               
24                // filter for minimal frequency of values
25                addOccurrencesFilter(parameters);
26               
27                String selectedFacet = (parameters.get(SELECTED_FACET_PARAM)).toString();
28               
29                Integer facetMinOccurs = (parameters.get(FACET_MIN_OCCURS)).toInt(1); // take care of 1 as default value
30               
31                add(new Label("category", selectedFacet));
32                SolrFacetFieldDataProvider data = new SolrFacetFieldDataProvider(selectedFacet, query);
33                add(new AlphabeticalPanel("alphaPanel", data, query, facetMinOccurs));
34        }
35       
36        /**
37         * Adds a link to allow filtering for minimal occurrences of a value or to show all values again
38         * @param parameters
39         */
40        private void addOccurrencesFilter(PageParameters parameters) {
41                PageParameters newParameters = (PageParameters) parameters.clone();
42                newParameters.remove(FACET_MIN_OCCURS);
43                if(!parameters.containsKey(FACET_MIN_OCCURS) || parameters.getAsInteger(FACET_MIN_OCCURS) == 1) {
44                        newParameters.add(FACET_MIN_OCCURS, FACET_MIN_OCCURS_VALUE.toString());
45                        add(new BookmarkablePageLink<Void>("filter", ShowAllFacetValuesPage.class, newParameters).add(new Label("filterLabel", "Show only values that occur at least "+FACET_MIN_OCCURS_VALUE+" times")));
46                } else {
47                        add(new BookmarkablePageLink<Void>("filter", ShowAllFacetValuesPage.class, newParameters).add(new Label("filterLabel", "Show all values")));
48                }
49        }
50       
51        /**
52         * Add view that shows already selected facets
53         * @param query
54         */
55        private void addFilteredFacets(SearchPageQuery query) {
56                Map<String, String> filterQueries = query.getFilterQueryMap();
57                RepeatingView filteredFacets = new RepeatingView("filteredFacets");
58                if (filterQueries != null && !filterQueries.isEmpty()) {
59                        WebMarkupContainer wmc = new WebMarkupContainer(filteredFacets.newChildId());
60                        wmc.add(new Label("filteredFacet", "Selected categories:"));
61                        filteredFacets.add(wmc);
62                        for (String fq : filterQueries.keySet()) {
63                                wmc = new WebMarkupContainer(filteredFacets.newChildId());
64                                wmc.add(new Label("filteredFacet", fq + " = " + filterQueries.get(fq)));
65                                filteredFacets.add(wmc);
66                        }
67                }
68                add(filteredFacets);           
69        }
70}
Note: See TracBrowser for help on using the repository browser.