improve clickable grid url stuff
This commit is contained in:
parent
f678d10187
commit
b6d48d692f
4 changed files with 22 additions and 24 deletions
|
@ -99,8 +99,8 @@ class AlchemyGrid(Grid):
|
||||||
return field.render_readonly()
|
return field.render_readonly()
|
||||||
return field.render()
|
return field.render()
|
||||||
|
|
||||||
def _row_attrs(self, row, i):
|
def row_attrs(self, row, i):
|
||||||
attrs = super(AlchemyGrid, self)._row_attrs(row, i)
|
attrs = super(AlchemyGrid, self).row_attrs(row, i)
|
||||||
if hasattr(row, 'uuid'):
|
if hasattr(row, 'uuid'):
|
||||||
attrs['uuid'] = row.uuid
|
attrs['uuid'] = row.uuid
|
||||||
return attrs
|
return attrs
|
||||||
|
|
|
@ -49,7 +49,8 @@ class Grid(edbob.Object):
|
||||||
checkboxes = False
|
checkboxes = False
|
||||||
deletable = False
|
deletable = False
|
||||||
partial_only = False
|
partial_only = False
|
||||||
row_attrs = None
|
row_route_name = None
|
||||||
|
row_route_kwargs = None
|
||||||
|
|
||||||
def __init__(self, request, **kwargs):
|
def __init__(self, request, **kwargs):
|
||||||
kwargs.setdefault('fields', OrderedDict())
|
kwargs.setdefault('fields', OrderedDict())
|
||||||
|
@ -95,12 +96,18 @@ class Grid(edbob.Object):
|
||||||
def render_field(self, field):
|
def render_field(self, field):
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
def _row_attrs(self, row, i):
|
def row_attrs(self, row, i):
|
||||||
attrs = {'class_': 'odd' if i % 2 else 'even'}
|
attrs = {'class_': 'odd' if i % 2 else 'even'}
|
||||||
return attrs
|
return attrs
|
||||||
|
|
||||||
def get_row_attrs(self, row, i):
|
def get_row_attrs(self, row, i):
|
||||||
attrs = self._row_attrs(row, i)
|
attrs = self.row_attrs(row, i)
|
||||||
if self.row_attrs:
|
if self.row_route_name:
|
||||||
attrs.update(self.row_attrs(row, i))
|
kwargs = {}
|
||||||
|
if self.row_route_kwargs:
|
||||||
|
if callable(self.row_route_kwargs):
|
||||||
|
kwargs = self.row_route_kwargs(row)
|
||||||
|
else:
|
||||||
|
kwargs = self.row_route_kwargs
|
||||||
|
attrs['url'] = self.request.route_url(self.row_route_name, **kwargs)
|
||||||
return format_attrs(**attrs)
|
return format_attrs(**attrs)
|
||||||
|
|
|
@ -250,22 +250,13 @@ $(function() {
|
||||||
$(this).removeClass('hovering');
|
$(this).removeClass('hovering');
|
||||||
});
|
});
|
||||||
|
|
||||||
$('div.grid.clickable table tbody tr').live('click', function() {
|
$('div.grid.clickable table tbody td').live('click', function() {
|
||||||
var div = $(this).parents('div.grid:first');
|
if (! $(this).hasClass('noclick')) {
|
||||||
if (div.attr('usedlg') == 'True') {
|
var row = $(this).parents('tr:first');
|
||||||
var dlg = get_dialog('grid-object');
|
var url = row.attr('url');
|
||||||
var data = {
|
if (url) {
|
||||||
'uuid': get_uuid(this),
|
location.href = url;
|
||||||
'partial': true,
|
}
|
||||||
};
|
|
||||||
dlg.load(div.attr('objurl'), data, function() {
|
|
||||||
dlg.dialog({
|
|
||||||
width: 500,
|
|
||||||
height: 450,
|
|
||||||
});
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
location.href = div.attr('objurl').replace(/%7Buuid%7D/, get_uuid(this));
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
<td class="${field.name}">${grid.render_field(field)}</td>
|
<td class="${field.name}">${grid.render_field(field)}</td>
|
||||||
% endfor
|
% endfor
|
||||||
% for col in grid.extra_columns:
|
% for col in grid.extra_columns:
|
||||||
<td class="${col.name}">${col.callback(row)}</td>
|
<td class="noclick ${col.name}">${col.callback(row)}</td>
|
||||||
% endfor
|
% endfor
|
||||||
% if grid.deletable:
|
% if grid.deletable:
|
||||||
<td class="delete"> </td>
|
<td class="delete"> </td>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue