From 3f0dc2ad9af49b8d795cd65d062eb40fdb335b6c Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Wed, 1 Aug 2012 05:44:00 -0700 Subject: [PATCH] add tools to object index, extra columns to grid --- edbob/pyramid/forms/formalchemy/grid.py | 6 ++ edbob/pyramid/static/css/index.css | 24 +++++-- edbob/pyramid/templates/edbob/index.mako | 27 +++++--- .../templates/forms/grid_readonly.mako | 64 ++++++++++--------- 4 files changed, 75 insertions(+), 46 deletions(-) diff --git a/edbob/pyramid/forms/formalchemy/grid.py b/edbob/pyramid/forms/formalchemy/grid.py index 4e5fa3f..b217bc3 100644 --- a/edbob/pyramid/forms/formalchemy/grid.py +++ b/edbob/pyramid/forms/formalchemy/grid.py @@ -32,6 +32,7 @@ from webhelpers.html.tags import literal import formalchemy +import edbob from edbob.util import prettify @@ -75,6 +76,11 @@ class AlchemyGrid(formalchemy.Grid): self.clickable = config.get('clickable', False) self.deletable = config.get('deletable', False) self.pager = instances if isinstance(instances, paginate.Page) else None + self.extra_columns = [] + + def add_column(self, name, label, callback): + self.extra_columns.append( + edbob.Object(name=name, label=label, callback=callback)) def field_name(self, field): return field.name diff --git a/edbob/pyramid/static/css/index.css b/edbob/pyramid/static/css/index.css index 45ca9df..8760c0e 100644 --- a/edbob/pyramid/static/css/index.css +++ b/edbob/pyramid/static/css/index.css @@ -12,12 +12,11 @@ div.object-index { font-size: 10pt; - margin: auto; } -div.object-index div.wrapper { - overflow: auto; - padding-bottom: 10px; +div.object-index table.header { + padding-bottom: 5px; + width: 100%; } @@ -25,8 +24,11 @@ div.object-index div.wrapper { * Context Menu ******************************/ -div.object-index #context-menu { - float: right; +div.object-index table.header td.context-menu { + vertical-align: top; +} + +div.object-index table.header td.context-menu ul { list-style-type: none; text-align: right; } @@ -50,6 +52,16 @@ div.object-index div.filterset div.buttons * { } +/****************************** + * Tools + ******************************/ + +div.object-index table.header td.tools { + text-align: right; + vertical-align: bottom; +} + + /****************************** * Grids ******************************/ diff --git a/edbob/pyramid/templates/edbob/index.mako b/edbob/pyramid/templates/edbob/index.mako index fea438a..44d1af7 100644 --- a/edbob/pyramid/templates/edbob/index.mako +++ b/edbob/pyramid/templates/edbob/index.mako @@ -6,18 +6,27 @@ <%def name="context_menu_items()"> +<%def name="tools()">
-
-
    - ${self.context_menu_items()} -
- -
- ${search.render()|n} -
-
+ + + + + + + + +
+ ${search.render()|n} + +
    + ${self.context_menu_items()} +
+
+ ${self.tools()} +
${grid|n} diff --git a/edbob/pyramid/templates/forms/grid_readonly.mako b/edbob/pyramid/templates/forms/grid_readonly.mako index 275c5a8..72920ca 100644 --- a/edbob/pyramid/templates/forms/grid_readonly.mako +++ b/edbob/pyramid/templates/forms/grid_readonly.mako @@ -3,50 +3,52 @@ - % if checkboxes: - - % endif + % if checkboxes: + + % endif % for field in grid.iter_fields(): - ${grid.th_sortable(field)|n} - % endfor - % for i in range(len(grid.config['actions'])): - - % endfor - % if grid.deletable: - - % endif + ${grid.th_sortable(field)|n} + % endfor + % for col in grid.extra_columns: + + % endif % for i, row in enumerate(grid.rows): - <% grid._set_active(row) %> + <% grid._set_active(row) %> - % if checkboxes: - - % endif + % if checkboxes: + + % endif % for field in grid.iter_fields(): - - % endfor - ${grid.get_actions()} - % if grid.deletable: - - % endif - + + % endfor + % for col in grid.extra_columns: + + % endfor + % if grid.deletable: + + % endif + % endfor
${h.checkbox('check-all')}${h.checkbox('check-all')}  ${col.label} + % endfor + % if grid.deletable: +  
${h.checkbox('check-'+grid.model.uuid, disabled=True)}${h.checkbox('check-'+grid.model.uuid, disabled=True)}${grid.render_field(field, True)|n} 
${grid.render_field(field, True)|n}${col.callback(row)|n} 
% if hasattr(grid, 'pager') and grid.pager:
-

- showing - ${grid.pager.first_item} thru ${grid.pager.last_item} of ${grid.pager.item_count} -

- +

+ showing + ${grid.pager.first_item} thru ${grid.pager.last_item} of ${grid.pager.item_count} +

+
% endif