Changeset 2025


Ignore:
Timestamp:
07/11/12 07:35:47 (12 years ago)
Author:
teckart
Message:

Added parameter "facetMinOccurs" to filter for minimal frequency on ShowAllFacetValuesPage?

Location:
vlo/trunk/vlo_webapp/src/main/java/eu/clarin/cmdi/vlo/pages
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • vlo/trunk/vlo_webapp/src/main/java/eu/clarin/cmdi/vlo/pages/AlphabeticalPanel.java

    r948 r2025  
    1313import java.util.Map.Entry;
    1414import java.util.TreeMap;
     15
    1516import org.apache.solr.client.solrj.response.FacetField.Count;
    1617import org.apache.wicket.markup.html.WebMarkupContainer;
    17 
    1818import org.apache.wicket.markup.html.basic.Label;
    1919import org.apache.wicket.markup.html.link.ExternalLink;
     
    2828
    2929    private static final long serialVersionUID = 1L;
    30     private List<String> foundCharacters = new LinkedList<String>();
     30    private final List<String> foundCharacters = new LinkedList<String>();
     31    private final Integer facetMinOccurs;
    3132
    32     public AlphabeticalPanel(String id, IDataProvider data, final SearchPageQuery query) {
     33    public AlphabeticalPanel(String id, IDataProvider data, final SearchPageQuery query, Integer facetMinOccurs) {
    3334        super(id);
     35        this.facetMinOccurs = facetMinOccurs;
    3436
    3537        RepeatingView sortedDataViewLeft = new RepeatingView("sortedDataViewLeft");
     
    9799        while (iter.hasNext()) {
    98100            Count count = iter.next();
     101            if(count.getCount() < facetMinOccurs)
     102                continue;
    99103            Character key = count.getName().trim().charAt(0);
    100104            if (Character.isDigit(key)) {
  • vlo/trunk/vlo_webapp/src/main/java/eu/clarin/cmdi/vlo/pages/FacetBoxPanel.java

    r1093 r2025  
    3737    }
    3838   
    39     @SuppressWarnings("serial")
     39    @SuppressWarnings({"serial"})
    4040    public FacetBoxPanel create(final SearchPageQuery query) {
    4141        final FacetField facetField = (FacetField) getDefaultModelObject();
     
    6666        PageParameters pageParameters = query.getPageParameters();
    6767        pageParameters.add(ShowAllFacetValuesPage.SELECTED_FACET_PARAM, facetField.getName());
     68        pageParameters.add(ShowAllFacetValuesPage.FACET_MIN_OCCURS, "1");
    6869        add(new BookmarkablePageLink("showMore", ShowAllFacetValuesPage.class, pageParameters) {
    6970
    70             public boolean isVisible() {
     71            @Override
     72                        public boolean isVisible() {
    7173                return !facetModel.isSelected() && showMore;
    7274            }
  • vlo/trunk/vlo_webapp/src/main/java/eu/clarin/cmdi/vlo/pages/ShowAllFacetValuesPage.html

    r1007 r2025  
    1111                </tr>
    1212            </table>
     13            <div class="filter">
     14                <a href="#" wicket:id="filter"><span wicket:id="filterLabel">Filter</span></a>
     15            </div>
     16            <br>
    1317            <div class="message"><wicket:message key="subcategoriesIn">[Subcategories]</wicket:message> <span class="facet" wicket:id="category"></span>:</div>
    1418            <div wicket:id="alphaPanel"></div>
  • vlo/trunk/vlo_webapp/src/main/java/eu/clarin/cmdi/vlo/pages/ShowAllFacetValuesPage.java

    r940 r2025  
    66import org.apache.wicket.markup.html.WebMarkupContainer;
    77import org.apache.wicket.markup.html.basic.Label;
     8import org.apache.wicket.markup.html.link.BookmarkablePageLink;
    89import org.apache.wicket.markup.repeater.RepeatingView;
    910
    1011public class ShowAllFacetValuesPage extends BasePage {
    1112
    12     public static final String SELECTED_FACET_PARAM = "selectedFacet";
     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
    1316
    14     public ShowAllFacetValuesPage(PageParameters parameters) {
    15         super(parameters);
    16         final SearchPageQuery query = new SearchPageQuery(parameters);
     17        public ShowAllFacetValuesPage(PageParameters parameters) {
     18                super(parameters);
     19                final SearchPageQuery query = new SearchPageQuery(parameters);
    1720
    18         Map<String, String> filterQueries = query.getFilterQueryMap();
     21                Map<String, String> filterQueries = query.getFilterQueryMap();
    1922
    20         RepeatingView filteredFacets = new RepeatingView("filteredFacets");
    21         if (filterQueries != null && !filterQueries.isEmpty()) {
    22             WebMarkupContainer wmc = new WebMarkupContainer(filteredFacets.newChildId());
    23             wmc.add(new Label("filteredFacet", "Selected categories:"));
    24             filteredFacets.add(wmc);
    25             for (String fq : filterQueries.keySet()) {
    26                 wmc = new WebMarkupContainer(filteredFacets.newChildId());
    27                 wmc.add(new Label("filteredFacet", fq + " = " + filterQueries.get(fq)));
    28                 filteredFacets.add(wmc);
    29             }
    30         }
    31         add(filteredFacets);
    32         String selectedFacet = parameters.getString(SELECTED_FACET_PARAM);
    33         add(new Label("category", selectedFacet));
    34         SolrFacetFieldDataProvider data = new SolrFacetFieldDataProvider(selectedFacet, query);
    35         add(new AlphabeticalPanel("alphaPanel", data, query));
    36     }
     23                // filter for minimal frequency of values
     24                addOccurrencesFilter(parameters);
     25               
     26                RepeatingView filteredFacets = new RepeatingView("filteredFacets");
     27                if (filterQueries != null && !filterQueries.isEmpty()) {
     28                        WebMarkupContainer wmc = new WebMarkupContainer(filteredFacets.newChildId());
     29                        wmc.add(new Label("filteredFacet", "Selected categories:"));
     30                        filteredFacets.add(wmc);
     31                        for (String fq : filterQueries.keySet()) {
     32                                wmc = new WebMarkupContainer(filteredFacets.newChildId());
     33                                wmc.add(new Label("filteredFacet", fq + " = " + filterQueries.get(fq)));
     34                                filteredFacets.add(wmc);
     35                        }
     36                }
     37                add(filteredFacets);
     38                String selectedFacet = parameters.getString(SELECTED_FACET_PARAM);
     39                Integer facetMinOccurs = parameters.getAsInteger(FACET_MIN_OCCURS, 1);
     40                add(new Label("category", selectedFacet));
     41                SolrFacetFieldDataProvider data = new SolrFacetFieldDataProvider(selectedFacet, query);
     42                add(new AlphabeticalPanel("alphaPanel", data, query, facetMinOccurs));
     43        }
     44       
     45        /**
     46         * Adds a link to allow filtering for minimal occurrences of a value or to show all values again
     47         * @param parameters
     48         */
     49        private void addOccurrencesFilter(PageParameters parameters) {
     50                PageParameters newParameters = (PageParameters) parameters.clone();
     51                newParameters.remove(FACET_MIN_OCCURS);
     52                if(!parameters.containsKey(FACET_MIN_OCCURS) || parameters.getAsInteger(FACET_MIN_OCCURS) == 1) {
     53                        newParameters.add(FACET_MIN_OCCURS, FACET_MIN_OCCURS_VALUE.toString());
     54                        add(new BookmarkablePageLink<Void>("filter", ShowAllFacetValuesPage.class, newParameters).add(new Label("filterLabel", "Show only values that occur at least "+FACET_MIN_OCCURS_VALUE+" times")));
     55                } else {
     56                        add(new BookmarkablePageLink<Void>("filter", ShowAllFacetValuesPage.class, newParameters).add(new Label("filterLabel", "Show all values")));
     57                }
     58        }
    3759}
Note: See TracChangeset for help on using the changeset viewer.