customizeRangesDialog.js 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  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 buildCustomRangesCalcExpression()
  14. {
  15. var sColExp = cf.dlgGlobalGetParm('xxColumnExpression');
  16. var sDecimalSeparator = goDialogManager.getMiniQueryManager().getDecimalSeparator();
  17. var sListSeparator = goDialogManager.getMiniQueryManager().getListSeparator();
  18. var sCalcExpr = "";
  19. var bIsFirst = true;
  20. var bIfOutput = false;
  21. for (var i = 0; i < customRangeNames.length; i++)
  22. {
  23. var oRangeLiteral = new CRangeLiteral(customRangeValues[i], customRangeNames[i]);
  24. var iRangeType = oRangeLiteral.getFilterType();
  25. if (bIsFirst)
  26. {
  27. sCalcExpr = "if (";
  28. bIsFirst = false;
  29. }
  30. else
  31. {
  32. sCalcExpr += " else if (";
  33. }
  34. if (cf.dlgGlobalGetParm('xxCustomType') == '1' && cf.dlgGlobalGetParm('xxAggregateType') != null)
  35. {
  36. sCalcExpr += cf.dlgGlobalGetParm('xxAggregateType') + "(" + sColExp + ")";
  37. }
  38. else if (cf.dlgGlobalGetParm('xxCustomType') != '0')
  39. {
  40. sCalcExpr += sColExp;
  41. }
  42. if (cf.dlgGlobalGetParm('xxCustomType') == '0')
  43. {
  44. switch (iRangeType)
  45. {
  46. case 0:
  47. sCalcExpr += "substring(" + sColExp + ", 1, " + oRangeLiteral.getFirstValue().length + ") in_range {'" + oRangeLiteral.getFirstValue().replace(/'/g, "''").replace("\.", sDecimalSeparator) + "'}";
  48. break;
  49. case 1:
  50. sCalcExpr += "substring(" + sColExp + ", 1, " + oRangeLiteral.getFirstValue().length + ") in_range {'" + oRangeLiteral.getFirstValue().replace(/'/g, "''").replace("\.", sDecimalSeparator) + "':}";
  51. break;
  52. case 2:
  53. sCalcExpr += "substring(" + sColExp + ", 1, " + oRangeLiteral.getSecondValue().length + ") in_range {:'" + oRangeLiteral.getSecondValue().replace(/'/g, "''").replace("\.", sDecimalSeparator) + "'}";
  54. break;
  55. case 3:
  56. sCalcExpr += "substring(" + sColExp + ", 1, " + oRangeLiteral.getSecondValue().length + ") in_range {'" + oRangeLiteral.getFirstValue().replace(/'/g, "''").replace("\.", sDecimalSeparator) + "' : '" + oRangeLiteral.getSecondValue().replace(/'/g, "''").replace("\.", sDecimalSeparator) + "'}";
  57. break;
  58. default:
  59. return;
  60. }
  61. }
  62. else
  63. {
  64. var sFirstValue = oRangeLiteral.getFirstValue();
  65. var sSecondValue = oRangeLiteral.getSecondValue();
  66. if ((cf.dlgGlobalGetParm('xxCustomType') != '3') && (cf.dlgGlobalGetParm('xxCustomType') != '4') && (cf.dlgGlobalGetParm('xxCustomType') != '5'))
  67. {
  68. if (sFirstValue)
  69. {
  70. sFirstValue = sFirstValue.replace("\.", sDecimalSeparator);
  71. }
  72. if (sSecondValue)
  73. {
  74. sSecondValue = sSecondValue.replace("\.", sDecimalSeparator);
  75. }
  76. }
  77. switch (iRangeType)
  78. {
  79. case 0:
  80. sCalcExpr += " in_range {" + sFirstValue + "}";
  81. break;
  82. case 1:
  83. sCalcExpr += " in_range {" + sFirstValue + ":}";
  84. break;
  85. case 2:
  86. sCalcExpr += " in_range {:" + sSecondValue + "}";
  87. break;
  88. case 3:
  89. sCalcExpr += " in_range {" + sFirstValue + " : " + sSecondValue + "}";
  90. break;
  91. default:
  92. return;
  93. }
  94. }
  95. sCalcExpr += ") then ('" + customRangeNames[i].replace(/'/g, "''") + "')";
  96. bIfOutput = true;
  97. }
  98. var oMQMgr = goDialogManager.getMiniQueryManager();
  99. if (bIfOutput)
  100. {
  101. sCalcExpr += " else (";
  102. }
  103. else if (customRangeNames.length == 0)
  104. {
  105. var oMQCols = oMQMgr.getElementsByAttribute("expression", sColExp);
  106. if (oMQCols.length > 0 && oMQMgr.isNumeric(oMQCols[0]))
  107. {
  108. sCalcExpr = "if (" + sColExp + " in_range {1:0}) then (null) else (";
  109. }
  110. else
  111. {
  112. sCalcExpr = "if (" + sColExp + " in ('')) then (null) else (";
  113. }
  114. }
  115. if (sCalcExpr != "")
  116. {
  117. if (document.f.remaining_values_options[0].checked == true)
  118. {
  119. if (cf.dlgGlobalGetParm('xxCustomType') == '0')
  120. {
  121. sCalcExpr += sColExp;
  122. }
  123. else if (cf.dlgGlobalGetParm('xxCustomType') == '1')
  124. {
  125. var iNumDecs
  126. var iColumnIdx = cf.dlgGlobalGetParm('xxColumnIndex');
  127. var colDataType = oMQMgr.getDataType(iColumnIdx);
  128. if(colDataType == 3 || colDataType == 20 || colDataType == 30 || colDataType == 31 || colDataType == 32)
  129. {
  130. iNumDecs = (cf.dlgGlobalGetParm('xxNumDecimals') ? cf.dlgGlobalGetParm('xxNumDecimals') : 2);
  131. }
  132. else
  133. {
  134. iNumDecs = (cf.dlgGlobalGetParm('xxNumDecimals') ? cf.dlgGlobalGetParm('xxNumDecimals') : 0);
  135. }
  136. if (parseInt(iNumDecs) > 6)
  137. {
  138. iNumDecs = 6;
  139. }
  140. if (cf.dlgGlobalGetParm('xxAggregateType') == null)
  141. {
  142. if(gsCustomGroups == "TRUE")
  143. sCalcExpr += "CAST(CAST((" + sColExp + ") as decimal(20" + sListSeparator + iNumDecs + ")) as varchar(20))";
  144. else
  145. sCalcExpr += "CAST(CAST((" + sColExp + ") as decimal(20" + sListSeparator + iNumDecs + ")) as nvarchar(20))";
  146. }
  147. else
  148. {
  149. if(gsCustomGroups == "TRUE")
  150. sCalcExpr += "CAST(CAST(" + cf.dlgGlobalGetParm('xxAggregateType') + "(" + sColExp + ") as decimal(20" + sListSeparator + iNumDecs + ")) as varchar(20))";
  151. else
  152. sCalcExpr += "CAST(CAST(" + cf.dlgGlobalGetParm('xxAggregateType') + "(" + sColExp + ") as decimal(20" + sListSeparator + iNumDecs + ")) as nvarchar(20))";
  153. }
  154. }
  155. else
  156. {
  157. if(gsCustomGroups == "TRUE")
  158. sCalcExpr += "CAST(" + sColExp + " as varchar(30))";
  159. else
  160. sCalcExpr += "CAST(" + sColExp + " as nvarchar(30))";
  161. }
  162. }
  163. else if ((document.f.remaining_values_options[1].checked == true) || (document.f.remaining_values_options[2].checked == true && document.f.range_name_text.value == ""))
  164. {
  165. sCalcExpr += "null";
  166. }
  167. else
  168. {
  169. if(gsCustomGroups == "TRUE")
  170. sCalcExpr += "CAST('" + document.f.range_name_text.value.replace(/'/g, "''") + "' as varchar(30))";
  171. else
  172. sCalcExpr += "CAST('" + document.f.range_name_text.value.replace(/'/g, "''") + "' as nvarchar(30))";
  173. }
  174. sCalcExpr += ")";
  175. }
  176. return sCalcExpr;
  177. };