mkrambach@1337: /* Copyright (C) 2013 by Bundesamt fuer Strahlenschutz mkrambach@1337: * Software engineering by Intevation GmbH mkrambach@1337: * mkrambach@1337: * This file is Free Software under the GNU GPL (v>=3) mkrambach@1337: * and comes with ABSOLUTELY NO WARRANTY! Check out mkrambach@1337: * the documentation coming with IMIS-Labordaten-Application for details. mkrambach@1337: */ mkrambach@1337: mkrambach@1337: /* mkrambach@1337: * This is a controller for an Ortserstellung Form mkrambach@1337: */ mkrambach@1337: Ext.define('Lada.controller.form.Ortserstellung', { mkrambach@1337: extend: 'Ext.app.Controller', mkrambach@1337: mkrambach@1337: /** mkrambach@1337: * Initialize the Controller mkrambach@1337: */ mkrambach@1337: init: function() { mkrambach@1337: this.control({ mkrambach@1337: 'ortserstellungsform button[action=save]': { mkrambach@1337: click: this.save mkrambach@1337: }, mkrambach@1337: 'ortserstellungsform button[action=revert]': { mkrambach@1337: click: this.discard mkrambach@1337: }, mkrambach@1342: 'ortserstellungsform staat combobox' : { mkrambach@1337: change: this.checkCommitEnabled mkrambach@1337: }, mkrambach@1342: 'ortserstellungsform verwaltungseinheit combobox' : { mkrambach@1337: change: this.checkCommitEnabled mkrambach@1337: }, mkrambach@1342: 'ortserstellungsform koordinatenart combobox': { mkrambach@1337: change: this.checkCommitEnabled mkrambach@1337: }, mkrambach@1337: 'ortserstellungsform numfield [name=koordXExtern]': { mkrambach@1337: change: this.checkCommitEnabled mkrambach@1337: }, mkrambach@1337: 'ortserstellungsform numfield [name=koordYExtern]': { mkrambach@1337: change: this.checkCommitEnabled mkrambach@1352: }, mkrambach@1352: 'ortserstellungsform': { mkrambach@1352: validitychange: this.checkCommitEnabled, mkrambach@1352: dirtychange: this.checkCommitEnabled mkrambach@1352: }, mkrambach@1337: }); mkrambach@1337: }, mkrambach@1337: mkrambach@1339: save: function(button) { mkrambach@1339: var me = button.up('panel'); mkrambach@1339: var form = me.getForm(); mkrambach@1337: var record = form.getRecord(); mkrambach@1337: var data = form.getFieldValues(true); mkrambach@1337: for (var key in data) { mkrambach@1337: record.set(key, data[key]); mkrambach@1337: } mkrambach@1337: record.set('id', null); mkrambach@1337: record.set('netzbetreiberId', Lada.netzbetreiber[0]); mkrambach@1337: record.save({ mkrambach@1337: success: function(newrecord, response) { mkrambach@1337: form.loadRecord(newrecord); mkrambach@1355: me.down('verwaltungseinheit').store.clearFilter(); mkrambach@1355: me.down('staat').store.clearFilter(); mkrambach@1339: button.setDisabled(true); mkrambach@1339: me.down('button[action=revert]').setDisabled(true); mkrambach@1339: button.hide(); mkrambach@1342: var ozw = me.up('window').parentWindow; mkrambach@1337: var json = Ext.decode(response.response.responseText); mkrambach@1337: if (json) { mkrambach@1339: me.clearMessages(); mkrambach@1339: me.setMessages(json.errors, json.warnings); mkrambach@1337: } mkrambach@1337: ozw.ortstore.load({ mkrambach@1337: callback: function(records, operation, success) { mkrambach@1337: ozw.down('map').addLocations(ozw.ortstore); mkrambach@1337: var osg = ozw.down('ortstammdatengrid'); mkrambach@1337: osg.setStore(ozw.ortstore); mkrambach@1337: var id = Ext.decode(response.response.responseText).data.id; mkrambach@1337: var record = osg.store.getById(id); mkrambach@1337: var selmod = osg.getView().getSelectionModel(); mkrambach@1337: selmod.select(record); mkrambach@1337: var resulttext; mkrambach@1337: if (json) { mkrambach@1337: if (json.message == '201') { mkrambach@1337: resulttext = 'Dieser Ort existiert bereits!'; mkrambach@1337: } mkrambach@1337: if (json.message == '200') { mkrambach@1337: resulttext = 'Ort erfolgreich angelegt!'; mkrambach@1337: } mkrambach@1337: } mkrambach@1337: Ext.Msg.show({ mkrambach@1337: title: Lada.getApplication().bundle.getMsg('success'), mkrambach@1337: autoScroll: true, mkrambach@1337: msg: resulttext, mkrambach@1337: buttons: Ext.Msg.OK mkrambach@1337: }); mkrambach@1337: }, mkrambach@1337: scope: this mkrambach@1337: }); mkrambach@1337: mkrambach@1337: }, mkrambach@1337: failure: function(record, response) { mkrambach@1337: var json = Ext.decode(response.response.responseText); mkrambach@1337: if (json) { mkrambach@1337: if(json.errors.totalCount > 0 || json.warnings.totalCount > 0){ mkrambach@1337: formPanel.setMessages(json.errors, json.warnings); mkrambach@1337: } mkrambach@1337: if(json.message){ mkrambach@1337: Ext.Msg.alert(Lada.getApplication().bundle.getMsg('err.msg.save.title') mkrambach@1337: +' #'+json.message, mkrambach@1337: Lada.getApplication().bundle.getMsg(json.message)); mkrambach@1337: } else { mkrambach@1337: Ext.Msg.alert(Lada.getApplication().bundle.getMsg('err.msg.save.title'), mkrambach@1337: Lada.getApplication().bundle.getMsg('err.msg.generic.body')); mkrambach@1337: } mkrambach@1337: } else { mkrambach@1337: Ext.Msg.alert(Lada.getApplication().bundle.getMsg('err.msg.save.title'), mkrambach@1337: Lada.getApplication().bundle.getMsg('err.msg.response.body')); mkrambach@1337: } mkrambach@1337: me.setDisabled(true); mkrambach@1337: } mkrambach@1337: }); mkrambach@1337: }, mkrambach@1337: mkrambach@1337: discard: function(button) { mkrambach@1339: button.up('panel').reset(); mkrambach@1339: button.up('panel').down('button [action=save]').setDisabled(true); mkrambach@1337: }, mkrambach@1337: mkrambach@1337: /** mkrambach@1337: * checks if the Messpunkt can be committed. mkrambach@1337: * Disables the save button if false mkrambach@1337: */ mkrambach@1352: checkCommitEnabled: function(callingEl) { mkrambach@1337: var panel; mkrambach@1352: if (callingEl.up) { //called by a field in the form mkrambach@1354: panel = callingEl.up('ortserstellungsform'); mkrambach@1352: } else { //called by the form mkrambach@1352: panel = callingEl.owner; mkrambach@1337: } mkrambach@1337: var savebutton = panel.down('button[action=save]'); mkrambach@1337: var form = panel.getForm(); mkrambach@1337: if (form.isDirty()) { mkrambach@1337: panel.down('button[action=revert]').setDisabled(false); mkrambach@1337: } else { mkrambach@1337: panel.down('button[action=revert]').setDisabled(true); mkrambach@1337: } mkrambach@1337: if (form.isValid()) { mkrambach@1337: //one of three conditions must apply, the first one depending mkrambach@1337: // on three fields mkrambach@1337: if ( mkrambach@1337: (form.findField('kdaId').getValue() mkrambach@1337: && form.findField('koordYExtern').getValue() mkrambach@1337: && form.findField('koordXExtern').getValue() mkrambach@1337: ) mkrambach@1342: || form.findField('gemId').getValue() !== null mkrambach@1342: || form.findField('staatId').getValue() !== null mkrambach@1337: ) { mkrambach@1337: savebutton.setDisabled(false); mkrambach@1337: } else { mkrambach@1337: savebutton.setDisabled(true); mkrambach@1337: } mkrambach@1337: } else { //form invalid mkrambach@1337: savebutton.setDisabled(true); mkrambach@1337: } mkrambach@1337: } mkrambach@1337: });