From fd700e06f4cac4f79a5658576f5e9cd4095615d0 Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Fri, 23 Aug 2019 19:28:36 -0500 Subject: [PATCH] Let a grid have custom ajax data url i.e. instead of assuming we should GET the current "partial" page, can use a different URL altogether now --- tailbone/grids/core.py | 8 ++++++++ tailbone/static/js/tailbone.buefy.grid.js | 2 +- tailbone/templates/grids/buefy.mako | 1 + 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/tailbone/grids/core.py b/tailbone/grids/core.py index 8f6e45df..f9f13d27 100644 --- a/tailbone/grids/core.py +++ b/tailbone/grids/core.py @@ -74,6 +74,7 @@ class Grid(object): 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, + ajax_data_url=None, **kwargs): self.key = key @@ -127,6 +128,13 @@ class Grid(object): self.more_actions = more_actions or [] self.delete_speedbump = delete_speedbump + if ajax_data_url: + self.ajax_data_url = ajax_data_url + elif self.request: + self.ajax_data_url = self.request.current_route_url() + else: + self.ajax_data_url = '' + self._whgrid_kwargs = kwargs def make_columns(self): diff --git a/tailbone/static/js/tailbone.buefy.grid.js b/tailbone/static/js/tailbone.buefy.grid.js index 13fb8f00..ee873c6d 100644 --- a/tailbone/static/js/tailbone.buefy.grid.js +++ b/tailbone/static/js/tailbone.buefy.grid.js @@ -46,7 +46,7 @@ let TailboneGrid = { } this.loading = true - this.$http.get(`?${params}`).then(({ data }) => { + this.$http.get(`${this.ajaxDataUrl}?${params}`).then(({ data }) => { this.data = data.data this.rowStatusMap = data.row_status_map this.total = data.total_items diff --git a/tailbone/templates/grids/buefy.mako b/tailbone/templates/grids/buefy.mako index a1a6bf3b..9fcf5f9b 100644 --- a/tailbone/templates/grids/buefy.mako +++ b/tailbone/templates/grids/buefy.mako @@ -205,6 +205,7 @@ loading: false, checkedRows: [], selectedFilter: null, + ajaxDataUrl: ${json.dumps(grid.ajax_data_url)|n}, data: ${json.dumps(grid_data['data'])|n}, rowStatusMap: ${json.dumps(grid_data['row_status_map'])|n},