Improve checkbox click handling support for grids
i.e. let custom use define click handlers
This commit is contained in:
parent
a857d31776
commit
bcfb4f257d
5 changed files with 96 additions and 10 deletions
|
@ -73,7 +73,8 @@ class Grid(object):
|
|||
joiners={}, filterable=False, filters={}, use_byte_string_filters=False,
|
||||
sortable=False, sorters={}, default_sortkey=None, default_sortdir='asc',
|
||||
pageable=False, default_pagesize=20, default_page=1,
|
||||
checkboxes=False, checked=None, main_actions=[], more_actions=[], delete_speedbump=False,
|
||||
checkboxes=False, checked=None, check_handler=None, check_all_handler=None,
|
||||
main_actions=[], more_actions=[], delete_speedbump=False,
|
||||
ajax_data_url=None,
|
||||
**kwargs):
|
||||
|
||||
|
@ -124,6 +125,9 @@ class Grid(object):
|
|||
self.checked = checked
|
||||
if self.checked is None:
|
||||
self.checked = lambda item: False
|
||||
self.check_handler = check_handler
|
||||
self.check_all_handler = check_all_handler
|
||||
|
||||
self.main_actions = main_actions or []
|
||||
self.more_actions = more_actions or []
|
||||
self.delete_speedbump = delete_speedbump
|
||||
|
@ -1155,6 +1159,7 @@ class Grid(object):
|
|||
raw_data = self.make_visible_data()
|
||||
data = []
|
||||
status_map = {}
|
||||
checked = []
|
||||
|
||||
# iterate over data rows
|
||||
for i in range(len(raw_data)):
|
||||
|
@ -1197,6 +1202,11 @@ class Grid(object):
|
|||
if status:
|
||||
status_map[i] = status
|
||||
|
||||
# set checked flag if applicable
|
||||
if self.checkboxes:
|
||||
if self.checked(rowobj):
|
||||
checked.append(i)
|
||||
|
||||
data.append(row)
|
||||
|
||||
results = {
|
||||
|
@ -1204,6 +1214,13 @@ class Grid(object):
|
|||
'row_status_map': status_map,
|
||||
}
|
||||
|
||||
if self.checkboxes:
|
||||
results['checked_rows'] = checked
|
||||
# TODO: this seems a bit hacky, but is required for now to
|
||||
# initialize things on the client side...
|
||||
results['checked_rows_code'] = '[{}]'.format(
|
||||
', '.join(['TailboneGridCurrentData[{}]'.format(i) for i in checked]))
|
||||
|
||||
if self.pageable and self.pager is not None:
|
||||
results['total_items'] = self.pager.item_count
|
||||
results['per_page'] = self.pager.items_per_page
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue