"use strict"; /** * Licensed Materials - Property of IBM * IBM Cognos Products: Cognos Analytics * Copyright IBM Corp. 2015, 2019 * US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. */ define(['underscore'], function (_) { var xmlKnownEntities = '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + // HTMLsymbol.ent '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + // HTMLspecial.ent '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n'; return { _createDTD: function _createDTD() { return "\r\n"; }, processResponse: function processResponse(report, response) { var parameters = []; var $status = $(response).selectNode('Envelope').selectNode('Body').find('> *').selectNode('result').selectNode('details').selectNode('item').byAttributeValue('xsi:type', 'bus:asynchDetailReportStatus').selectNode('status'); if ($status.text() === '') { $status = $(response).selectNode('Envelope').selectNode('Body').find('> *').selectNode('result').selectNode('status'); } if ($status.text() !== 'prompting') { var $responseNode = $(response).selectNode('Envelope').selectNode('Body').find('> *'); parameters = this._extractParametersFromResponse(report, $responseNode); } else { parameters.push({ name: 'credential:', 'report_id': report.id, 'type': 'credential' }); } var $outputPage = $(response).selectNode('Envelope').selectNode('Body').find('> *').find('> *').selectNode('details').selectNode('item').byAttributeValue('xsi:type', 'bus:asynchDetailReportOutput').selectNode('outputPages').selectNode('item'); var promptControlOutput; var promptControls = []; var xmlText = $outputPage.text(); if (xmlText !== '') { xmlText = this._createDTD() + xmlText; promptControlOutput = $.parseXML(xmlText); var promptControlNodes = $(promptControlOutput).find('*[parameter]'); _.each(promptControlNodes, function (promptControlNode) { promptControls.push($(promptControlNode).attr('parameter')); }); } else { promptControlOutput = null; } return { parameters: parameters, promptControls: promptControls, status: $status.text(), type: 'xml', report: report.defaultName, report_id: report.id, $conversation: $(response).selectNode('Envelope').selectNode('Body').find('> *').selectNode('result').selectNode('primaryRequest'), $tracking: $(response).selectNode('Envelope').selectNode('Header').selectNode('biBusHeader').selectNode('tracking').selectNode('conversationContext'), xml: promptControlOutput }; }, _extractParametersFromResponse: function _extractParametersFromResponse(report, $responseNode) { var parameters = []; var $parameterNodes = $responseNode.selectNode('result').selectNode('details').selectNode('item').byAttributeValue('xsi:type', 'bus:asynchDetailParameters').selectNode('parameters').selectNode('item').byAttributeValue('xsi:type', 'bus:parameter'); for (var i = 0; i < $parameterNodes.length; ++i) { var parameter = $parameterNodes[i]; var $parameterType = $(parameter).selectNode('type'); //interval prompts not currently supported if ($parameterType.text() === 'xsdDuration') { continue; } var multiSelect = false; var type = 'simpleParmValue'; var capabilities = $(parameter).selectNode('capabilities'); var items = $(capabilities).selectNode('item'); _.each(items, function (item) { //NOSONAR var capability = $(item).text(); switch (capability) { case 'multivalued': { multiSelect = true; break; } case 'boundRange': { type = 'boundRange'; break; } default: { break; } } }); var name = $(parameter).selectNode('name').text(); var newParameter = { 'name': name, 'description': '', 'multilingualDisplay': {}, 'source': 'report', 'report': report.defaultName, 'report_id': report.id, 'report_path': report.searchPath, 'type': type, 'multiSelect': multiSelect, 'disabled': false, 'accessibleAtSystemOrTenantLevel': false }; var existingParameter = _.find(parameters, function (paramNameValue) { return paramNameValue.name === newParameter.name; }); //NOSONAR if (!existingParameter) { parameters.push(newParameter); } } return parameters; }, xml_encode: function xml_encode(input) { var output = "" + input; if (output === '0' || input !== null && input !== false) { //& output = output.replace(/&/g, "&"); //< output = output.replace(//g, ">"); //" output = output.replace(/"/g, """); //' output = output.replace(/'/g, "'"); } return output; } }; });