diff --git a/scm-webapp/src/main/webapp/resources/js/repository/sonia.repository.js b/scm-webapp/src/main/webapp/resources/js/repository/sonia.repository.js index 2a5b7d5422..d7313ea9b6 100644 --- a/scm-webapp/src/main/webapp/resources/js/repository/sonia.repository.js +++ b/scm-webapp/src/main/webapp/resources/js/repository/sonia.repository.js @@ -90,3 +90,40 @@ Sonia.repository.DefaultPanel = { bodyCssClass: 'x-panel-mc', html: 'Add or select an Repository' } + +// load object from store or from web service + +Sonia.repository.get = function(id, callback){ + function execCallback(item){ + if (Ext.isFunction(callback)){ + callback(item); + } else { + callback.call(callback.scope, item); + } + } + + var grid = Ext.getCmp('repositoryGrid'); + if ( grid ){ + var store = grid.getStore(); + if (store){ + var rec = store.getById(id); + if (rec){ + execCallback(rec.data); + } + } + } + + Ext.Ajax.request({ + url: restUrl + 'repositories/' + id + '.json', + method: 'GET', + scope: this, + success: function(response){ + execCallback(Ext.decode(response.responseText)); + }, + failure: function(result){ + main.handleFailure( + result.status + ); + } + }); +} \ No newline at end of file diff --git a/scm-webapp/src/main/webapp/resources/js/repository/sonia.repository.repositorybrowser.js b/scm-webapp/src/main/webapp/resources/js/repository/sonia.repository.repositorybrowser.js index c0391f9da0..cab2368ec3 100644 --- a/scm-webapp/src/main/webapp/resources/js/repository/sonia.repository.repositorybrowser.js +++ b/scm-webapp/src/main/webapp/resources/js/repository/sonia.repository.repositorybrowser.js @@ -344,26 +344,15 @@ Sonia.History.register('repositorybrowser', function(params){ main.getMainTabPanel().setActiveTab(id); tab.changeDirectory(path); } else { - Ext.Ajax.request({ - url: restUrl + 'repositories/' + params[0] + '.json', - method: 'GET', - scope: this, - success: function(response){ - var item = Ext.decode(response.responseText); - main.addTab({ - id: id, - xtype: 'repositoryBrowser', - repository: item, - revision: revision, - path: path, - closable: true - }) - }, - failure: function(result){ - main.handleFailure( - result.status - ); - } + Sonia.repository.get(params[0], function(repository){ + main.addTab({ + id: id, + xtype: 'repositoryBrowser', + repository: repository, + revision: revision, + path: path, + closable: true + }) }); } }