mkrambach@1279: /* Copyright (C) 2013 by Bundesamt fuer Strahlenschutz mkrambach@1279: * Software engineering by Intevation GmbH mkrambach@1279: * mkrambach@1279: * This file is Free Software under the GNU GPL (v>=3) mkrambach@1279: * and comes with ABSOLUTELY NO WARRANTY! Check out mkrambach@1279: * the documentation coming with IMIS-Labordaten-Application for details. mkrambach@1279: */ mkrambach@1279: mkrambach@1279: /** mkrambach@1279: * Form to create a new Messpunkt mkrambach@1284: * TODO: layout mkrambach@1279: */ mkrambach@1279: Ext.define('Lada.view.form.Ortserstellung', { mkrambach@1279: extend: 'Ext.form.Panel', mkrambach@1279: alias: 'widget.ortserstellungsform', mkrambach@1279: requires: [ mkrambach@1279: 'Lada.view.widget.Verwaltungseinheit', mkrambach@1279: 'Lada.view.widget.Staat' mkrambach@1279: ], mkrambach@1284: model: null, mkrambach@1279: mkrambach@1284: record: null, mkrambach@1279: mkrambach@1279: initComponent: function() { mkrambach@1279: var i18n = Lada.getApplication().bundle; mkrambach@1279: var me = this; mkrambach@1284: this.items = [{ mkrambach@1284: xtype: 'netzbetreiber', mkrambach@1284: editable: false, mkrambach@1284: readOnly: true, mkrambach@1284: submitValue: true, mkrambach@1284: fieldLabel: i18n.getMsg('netzbetreiberId'), mkrambach@1284: margin : '0, 5, 5, 5', mkrambach@1284: labelWidth: 80, mkrambach@1284: width: 150, mkrambach@1284: value: Lada.netzbetreiber mkrambach@1279: }, { mkrambach@1284: xtype: 'checkbox', mkrambach@1284: name: 'aktiv', mkrambach@1284: fieldLabel: 'aktiv:' mkrambach@1284: }, { mkrambach@1284: xtype: 'displayfield', mkrambach@1284: align: 'right', mkrambach@1284: value: 'D', mkrambach@1284: labelWidth: 125, mkrambach@1284: maxLength: 1, mkrambach@1284: name: 'messpunktart', mkrambach@1284: fieldLabel: 'Art des Messpunktes:' mkrambach@1284: },{ mkrambach@1284: xtype: 'staat', mkrambach@1284: labelWidth: 125, mkrambach@1284: fieldLabel: i18n.getMsg('staat'), mkrambach@1284: name: 'staatId', mkrambach@1284: listeners: { mkrambach@1284: change: { mkrambach@1284: fn: function() { me.checkCommitEnabled() } mkrambach@1279: } mkrambach@1284: } mkrambach@1284: }, { mkrambach@1284: xtype: 'verwaltungseinheit', mkrambach@1284: labelWidth: 125, mkrambach@1284: fieldLabel: i18n.getMsg('orte.gemeinde'), mkrambach@1284: name: 'gemId', mkrambach@1284: listeners: { mkrambach@1284: change: { mkrambach@1284: fn: function() { me.checkCommitEnabled() } mkrambach@1279: } mkrambach@1284: } mkrambach@1284: }, { mkrambach@1284: xtype: 'numfield', mkrambach@1284: labelWidth: 125, mkrambach@1284: fieldLabel: i18n.getMsg('orte.kda'), mkrambach@1284: allowDecimals: false, mkrambach@1284: maxLength: 1, mkrambach@1284: name: 'kdaId', mkrambach@1284: listeners: { mkrambach@1284: change: { mkrambach@1284: fn: function() { me.checkCommitEnabled() } mkrambach@1279: } mkrambach@1284: } mkrambach@1284: }, { mkrambach@1284: xtype: 'numfield', mkrambach@1284: labelWidth: 125, mkrambach@1284: fieldLabel: i18n.getMsg('orte.koordx'), mkrambach@1284: name: 'koordXExtern', mkrambach@1284: allowDecimals: true, mkrambach@1284: decimalPrecision: 5, mkrambach@1284: maxLength: 10, mkrambach@1284: listeners: { mkrambach@1284: change: { mkrambach@1284: fn: function() { me.checkCommitEnabled() } mkrambach@1284: } mkrambach@1284: } mkrambach@1284: }, { mkrambach@1284: xtype: 'numfield', mkrambach@1284: labelWidth: 125, mkrambach@1284: fieldLabel: i18n.getMsg('orte.koordy'), mkrambach@1284: name: 'koordYExtern', mkrambach@1284: allowDecimals: true, mkrambach@1284: decimalPrecision: 5, mkrambach@1284: maxLength: 10, mkrambach@1284: listeners: { mkrambach@1284: change: { mkrambach@1284: fn: function() { me.checkCommitEnabled() } mkrambach@1284: } mkrambach@1284: } mkrambach@1284: }, { mkrambach@1284: xtype: 'numfield', mkrambach@1284: labelWidth: 125, mkrambach@1284: fieldLabel: 'Höhe:', mkrambach@1284: name: 'hoeheLand', mkrambach@1284: maxLength: 10, mkrambach@1284: allowDecimals: true mkrambach@1284: }, { mkrambach@1284: xtype: 'tfield', mkrambach@1284: labelWidth: 125, mkrambach@1284: maxLength: 100, mkrambach@1284: name: 'kurztext', mkrambach@1284: fieldLabel: i18n.getMsg('orte.kurztext'), mkrambach@1284: },{ mkrambach@1284: xtype: 'tfield', mkrambach@1284: labelWidth: 125, mkrambach@1284: fieldLabel: i18n.getMsg('orte.langtext'), mkrambach@1284: name: 'langtext' mkrambach@1284: },{ mkrambach@1284: xtype: 'tfield', mkrambach@1284: labelWidth: 125, mkrambach@1284: fieldLabel: 'Berichtstext:', mkrambach@1284: name: 'berichtstext' mkrambach@1284: }]; mkrambach@1284: this.dockedItems = [{ mkrambach@1284: xtype: 'toolbar', mkrambach@1284: dock: 'bottom', mkrambach@1284: border: '0, 1, 1, 1', mkrambach@1284: style: { mkrambach@1284: borderBottom: '1px solid #b5b8c8 !important', mkrambach@1284: borderLeft: '1px solid #b5b8c8 !important', mkrambach@1284: borderRight: '1px solid #b5b8c8 !important' mkrambach@1284: }, mkrambach@1284: items: ['->', { mkrambach@1284: text: i18n.getMsg('save'), mkrambach@1284: action: 'save', mkrambach@1284: handler: me.saveOrt, mkrambach@1284: disabled: true mkrambach@1279: }, { mkrambach@1284: text: i18n.getMsg('close'), mkrambach@1284: action: 'close', mkrambach@1284: handler: function() { mkrambach@1284: me.close(); mkrambach@1279: } mkrambach@1279: }] mkrambach@1279: }]; mkrambach@1284: mkrambach@1279: //TODO: mkrambach@1279: // 'Anlage:'? mkrambach@1279: // zone mkrambach@1279: // sektor mkrambach@1279: // zustaendigkeit mkrambach@1279: // Messregime (mpArt) mkrambach@1279: // 'Prog.-Punkt:', ? mkrambach@1279: // nutsCode mkrambach@1279: // Ortszusatz-ID (ozId) mkrambach@1284: this.callParent(arguments); mkrambach@1284: this.getForm().loadRecord(this.record); mkrambach@1279: }, mkrambach@1279: mkrambach@1279: /** mkrambach@1279: * checks Messpunktart and if the Messpunkt can be committed. mkrambach@1279: * Disables the save button if false mkrambach@1279: */ mkrambach@1279: // TODO messpunktart is not yet finally defined mkrambach@1279: checkCommitEnabled: function() { mkrambach@1284: var savebutton = this.down('toolbar').down('button[action=save]'); mkrambach@1279: var form = this.getForm(); mkrambach@1284: if (this.getForm().findField('kdaId').getValue() || mkrambach@1284: this.getForm().findField('koordYExtern').getValue() || mkrambach@1284: this.getForm().findField('koordXExtern').getValue()) { mkrambach@1284: if (this.checkCoordinates()) { mkrambach@1284: form.findField('messpunktart').setValue('D'); mkrambach@1284: savebutton.setDisabled(false); mkrambach@1284: } else { mkrambach@1284: savebutton.setDisabled(true); mkrambach@1284: } mkrambach@1284: } else if (form.findField('gemId').getValue()) { mkrambach@1279: form.findField('messpunktart').setValue('V'); mkrambach@1279: savebutton.setDisabled(false); mkrambach@1284: } else if (form.findField('staatId').getValue()) { mkrambach@1279: form.findField('messpunktart').setValue('S'); mkrambach@1279: savebutton.setDisabled(false); mkrambach@1279: } else { mkrambach@1279: form.findField('messpunktart').setValue('D'); mkrambach@1279: savebutton.setDisabled(true); mkrambach@1279: } mkrambach@1279: }, mkrambach@1279: mkrambach@1279: /** mkrambach@1279: * Validates the coordinate fields kdaId, koordXExtern, koordYExtern mkrambach@1279: */ mkrambach@1279: checkCoordinates: function() { mkrambach@1279: var x = this.getForm().findField('koordXExtern').getValue(); mkrambach@1279: var y = this.getForm().findField('koordYExtern').getValue(); mkrambach@1279: var kda = this.getForm().findField('kdaId').getValue(); mkrambach@1279: if (x && y && kda) { mkrambach@1279: if (kda === 4){ mkrambach@1279: if (x > -180 && x < 180 mkrambach@1279: && y > -90 && y < 90) { mkrambach@1279: return true; mkrambach@1279: } else { mkrambach@1279: // TODO: WGS84 (degrees- decimal), coordinates invalid mkrambach@1279: return false; mkrambach@1279: } mkrambach@1279: } else if (kda === 5){ mkrambach@1279: if (x >= 1000000 && x < 61000000 && mkrambach@1279: y > -10000000 && y < 10000000) { mkrambach@1279: return true; mkrambach@1279: } else { mkrambach@1279: // TODO: UTM, coordinates invalid mkrambach@1279: return false; mkrambach@1279: } mkrambach@1279: } else { mkrambach@1279: // TODO KDA not supported mkrambach@1279: return false; mkrambach@1279: } mkrambach@1279: } else { mkrambach@1279: // TODO: not all fields filled in mkrambach@1279: return false; mkrambach@1279: } mkrambach@1279: }, mkrambach@1279: mkrambach@1284: saveOrt: function() { mkrambach@1284: var this_panel = this.up('panel'); mkrambach@1284: var form = this_panel.getForm(); mkrambach@1284: var data = form.getFieldValues(true); mkrambach@1284: for (var key in data) { mkrambach@1284: form.getRecord().set(key, data[key]); mkrambach@1279: } mkrambach@1284: this_panel.record.set('letzteAenderung', 0); mkrambach@1284: this_panel.record.set('id', null); mkrambach@1284: this_panel.record.set('ortId', null); mkrambach@1284: this_panel.record.set('netzbetreiberId', Lada.netzbetreiber[0]); mkrambach@1284: console.log(this_panel.record); mkrambach@1284: this_panel.record.save({ mkrambach@1284: success: function(record, response) { mkrambach@1284: console.log(response); mkrambach@1284: var newOrtId; mkrambach@1284: Ext.Msg.show({ mkrambach@1284: title: Lada.getApplication().bundle.getMsg('success'), mkrambach@1284: autoScroll: true, mkrambach@1284: msg: 'Ort erfolgreich angelegt!', mkrambach@1284: buttons: Ext.Msg.OK mkrambach@1284: }); mkrambach@1284: var ozw = this_panel.up().parentWindow; mkrambach@1284: ozw.ortstore.load({ mkrambach@1284: callback: function(records, operation, success) { mkrambach@1284: ozw.down('map').addLocations(ozw.ortstore); mkrambach@1284: ozw.down('ortstammdatengrid').setStore(ozw.ortstore); mkrambach@1284: var id = Ext.decode(response.response.responseText).data.id; mkrambach@1284: var record = ozw.down('ortstammdatengrid').store.getById(id); mkrambach@1284: var selectionmodel = ozw.down('ortstammdatengrid').getSelectionModel(); mkrambach@1284: console.log(record); mkrambach@1284: selectionmodel.select(record); mkrambach@1284: this_panel.close(); mkrambach@1284: }, mkrambach@1284: scope: this mkrambach@1284: }); mkrambach@1284: }, mkrambach@1284: failure: function(record, response) { mkrambach@1284: console.log(response); mkrambach@1284: // TODO mkrambach@1284: // response.error.status mkrambach@1284: // response.error.statusText mkrambach@1284: // var json = Ext.decode(response.response.responseText); mkrambach@1284: // if (json) { mkrambach@1284: // if(json.errors.totalCount > 0 || json.warnings.totalCount > 0){ mkrambach@1284: // console.log(json.errors); mkrambach@1284: // console.log(json.warnings); mkrambach@1284: // formPanel.setMessages(json.errors, json.warnings); mkrambach@1284: // } mkrambach@1284: // if(json.message){ mkrambach@1284: // Ext.Msg.alert(Lada.getApplication().bundle.getMsg('err.msg.save.title') mkrambach@1284: // +' #'+json.message, mkrambach@1284: // Lada.getApplication().bundle.getMsg(json.message)); mkrambach@1284: // } else { mkrambach@1284: // Ext.Msg.alert(Lada.getApplication().bundle.getMsg('err.msg.save.title'), mkrambach@1284: // Lada.getApplication().bundle.getMsg('err.msg.generic.body')); mkrambach@1284: // } mkrambach@1284: // } else { mkrambach@1284: // Ext.Msg.alert(Lada.getApplication().bundle.getMsg('err.msg.save.title'), mkrambach@1284: // Lada.getApplication().bundle.getMsg('err.msg.response.body')); mkrambach@1284: } mkrambach@1284: }); mkrambach@1279: } mkrambach@1279: });