Ignore:
Timestamp:
11/17/15 11:55:14 (9 years ago)
Author:
davor.ostojic@oeaw.ac.at
Message:

#795 VLO web-app generates unnecessary requests. The idea behind is to fire SOLR query only when selection is changed.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • vlo/trunk/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/panels/search/SelectedFacetPanel.java

    r6002 r6813  
    1717package eu.clarin.cmdi.vlo.wicket.panels.search;
    1818
    19 import eu.clarin.cmdi.vlo.pojo.FacetFieldSelection;
    20 import eu.clarin.cmdi.vlo.wicket.components.FieldValueLabel;
     19import java.util.ArrayList;
    2120import java.util.Collection;
    2221import java.util.Collections;
    2322import java.util.List;
     23import java.util.concurrent.CopyOnWriteArrayList;
     24
    2425import org.apache.wicket.ajax.AjaxRequestTarget;
    2526import org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxFallbackLink;
     
    2728import org.apache.wicket.markup.html.list.ListView;
    2829import org.apache.wicket.markup.html.panel.GenericPanel;
     30import org.apache.wicket.model.AbstractReadOnlyModel;
    2931import org.apache.wicket.model.IModel;
    30 import org.apache.wicket.model.PropertyModel;
     32import org.apache.wicket.model.Model;
     33
     34import eu.clarin.cmdi.vlo.pojo.FacetSelection;
     35import eu.clarin.cmdi.vlo.wicket.components.FieldValueLabel;
    3136
    3237/**
     
    3641 * @author twagoo
    3742 */
    38 public abstract class SelectedFacetPanel extends GenericPanel<FacetFieldSelection> {
     43public abstract class SelectedFacetPanel extends GenericPanel<FacetSelection> {
    3944
    40     public SelectedFacetPanel(String id, final IModel<FacetFieldSelection> model) {
     45    public SelectedFacetPanel(String id, String facetName, final IModel<FacetSelection> model) {
    4146        super(id, model);
    4247
    4348        // Add removers for all selected values for collapsed state
    44         add(createSelectionRemovers("facetValueRemover"));
     49        add(createSelectionRemovers("facetValueRemover", facetName));
    4550        // Add selected items to expanded state
    46         add(createSelectionRemovers("selectedItem"));
     51        add(createSelectionRemovers("selectedItem", facetName));
    4752    }
    48 
    49     private ListView<String> createSelectionRemovers(String id) {
     53       
     54    private ListView<String> createSelectionRemovers(String id, String facetName) {
    5055        // Model of the list of selected values in this facet
    51         final PropertyModel<List<String>> propertyModel = new PropertyModel<List<String>>(getModel(), "facetValues");
    52         final PropertyModel<String> fieldNameModel = new PropertyModel(getModel(), "facetField.name");
     56       
     57        List<String> selectedValues;
     58                if (getModelObject().getValues() != null)
     59                        selectedValues = new CopyOnWriteArrayList<String>(getModelObject().getValues());
     60                else
     61                        selectedValues = Collections.emptyList();
     62               
     63               
     64        final IModel<List<String>> propertyModel = new AbstractReadOnlyModel<List<String>>() {
     65               
     66                        @Override
     67                        public List<String> getObject() {
     68                                return new ArrayList(SelectedFacetPanel.this.getModelObject().getValues());
     69                        }
     70               
     71                };
     72                final IModel<String> fieldNameModel = new Model<String>(facetName);
     73        //final PropertyModel<List<String>> propertyModel= new PropertyModel<List<String>>(getModel(), "facetValues");
     74        //final PropertyModel<String> fieldNameModel = new PropertyModel(getModel(), "facetField.name");
     75       
     76       
    5377        // Repeating container of value + unselection links
    5478        final ListView<String> listView = new ListView<String>(id, propertyModel) {
     
    79103     * (fallback)!
    80104     */
    81     protected abstract void onValuesUnselected(String facet, Collection<String> valuesRemoved, AjaxRequestTarget target);
     105    protected abstract void onValuesUnselected(Collection<String> valuesRemoved, AjaxRequestTarget target);
    82106
    83107    public class RemoveLink extends IndicatingAjaxFallbackLink {
     
    94118            // Remove a single value
    95119            // Call callback
    96             onValuesUnselected(
    97                     SelectedFacetPanel.this.getModelObject().getFacetField().getName(),
    98                     Collections.singleton(valueModel.getObject()), target);
     120            onValuesUnselected(Collections.singleton(valueModel.getObject()), target);
    99121        }
    100122
Note: See TracChangeset for help on using the changeset viewer.