[Lada-commits] [PATCH] Ortserstellung controller separated from form
Wald Commits
scm-commit at wald.intevation.org
Fri Feb 3 17:45:05 CET 2017
# HG changeset patch
# User Maximilian Krambach <mkrambach at intevation.de>
# Date 1486140281 -3600
# Node ID 7194964183f42aea589f915bbde4c260a2f8355e
# Parent f879c806f880ab3373ef34fe0fb6fd126f9ef6e4
Ortserstellung controller separated from form
diff -r f879c806f880 -r 7194964183f4 app.js
--- a/app.js Fri Feb 03 17:43:23 2017 +0100
+++ b/app.js Fri Feb 03 17:44:41 2017 +0100
@@ -330,6 +330,7 @@
'Lada.controller.grid.Probenehmer',
'Lada.controller.form.Probe',
'Lada.controller.form.Messung',
+ 'Lada.controller.form.Ortserstellung',
'Lada.controller.grid.Probenzusatzwert',
'Lada.controller.grid.PKommentar',
'Lada.controller.grid.MKommentar',
diff -r f879c806f880 -r 7194964183f4 app/controller/form/Ortserstellung.js
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/app/controller/form/Ortserstellung.js Fri Feb 03 17:44:41 2017 +0100
@@ -0,0 +1,164 @@
+/* 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.
+ */
+
+/*
+ * This is a controller for an Ortserstellung Form
+ */
+Ext.define('Lada.controller.form.Ortserstellung', {
+ extend: 'Ext.app.Controller',
+
+ /**
+ * Initialize the Controller
+ */
+ init: function() {
+ this.control({
+ 'ortserstellungsform button[action=save]': {
+ click: this.save
+ },
+ 'ortserstellungsform button[action=revert]': {
+ click: this.discard
+ },
+ 'ortserstellungsform staat' : {
+ change: this.checkCommitEnabled
+ },
+ 'ortserstellungsform verwaltungseinheit' : {
+ change: this.checkCommitEnabled
+ },
+ 'ortserstellungsform koordinatenart': {
+ change: this.checkCommitEnabled
+ },
+ 'ortserstellungsform numfield [name=koordXExtern]': {
+ change: this.checkCommitEnabled
+ },
+ 'ortserstellungsform numfield [name=koordYExtern]': {
+ change: this.checkCommitEnabled
+ }
+ });
+ },
+
+ save: function() {
+ var this_panel = this.up('panel');
+ var me = this;
+ var form = this_panel.getForm();
+ var record = form.getRecord();
+ var data = form.getFieldValues(true);
+ for (var key in data) {
+ record.set(key, data[key]);
+ }
+ record.set('id', null);
+ record.set('netzbetreiberId', Lada.netzbetreiber[0]);
+ record.save({
+ success: function(newrecord, response) {
+ form.loadRecord(newrecord);
+ this_panel.down('verwaltungseinheit').store.load(
+ { id:newrecord.get('gemId') });
+ this_panel.down('staat').store.load(
+ { id : newrecord.get('staat') });
+ me.setDisabled(true);
+ me.hide();
+ var ozw = this_panel.up().parentWindow;
+ var json = Ext.decode(response.response.responseText);
+ if (json) {
+ this_panel.clearMessages();
+ this_panel.setMessages(json.errors, json.warnings);
+ }
+ ozw.ortstore.load({
+ callback: function(records, operation, success) {
+ ozw.down('map').addLocations(ozw.ortstore);
+ var osg = ozw.down('ortstammdatengrid');
+ osg.setStore(ozw.ortstore);
+ var id = Ext.decode(response.response.responseText).data.id;
+ var record = osg.store.getById(id);
+ var selmod = osg.getView().getSelectionModel();
+ selmod.select(record);
+ var resulttext;
+ if (json) {
+ if (json.message == '201') {
+ resulttext = 'Dieser Ort existiert bereits!';
+ }
+ if (json.message == '200') {
+ resulttext = 'Ort erfolgreich angelegt!';
+ }
+ }
+ Ext.Msg.show({
+ title: Lada.getApplication().bundle.getMsg('success'),
+ autoScroll: true,
+ msg: resulttext,
+ buttons: Ext.Msg.OK
+ });
+ },
+ scope: this
+ });
+
+ },
+ failure: function(record, response) {
+ var json = Ext.decode(response.response.responseText);
+ if (json) {
+ if(json.errors.totalCount > 0 || json.warnings.totalCount > 0){
+ formPanel.setMessages(json.errors, json.warnings);
+ }
+ if(json.message){
+ Ext.Msg.alert(Lada.getApplication().bundle.getMsg('err.msg.save.title')
+ +' #'+json.message,
+ Lada.getApplication().bundle.getMsg(json.message));
+ } else {
+ Ext.Msg.alert(Lada.getApplication().bundle.getMsg('err.msg.save.title'),
+ Lada.getApplication().bundle.getMsg('err.msg.generic.body'));
+ }
+ } else {
+ Ext.Msg.alert(Lada.getApplication().bundle.getMsg('err.msg.save.title'),
+ Lada.getApplication().bundle.getMsg('err.msg.response.body'));
+ }
+ me.setDisabled(true);
+ }
+ });
+ },
+
+ discard: function(button) {
+ this.up('panel').getForm().reset();
+ this.up('toolbar').down('button [action=save]').setDisabled(true);
+ },
+
+ /**
+ * checks if the Messpunkt can be committed.
+ * Disables the save button if false
+ */
+ checkCommitEnabled: function(field) {
+ var panel;
+ if (field.up('panel')) {
+ panel = field.up('panel').up('panel');
+ } else {
+ panel = field;
+ }
+ var savebutton = panel.down('button[action=save]');
+ var form = panel.getForm();
+ if (form.isDirty()) {
+ panel.down('button[action=revert]').setDisabled(false);
+ } else {
+ panel.down('button[action=revert]').setDisabled(true);
+ }
+ if (form.isValid()) {
+ //one of three conditions must apply, the first one depending
+ // on three fields
+ if (
+ (form.findField('kdaId').getValue()
+ && form.findField('koordYExtern').getValue()
+ && form.findField('koordXExtern').getValue()
+ )
+ || form.findField('gemId').getValue() >= 0
+ || form.findField('staatId').getValue() >= 0
+ ) {
+ savebutton.setDisabled(false);
+ } else {
+ savebutton.setDisabled(true);
+ }
+ } else { //form invalid
+ savebutton.setDisabled(true);
+ }
+ }
+});
diff -r f879c806f880 -r 7194964183f4 app/view/form/Ortserstellung.js
--- a/app/view/form/Ortserstellung.js Fri Feb 03 17:43:23 2017 +0100
+++ b/app/view/form/Ortserstellung.js Fri Feb 03 17:44:41 2017 +0100
@@ -65,24 +65,12 @@
labelWidth: 125,
fieldLabel: i18n.getMsg('orte.verwaltungseinheit'),
forceSelection: true,
- name: 'gemId',
- listeners: {
- change: {
- fn: function() { me.checkCommitEnabled() }
- }
- }
+ name: 'gemId'
}, {
xtype: 'koordinatenart',
labelWidth: 125,
fieldLabel: i18n.getMsg('orte.kda'),
- allowDecimals: false,
- maxLength: 1,
- name: 'kdaId',
- listeners: {
- change: {
- fn: function() { me.checkCommitEnabled() }
- }
- }
+ name: 'kdaId'
}, {
xtype: 'numfield',
labelWidth: 125,
@@ -90,12 +78,7 @@
name: 'koordXExtern',
allowDecimals: true,
decimalPrecision: 5,
- maxLength: 22,
- listeners: {
- change: {
- fn: function() { me.checkCommitEnabled() }
- }
- }
+ maxLength: 22
}, {
xtype: 'numfield',
labelWidth: 125,
@@ -103,12 +86,7 @@
name: 'koordYExtern',
allowDecimals: true,
decimalPrecision: 5,
- maxLength: 22,
- listeners: {
- change: {
- fn: function() { me.checkCommitEnabled() }
- }
- }
+ maxLength: 22
}, {
xtype: 'numfield',
labelWidth: 125,
@@ -204,151 +182,13 @@
qtip: 'Änderungen verwerfen',
icon: 'resources/img/dialog-cancel.png',
action: 'revert',
+ disabled: true
}]
}];
-
this.callParent(arguments);
this.getForm().loadRecord(this.record);
- },
-
- /**
- * checks if the Messpunkt can be committed.
- * Disables the save button if false
- */
- checkCommitEnabled: function() {
- var savebutton = this.down('toolbar').down('button[action=save]');
- var form = this.getForm();
- if (form.isDirty()) {
- if (form.findField('kdaId').getValue() ||
- form.findField('koordYExtern').getValue() ||
- form.findField('koordXExtern').getValue()) {
- if (this.checkCoordinates()) {
- savebutton.setDisabled(false);
- } else {
- savebutton.setDisabled(true);
- }
- } else if (form.findField('gemId').getValue() ||
- form.findField('staatId').getValue() >= 0 ) {
- savebutton.setDisabled(false);
- } else {
- savebutton.setDisabled(true);
- }
- } else {
- 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() {
- var this_panel = this.up('panel');
- var me = this;
- var form = this_panel.getForm();
- var record = form.getRecord();
- var data = form.getFieldValues(true);
- for (var key in data) {
- record.set(key, data[key]);
- }
- record.set('id', null);
- record.set('netzbetreiberId', Lada.netzbetreiber[0]);
- record.save({
- success: function(newrecord, response) {
- form.loadRecord(newrecord);
- this_panel.down('verwaltungseinheit').store.load(
- { id:newrecord.get('gemId') });
- console.log(this_panel.down('verwaltungseinheit'));
- this_panel.down('staat').store.load(
- { id : newrecord.get('staat') });
- me.setDisabled(true);
- me.hide();
- var ozw = this_panel.up().parentWindow;
- var json = Ext.decode(response.response.responseText);
- if (json) {
- this_panel.clearMessages();
- this_panel.setMessages(json.errors, json.warnings);
- }
- ozw.ortstore.load({
- callback: function(records, operation, success) {
- ozw.down('map').addLocations(ozw.ortstore);
- var osg = ozw.down('ortstammdatengrid');
- osg.setStore(ozw.ortstore);
- var id = Ext.decode(response.response.responseText).data.id;
- var record = osg.store.getById(id);
- var selmod = osg.getView().getSelectionModel();
- selmod.select(record);
- var resulttext;
- if (json) {
- if (json.message == '201') {
- resulttext = 'Dieser Ort existiert bereits!';
- }
- if (json.message == '200') {
- resulttext = 'Ort erfolgreich angelegt!';
- }
- }
- Ext.Msg.show({
- title: Lada.getApplication().bundle.getMsg('success'),
- autoScroll: true,
- msg: resulttext,
- buttons: Ext.Msg.OK
- });
- },
- scope: this
- });
-
- },
- failure: function(record, response) {
- var json = Ext.decode(response.response.responseText);
- if (json) {
- if(json.errors.totalCount > 0 || json.warnings.totalCount > 0){
- formPanel.setMessages(json.errors, json.warnings);
- }
- if(json.message){
- Ext.Msg.alert(Lada.getApplication().bundle.getMsg('err.msg.save.title')
- +' #'+json.message,
- Lada.getApplication().bundle.getMsg(json.message));
- } else {
- Ext.Msg.alert(Lada.getApplication().bundle.getMsg('err.msg.save.title'),
- Lada.getApplication().bundle.getMsg('err.msg.generic.body'));
- }
- } else {
- Ext.Msg.alert(Lada.getApplication().bundle.getMsg('err.msg.save.title'),
- Lada.getApplication().bundle.getMsg('err.msg.response.body'));
- }
- me.setDisabled(true);
- }
- });
+ var controller = Lada.app.getController('Lada.controller.form.Ortserstellung')
+ controller.checkCommitEnabled(this);
},
setMessages: function(errors, warnings) {
@@ -389,5 +229,4 @@
clearMessages: function() {
// TODO: this is a stub
}
-
});
More information about the Lada-commits
mailing list