Mercurial > lada > lada-client
view app/view/window/ProbeEdit.js @ 702:0c8e689f3bcb
Added readonly to models, Probenzusatzwertgrid does now check wheter a record is readonly and disables the roweditor in such a case
author | Dustin Demuth <dustin@intevation.de> |
---|---|
date | Fri, 27 Mar 2015 10:20:22 +0100 |
parents | b0f1dcdf981d |
children | 3e4be37e3e46 |
line wrap: on
line source
/* 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. */ /* * Window to edit a Probe */ Ext.define('Lada.view.window.ProbeEdit', { extend: 'Ext.window.Window', alias: 'widget.probenedit', requires: [ 'Lada.view.form.Probe', 'Lada.view.grid.Ort', 'Lada.view.grid.Probenzusatzwert', 'Lada.view.grid.PKommentar', 'Lada.view.grid.Messung' ], collapsible: true, maximizable: true, autoShow: true, autoScroll: true, layout: 'fit', constrain: true, record: null, initComponent: function() { if (this.record === null) { Ext.Msg.alert('Keine valide Probe ausgewählt!'); this.callParent(arguments); return; } var extendedTitle = this.record.get('probeId') ? this.record.get('probeId') : ''; this.title = '§3-Probe ' + extendedTitle; this.buttons = [{ text: 'Schließen', scope: this, handler: this.close }]; this.width = 700; this.height = Ext.getBody().getViewSize().height - 30; // InitialConfig is the config object passed to the constructor on // creation of this window. We need to pass it throuh to the form as // we need the "modelId" param to load the correct item. this.items = [{ border: 0, autoScroll: true, items: [{ xtype: 'probeform', recordId: this.record.get('id') }, { xtype: 'fset', name: 'messungen', title: 'Messungen', padding: '5, 5', margin: 5, collapsible: false, collapsed: false, items: [{ xtype: 'messunggrid', recordId: this.record.get('id') }] }, { xtype: 'fset', name: 'orte', title: 'Ortsangaben', padding: '5, 5', margin: 5, items: [{ xtype: 'ortgrid', recordId: this.record.get('id') }] }, { xtype: 'fset', name: 'probenzusatzwerte', title: 'Zusatzwerte', padding: '5, 5', margin: 5, collapsible: true, collapsed: true, items: [{ xtype: 'probenzusatzwertgrid', recordId: this.record.get('id') }] }, { xtype: 'fset', name: 'pkommentare', title: 'Kommentare', padding: '5, 5', margin: 5, collapsible: true, collapsed: true, items: [{ xtype: 'pkommentargrid', recordId: this.record.get('id') }] }] }]; this.callParent(arguments); }, initData: function() { this.clearMessages(); Ext.ClassManager.get('Lada.model.Probe').load(this.record.get('id'), { failure: function(record, action) { // TODO console.log("An unhandled Failure occured. See following Response and Record"); console.log(response); console.log(record); }, success: function(record, response) { this.down('probeform').setRecord(record); this.record = record; var json = Ext.decode(response.response.responseText); if (json) { this.setMessages(json.errors, json.warnings); } }, scope: this }); // If the Probe is ReadOnly, disable Inputfields and grids if (this.record.get('readonly') == true){ this.down('probeform').setReadOnly(true); this.disableChildren(); //The Owner of a Probe is always allowed to add a Messung. // ToDo ist it required to check if a Status exists? // ToDo this doesn't work here because the owner is unknown when this code // is executed. if (this.record.get('owner') == true){ //allow to add Messungen this.down('fset[name=messungen]').down('messunggrid').down('button[name=add]').enable(); } } }, disableChildren: function(){ this.down('fset[name=messungen]').down('messunggrid').setReadOnly(true); this.down('fset[name=orte]').down('ortgrid').setReadOnly(true); this.down('fset[name=probenzusatzwerte]').down('probenzusatzwertgrid').setReadOnly(true); this.down('fset[name=pkommentare]').down('pkommentargrid').setReadOnly(true); }, enableChildren: function(){ this.down('fset[name=messungen]').down('messunggrid').setReadOnly(false); this.down('fset[name=orte]').down('ortgrid').setReadOnly(false); this.down('fset[name=probenzusatzwerte]').down('probenzusatzwertgrid').setReadOnly(false); this.down('fset[name=pkommentare]').down('pkommentargrid').setReadOnly(false); }, setMessages: function(errors, warnings) { this.down('probeform').setMessages(errors, warnings); var errorOrtText = ''; var errorOrt = false; var warningOrtText = ''; var warningOrt = false; var key; var content; var i; var keyText; var i18n = Lada.getApplication().bundle; for (key in errors) { if (key && key.indexOf('Ort') > -1) { errorOrt = true; content = errors[key]; keyText = i18n.getMsg(key); for (i = 0; i < content.length; i++) { errorOrtText += keyText + ': ' + i18n.getMsg(content[i].toString()) + '\n'; } } } for (key in warnings) { if (key && key.indexOf('Ort') > -1) { warningOrt = true; content = warnings[key]; keyText = i18n.getMsg(key); for (i = 0; i < content.length; i++) { warningOrtText += keyText + ': ' + i18n.getMsg(content[i].toString()) + '\n'; } } } this.down('fset[name=orte]').showWarningOrError( warningOrt, warningOrtText === '' ? null : warningOrtText, errorOrt, errorOrtText === '' ? null : errorOrtText); }, clearMessages: function() { this.down('probeform').clearMessages(); this.down('fset[name=orte]').clearMessages(); } });