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);