diff --git a/scm-webapp/src/main/webapp/resources/js/sonia.repository.js b/scm-webapp/src/main/webapp/resources/js/sonia.repository.js index a54aa5ab1d..97c88ffb51 100644 --- a/scm-webapp/src/main/webapp/resources/js/sonia.repository.js +++ b/scm-webapp/src/main/webapp/resources/js/sonia.repository.js @@ -46,24 +46,10 @@ Ext.ns('Sonia.repository'); // RepositoryGrid -Sonia.repository.Grid = Ext.extend(Ext.grid.GridPanel, { - - urlTemplate: '{0}', - mailtoTemplate: '{0}', - +Sonia.repository.Grid = Ext.extend(Sonia.rest.Grid, { + initComponent: function(){ - var selectionModel = new Ext.grid.RowSelectionModel({ - singleSelect: true - }); - - selectionModel.on({ - selectionchange: { - scope: this, - fn: this.selectionChanged - } - }); - var repositoryStore = new Sonia.rest.JsonStore({ url: restUrl + 'repositories.json', root: 'repositories', @@ -90,71 +76,44 @@ Sonia.repository.Grid = Ext.extend(Ext.grid.GridPanel, { }); var config = { - loadMask: true, autoExpandColumn: 'description', store: repositoryStore, - colModel: repositoryColModel, - sm: selectionModel + colModel: repositoryColModel }; Ext.apply(this, Ext.apply(this.initialConfig, config)); Sonia.repository.Grid.superclass.initComponent.apply(this, arguments); - - // load data - if ( debug ){ - console.debug( 'load repository list' ); - } - repositoryStore.load(); }, - reload: function(){ + selectItem: function(item){ if ( debug ){ - console.debug('reload store'); + console.debug( item.name + ' selected' ); } - this.store.load(); - }, - - selectionChanged: function(sm){ - var selected = sm.getSelected(); - if ( selected ){ - if ( debug ){ - console.debug( selected.data.name + ' selected' ); + var editPanel = Ext.getCmp('repositoryEditPanel'); + editPanel.removeAll(); + var panel = new Sonia.repository.FormPanel({ + item: selected.data, + region: 'south', + title: 'Repository Form', + padding: 5, + onUpdate: { + fn: this.reload, + scope: this + }, + onCreate: { + fn: this.reload, + scope: this } - var editPanel = Ext.getCmp('repositoryEditPanel'); - editPanel.removeAll(); - var panel = new Sonia.repository.FormPanel({ - item: selected.data, - region: 'south', - title: 'Repository Form', - padding: 5, - onUpdate: { - fn: this.reload, - scope: this - }, - onCreate: { - fn: this.reload, - scope: this - } - }); - editPanel.add(panel); - editPanel.doLayout(); - } + }); + editPanel.add(panel); + editPanel.doLayout(); }, renderRepositoryType: function(repositoryType){ return repositoryTypeStore.queryBy(function(rec){ return rec.data.name == repositoryType; }).itemAt(0).data.displayName; - }, - - renderUrl: function(url){ - return String.format( this.urlTemplate, url ); - }, - - renderMailto: function(mail){ - return String.format( this.mailtoTemplate, mail ); } - }); diff --git a/scm-webapp/src/main/webapp/resources/js/sonia.rest.js b/scm-webapp/src/main/webapp/resources/js/sonia.rest.js index 6eba193d3a..394c704592 100644 --- a/scm-webapp/src/main/webapp/resources/js/sonia.rest.js +++ b/scm-webapp/src/main/webapp/resources/js/sonia.rest.js @@ -58,3 +58,65 @@ Sonia.rest.JsonStore = Ext.extend( Ext.data.JsonStore, { } }); + +Sonia.rest.Grid = Ext.extend(Ext.grid.GridPanel, { + + urlTemplate: '{0}', + mailtoTemplate: '{0}', + + initComponent: function(){ + + var selectionModel = new Ext.grid.RowSelectionModel({ + singleSelect: true + }); + + selectionModel.on({ + selectionchange: { + scope: this, + fn: this.selectionChanged + } + }); + + var config = { + loadMask: true, + sm: selectionModel + }; + + Ext.apply(this, Ext.apply(this.initialConfig, config)); + Sonia.rest.Grid.superclass.initComponent.apply(this, arguments); + + // load store + if ( debug ){ + console.debug( 'load store' ); + } + this.store.load(); + }, + + reload: function(){ + if ( debug ){ + console.debug('reload store'); + } + this.store.load(); + }, + + selectionChanged: function(sm){ + var selected = sm.getSelected(); + if ( selected ){ + this.selectItem( selected.data ); + } + }, + + selectItem: function(item){ + + }, + + renderUrl: function(url){ + return String.format( this.urlTemplate, url ); + }, + + renderMailto: function(mail){ + return String.format( this.mailtoTemplate, mail ); + } + + +}); \ No newline at end of file diff --git a/scm-webapp/src/main/webapp/resources/js/sonia.user.js b/scm-webapp/src/main/webapp/resources/js/sonia.user.js index bcb0a43fbd..77572cfd1b 100644 --- a/scm-webapp/src/main/webapp/resources/js/sonia.user.js +++ b/scm-webapp/src/main/webapp/resources/js/sonia.user.js @@ -33,23 +33,10 @@ Ext.ns('Sonia.user'); // UserGrid -Sonia.user.Grid = Ext.extend(Ext.grid.GridPanel, { - - mailtoTemplate: '{0}', +Sonia.user.Grid = Ext.extend(Sonia.rest.Grid, { initComponent: function(){ - var selectionModel = new Ext.grid.RowSelectionModel({ - singleSelect: true - }); - - selectionModel.on({ - selectionchange: { - scope: this, - fn: this.selectionChanged - } - }); - var userStore = new Sonia.rest.JsonStore({ url: restUrl + 'users.json', root: 'users', @@ -74,43 +61,19 @@ Sonia.user.Grid = Ext.extend(Ext.grid.GridPanel, { }); var config = { - loadMask: true, store: userStore, - colModel: userColModel, - sm: selectionModel + colModel: userColModel }; Ext.apply(this, Ext.apply(this.initialConfig, config)); Sonia.user.Grid.superclass.initComponent.apply(this, arguments); - - // load data - if ( debug ){ - console.debug( 'load user list' ); - } - userStore.load(); }, - reload: function(){ - if ( debug ){ - console.debug('reload store'); - } - this.store.load(); - }, - - selectionChanged: function(sm){ - var selected = sm.getSelected(); - if ( selected ){ - if ( debug ){ - console.debug( selected.data.name + ' selected' ); - } - } - }, - - renderMailto: function(mail){ - return String.format( this.mailtoTemplate, mail ); + selectItem: function(item){ + console.debug( item ); } }); // register xtype -Ext.reg('userGrid', Sonia.user.Grid); \ No newline at end of file +Ext.reg('userGrid', Sonia.user.Grid);