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/pages/FacetedSearchPage.java

    r6334 r6813  
    11package eu.clarin.cmdi.vlo.wicket.pages;
    22
    3 import eu.clarin.cmdi.vlo.wicket.model.PermaLinkModel;
    4 import eu.clarin.cmdi.vlo.wicket.panels.SingleFacetPanel;
    5 import eu.clarin.cmdi.vlo.config.VloConfig;
    6 import eu.clarin.cmdi.vlo.wicket.panels.search.FacetsPanel;
    7 import eu.clarin.cmdi.vlo.pojo.QueryFacetsSelection;
    8 import eu.clarin.cmdi.vlo.service.PageParametersConverter;
    9 import eu.clarin.cmdi.vlo.service.solr.FacetFieldsService;
    10 import eu.clarin.cmdi.vlo.wicket.panels.search.FacetPanel;
    11 import eu.clarin.cmdi.vlo.wicket.panels.search.SearchFormPanel;
    12 import eu.clarin.cmdi.vlo.wicket.panels.search.SearchResultsPanel;
    13 import eu.clarin.cmdi.vlo.wicket.model.FacetFieldsModel;
    14 import eu.clarin.cmdi.vlo.wicket.panels.BreadCrumbPanel;
    15 import eu.clarin.cmdi.vlo.wicket.panels.search.FacetValuesPanel;
    16 import eu.clarin.cmdi.vlo.wicket.panels.TopLinksPanel;
    17 import eu.clarin.cmdi.vlo.wicket.panels.search.AdvancedSearchOptionsPanel;
    183import java.util.List;
     4
    195import org.apache.solr.client.solrj.response.FacetField;
    206import org.apache.wicket.Component;
    217import org.apache.wicket.ajax.AjaxRequestTarget;
    228import org.apache.wicket.markup.html.WebMarkupContainer;
    23 import org.apache.wicket.request.mapper.parameter.PageParameters;
    249import org.apache.wicket.markup.html.panel.Panel;
    2510import org.apache.wicket.model.IModel;
    2611import org.apache.wicket.model.Model;
     12import org.apache.wicket.request.mapper.parameter.PageParameters;
    2713import org.apache.wicket.spring.injection.annot.SpringBean;
     14
     15import eu.clarin.cmdi.vlo.config.VloConfig;
     16import eu.clarin.cmdi.vlo.pojo.QueryFacetsSelection;
     17import eu.clarin.cmdi.vlo.service.PageParametersConverter;
     18import eu.clarin.cmdi.vlo.service.solr.FacetFieldsService;
     19import eu.clarin.cmdi.vlo.wicket.model.FacetFieldsModel;
     20import eu.clarin.cmdi.vlo.wicket.model.FacetNamesModel;
     21import eu.clarin.cmdi.vlo.wicket.model.PermaLinkModel;
     22import eu.clarin.cmdi.vlo.wicket.panels.BreadCrumbPanel;
     23import eu.clarin.cmdi.vlo.wicket.panels.SingleFacetPanel;
     24import eu.clarin.cmdi.vlo.wicket.panels.TopLinksPanel;
     25import eu.clarin.cmdi.vlo.wicket.panels.search.AdvancedSearchOptionsPanel;
     26import eu.clarin.cmdi.vlo.wicket.panels.search.FacetPanel;
     27import eu.clarin.cmdi.vlo.wicket.panels.search.FacetValuesPanel;
     28import eu.clarin.cmdi.vlo.wicket.panels.search.FacetsPanel;
     29import eu.clarin.cmdi.vlo.wicket.panels.search.SearchFormPanel;
     30import eu.clarin.cmdi.vlo.wicket.panels.search.SearchResultsPanel;
    2831
    2932/**
     
    4851    private Component navigation;
    4952    private Component searchForm;
     53   
     54   
     55    IModel<List<String>> facetNamesModel;
     56    FacetFieldsModel fieldsModel;
     57   
     58   
    5059
    5160    public FacetedSearchPage(IModel<QueryFacetsSelection> queryModel) {
    5261        super(queryModel);
     62        createModels();
    5363        addComponents();
    5464    }
     
    6070        final IModel<QueryFacetsSelection> queryModel = new Model<QueryFacetsSelection>(selection);
    6171        setModel(queryModel);
     72        createModels();
    6273        addComponents();
     74    }
     75   
     76   
     77    private void createModels(){
     78        facetNamesModel = new FacetNamesModel(vloConfig.getFacetFields());
     79        fieldsModel = new FacetFieldsModel(facetFieldsService, facetNamesModel.getObject(), getModel(), -1);
    6380    }
    6481
     
    139156        enclosure.setOutputMarkupId(true);
    140157        if (vloConfig.getCollectionFacet() != null) {
    141             final FacetPanel panel = new SingleFacetPanel("collectionsFacet", getModel(), vloConfig.getCollectionFacet(), facetFieldsService, 3) {
     158            final FacetPanel panel = new SingleFacetPanel("collectionsFacet", vloConfig.getCollectionFacet(), getModel(), facetFieldsService, 3) {
    142159
    143160                @Override
     
    158175
    159176    private Panel createFacetsPanel(final String id) {
    160         final IModel<QueryFacetsSelection> queryModel = getModel();
    161         final IModel<List<FacetField>> facetFieldsModel = new FacetFieldsModel(facetFieldsService, vloConfig.getFacetFields(), queryModel, FacetValuesPanel.MAX_NUMBER_OF_FACETS_TO_SHOW);
    162         final FacetsPanel panel = new FacetsPanel(id, facetFieldsModel, queryModel) {
     177       
     178        final FacetsPanel panel = new FacetsPanel(id, facetNamesModel, fieldsModel, getModel()) {
    163179
    164180            @Override
     
    172188
    173189    private void updateSelection(AjaxRequestTarget target) {
     190       
     191        //detach facetFieldsModel when selection is changed
     192        fieldsModel.detach();
     193       
    174194        // selection changed, update facets and search results
    175195        if (target != null) { // null if JavaScript disabled
Note: See TracChangeset for help on using the changeset viewer.