dustin@576: /* Copyright (C) 2013 by Bundesamt fuer Strahlenschutz dustin@576: * Software engineering by Intevation GmbH dustin@576: * dustin@576: * This file is Free Software under the GNU GPL (v>=3) dustin@576: * and comes with ABSOLUTELY NO WARRANTY! Check out dustin@576: * the documentation coming with IMIS-Labordaten-Application for details. dustin@576: */ dustin@576: dustin@576: /* raimund@590: * Window to edit a Messung dustin@576: */ dustin@576: Ext.define('Lada.view.window.MessungEdit', { dustin@576: extend: 'Ext.window.Window', dustin@576: alias: 'widget.messungedit', dustin@576: dustin@581: requires: [ raimund@590: 'Lada.view.form.Messung', raimund@595: 'Lada.view.grid.Messwert', raimund@595: 'Lada.view.grid.Status', raimund@597: 'Lada.view.grid.MKommentar' dustin@581: ], dustin@576: dustin@576: collapsible: true, dustin@576: maximizable: true, dustin@576: autoshow: true, dustin@576: autoscroll: true, dustin@576: layout: 'fit', dustin@688: constrain: true, raimund@690: raimund@690: probe: null, raimund@690: parentWindow: null, dustin@576: record: null, raimund@644: grid: null, dustin@576: raimund@590: initComponent: function() { dustin@576: if (this.record === null) { dustin@576: Ext.Msg.alert('Keine valide Messung ausgewählt!'); dustin@576: this.callParent(arguments); dustin@576: return; dustin@576: } raimund@690: if (this.probe === null) { raimund@690: Ext.Msg.alert('Zu der Messung existiert keine Probe!'); raimund@690: this.callParent(arguments); raimund@690: return; raimund@690: } raimund@590: this.title = 'Messung ' + this.record.get('nebenprobenNr'); dustin@576: this.buttons = [{ dustin@576: text: 'Schließen', dustin@576: scope: this, dustin@576: handler: this.close dustin@576: }]; dustin@576: this.width = 700; dustin@576: this.height = Ext.getBody().getViewSize().height - 30; dustin@576: dustin@576: this.items = [{ dustin@576: border: 0, dustin@576: autoScroll: true, dustin@576: items: [{ dustin@581: xtype: 'messungform', dustin@611: margin: 5, raimund@590: recordId: this.record.get('id') dustin@613: }, { dustin@576: xtype: 'fset', dustin@576: name: 'messwerte', raimund@590: title: 'Messwerte', raimund@590: padding: '5, 5', raimund@590: margin: 5, raimund@590: items: [{ raimund@590: xtype: 'messwertgrid', raimund@590: recordId: this.record.get('id') dustin@613: }] dustin@576: }, { dustin@576: xtype: 'fset', dustin@576: name: 'messungstatus', raimund@595: title: 'Status', raimund@595: padding: '5, 5', raimund@595: margin: 5, raimund@595: items: [{ raimund@595: xtype: 'statusgrid', raimund@595: recordId: this.record.get('id') raimund@595: }] dustin@576: }, { dustin@576: xtype: 'fset', dustin@576: name: 'messungskommentare', raimund@597: title: 'Kommentare', raimund@597: padding: '5, 5', raimund@597: margin: 5, raimund@597: items: [{ raimund@597: xtype: 'mkommentargrid', raimund@597: recordId: this.record.get('id') raimund@597: }] dustin@576: }] dustin@576: }]; dustin@576: this.callParent(arguments); dustin@576: }, dustin@576: dustin@576: initData: function() { dustin@576: this.clearMessages(); dustin@693: var that = this; dustin@576: Ext.ClassManager.get('Lada.model.Messung').load(this.record.get('id'), { raimund@590: failure: function(record) { raimund@590: // TODO raimund@590: console.log(record); dustin@576: }, raimund@590: success: function(record, response) { raimund@690: var me = this; raimund@690: if (this.probe.get('treeModified') < record.get('treeModified')) { raimund@690: Ext.Msg.show({ raimund@690: title: 'Probe nicht aktuell!', raimund@690: msg: 'Die zugehörige Probe wurde verändert.\nMöchten Sie zu der Probe zurückkehren und neu laden?\nOhne das erneute Laden der Probe wird das Speichern der Messung nicht möglich sein.', raimund@690: buttons: Ext.Msg.OKCANCEL, raimund@690: icon: Ext.Msg.WARNING, raimund@690: closable: false, raimund@690: fn: function(button) { raimund@690: if (button === 'ok') { raimund@690: me.close(); raimund@690: me.parentWindow.initData(); raimund@690: } raimund@690: else { raimund@690: me.record.set('treeModified', me.probe.get('treeModified')); dustin@693: that.disableForm(); raimund@690: } raimund@690: } raimund@690: }); raimund@690: } raimund@590: this.down('messungform').setRecord(record); raimund@690: this.record = record; raimund@590: var json = Ext.decode(response.response.responseText); raimund@590: if (json) { raimund@590: this.setMessages(json.errors, json.warnings); raimund@590: } dustin@576: }, dustin@576: scope: this dustin@611: }); dustin@693: console.log(this.record); dustin@693: if (this.record.get('readonly') == true){ dustin@693: this.disableForm(); dustin@693: } dustin@693: }, dustin@693: dustin@693: disableForm: function(){ dustin@693: this.down('messungform').setReadOnly(true); dustin@693: this.disableChildren(); dustin@693: }, dustin@693: dustin@693: enableForm: function(){ dustin@693: this.down('messungform').setReadOnly(false); dustin@693: this.enableChildren(); dustin@693: }, dustin@693: dustin@693: disableChildren: function(){ dustin@693: this.down('fset[name=messwerte]').down('messwertgrid').setReadOnly(true); dustin@693: this.down('fset[name=messungstatus]').down('statusgrid').setReadOnly(true); dustin@693: this.down('fset[name=messungskommentare]').down('mkommentargrid').setReadOnly(true); dustin@693: }, dustin@693: dustin@693: enableChildren: function(){ dustin@693: this.down('fset[name=messwerte]').down('messwertgrid').setReadOnly(false); dustin@693: this.down('fset[name=messungstatus]').down('statusgrid').setReadOnly(false); dustin@693: this.down('fset[name=messungskommentare]').down('mkommentargrid').setReadOnly(false); dustin@576: }, dustin@576: dustin@576: setMessages: function(errors, warnings) { dustin@576: //todo this is a stub dustin@576: }, dustin@576: clearMessages: function() { dustin@576: //todo this is a stub dustin@576: } dustin@576: dustin@576: });