Add basic "Buefy" support for grids (master index view)
still pretty experimental at this point, but making progress
This commit is contained in:
parent
3cef591719
commit
8d6ecc3ec7
9 changed files with 296 additions and 15 deletions
|
@ -122,6 +122,8 @@ class MasterView(View):
|
|||
|
||||
grid_index = None
|
||||
use_index_links = False
|
||||
# this should be turned on per-view as progress is made
|
||||
use_buefy = False
|
||||
|
||||
has_versions = False
|
||||
help_url = None
|
||||
|
@ -265,6 +267,7 @@ class MasterView(View):
|
|||
"""
|
||||
self.listing = True
|
||||
grid = self.make_grid()
|
||||
use_buefy = self.use_buefy and self.rattail_config.getbool('tailbone', 'grids.use_buefy')
|
||||
|
||||
# If user just refreshed the page with a reset instruction, issue a
|
||||
# redirect in order to clear out the query string.
|
||||
|
@ -275,16 +278,28 @@ class MasterView(View):
|
|||
if grid.pageable and hasattr(grid, 'pager'):
|
||||
self.first_visible_grid_index = grid.pager.first_item
|
||||
|
||||
# Return grid only, if partial page was requested.
|
||||
# return grid only, if partial page was requested
|
||||
if self.request.params.get('partial'):
|
||||
if six.PY3:
|
||||
self.request.response.content_type = 'text/html'
|
||||
else:
|
||||
self.request.response.content_type = b'text/html'
|
||||
self.request.response.text = grid.render_grid()
|
||||
return self.request.response
|
||||
if use_buefy:
|
||||
# render grid data only, as JSON
|
||||
return render_to_response('json', grid.get_buefy_data(),
|
||||
request=self.request)
|
||||
else: # just do traditional thing, render grid HTML
|
||||
self.request.response.content_type = str('text/html')
|
||||
self.request.response.text = grid.render_grid()
|
||||
return self.request.response
|
||||
|
||||
return self.render_to_response('index', {'grid': grid})
|
||||
context = {
|
||||
'grid': grid,
|
||||
'use_buefy': use_buefy,
|
||||
}
|
||||
|
||||
if use_buefy:
|
||||
context['grid_columns'] = grid.get_buefy_columns()
|
||||
context['grid_data'] = grid.get_buefy_data()
|
||||
context['static_data'] = grid.has_static_data()
|
||||
|
||||
return self.render_to_response('index', context)
|
||||
|
||||
def make_grid(self, factory=None, key=None, data=None, columns=None, **kwargs):
|
||||
"""
|
||||
|
@ -2246,9 +2261,11 @@ class MasterView(View):
|
|||
"""
|
||||
actions = []
|
||||
prefix = self.get_permission_prefix()
|
||||
use_buefy = self.use_buefy and self.rattail_config.getbool('tailbone', 'grids.use_buefy')
|
||||
if self.viewable and self.request.has_perm('{}.view'.format(prefix)):
|
||||
url = self.get_view_index_url if self.use_index_links else None
|
||||
actions.append(self.make_action('view', icon='zoomin', url=url))
|
||||
icon = 'eye' if use_buefy else 'zoomin'
|
||||
actions.append(self.make_action('view', icon=icon, url=url))
|
||||
return actions
|
||||
|
||||
def get_view_index_url(self, row, i):
|
||||
|
@ -2261,8 +2278,10 @@ class MasterView(View):
|
|||
"""
|
||||
actions = []
|
||||
prefix = self.get_permission_prefix()
|
||||
use_buefy = self.use_buefy and self.rattail_config.getbool('tailbone', 'grids.use_buefy')
|
||||
if self.editable and self.request.has_perm('{}.edit'.format(prefix)):
|
||||
actions.append(self.make_action('edit', icon='pencil', url=self.default_edit_url))
|
||||
icon = 'edit' if use_buefy else 'pencil'
|
||||
actions.append(self.make_action('edit', icon=icon, url=self.default_edit_url))
|
||||
if self.deletable and self.request.has_perm('{}.delete'.format(prefix)):
|
||||
actions.append(self.make_action('delete', icon='trash', url=self.default_delete_url))
|
||||
return actions
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue