205 |
205 |
206 class FilterTable(FacetFilterMixIn, AnyRsetView): |
206 class FilterTable(FacetFilterMixIn, AnyRsetView): |
207 __regid__ = 'facet.filtertable' |
207 __regid__ = 'facet.filtertable' |
208 __select__ = has_facets() |
208 __select__ = has_facets() |
209 wdg_stack_size = 8 |
209 wdg_stack_size = 8 |
|
210 compact_layout_threshold = 5 |
210 |
211 |
211 def call(self, vid, divid, vidargs, cssclass=''): |
212 def call(self, vid, divid, vidargs, cssclass=''): |
212 self.generate_form(self.w, self.cw_rset, divid, vid, vidargs, |
213 self.generate_form(self.w, self.cw_rset, divid, vid, vidargs, |
213 cssclass=cssclass, fromformfilter='1', |
214 cssclass=cssclass, fromformfilter='1', |
214 # divid=divid XXX |
215 # divid=divid XXX |
215 ) |
216 ) |
216 |
217 |
|
218 def _simple_horizontal_layout(self, w, wdgs): |
|
219 w(u'<table class="filter">\n') |
|
220 w(u'<tr>\n') |
|
221 for wdg in wdgs: |
|
222 w(u'<td>') |
|
223 wdg.render(w=w) |
|
224 w(u'</td>') |
|
225 w(u'</tr>\n') |
|
226 w(u'</table>\n') |
|
227 |
217 def layout_widgets(self, w, wdgs): |
228 def layout_widgets(self, w, wdgs): |
218 """layout widgets: put them in a table where each column should have |
229 """layout widgets: put them in a table where each column should have |
219 sum(wdg.height()) < wdg_stack_size. |
230 sum(wdg.height()) < wdg_stack_size. |
220 """ |
231 """ |
|
232 if len(wdgs) < self.compact_layout_threshold: |
|
233 self._simple_horizontal_layout(w, wdgs) |
|
234 return |
221 w(u'<table class="filter">\n') |
235 w(u'<table class="filter">\n') |
222 widget_queue = [] |
236 widget_queue = [] |
223 queue_height = 0 |
237 queue_height = 0 |
224 w(u'<tr>\n') |
238 w(u'<tr>\n') |
225 for wdg in wdgs: |
239 for wdg in wdgs: |