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@1279: * TODO: layout, saving, model mkrambach@1279: */ mkrambach@1279: Ext.define('Lada.view.form.Ortserstellung', { mkrambach@1279: extend: 'Ext.form.Panel', mkrambach@1279: alias: 'widget.ortserstellungsform', mkrambach@1279: mkrambach@1279: model: 'Lada.model.Ortszuordnung',//TODO correct model needed mkrambach@1279: requires: [ mkrambach@1279: 'Lada.view.widget.Verwaltungseinheit', mkrambach@1279: 'Lada.view.widget.Staat' mkrambach@1279: ], mkrambach@1279: mkrambach@1279: width: 900, mkrambach@1279: height: 700, mkrambach@1279: bodyStyle: {background: '#fff'}, mkrambach@1279: layout: 'vbox', mkrambach@1279: scrollable: true, mkrambach@1279: margin: '5, 5, 0, 5', mkrambach@1279: border: 0, mkrambach@1279: floating: true, mkrambach@1279: closable: true, mkrambach@1279: mkrambach@1279: /** mkrambach@1279: * Preset values mkrambach@1279: */ mkrambach@1279: presets: null, mkrambach@1279: mkrambach@1279: initComponent: function() { mkrambach@1279: var i18n = Lada.getApplication().bundle; mkrambach@1279: var me = this; mkrambach@1279: this.items = [{ //TODO: layout and input types mkrambach@1279: title: 'Neuen Messpunkt anlegen', mkrambach@1279: dockedItems : [{ mkrambach@1279: xtype: 'toolbar', mkrambach@1279: dock: 'bottom', mkrambach@1279: border: '0, 1, 1, 1', mkrambach@1279: style: { mkrambach@1279: borderBottom: '1px solid #b5b8c8 !important', mkrambach@1279: borderLeft: '1px solid #b5b8c8 !important', mkrambach@1279: borderRight: '1px solid #b5b8c8 !important' mkrambach@1279: }, mkrambach@1279: items: ['->', { mkrambach@1279: text: i18n.getMsg('save'), mkrambach@1279: disabled: true, mkrambach@1279: action: 'save', mkrambach@1279: handler: me.saveOrt mkrambach@1279: }, { mkrambach@1279: text: i18n.getMsg('close'), mkrambach@1279: action: 'close', mkrambach@1279: handler: function() { mkrambach@1279: me.close(); mkrambach@1279: } mkrambach@1279: }] mkrambach@1279: }], mkrambach@1279: items : [{ mkrambach@1279: xtype: 'netzbetreiber', mkrambach@1279: editable: false, mkrambach@1279: readOnly: true, mkrambach@1279: submitValue: true, mkrambach@1279: fieldLabel: i18n.getMsg('netzbetreiberId'), mkrambach@1279: margin : '0, 5, 5, 5', mkrambach@1279: labelWidth: 80, mkrambach@1279: // value: XXX mkrambach@1279: // TODO: get netzbetreiber of current user mkrambach@1279: }, { mkrambach@1279: xtype: 'checkbox', mkrambach@1279: name: 'aktiv', mkrambach@1279: fieldLabel: 'aktiv:', mkrambach@1279: value: me.presets.aktiv? me.presets.aktiv:null mkrambach@1279: }, { mkrambach@1279: xtype: 'displayfield', mkrambach@1279: value: 'D', mkrambach@1279: labelWidth: 125, mkrambach@1279: maxLength: 1, mkrambach@1279: name: 'messpunktart', mkrambach@1279: fieldLabel: 'Art des Messpunktes:' mkrambach@1279: },{ mkrambach@1279: xtype: 'displayfield', mkrambach@1279: labelWidth: 125, mkrambach@1279: maxLength: 100, mkrambach@1279: name: 'OrtID', mkrambach@1279: fieldLabel: 'Ort/Messpunkt-ID:', mkrambach@1279: // TODO: needed? We can't set it, and it is not yet given mkrambach@1279: // for a new messpunkt mkrambach@1279: editable: false mkrambach@1279: }, { mkrambach@1279: xtype: 'staat', mkrambach@1279: labelWidth: 100, mkrambach@1279: fieldLabel: i18n.getMsg('staat'), mkrambach@1279: name: 'staatId', mkrambach@1279: width: 160, mkrambach@1279: listeners: { mkrambach@1279: change: { mkrambach@1279: fn: function() { me.checkCommitEnabled() } mkrambach@1279: } mkrambach@1279: } mkrambach@1279: }, { mkrambach@1279: xtype: 'verwaltungseinheit', mkrambach@1279: labelWidth: 125, mkrambach@1279: fieldLabel: i18n.getMsg('orte.gemeinde'), mkrambach@1279: name: 'gemeinde', mkrambach@1279: listeners: { mkrambach@1279: change: { mkrambach@1279: fn: function() { me.checkCommitEnabled() } mkrambach@1279: } mkrambach@1279: } mkrambach@1279: }, { mkrambach@1279: xtype: 'displayfield', mkrambach@1279: labelWidth: 125, mkrambach@1279: fieldLabel: i18n.getMsg('orte.kda'), mkrambach@1279: name: 'kdaId', mkrambach@1279: listeners: { mkrambach@1279: change: { mkrambach@1279: fn: function() { me.checkCommitEnabled() } mkrambach@1279: } mkrambach@1279: } mkrambach@1279: }, { mkrambach@1279: xtype: 'displayfield', mkrambach@1279: labelWidth: 125, mkrambach@1279: fieldLabel: i18n.getMsg('orte.koordx'), mkrambach@1279: name: 'koordXExtern', mkrambach@1279: listeners: { mkrambach@1279: change: { mkrambach@1279: fn: function() { me.checkCommitEnabled() } mkrambach@1279: } mkrambach@1279: } mkrambach@1279: }, { mkrambach@1279: xtype: 'displayfield', mkrambach@1279: labelWidth: 125, mkrambach@1279: fieldLabel: i18n.getMsg('orte.koordy'), mkrambach@1279: name: 'koordYExtern', mkrambach@1279: listeners: { mkrambach@1279: change: { mkrambach@1279: fn: function() { me.checkCommitEnabled() } mkrambach@1279: } mkrambach@1279: } mkrambach@1279: }, { mkrambach@1279: xtype: 'displayfield', mkrambach@1279: labelWidth: 125, mkrambach@1279: fieldLabel: 'Höhe:', mkrambach@1279: name: 'hoehe', //TODO: hohe_ueber_NN? mkrambach@1279: }, { mkrambach@1279: xtype: 'displayfield', mkrambach@1279: labelWidth: 125, mkrambach@1279: maxLength: 100, mkrambach@1279: name: 'kurztext', mkrambach@1279: fieldLabel: 'Kurztext:' mkrambach@1279: },{ mkrambach@1279: xtype: 'displayfield', mkrambach@1279: labelWidth: 125, mkrambach@1279: fieldLabel: i18n.getMsg('orte.langtext'), mkrambach@1279: name: 'langtext' mkrambach@1279: },{ mkrambach@1279: xtype: 'displayfield', mkrambach@1279: labelWidth: 125, mkrambach@1279: fieldLabel: 'Berichtstext:', mkrambach@1279: name: 'berichtstext' mkrambach@1279: }] mkrambach@1279: }]; 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@1279: me.callParent(arguments); mkrambach@1279: this.prefillForm(); 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@1279: var savebutton = this.down('toolbar').down('button[action=save]'); mkrambach@1279: var form = this.getForm(); mkrambach@1279: if (this.checkCoordinates()) { mkrambach@1279: form.findField('messpunktart').setValue('D'); mkrambach@1279: savebutton.setDisabled(false); mkrambach@1279: } else if (form.findField('gemeinde').getValue()) { mkrambach@1279: form.findField('messpunktart').setValue('V'); mkrambach@1279: savebutton.setDisabled(false); mkrambach@1279: } else if (form.findField('staatId')) { 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@1279: saveOrt: function(){ mkrambach@1279: // TODO not yet implemented mkrambach@1279: alert("save!"); mkrambach@1279: }, mkrambach@1279: mkrambach@1279: /** mkrambach@1279: * Fill the form with values passed by presets. mkrambach@1279: // TODO Find a shorter way of setting all these mkrambach@1279: */ mkrambach@1279: prefillForm: function() { mkrambach@1279: var form = this.getForm(); mkrambach@1279: if (this.presets.aktiv) { mkrambach@1279: form.findField('aktiv').setValue(this.presets.aktiv); mkrambach@1279: } mkrambach@1279: if (this.presets.staatId) { mkrambach@1279: // TODO: staatID != staatISO mkrambach@1279: form.findField('staatId').setValue(me.presets.staatId); mkrambach@1279: } mkrambach@1279: if (this.presets.gemeinde) { mkrambach@1279: // TODO: ortId != gemeinde mkrambach@1279: form.findField('gemeinde').setValue(this.presets.gemeinde); mkrambach@1279: } mkrambach@1279: if (this.presets.kdaId) { mkrambach@1279: form.findField('kdaId').setValue(this.presets.kdaId); mkrambach@1279: } mkrambach@1279: if (this.presets.koordXExtern) { mkrambach@1279: form.findField('koordXExtern').setValue(this.presets.koordXExtern); mkrambach@1279: } mkrambach@1279: if (this.presets.koordYExtern) { mkrambach@1279: form.findField('koordYExtern').setValue(this.presets.koordYExtern); mkrambach@1279: } mkrambach@1279: if (this.presets.hoehe) { mkrambach@1279: // TODO hohe_ueber_NN? mkrambach@1279: form.findField('hoehe').setValue(me.presets.hoehe); mkrambach@1279: } mkrambach@1279: if (this.presets.kurztext) { mkrambach@1279: form.findField('kurztext').setValue(this.presets.kurztext); mkrambach@1279: } mkrambach@1279: if (this.presets.langtext) { mkrambach@1279: form.findField('langtext').setValue(this.presets.langtext); mkrambach@1279: } mkrambach@1279: if (this.presets.berichtstext) { mkrambach@1279: form.findField('berichtstext').setValue(this.presets.berichtstext); mkrambach@1279: } mkrambach@1279: } mkrambach@1279: }); mkrambach@1279: