CSuppress.js 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532
  1. /****************************************************************
  2. ** Licensed Materials - Property of IBM
  3. **
  4. ** BI and PM: qs
  5. **
  6. ** (C) Copyright IBM Corp. 2001, 2015
  7. **
  8. ** US Government Users Restricted Rights - Use, duplication or
  9. ** disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
  10. *****************************************************************/
  11. // Copyright (C) 2008 Cognos ULC, an IBM Company. All Rights Reserved.
  12. // Cognos and the Cognos logo are trademarks of Cognos ULC (formerly Cognos Incorporated) in the United States and/or other countries. IBM and the IBM logo are trademarks of International Business Machines Corporation in the United States, or other countries, or both. Other company, product, or service names may be trademarks or service marks of others.
  13. function CSuppress()
  14. {
  15. this.m_bFeatureRequiresQualityOfService = true;
  16. this.m_aParams = new Array();
  17. this.m_aParams["m"] = "/" + qs_dir + "/suppress.xts";
  18. this.moMQManager = goApplicationManager.getMiniQueryManager();
  19. if (typeof goUserCapabilities !== "object")
  20. {
  21. this.setNullSuppressionAllowed("false");
  22. return;
  23. }
  24. this.setNullSuppressionAllowed(goUserCapabilities.get("isNullSuppressionAllowed"));
  25. this.setAccessToNullSuppressionOptionsAllowed(goUserCapabilities.get("isAccessToNullSuppressionOptionsAllowed"));
  26. this.setMultiEdgeNullSuppressionAllowed(goUserCapabilities.get("isMultiEdgeNullSuppressionAllowed"));
  27. };
  28. CSuppress.prototype = new AFeatureObject();
  29. CSuppress.prototype.setup = function (aFeatureParams)
  30. {
  31. if (! this.isNullSuppressionAllowed())
  32. {
  33. return;
  34. }
  35. this.m_bRequiresDialog = true;
  36. this.m_iErrorState = FEATURE_OBJECT_NO_ERROR;
  37. var sId = null;
  38. if (typeof aFeatureParams != "undefined" && aFeatureParams instanceof Array && aFeatureParams.length > 0)
  39. {
  40. sId = aFeatureParams[0];
  41. }
  42. this.moMQManager = goApplicationManager.getMiniQueryManager();
  43. this.mbIsCrosstab = this.moMQManager.hasPivottedColumns();
  44. this.m_aParams["xxIsAccessToNullSuppressionOptionsAllowed"] = this.isAccessToNullSuppressionOptionsAllowed() ? 'true': 'false';
  45. this.m_aParams["xxIsMultiEdgeNullSuppressionAllowed"] = this.isMultiEdgeNullSuppressionAllowed() ? 'true': 'false';
  46. if (aFeatureParams instanceof Array && aFeatureParams.length > 0)
  47. {
  48. if (aFeatureParams[0].indexOf("CONTEXTDELETE") >= 0)
  49. {
  50. this.m_bRequiresDialog = false;
  51. this.m_aParams["xxSuppressionType"] = "SUPPRESS_OFF";
  52. return;
  53. }
  54. if (aFeatureParams[0].indexOf("SWAP_VALUE") >= 0)
  55. {
  56. this.m_bRequiresDialog = false;
  57. this.swapValue(aFeatureParams[1]);
  58. this.m_aParams["xxSuppressionType"] = this.getType();
  59. return;
  60. }
  61. if (aFeatureParams[0].indexOf("SELECT_TYPE") >= 0)
  62. {
  63. this.m_bRequiresDialog = false;
  64. this.m_aParams["xxSuppressionType"] = aFeatureParams[1];
  65. return;
  66. }
  67. }
  68. this.showDialog();
  69. };
  70. CSuppress.prototype.showDialog = function ()
  71. {
  72. cfgSet("LAST_DIALOG", "suppress");
  73. this.m_aParams["xxCurrentView"] = "DIALOG_LIST";
  74. if (this.mbIsCrosstab)
  75. {
  76. this.m_aParams["xxCurrentView"] = "DIALOG_CROSSTAB";
  77. }
  78. this.m_aParams["xxSuppressionType"] = this.getType();
  79. var aSuppressValues = this.getValues();
  80. this.m_aParams["xxSuppressionValuesZero"] = aSuppressValues[0];
  81. this.m_aParams["xxSuppressionValuesDivideByZero"] = aSuppressValues[1];
  82. this.m_aParams["xxSuppressionValuesMissing"] = aSuppressValues[2];
  83. this.m_aParams["xxSuppressionValuesOverflow"] = aSuppressValues[3];
  84. };
  85. CSuppress.prototype.proceedWithoutDialog = function ()
  86. {
  87. return this.execute(this.m_aParams);
  88. };
  89. CSuppress.prototype.getType = function ()
  90. {
  91. var sSuppress;
  92. if (this.isNullSuppressionAllowed())
  93. {
  94. sSuppress = this.moMQManager.getCRQReportNode().getAttribute("suppress");
  95. }
  96. var sSuppressType = "";
  97. if (sSuppress && sSuppress.length)
  98. {
  99. switch (sSuppress)
  100. {
  101. case "rows":
  102. sSuppressType = "SUPPRESS_ROWS";
  103. break;
  104. case "columns":
  105. sSuppressType = "SUPPRESS_COLUMNS";
  106. break;
  107. case "rowsAndColumns":
  108. sSuppressType = "SUPPRESS_ROWS_AND_COLUMNS";
  109. break;
  110. default:
  111. sSuppressType = "SUPPRESS_OFF";
  112. break;
  113. }
  114. if (! this.moMQManager.hasPivottedColumns() && sSuppressType !== "SUPPRESS_OFF")
  115. {
  116. sSuppressType = "SUPPRESS_ROWS";
  117. }
  118. }
  119. else
  120. {
  121. sSuppressType = "SUPPRESS_OFF";
  122. }
  123. return sSuppressType;
  124. };
  125. CSuppress.prototype.execute = function (aParameters)
  126. {
  127. if (! this.isNullSuppressionAllowed())
  128. {
  129. return;
  130. }
  131. try
  132. {
  133. var sSuppressionCommand = "";
  134. var aCommandArray = new Array();
  135. if (aParameters && aParameters["xxSuppressionType"] && aParameters["xxSuppressionType"].length)
  136. {
  137. sSuppressionCommand = this.getCommand(aParameters["xxSuppressionType"]);
  138. aCommandArray = this.getValues();
  139. }
  140. else if (aParameters && aParameters["xxSwapSuppressionValue"] && aParameters["xxSwapSuppressionValue"].length)
  141. {
  142. sSuppressionCommand = this.getCommand(this.getType());
  143. this.swapValue(aParameters["xxSwapSuppressionValue"]);
  144. aCommandArray = this.getValues();
  145. }
  146. else
  147. {
  148. sSuppressionCommand = this.getTypeCommandFromDialog(aParameters);
  149. aCommandArray = this.getValuesFromDialog(aParameters);
  150. }
  151. if (sSuppressionCommand != "N" && this._commandArrayIsEmpty(aCommandArray))
  152. {
  153. alert (goApplicationManager.getApplicationFrame().cfgGet("suppressionUncheckedError"));
  154. return false;
  155. }
  156. var sCommand = createCommand("R", sSuppressionCommand, aCommandArray);
  157. if (sCommand.length > 0)
  158. {
  159. sendCmd(sCommand, "", true);
  160. }
  161. goApplicationManager.getWindowManager().hideDialogFrame();
  162. }
  163. catch (e)
  164. {
  165. }
  166. };
  167. CSuppress.prototype.getValueTypes = function ()
  168. {
  169. return (Array(
  170. 'suppressZeroValues',
  171. 'suppressDivideByZero',
  172. 'suppressMissingValues',
  173. 'suppressOverflowValues'
  174. ));
  175. };
  176. CSuppress.prototype.getValues = function ()
  177. {
  178. var aSuppressValues = new Array();
  179. var aSuppressValueTypes = this.getValueTypes();
  180. for (var iIndex = 0; iIndex < aSuppressValueTypes.length; iIndex++)
  181. {
  182. var sValueType = aSuppressValueTypes[iIndex];
  183. var sSuppressionValue = this.getValue(sValueType);
  184. if (! sSuppressionValue)
  185. {
  186. sSuppressionValue = "true";
  187. }
  188. aSuppressValues[iIndex] = sSuppressionValue;
  189. }
  190. return (aSuppressValues);
  191. };
  192. CSuppress.prototype.getValue = function (sValueType)
  193. {
  194. if (! this.isValidValue(sValueType) || ! this.isNullSuppressionAllowed())
  195. {
  196. return;
  197. }
  198. var sValue = this.moMQManager.getCRQReportNode().getAttribute(sValueType);
  199. if (!sValue)
  200. {
  201. sValue = "true";
  202. }
  203. return sValue;
  204. };
  205. CSuppress.prototype.setValue = function (sValueType, sValue)
  206. {
  207. if (! this.isValidValue(sValueType) || ! this.isNullSuppressionAllowed())
  208. {
  209. return;
  210. }
  211. if (sValue !== "true" && sValue !== "false")
  212. {
  213. return;
  214. }
  215. this.moMQManager.getCRQReportNode().setAttribute(sValueType, sValue);
  216. };
  217. CSuppress.prototype.swapValue = function (sValue)
  218. {
  219. if (! this.isValidValue(sValue) || ! this.isNullSuppressionAllowed())
  220. {
  221. return;
  222. }
  223. var sCurrentValue = this.getValue(sValue);
  224. var sNewValue;
  225. switch (sCurrentValue)
  226. {
  227. case "false":
  228. sNewValue = "true";
  229. break;
  230. case "true":
  231. default:
  232. sNewValue = "false";
  233. break;
  234. }
  235. this.setValue(sValue, sNewValue);
  236. };
  237. CSuppress.prototype.isValidValue = function (sValue)
  238. {
  239. var aValues = this.getValueTypes();
  240. for (var iIndex = 0; iIndex < aValues.length; iIndex++)
  241. {
  242. if (aValues[iIndex] === sValue)
  243. {
  244. return true;
  245. }
  246. }
  247. return false;
  248. };
  249. CSuppress.prototype.getTypeCommandFromDialog = function (aParameters)
  250. {
  251. if (typeof aParameters === "undefined" || ! aParameters["f"])
  252. {
  253. return this.getCommand("");
  254. }
  255. var iSuppressionTypeIndex = 0;
  256. var sSuppressionType = "";
  257. for (iSuppressionTypeIndex = 0; iSuppressionTypeIndex < aParameters["f"].suppressionType.length; iSuppressionTypeIndex++)
  258. {
  259. if (aParameters["f"].suppressionType[iSuppressionTypeIndex].checked)
  260. {
  261. sSuppressionType = aParameters["f"].suppressionType[iSuppressionTypeIndex].value;
  262. }
  263. }
  264. var sReturn = this.getCommand(sSuppressionType);
  265. return sReturn;
  266. };
  267. CSuppress.prototype.getCommand = function (sSuppressionType)
  268. {
  269. var sReturn = "";
  270. switch (sSuppressionType)
  271. {
  272. case "SUPPRESS_ROWS":
  273. sReturn = "R";
  274. break;
  275. case "SUPPRESS_COLUMNS":
  276. sReturn = "C";
  277. break;
  278. case "SUPPRESS_ROWS_AND_COLUMNS":
  279. sReturn = "B";
  280. break;
  281. case "SUPPRESS_OFF":
  282. default:
  283. sReturn = "N";
  284. }
  285. return sReturn;
  286. };
  287. CSuppress.prototype.getValuesFromDialog = function (aParameters)
  288. {
  289. var aCommandArray = new Array();
  290. if (typeof aParameters === "undefined" || ! aParameters["f"])
  291. {
  292. return aCommandArray;
  293. }
  294. var aOptionsChecked = new Array (aParameters["f"].suppressZeroValues,
  295. aParameters["f"].suppressDivideByZero,
  296. aParameters["f"].suppressMissingValues,
  297. aParameters["f"].suppressOverflowValues
  298. );
  299. for (var iOptionIndex = 0; iOptionIndex < aOptionsChecked.length; iOptionIndex++)
  300. {
  301. if (aOptionsChecked[iOptionIndex].checked === false)
  302. {
  303. aCommandArray.push("false");
  304. }
  305. else
  306. {
  307. aCommandArray.push("true");
  308. }
  309. }
  310. return aCommandArray;
  311. };
  312. CSuppress.prototype.isNullSuppressionAllowed = function()
  313. {
  314. if (! this.moMQManager || typeof this.moMQManager.getCRQReportNode() !== "object")
  315. {
  316. return false;
  317. }
  318. return this.m_bIsNullSuppressionAllowed;
  319. };
  320. CSuppress.prototype.setNullSuppressionAllowed = function(bAccessAllowed)
  321. {
  322. this.m_bIsNullSuppressionAllowed = this.validateBoolean(bAccessAllowed);
  323. };
  324. CSuppress.prototype.isAccessToNullSuppressionOptionsAllowed = function()
  325. {
  326. return this.m_bIsAccessToNullSuppressionOptionsAllowed;
  327. };
  328. CSuppress.prototype.setAccessToNullSuppressionOptionsAllowed = function(bAccessAllowed)
  329. {
  330. this.m_bIsAccessToNullSuppressionOptionsAllowed = this.validateBoolean(bAccessAllowed);
  331. };
  332. CSuppress.prototype.isMultiEdgeNullSuppressionAllowed = function()
  333. {
  334. return this.m_bIsMultiEdgeNullSuppressionAllowed;
  335. };
  336. CSuppress.prototype.setMultiEdgeNullSuppressionAllowed = function(bAccessAllowed)
  337. {
  338. this.m_bIsMultiEdgeNullSuppressionAllowed = this.validateBoolean(bAccessAllowed);
  339. };
  340. CSuppress.prototype._commandArrayIsEmpty = function (aCommandArray)
  341. {
  342. var sKey;
  343. var bReturn = true;
  344. for (sKey in aCommandArray)
  345. {
  346. if (aCommandArray[sKey] == "true")
  347. {
  348. bReturn = false;
  349. break;
  350. }
  351. }
  352. return bReturn;
  353. };
  354. CSuppress.prototype.validateBoolean = function(bValue)
  355. {
  356. if (! bValue || bValue === "" || bValue === "false" || bValue === false)
  357. {
  358. bValue = false;
  359. }
  360. else
  361. {
  362. bValue = true;
  363. }
  364. return bValue;
  365. };