abacab_CognosViewer.js 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266
  1. // Licensed Materials - Property of IBM
  2. //
  3. // IBM Cognos Products: pps
  4. //
  5. // (C) Copyright IBM Corp. 2005, 2017
  6. //
  7. // US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
  8. //
  9. // This contains the custom javascript functions supplied by the customer
  10. // to be used for PowerPlay Studio Cognos Viewer Toolbar.
  11. var PP8CV = new function PP8CognosViewer() {
  12. var DSCParamterList = new Array("DSC.CONNECTIONNAME",
  13. "DSC.DATASOURCECONNECTIONSEARCHPATH",
  14. "DSC.DATASOURCECONNECTIONSTOREID",
  15. "DSC.DATASOURCENAME",
  16. "DSC.LOCALCUBEPATH",
  17. "DSC.MODELSEARCHPATH",
  18. "DSC.MODELSTOREID",
  19. "DSC.MODELNAMESPACEID",
  20. "DSC.NAMESPACE",
  21. "DSC.PACKAGESEARCHPATH",
  22. "DSC.PACKAGESTOREID",
  23. "DSC.READCACHESIZE",
  24. "DSC.SIGNONNAME");
  25. var ParametersForPWR = new Array("CRNOBJB64",
  26. "CRNOBJWP",
  27. "CRNOBJTYPE",
  28. "CRNRN",
  29. "DC");
  30. var ParametersForPWQ = new Array("CRNOBJB64",
  31. "CRNOBJWP",
  32. "CRNOBJTYPE",
  33. "CX");
  34. var ParamatersNeccessaryForCurrentState = new Array(
  35. "LA",
  36. "LO",
  37. "FC",
  38. "DM",
  39. "SW",
  40. "Z",
  41. "PP_SMODE",
  42. "LS",
  43. "CU",
  44. "FO",
  45. "DP",
  46. "w2",
  47. "ENCODING",
  48. "ui.crnp",
  49. "ui.crnfrm",
  50. "ui.backURL",
  51. "ppes_routingsg",
  52. "CMAS",
  53. "CMRS");
  54. this.promptsButton = function(viewer) {
  55. var paramNames = new Array();
  56. paramNames = paramNames.concat(ParametersForPWR);
  57. paramNames = paramNames.concat(ParamatersNeccessaryForCurrentState);
  58. paramNames = paramNames.concat(DSCParamterList);
  59. paramNames = paramNames.concat(getDimensionListParameters(viewer));
  60. var params = getParametersFromViewer(paramNames,viewer);
  61. params["b_action"] = "powerPlayService";
  62. params["ui.backURL"] = createURLForCurrentState(viewer);
  63. params["ui.action"] = "run";
  64. params["ui.crnp"] = "true";
  65. params["ui.crnfrm"] = "PDF";
  66. params["crnobj"] = viewer.envParams["ui.object"];
  67. params["PWVB"] = createURLForCurrentState(viewer);
  68. createAndSubmitForm(params);
  69. }
  70. this.drillButton = function(viewer) {
  71. var paramNames = new Array();
  72. paramNames = paramNames.concat(ParametersForPWQ);
  73. paramNames = paramNames.concat(DSCParamterList);
  74. paramNames[paramNames.length] = "PROTECT";
  75. var params = getParametersFromViewer(paramNames,viewer);
  76. params["b_action"] = "powerPlayService";
  77. params["RA"] = "4"; //Drill through.
  78. createAndSubmitForm(params, "_blank");
  79. }
  80. this.saveButton = function(viewer) {
  81. var paramNames = new Array();
  82. paramNames = paramNames.concat(ParametersForPWR);
  83. paramNames = paramNames.concat(ParamatersNeccessaryForCurrentState);
  84. paramNames = paramNames.concat(DSCParamterList);
  85. paramNames = paramNames.concat(getDimensionListParameters(viewer));
  86. var params = getParametersFromViewer(paramNames,viewer);
  87. params["b_action"] = "powerPlayService";
  88. params["ZZ"] = "S";
  89. params["CO"] = "RU:1";
  90. createAndSubmitForm(params);
  91. }
  92. this.saveAsButton = function(viewer) {
  93. var paramNames = new Array();
  94. paramNames = paramNames.concat(ParametersForPWR);
  95. paramNames = paramNames.concat(ParamatersNeccessaryForCurrentState);
  96. paramNames = paramNames.concat(DSCParamterList);
  97. paramNames = paramNames.concat(getDimensionListParameters(viewer));
  98. paramNames[paramNames.length] = "PROMPT_PAGE_INVOKED";
  99. var params = getParametersFromViewer(paramNames,viewer);
  100. params["b_action"] = "powerPlayService";
  101. params["PP_BACK"] = viewer.envParams["ui.backURL"];
  102. params["ZZ"] = "J";
  103. params["CO"] = "RU:0";
  104. createAndSubmitForm(params);
  105. }
  106. this.ppStudioButton = function(viewer) {
  107. var paramNames = new Array();
  108. paramNames = paramNames.concat(ParametersForPWQ);
  109. paramNames = paramNames.concat(ParamatersNeccessaryForCurrentState);
  110. paramNames = paramNames.concat(DSCParamterList);
  111. paramNames = paramNames.concat(getDimensionListParameters(viewer));
  112. paramNames[paramNames.length] = "PROTECT";
  113. var params = getParametersFromViewer(paramNames,viewer);
  114. params["b_action"] = "powerPlayService";
  115. params["ui.backURL"] = createURLForCurrentState(viewer);
  116. //If we don't have an FC and DM, we need to create some for PPStudio
  117. //Add the dimension parameters.
  118. if (!params["FC"] || !params["DM"]) {
  119. var sFC = "";
  120. for (param in viewer.envParams) {
  121. if (param.match(/^D\d+$/)) { //Match on D0 --> D<inf#>
  122. sFC += param.substr(1); // Dim#
  123. sFC += "\t";
  124. sFC += viewer.envParams[param]; // value
  125. sFC += "\t";
  126. }
  127. }
  128. params["FC"] = sFC;
  129. }
  130. createAndSubmitForm(params);
  131. }
  132. function getDimensionListParameters(viewer) {
  133. var paramNames = new Array();
  134. paramNames[paramNames.length] = "ND";
  135. //Add the dimension parameters.
  136. var dimensionParmName = "D0";
  137. var dimensionCtr = 0;
  138. while (viewer.envParams[dimensionParmName]) {
  139. paramNames[paramNames.length] = dimensionParmName;
  140. paramNames[paramNames.length] = (dimensionParmName + "L");
  141. paramNames[paramNames.length] = (dimensionParmName + "I");
  142. paramNames[paramNames.length] = (dimensionParmName + "_CL");
  143. dimensionCtr++;
  144. dimensionParmName = "D" + dimensionCtr;
  145. }
  146. return paramNames;
  147. }
  148. function getParametersFromViewer(paramNames,viewer) {
  149. var params = new Array();
  150. for (var i = 0; i < paramNames.length; i++) {
  151. if (viewer.envParams[paramNames[i]])
  152. params[paramNames[i]] = viewer.envParams[paramNames[i]];
  153. }
  154. return params;
  155. }
  156. function createURLForCurrentState(viewer) {
  157. var paramNames = new Array();
  158. paramNames = paramNames.concat(ParametersForPWR);
  159. paramNames = paramNames.concat(ParamatersNeccessaryForCurrentState);
  160. paramNames = paramNames.concat(DSCParamterList);
  161. paramNames = paramNames.concat(getDimensionListParameters(viewer));
  162. paramNames = paramNames.concat(new Array("ui.object","UI.OBJECT"));
  163. var params = getParametersFromViewer(paramNames,viewer);
  164. //It's possible that the viewer was invoked from a prompt page
  165. //In this case, the PP_BACK is the real backURL.
  166. if (viewer.envParams["PP_BACK"]) {
  167. params["ui.backURL"] = viewer.envParams["PP_BACK"];
  168. }
  169. params["b_action"] = "powerPlayService";
  170. params["ui.action"] = "run";
  171. return createURL(params, viewer);
  172. }
  173. function createURL(params, viewer) {
  174. //Get the Gateway URL currently in the browser
  175. var URL = location.pathname;
  176. if (URL.indexOf("?") != -1)
  177. URL = URL.substr(0,URL.indexOf("?"));
  178. URL += "?";
  179. var first = true;
  180. for (var i in params) {
  181. if (!first)
  182. URL += "&";
  183. first = false;
  184. URL += i;
  185. URL += "=";
  186. URL += encodeURIComponent(params[i]);
  187. }
  188. return URL;
  189. }
  190. function createAndSubmitForm(params, target) {
  191. var form = document.createElement("FORM");
  192. form.action = getFormWarpRequest().action;
  193. form.method = "post";
  194. if (target)
  195. form.target = target;
  196. for (var i in params) {
  197. var input = document.createElement("INPUT");
  198. input.type = "hidden";
  199. input.name = i;
  200. input.value = params[i];
  201. form.appendChild(input);
  202. }
  203. document.body.appendChild(form);
  204. form.submit();
  205. }
  206. }