Add back-end support for multi-column grid sorting
or very nearly, anyway. front-end still just supports 1 column yet
This commit is contained in:
parent
4beca7af20
commit
6d7754cf2a
9 changed files with 222 additions and 202 deletions
tailbone/templates/grids
|
@ -202,7 +202,7 @@
|
|||
% endif
|
||||
|
||||
% if grid.sortable:
|
||||
:default-sort="[sortField, sortOrder]"
|
||||
:default-sort="sortingPriority[0]"
|
||||
backend-sorting
|
||||
@sort="onSort"
|
||||
% endif
|
||||
|
@ -352,8 +352,9 @@
|
|||
firstItem: ${json.dumps(grid_data['first_item'] if grid.pageable else None)|n},
|
||||
lastItem: ${json.dumps(grid_data['last_item'] if grid.pageable else None)|n},
|
||||
|
||||
sortField: ${json.dumps(grid.sortkey if grid.sortable else None)|n},
|
||||
sortOrder: ${json.dumps(grid.sortdir if grid.sortable else None)|n},
|
||||
% if grid.sortable:
|
||||
sortingPriority: ${json.dumps(grid.active_sorters)|n},
|
||||
% endif
|
||||
|
||||
## filterable: ${json.dumps(grid.filterable)|n},
|
||||
filters: ${json.dumps(filters_data if grid.filterable else None)|n},
|
||||
|
@ -454,8 +455,10 @@
|
|||
getBasicParams() {
|
||||
let params = {}
|
||||
% if grid.sortable:
|
||||
params.sortkey = this.sortField
|
||||
params.sortdir = this.sortOrder
|
||||
for (let i = 1; i <= this.sortingPriority.length; i++) {
|
||||
params['sort'+i+'key'] = this.sortingPriority[i-1][0]
|
||||
params['sort'+i+'dir'] = this.sortingPriority[i-1][1]
|
||||
}
|
||||
% endif
|
||||
% if grid.pageable:
|
||||
params.pagesize = this.perPage
|
||||
|
@ -535,8 +538,7 @@
|
|||
},
|
||||
|
||||
onSort(field, order) {
|
||||
this.sortField = field
|
||||
this.sortOrder = order
|
||||
this.sortingPriority = [[field, order]]
|
||||
// always reset to first page when changing sort options
|
||||
// TODO: i mean..right? would we ever not want that?
|
||||
this.currentPage = 1
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue