All Downloads are FREE. Search and download functionalities are using the official Maven repository.

resources.js.qpid.management.showMessage.js Maven / Gradle / Ivy

The newest version!
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

define(["dojo/dom",
        "dojo/dom-construct",
        "dojo/dom-class",
        "dojo/_base/window",
        "dijit/registry",
        "dojo/parser",
        "dojo/_base/lang",
        "dojo/_base/array",
        "dojo/_base/event",
        'dojo/json',
        "dojo/query",
        "dojo/_base/connect",
        "qpid/common/properties",
        "dojox/html/entities",
        "qpid/common/util",
        "qpid/common/HexDumpWidget",
        "dojo/text!showMessage.html",
        'dojo/_base/declare',
        'dstore/Memory',
        'dstore/Trackable',
        "dgrid/OnDemandGrid",
        "dgrid/extensions/DijitRegistry",
        "dijit/form/SimpleTextarea",
        "dojo/domReady!"],
    function (dom,
              construct,
              domClass,
              win,
              registry,
              parser,
              lang,
              array,
              event,
              json,
              query,
              connect,
              properties,
              entities,
              util,
              HexDumpWidget,
              template,
              declare,
              Memory,
              Trackable,
              OnDemandGrid,
              DijitRegistry)
    {

        function encode(val)
        {
            return typeof val === 'string' ? entities.encode(val) : val;
        }

        var populatedFields = [];
        var showMessage = {includeHeaders: true};

        showMessage.hide = function ()
        {
            registry.byId("showMessage")
                .hide();
        };

        showMessage.loadViewMessage = function (data)
        {
            var node = construct.create("div", null, win.body(), "last");
            node.innerHTML = data;
            var that = this;
            parser.parse(node)
                .then(function (instances)
                {
                    that.dialogNode = dom.byId("showMessage");
                    var closeButton = query(".closeViewMessage", that.dialogNode)[0];
                    registry.byNode(closeButton)
                        .on("click", function (evt)
                        {
                            event.stop(evt);
                            that.hide();
                        });
                });

        };

        showMessage.createPreviewWidget = function(contentData, widgetDiv)
        {
            if (typeof contentData !== 'object')
            {
                return new dijit.form.SimpleTextarea({
                    value: contentData,
                    rows: 4,
                    readOnly: true
                }, widgetDiv);
            }
            else
            {
                if (Array.isArray(contentData))
                {
                    var isByteArray = true;

                    for (var i = 0; i < contentData.length; i++)
                    {
                        var element = contentData[i];
                        if (!util.isInteger(element) || element < -128 || element > 127)
                        {
                            isByteArray = false;
                            break;
                        }
                    }

                    if (isByteArray)
                    {
                        return new HexDumpWidget({data: contentData}, widgetDiv);
                    }
                    else
                    {
                        var columns = {
                            value: {
                                label: 'Item'
                            }
                        };
                        var items = [];
                        for (var i = 0; i < contentData.length; i++)
                        {
                            items.push({
                                id: i,
                                value: json.stringify(contentData[i])
                            });
                        }
                        var store = new (declare([Memory, Trackable]))({
                            data: items
                        });
                        return new (declare([OnDemandGrid, DijitRegistry]))({
                            collection: store,
                            columns: columns
                        }, widgetDiv);
                    }

                }
                else
                {
                    var columns = {
                        id: {
                            label: 'Key'
                        },
                        value: {
                            label: 'Value'
                        }
                    };
                    var items = [];
                    for (var i in contentData)
                    {
                        items.push({
                            id: i,
                            value: json.stringify(contentData[i])
                        });
                    }
                    var store = new (declare([Memory, Trackable]))({
                        data: items
                    });
                    return new (declare([OnDemandGrid, DijitRegistry]))({
                        collection: store,
                        columns: columns
                    }, widgetDiv);
                }
            }
        }

        showMessage.populateShowMessage = function (management, modelObj, data, includesConfidential)
        {

            // clear fields set by previous invocation.
            if (populatedFields)
            {
                for (var i = 0; i < populatedFields.length; i++)
                {
                    populatedFields[i].innerHTML = "";
                }
                populatedFields = [];
            }

            for (var attrName in data)
            {
                if (data.hasOwnProperty(attrName))
                {
                    var fields = query(".message-" + attrName, this.dialogNode);
                    if (fields && fields.length != 0)
                    {
                        var field = fields[0];
                        populatedFields.push(field);
                        var val = data[attrName];
                        if (val != null)
                        {
                            if (domClass.contains(field, "map"))
                            {
                                var tableStr = "";
                                for (var name in val)
                                {
                                    if (val.hasOwnProperty(name))
                                    {

                                        tableStr += "";
                                        tableStr += "";
                                    }
                                }
                                tableStr += "
HeaderValue
" + encode(name) + "" + encode(val[name]) + "
"; field.innerHTML = tableStr; } else if (domClass.contains(field, "datetime")) { field.innerHTML = management.userPreferences.formatDateTime(val, { addOffset: true, appendTimeZone: true }); } else { field.innerHTML = encode(val); } } } } } var contentAndPreview = query('#contentAndPreview', this.dialogNode)[0]; var confidentialInformationWarning = query('#confidentialInformationWarning', this.dialogNode)[0]; confidentialInformationWarning.style.display = includesConfidential ? "none" : "block"; var confidentialCells = query('.confidential', this.dialogNode); for(var i = 0; i < confidentialCells.length; i++) { confidentialCells[i].style.display = includesConfidential ? "block" : "none"; } var confidentialPlaceholderCells = query('.confidentialPlaceholder', this.dialogNode); for(var i = 0; i < confidentialPlaceholderCells.length; i++) { confidentialPlaceholderCells[i].style.display = includesConfidential ? "none" : "block"; } if (includesConfidential) { var contentModelObj = { name: "getMessageContent", parent: modelObj, type: modelObj.type }; var parameters = {messageId: data.id}; var download = registry.byId('message-download', this.dialogNode); download.on("click", function () { management.download(contentModelObj, parameters); }); var limit = 1024; var previewParameters = lang.mixin({ limit: limit, returnJson: true }, parameters); management.load(contentModelObj, previewParameters, { handleAs: "json" }) .then(function (content) { if (showMessage.previewWidget) { showMessage.previewWidget.destroyRecursive(); } if (content == null || (Array.isArray(content) && content.length == 0)) { contentAndPreview.style.display = "none"; } else { contentAndPreview.style.display = "block"; var previewDetail = query('#preview-detail', contentAndPreview)[0]; previewDetail.innerHTML = (limit < data.size ? 'showing the first ' + limit + ' of ' + data.size + ' bytes' : 'showing all ' + data.size + ' bytes'); var previewContent = query("#message-content-preview", contentAndPreview)[0]; var widgetDiv = construct.create("div", null, previewContent, "last"); var contentWidget = showMessage.createPreviewWidget(content, widgetDiv); showMessage.previewWidget = contentWidget; contentWidget.startup(); } registry.byId("showMessage") .show(); }); } else { registry.byId("showMessage").show() } }; var loadMessage = function (management, modelObj, id, includeHeaders, errorHandler) { var obj = { name: "getMessageInfoById", parent: modelObj, type: modelObj.type }; management.load(obj, { messageId: id, includeHeaders: includeHeaders }) .then(function (data) { showMessage.populateShowMessage(management, modelObj, data, includeHeaders); }, errorHandler); }; showMessage.show = function (management, modelObj, message) { loadMessage(management, modelObj, message.id, this.includeHeaders, function (e) { if (showMessage.includeHeaders && e.response && e.response.status == 403) { showMessage.includeHeaders = false; loadMessage(management, modelObj, message.id, false); } else { management.errorHandler(e); } }); }; showMessage.loadViewMessage(template); return showMessage; });




© 2015 - 2025 Weber Informatics LLC | Privacy Policy