Mercurial > lada > lada-client
diff app/controller/form/Messprogramm.js @ 757:b8502964f5c3
Added missing files. Added MmtMockup
author | Dustin Demuth <dustin@intevation.de> |
---|---|
date | Wed, 06 May 2015 14:15:37 +0200 |
parents | |
children | b7484c7da2d4 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/controller/form/Messprogramm.js Wed May 06 14:15:37 2015 +0200 @@ -0,0 +1,200 @@ +/* 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. + */ + +/** + * A Controller for a Probe form + */ +Ext.define('Lada.controller.form.Messprogramm', { + extend: 'Ext.app.Controller', + + /** + * Initialize the Controller + */ + init: function() { + this.control({ + 'messprogrammform button[action=save]': { + click: this.save + }, + 'messprogrammform button[action=discard]': { + click: this.discard + }, + 'messprogrammform': { + dirtychange: this.dirtyForm + }, + 'messprogrammform [xtype="numberfield"]': { + change: this.synchronizeSlider, + blur: this.checkPeriod + }, + 'messprogrammform probenintervall combobox': { + select: this.updateIntervalls + } + }); + }, + /** + * When the Probenintervall was changed, update the Sliders + * and the the numberfield. + */ + updateIntervalls: function(field, records) { + console.log('update Intervalls'); + var form = field.up('messprogrammform'); + var record = form.getRecord(); + form.populateIntervall(record, field.getValue()); + }, + + /** + * When the Slider was used, + * update the Value of the Teilintervallfields + */ + synchronizeFields: function(slider, newValue, thumb) { + console.log('Synchronize Fields'); + var formPanel = slider.up('form'); + if (thumb.index == 0) { + formPanel.getForm() + .findField('teilintervallVon') + .setValue(newValue); + } + else if (thumb.index == 1) { + formPanel.getForm() + .findField('teilintervallBis') + .setValue(newValue); + } + + }, + + /** + * When the IntervallFields were used, + * update the Slider + */ + synchronizeSlider: function(field, newValue, oldValue) { + console.log('Synchronize Slider'); + var formPanel = field.up('form'); + if (field.name == 'teilintervallVon') { + formPanel.down('probenintervallslider') + .setValue(0, newValue, false); + } + else if (field.name == 'teilintervallBis') { + formPanel.down('probenintervallslider') + .setValue(1, newValue, false); + } + + }, + /** + * The save function saves the content of the Location form. + * On success it will reload the Store, + * on failure, it will display an Errormessage + */ + save: function(button) { + var formPanel = button.up('form'); + var data = formPanel.getForm().getFieldValues(true); + for (var key in data) { + formPanel.getForm().getRecord().set(key, data[key]); + } + formPanel.getForm().getRecord().save({ + success: function(record, response) { + var json = Ext.decode(response.response.responseText); + if (json) { + button.setDisabled(true); + button.up('toolbar').down('button[action=discard]') + .setDisabled(true); + formPanel.clearMessages(); + formPanel.setRecord(record); + formPanel.setMessages(json.errors, json.warnings); + if (response.action === 'create' && json.success) { + button.up('window').close(); + var win = Ext.create('Lada.view.window.MessprogrammEdit', { + record: record + }); + win.show(); + win.initData(); + } + } + }, + failure: function(record, response) { + button.setDisabled(true); + button.up('toolbar').down('button[action=discard]') + .setDisabled(true); + var rec = formPanel.getForm().getRecord(); + rec.dirty = false; + formPanel.getForm().loadRecord(record); + var json = response.request.scope.reader.jsonData; + 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')); + } + formPanel.clearMessages(); + //formPanel.setRecord(record); + formPanel.setMessages(json.errors, json.warnings); + } else { + Ext.Msg.alert(Lada.getApplication().bundle.getMsg('err.msg.save.title'), + Lada.getApplication().bundle.getMsg('err.msg.response.body')); + } + + } + }); + }, + + /** + * The discard function resets the Location form + * to its original state. + */ + discard: function(button) { + var formPanel = button.up('form'); + formPanel.getForm().loadRecord(formPanel.getForm().getRecord()); + formPanel.getForm().owner.populateIntervall( + formPanel.getForm().getRecord()); + }, + + /** + * The dirtyForm function enables or disables the save and discard + * button which are present in the toolbar of the form. + * The Buttons are only active if the content of the form was altered + * (the form is dirty). + */ + dirtyForm: function(form, dirty) { + if (dirty) { + form.owner.down('button[action=save]').setDisabled(false); + form.owner.down('button[action=discard]').setDisabled(false); + } + else { + form.owner.down('button[action=save]').setDisabled(true); + form.owner.down('button[action=discard]').setDisabled(true); + } + }, + + /** + * checkPeriod() is called when a fields defining an intervall + * were modified + * The function validates if the start is smaller than end. + */ + checkPeriod: function(field) { + + // This field might be a field within a Period. + // Search for Partner field (period: end/start) and validate + // End Before Start validation + if (field.period) { + var partners = new Array(); + partners[0] = field.up('fieldset').down('numberfield[period=start]').getValue() + partners[1] = field.up('fieldset').down('numberfield[period=end]').getValue() + if (partners[0] && partners[1] && partners[0] > partners [1]) { + var msg = Lada.getApplication().bundle.getMsg('662'); + field.up('fieldset').showWarningOrError(true, msg, false, ''); + } else { + field.up('fieldset').clearMessages(); + } + } + } +});