web/views/treeview.py
branchstable
changeset 4407 e4f921a68703
parent 4212 ab6573088b4a
child 4411 d0bde029f625
equal deleted inserted replaced
4406:b3f61c38526b 4407:e4f921a68703
    57         ulid = ' '
    57         ulid = ' '
    58         if toplevel:
    58         if toplevel:
    59             self._init_headers(treeid, toplevel_thru_ajax)
    59             self._init_headers(treeid, toplevel_thru_ajax)
    60             ulid = ' id="tree-%s"' % treeid
    60             ulid = ' id="tree-%s"' % treeid
    61         self.w(u'<ul%s class="%s">' % (ulid, self.css_classes))
    61         self.w(u'<ul%s class="%s">' % (ulid, self.css_classes))
    62         for rowidx in xrange(len(self.rset)):
    62         for i, entity in enumerate(sorted(self.rset.entities(), key=lambda x: x.dc_title())):
    63             self.wview(self.itemvid, self.rset, row=rowidx, col=0,
    63             if i+1 < len(self.rset):
    64                        vid=subvid, parentvid=self.id, treeid=treeid, **morekwargs)
    64                 morekwargs['is_last'] = False
       
    65             else:
       
    66                 morekwargs['is_last'] = True
       
    67             entity.view(self.itemvid, vid=subvid, parentvid=self.id,
       
    68                         treeid=treeid, w=self.w, **morekwargs)
    65         self.w(u'</ul>')
    69         self.w(u'</ul>')
    66 
    70 
    67     def cell_call(self, *args, **allargs):
    71     def cell_call(self, *args, **allargs):
    68         """ does not makes much sense until you have to invoke
    72         """ does not makes much sense until you have to invoke
    69         somentity.view('treeview') """
    73         somentity.view('treeview') """
    70         allargs.pop('row')
    74         allargs.pop('row')
    71         allargs.pop('col')
    75         allargs.pop('col')
    72         self.call(*args, **allargs)
    76         self.call(*args, **allargs)
       
    77 
    73 
    78 
    74 class FileTreeView(TreeView):
    79 class FileTreeView(TreeView):
    75     """specific version of the treeview to display file trees
    80     """specific version of the treeview to display file trees
    76     """
    81     """
    77     id = 'filetree'
    82     id = 'filetree'
   127         treestate = cookies.get(treecookiename(treeid))
   132         treestate = cookies.get(treecookiename(treeid))
   128         if treestate:
   133         if treestate:
   129             return str(eeid) in treestate.value.split(';')
   134             return str(eeid) in treestate.value.split(';')
   130         return self.default_branch_state_is_open
   135         return self.default_branch_state_is_open
   131 
   136 
   132     def cell_call(self, row, col, treeid, vid='oneline', parentvid='treeview', **morekwargs):
   137     def cell_call(self, row, col, treeid, vid='oneline', parentvid='treeview',
       
   138                   is_last=False, **morekwargs):
   133         w = self.w
   139         w = self.w
   134         entity = self.entity(row, col)
   140         entity = self.entity(row, col)
   135         liclasses = []
   141         liclasses = []
   136         is_last = row == len(self.rset) - 1
       
   137         is_open = self.open_state(entity.eid, treeid)
   142         is_open = self.open_state(entity.eid, treeid)
   138         is_leaf = not hasattr(entity, 'is_leaf') or entity.is_leaf()
   143         is_leaf = not hasattr(entity, 'is_leaf') or entity.is_leaf()
   139         if is_leaf:
   144         if is_leaf:
   140             if is_last:
   145             if is_last:
   141                 liclasses.append('last')
   146                 liclasses.append('last')