[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