Mercurial > lada > lada-client
view app/view/widgets/LadaForm.js @ 162:5eb0cfac0e30
Added nested id attribute which comes in JSON response to the model as we need
it later in the grid view to be able to acess messungsIs and probeId in the
custom renderer.
author | Torsten Irländer <torsten.irlaender@intevation.de> |
---|---|
date | Wed, 03 Jul 2013 14:02:35 +0200 |
parents | 819bfedb70de |
children | df5dcdff7b69 |
line wrap: on
line source
Ext.define('Lada.view.widgets.LadaForm', { extend: 'Ext.form.Panel', alias: 'widget.ladaform', /** * http://moduscreate.com/expert-ext-js-model-integration-in-forms/ */ /** * Can be a reference to a model instance or a model class name. */ model: null, /** * Set to the id of the model instance and the model will be loaded for you. * Only applicable if model provided is a model class name (string). */ modelId: null, bodyPadding: '10 10', border: 0, errors: null, warnings: null, message: null, success: null, readonly: false, initComponent: function() { this.callParent(); this.getForm().trackResetOnLoad = true; //Workaround if (Ext.isString(this.model)) { //Load a model to be updated if (this.modelId) { Ext.ClassManager.get(this.model).load(this.modelId, { failure: this.onModelLoadFailure, success: this.onModelLoadSuccess, scope: this }); //Load an empty record to be inserted } else { this.bindModel(Ext.create(this.model, {})); } } else { //Bind the provided model to be updated this.bindModel(this.model); } this.addEvents('loadsuccess', 'loadfailure', 'savesuccess', 'savefailure'); }, bindModel: function(model) { this.model = model; this.loadRecord(model); }, commit: function(callback, scope) { if (this.form.isDirty() && this.form.isValid()) { this.form.updateRecord(this.model); var data = this.model.getAllData(); var baseUrl = this.model.getProxy().url; var url = baseUrl; var method = "POST"; if (this.model.getId()) { url += this.model.getEidi(); method = "PUT"; } Ext.Ajax.request({ url: url, jsonData: data, method: method, callback: function(option, success, response) { this.parseResponse(response); if (this.success) { console.log('Save was successfull'); this.fireEvent('savesuccess', this); } else { console.log('Save was not successfull'); this.form.markInvalid(this.errors); this.fireEvent('savefailure', this); } }, scope: this }); //this.model.save({ // callback: function(records, operation) { // this.parseResponse(operation); // if (operation.wasSuccessful()) { // console.log('Save was successfull'); // this.fireEvent('savesuccess', this, records, operation); // } else { // console.log('Save was not successfull'); // this.form.markInvalid(this.errors); // this.fireEvent('savefailure', this, records, operation); // } // if (callback) { // callback.call(scope || this, this, operation.wasSuccessful(), this.model); // } // }, // scope: this //}); } }, onModelLoadSuccess: function(record, operation) { this.bindModel(record); this.parseResponse(operation); this.fireEvent('loadsuccess', this, record, operation); }, onModelLoadFailure: function(record, operation) { this.parseResponse(operation); this.fireEvent('loadfailure', this, record, operation); }, translateReturnCodes: function(codes) { var translated = {}; for (var k in codes) { translated[k] = Lada.getApplication().bundle.getMsg(codes[k]); } return translated; }, setReadOnly: function (bReadOnly) { this.getForm().getFields().each (function (field) { //field.setDisabled(bReadOnly); field.setReadOnly(bReadOnly); }); }, parseResponse: function(response) { var json = Ext.decode(response.responseText); if (json) { this.success = json.success; this.errors = this.translateReturnCodes(json.errors); this.warnings = this.translateReturnCodes(json.warnings); this.message = Lada.getApplication().bundle.getMsg(json.message); } //this.setReadOnly(true); } // This parse method is used if the model.save() method is used to trigger // a request on the server side. In this case the response object is // different. //parseResponse: function(operation) { // this.errors = this.translateReturnCodes(operation.request.scope.reader.jsonData["errors"]); // this.warnings = this.translateReturnCodes(operation.request.scope.reader.jsonData["warnings"]); // this.message = Lada.getApplication().bundle.getMsg(operation.request.scope.reader.jsonData["message"]); // //this.setReadOnly(true); //} });