From dd3b761b84e8b8fefa6e39944d4b87f8636b683e Mon Sep 17 00:00:00 2001 From: Eric Bollengier Date: Mon, 12 Jan 2009 21:32:15 +0000 Subject: [PATCH] ebl first cut of limit/offset feature for file list git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@8364 91ce42f0-d328-0410-95d8-f526ca767f89 --- gui/bweb/html/bresto.js | 89 +++++++++++++++++++++++++++++++++++++++-- gui/bweb/lib/Bweb.pm | 1 + 2 files changed, 86 insertions(+), 4 deletions(-) diff --git a/gui/bweb/html/bresto.js b/gui/bweb/html/bresto.js index 40ef7e8a9b..7ef7504945 100644 --- a/gui/bweb/html/bresto.js +++ b/gui/bweb/html/bresto.js @@ -50,12 +50,15 @@ Ext.brestore.client=''; // selected client Ext.brestore.rclient=''; // selected client for resto Ext.brestore.storage=''; // selected storage for resto Ext.brestore.path=''; // current path (without user location) +Ext.brestore.pathid=0; // current pathid Ext.brestore.root_path=''; // user location Ext.brestore.media_store; // media store Ext.brestore.option_vosb = false; Ext.brestore.option_vafv = false; Ext.brestore.dlglaunch; Ext.brestore.use_filerelocation=false; +Ext.brestore.limit = 5000; +Ext.brestore.offset = 0; function get_node_path(node) { var temp=''; @@ -80,6 +83,8 @@ function init_params(baseParams) } else { baseParams['date'] = Ext.brestore.jobdate; } + baseParams['offset'] = Ext.brestore.offset; + baseParams['limit'] = Ext.brestore.limit; return baseParams; } @@ -131,6 +136,8 @@ Ext.onReady(function(){ var click_cb = function(node, event) { Ext.brestore.path = get_node_path(node); + Ext.brestore.pathid = node.id; + Ext.brestore.offset=0; where_field.setValue(Ext.brestore.path); file_store.removeAll(); file_versions_store.removeAll(); @@ -214,6 +221,78 @@ Ext.onReady(function(){ // by default columns are sortable cm.defaultSortable = true; + function update_limits() { + Ext.get('txt-file-start').setValue(Ext.brestore.offset); + Ext.get('txt-file-limit').setValue(Ext.brestore.limit); + } + + var file_paging = new Ext.Toolbar({ + items: [ + { + id: 'bp-file-prev', + icon: '/bweb/ext/resources/images/default/grid/page-prev.gif', + cls: '.x-btn-icon', + tooltip: 'Last', + handler: function() { + if (Ext.brestore.offset > 0) { + Ext.brestore.offset -= Ext.brestore.limit; + if (Ext.brestore.offset < 0) { + Ext.brestore.offset=0; + } + file_store.removeAll(); + file_versions_store.removeAll(); + file_store.load({params:init_params({action: 'list_files', + path:Ext.brestore.path, + node:Ext.brestore.pathid}) + }); + update_limits(); + } + } + }, { + id: 'txt-file-start', + xtype: 'numberfield', + width: 60, + value: Ext.brestore.offset + }, { + xtype: 'tbtext', + text: '-' + }, { + id: 'txt-file-limit', + xtype: 'numberfield', + width: 60, + value: Ext.brestore.limit + }, { + id: 'bp-file-next', + icon: '/bweb/ext/resources/images/default/grid/page-next.gif', + cls: '.x-btn-icon', + tooltip: 'Next', + handler: function(a,b,c) { + if (file_store.getCount() >= Ext.brestore.limit) { + Ext.brestore.offset += Ext.brestore.limit; + file_store.removeAll(); + file_versions_store.removeAll(); + file_store.load({params:init_params({action: 'list_files', + path:Ext.brestore.path, + node:Ext.brestore.pathid}) + }); + update_limits(); + } + } + }, '->', { + id: 'txt-file-pattern', + xtype: 'textfield', + text: 'pattern...' + }, { + id: 'bp-file-match', + icon: '/bweb/ext/resources/images/default/grid/refresh.gif', + cls: '.x-btn-icon', + tooltip: 'Refresh', + handler: function(a,b,c) { + } + } + ] + }); + var file_grid = new Ext.grid.GridPanel({ id: 'div-files', store: file_store, @@ -362,7 +441,7 @@ Ext.onReady(function(){ proxy: new Ext.data.HttpProxy({ url: '/cgi-bin/bweb/bresto.pl', method: 'GET', - params:{offset:0, limit:50 } + params:{start:0, limit:50 } }), reader: new Ext.data.ArrayReader({}, @@ -498,6 +577,7 @@ Ext.onReady(function(){ Ext.brestore.jobid=0; Ext.brestore.jobdate = ''; Ext.brestore.root_path=''; + Ext.brestore.offset=0; job_combo.clearValue(); file_store.removeAll(); file_versions_store.removeAll(); @@ -516,7 +596,7 @@ Ext.onReady(function(){ proxy: new Ext.data.HttpProxy({ url: '/cgi-bin/bweb/bresto.pl', method: 'GET', - params:{offset:0, limit:50 } + params:{start:0, limit:50 } }), reader: new Ext.data.ArrayReader({ @@ -668,7 +748,8 @@ Ext.onReady(function(){ title: 'Directory content', region: 'center', minSize: '33%', - items: file_grid + items: file_grid, + bbar: file_paging }, { title: 'File version', region: 'east', @@ -890,7 +971,7 @@ Ext.onReady(function(){ proxy: new Ext.data.HttpProxy({ url: '/cgi-bin/bweb/bresto.pl', method: 'GET', - params:{offset:0, limit:50 } + params:{start:0, limit:50 } }), reader: new Ext.data.ArrayReader({ diff --git a/gui/bweb/lib/Bweb.pm b/gui/bweb/lib/Bweb.pm index 9c41e7c931..85605a78b4 100644 --- a/gui/bweb/lib/Bweb.pm +++ b/gui/bweb/lib/Bweb.pm @@ -1757,6 +1757,7 @@ sub get_form limit => 100, cost => 10, offset => 0, + start => 0, width => 640, height => 480, jobid => 0, -- 2.39.5