view app/view/window/ImportResponse.js @ 1110:4a55e665f2d1

Added custom row expander for 'grid in grid' expandable rows.
author Raimund Renkert <raimund.renkert@intevation.de>
date Tue, 17 May 2016 17:10:39 +0200
parents def27cdd0dfa
children 746915a63a11
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;
        if (me.data && me.message) {
            html = me.parseResponse(me.message, me.data);
        }
        this.bodyStyle = {background: '#fff'};
        me.items = [{
            xtype: 'panel',
            html: html,
            margin: 10,
            border: false
        }];

        this.callParent(arguments);
    },

    /**
     * Parse the Response
     * @param msg the Lada-Erro-Code
     * @param data the payload of the response
     */
    parseResponse: function(msg, data) {
        console.log(Ext.JSON.decode(data));
        data = Ext.JSON.decode(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.isEmpty(Object.keys(errors))) {
            numErrors = 0;
        }
        else {
            numErrors = Object.keys(errors).length;
        }
        if (Ext.isEmpty(Object.keys(warnings))) {
            numWarnings = 0;
        }
        else {
            numWarnings = Object.keys(warnings).length;
        }
        if (msg !== '200') {
                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) {
                out.push('Folgende Proben konnten nicht erfolgreich ' +
                        'importiert werden:');
                out.push('<br/>');
                out.push('<ol>');
                var msgs;
                for (var key in errors) {
                    out.push('<li>Probe: ' + key);
                    msgs = errors[key];
                    out.push('<ol>');
                    for (var i = msgs.length - 1; i >= 0; i--) {
                        if (msgs[i].key === 'validation') {
                            out.push('Validierungsfehler: ');
                            out.push('<ol>');
                            for (var vKey in msgs[i].value) {
                                out.push(Lada.getApplication().bundle.getMsg(vKey) + ': ');
                                for (var j = 0; j < msgs[i].value[vKey].length; j++) {
                                    console.log(msgs[i].value[vKey][j]);
                                    out.push(Lada.getApplication().bundle.getMsg(msgs[i].value[vKey][j].toString()));
                                }
                            }
                            out.push('</ol>');
                        }
                        else {
                            out.push(msgs[i].key +
                                ' (' + Lada.getApplication().bundle.getMsg(
                                    msgs[i].code.toString()) +
                                '): ' + msgs[i].value);
                        }
                    }
                    out.push('</ol>');
                    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>');
                    for (var i = msgs.length - 1; i >= 0; i--) {
                        if (msgs[i].key === 'validation') {
                            out.push('Validierungswarnungen: ');
                            out.push('<ol>');
                            for (var vKey in msgs[i].value) {
                                out.push(Lada.getApplication().bundle.getMsg(vKey) + ': ');
                                for (var j = 0; j < msgs[i].value[vKey].length; j++) {
                                    console.log(msgs[i].value[vKey][j]);
                                    out.push(Lada.getApplication().bundle.getMsg(msgs[i].value[vKey][j].toString()));
                                }
                            }
                            out.push('</ol>');
                        }
                        else {
                            out.push('<li>' + msgs[i].key + ' (' + Lada.getApplication().bundle.getMsg(msgs[i].code.toString())+'): '+msgs[i].value+'</li>')
                        }
                    }
                    out.push('</ol>');
                    out.push('</li>');
                }
                out.push('</ol>');
            }
            out.push('<br/>');
        }
        console.log(out.join(''));
        return out.join('');
    }
});

http://lada.wald.intevation.org