From 87417e56ec2932902538c432ff4bae7a90832c96 Mon Sep 17 00:00:00 2001 From: Galen Charlton Date: Thu, 19 May 2011 12:51:00 -0400 Subject: [PATCH] improvements to AutoGrid * Added Limit links * Tweaked pager * show current page # * Do work in store and then setStore when complete. * Tweaked the filter so applying an empty filter resets the grid contents. * adjust circ matrix matchpoint and billing type pages to use improvements Author: Bob Wicksall Signed-off-by: Bob Wicksall Signed-off-by: Galen Charlton --- Open-ILS/web/js/dojo/openils/widget/AutoGrid.js | 89 ++++++++++++++++++++-- .../default/conify/global/config/billing_type.js | 1 + .../global/config/circ_matrix_matchpoint.tt2 | 4 +- 3 files changed, 87 insertions(+), 7 deletions(-) diff --git a/Open-ILS/web/js/dojo/openils/widget/AutoGrid.js b/Open-ILS/web/js/dojo/openils/widget/AutoGrid.js index ecbdf953e1..7ae38966e6 100644 --- a/Open-ILS/web/js/dojo/openils/widget/AutoGrid.js +++ b/Open-ILS/web/js/dojo/openils/widget/AutoGrid.js @@ -44,9 +44,12 @@ if(!dojo._hasResource['openils.widget.AutoGrid']) { this.inherited(arguments); this.initAutoEnv(); this.attr('structure', this._compileStructure()); - this.setStore(this.buildAutoStore()); + this.store = this.buildAutoStore(); this.cachedQueryOpts = {}; this._showing_create_pane = false; + this.pageNum = 1; + this.origLimit = this.displayLimit; + if(this.showColumnPicker) { if(!this.columnPickerPrefix) { @@ -91,13 +94,17 @@ if(!dojo._hasResource['openils.widget.AutoGrid']) { href : 'javascript:void(0);', onclick : function() { self.cachedQueryOpts.offset = self.displayOffset -= self.displayLimit; - if(self.displayOffset < 0) + if(self.displayOffset < 0) { self.cachedQueryOpts.offset = self.displayOffset = 0; + self.pageNum = 1; + } else { + self.pageNum--; + } self.refresh(); } }); - var forw = dojo.create('a', { + this.forw = dojo.create('a', { innerHTML : 'Next', // TODO i18n style : 'padding-right:6px;', href : 'javascript:void(0);', @@ -108,8 +115,9 @@ if(!dojo._hasResource['openils.widget.AutoGrid']) { }); dojo.place(this.paginator.domNode, this.domNode, 'before'); + self.pageNum++; dojo.place(back, this.paginator.domNode); - dojo.place(forw, this.paginator.domNode); + dojo.place(this.forw, this.paginator.domNode); if(this.showLoadFilter) { dojo.require('openils.widget.PCrudFilterDialog'); @@ -122,7 +130,12 @@ if(!dojo._hasResource['openils.widget.AutoGrid']) { var dialog = new openils.widget.PCrudFilterDialog({fmClass:self.fmClass}) dialog.onApply = function(filter) { self.resetStore(); - self.loadAll(self.cachedQueryOpts, filter); + self.pageNum = 1; + self.cachedQueryOpts.offset = self.displayOffset = 0; + if (filter.toSource() != "({})") + self.loadAll(self.cachedQueryOpts, filter) + else + self.loadAll(self.cachedQueryOpts, self.query); }; dialog.startup(); dialog.show(); @@ -138,6 +151,50 @@ if(!dojo._hasResource['openils.widget.AutoGrid']) { style:'height:16px;width:16px;' }); dojo.place(this.loadProgressIndicator, this.paginator.domNode); + + // Limit Selector + this.limitSelect = dojo.create('div', { + innerHTML : "Limit ("+self.displayLimit+"): ", // TODO i18n + style : 'padding-left:60px;display:inline;', + }); + dojo.place(this.limitSelect, this.paginator.domNode); + + this.limit = dojo.create('a', { + innerHTML : this.origLimit, + style : 'padding-right:6px;', + href : 'javascript:void(0);', + onclick : function() { + self.changeLimit(1); + } + }); + dojo.place(this.limit, this.paginator.domNode); + + this.limit2 = dojo.create('a', { + innerHTML : this.origLimit*2, + style : 'padding-right:6px;', + href : 'javascript:void(0);', + onclick : function() { + self.changeLimit(2); + } + }); + dojo.place(this.limit2, this.paginator.domNode); + + this.limit20 = dojo.create('a', { + innerHTML : this.origLimit*20, + style : 'padding-right:6px;', + href : 'javascript:void(0);', + onclick : function() { + self.changeLimit(20); + } + }); + dojo.place(this.limit20, this.paginator.domNode); + + // page number + this.page = dojo.create('div', { + innerHTML : 'Page: 0', // TODO i18n + style : 'padding-left:60px;display:inline;', + }); + dojo.place(this.page, this.paginator.domNode); } }, @@ -560,7 +617,7 @@ if(!dojo._hasResource['openils.widget.AutoGrid']) { }, resetStore : function() { - this.setStore(this.buildAutoStore()); + this.store = this.buildAutoStore(); }, refresh : function() { @@ -582,6 +639,13 @@ if(!dojo._hasResource['openils.widget.AutoGrid']) { ); opts = dojo.mixin(opts, { async : true, + self.setStore(self.store); + if (self.rowCount < self.displayLimit) + dojo.style(self.forw, 'visibility', 'hidden'); + else + dojo.style(self.forw, 'visibility', 'visible'); + + dojo.attr(self.page, "innerHTML", "Page: "+self.pageNum); streaming : true, onresponse : function(r) { var item = openils.Util.readResponse(r); @@ -591,6 +655,19 @@ if(!dojo._hasResource['openils.widget.AutoGrid']) { if(self.loadProgressIndicator) dojo.style(self.loadProgressIndicator, 'visibility', 'hidden'); } + }, + + changeLimit : function(multiplier) { + var self = this; + self.resetStore(); + self.cachedQueryOpts.offset = self.displayOffset = 0; + self.cachedQueryOpts.limit = self.displayLimit = self.origLimit*multiplier; + if(self.dataLoader) + self.dataLoader() + else + self.loadAll(self.cachedQueryOpts, self.cachedQuerySearch); + self.pageNum=1; + dojo.attr(self.limitSelect, "innerHTML", "Limit ("+self.displayLimit+"): "); }); this.cachedQuerySearch = search; diff --git a/Open-ILS/web/js/ui/default/conify/global/config/billing_type.js b/Open-ILS/web/js/ui/default/conify/global/config/billing_type.js index de27506856..a0bd9c7e99 100644 --- a/Open-ILS/web/js/ui/default/conify/global/config/billing_type.js +++ b/Open-ILS/web/js/ui/default/conify/global/config/billing_type.js @@ -55,6 +55,7 @@ function buildBTGrid() { btGrid.store.newItem(cbt.toStoreItem(e)); } ); + btGrid.setStore(btGrid.store); } } } diff --git a/Open-ILS/web/templates/default/conify/global/config/circ_matrix_matchpoint.tt2 b/Open-ILS/web/templates/default/conify/global/config/circ_matrix_matchpoint.tt2 index bd19e7ee64..a35282eb08 100644 --- a/Open-ILS/web/templates/default/conify/global/config/circ_matrix_matchpoint.tt2 +++ b/Open-ILS/web/templates/default/conify/global/config/circ_matrix_matchpoint.tt2 @@ -7,7 +7,8 @@
-- 2.11.0