123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426 |
- // 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 - <body> 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";
- }
-
- });
|