partkeepr

fork of partkeepr
git clone https://git.e1e0.net/partkeepr.git
Log | Files | Refs | Submodules | README | LICENSE

commit 4d7ddf194f55e6ddaacb99c72c3c2a9846dad5cd
parent ef2b735cdd88595bde339efa72c0487f0d0499d9
Author: Felicitus <felicitus@felicitus.org>
Date:   Mon, 12 Mar 2012 08:05:20 +0100

Refactored exception window, fixes #152

Diffstat:
Msrc/frontend/js/Dialogs/ExceptionWindow.js | 122+++++++++++++++++++++++++++++++++++++++++++------------------------------------
Msrc/frontend/js/PartKeepr.js | 2+-
2 files changed, 68 insertions(+), 56 deletions(-)

diff --git a/src/frontend/js/Dialogs/ExceptionWindow.js b/src/frontend/js/Dialogs/ExceptionWindow.js @@ -3,14 +3,13 @@ */ Ext.define('PartKeepr.ExceptionWindow', { extend: 'Ext.window.Window', - autoScroll: true, resizable: true, - layout: 'anchor', + layout: 'fit', width: 500, - //height: 300, autoHeight: true, maxHeight: 800, cls: Ext.baseCSSPrefix + 'message-box', + initComponent: function () { this.iconComponent = Ext.create('Ext.Component', { @@ -32,61 +31,75 @@ Ext.define('PartKeepr.ExceptionWindow', { style: 'margin-left: 40px; margin-top: 20px;' }); - this.exceptionDiv = Ext.create('Ext.form.field.TextArea', { - anchor: '100% 100%' + this.exceptionDetails = Ext.create('Ext.form.field.TextArea', { + fieldLabel: i18n("Exception Details"), + flex: 1, + minHeight: 65, + readOnly: true }); - this.traceDiv = Ext.create('Ext.form.field.TextArea', { - anchor: '100% 100%' + this.backtraceDetails = Ext.create('Ext.form.field.TextArea', { + fieldLabel: i18n("Backtrace"), + flex: 1, + minHeight: 65, + readOnly: true }); - this.requestDiv = Ext.create('Ext.form.field.TextArea', { - anchor: '100% 100%' + this.requestDetails = Ext.create('Ext.form.field.TextArea', { + fieldLabel: i18n("Request"), + flex: 1, + minHeight: 65, + readOnly: true }); - this.responseDiv = Ext.create('Ext.form.field.TextArea', { - anchor: '100% 100%' + this.responseDetails = Ext.create('Ext.form.field.TextArea', { + fieldLabel: i18n("Response"), + flex: 1, + minHeight: 65, + readOnly: true }); - this.exceptionDetails = Ext.create('Ext.form.FieldSet', { - style: 'margin-left: 40px; margin-top: 20px', - title: 'Exception Details', - collapsible: true, - collapsed: true, - items: this.exceptionDiv - }); - - this.backtraceDetails = Ext.create('Ext.form.FieldSet', { - style: 'margin-left: 40px', - title: 'Backtrace', - collapsible: true, - collapsed: true, - items: this.traceDiv + this.basicTab = Ext.create("Ext.panel.Panel", { + style: 'padding: 10px', + layout: 'anchor', + anchor: '100% 100%', + title: i18n("Basic"), + items: [this.iconComponent, this.messageDiv, this.detailDiv ] }); - this.requestDetails = Ext.create('Ext.form.FieldSet', { - style: 'margin-left: 40px', - title: 'Server Request', - collapsible: true, - collapsed: true, - items: this.requestDiv + this.detailTab = Ext.create("Ext.form.Panel", { + style: 'padding: 10px', + layout: 'anchor', + autoScroll: true, + title: i18n("Detail"), + items: [{ + xtype: 'panel', + height: 300, + border: false, + layout: { + type: 'vbox', + align : 'stretch', + pack : 'start', + }, + items: [ this.exceptionDetails, this.backtraceDetails, this.requestDetails, this.responseDetails ] + }] }); - this.responseDetails = Ext.create('Ext.form.FieldSet', { - style: 'margin-left: 40px', - title: 'Server Response', - collapsible: true, - collapsed: true, - items: this.responseDiv + this.fullReport = Ext.create("Ext.form.field.TextArea", { + readOnly: true, + height: 300 }); - this.topContainer = Ext.create("Ext.container.Container", { - xtype: 'container', + this.backtraceTab = Ext.create("Ext.panel.Panel", { style: 'padding: 10px', - layout: 'anchor', + layout: 'fit', anchor: '100% 100%', - items: [this.iconComponent, this.messageDiv, this.detailDiv, - this.exceptionDetails, this.backtraceDetails, this.requestDetails, this.responseDetails] + title: i18n("Full Report"), + items: [ this.fullReport ] + }); + + this.topContainer = Ext.create("Ext.tab.Panel", { + items: [ this.basicTab, this.detailTab, this.backtraceTab ] }); this.items = this.topContainer; @@ -101,16 +114,11 @@ Ext.define('PartKeepr.ExceptionWindow', { }, items: [ { xtype: 'button', text: 'OK', handler: Ext.bind(function () { this.hide(); }, this) } - /*{ xtype: 'button', text: 'Details >>', handler: Ext.bind(function () { this.showDetails(); }, this) }*/ ] }]; this.callParent(); }, - showDetails: function () { - this.doComponentLayout(); - console.log(this.getHeight()); - }, setIcon : function(icon) { this.iconComponent.removeCls(this.iconCls); @@ -155,39 +163,43 @@ Ext.define('PartKeepr.ExceptionWindow', { fullDetails += "\n\n"+i18n("Exception")+"\n"+separator+"\n"; fullDetails += exception.exception; - this.exceptionDiv.setValue(exception.exception); + this.exceptionDetails.setValue(exception.exception); } else { - this.exceptionDiv.setValue("No information available"); + this.exceptionDetails.setValue("No information available"); } if (exception.backtrace) { fullDetails += "\n\n"+i18n("Backtrace")+"\n"+separator+"\n"; fullDetails += exception.exception; - this.traceDiv.setValue(nl2br(exception.backtrace)); + this.backtraceDetails.setValue(nl2br(exception.backtrace)); } else { - this.traceDiv.setValue("No backtrace available"); + this.backtraceDetails.setValue("No backtrace available"); } if (requestData.request) { fullDetails += "\n\n"+i18n("Request")+"\n"+separator+"\n"; fullDetails += requestData.request; - this.requestDiv.setValue(nl2br(requestData.request)); + this.requestDetails.setValue(nl2br(requestData.request)); } else { - this.requestDiv.setValue("No server request information available"); + this.requestDetails.setValue("No server request information available"); } if (requestData.response) { fullDetails += "\n\n"+i18n("Response")+"\n"+separator+"\n"; fullDetails += requestData.response; - this.responseDiv.setValue(nl2br(requestData.response)); + this.responseDetails.setValue(nl2br(requestData.response)); } else { - this.responseDiv.setValue("No server response information available"); + this.responseDetails.setValue("No server response information available"); } + this.fullReport.setValue(fullDetails); + this.show(); + this.topContainer.layout.setActiveItem(0); + this.doLayout(); }, statics: { diff --git a/src/frontend/js/PartKeepr.js b/src/frontend/js/PartKeepr.js @@ -483,7 +483,7 @@ PartKeepr.getRESTProxy = function (service) { var data = Ext.decode(response.responseText); request = { - response: respons.responseText + response: response.responseText }; PartKeepr.ExceptionWindow.showException(data.exception, request);