web/views/tableview.py
changeset 521 b3430af22580
parent 513 907c18c01c60
child 527 6ceb0c3016df
equal deleted inserted replaced
520:29342c0cf55f 521:b3430af22580
    31         # union not yet supported
    31         # union not yet supported
    32         if len(rqlst.children) != 1:
    32         if len(rqlst.children) != 1:
    33             return ()
    33             return ()
    34         rqlst.save_state()
    34         rqlst.save_state()
    35         mainvar, baserql = prepare_facets_rqlst(rqlst, self.rset.args)
    35         mainvar, baserql = prepare_facets_rqlst(rqlst, self.rset.args)
    36         facets = [facet for facet in self.vreg.possible_vobjects(
    36         wdgs = [facet.get_widget() for facet in self.vreg.possible_vobjects(
    37             'facets', self.req, self.rset, context='tablefilter',
    37             'facets', self.req, self.rset, context='tablefilter',
    38             filtered_variable=mainvar)
    38             filtered_variable=mainvar)]
    39                   if facet.get_widget()]
    39         wdgs = [wdg for wdg in wdgs if wdg is not None]
    40         rqlst.recover()
    40         rqlst.recover()
    41         if facets:
    41         if wdgs:
    42             self._generate_form(divid, baserql, facets, hidden,
    42             self._generate_form(divid, baserql, wdgs, hidden,
    43                                vidargs={'displaycols': displaycols,
    43                                vidargs={'displaycols': displaycols,
    44                                         'displayactions': displayactions,
    44                                         'displayactions': displayactions,
    45                                         'displayfilter': displayfilter})
    45                                         'displayfilter': displayfilter})
    46             return self.show_hide_actions(divid, not hidden)
    46             return self.show_hide_actions(divid, not hidden)
    47         return ()
    47         return ()
    48     
    48     
    49     def _generate_form(self, divid, baserql, facets, hidden=True, vidargs={}):
    49     def _generate_form(self, divid, baserql, fwidgets, hidden=True, vidargs={}):
    50         """display a form to filter table's content. This should only
    50         """display a form to filter table's content. This should only
    51         occurs when a context eid is given
    51         occurs when a context eid is given
    52         """
    52         """
    53         wdgs = [facet.get_widget() for facet in facets]
       
    54         if not wdgs:
       
    55             return
       
    56         self.req.add_js( ('cubicweb.ajax.js', 'cubicweb.formfilter.js'))
    53         self.req.add_js( ('cubicweb.ajax.js', 'cubicweb.formfilter.js'))
    57         # drop False / None values from vidargs
    54         # drop False / None values from vidargs
    58         vidargs = dict((k, v) for k, v in vidargs.iteritems() if v)
    55         vidargs = dict((k, v) for k, v in vidargs.iteritems() if v)
    59         self.w(u'<form method="post" cubicweb:facetargs="%s" action="">' %
    56         self.w(u'<form method="post" cubicweb:facetargs="%s" action="">' %
    60                html_escape(dumps([divid, 'table', False, vidargs])))
    57                html_escape(dumps([divid, 'table', False, vidargs])))
    61         self.w(u'<fieldset id="%sForm" class="%s">' % (divid, hidden and 'hidden' or ''))
    58         self.w(u'<fieldset id="%sForm" class="%s">' % (divid, hidden and 'hidden' or ''))
    62         self.w(u'<input type="hidden" name="divid" value="%s" />' % divid)
    59         self.w(u'<input type="hidden" name="divid" value="%s" />' % divid)
    63         filter_hiddens(self.w, facets=','.join(facet.id for facet in facets), baserql=baserql)
    60         filter_hiddens(self.w, facets=','.join(wdg.facet.id for wdg in fwidgets), baserql=baserql)
    64         self.w(u'<table class="filter">\n')
    61         self.w(u'<table class="filter">\n')
    65         self.w(u'<tr>\n')
    62         self.w(u'<tr>\n')
    66         for facet in facets:
    63         for wdg in fwidgets:
    67             self.w(u'<td>')
    64             self.w(u'<td>')
    68             facet.get_widget().render(w=self.w)
    65             wdg.render(w=self.w)
    69             self.w(u'</td>\n')
    66             self.w(u'</td>\n')
    70         self.w(u'</tr>\n')
    67         self.w(u'</tr>\n')
    71         self.w(u'</table>\n')
    68         self.w(u'</table>\n')
    72         self.w(u'</fieldset>\n')
    69         self.w(u'</fieldset>\n')
    73         self.w(u'</form>\n')
    70         self.w(u'</form>\n')