Mercurial > lada > lada-client
diff app/view/window/AuditTrail.js @ 1386:7e9a6f0e55b3
Added UI for audit trail.
TODO: add more i18n strings.
author | Raimund Renkert <raimund.renkert@intevation.de> |
---|---|
date | Fri, 24 Feb 2017 14:32:55 +0100 |
parents | |
children | e53e398df409 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/view/window/AuditTrail.js Fri Feb 24 14:32:55 2017 +0100 @@ -0,0 +1,142 @@ +/* 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, + + + /** + * 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 json = Ext.decode(response.responseText); + var container = this.down('panel[name=auditcontainer]'); + 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 = '<p><strong>Probe: ' + json.data.identifier + '</strong><br></p>'; + var audit = json.data.audit; + if (audit.length === 0) { + html += '<p>Keine Änderungen</p>'; + } + else { + for (var i = 0; i < audit.length; i++) { + html += '<p style="margin-bottom:0"><b>' + i18n.getMsg('date') + ': ' + + (Ext.Date.format(new Date(audit[i].timestamp), 'd.m.Y H:i')) + '</b>'; + if (!Ext.isObject(audit[i].identifier)) { + if (audit[i].type !== 'probe') { + html += '<br>' + i18n.getMsg(audit[i].type) + ': '; + html += audit[i].identifier; + } + } + else { + html += '<br>' + i18n.getMsg('messung') + ': ' + + audit[i].identifier.messung + ' -> ' + + i18n.getMsg(audit[i].type) + ': ' + + audit[i].identifier.identifier; + + } + html += '<br>geändert<br><div style="margin-left:2em;">' + for (var key in audit[i].changedFields) { + html += '' + i18n.getMsg(key) + ': ' + + audit[i].changedFields[key] + '<br>'; + } + html += '</div>'; + html += '</p>'; + } + } + return html; + }, + + createHtmlMessung: function(json) { + var i18n = Lada.getApplication().bundle; + var html = '<p><strong>Messung: ' + json.data.identifier + '</strong><br></p>'; + var audit = json.data.audit; + if (audit.length === 0) { + html += '<p>Keine Änderungen</p>'; + } + else { + for (var i = 0; i < audit.length; i++) { + html += '<p style="margin-bottom:0"><b>' + i18n.getMsg('date') + ': ' + + (Ext.Date.format(new Date(audit[i].timestamp), 'd.m.Y H:i')) + '</b>'; + if (audit[i].type !== 'messung') { + html += '<br>' + i18n.getMsg(audit[i].type) + ': '; + html += audit[i].identifier; + } + html += '<br>geändert<br><div style="margin-left:2em;">' + for (var key in audit[i].changedFields) { + html += '' + i18n.getMsg(key) + ': ' + + audit[i].changedFields[key] + '<br>'; + } + html += '</div>'; + html += '</p>'; + } + } + return html; + } +});