Changeset 5140
- Timestamp:
- 05/07/14 11:48:38 (10 years ago)
- Location:
- vlo/trunk/vlo-web-app/src
- Files:
-
- 3 added
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
vlo/trunk/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/pages/FacetedSearchPage.java
r5031 r5140 130 130 131 131 private Panel createCollectionsPanel(final String id) { 132 final FacetPanel panel = new SingleFacetPanel(id, getModel(), vloConfig.getCollectionFacet(), facetFieldsService ) {132 final FacetPanel panel = new SingleFacetPanel(id, getModel(), vloConfig.getCollectionFacet(), facetFieldsService, 3) { 133 133 134 134 @Override -
vlo/trunk/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/pages/SimpleSearchPage.java
r5032 r5140 67 67 68 68 // add a persistenet panel for selection of a value for the collection facet 69 collectionsPanel = new SingleFacetPanel("collectionsFacet", model, vloConfig.getCollectionFacet(), facetFieldsService ) {69 collectionsPanel = new SingleFacetPanel("collectionsFacet", model, vloConfig.getCollectionFacet(), facetFieldsService, 3) { 70 70 71 71 @Override -
vlo/trunk/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/panels/SingleFacetPanel.java
r4962 r5140 15 15 * along with this program. If not, see <http://www.gnu.org/licenses/>. 16 16 */ 17 18 17 package eu.clarin.cmdi.vlo.wicket.panels; 19 18 … … 33 32 public abstract class SingleFacetPanel extends FacetPanel { 34 33 35 public SingleFacetPanel(String id, IModel<QueryFacetsSelection> queryModel, String facetName, FacetFieldsService facetFieldsService ) {34 public SingleFacetPanel(String id, IModel<QueryFacetsSelection> queryModel, String facetName, FacetFieldsService facetFieldsService, int subListSize) { 36 35 //TODO: Limit to number of items shown while keeping 'more' function? 37 super(id, new FacetFieldSelectionModel(new FacetFieldModel(facetFieldsService, facetName, queryModel, -1), queryModel), Model.of(ExpansionState.COLLAPSED) );36 super(id, new FacetFieldSelectionModel(new FacetFieldModel(facetFieldsService, facetName, queryModel, -1), queryModel), Model.of(ExpansionState.COLLAPSED), subListSize); 38 37 } 39 38 … … 44 43 return false; 45 44 } 46 45 47 46 } -
vlo/trunk/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/panels/search/FacetPanel.java
r4976 r5140 47 47 48 48 public FacetPanel(String id, IModel<FacetFieldSelection> selectionModel, IModel<ExpansionState> expansionState) { 49 this(id, selectionModel, expansionState, 0); 50 } 51 52 public FacetPanel(String id, IModel<FacetFieldSelection> selectionModel, IModel<ExpansionState> expansionState, int subListSize) { 49 53 super(id, selectionModel, expansionState); 50 54 this.expansionStateModel = expansionState; 51 55 52 56 // panel showing values for selection 53 facetValuesPanel = createFacetValuesPanel("facetValues" );57 facetValuesPanel = createFacetValuesPanel("facetValues", subListSize); 54 58 add(facetValuesPanel); 55 59 … … 85 89 } 86 90 87 private FacetValuesPanel createFacetValuesPanel(String id ) {91 private FacetValuesPanel createFacetValuesPanel(String id, int subListSize) { 88 92 return new FacetValuesPanel(id, 89 93 new PropertyModel<FacetField>(getModel(), "facetField"), 90 new PropertyModel<QueryFacetsSelection>(getModel(), "selection") ) {94 new PropertyModel<QueryFacetsSelection>(getModel(), "selection"), subListSize) { 91 95 @Override 92 96 public void onValuesSelected(String facet, FacetSelection value, AjaxRequestTarget target) { -
vlo/trunk/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/panels/search/FacetValuesPanel.html
r4958 r5140 30 30 <input type="submit" value="Search" class="nonjsfallback" /> 31 31 </form> 32 <ul wicket:id="valuesContainer"> 33 <li wicket:id="facetValues"><a wicket:id="facetSelect" href="index3.html"><span wicket:id="name">Dutch</span> (<span wicket:id="count">148167</span>)</a></li> 34 <li class="more-link"><a wicket:id="allFacetValuesLink" href="#">more...</a></li> 35 </ul> 32 <wicket:container wicket:id="valuesContainer"> 33 <ul wicket:id="valuesList"> 34 <li wicket:id="facetValues"><a wicket:id="facetSelect" href="index3.html"><span wicket:id="name">Dutch</span> (<span wicket:id="count">148167</span>)</a></li> 35 </ul> 36 <wicket:enclosure> 37 <ul> 38 <li class="more-link"><a wicket:id="allFacetValuesLink" href="#">more...</a></li> 39 </ul> 40 </wicket:enclosure> 41 </wicket:container> 36 42 </div> 37 43 </wicket:panel> -
vlo/trunk/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/panels/search/FacetValuesPanel.java
r5079 r5140 20 20 import eu.clarin.cmdi.vlo.pojo.FacetSelection; 21 21 import eu.clarin.cmdi.vlo.pojo.FieldValuesFilter; 22 import eu.clarin.cmdi.vlo.pojo.FieldValuesOrder; 22 23 import eu.clarin.cmdi.vlo.pojo.QueryFacetsSelection; 24 import eu.clarin.cmdi.vlo.wicket.provider.PartitionedDataProvider; 23 25 import eu.clarin.cmdi.vlo.wicket.model.SolrFieldNameModel; 24 26 import eu.clarin.cmdi.vlo.wicket.pages.AllFacetValuesPage; … … 26 28 import java.util.Collection; 27 29 import java.util.Collections; 30 import java.util.List; 28 31 import org.apache.solr.client.solrj.response.FacetField; 29 32 import org.apache.solr.client.solrj.response.FacetField.Count; … … 37 40 import org.apache.wicket.markup.html.form.TextField; 38 41 import org.apache.wicket.markup.html.link.Link; 42 import org.apache.wicket.markup.html.list.ListItem; 43 import org.apache.wicket.markup.html.list.ListView; 39 44 import org.apache.wicket.markup.html.panel.GenericPanel; 40 45 import org.apache.wicket.markup.repeater.Item; … … 60 65 private final WebMarkupContainer valuesContainer; 61 66 private final IModel<FieldValuesFilter> filterModel; 67 private final int subListSize; 62 68 63 69 /** … … 69 75 */ 70 76 public FacetValuesPanel(String id, final IModel<FacetField> model, final IModel<QueryFacetsSelection> selectionModel) { 77 this(id, model, selectionModel, 0); 78 } 79 80 /** 81 * Creates a new panel with selectable values for a single facet 82 * 83 * @param id component id 84 * @param model facet field model for this panel 85 * @param selectionModel model holding the global query/facet selection 86 * @param subListSize if large than 0, multiple lists will be generated each 87 * with a maximum size of this value 88 */ 89 public FacetValuesPanel(String id, final IModel<FacetField> model, final IModel<QueryFacetsSelection> selectionModel, int subListSize) { 71 90 super(id, model); 72 91 this.selectionModel = selectionModel; 92 this.subListSize = subListSize; 73 93 74 94 // shared model that holds the string for filtering the values (quick search) … … 83 103 84 104 // create a view for the actual values 85 valuesContainer.add(createValuesView(" facetValues"));105 valuesContainer.add(createValuesView("valuesList")); 86 106 87 107 // create a link for showing all values … … 122 142 * @return data view with value links 123 143 */ 124 private DataView <Count>createValuesView(String id) {144 private DataView createValuesView(String id) { 125 145 final FacetFieldValuesProvider valuesProvider = new FacetFieldValuesProvider(getModel(), MAX_NUMBER_OF_FACETS_TO_SHOW, LOW_PRIORITY_VALUES) { 126 146 … … 131 151 132 152 }; 133 final DataView<Count> valuesView = new DataView<Count>(id, valuesProvider) { 134 135 @Override 136 protected void populateItem(final Item<Count> item) { 137 addFacetValue("facetSelect", item); 153 // partition the values according to the specified partition size 154 final PartitionedDataProvider<Count, FieldValuesOrder> partitionedValuesProvider = new PartitionedDataProvider<FacetField.Count, FieldValuesOrder>(valuesProvider, subListSize); 155 156 // create the view for the partitions 157 final DataView<List<? extends Count>> valuesView = new DataView<List<? extends Count>>(id, partitionedValuesProvider) { 158 159 @Override 160 protected void populateItem(Item<List<? extends Count>> item) { 161 // create a list view for the values in this partition 162 item.add(new ListView<Count>("facetValues", item.getModel()) { 163 164 @Override 165 protected void populateItem(ListItem<Count> item) { 166 addFacetValue("facetSelect", item); 167 } 168 }); 138 169 } 139 170 }; … … 147 178 * @param item item to add link to 148 179 */ 149 private void addFacetValue(String id, final Item<Count> item) {180 private void addFacetValue(String id, final ListItem<Count> item) { 150 181 item.setDefaultModel(new CompoundPropertyModel<Count>(item.getModel())); 151 182 -
vlo/trunk/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/provider/FacetFieldValuesProvider.java
r5125 r5140 47 47 * @author twagoo 48 48 */ 49 public class FacetFieldValuesProvider extends SortableDataProvider<FacetField.Count, FieldValuesOrder> {49 public class FacetFieldValuesProvider extends SortableDataProvider<FacetField.Count, FieldValuesOrder> implements ListProvider<FacetField.Count> { 50 50 51 51 private final static Logger logger = LoggerFactory.getLogger(FacetFieldValuesProvider.class); … … 115 115 @Override 116 116 public Iterator<? extends FacetField.Count> iterator(long first, long count) { 117 final Iterable<Count> filtered = getFilteredValues(); 117 // return iterator starting at specified offset 118 return getList().listIterator((int) first); 119 } 120 121 @Override 122 public List<? extends FacetField.Count> getList() { 123 final Iterable<Count> filteredValues = getFilteredValues(); 118 124 // sort what remains 119 final ImmutableList sorted = getOrdering().immutableSortedCopy(filtered );125 final ImmutableList sorted = getOrdering().immutableSortedCopy(filteredValues); 120 126 if (sorted.size() > maxNumberOfItems) { 121 return sorted.subList(0, maxNumberOfItems) .listIterator((int) first);127 return sorted.subList(0, maxNumberOfItems); 122 128 } else { 123 129 // return iterator starting at specified offset 124 return sorted .listIterator((int) first);130 return sorted; 125 131 } 126 132 } -
vlo/trunk/vlo-web-app/src/main/resources/eu/clarin/cmdi/vlo/wicket/pages/vlo-collections.css
r4916 r5140 31 31 32 32 #collections ul li { 33 display: block;33 display: inline-block; 34 34 width: 28%; 35 35 margin: 0 2%; 36 float: left; 37 overflow: no-content; 38 padding-bottom: .2em; 36 overflow: hidden; 37 padding: .2em 0 .2em 0; 38 vertical-align: top; 39 } 40 41 #collections .facetvalues li a, #collections .selectedfacetvalue { 42 padding-left: 0px; 39 43 } 40 44
Note: See TracChangeset
for help on using the changeset viewer.