CCustomGroups.js 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626
  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 CCustomGroups()
  14. {
  15. this.m_bFeatureRequiresQualityOfService = true;
  16. };
  17. CCustomGroups.prototype = new AFeatureObject();
  18. CCustomGroups.prototype.setup = function (aFeatureParams)
  19. {
  20. newCustomValue();
  21. };
  22. function newCustomValue(newGroupOrRange)
  23. {
  24. cfgSet("LAST_DIALOG", "customizeValues");
  25. dlgReset();
  26. dlgGlobalReset();
  27. var oMQMgr = goApplicationManager.getMiniQueryManager();
  28. var sel = cfgGetAt("SelColumns", 0);
  29. if (cfgSize("SelColumns") <= 0)
  30. {
  31. dlgShowMessage("CUSTOMIZE_VALUES_CREATE_BASIC_TITLE", "", "CUSTOMIZE_VALUES_CREATE_NO_SELECTION");
  32. return;
  33. }
  34. if (cfgSize("SelColumns") > 1)
  35. {
  36. dlgShowMessage("CUSTOMIZE_VALUES_CREATE_BASIC_TITLE", "", "CUSTOMIZE_VALUES_CREATE_TOO_MANY_SELECTIONS");
  37. return;
  38. }
  39. var colDataType = getDataType(sel);
  40. if ((oMQMgr.isReportExpression(sel)) || (oMQMgr.getDisplayType(sel) === 1) || (colDataType == 6) || (colDataType == -1))
  41. {
  42. dlgShowMessage("CUSTOMIZE_VALUES_CREATE_BASIC_TITLE", "", "CUSTOMIZE_VALUES_CREATE_BAD_SELECTION");
  43. return;
  44. }
  45. if (!checkForValidSelection(false))
  46. return;
  47. setupCustomValue(newGroupOrRange);
  48. };
  49. function setupCustomValue(newGroupOrRange)
  50. {
  51. if (!checkCalcFunctionAgainstDB("ces_if") || !checkCalcFunctionAgainstDB("CUSTOM_GROUPS"))
  52. {
  53. dlgShowMessage("CALCULATE_CREATE_BASIC_TITLE", "", "CUSTOMIZE_VALUES_HAS_NO_VALID_OPERATIONS");
  54. return;
  55. }
  56. var groupOrRange = -1;
  57. if (typeof newGroupOrRange != "undefined")
  58. groupOrRange = newGroupOrRange;
  59. var oMQMgr = goApplicationManager.getMiniQueryManager();
  60. var sel = cfgGetAt("SelColumns", 0);
  61. retrieveCreds();
  62. var bIsNumeric = isNumeric(sel);
  63. var bIsString = isString(sel);
  64. if (bIsString && oMQMgr.hasNumericDetailAggregate(sel))
  65. {
  66. bIsString = false;
  67. bIsNumeric = true;
  68. }
  69. if (bIsString)
  70. {
  71. dlgSetParm("xxCustomType", "0");
  72. dlgGlobalSetParm("xxCustomType", "0");
  73. if (oMQMgr.getPromptType(sel) == 0 || oMQMgr.getPromptType(sel) == 6)
  74. {
  75. dlgSetParm("xxAdvanced", "0");
  76. dlgGlobalSetParm("xxAdvanced", "0");
  77. }
  78. else
  79. {
  80. dlgSetParm("xxAdvanced", "1");
  81. dlgGlobalSetParm("xxAdvanced", "1");
  82. }
  83. if (groupOrRange == -1)
  84. {
  85. groupOrRange = "group";
  86. }
  87. else if (groupOrRange == "range")
  88. {
  89. dlgRemoveParm("xxAdvanced");
  90. dlgGlobalRemoveParm("xxAdvanced");
  91. }
  92. }
  93. else if (bIsNumeric)
  94. {
  95. dlgSetParm("xxCustomType", "1");
  96. dlgGlobalSetParm("xxCustomType", "1");
  97. if (oMQMgr.isMeasure(sel))
  98. {
  99. dlgGlobalSetParm("xxIsMeasure", "1");
  100. }
  101. if (oMQMgr.getPromptType(sel) == 0 || oMQMgr.getPromptType(sel) == 6)
  102. {
  103. dlgSetParm("xxAdvanced", "0");
  104. dlgGlobalSetParm("xxAdvanced", "0");
  105. }
  106. else
  107. {
  108. dlgSetParm("xxAdvanced", "1");
  109. dlgGlobalSetParm("xxAdvanced", "1");
  110. }
  111. if (groupOrRange == -1)
  112. {
  113. groupOrRange = "range";
  114. dlgRemoveParm("xxAdvanced");
  115. dlgGlobalRemoveParm("xxAdvanced");
  116. }
  117. if (groupOrRange == "group")
  118. addAggsAndOtherCols(sel);
  119. else
  120. addAggsAndOtherCols(sel, false);
  121. }
  122. else if (isDate(sel))
  123. {
  124. dlgSetParm("xxCustomType", "2");
  125. dlgGlobalSetParm("xxCustomType", "2");
  126. if (oMQMgr.getPromptType(sel) == 0 || oMQMgr.getPromptType(sel) == 6)
  127. dlgGlobalSetParm("xxAdvanced", "0");
  128. else
  129. dlgGlobalSetParm("xxAdvanced", "1");
  130. groupOrRange = "range";
  131. }
  132. else if (isTime(sel))
  133. {
  134. dlgSetParm("xxCustomType", "3");
  135. dlgGlobalSetParm("xxCustomType", "3");
  136. if (oMQMgr.getPromptType(sel) == 0 || oMQMgr.getPromptType(sel) == 6)
  137. dlgGlobalSetParm("xxAdvanced", "0");
  138. else
  139. dlgGlobalSetParm("xxAdvanced", "1");
  140. groupOrRange = "range";
  141. }
  142. else if (isInterval(sel))
  143. {
  144. dlgSetParm("xxCustomType", "4");
  145. dlgGlobalSetParm("xxCustomType", "4");
  146. if (oMQMgr.getPromptType(sel) == 0 || oMQMgr.getPromptType(sel) == 6)
  147. dlgGlobalSetParm("xxAdvanced", "0");
  148. else
  149. dlgGlobalSetParm("xxAdvanced", "1");
  150. groupOrRange = "range";
  151. }
  152. else if (isDateTime(sel))
  153. {
  154. dlgSetParm("xxCustomType", "5");
  155. dlgGlobalSetParm("xxCustomType", "5");
  156. if (oMQMgr.getPromptType(sel) == 0 || oMQMgr.getPromptType(sel) == 6)
  157. dlgGlobalSetParm("xxAdvanced", "0");
  158. else
  159. dlgGlobalSetParm("xxAdvanced", "1");
  160. groupOrRange = "range";
  161. }
  162. else
  163. {
  164. dlgShowMessage("CUSTOMIZE_VALUES_CREATE_BASIC_TITLE", "", "MOVE_GROUP_INVALID_SELECTION");
  165. return;
  166. }
  167. dlgGlobalSetParm("xxExprLocale", oMQMgr.getExpressionLocale());
  168. var mqObject = cfgGet("MiniQueryObj");
  169. var c = (mqObject != null ? mqObject.findChildWithAttribute('id', oMQMgr.getColumnId(sel)) : null);
  170. var bUseMUN = isMUN(c);
  171. if (bUseMUN) {
  172. dlgGlobalSetParm("xxUseMUN", true);
  173. }
  174. if (getCalcType(sel) == "group")
  175. {
  176. dlgGlobalSetParm("xxExistingCol", "group");
  177. if (typeof newGroupOrRange == "undefined")
  178. {
  179. groupOrRange = "group";
  180. parseGroup(true, sel);
  181. }
  182. else
  183. {
  184. groupOrRange = newGroupOrRange;
  185. parseGroup(false, sel);
  186. }
  187. dlgGlobalSetParm("xxCVColumnName", oMQMgr.getColumnLabel(sel));
  188. }
  189. else if (getCalcType(sel) == "range")
  190. {
  191. dlgGlobalSetParm("xxExistingCol", "range");
  192. if (typeof newGroupOrRange == "undefined")
  193. {
  194. groupOrRange = "range";
  195. var colExp = parseRange(true, sel);
  196. if (colExp.charAt(0) != "[")
  197. colExp = colExp.substring(colExp.indexOf("["), (colExp.lastIndexOf("]") + 1));
  198. for (var i = 0; i < oMQMgr.getAllColumns().length; i++)
  199. {
  200. if (oMQMgr.getExpression(i) == colExp)
  201. {
  202. if (oMQMgr.isMeasure(i))
  203. dlgGlobalSetParm("xxIsMeasure", "1");
  204. break;
  205. }
  206. }
  207. }
  208. else
  209. {
  210. groupOrRange = newGroupOrRange;
  211. var colExp = parseRange(false, sel);
  212. if (colExp.charAt(0) != "[")
  213. colExp = colExp.substring(colExp.indexOf("["), (colExp.lastIndexOf("]") + 1));
  214. for (var i = 0; i < oMQMgr.getAllColumns().length; i++)
  215. {
  216. if (oMQMgr.getExpression(i) == colExp)
  217. {
  218. if (oMQMgr.isMeasure(i))
  219. dlgGlobalSetParm("xxIsMeasure", "1");
  220. addAggsAndOtherCols(i);
  221. break;
  222. }
  223. }
  224. }
  225. dlgGlobalSetParm("xxCVColumnName", oMQMgr.getColumnLabel(sel));
  226. }
  227. else
  228. {
  229. dlgGlobalSetParm("xxColumnName", oMQMgr.getColumnLabel(sel));
  230. if (bUseMUN)
  231. {
  232. var useSep = ",";
  233. useSep = oMQMgr.getListSeparator();
  234. dlgGlobalSetParm("xxColumnExpression", "RoleValue('_memberCaption'" + useSep + " " + oMQMgr.getExpression(sel) + ")");
  235. }
  236. else
  237. dlgGlobalSetParm("xxColumnExpression", oMQMgr.getExpression(sel));
  238. }
  239. dlgGlobalSetParm("xxColumnIndex", sel);
  240. var before_col_id = "-1";
  241. if (sel < (oMQMgr.getAllColumns().length - 1))
  242. before_col_id = oMQMgr.getColumnId(sel + 1);
  243. dlgGlobalSetParm("xxInsBeforeColId", before_col_id);
  244. if (groupOrRange == "group")
  245. {
  246. dlgGlobalSetParm("xxModelName", cfgGet("cmLastModel"));
  247. dlgSetParm("m", "/" + qs_dir + "/customizeGroups.xts");
  248. if (oMQMgr.getCRQReportNode().getAttribute("limitData") == "partial")
  249. dlgGlobalSetParm("xxDesignMode", "true");
  250. }
  251. else
  252. {
  253. dlgSetParm("m", "/" + qs_dir + "/customizeRanges.xts");
  254. }
  255. for (var i = 0; i < cfgSize("filter_promptValuesXML"); i++)
  256. {
  257. dlgGlobalSetParmAt("xxPromptValues", dlgGlobalSize("xxPromptValues"), cfgGetAt("filter_promptValuesXML", i));
  258. }
  259. try
  260. {
  261. if (goApplicationManager.getReportManager().getParameterManager().getExecutionParameters())
  262. {
  263. dlgGlobalSetParm("xxExecutionParameters", goApplicationManager.getReportManager().getParameterManager().getExecutionParameters());
  264. }
  265. }
  266. catch (e)
  267. {
  268. }
  269. var formatArr = cfgGetAt("ColFormat", sel);
  270. if(formatArr[0] != "none")
  271. {
  272. var numDecs = -1;
  273. for (var i = 0; i < formatArr.length; i++)
  274. {
  275. if (formatArr[i] == "decimalSize" && formatArr.length > (i + 1))
  276. {
  277. numDecs = formatArr[i + 1];
  278. break;
  279. }
  280. }
  281. if (numDecs > -1)
  282. dlgGlobalSetParm("xxNumDecimals", numDecs);
  283. }
  284. dlgSubmit();
  285. };
  286. function loadCustomRange()
  287. {
  288. newCustomValue("range")
  289. };
  290. function loadCustomGroups()
  291. {
  292. newCustomValue("group")
  293. };
  294. function parseRange(setExisting, sel)
  295. {
  296. var oMQMgr = goApplicationManager.getMiniQueryManager();
  297. var rangeType = oMQMgr.getCalcOp(sel);
  298. if (rangeType === MINI_QUERY_NO_COLUMN_FOUND || rangeType === MINI_QUERY_ATTRIBUTE_NOT_FOUND)
  299. {
  300. return;
  301. }
  302. rangeType = rangeType.substr(5);
  303. switch (rangeType)
  304. {
  305. case "String":
  306. dlgSetParm("xxCustomType", "0");
  307. dlgGlobalSetParm("xxCustomType", "0");
  308. break;
  309. case "Number":
  310. dlgSetParm("xxCustomType", "1");
  311. dlgGlobalSetParm("xxCustomType", "1");
  312. break;
  313. case "Date":
  314. dlgSetParm("xxCustomType", "2");
  315. dlgGlobalSetParm("xxCustomType", "2");
  316. break;
  317. case "Time":
  318. dlgSetParm("xxCustomType", "3");
  319. dlgGlobalSetParm("xxCustomType", "3");
  320. break;
  321. case "Interval":
  322. dlgSetParm("xxCustomType", "4");
  323. dlgGlobalSetParm("xxCustomType", "4");
  324. break;
  325. case "DateTime":
  326. dlgSetParm("xxCustomType", "5");
  327. dlgGlobalSetParm("xxCustomType", "5");
  328. break;
  329. default:
  330. return;
  331. }
  332. var existingGroups = new Array();
  333. var existingGroupValues = new Array();
  334. var colFullExpr = oMQMgr.getExpression(sel);
  335. var ifColStr = "if (";
  336. var lastCastString = "CAST(";
  337. var asDecimalString = " as decimal(";
  338. var asVarcharString = " as varchar(";
  339. var asNVarcharString = " as nvarchar(";
  340. var nullString = "null";
  341. var ifColPointer = colFullExpr.indexOf(ifColStr);
  342. var origColPointer = colFullExpr.indexOf("[");
  343. var inOrInRangeStr = " in_range {"
  344. var origColExp;
  345. if (colFullExpr.indexOf(inOrInRangeStr) == -1)
  346. inOrInRangeStr = " in ("
  347. var inRange = colFullExpr.indexOf(inOrInRangeStr);
  348. origColExp = colFullExpr.substring(ifColPointer + ifColStr.length, inRange);
  349. var lastCloseBracket = origColExp.lastIndexOf("]");
  350. var origColName = origColExp.substring(origColExp.lastIndexOf("[") + 1, lastCloseBracket);
  351. var colExpr = colFullExpr;
  352. var thenPoint = colFullExpr.indexOf(") then ('");
  353. var quoteBracketElse = "') else ";
  354. var lastElse = colFullExpr.substr(colFullExpr.lastIndexOf(quoteBracketElse) + quoteBracketElse.length + 1);
  355. var afterElse = lastElse.substring(0, lastElse.lastIndexOf(")"));
  356. if (setExisting)
  357. {
  358. while (thenPoint > -1)
  359. {
  360. var elsePoint = colExpr.indexOf(quoteBracketElse, thenPoint);
  361. var rangeName = colExpr.substring(thenPoint + 9, elsePoint);
  362. colExpr = colExpr.substr(0, thenPoint);
  363. lastCloseBracket = colExpr.lastIndexOf("]");
  364. var rangeVals = colExpr.substring(lastCloseBracket, thenPoint);
  365. colExpr = colFullExpr.substr(thenPoint + 9);
  366. colFullExpr = colExpr;
  367. var inRange = rangeVals.indexOf(inOrInRangeStr);
  368. rangeVals = rangeVals.substring(inRange + 11, rangeVals.length - 1).replace(/^'|'$/g, "");
  369. dlgGlobalSetParmAt("xxExistingRanges", cf.dlgGlobalSize('xxExistingRanges'), new Array(rangeName, rangeVals));
  370. thenPoint = colExpr.indexOf(") then ('");
  371. }
  372. }
  373. dlgGlobalSetParm("xxColumnName", origColName);
  374. if (afterElse.indexOf(lastCastString) > -1)
  375. {
  376. var colExpOrLabel = "";
  377. if (afterElse.indexOf(asDecimalString) > -1)
  378. colExpOrLabel = afterElse.substring(afterElse.lastIndexOf(lastCastString) + lastCastString.length, afterElse.lastIndexOf(asDecimalString));
  379. else
  380. {
  381. var lastIdx = afterElse.lastIndexOf(asNVarcharString);
  382. if (lastIdx == -1)
  383. lastIdx = afterElse.lastIndexOf(asVarcharString);
  384. colExpOrLabel = afterElse.substring(afterElse.lastIndexOf(lastCastString) + lastCastString.length, lastIdx);
  385. if (colExpOrLabel.charAt(0) == "'" && colExpOrLabel.charAt(colExpOrLabel.length - 1) == "'")
  386. {
  387. colExpOrLabel = colExpOrLabel.substring(1, colExpOrLabel.length - 1);
  388. dlgGlobalSetParm("xxExistingRemainingGroup", colExpOrLabel);
  389. }
  390. }
  391. }
  392. else if (afterElse.indexOf(nullString) > -1)
  393. dlgGlobalSetParm("xxExistingRemainingGroup", false);
  394. var substringStr = "substring(";
  395. if (origColExp.indexOf(substringStr) > -1)
  396. {
  397. if ( origColExp.match(/^\s*substring\s*\(\s*(.*?)(\s*,\s*\d+\s*)*\)$/gi) )
  398. {
  399. origColExp = RegExp.$1;
  400. }
  401. }
  402. dlgGlobalSetParm("xxColumnExpression", origColExp);
  403. return origColExp;
  404. };
  405. function parseGroup(setExisting, sel)
  406. {
  407. var oMQMgr = goApplicationManager.getMiniQueryManager();
  408. var rangeType = oMQMgr.getCalcOp(sel);
  409. if (rangeType === MINI_QUERY_NO_COLUMN_FOUND || rangeType === MINI_QUERY_ATTRIBUTE_NOT_FOUND)
  410. {
  411. return;
  412. }
  413. rangeType = rangeType.substr(5);
  414. switch (rangeType)
  415. {
  416. case "String":
  417. dlgSetParm("xxCustomType", "0");
  418. dlgGlobalSetParm("xxCustomType", "0");
  419. break;
  420. case "Number":
  421. dlgSetParm("xxCustomType", "1");
  422. dlgGlobalSetParm("xxCustomType", "1");
  423. break;
  424. default:
  425. return;
  426. }
  427. var existingGroups = new Array();
  428. var existingGroupValues = new Array();
  429. var colExpr = oMQMgr.getExpression(sel);
  430. var ifString = "if (";
  431. var inString = " in (";
  432. var thenString = ")) then (CAST('";
  433. var lastCastString = "CAST('";
  434. var elseStringN = "' as nvarchar(30))) else ";
  435. var elseString = "' as varchar(30))) else ";
  436. var nullString = "null";
  437. var ifColPointer = colExpr.indexOf(ifString);
  438. var origColPointer = colExpr.indexOf("[");
  439. var inGroup = colExpr.indexOf(inString);
  440. var origColExp = colExpr.substring(ifColPointer + ifString.length, inGroup);
  441. origColPointer = origColExp.lastIndexOf("]");
  442. var origColName = origColExp.substring(origColExp.lastIndexOf("[") + 1, origColPointer);
  443. var quoteBracketElse = "') else ";
  444. var nullBracketElse = "null) else ";
  445. var lastElse;
  446. if (colExpr.lastIndexOf(quoteBracketElse) == -1)
  447. lastElse = colExpr.substr(colExpr.lastIndexOf(nullBracketElse) + nullBracketElse.length + 1);
  448. else
  449. lastElse = colExpr.substr(colExpr.lastIndexOf(quoteBracketElse) + quoteBracketElse.length + 1);
  450. var afterElse = lastElse.substring(0, lastElse.lastIndexOf(")"));
  451. if (setExisting)
  452. {
  453. while (inGroup > -1)
  454. {
  455. colExpr = colExpr.substr(inGroup + inString.length);
  456. var thenPoint = colExpr.indexOf(thenString);
  457. var grpVals = colExpr.substring(0, thenPoint);
  458. var elsePoint;
  459. var nVarChar = colExpr.indexOf(elseStringN, thenPoint);
  460. if (nVarChar > -1)
  461. elsePoint = nVarChar;
  462. else
  463. elsePoint = colExpr.indexOf(elseString, thenPoint);
  464. var grpName = colExpr.substring(thenPoint + thenString.length, elsePoint);
  465. if (nVarChar > -1)
  466. colExpr = colExpr.substr(elsePoint + elseStringN.length);
  467. else
  468. colExpr = colExpr.substr(elsePoint + elseString.length);
  469. if (grpName != "")
  470. {
  471. if (grpVals != "")
  472. {
  473. grpVals = parseQuoteEncodedList(grpVals);
  474. for (i = 0; i < grpVals.length; i++)
  475. dlgGlobalSetParmAt("xxExistingGroups", cf.dlgGlobalSize('xxExistingGroups'), new Array (grpName, grpVals[i]));
  476. }
  477. }
  478. inGroup = colExpr.indexOf(inString);
  479. }
  480. if (colExpr.indexOf(lastCastString) > -1)
  481. {
  482. var asVarcharString = "' as varchar(30)))";
  483. var asNVarcharString = "' as nvarchar(30)))";
  484. var lastIdx = colExpr.lastIndexOf(asNVarcharString);
  485. if (lastIdx == -1)
  486. lastIdx = colExpr.lastIndexOf(asVarcharString);
  487. if (lastIdx > -1)
  488. {
  489. var remainingGroup = colExpr.substring(colExpr.indexOf(lastCastString) + lastCastString.length, lastIdx);
  490. if (remainingGroup != "")
  491. dlgGlobalSetParm("xxExistingRemainingGroup", remainingGroup);
  492. }
  493. }
  494. else if (colExpr.indexOf(nullString) > -1)
  495. dlgGlobalSetParm("xxExistingRemainingGroup", false);
  496. }
  497. dlgGlobalSetParm("xxColumnName", origColName);
  498. dlgGlobalSetParm("xxColumnExpression", origColExp);
  499. };
  500. function parseQuoteEncodedList(list)
  501. {
  502. var grpVals = new Array();
  503. var startPos = list.indexOf("'");
  504. var intPos = startPos;
  505. var endPos, index = 0;
  506. while (true)
  507. {
  508. endPos = list.indexOf("'", intPos + 1);
  509. if (endPos == -1)
  510. return grpVals;
  511. if (list.indexOf(",'", endPos + 1) == endPos + 1)
  512. {
  513. grpVals[index++] = list.slice(startPos + 1, endPos);
  514. startPos = endPos + 2;
  515. intPos = startPos
  516. }
  517. else if (list.indexOf("'", endPos + 1) == endPos + 1)
  518. {
  519. intPos = endPos + 1;
  520. }
  521. else
  522. {
  523. grpVals[index++] = list.slice(startPos + 1, endPos);
  524. return grpVals;
  525. }
  526. }
  527. };
  528. function addAggsAndOtherCols(colRef, addOtherCols)
  529. {
  530. var oMQMgr = goApplicationManager.getMiniQueryManager();
  531. var summaryAgg = oMQMgr.getSummaryAggregate(colRef);
  532. var detailAgg = oMQMgr.getDetailAggregate(colRef);
  533. var regularAgg = oMQMgr.getRegularAggregate(colRef);
  534. if (summaryAgg == "default")
  535. {
  536. if ((regularAgg != "")&&(regularAgg != "none"))
  537. summaryAgg = regularAgg;
  538. else if (isNumeric(colRef))
  539. summaryAgg = "total";
  540. else
  541. summaryAgg = "count";
  542. }
  543. switch (summaryAgg)
  544. {
  545. case "any":
  546. case "none":
  547. case "automatic":
  548. case "calculated":
  549. case "default":
  550. break;
  551. default:
  552. dlgGlobalSetParm("xxAggregateType", summaryAgg);
  553. }
  554. switch (detailAgg)
  555. {
  556. case "any":
  557. case "none":
  558. case "automatic":
  559. case "calculated":
  560. break;
  561. case "averageNonZero":
  562. case "countDistinct":
  563. case "countNonZero":
  564. case "median":
  565. dlgGlobalSetParm("xxDetailAggregateType", "total");
  566. default:
  567. dlgGlobalSetParm("xxDetailAggregateType", detailAgg);
  568. }
  569. if (typeof addOtherCols != "undefined" && addOtherCols == false)
  570. return;
  571. for (var i = 0; i < oMQMgr.getAllColumns().length; i++)
  572. {
  573. if((oMQMgr.getColumnId(i) != oMQMgr.getColumnId(colRef)) && (oMQMgr.isMeasure(i) === false) && (!oMQMgr.isReportExpression(i)))
  574. {
  575. dlgGlobalSetParmAt("xxOtherColIds", dlgGlobalSize('xxOtherColIds'), oMQMgr.getColumnId(i));
  576. dlgGlobalSetParmAt("xxOtherColExps", dlgGlobalSize('xxOtherColExps'), oMQMgr.getExpression(i).replace(/</g,"&lt;"));
  577. }
  578. }
  579. };