Mercurial > lada > lada-client
view app/view/form/Messung.js @ 1168:40a07eb873bf
Add numberfield with error/warning functionality and use for Messprogramm form.
author | Tom Gottfried <tom@intevation.de> |
---|---|
date | Fri, 01 Jul 2016 14:01:02 +0200 |
parents | bb44ec8746f5 |
children | 90ae675a1224 4270da0f7d3b |
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. */ /** * Form to edit a Messung */ Ext.define('Lada.view.form.Messung', { extend: 'Ext.form.Panel', alias: 'widget.messungform', requires: [ 'Ext.layout.container.Table', 'Lada.view.widget.Datenbasis', 'Lada.view.widget.base.CheckBox', 'Lada.view.widget.Messmethode', 'Lada.view.widget.base.TextField', 'Lada.view.widget.base.Datetime' ], model: 'Lada.model.Messung', minWidth: 650, margin: 5, border: 0, recordId: null, trackResetOnLoad: true, initComponent: function() { var me = this; var i18n = Lada.getApplication().bundle; this.items = [{ xtype: 'fieldset', title: 'Allgemein', items: [{ border: 0, margin: '0, 0, 10, 0', layout: { type: 'table', columns: 2 }, 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: 'Speichern', qtip: 'Daten speichern', icon: 'resources/img/dialog-ok-apply.png', action: 'save', disabled: true }, { text: 'Verwerfen', qtip: 'Ă„nderungen verwerfen', icon: 'resources/img/dialog-cancel.png', action: 'discard', disabled: true }] }], items: [{ xtype: 'tfield', name: 'nebenprobenNr', maxLength: 10, margin: '0, 10, 5, 0', fieldLabel: i18n.getMsg('nebenprobenNr'), width: 300, labelWidth: 100 }, { xtype: 'messmethode', name: 'mmtId', margin: '0, 10, 5, 0', fieldLabel: 'Messmethode', width: 300, labelWidth: 100 }, { xtype: 'datetime', name: 'messzeitpunkt', margin: '0, 10, 5, 0', fieldLabel: 'Messzeitpunkt', width: 300, labelWidth: 100 }, { xtype: 'numberfield', allowDecimals: false, allowExponential: false, enforceMaxLength: true, maxLength: 10, minValue: 0, name: 'messdauer', margin: '0, 10, 5, 0', fieldLabel: 'Messdauer', width: 300, labelWidth: 100 }, { xtype: 'chkbox', name: 'fertig', margin: '0, 10, 5, 0', fieldLabel: 'Fertig', width: 300, labelWidth: 100 }, { xtype: 'chkbox', name: 'geplant', readOnly: true, margin: '0, 10, 5, 0', fieldLabel: 'Geplant', width: 300, labelWidth: 100 }, { xtype: 'textfield', name: 'status', readOnly: true, isFormField: false, maxLength: 10, margin: '0, 10, 5, 0', fieldLabel: 'Status', width: 300, labelWidth: 100, submitValue: false, isFormField: false, preventMark: true, //Do not display error msg. validateValue: function() { return true; //this field is always valid } }, { xtype: 'textfield', name: 'stufe', readOnly: true, isFormField: false, maxLength: 10, margin: '0, 10, 5, 0', fieldLabel: 'Stufe', width: 300, labelWidth: 100, submitValue: false, isFormField: false, preventMark: true, //Do not display error msg. validateValue: function() { return true; //this field is always valid } }] }] }]; this.callParent(arguments); }, setRecord: function(record) { var form = this.getForm(); form.loadRecord(record); if (record.getId()){ this.retrieveStatus(record.getId(), record.get('status')); } else { //remove the StatusWert and StatusStufe field from the form var sw = this.down('[name=status]'); var ss = this.down('[name=stufe]'); ss.hide(); sw.hide(); } }, retrieveStatus: function(messungsId, statusId) { var i18n = Lada.getApplication().bundle; var msg = i18n.getMsg('load.statuswert'); var textfield = this.down('[name=status]'); var messwin = this.up('window'); if(textfield) { textfield.setRawValue(msg); } var sStore = Ext.create('Lada.store.Status'); sStore.load({ params: { messungsId: messungsId }, callback: function(records, operation, success) { var sw, ss, se; var i18n = Lada.getApplication().bundle; if (sStore.getTotalCount() === 0 || !statusId) { sw = 0; } else { sw = sStore.getById(statusId).get('statusWert'); ss = sStore.getById(statusId).get('statusStufe'); se = sStore.getById(statusId).get('erzeuger'); } this.setStatusWert(sw); this.setStatusStufe(ss); // Enable / Disable the statusreset button of the statusgrid of the messungwindow if (messwin.record.get('statusEdit') === true && sw != 0 && sw != 4 && Ext.Array.contains(Lada.mst, se)) { messwin.enableStatusReset(); } else { messwin.disableStatusReset(); } }, scope: this }); }, /** * Updates the Messungform and fills the Statuswert */ setStatusWert: function(value){ var swStore = Ext.data.StoreManager.get('statuswerte'); var i18n = Lada.getApplication().bundle; var msg = i18n.getMsg('load.statuswert.error'); var textfield = this.down('[name=status]'); if (!swStore) { //Set the textfield asynchronously swStore = Ext.create('Lada.store.StatusWerte'); console.log('loading sw store messungform'); swStore.load({ scope: this, callback: function(records, operation, success) { if (success) { var item = swStore.getById(value); if (item) { msg = item.get('wert'); } } if (textfield) { textfield.setRawValue(msg); } } }); } else { //Set the textfield var item = swStore.getById(value); if (item) { msg = item.get('wert'); } if (textfield) { textfield.setRawValue(msg); } } }, /** * Updates the Messungform and fills the StatusStufe */ setStatusStufe: function(value){ var ssStore = Ext.data.StoreManager.get('statusstufe') var i18n = Lada.getApplication().bundle; var msg = i18n.getMsg('load.statusstufe.error'); var textfield = this.down('[name=stufe]'); if (!ssStore) { //set the value asynchronously Ext.create('Lada.store.StatusStufe'); ssStore.load({ scope: this, callback: function(records, operation, success) { if (success) { var item = ssStore.getById(value); if (item) { msg = item.get('stufe'); } } if (textfield) { textfield.setRawValue(msg); } } }); } else { //Set the value. var item = ssStore.getById(value); if (item) { msg = item.get('stufe'); } if (textfield) { textfield.setRawValue(msg); } } }, setMessages: function(errors, warnings) { var key; var element; var content; var i18n = Lada.getApplication().bundle; if (warnings) { for (key in warnings) { element = this.down('component[name=' + key + ']'); if (!element) { continue; } content = warnings[key]; var warnText = ''; for (var i = 0; i < content.length; i++) { warnText += i18n.getMsg(content[i].toString()) + '\n'; } element.showWarnings(warnText); } } if (errors) { for (key in errors) { element = this.down('component[name=' + key + ']'); if (!element) { continue; } content = errors[key]; var errorText = ''; for (var i = 0; i < content.length; i++) { errorText += i18n.getMsg(content[i].toString()) + '\n'; } element.showErrors(errorText); } } }, clearMessages: function() { this.down('tfield[name=nebenprobenNr]').clearWarningOrError(); //this.down('messmethode[name=mmtId]').clearWarningOrError(); this.down('datetime[name=messzeitpunkt]').clearWarningOrError(); //this.down('numberfield[name=messdauer]').clearWarningOrError(); this.down('chkbox[name=fertig]').clearWarningOrError(); this.down('chkbox[name=geplant]').clearWarningOrError(); }, setReadOnly: function(value) { this.down('tfield[name=nebenprobenNr]').setReadOnly(value); this.down('messmethode[name=mmtId]').setReadOnly(value); this.down('datetime[name=messzeitpunkt]').setReadOnly(value); this.down('numberfield[name=messdauer]').setReadOnly(value); this.down('chkbox[name=fertig]').setReadOnly(value); } });