changeset 1185:90ae675a1224 schema-update

Updated client status workflow and model.
author Raimund Renkert <raimund.renkert@intevation.de>
date Wed, 31 Aug 2016 15:58:49 +0200
parents be720d0473f6
children a1c480be0b79
files app/controller/grid/Status.js app/model/StatusKombi.js app/store/StatusKombi.js app/view/form/Messung.js app/view/grid/Messung.js app/view/grid/Status.js
diffstat 6 files changed, 135 insertions(+), 44 deletions(-) [+]
line wrap: on
line diff
--- a/app/controller/grid/Status.js	Wed Aug 31 15:58:19 2016 +0200
+++ b/app/controller/grid/Status.js	Wed Aug 31 15:58:49 2016 +0200
@@ -39,7 +39,18 @@
      * On failure it displays a message
      */
      gridSave: function(editor, context) {
-        context.record.set('sdatum', new Date());
+        context.record.set('datum', new Date());
+        var wert = editor.getEditor().down('combobox[displayField=wert]').value;
+        var stufe = editor.getEditor().down('combobox[displayField=stufe]').value;
+        var kombis = Ext.data.StoreManager.get('statuskombi');
+        var kombiNdx = kombis.findBy(function(record, id) {
+            if (record.raw.statusStufe.id === stufe &&
+                record.raw.statusWert.id === wert
+            ) {
+                return true;
+            }
+        });
+        context.record.set('statusKombi', kombis.getAt(kombiNdx).get('id'));
         context.record.save({
             success: function(response) {
                 var i18n = Lada.getApplication().bundle;
@@ -172,18 +183,27 @@
 
         var resetStatusValue = 8;
 
-        var s = button.up('window').down('messungform').getRecord().get('status');
+        var s = button.up('window').down('messungform').getCurrentStatus();
         var messId = button.up('window').down('messungform').getRecord().get('id');
-        var recentStatus = button.up('statusgrid').store.getById(s);
 
+        if(!s) {
+            Ext.Msg.alert(i18n.getMsg('err.msg.generic.title'),
+                i18n.getMsg('err.msg.generic.body'));
+            return;
+        }
         //Set Status to 'Resetted' (8)
-        if (recentStatus) {
-            var record = recentStatus.copy();
-            record.set('datum', new Date());
-            record.set('statusWert', resetStatusValue);
-            record.set('id', null);
-            record.set('text', i18n.getMsg('statusgrid.resetText'));
-        }
+        var kombis = Ext.data.StoreManager.get('statuskombi');
+        var stufe = kombis.getById(s.get('statusKombi')).raw.statusStufe.id;
+        var kombiNdx = kombis.findBy(function(record, id) {
+            if(record.raw.statusStufe.id === stufe && record.raw.statusWert.id === 8) {
+                return true;
+            }
+        });
+        var record = s.copy();
+        record.set('datum', new Date());
+        record.set('statusKombi', kombis.getAt(kombiNdx).get('id'));
+        record.set('id', null);
+        record.set('text', i18n.getMsg('statusgrid.resetText'));
 
         Ext.Ajax.request({
             url: 'lada-server/rest/status',
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/app/model/StatusKombi.js	Wed Aug 31 15:58:49 2016 +0200
@@ -0,0 +1,36 @@
+/* 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.
+ */
+
+/**
+ * Model class for StatusKombi
+ */
+Ext.define('Lada.model.StatusKombi', {
+    extend: 'Ext.data.Model',
+
+    fields: [{
+        name: 'id'
+    }, {
+        name: 'stufeId',
+        type: 'int'
+    }, {
+        name: 'stufeId',
+        type: 'int'
+    }],
+
+    idProperty: 'id',
+
+    proxy: {
+        type: 'rest',
+        url: 'lada-server/rest/statuskombi',
+        reader: {
+            type: 'json',
+            root: 'data'
+        }
+    }
+});
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/app/store/StatusKombi.js	Wed Aug 31 15:58:49 2016 +0200
@@ -0,0 +1,17 @@
+/* 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 Status-Kombi
+ */
+Ext.define('Lada.store.StatusKombi', {
+    extend: 'Ext.data.Store',
+    model: 'Lada.model.StatusKombi',
+    autoLoad: false
+});
+
--- a/app/view/form/Messung.js	Wed Aug 31 15:58:19 2016 +0200
+++ b/app/view/form/Messung.js	Wed Aug 31 15:58:49 2016 +0200
@@ -30,6 +30,8 @@
 
     trackResetOnLoad: true,
 
+    currentStatus: null,
+
     initComponent: function() {
         var me = this;
         var i18n = Lada.getApplication().bundle;
@@ -79,6 +81,7 @@
                     name: 'mmtId',
                     margin: '0, 10, 5, 0',
                     fieldLabel: 'Messmethode',
+                    allowBlank: false,
                     width: 300,
                     labelWidth: 100
                 }, {
@@ -126,7 +129,6 @@
                     width: 300,
                     labelWidth: 100,
                     submitValue: false,
-                    isFormField: false,
                     preventMark: true, //Do not display error msg.
                     validateValue: function() {
                         return true; //this field is always valid
@@ -168,6 +170,10 @@
         }
     },
 
+    getCurrentStatus: function() {
+        return this.currentStatus;
+    },
+
     retrieveStatus: function(messungsId, statusId) {
         var i18n = Lada.getApplication().bundle;
         var msg = i18n.getMsg('load.statuswert');
@@ -178,6 +184,7 @@
             textfield.setRawValue(msg);
         }
 
+        var me = this;
         var sStore = Ext.create('Lada.store.Status');
         sStore.load({
             params: {
@@ -190,9 +197,13 @@
                     sw = 0;
                 }
                 else {
-                    sw = sStore.getById(statusId).get('statusWert');
-                    ss = sStore.getById(statusId).get('statusStufe');
-                    se = sStore.getById(statusId).get('erzeuger');
+                    me.currentStatus = sStore.getById(statusId);
+                    sk = sStore.getById(statusId).get('statusKombi');
+                    se = sStore.getById(statusId).get('mstId');
+                    var kombis = Ext.data.StoreManager.get('statuskombi');
+                    var rec = kombis.getById(sk);
+                    sw = rec.raw.statusWert.id;
+                    ss = rec.raw.statusStufe.id;
                 }
                 this.setStatusWert(sw);
                 this.setStatusStufe(ss);
--- a/app/view/grid/Messung.js	Wed Aug 31 15:58:19 2016 +0200
+++ b/app/view/grid/Messung.js	Wed Aug 31 15:58:49 2016 +0200
@@ -75,36 +75,40 @@
         }, {
             header: 'Status',
             flex: 1,
-            dataIndex: 'statusWert',
+            dataIndex: 'statusKombi',
             renderer: function(value, meta, record, rNdx, cNdx) {
                 var statusId = record.get('status');
                 var mId = record.get('id');
                 //also fwd the record to the asynchronous loading of statuswerte
                 // in order to add the statuswert to the record,
                 // after the grid was rendered...
-                if (value === '') {
+                if (!value || value === '') {
                     this.updateStatus(mId, statusId, record);
                     return 'Lade...';
                 }
-                var sta = Ext.data.StoreManager.getByKey('statuswerte');
-                return sta.getById(value).get('wert');
+                var kombis = Ext.data.StoreManager.get('statuskombi');
+                var kombi = kombis.getById(value);
+                var st = kombi.raw.statusWert.wert
+                return st;
             }
         }, {
             header: 'Stufe',
             flex: 1,
-            dataIndex: 'statusStufe',
+            dataIndex: 'statusKombi',
             renderer: function(value, meta, record, rNdx, cNdx) {
                 var statusId = record.get('status');
                 var mId = record.get('id');
                 //also fwd the record to the asynchronous loading of statuswerte
                 // in order to add the statuswert to the record,
                 // after the grid was rendered...
-                if (value === '') {
+                if (!value || value === '') {
                     this.updateStatus(mId, statusId, record);
                     return 'Lade...';
                 }
-                var sta = Ext.data.StoreManager.getByKey('statusstufe');
-                return sta.getById(value).get('stufe');
+                var kombis = Ext.data.StoreManager.get('statuskombi');
+                var kombi = kombis.getById(value);
+                var st = kombi.raw.statusStufe.stufe
+                return st;
             }
         }, {
             header: 'OK-Flag',
@@ -252,14 +256,12 @@
         else {
             var rec = sstore.getById(opts.statusId);
             if (rec) {
-                value = rec.get('statusWert');
-                var stufe = rec.get('statusStufe');
+                value = rec.get('statusKombi');
                 //add the determined statuswert to the record.
                 // this is necessary to let the controller determine
                 // which actions are allowed.
                 opts.record.beginEdit();
-                opts.record.set('statusWert', value);
-                opts.record.set('statusStufe', stufe);
+                opts.record.set('statusKombi', value);
                 opts.record.endEdit();
             }
         }
--- a/app/view/grid/Status.js	Wed Aug 31 15:58:19 2016 +0200
+++ b/app/view/grid/Status.js	Wed Aug 31 15:58:49 2016 +0200
@@ -23,6 +23,7 @@
     readOnly: true,
     allowDeselect: true,
     statusWerteStore: null,
+    statusStufeStore: null,
 
     initComponent: function() {
         var i18n = Lada.getApplication().bundle;
@@ -34,8 +35,8 @@
                 messungsId: this.recordId
             }
         });
-        var statusStufeStore = Ext.create('Lada.store.StatusStufe');
-        statusStufeStore.load();
+        this.statusStufeStore = Ext.create('Lada.store.StatusStufe');
+        this.statusStufeStore.load();
 
         this.rowEditing = Ext.create('Ext.grid.plugin.RowEditing', {
             clicksToMoveEditor: 1,
@@ -110,33 +111,37 @@
             sortable: false
         }, {
             header: i18n.getMsg('statusgrid.header.statusStufe'),
-            dataIndex: 'statusStufe',
+            dataIndex: 'statusKombi',
             renderer: function(value) {
-                var sta = Ext.data.StoreManager.get('statusstufe');
-                var r;
-                if (value===null || value === '') {
-                    r = i18n.getMsg('error');
-                }
-                var item = sta.getById(value);
+                var kombi = Ext.data.StoreManager.get('statuskombi');
+                var r = '';
+                var item = kombi.getById(value);
                 if (item) {
-                    r = item.get('stufe');
+                    r = item.raw.statusStufe.stufe;
                 }
                 return r;
             },
+            editor: {
+                xtype: 'combobox',
+                store: this.statusStufeStore,
+                queryMode: 'local',
+                displayField: 'stufe',
+                valueField: 'id',
+                allowBlank: false,
+                editable: false,
+                forceSelection: true
+            },
             sortable: false
         }, {
             header: i18n.getMsg('statusgrid.header.statusWert'),
-            dataIndex: 'statusWert',
+            dataIndex: 'statusKombi',
             renderer: function(value) {
-                var sta = Ext.data.StoreManager.get('statuswerte');
+                var kombi = Ext.data.StoreManager.get('statuskombi');
                 //This store is NOT used in the editor...
-                var r;
-                if (value===null || value === '') {
-                    r = i18n.getMsg('error');
-                }
-                var item = sta.getById(value);
+                var r = '';
+                var item = kombi.getById(value);
                 if (item) {
-                    r = item.get('wert');
+                    r = item.raw.statusWert.wert;
                 }
                 return r;
             },

http://lada.wald.intevation.org