From 4a0d7fee5d5e2e5d046c2a1f0451b3da8848f7bb Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Mon, 6 Sep 2010 11:26:57 +0200 Subject: [PATCH] implement showEditWindow in sonia.rest.js --- .../main/webapp/resources/js/sonia.rest.js | 54 ++++++++++++++++++- .../main/webapp/resources/js/sonia.sample.js | 8 +++ 2 files changed, 61 insertions(+), 1 deletion(-) 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 b2ee8a3867..960883f977 100644 --- a/scm-webapp/src/main/webapp/resources/js/sonia.rest.js +++ b/scm-webapp/src/main/webapp/resources/js/sonia.rest.js @@ -33,6 +33,7 @@ Sonia.rest.JsonStore = Ext.extend( Ext.data.JsonStore, { Sonia.rest.EditForm = Ext.extend(Ext.form.FormPanel, { title: 'Edit REST', + data: null, initComponent: function(){ @@ -54,6 +55,10 @@ Sonia.rest.EditForm = Ext.extend(Ext.form.FormPanel, { Ext.apply(this, Ext.apply(this.initialConfig, config)); Sonia.rest.EditForm.superclass.initComponent.apply(this, arguments); + + if ( this.data != null ){ + this.load(this.data); + } }, load: function(item){ @@ -146,6 +151,10 @@ Sonia.rest.Grid = Ext.extend(Ext.grid.GridPanel, { var store = this.store; + if ( debug ){ + console.debug( 'add item ' + item[this.idField] ); + } + Ext.Ajax.request({ url: this.restAddUrl, jsonData: item, @@ -174,7 +183,50 @@ Sonia.rest.Grid = Ext.extend(Ext.grid.GridPanel, { showEditWindow: function(){ if ( this.selModel.hasSelection() ){ - console.debug( 'showEditWindow' ); + + var data = this.selModel.getSelected().data; + + var editWindow = new Sonia.rest.DetailWindow({ + items: [{ + id: 'editForm', + xtype: this.editForm, + data: data, + listeners: { + submit: { + fn: function(item){ + + var store = this.store; + var id = item[this.idField]; + var url = String.format(this.restEditUrlPattern, id); + + if ( debug ){ + console.debug( 'update item ' + id ); + } + + Ext.Ajax.request({ + url: url, + jsonData: item, + method: 'PUT', + success: function(){ + store.reload(); + editWindow.close(); + }, + failure: function(){ + alert( 'failure' ); + } + }); + + }, + scope: this + }, + cancel: function(){ + editWindow.close(); + } + } + }] + }); + + editWindow.show(); } }, diff --git a/scm-webapp/src/main/webapp/resources/js/sonia.sample.js b/scm-webapp/src/main/webapp/resources/js/sonia.sample.js index 04c5a68650..784e32e3cc 100644 --- a/scm-webapp/src/main/webapp/resources/js/sonia.sample.js +++ b/scm-webapp/src/main/webapp/resources/js/sonia.sample.js @@ -75,6 +75,14 @@ Sonia.sample.EditForm = new Ext.extend(Sonia.rest.EditForm, { Sonia.sample.EditForm.superclass.initComponent.apply(this, arguments); }, + load: function(item){ + var members = item.members; + for (var i=0; i