# HG changeset patch # User Dustin Demuth # Date 1431440765 -7200 # Node ID da14e0f3e5997acc2e47239bfb29e5862188dc96 # Parent 311c39a64064055b142d8e9caf3d9e56e265c53c# Parent dd6925ef602857c8a4141d8674ba220de0a008a0 merged diff -r 311c39a64064 -r da14e0f3e599 app/controller/form/Probe.js --- a/app/controller/form/Probe.js Tue May 12 16:25:17 2015 +0200 +++ b/app/controller/form/Probe.js Tue May 12 16:26:05 2015 +0200 @@ -29,6 +29,9 @@ }, 'probeform [xtype="datetime"] field': { blur: this.checkDate + }, + 'probeform panel[xtype="deskriptor] combobox': { + select: this.deskriptorSelect } }); }, @@ -173,5 +176,52 @@ if (w == 0 && e == 0) { field.up().clearWarningOrError(); } + }, + + deskriptorSelect: function(field, records) { + var desk = field.up('deskriptor'); + var media = field.up('probeform').down('textfield[name="mediaDesk"]'); + var current = media.getValue().split(' '); + this.clearChildDesk(field.up('deskriptor'), current); + if (current.length < 13) { + for (var i = 0; i <= 12; i++) { + if (i === 0) { + current.push('D:'); + } + else if (i === desk.layer + 1) { + var value; + if (records[0].get('sn') < 10) { + value = '0' + records[0].get('sn'); + } + else { + value = records[0].get('sn'); + } + current.push(value); + } + else { + current.push('00'); + } + } + } + else { + var value; + if (records[0].get('sn') < 10) { + value = '0' + records[0].get('sn'); + } + else { + value = records[0].get('sn'); + } + current[desk.layer + 1] = value; + } + media.setValue(current.join(' ').trim()); + }, + + clearChildDesk: function(field, media) { + var allS = field.up('fieldset').items.items; + for (var i = field.layer + 1; i < 12; i++) { + allS[i].clearValue(); + media[i + 1] = '00'; + } } + }); diff -r 311c39a64064 -r da14e0f3e599 app/model/Deskriptor.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/model/Deskriptor.js Tue May 12 16:26:05 2015 +0200 @@ -0,0 +1,36 @@ +/** + * + */ +Ext.define('Lada.model.Deskriptor', { + extend: 'Ext.data.Model', + + /** + * Fields are: + * - ... + */ + fields: [{ + name: 'bedeutung' + }, { + name: 'beschreibung' + }, { + name: 'ebene' + }, { + name: 'id' + }, { + name: 'sn' + }, { + name: 'sXx' + }], + + idProperty: 'id', + + proxy: { + type: 'rest', + url: 'lada-server/deskriptor', + reader: { + type: 'json', + root: 'data', + totalProperty: 'totalCount' + } + } +}); diff -r 311c39a64064 -r da14e0f3e599 app/store/Deskriptoren.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/store/Deskriptoren.js Tue May 12 16:26:05 2015 +0200 @@ -0,0 +1,15 @@ +/* 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. + */ + +/** + * Store for Datenbasis + */ +Ext.define('Lada.store.Deskriptoren', { + extend: 'Ext.data.Store', + model: 'Lada.model.Deskriptor' +}); diff -r 311c39a64064 -r da14e0f3e599 app/view/form/Probe.js --- a/app/view/form/Probe.js Tue May 12 16:25:17 2015 +0200 +++ b/app/view/form/Probe.js Tue May 12 16:26:05 2015 +0200 @@ -20,11 +20,12 @@ 'Lada.view.widget.Testdatensatz', 'Lada.view.widget.Probenart', 'Lada.view.widget.Umwelt', + 'Lada.view.widget.Deskriptor', 'Lada.view.widget.base.TextField', 'Lada.view.widget.base.Datetime', 'Lada.view.widget.base.FieldSet', 'Lada.view.widget.base.DateField', - 'Lada.model.Probe', + 'Lada.model.Probe' ], model: 'Lada.model.Probe', @@ -303,6 +304,42 @@ this.getForm().loadRecord(record); }, + setMediaDesk: function(record) { + var media = record.get('mediaDesk').split(' '); + this.setMediaSN(0, media); + }, + + setMediaSN: function(ndx, media) { + if (ndx >= 12) { + return; + } + var me = this; + var current = this.down('deskriptor[layer=' + ndx + ']'); + var cbox = current.down('combobox'); + if (ndx === 0) { + cbox.store.proxy.extraParams = { + 'layer': ndx + }; + } + else { + var parents = current.getParents(current.down('combobox')); + if (parents.length === 0) { + return; + } + cbox.store.proxy.extraParams = { + 'layer': ndx, + 'parents': parents + }; + } + cbox.store.load(function(records, op, success) { + if (!success) { + return; + } + cbox.select(cbox.store.findRecord('sn', parseInt(media[ndx + 1], 10))); + me.setMediaSN(++ndx, media); + }); + }, + setMessages: function(errors, warnings) { var key; var element; @@ -386,9 +423,12 @@ var fields = []; for (var i = 0; i < 12; i++) { fields[i] = { + xtype: 'deskriptor', fieldLabel: 'S' + i, name: 's' + i, labelWidth: 25, + width: 190, + layer: i, margin: '0, 10, 5, 0' }; } diff -r 311c39a64064 -r da14e0f3e599 app/view/widget/Deskriptor.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/view/widget/Deskriptor.js Tue May 12 16:26:05 2015 +0200 @@ -0,0 +1,64 @@ +/* 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. + */ + +/** + * Combobox for Deskriptor + */ +Ext.define('Lada.view.widget.Deskriptor', { + extend: 'Lada.view.widget.base.ComboBox', + alias: 'widget.deskriptor', + displayField: 'beschreibung', + valueField: 'id', + // Enable filtering of comboboxes + triggerAction: 'all', + typeAhead: false, + layer: null, + queryMode: 'local', + listeners: { + expand: { + fn: function(field) { + if (field.up('deskriptor').layer === 0) { + field.store.proxy.extraParams = {'layer': field.up('deskriptor').layer}; + field.store.load(); + } + else { + var parents = field.up('deskriptor').getParents(this); + if (parents !== '') { + field.store.proxy.extraParams = { + 'layer': field.up('deskriptor').layer, + 'parents': parents + }; + field.store.load(); + } + } + } + } + }, + + initComponent: function() { + this.store = Ext.create('Lada.store.Deskriptoren'); + + this.callParent(arguments); + }, + + getParents: function(field) { + var set = field.up('fieldset'); + var allS = set.items.items; + var p = ''; + + for (var i = 0; i < field.up('deskriptor').layer; i++) { + if (allS[i].getValue() > 0) { + p += allS[i].getValue(); + if (i < field.up('deskriptor').layer - 1) { + p += ', '; + } + } + } + return p; + } +}); diff -r 311c39a64064 -r da14e0f3e599 app/view/window/ProbeEdit.js --- a/app/view/window/ProbeEdit.js Tue May 12 16:25:17 2015 +0200 +++ b/app/view/window/ProbeEdit.js Tue May 12 16:26:05 2015 +0200 @@ -141,6 +141,9 @@ var json = Ext.decode(response.response.responseText); if (json) { this.setMessages(json.errors, json.warnings); + if (!json.warnings.mediaDesk) { + this.down('probeform').setMediaDesk(record); + } } // If the Probe is ReadOnly, disable Inputfields and grids if (this.record.get('readonly') === true) {