diff -r e25a3c2f5393 -r 68d4211518c5 web/views/tableview.py --- a/web/views/tableview.py Wed Jan 28 15:28:32 2009 +0100 +++ b/web/views/tableview.py Wed Jan 28 16:28:44 2009 +0100 @@ -24,11 +24,35 @@ id = 'table' title = _('table') finalview = 'final' + + def form_filter(self, divid, displaycols, displayactions, displayfilter, + hidden=True): + rqlst = self.rset.syntax_tree() + # union not yet supported + if len(rqlst.children) != 1: + return () + rqlst.save_state() + mainvar, baserql = prepare_facets_rqlst(rqlst, self.rset.args) + facets = [facet for facet in self.vreg.possible_vobjects( + 'facets', self.req, self.rset, context='tablefilter', + filtered_variable=mainvar) + if facet.get_widget()] + rqlst.recover() + if facets: + self._generate_form(divid, baserql, facets, hidden, + vidargs={'displaycols': displaycols, + 'displayactions': displayactions, + 'displayfilter': displayfilter}) + return self.show_hide_actions(divid, not hidden) + return () - def generate_form(self, divid, baserql, facets, hidden=True, vidargs={}): + def _generate_form(self, divid, baserql, facets, hidden=True, vidargs={}): """display a form to filter table's content. This should only occurs when a context eid is given """ + wdgs = [facet.get_widget() for facet in facets] + if not wdgs: + return self.req.add_js( ('cubicweb.ajax.js', 'cubicweb.formfilter.js')) # drop False / None values from vidargs vidargs = dict((k, v) for k, v in vidargs.iteritems() if v) @@ -40,11 +64,9 @@ self.w(u'\n') self.w(u'\n') for facet in facets: - wdg = facet.get_widget() - if wdg is not None: - self.w(u'\n') + self.w(u'\n') self.w(u'\n') self.w(u'
') - wdg.render(w=self.w) - self.w(u'') + facet.get_widget().render(w=self.w) + self.w(u'
\n') self.w(u'\n') @@ -117,22 +139,8 @@ if title: self.w(u'

%s

\n' % title) if displayfilter: - rqlst.save_state() - try: - mainvar, baserql = prepare_facets_rqlst(rqlst, rset.args) - except NotImplementedError: - # UNION query - facets = None - else: - facets = list(self.vreg.possible_vobjects('facets', req, rset, - context='tablefilter', - filtered_variable=mainvar)) - self.generate_form(divid, baserql, facets, hidden, - vidargs={'displaycols': displaycols, - 'displayfilter': displayfilter, - 'displayactions': displayactions}) - actions += self.show_hide_actions(divid, not hidden) - rqlst.recover() + actions += self.form_filter(divid, displaycols, displayfilter, + displayactions) elif displayfilter: actions += self.show_hide_actions(divid, True) self.w(u'
%s\n' % title) mainindex = self.main_var_index() if mainindex is not None: - rqlst = self.rset.syntax_tree() - # union not yet supported - if len(rqlst.children) == 1: - rqlst.save_state() - mainvar, baserql = prepare_facets_rqlst(rqlst, self.rset.args) - facets = list(self.vreg.possible_vobjects('facets', self.req, self.rset, - context='tablefilter', - filtered_variable=mainvar)) - - if facets: - self.generate_form(divid, baserql, facets, - vidargs={'displaycols': displaycols, - 'displayactions': displayactions, - 'displayfilter': True}) - actions = self.show_hide_actions(divid, False) - rqlst.recover() + actions = self.form_filter(divid, displaycols, displayactions, True) + else: + actions = () if not subvid and 'subvid' in self.req.form: subvid = self.req.form.pop('subvid') self.view('table', self.req.execute(actrql),