// Licensed Materials - Property of IBM // // IBM Cognos Products: pps // // (C) Copyright IBM Corp. 2009, 2017 // // US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. dojo.provide("bux.powerplay"); dojo.declare("bux.powerplay", null, { // ******************************************** // ************ iWidget Support ************* // ******************************************** fireEvent: function( eventName, arg, payload) { this.iContext.iEvents.fireEvent( eventName, arg, payload ); }, getDisplayName: function() { return this.getAttributeValue("widgetTitle"); }, getAttributeValue: function(name) { return this.iContext.getiWidgetAttributes().getItemValue(name); }, setAttributeValue: function(name, value) { this.iContext.getiWidgetAttributes().setItemValue(name, value); }, getPowerPlayDiv: function() { return dojo.byId("_" + this.iContext.widgetId + "_pps"); }, getPowerPlayIFrame: function() { return dojo.byId("_" + this.iContext.widgetId + "_pps_iframe"); }, onLoad: function() { var iframe = this.getPowerPlayIFrame(); var doc = iframe.contentWindow.document; var form = doc.createElement("FORM"); form.method = "POST"; form.target = iframe.name; form.action = this.getAttributeValue("gateway"); this.appendToForm(doc, form, "b_action", "xts.run"); this.appendToForm(doc, form, "m", "portal/launch.xts"); this.appendToForm(doc, form, "ui.gateway", this.getAttributeValue("gateway")); this.appendToForm(doc, form, "ui.tool", "PowerplayStudio"); this.appendToForm(doc, form, "ui.object", this.getReportSearchPath()); this.appendToForm(doc, form, "ui.crnp", "false"); this.appendToForm(doc, form, "ui.crnfrm", "HTML"); this.appendToForm(doc, form, "ui.action", "edit"); this.appendToForm(doc, form, "ui.crngnd", "false"); this.appendToForm(doc, form, "launch.openJSStudioInFrame", "true"); this.appendToForm(doc, form, "ddo", "true"); if (this.isSavedReport()) { this.appendToForm(doc, form, "NOAUTORESIZE", "true"); // Don't autoresize after opening a saved dashboard } if (!doc.body) // IE6 - is null by default. doc.appendChild(doc.createElement("body")); //Submit the form doc.body.appendChild(form); form.submit(); }, appendToForm: function( doc, form, fname, fvalue ) { var input = doc.createElement("INPUT"); input.setAttribute("type", "hidden"); input.setAttribute("name", fname); input.setAttribute("value", fvalue); form.appendChild(input); }, isSavedReport: function() { var saved = this.getAttributeValue("savedReport"); var orig = this.getAttributeValue("originalReport"); return (saved != null && typeof saved != "undefined" && saved.length > 0 && orig != saved); }, getReportSearchPath: function() { if (this.isSavedReport()) { return this.getAttributeValue("savedReport"); } else { return this.getAttributeValue("originalReport"); } }, // ******************************************** // ************ Toolbar Support ************* // ******************************************** onToolbarAction: function(evt) { switch (evt.payload.name) { case "crosstab": this.doToolbarCommand("doit('OY:0');"); break; case "icrosstab": this.doToolbarCommand("doit('OY:9');"); break; case "pie": if (evt.payload.payload == 'enabled') this.doToolbarCommand("doit('OY:1');"); break; case "simple_bar": if (evt.payload.payload == 'enabled') this.doToolbarCommand("doit('OY:2');"); break; case "clustered_bar": if (evt.payload.payload == 'enabled') this.doToolbarCommand("doit('OY:3');"); break; case "stacked_bar": if (evt.payload.payload == 'enabled') this.doToolbarCommand("doit('OY:5');"); break; case "3dbar": if (evt.payload.payload == 'enabled') this.doToolbarCommand("doit('OY:6');"); break; case "multi_line": if (evt.payload.payload == 'enabled') this.doToolbarCommand("doit('OY:4');"); break; case "simple_line": if (evt.payload.payload == 'enabled') this.doToolbarCommand("doit('OY:10');"); break; case "scatter": if (evt.payload.payload == 'enabled') this.doToolbarCommand("doit('OY:11');"); break; case "correlation": if (evt.payload.payload == 'enabled') this.doToolbarCommand("doit('OY:12');"); break; case "chart_options": if (evt.payload.payload == 'enabled') this.doToolbarCommand("doit('MY');"); break; case "display_options": this.doToolbarCommand("doit('MT');"); break; case "edit_title": this.doToolbarCommand("doit('MI');"); break; case "split": if (evt.payload.payload == 'enabled') this.doToolbarCommand("doit('OSD');"); break; case "get_data_later": this.doToolbarCommand("doit('OGD');"); break; case "get_data": this.doToolbarCommand("doit('OGD');"); break; case "reset": this.doToolbarCommand("doReset();"); break; case "zs": this.doToolbarCommand("doit('UX:1');"); break; case "zs_rows": this.doToolbarCommand("doit('UX:2');"); break; case "zs_cols": this.doToolbarCommand("doit('UX:3');"); break; case "zs_options": this.doToolbarCommand("doit('MD');"); break; case "pdf": this.doToolbarCommand("ra(12);"); break; case "csv": this.doToolbarCommand("ra(1);"); break; case "xls": this.doToolbarCommand("ra(11);"); break; case "xlsx": this.doToolbarCommand("ra(13);"); break; case "swap": this.doToolbarCommand("doit('EX');"); break; case "hide_show": this.doToolbarCommand("doit('MQ');"); break; case "calculation": this.doToolbarCommand("doit('MC');"); break; case "rank": this.doToolbarCommand("doit('MO');"); break; case "eighty_twenty": if (evt.payload.payload == 'enabled') this.doToolbarCommand("doit('OETS:1');"); break; case "auto_exception": this.doToolbarCommand("doit('OEX');"); break; case "custom_exception": this.doToolbarCommand("doit('MX');"); break; case "custom_subset": if (evt.payload.payload == 'enabled') this.doToolbarCommand("doit('MZI');"); break; case "drill": if (evt.payload.payload == 'enabled') this.doToolbarCommand("ra(4);"); break; case "save": this.doToolbarCommand("doit('RU:1');"); break; case "save_as": this.doToolbarCommand("doParent('RU:0');"); break; case "custom1": this.doToolbarCommand("custom1();"); break; case "custom2": this.doToolbarCommand("custom2();"); break; case "custom3": this.doToolbarCommand("custom3();"); break; case "custom4": this.doToolbarCommand("custom4();"); break; case "custom5": this.doToolbarCommand("custom5();"); break; case "custom6": this.doToolbarCommand("custom6();"); break; case "custom7": this.doToolbarCommand("custom7();"); break; case "custom8": this.doToolbarCommand("custom8();"); break; case "Refresh": this.doToolbarCommand("doit('');"); break; case "DimTree": this.toggleDimTree(); break; default: break; } }, doToolbarCommand : function ( command ) { var action = "this.getPowerPlayIFrame().contentWindow.getToolbarFrame()."; action += command; eval(action); }, toggleDimTree : function () { this.getPowerPlayIFrame().contentWindow.getXtabFrame().toggleTree(); }, updateToolbar: function(toolbarPayload) { this.getPowerPlayIFrame().contentWindow.setGlobal("BUXToolbar", JSON.stringify(toolbarPayload)); this.fireEvent('com.ibm.bux.widget.toolbar.init', null, toolbarPayload); }, getToolbarPayload: function () { var ppiframe = this.getPowerPlayIFrame().contentWindow; // Enhanced UI if ( ppiframe && ppiframe.getGlobal ) { var toolbarPayload = eval(ppiframe.getGlobal('BUXToolbar')); // Detect whether or not the 'dimension tree' is visible and set the 'checked' icon if it is if (toolbarPayload != null) { for ( var item in toolbarPayload ) { var button = toolbarPayload[item]; if (button._root) { var rootItems = button._root; for ( var rootItem in rootItems ) { var rootButton = rootItems[rootItem]; if (rootButton.name == 'DimTree') { if (ppiframe.getGlobal('treeVisible')) rootButton.iconClass = 'bux_check'; else rootButton.iconClass = ''; } } } } } return toolbarPayload; } // Generic UI if (ppiframe && ppiframe.BUXToolbar) { return eval(JSON.stringify(ppiframe.BUXToolbar)); } }, initOnDemandToolbar : function () { this.fireEvent('com.ibm.bux.widget.toolbar.init', null, this.getToolbarPayload()); }, enableDrill: function () { var toolbarPayload = this.getToolbarPayload(); if (toolbarPayload != null) { for ( var item in toolbarPayload ) { var button = toolbarPayload[item]; if (button.name == 'drill' && button.iconClass != 'drill_enabled') { button.iconClass = 'drill_enabled'; button.action.payload = 'enabled'; this.updateToolbar(toolbarPayload); break; } } } }, disableDrill: function () { var toolbarPayload = this.getToolbarPayload(); if (toolbarPayload != null) { for ( var item in toolbarPayload ) { var button = toolbarPayload[item]; if (button.name == 'drill' && button.iconClass != 'drill_disabled') { button.iconClass = 'drill_disabled'; button.action.payload = 'disabled'; this.updateToolbar(toolbarPayload); break; } } } }, // ******************************************** // ************ Save Event Support ********** // ******************************************** onWidgetSave: function(evt) { var dshbrdID = '$$dbid$$' + evt.payload.cm$storeID; var buxloaded = false; var ppiframe = this.getPowerPlayIFrame().contentWindow; // Enhanced UI if ( ppiframe && ppiframe.getGlobal ) { var toolbarPayload = eval(ppiframe.getGlobal('BUXToolbar')); if (toolbarPayload != null) { buxloaded = true; } } else if (ppiframe && ppiframe.BUXToolbar) { // Generic UI buxloaded = true; } if (buxloaded) { if (this.isSaveAsEvent(dshbrdID) && !evt.payload.isCopy) { // Save the report to a new dashboard. this.setAttributeValue("dashboardID", dshbrdID ); ppiframe.getXtabFrame().saveAsToDashboard(evt); } else { // update the saved report where it is. ppiframe.getXtabFrame().saveToDashboard(evt); } } this.fireEvent( "com.ibm.bux.widget.save.done", null, {'status':buxloaded}); }, /** * Determines if the widget has or has not been saved to the current dashboard. * * @param dshbrdID - StoreID of the dashboard currently being saved * @return true if this widget has NOT been saved to the dashboard "dshbrdID". Otherwise: false */ isSaveAsEvent: function ( dshbrdID ) { var orig = this.getAttributeValue("originalReport"); var saved = this.getAttributeValue("savedReport"); var dashboard = this.getAttributeValue("dashboardID"); if ( dashboard != dshbrdID || saved == null || typeof saved == "undefined" || saved.length == 0 || orig == saved) { return true; } else { return false; } }, // ******************************************** // ************ Refresh Event Support ******* // ******************************************** onWidgetRefresh: function ( evt ){ this.fireEvent( "com.ibm.bux.widget.refresh.done", null, {} ); this.doToolbarCommand("doit('');"); }, // ******************************************** // ************ Resize Event Support ******** // ******************************************** onWidgetResize: function(evt) { var iframe = this.getPowerPlayIFrame(); var width = evt.payload.resize.w; var height = evt.payload.resize.h; iframe.style.width = eval(width - 5) + "px"; iframe.style.height = eval(height - 5) + "px"; } });