Author: eallen
Date: 2008-09-22 15:46:15 -0400 (Mon, 22 Sep 2008)
New Revision: 2524
Modified:
mgmt/trunk/cumin/python/wooly/tables.py
Log:
Put visibility attribute on ItemTableColumn per Justin's recommendataion.
Modified: mgmt/trunk/cumin/python/wooly/tables.py
===================================================================
--- mgmt/trunk/cumin/python/wooly/tables.py 2008-09-22 18:23:23 UTC (rev 2523)
+++ mgmt/trunk/cumin/python/wooly/tables.py 2008-09-22 19:46:15 UTC (rev 2524)
@@ -20,81 +20,37 @@
self.reversed.default = False
self.add_parameter(self.reversed)
- # list of columns that default to hidden
- self.hidden_column_names = list()
+ def get_visible_columns(self, session):
+ # default impl
+ return [col for col in self.columns if col.visible]
+
+ def get_request_visible_columns(self, session, vlist):
+ return [col for col in self.columns if col.visible or col.name in vlist]
- # 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))
+ vlist = self.get_visible_columns(session)
+ for column in vlist:
+ 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)
+ vlist = self.get_visible_columns(session)
+ return len(vlist)
def render_cells(self, session, item):
writer = Writer()
- vlist = self.get_vlist(session)
- for col in self.columns:
+ vlist = self.get_visible_columns(session)
+ for col in vlist:
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))
+ 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)
@@ -135,7 +91,7 @@
def render_none(self, session, *args):
"""For producing a message when the table is
empty"""
-
+
return None
class ItemTableColumn(Widget):
@@ -144,6 +100,7 @@
self.header_class = ItemTableColumnHeader
self.alignment = None
+ self.visible = True
self.__item = Attribute(app, "item")
self.add_attribute(self.__item)