# HG changeset patch # User Tom Gottfried # Date 1490626200 -7200 # Node ID dc90e2997071e29caa7a023854d1cd26930645d9 # Parent 50b04a7bee167f870bc1f8fb86d73609cda096d7# Parent e749d09fafcabd83598ed91af547668c27fa0124 Merged branch release-2.5 into default. diff -r e749d09fafca -r dc90e2997071 app.js --- a/app.js Mon Mar 27 09:56:17 2017 +0200 +++ b/app.js Mon Mar 27 16:50:00 2017 +0200 @@ -89,7 +89,7 @@ Lada.logintime = ''; Lada.mst = []; Lada.netzbetreiber = []; - Lada.clientVersion = '2.5.1'; + Lada.clientVersion = '2.6-SNAPSHOT'; Lada.serverVersion = ''; var queryString = document.location.href.split('?')[1]; diff -r e749d09fafca -r dc90e2997071 app/controller/form/Messung.js --- a/app/controller/form/Messung.js Mon Mar 27 09:56:17 2017 +0200 +++ b/app/controller/form/Messung.js Mon Mar 27 16:50:00 2017 +0200 @@ -24,6 +24,9 @@ 'messungform button[action=discard]': { click: this.discard }, + 'messungform button[action=audit]': { + click: this.showAuditTrail + }, 'messungform': { dirtychange: this.dirtyForm } @@ -135,5 +138,14 @@ form.owner.up('window').enableChildren(); } } + }, + + showAuditTrail: function(button) { + Ext.create('Lada.view.window.AuditTrail', { + autoShow: true, + closeAction: 'destroy', + type: 'messung', + objectId: button.up('form').recordId + }); } }); diff -r e749d09fafca -r dc90e2997071 app/controller/form/Probe.js --- a/app/controller/form/Probe.js Mon Mar 27 09:56:17 2017 +0200 +++ b/app/controller/form/Probe.js Mon Mar 27 16:50:00 2017 +0200 @@ -12,6 +12,10 @@ Ext.define('Lada.controller.form.Probe', { extend: 'Ext.app.Controller', + requires: [ + 'Lada.view.window.AuditTrail' + ], + /** * Initialize the Controller * It has 4 listeners @@ -24,6 +28,9 @@ 'probeform button[action=discard]': { click: this.discard }, + 'probeform button[action=audit]': { + click: this.showAuditTrail + }, 'probeform': { dirtychange: this.dirtyForm }, @@ -304,6 +311,14 @@ for (var i = field.layer + 1; i < 12; i++) { allS[i].clearValue(); } + }, + + showAuditTrail: function(button) { + Ext.create('Lada.view.window.AuditTrail', { + autoShow: true, + closeAction: 'destroy', + type: 'probe', + objectId: button.up('form').recordId + }); } - }); diff -r e749d09fafca -r dc90e2997071 app/view/form/Messung.js --- a/app/view/form/Messung.js Mon Mar 27 09:56:17 2017 +0200 +++ b/app/view/form/Messung.js Mon Mar 27 16:50:00 2017 +0200 @@ -55,6 +55,12 @@ borderRight: '1px solid #b5b8c8 !important' }, items: ['->', { + text: i18n.getMsg('audittrail'), + qtip: i18n.getMsg('qtip.audit'), + icon: 'resources/img/distribute-vertical-center.png', + action: 'audit', + disabled: this.recordId === null + }, { text: 'Speichern', qtip: 'Daten speichern', icon: 'resources/img/dialog-ok-apply.png', diff -r e749d09fafca -r dc90e2997071 app/view/form/Probe.js --- a/app/view/form/Probe.js Mon Mar 27 09:56:17 2017 +0200 +++ b/app/view/form/Probe.js Mon Mar 27 16:50:00 2017 +0200 @@ -60,6 +60,12 @@ borderRight: '1px solid #b5b8c8 !important' }, items: ['->', { + text: i18n.getMsg('audittrail'), + qtip: i18n.getMsg('qtip.audit'), + icon: 'resources/img/distribute-vertical-center.png', + action: 'audit', + disabled: this.recordId === null + }, { text: 'Speichern', qtip: 'Daten speichern', icon: 'resources/img/dialog-ok-apply.png', diff -r e749d09fafca -r dc90e2997071 app/view/grid/Ortszuordnung.js --- a/app/view/grid/Ortszuordnung.js Mon Mar 27 09:56:17 2017 +0200 +++ b/app/view/grid/Ortszuordnung.js Mon Mar 27 16:50:00 2017 +0200 @@ -184,12 +184,18 @@ var modelname; if (this.isMessprogramm) { this.store = Ext.create('Lada.store.OrtszuordnungMp'); - this.store.load({ - params: { - messprogrammId: this.recordId - }}); - modelname = 'Lada.model.Messprogramm'; - } else { + if (this.recordId) { + this.store.load({ + params: { + messprogrammId: this.recordId + }}); + modelname = 'Lada.model.Messprogramm'; + } + else { + return; + } + } + else { modelname = 'Lada.model.Probe'; this.store = Ext.create('Lada.store.Ortszuordnung'); this.store.load({ diff -r e749d09fafca -r dc90e2997071 app/view/grid/PKommentar.js --- a/app/view/grid/PKommentar.js Mon Mar 27 09:56:17 2017 +0200 +++ b/app/view/grid/PKommentar.js Mon Mar 27 16:50:00 2017 +0200 @@ -19,7 +19,7 @@ ], maxHeight: 350, - emptyText: 'Keine Kommentaregefunden.', + emptyText: 'Keine Kommentare gefunden.', minHeight: 110, viewConfig: { deferEmptyText: false diff -r e749d09fafca -r dc90e2997071 app/view/window/AuditTrail.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/view/window/AuditTrail.js Mon Mar 27 16:50:00 2017 +0200 @@ -0,0 +1,178 @@ +/* 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 with information about history of probe/messung objects.. + */ +Ext.define('Lada.view.window.AuditTrail', { + extend: 'Ext.window.Window', + + layout: 'fit', + + width: 300, + height: 300, + + type: null, + + objectId: null, + + dateItems: [ + "probeentnahme_beginn", + "probeentnahme_ende", + "solldatum_beginn", + "solldatum_ende", + "messzeitpunkt", + "datum" + ], + + + /** + * This function initialises the Window + */ + initComponent: function() { + var me = this; + var i18n = Lada.getApplication().bundle; + me.on({ + show: function() { + me.initData(); + } + }); + + me.title = i18n.getMsg("audit.title"); + me.buttons = [{ + text: i18n.getMsg('close'), + scope: me, + handler: me.close + }]; + me.items = [{ + border: 0, + //autoscroll: true, + overflowY: 'auto', + items: [{ + border: 0, + name: 'auditcontainer' + }] + }]; + me.callParent(arguments); + }, + + initData: function() { + if (this.type === null || this.objectId === null) { + return; + } + Ext.Ajax.request({ + url: 'lada-server/rest/audit/' + this.type + '/' + this.objectId, + method: 'GET', + scope: this, + success: this.loadSuccess, + failure: this.loadFailure + }); + }, + + loadSuccess: function(response) { + var i18n = Lada.getApplication().bundle; + var json = Ext.decode(response.responseText); + var container = this.down('panel[name=auditcontainer]'); + if (!json.success) { + var html = '

' + i18n.getMsg(json.message.toString()) + + '

'; + container.update(html); + } + else { + if (this.type === 'probe') { + var html = this.createHtmlProbe(json); + container.update(html); + } + else if (this.type === 'messung') { + container.update(this.createHtmlMessung(json)); + } + } + }, + + createHtmlProbe: function(json) { + var i18n = Lada.getApplication().bundle; + var html = '

Probe: ' + json.data.identifier + '

'; + var audit = json.data.audit; + if (audit.length === 0) { + html += '

Keine Änderungen

'; + } + else { + for (var i = 0; i < audit.length; i++) { + html += '

' + i18n.getMsg('date') + ': ' + + (Ext.Date.format(new Date(audit[i].timestamp), 'd.m.Y H:i')) + ''; + if (!Ext.isObject(audit[i].identifier)) { + if (audit[i].type !== 'probe') { + html += '
' + i18n.getMsg(audit[i].type) + ': '; + html += audit[i].identifier; + } + } + else { + html += '
' + i18n.getMsg('messung') + ': ' + + audit[i].identifier.messung + ' -> ' + + i18n.getMsg(audit[i].type) + ': ' + + audit[i].identifier.identifier; + + } + html += this.createHtmlChangedFields(audit[i]); + } + } + return html; + }, + + createHtmlMessung: function(json) { + var i18n = Lada.getApplication().bundle; + var html = '

Messung: ' + json.data.identifier + '

'; + var audit = json.data.audit; + if (audit.length === 0) { + html += '

Keine Änderungen

'; + } + else { + for (var i = 0; i < audit.length; i++) { + html += '

' + i18n.getMsg('date') + ': ' + + (Ext.Date.format(new Date(audit[i].timestamp), 'd.m.Y H:i')) + ''; + if (audit[i].type !== 'messung') { + html += '
' + i18n.getMsg(audit[i].type) + ': '; + html += audit[i].identifier; + } + html += this.createHtmlChangedFields(audit[i]); + } + } + return html; + }, + + createHtmlChangedFields: function(audit) { + var i18n = Lada.getApplication().bundle; + html = '
' + i18n.getMsg(audit.action) + + '

'; + + for (var key in audit.changedFields) { + var value = ''; + if (Ext.Array.contains(this.dateItems, key)) { + value = Ext.Date.format(new Date(audit.changedFields[key]), + 'd.m.Y H:i'); + } + else { + value = audit.changedFields[key]; + } + if (value === null) { + value = i18n.getMsg('noValue'); + } + else if (value === true) { + value = i18n.getMsg('true'); + } + else if (value === false) { + value = i18n.getMsg('false'); + } + html += '' + i18n.getMsg(key) + ': ' + + value + '
'; + } + html += '
'; + html += '

'; + return html; + } +}); diff -r e749d09fafca -r dc90e2997071 build.sh --- a/build.sh Mon Mar 27 09:56:17 2017 +0200 +++ b/build.sh Mon Mar 27 16:50:00 2017 +0200 @@ -1,11 +1,12 @@ -SENCHAPATH=~/bin/Sencha/Cmd/4.0.5.87/sencha +#Fallback: SENCHAPATH=~/bin/Sencha/Cmd/4.0.5.87/sencha +if [ -z $SENCHAPATH ]; then SENCHAPATH="~/bin/Sencha/Cmd/4.0.5.87/"; fi VNUMBER=$(grep Lada.clientVersion app.js | cut -d '=' -f 2 | cut -d "'" -f 2) VERSION=lada-client-$VNUMBER # Minify echo "Minifying...." -$SENCHAPATH --sdk-path extjs compile \ +$SENCHAPATH/sencha --sdk-path extjs compile \ --classpath=app,resources/lib/ext/upload,resources/lib/ext/i18n,resources/lib/ext/grid,resources/lib/ext/util page \ -yui -i index.html -o $VERSION/index.html diff -r e749d09fafca -r dc90e2997071 custom-vhosts.conf --- a/custom-vhosts.conf Mon Mar 27 09:56:17 2017 +0200 +++ b/custom-vhosts.conf Mon Mar 27 16:50:00 2017 +0200 @@ -21,7 +21,7 @@ Listen 83 Listen 84 -Define LADA_SERVER_VERSION 2.5 +Define LADA_SERVER_VERSION 2.6-SNAPSHOT ServerAdmin webmaster@localhost diff -r e749d09fafca -r dc90e2997071 resources/i18n/Lada_de-DE.properties --- a/resources/i18n/Lada_de-DE.properties Mon Mar 27 09:56:17 2017 +0200 +++ b/resources/i18n/Lada_de-DE.properties Mon Mar 27 16:50:00 2017 +0200 @@ -106,6 +106,21 @@ messzeitpunkt: Messzeitpunkt messgroesse: Messgröße pflichtmessgroesse: Pflichtmessgröße +audittrail:Verlauf +date:Datum +messwert:Messwert +messdauer:Messdauer +probenart_id:Probenart +probe_nehmer_id:Probenehmer +id_alt:Id +mpl_id:Messprogramm-Land +ba_id:Messregime +geplant:Geplant +meh_id:Messeinheit +messgroesse_id:Messgröße +pzs_id:PZW +nwg_zu_messwert:Nachweisgrenze +zusatzwert:Zusatzwert emptytext.probenintervall:Wählen Sie ein Probenintervall emptytext.datenbasis:Wählen Sie eine Datenbasis @@ -141,6 +156,7 @@ messprogrammort.button.title:Ort angeben about.window.title:Über about.button.title:Über +audit.title:Verlauf about.window.text.login:Sie sind angemeldet mit der Kennung: about.window.text.roles:Sie sind Mitglied der folgenden Gruppen: @@ -360,3 +376,46 @@ # Action ## open:öffnen + +## +# Audit-Trail +## +ort_id:Ort-ID +ortszuordnung_typ: Ortszuordnungstyp +ortszuordnung:Ortszuordnung +ortszusatztext: Ortszusatztext +hauptproben_nr:Hauptprobennummer +nebenproben_nr:Nebenprobennr. +grenzwertueberschreitung:Grenzwertüberschreitung +media:Medium +media_desk:Deskriptoren +umw_id:Umweltbereich +fertig:Fertig +text:Text +datum:Datum +zusatz_wert:Zusatzwert +kommentar_m:Messungskommentar +kommentar_p:Probenkommentar +mmt_id:Messmethode +messwert_nwg:Nachweisgrenze +messzeitpunkt:Messzeitpunkt +messwert_pzs:Messwert +messfehler:Messfehler +status:Status +probe_id:Proben-ID +solldatum_beginn:Solldatum(Beginn) +solldatum_ende:Solldatum(Ende) +mpr_id:mpr-ID +probe_nehmer_id:Probennehmer-ID +erzeuger_id:Erzeuger-ID +mittelungsdauer:Mittelungsdauer +mst_id:Messstelle +labor_mst_id: Labor/Messtelle +datenbasis_id: Datenbasis +probeentnahme_beginn:Probenentnahme(Beginn) +probeentnahme_ende:Probenentnahme(Ende) +noValue:(kein Wert) +true:ja +false:nein +I:angelegt +U:geändert in diff -r e749d09fafca -r dc90e2997071 resources/img/distribute-vertical-center.png Binary file resources/img/distribute-vertical-center.png has changed