[rhmessaging-commits] rhmessaging commits: r2443 - mgmt/trunk/cumin/python/wooly.

rhmessaging-commits at lists.jboss.org rhmessaging-commits at lists.jboss.org
Thu Sep 11 12:47:27 EDT 2008


Author: eallen
Date: 2008-09-11 12:47:27 -0400 (Thu, 11 Sep 2008)
New Revision: 2443

Modified:
   mgmt/trunk/cumin/python/wooly/tables.py
Log:
Making hidden columns non-class data dependent (so it works with multiple users)

Modified: mgmt/trunk/cumin/python/wooly/tables.py
===================================================================
--- mgmt/trunk/cumin/python/wooly/tables.py	2008-09-11 16:42:33 UTC (rev 2442)
+++ mgmt/trunk/cumin/python/wooly/tables.py	2008-09-11 16:47:27 UTC (rev 2443)
@@ -10,7 +10,6 @@
 
         self.columns = list()
         self.headers_by_column = dict()
-        self.hidden_column_names = list()
 
         # which column are we sorting on
         self.scolumn = Parameter(app, "col")
@@ -21,6 +20,81 @@
         self.reversed.default = False
         self.add_parameter(self.reversed)
 
+        # list of columns that default to hidden
+        self.hidden_column_names = list()
+
+        # list of column indexes that have been shown 
+        self.vcols = Attribute(app, "vcols")
+        self.add_attribute(self.vcols)
+
+    def add_hidden_column(self, column):
+        self.add_column(column)
+        self.hide_column(column.name)
+        
+    def hide_column(self, column_name):
+        self.hidden_column_names.append(column_name)
+        
+    def show_column(self, session, column_name):
+        if column_name in self.hidden_column_names:
+            vlist = self.get_vlist(session)
+            shown, vindex = self.is_shown(session, column_name, vlist)
+            if not shown:
+                vlist.append(vindex)
+                vcols = "_".join(vlist)
+                self.vcols.set(session, vcols)
+        
+    def render_headers(self, session, *args):
+        writer = Writer()
+
+        vlist = self.get_vlist(session)
+        for column in self.columns:
+            show = True
+            if column.name in self.hidden_column_names:
+                show, vindex = self.is_shown(session, column.name, vlist)
+                
+            if show:
+                header = self.headers_by_column[column]
+                writer.write(header.render(session))
+
+        return writer.to_string()
+
+    def render_column_count(self, session, *args):
+        vlist = self.get_vlist(session)
+        return len(self.columns) - len(self.hidden_column_names) + len(vlist)
+
+    def render_cells(self, session, item):
+        writer = Writer()
+
+        vlist = self.get_vlist(session)
+        for col in self.columns:
+            col.set_item(session, item)
+            render = True
+            if col.name in self.hidden_column_names:
+                render, vindex = self.is_shown(session, col.name, vlist)
+                
+            if render:
+                writer.write(col.render(session))
+
+        return writer.to_string()
+
+    def is_shown(self, session, name, vlist=None):
+        if vlist is None:
+            vlist = self.get_vlist(session)
+        for i in range(len(self.columns)): 
+            if self.columns[i].name == name:
+                return str(i) in vlist, str(i)
+            
+        return False, 0
+            
+    def get_vlist(self, session):
+        """ get list of visibilized columns """
+        
+        vcols = self.vcols.get(session)
+        if vcols:
+            return vcols.split("_")
+        else:
+            return []
+
     def add_column(self, column):
         self.columns.append(column)
         self.add_child(column)
@@ -32,17 +106,6 @@
         if self.scolumn.default is None:
             self.scolumn.default = column.name
 
-    def add_hidden_column(self, column):
-        self.add_column(column)
-        self.hide_column(column.name)
-        
-    def hide_column(self, column_name):
-        self.hidden_column_names.append(column_name)
-        
-    def show_column(self, column_name):
-        if column_name in self.hidden_column_names:
-            self.hidden_column_names.remove(column_name)
-        
     def set_header(self, column, header):
         self.headers_by_column[column] = header
 
@@ -70,29 +133,6 @@
         count = self.get_item_count(session, *args)
         return "%i %s" % (count, count == 1 and "item" or "items")
 
-    def render_headers(self, session, *args):
-        writer = Writer()
-
-        for column in self.columns:
-            if not column.name in self.hidden_column_names:
-                header = self.headers_by_column[column]
-                writer.write(header.render(session))
-
-        return writer.to_string()
-
-    def render_column_count(self, session, *args):
-        return len(self.columns) - len(self.hidden_column_names)
-
-    def render_cells(self, session, item):
-        writer = Writer()
-
-        for col in self.columns:
-            col.set_item(session, item)
-            if not col.name in self.hidden_column_names:
-                writer.write(col.render(session))
-
-        return writer.to_string()
-
     def render_none(self, session, *args):
         """For producing a message when the table is empty"""
         




More information about the rhmessaging-commits mailing list