Mercurial > lada > lada-client
changeset 612:027703542596
merged
author | Dustin Demuth <dustin@intevation.de> |
---|---|
date | Fri, 13 Mar 2015 15:18:04 +0100 |
parents | 8a156a7fbe67 (diff) 69e66117bd58 (current diff) |
children | f959205ab173 |
files | |
diffstat | 8 files changed, 271 insertions(+), 62 deletions(-) [+] |
line wrap: on
line diff
--- a/app.js Fri Mar 13 14:52:35 2015 +0100 +++ b/app.js Fri Mar 13 15:18:04 2015 +0100 @@ -104,6 +104,7 @@ 'Lada.controller.Filter', 'Lada.controller.FilterResult', 'Lada.controller.form.Probe', + 'Lada.controller.form.Messung', 'Lada.controller.form.Ort', 'Lada.controller.grid.Ort', 'Lada.controller.grid.Probenzusatzwert',
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/controller/form/Messung.js Fri Mar 13 15:18:04 2015 +0100 @@ -0,0 +1,75 @@ +/* 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. + */ + +Ext.define('Lada.controller.form.Messung', { + extend: 'Ext.app.Controller', + + init: function() { + this.control({ + 'messungform button[action=save]': { + click: this.save + }, + 'messungform button[action=discard]': { + click: this.discard + }, + 'messungform': { + dirtychange: this.dirtyForm + } + }); + }, + + 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 (response.action !== 'create' && + json && + json.success) { + button.setDisabled(true); + button.up('toolbar').down('button[action=discard]') + .setDisabled(true); + formPanel.clearMessages(); + formPanel.setRecord(record); + formPanel.setMessages(json.errors, json.warnings); + } + }, + failure: function(record, response) { + button.setDisabled(true); + button.up('toolbar').down('button[action=discard]') + .setDisabled(true); + formPanel.getForm().loadRecord(formPanel.getForm().getRecord()); + var json = response.request.scope.reader.jsonData; + if (json) { + formPanel.setMessages(json.errors, json.warnings); + } + } + }); + console.log('save'); + }, + + discard: function(button) { + var formPanel = button.up('form'); + formPanel.getForm().loadRecord(formPanel.getForm().getRecord()); + }, + + 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); + } + } +});
--- a/app/view/form/Messung.js Fri Mar 13 14:52:35 2015 +0100 +++ b/app/view/form/Messung.js Fri Mar 13 15:18:04 2015 +0100 @@ -14,10 +14,10 @@ alias: 'widget.messungform', requires: [ 'Lada.view.widget.Datenbasis', + 'Lada.view.widget.base.CheckBox', + 'Lada.view.widget.Messmethode', 'Lada.view.widget.base.TextField', 'Lada.view.widget.base.Datetime', - 'Lada.view.widget.base.FieldSet', - 'Lada.model.Messung' ], model: 'Lada.model.Messung', @@ -30,9 +30,87 @@ trackResetOnLoad: true, initComponent: function() { + var me = this; this.items = [{ xtype: 'fieldset', - title: 'Allgemein' + 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: 'textfield', + name: 'nebenprobenNr', + maxLength: 10, + margin: '0, 10, 5, 0', + fieldLabel: '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, + 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', + margin: '0, 10, 5, 0', + fieldLabel: 'Geplant', + width: 300, + labelWidth: 100, + }] + }] }]; this.callParent(arguments); },
--- a/app/view/form/Probe.js Fri Mar 13 14:52:35 2015 +0100 +++ b/app/view/form/Probe.js Fri Mar 13 15:18:04 2015 +0100 @@ -106,35 +106,17 @@ name: 'datenbasisId', fieldLabel: 'Datenbasis', labelWidth: 100, - listeners: { - dirtychange: { - fn: this.updateOnChange, - scope: me - } - } }, { xtype: 'betriebsart', name: 'baId', fieldLabel: 'Betriebsart', labelWidth: 100, - listeners: { - dirtychange: { - fn: this.updateOnChange, - scope: me - } - } }, { xtype: 'testdatensatz', name: 'test', fieldLabel: 'Testdatensatz', labelWidth: 100, allowBlank: false, - listeners: { - dirtychange: { - fn: this.updateOnChange, - scope: me - } - } }, { xtype: 'probenart', editable: false, @@ -142,24 +124,12 @@ fieldLabel: 'Probenart', labelWidth: 100, allowBlank: false, - listeners: { - dirtychange: { - fn: this.updateOnChange, - scope: me - } - } }, { xtype: 'numberfield', allowDecimals: false, name: 'probeNehmerId', fieldLabel: 'Probennehmer', labelWidth: 100, - listeners: { - dirtychange: { - fn: this.updateOnChange, - scope: me - } - } }, { xtype: 'netzbetreiber', name: 'netzbetreiberId', @@ -167,23 +137,11 @@ fieldLabel: 'Netzbetreiber', labelWidth: 100, allowBlank: false, - listeners: { - dirtychange: { - fn: this.updateOnChange, - scope: me - } - } }, { xtype: 'tfield', name: 'x11', fieldLabel: 'Datensatzerzeuger', labelWidth: 100, - listeners: { - dirtychange: { - fn: this.updateOnChange, - scope: me - } - } }] }] }]
--- a/app/view/widget/Messmethode.js Fri Mar 13 14:52:35 2015 +0100 +++ b/app/view/widget/Messmethode.js Fri Mar 13 15:18:04 2015 +0100 @@ -22,7 +22,8 @@ triggerAction: 'all', typeAhead: true, minChars: 0, - + layout: 'hbox', + initComponent: function() { this.store = Ext.data.StoreManager.get('messmethoden'); if (!this.store) {
--- a/app/view/widget/Testdatensatz.js Fri Mar 13 14:52:35 2015 +0100 +++ b/app/view/widget/Testdatensatz.js Fri Mar 13 15:18:04 2015 +0100 @@ -6,16 +6,7 @@ * the documentation coming with IMIS-Labordaten-Application for details. */ -var testdatensatzStore = Ext.create('Ext.data.Store', { - fields: ['testdatensatzId', 'testdatensatz'], - data: [{ - 'testdatensatzId': true, - 'testdatensatz': 'Ja' - }, { - 'testdatensatzId': false, - 'testdatensatz': 'Nein' - }] -}); + /** * Combobox for Testdatensatz. @@ -23,15 +14,23 @@ */ Ext.define('Lada.view.widget.Testdatensatz', { extend: 'Lada.view.widget.base.ComboBox', - editable: false, alias: 'widget.testdatensatz', - store: testdatensatzStore, queryMode: 'local', displayField: 'testdatensatz', valueField: 'testdatensatzId', emptyText: 'Testdatensatz?', initComponent: function() { + this.store = Ext.create('Ext.data.Store', { + fields: ['testdatensatzId', 'testdatensatz'], + data: [{ + 'testdatensatzId': true, + 'testdatensatz': 'Ja' + }, { + 'testdatensatzId': false, + 'testdatensatz': 'Nein' + }] + }); this.callParent(arguments); } });
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/view/widget/base/CheckBox.js Fri Mar 13 15:18:04 2015 +0100 @@ -0,0 +1,96 @@ +/* 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. + */ + +Ext.define('Lada.view.widget.base.CheckBox', { + extend: 'Ext.form.Panel', + alias: 'widget.chkbox', + + layout: 'hbox', + + border: 0, + + margin: '0, 0, 5, 0', + + initComponent: function() { + this.items = [{ + xtype: 'checkbox', + flex: 1, + name: this.name, + fieldLabel: this.fieldLabel, + labelWidth: this.labelWidth, + listeners: this.listeners, + triggerAction: this.triggerAction, + msgTarget: 'none', + tpl: this.tpl + }, { + xtype: 'image', + name: 'warnImg', + src: 'resources/img/icon-warning.gif', + width: 12, + height: 12, + hidden: true + }, { + xtype: 'image', + name: 'errorImg', + src: 'resources/img/icon-error.gif', + width: 12, + height: 12, + hidden: true + }]; + this.callParent(arguments); + }, + + showWarnings: function(warnings) { + var img = this.down('image[name=warnImg]'); + Ext.create('Ext.tip.ToolTip', { + target: img.getEl(), + html: warnings + }); + this.down('checkbox').invalidCls = 'x-lada-warning'; + this.down('checkbox').markInvalid(''); + img.show(); + var fieldset = this.up('fieldset[collapsible=true]'); + if (fieldset) { + fieldset.showWarnings(warnings); + } + }, + + showErrors: function(errors) { + var img = this.down('image[name=errorImg]'); + var warnImg = this.down('image[name=warnImg]'); + warnImg.hide(); + Ext.create('Ext.tip.ToolTip', { + target: img.getEl(), + html: errors + }); + this.down('checkbox').invalidCls = 'x-lada-error'; + this.down('checkbox').markInvalid(''); + img.show(); + var fieldset = this.up('fieldset[collapsible=true]'); + if (fieldset) { + fieldset.showErrors(); + } + }, + + clearWarningOrError: function() { + this.down('image[name=errorImg]').hide(); + this.down('image[name=warnImg]').hide(); + }, + + getValue: function() { + return this.down('checkbox').getValue(); + }, + + getName: function() { + return this.name; + }, + + setReadOnly: function(value) { + this.down('checkbox').setReadOnly(value); + } +});
--- a/app/view/window/MessungEdit.js Fri Mar 13 14:52:35 2015 +0100 +++ b/app/view/window/MessungEdit.js Fri Mar 13 15:18:04 2015 +0100 @@ -48,8 +48,9 @@ autoScroll: true, items: [{ xtype: 'messungform', + margin: 5, recordId: this.record.get('id') - }, { + /*}, { xtype: 'fset', name: 'messwerte', title: 'Messwerte', @@ -58,7 +59,7 @@ items: [{ xtype: 'messwertgrid', recordId: this.record.get('id') - }] + }]*/ }, { xtype: 'fset', name: 'messungstatus', @@ -86,6 +87,7 @@ initData: function() { this.clearMessages(); + this.down('messungform').setRecord(this.record); Ext.ClassManager.get('Lada.model.Messung').load(this.record.get('id'), { failure: function(record) { // TODO @@ -99,8 +101,7 @@ } }, scope: this - } - ); + }); }, setMessages: function(errors, warnings) {