web/views/facets.py
changeset 7845 2172978be237
parent 7842 fa7e463cae9d
child 7849 7937cf60f2ce
equal deleted inserted replaced
7841:287813c487b7 7845:2172978be237
   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: