moksha/public/javascript/ui/moksha.ui.grid.js | 98 ++++++++++++++++++++++++++ 1 file changed, 98 insertions(+)
New commits: commit 2533c08bac8d0ea7dddd4e9f403b1af59b342bd3 Merge: 6190649... 15c8945... Author: John (J5) Palmieri johnp@redhat.com Date: Mon Mar 30 19:00:13 2009 -0400
Merge branch 'master' of git+ssh://johnp@git.fedorahosted.org/git/moksha
commit 61906499bd23bf8ce17f9338c84b7a6e7c5e51c3 Author: John (J5) Palmieri johnp@redhat.com Date: Mon Mar 30 18:59:44 2009 -0400
add numeric pagination
diff --git a/moksha/public/javascript/ui/moksha.ui.grid.js b/moksha/public/javascript/ui/moksha.ui.grid.js index 7d1d269..cd12a9a 100644 --- a/moksha/public/javascript/ui/moksha.ui.grid.js +++ b/moksha/public/javascript/ui/moksha.ui.grid.js @@ -163,6 +163,11 @@ self.refresh_data(event, search_criteria); },
+ goto_page: function(page) { + this.options.page_num = page; + this.request_data_refresh(); + }, + request_update: function(search_criteria) { var self = this;
@@ -195,9 +200,28 @@
var results = function(json) { self.clear(); + for (var i in json.rows) { self.append_row(json.rows[i]); } + + var tr = json.total_rows; + var vr = self.visible_row_count(); + var sr = json.start_row; + var rpp = json.rows_per_page; + + console.log(json); + var msg = ''; + var pager = ''; + if (vr < tr) { + msg = 'Viewing ' + vr.toString() + ' of ' + tr.toString(); + msg += ' rows.'; + + } + + $('.message', self.$pager_bottom_placeholder).html(msg); + var pager = self._generate_numerical_pager(tr, sr, rpp); + $('.pager', self.$pager_bottom_placeholder).html(pager); }
var dispatch_data = {} @@ -314,9 +338,79 @@ self.element.parent().prepend($overlay); self.$overlay_div = $overlay;
+ var $pager_bottom_placeholder = $('<div></div>').addClass(o.pagerBottomClass); + $pager_bottom_placeholder.append($("<span />").addClass('message')); + $pager_bottom_placeholder.append($("<span></span>").addClass('pager')); + $pager_bottom_placeholder.insertAfter(self.element); + self.$pager_bottom_placeholder = $pager_bottom_placeholder; + self.request_data_refresh(); },
+ _generate_numerical_pager: function (total_rows, start_row, rows_per_page) { + var self = this; + var o = self.options; + var total_pages = parseInt(total_rows / rows_per_page); + if (total_rows != total_pages * rows_per_page) + total_pages += 1; + + var curr_page = parseInt((start_row + 0.5) / rows_per_page) + 1; + + var next_page = curr_page + 1; + + var pager = $('<span />'); + var goto_page = function() { + var page_jump = $(this).data('page.moksha_grid'); + self.goto_page(page_jump); + } + + var show_prev = parseInt((o.pagerPageLimit + 0.5) / 2) + 1; + var show_next = o.pagerPageLimit - show_prev; + var num_next_left = total_pages - curr_page; + if (num_next_left < show_next) + show_prev += (show_next - num_next_left) + + var page_list = []; + var i, j; + for (i = curr_page, j = 0; i > 0 && j < show_prev ; i--, j++) { + page_list.push(i); + } + + page_list.reverse(); + if (page_list.length < show_prev) + show_next += (show_prev - page_list.length) + + for (i = curr_page + 1, j = 0; i <= total_pages && j < show_next ; i++, j++) { + page_list.push(i); + } + + for (i in page_list) { + var page_num = page_list[i]; + var page = page_num; + if (page != curr_page) { + page = $('<a href="javascript:void(0)"></a>').html(page_num); + + page.data('page.moksha_grid', page_num); + page.click(goto_page); + } + + pager.append(" "); + pager.append(page); + pager.append(" "); + } + + if (curr_page < total_pages) { + var page = $('<a href="javascript:void(0)"></a>').html('Next'); + + page.data('page.moksha_grid', next_page); + page.click(goto_page); + pager.append(page); + + } + + return(pager); + }, + _generate_table: function() { var self = this; var t = $('<table />'); @@ -385,6 +479,10 @@ resource_path: null, blankRowClass: 'moksha-grid-blank-row', rowClass: 'moksha-grid-row', + moreClass: 'moksha-grid-more', + pagerTopClass: 'moksha-grid-pager-top', + pagerBottomClass: 'moksha-grid-pager-bottom', + pagerPageLimit: 10, loading_throbber: ["Loading", // list of img urls or text "Loading.", "Loading..",
moksha-commits@lists.fedorahosted.org