CReportDefinition.js 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232
  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 CReportDefinition()
  14. {
  15. };
  16. CReportDefinition.prototype = new AFeatureObject();
  17. CReportDefinition.prototype.setup = function (aFeatureParams)
  18. {
  19. reportDefinition();
  20. };
  21. function reportDefinition()
  22. {
  23. var oMQMgr = goApplicationManager.getMiniQueryManager();
  24. dlgReset();
  25. dlgGlobalReset();
  26. var usedFilters = new Array();
  27. for (var i = 0; i < oMQMgr.getAllColumns().length; i++)
  28. {
  29. var calcOp = oMQMgr.getCalcOp(i);
  30. if (calcOp !== MINI_QUERY_NO_COLUMN_FOUND && calcOp !== MINI_QUERY_ATTRIBUTE_NOT_FOUND)
  31. {
  32. if (calcOp.substring(0,5) == "range" || calcOp.substring(0,5) == "group")
  33. {
  34. dlgGlobalSetParmAt("xxColInfo", dlgGlobalSize("xxColInfo"), new Array(oMQMgr.getColumnLabel(i), oMQMgr.getExpression(i), "customvalue"));
  35. }
  36. else
  37. {
  38. var colExp;
  39. if (oMQMgr.getDetailAggregate(i) != "calculated")
  40. {
  41. colExp = oMQMgr.getCalculatedExpression(i);
  42. }
  43. else
  44. {
  45. colExp = oMQMgr.getExpression(i);
  46. }
  47. var calculationType = "calculation";
  48. if (oMQMgr.isMeasure(i) === true)
  49. {
  50. calculationType += "_fact";
  51. }
  52. else if (oMQMgr.getUsage(i) == 2)
  53. {
  54. calculationType += "_dimension";
  55. }
  56. else
  57. {
  58. calculationType += "_attribute";
  59. }
  60. dlgGlobalSetParmAt("xxColInfo", dlgGlobalSize("xxColInfo"), new Array(oMQMgr.getColumnLabel(i), colExp, calculationType));
  61. }
  62. }
  63. else
  64. {
  65. var colOp;
  66. if (oMQMgr.isMeasure(i) === true)
  67. {
  68. colOp = "query_item_measure";
  69. }
  70. else
  71. {
  72. colOp = "query_item_attribute";
  73. }
  74. dlgGlobalSetParmAt("xxColInfo", dlgGlobalSize("xxColInfo"), new Array(oMQMgr.getColumnLabel(i), oMQMgr.getExpression(i), colOp));
  75. }
  76. var oColumn = oMQMgr.getColumnLabel(i);
  77. var aFilters = oMQMgr.getFiltersForColumn(oColumn);
  78. if(aFilters && aFilters.length)
  79. {
  80. if(aFilters[0].nextSibling == null && aFilters[0].previousSibling == null)
  81. {
  82. var oFilter = (aFilters[0] instanceof CFilter ? aFilters[0] : new CFilter("", aFilters[0]));
  83. var arExpr = oFilter.getText();
  84. var sFilterType = goApplicationManager.get("filterTitleDefault");
  85. colOp = goApplicationManager.get("filterTitleDefault");
  86. dlgGlobalSetParmAt("xxColInfo", dlgGlobalSize("xxColInfo"), new Array(sFilterType, arExpr, colOp));
  87. }
  88. }
  89. }
  90. var oCC = getCombinedFilter();
  91. if(oCC)
  92. {
  93. var smFilter = oCC.getSummaryFilter();
  94. var rwFilter = oCC.getRawFilter();
  95. var rwFilterC = rwFilter.getColumnIds();
  96. var smFilterC = smFilter.getColumnIds();
  97. var sFilterType = goApplicationManager.get("filterCombineTitleDefault");
  98. var predicate = null;
  99. var operator = null;
  100. if(rwFilterC.length > 1)
  101. {
  102. predicate = rwFilter.getPredicates();
  103. operator = rwFilter.getOperator();
  104. displayFilter(predicate, operator, sFilterType);
  105. }
  106. if(smFilterC.length > 1)
  107. {
  108. predicate = smFilter.getPredicates();
  109. operator = smFilter.getOperator();
  110. displayFilter(predicate, operator, sFilterType);
  111. }
  112. }
  113. dlgSetParm("m", "/" + qs_dir + "/reportDefinition.xts");
  114. dlgSubmit();
  115. };
  116. function Filter(){
  117. this.arExpr;
  118. this.recursiveCounter;
  119. this.isRecursiveCall;
  120. this.firstTime;
  121. };
  122. function displayFilter(predicate, operator, sFilterType)
  123. {
  124. var fv = new Filter();
  125. fv.arExpr = "";
  126. fv.recursiveCounter = 0;
  127. fv.isRecursiveCall = false;
  128. fv.firstTime = true;
  129. var colOp = goApplicationManager.get("filterTitleDefault");
  130. for (var i = 0; i < predicate.length; i++)
  131. {
  132. if(predicate[i] instanceof CFilterGroup)
  133. {
  134. fv.arExpr = fv.retrieveChildGroupsAndFilters(predicate[i], operator, fv);
  135. fv.arExpr += (i != (predicate.length - 1)) ? ") " + operator + " " : ")";
  136. fv.recursiveCounter--;
  137. }
  138. else
  139. {
  140. fv.arExpr += predicate[i].getText();
  141. if(i != (predicate.length - 1))
  142. {
  143. fv.arExpr += " " + operator + " ";
  144. }
  145. }
  146. fv.firstTime = true;
  147. fv.recursiveCounter = 0;
  148. }
  149. if(fv.arExpr.indexOf("\) OR \)") != -1) {
  150. fv.arExpr = fv.arExpr.replace(/\) OR \)/g,"))");
  151. }
  152. if(fv.arExpr.indexOf("\) AND \)") != -1) {
  153. fv.arExpr = fv.arExpr.replace(/\) AND \)/g,"))");
  154. }
  155. dlgGlobalSetParmAt("xxColInfo", dlgGlobalSize("xxColInfo"), new Array(sFilterType, fv.arExpr, colOp));
  156. };
  157. Filter.prototype.retrieveChildGroupsAndFilters = function(predicate, opr1, fv) {
  158. fv.arExpr += fv.arExpr.length == 0 ? "(" : "(";
  159. var prd = predicate.getPredicates();
  160. var opr = predicate.getOperator();
  161. for (var j = 0; j < prd.length; j++) {
  162. if (prd[j] instanceof CFilterGroup) {
  163. fv.recursiveCounter++;
  164. fv.isRecursiveCall = true;
  165. fv.arExpr = fv.retrieveChildGroupsAndFilters(prd[j], opr, fv);
  166. } else {
  167. fv.arExpr += prd[j].getText();
  168. if (j != (prd.length - 1)) {
  169. fv.arExpr += " " + opr + " ";
  170. }
  171. }
  172. }
  173. if (fv.isRecursiveCall) {
  174. if (fv.recursiveCounter == 1) {
  175. if (!fv.firstTime)
  176. fv.arExpr += ")";
  177. else {
  178. fv.arExpr += ") " + opr1 + " ";
  179. fv.firstTime = false;
  180. }
  181. } else
  182. if (fv.recursiveCounter > 1)
  183. fv.arExpr += ") " + opr1 + " ";
  184. }
  185. fv.recursiveCounter--;
  186. return fv.arExpr;
  187. };