diff app/view/form/Ortserstellung.js @ 1279:291df0037835

Ortszuordnung window: create, change and display (wip)
author Maximilian Krambach <mkrambach@intevation.de>
date Wed, 18 Jan 2017 11:41:50 +0100
parents
children faecbb446a04
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/app/view/form/Ortserstellung.js	Wed Jan 18 11:41:50 2017 +0100
@@ -0,0 +1,286 @@
+/* Copyright (C) 2013 by Bundesamt fuer Strahlenschutz
+ * Software engineering by Intevation GmbH
+ *
+ * This file is Free Software under the GNU GPL (v>=3)
+ * and comes with ABSOLUTELY NO WARRANTY! Check out
+ * the documentation coming with IMIS-Labordaten-Application for details.
+ */
+
+/**
+ * Form to create a new Messpunkt
+ * TODO: layout, saving, model
+ */
+Ext.define('Lada.view.form.Ortserstellung', {
+    extend: 'Ext.form.Panel',
+    alias: 'widget.ortserstellungsform',
+
+    model: 'Lada.model.Ortszuordnung',//TODO correct model needed
+    requires: [
+        'Lada.view.widget.Verwaltungseinheit',
+        'Lada.view.widget.Staat'
+    ],
+
+    width: 900,
+    height: 700,
+    bodyStyle: {background: '#fff'},
+    layout: 'vbox',
+    scrollable: true,
+    margin: '5, 5, 0, 5',
+    border: 0,
+    floating: true,
+    closable: true,
+
+    /**
+     * Preset values
+     */
+    presets: null,
+
+    initComponent: function() {
+        var i18n = Lada.getApplication().bundle;
+        var me = this;
+        this.items = [{ //TODO: layout and input types
+            title: 'Neuen Messpunkt anlegen',
+            dockedItems : [{
+                xtype: 'toolbar',
+                dock: 'bottom',
+                border: '0, 1, 1, 1',
+                style: {
+                    borderBottom: '1px solid #b5b8c8 !important',
+                    borderLeft: '1px solid #b5b8c8 !important',
+                    borderRight: '1px solid #b5b8c8 !important'
+                },
+                items: ['->', {
+                    text: i18n.getMsg('save'),
+                    disabled: true,
+                    action: 'save',
+                    handler: me.saveOrt
+                }, {
+                    text: i18n.getMsg('close'),
+                    action: 'close',
+                    handler: function() {
+                    me.close();
+                    }
+                }]
+            }],
+            items : [{
+                xtype: 'netzbetreiber',
+                editable: false,
+                readOnly: true,
+                submitValue: true,
+                fieldLabel: i18n.getMsg('netzbetreiberId'),
+                margin : '0, 5, 5, 5',
+                labelWidth: 80,
+                // value: XXX
+                // TODO: get netzbetreiber of current user
+            }, {
+                xtype: 'checkbox',
+                name: 'aktiv',
+                fieldLabel: 'aktiv:',
+                value: me.presets.aktiv? me.presets.aktiv:null
+            }, {
+                xtype: 'displayfield',
+                value: 'D',
+                labelWidth: 125,
+                maxLength: 1,
+                name: 'messpunktart',
+                fieldLabel: 'Art des Messpunktes:'
+            },{
+                xtype: 'displayfield',
+                labelWidth: 125,
+                maxLength: 100,
+                name: 'OrtID',
+                fieldLabel: 'Ort/Messpunkt-ID:',
+                // TODO: needed? We can't set it, and it is not yet given
+                // for a new messpunkt
+                editable: false
+            }, {
+                xtype: 'staat',
+                labelWidth: 100,
+                fieldLabel: i18n.getMsg('staat'),
+                name: 'staatId',
+                width: 160,
+                listeners: {
+                    change: {
+                        fn: function() { me.checkCommitEnabled() }
+                    }
+                }
+            }, {
+                xtype: 'verwaltungseinheit',
+                labelWidth: 125,
+                fieldLabel: i18n.getMsg('orte.gemeinde'),
+                name: 'gemeinde',
+                listeners: {
+                    change: {
+                        fn: function() { me.checkCommitEnabled() }
+                    }
+                }
+            }, {
+                xtype: 'displayfield',
+                labelWidth: 125,
+                fieldLabel: i18n.getMsg('orte.kda'),
+                name: 'kdaId',
+                listeners: {
+                    change: {
+                        fn: function() { me.checkCommitEnabled() }
+                    }
+                }
+            }, {
+                xtype: 'displayfield',
+                labelWidth: 125,
+                fieldLabel: i18n.getMsg('orte.koordx'),
+                name: 'koordXExtern',
+                listeners: {
+                    change: {
+                        fn: function() { me.checkCommitEnabled() }
+                    }
+                }
+            }, {
+                xtype: 'displayfield',
+                labelWidth: 125,
+                fieldLabel: i18n.getMsg('orte.koordy'),
+                name: 'koordYExtern',
+                listeners: {
+                    change: {
+                        fn: function() { me.checkCommitEnabled() }
+                    }
+                }
+            }, {
+                xtype: 'displayfield',
+                labelWidth: 125,
+                fieldLabel: 'Höhe:',
+                name: 'hoehe', //TODO: hohe_ueber_NN?
+            }, {
+                xtype: 'displayfield',
+                labelWidth: 125,
+                maxLength: 100,
+                name: 'kurztext',
+                fieldLabel: 'Kurztext:'
+            },{
+                xtype: 'displayfield',
+                labelWidth: 125,
+                fieldLabel: i18n.getMsg('orte.langtext'),
+                name: 'langtext'
+            },{
+                xtype: 'displayfield',
+                labelWidth: 125,
+                fieldLabel: 'Berichtstext:',
+                name: 'berichtstext'
+            }]
+        }];
+//TODO:
+//               'Anlage:'?
+//               zone
+//               sektor
+//               zustaendigkeit
+//               Messregime (mpArt)
+//               'Prog.-Punkt:', ?
+//               nutsCode
+//               Ortszusatz-ID (ozId)
+        me.callParent(arguments);
+        this.prefillForm();
+    },
+
+    /**
+     * checks Messpunktart and if the Messpunkt can be committed.
+     * Disables the save button if false
+     */
+     // TODO messpunktart is not yet finally defined
+    checkCommitEnabled: function() {
+        var savebutton = this.down('toolbar').down('button[action=save]');
+        var form = this.getForm();
+        if (this.checkCoordinates()) {
+            form.findField('messpunktart').setValue('D');
+            savebutton.setDisabled(false);
+        } else if (form.findField('gemeinde').getValue()) {
+            form.findField('messpunktart').setValue('V');
+            savebutton.setDisabled(false);
+        } else if (form.findField('staatId')) {
+            form.findField('messpunktart').setValue('S');
+            savebutton.setDisabled(false);
+        } else {
+            form.findField('messpunktart').setValue('D');
+            savebutton.setDisabled(true);
+        }
+    },
+
+    /**
+     * Validates the coordinate fields kdaId, koordXExtern, koordYExtern
+     */
+    checkCoordinates: function() {
+        var x = this.getForm().findField('koordXExtern').getValue();
+        var y = this.getForm().findField('koordYExtern').getValue();
+        var kda = this.getForm().findField('kdaId').getValue();
+        if (x && y && kda) {
+            if (kda === 4){
+                if (x > -180 && x < 180
+                    && y > -90 && y < 90) {
+                    return true;
+                } else {
+                    // TODO: WGS84 (degrees- decimal), coordinates invalid
+                    return false;
+                }
+            } else if (kda === 5){
+                if (x >= 1000000 && x < 61000000 &&
+                    y > -10000000 && y < 10000000) {
+                    return true;
+                } else {
+                    // TODO: UTM, coordinates invalid
+                    return false;
+                }
+            } else {
+                // TODO KDA not supported
+                return false;
+            }
+        } else {
+            // TODO: not all fields filled in
+            return false;
+        }
+    },
+
+    saveOrt: function(){
+        // TODO not yet implemented
+        alert("save!");
+    },
+
+    /**
+     * Fill the form with values passed by presets.
+     // TODO Find a shorter way of setting all these
+     */
+    prefillForm: function() {
+        var form = this.getForm();
+        if (this.presets.aktiv) {
+            form.findField('aktiv').setValue(this.presets.aktiv);
+        }
+        if (this.presets.staatId) {
+            // TODO: staatID != staatISO
+            form.findField('staatId').setValue(me.presets.staatId);
+        }
+        if (this.presets.gemeinde) {
+            // TODO: ortId != gemeinde
+            form.findField('gemeinde').setValue(this.presets.gemeinde);
+        }
+        if (this.presets.kdaId) {
+            form.findField('kdaId').setValue(this.presets.kdaId);
+        }
+        if (this.presets.koordXExtern) {
+            form.findField('koordXExtern').setValue(this.presets.koordXExtern);
+        }
+        if (this.presets.koordYExtern) {
+            form.findField('koordYExtern').setValue(this.presets.koordYExtern);
+        }
+        if (this.presets.hoehe) {
+            // TODO hohe_ueber_NN?
+            form.findField('hoehe').setValue(me.presets.hoehe);
+        }
+        if (this.presets.kurztext) {
+            form.findField('kurztext').setValue(this.presets.kurztext);
+        }
+        if (this.presets.langtext) {
+            form.findField('langtext').setValue(this.presets.langtext);
+        }
+        if (this.presets.berichtstext) {
+            form.findField('berichtstext').setValue(this.presets.berichtstext);
+        }
+    }
+});
+

http://lada.wald.intevation.org