Mercurial > lada > lada-client
view app/view/window/ImportResponse.js @ 1256:f961f94495c8
Remove erroneous error handling.
This code seems to expect any LADA validation results coming along
with an HTTP status not indicating success, which should not happen.
Instead, Ext.JSON.decode() failed because of the non-JSON responseText
resulting from other errors.
author | Tom Gottfried <tom@intevation.de> |
---|---|
date | Fri, 18 Nov 2016 19:46:15 +0100 |
parents | 1ed5ec9326e6 |
children | ee21d0e1b998 |
line wrap: on
line source
/** * This Window is shown, when Proben could be imported from a LAF file */ Ext.define('Lada.view.window.ImportResponse', { extend: 'Ext.window.Window', alias: 'widget.importresponse', data: null, message: null, fileName: '', layout: 'fit', /** * @private * Initialize the view. */ initComponent: function() { var me = this; var html; var download; var i18n = Lada.getApplication().bundle; var data = Ext.JSON.decode(me.data, true); if (data) { html = me.parseShortResponse(data); } else { html = 'Der Import der Datei ' + this.fileName + ' war nicht erfolgreich.'; } this.bodyStyle = {background: '#fff'}; me.items = [{ xtype: 'panel', html: html, margin: 10, border: false }]; me.buttons = [{ text: i18n.getMsg('close'), scope: this, name: 'close', handler: this.close }, { text: i18n.getMsg('download'), name: 'download', disabled: true, handler: function() { var blob = new Blob([download],{type: 'text/html'}); saveAs(blob, 'report.html'); } }]; this.callParent(arguments); if (data) { download = me.parseResponse(data); } }, /** * Parse the response and create a summary of the result * @param data */ parseShortResponse: function(data) { var errors = data.data.errors; var warnings = data.data.warnings; var out = []; // There is a entry for each imported proben in the errors dict (might be // empty) var numErrors; var numWarnings; if (!Ext.isObject(errors)) { numErrors = 0; } else { numErrors = Object.keys(errors).length; } if (!Ext.isObject(warnings)) { numWarnings = 0; } else { numWarnings = Object.keys(warnings).length; } if (!data.success) { out.push('Der Import der Datei ' + this.fileName + ' war nicht erfolgreich. Der Importvorgang konnte ' + 'aufgrund eines Fehlers im Server nicht beendet werden.'); } else { if (numErrors > 0) { if (errors.parser) { out.push('Die Probe(n) konnten nicht erfolgreich ' + 'importiert werden.'); } else { out.push(numErrors + ' Probe(n) konnten nicht ' + 'erfolgreich importiert werden.'); } out.push('<br/>'); out.push('<br/>'); } if (numWarnings > 0) { out.push('Bei ' + numWarnings + ' Probe(n) traten Warnungen auf. '); out.push('<br/>'); out.push('<br/>'); } if (numErrors > 0 || numWarnings > 0) { out.push('Der ausführliche Bericht steht als Download bereit.'); out.push('<br/>'); } else { out.push('Die Proben wurden importiert.'); out.push('<br/>'); } } return out.join(''); }, /** * Parse the Response * @param data the payload of the response */ parseResponse: function(data) { var errors = data.data.errors; var warnings = data.data.warnings; var out = []; // There is a entry for each imported proben in the errors dict (might be // empty) var numErrors; var numWarnings; if (!Ext.isObject(errors)) { numErrors = 0; } else { numErrors = Object.keys(errors).length; } if (!Ext.isObject(warnings)) { numWarnings = 0; } else { numWarnings = Object.keys(warnings).length; } if (!data.success) { out.push('Der Import der Datei ' + this.fileName + ' war nicht erfolgreich. Der Importvorgang konnte ' + 'aufgrund eines Fehlers im Server nicht beendet werden.'); } else { out.push('<!DOCTYPE html>' + '<head><meta charset="utf-8"></head><body>'); if (numErrors > 0) { out.push('Folgende Fehler traten beim Import auf:'); out.push('<br/>'); out.push('<ol>'); var msgs; for (var key in errors) { msgs = errors[key]; if (key !== 'parser') { out.push('<li>Probe: ' + key); } out.push('<ol>'); validation = [] validation.push('Validierungsfehler: '); for (var i = msgs.length - 1; i >= 0; i--) { if (msgs[i].key === 'validation') { validation.push('<ol>'); validation.push(Lada.getApplication().bundle.getMsg(msgs[i].value) + ' (' + Lada.getApplication().bundle.getMsg(msgs[i].code.toString()) + ')'); validation.push('</ol>'); } else { out.push('<li>' + msgs[i].key + ' (' + Lada.getApplication().bundle.getMsg(msgs[i].code.toString())+'): '+msgs[i].value+'</li>') } } if (validation.length > 1) { out.push('<li>') out.push(validation.join('')); out.push('</li>') } out.push('</ol>'); if (key !== 'parser') { out.push('</li>'); } } out.push('</ol>'); out.push('<br/>'); } if (numWarnings > 0) { out.push('<br/>'); out.push('Bei folgenden Proben traten Warnungen auf:'); out.push('<br/>'); out.push('<ol>'); for (key in warnings) { out.push('<li>' + key); msgs = warnings[key]; out.push('<ol>'); validation = [] validation.push('Validierungswarnungen: '); for (var i = msgs.length - 1; i >= 0; i--) { if (msgs[i].key === 'validation') { validation.push('<ol>'); validation.push(Lada.getApplication().bundle.getMsg(msgs[i].value) + ' (' + Lada.getApplication().bundle.getMsg(msgs[i].code.toString()) + ')'); validation.push('</ol>'); } else { out.push('<li>' + msgs[i].key + ' (' + Lada.getApplication().bundle.getMsg(msgs[i].code.toString())+'): '+msgs[i].value+'</li>') } } if (validation.length > 1) { out.push('<li>') out.push(validation.join('')); out.push('</li>') } out.push('</ol>'); out.push('</li>'); } out.push('</ol>'); } out.push('<br/>'); out.push('</body></html>') if (numWarnings > 0 || numErrors > 0) { this.down('button[name=download]').enable(); } } return out.join(''); } });