selectColumn.js 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838
  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 mainMouseUp(event)
  14. {
  15. if (typeof enableResize == "function")
  16. enableResize(false);
  17. if (typeof getConfigFrame().enableResizeDialogFrame == "function")
  18. getConfigFrame().enableResizeDialogFrame(false);
  19. };
  20. function mainMouseMove(event)
  21. {
  22. if (typeof resizeMenuPane == "function")
  23. resizeMenuPane(event, false);
  24. if (typeof getConfigFrame().resizeDialogFrame == "function")
  25. {
  26. var top = 0;
  27. if (document.all && event.srcElement.ownerDocument != getConfigFrame().document)
  28. {
  29. var elem = getConfigFrame().document.getElementById("dialogFrame")
  30. while (elem != null)
  31. {
  32. if (elem.tagName != "TR" && typeof elem.offsetTop == "number")
  33. top += elem.offsetTop;
  34. elem = elem.offsetParent;
  35. }
  36. }
  37. getConfigFrame().resizeDialogFrame(event,event.clientY+top);
  38. }
  39. };
  40. function removeFromIntArray(iEl, a)
  41. {
  42. var i;
  43. var remove = false;
  44. for (i = 0; i < a.length; i++)
  45. {
  46. if (a[i] == iEl)
  47. remove = true;
  48. if (remove && i + 1 < a.length)
  49. a[i] = a[i + 1];
  50. }
  51. if (remove)
  52. a.length--;
  53. };
  54. function keydown(e)
  55. {
  56. if (e.cancelBubble === true && e.returnValue === false) return;
  57. if (goApplicationManager.getReportManager().get("currentMode") == "prompting")
  58. {
  59. return;
  60. }
  61. if (e.keyCode == 46)
  62. {
  63. goApplicationManager.getFeatureManager().launchFeature('Delete');
  64. cancelEvent(e);
  65. }
  66. else if (e.keyCode == 90 && e.ctrlKey == true && e.shiftKey == false)
  67. {
  68. goApplicationManager.getFeatureManager().launchFeature('Undo');
  69. }
  70. else if ((e.keyCode == 90 && e.ctrlKey == true && e.shiftKey == true) || (e.keyCode == 89 && e.ctrlKey == true))
  71. {
  72. goApplicationManager.getFeatureManager().launchFeature('Redo');
  73. }
  74. else if (e.ctrlKey == true)
  75. {
  76. if (e.keyCode == 88)
  77. {
  78. goApplicationManager.getFeatureManager().launchFeature('Cut');
  79. cancelEvent(e);
  80. }
  81. else if (e.keyCode == 86)
  82. {
  83. goApplicationManager.getFeatureManager().launchFeature('Paste');
  84. cancelEvent(e);
  85. }
  86. else if (e.keyCode == 78)
  87. {
  88. goApplicationManager.getFeatureManager().launchFeature('NewReport');
  89. cancelEvent(e);
  90. }
  91. else if (e.keyCode == 83)
  92. {
  93. goApplicationManager.getFeatureManager().launchFeature('Save');
  94. cancelEvent(e);
  95. }
  96. else if (e.keyCode == 65)
  97. {
  98. goApplicationManager.getFeatureManager().launchFeature('SaveAs');
  99. if (document.all)
  100. {
  101. e.returnValue = false;
  102. e.cancelBubble = true;
  103. }
  104. else
  105. {
  106. e.preventDefault();
  107. window.getSelection().removeAllRanges();
  108. }
  109. }
  110. }
  111. else if(e.keyCode == 13 || e.keyCode == 39 || e.keyCode == 37 || e.keyCode == 38 || e.keyCode == 40 || e.keyCode == 32)
  112. {
  113. var selection = goApplicationManager.getSelectionController();
  114. if(selection.m_oCognosViewer != null)
  115. {
  116. selection.m_oCognosViewer.onKeyDown(e);
  117. cancelEvent(e);
  118. }
  119. }
  120. };
  121. function cancelEvent(e) {
  122. if (document.all)
  123. {
  124. e.cancelBubble = true;
  125. e.returnValue = false;
  126. }
  127. else
  128. {
  129. e.preventDefault();
  130. }
  131. };
  132. function selectionIsNumeric(bUseOldType)
  133. {
  134. var cf = (typeof getConfigFrame == "function" ? getConfigFrame() : this);
  135. var oMQMgr = cf.goApplicationManager.getMiniQueryManager();
  136. var numSelCols = cf.cfgSize("SelColumns");
  137. if (numSelCols == 0)
  138. return false;
  139. var bNumericColumn = false;
  140. for (var i = 0; i < numSelCols; i++)
  141. {
  142. if (oMQMgr.isReportExpression(cf.cfgGetAt("SelColumns", i)))
  143. continue;
  144. if (bUseOldType)
  145. {
  146. var bIsFakeMeasure = oMQMgr.isFakeMeasure(cf.cfgGetAt("SelColumns", i));
  147. if ((bIsFakeMeasure && !isOldTypeNumeric(cf.cfgGetAt("SelColumns", i))) ||
  148. (!bIsFakeMeasure && !oMQMgr.isNumeric(cf.cfgGetAt("SelColumns", i))))
  149. return false;
  150. }
  151. else
  152. {
  153. if (!oMQMgr.isNumeric(cf.cfgGetAt("SelColumns", i)) && ! oMQMgr.hasNumericDetailAggregate(cf.cfgGetAt("SelColumns", i)))
  154. return false;
  155. }
  156. bNumericColumn = true;
  157. }
  158. return bNumericColumn;
  159. };
  160. function selectionIsMeasure()
  161. {
  162. var cf = (typeof getConfigFrame == "function" ? getConfigFrame() : this);
  163. var numSelCols = cf.cfgSize("SelColumns");
  164. if (numSelCols == 0)
  165. {
  166. return false;
  167. }
  168. var bMeasureColumn = false;
  169. var oMQMgr = cf.goApplicationManager.getMiniQueryManager();
  170. for (var i = 0; i < numSelCols; i++)
  171. {
  172. var oColumn = cf.cfgGetAt("SelColumns", i);
  173. if (oMQMgr.isReportExpression(oColumn))
  174. {
  175. continue;
  176. }
  177. if (! oMQMgr.isMeasure(oColumn))
  178. {
  179. return false;
  180. }
  181. bMeasureColumn = true;
  182. }
  183. return bMeasureColumn;
  184. };
  185. function selectionIsInterval(bUseOldType)
  186. {
  187. var oMQMgr = goApplicationManager.getMiniQueryManager();
  188. var numSelCols = cfgSize("SelColumns");
  189. if (numSelCols == 0)
  190. return false;
  191. var bIntervalColumn = false;
  192. for (var i = 0; i < numSelCols; i++)
  193. {
  194. if (oMQMgr.isReportExpression(cfgGetAt("SelColumns", i)))
  195. continue;
  196. if (bUseOldType)
  197. {
  198. var bIsFakeMeasure = oMQMgr.isFakeMeasure(cfgGetAt("SelColumns", i));
  199. if ((bIsFakeMeasure && !isOldTypeInterval(cfgGetAt("SelColumns", i))) ||
  200. (!bIsFakeMeasure && !isInterval(cfgGetAt("SelColumns", i))))
  201. return false;
  202. }
  203. else
  204. {
  205. if (!isInterval(cfgGetAt("SelColumns", i)))
  206. return false;
  207. }
  208. bIntervalColumn = true;
  209. }
  210. return bIntervalColumn;
  211. };
  212. function selectionIsDateType(bUseOldType)
  213. {
  214. var oMQMgr = goApplicationManager.getMiniQueryManager();
  215. var numSelCols = cfgSize("SelColumns");
  216. if (numSelCols == 0)
  217. {
  218. return false;
  219. }
  220. var bDateTypeColumn = false;
  221. for (var i = 0; i < numSelCols; i++)
  222. {
  223. if (oMQMgr.isReportExpression(cfgGetAt("SelColumns", i)))
  224. {
  225. continue;
  226. }
  227. if (bUseOldType)
  228. {
  229. var bIsFakeMeasure = oMQMgr.isFakeMeasure(cfgGetAt("SelColumns", i));
  230. if ((bIsFakeMeasure && !isOldTypeDateTime(cfgGetAt("SelColumns", i))) ||
  231. (!bIsFakeMeasure && !isDateTime(cfgGetAt("SelColumns", i))))
  232. {
  233. return false;
  234. }
  235. }
  236. else
  237. {
  238. if (!isDateTime(cfgGetAt("SelColumns", i)))
  239. {
  240. return false;
  241. }
  242. }
  243. bDateTypeColumn = true;
  244. }
  245. return bDateTypeColumn;
  246. };
  247. function addSelectionToCfgVariables(colId, useTag)
  248. {
  249. var oMQMgr = goApplicationManager.getMiniQueryManager();
  250. var indexOfColId;
  251. if (typeof useTag != "undefined" && useTag == true)
  252. {
  253. indexOfColId = oMQMgr.getColumnIndexByAttribute("tag", colId);
  254. }
  255. else
  256. {
  257. indexOfColId = oMQMgr.getColumnIndexByAttribute("id", colId);
  258. }
  259. if (indexOfColId >= 0)
  260. {
  261. var colSelectedAlready = false;
  262. for (var i = 0; i < cfgSize("SelColumns"); i++)
  263. {
  264. if (cfgGetAt("SelColumns", i) == indexOfColId)
  265. {
  266. colSelectedAlready = true;
  267. break;
  268. }
  269. }
  270. if (!colSelectedAlready)
  271. {
  272. cfgSetAt("SelColumns", cfgSize("SelColumns"), indexOfColId);
  273. }
  274. }
  275. };
  276. function removeSelectionFromCfgVariables(tagRef)
  277. {
  278. var oMQMgr = goApplicationManager.getMiniQueryManager();
  279. var indexOfColId = oMQMgr.getColumnIndexByAttribute("tag", tagRef);
  280. if (indexOfColId >= 0)
  281. {
  282. var selCols = cfgGet("SelColumns");
  283. cfgRemove("SelColumns");
  284. for (var i = 0; i < selCols.length; i++)
  285. {
  286. if (selCols[i] != indexOfColId)
  287. {
  288. cfgSetAt("SelColumns", cfgSize("SelColumns"), selCols[i]);
  289. }
  290. }
  291. }
  292. };
  293. function removeAllSelectionsFromCfgVariables()
  294. {
  295. cfgRemove("SelColumns");
  296. };
  297. function dlgGenericSelectionMessage(multiSelect)
  298. {
  299. dlgReset();
  300. dlgGlobalReset();
  301. dlgSetParm("m", "/" + qs_dir + "/actionErrorMessage.xts");
  302. dlgSetParm("xxMultiSelect", multiSelect);
  303. dlgSubmit();
  304. };
  305. function changeSelectionToColumnTitle(multiSelect, selectionObject)
  306. {
  307. var rf = goApplicationManager.getReportFrame();
  308. var selection = goApplicationManager.getSelectionController().getSelections();
  309. var allTds = rf.document.getElementsByTagName("td");
  310. goApplicationManager.getSelectionController().clearSelectedObjects();
  311. var lastSelection = -1;
  312. if (!multiSelect)
  313. {
  314. lastSelection = selectionObject.getTag();
  315. }
  316. for (var i = 0; i < allTds.length; i++)
  317. {
  318. var tag = allTds[i].getAttribute("tag");
  319. if (tag != null && tag != "" && (allTds[i].getAttribute("type") == "columnTitle" || allTds[i].getAttribute("type") == "section"))
  320. {
  321. var oSelCtrlr = goApplicationManager.getSelectionController();
  322. if (multiSelect)
  323. {
  324. for (var j = 0; j < selection.length; j++)
  325. {
  326. if (tag == selection[j].getTag())
  327. {
  328. if (oSelCtrlr !== null)
  329. {
  330. oSelCtrlr.selectNode(allTds[i]);
  331. }
  332. }
  333. }
  334. }
  335. else
  336. {
  337. if (tag == lastSelection)
  338. {
  339. if (oSelCtrlr !== null)
  340. {
  341. oSelCtrlr.selectNode(allTds[i]);
  342. }
  343. break;
  344. }
  345. }
  346. }
  347. }
  348. rf.window.focus();
  349. };
  350. function checkForValidSelection(multiSelectAllowed,summaryAllowed)
  351. {
  352. if (typeof summaryAllowed == "undefined" || summaryAllowed == null)
  353. summaryAllowed = false;
  354. var reCrosstabLevel = /\b(ol|il)\b/;
  355. var cellRef;
  356. var rf = goApplicationManager.getReportFrame();
  357. var selection = null;
  358. var oSelCtrlr = goApplicationManager.getSelectionController();
  359. if (oSelCtrlr !== null)
  360. {
  361. selection = oSelCtrlr.getSelections();
  362. if (oSelCtrlr.selectionsAreAllSameType() == -1)
  363. {
  364. return false;
  365. }
  366. }
  367. if (selection === null)
  368. {
  369. return false;
  370. }
  371. if (multiSelectAllowed)
  372. {
  373. if (!summaryAllowed)
  374. {
  375. for (var i = 0; i < selection.length; i++)
  376. {
  377. cellRef = selection[i].getCellRef();
  378. if (selection[i].getLayoutType() == "summary" || (cellRef != null && reCrosstabLevel.test(cellRef.className)))
  379. {
  380. dlgGenericSelectionMessage(true);
  381. return false;
  382. }
  383. }
  384. }
  385. }
  386. else
  387. {
  388. var bSelNotOnSameCol = false;
  389. if (oSelCtrlr !== null)
  390. {
  391. bSelNotOnSameCol = !oSelCtrlr.selectionsAreAllOnSameColumn();
  392. }
  393. if (selection.length > 1 && bSelNotOnSameCol)
  394. {
  395. dlgGenericSelectionMessage(false);
  396. return false;
  397. }
  398. if (!summaryAllowed)
  399. {
  400. for (var i = 0; i < selection.length; i++)
  401. {
  402. cellRef = selection[i].getCellRef();
  403. if (selection[i].getLayoutType() == "summary" || (cellRef != null && reCrosstabLevel.test(cellRef.className)))
  404. {
  405. if (selection.length > 1)
  406. {
  407. dlgGenericSelectionMessage(true);
  408. }
  409. else
  410. {
  411. dlgGenericSelectionMessage(false);
  412. }
  413. return false;
  414. }
  415. }
  416. }
  417. }
  418. return true;
  419. };
  420. function addColumnsForReselection()
  421. {
  422. var rf = goApplicationManager.getReportFrame();
  423. rf.addReportElementsForReselection();
  424. var selection = goApplicationManager.getSelectionController().getSelections();
  425. cfgRemove("reselectColumns");
  426. for (var i = 0; i < selection.length; i++)
  427. {
  428. var cellIdx = -1;
  429. var rowIdx = -1;
  430. var cellRef = selection[i].getCellRef();
  431. if (typeof cellRef == "object" && cellRef != null)
  432. {
  433. cellIdx = cellRef.cellIndex;
  434. rowIdx = cellRef.parentNode.rowIndex;
  435. }
  436. var dispValue = "";
  437. if (selection[i].getDisplayValues().length > 0)
  438. {
  439. dispValue = selection[i].getDisplayValues()[0];
  440. }
  441. cfgSetAt("reselectColumns", cfgSize("reselectColumns"), new Array(selection[i].getTag(), cellIdx, rowIdx, dispValue, selection[i].getLayoutType()));
  442. }
  443. };
  444. function reselectColumns()
  445. {
  446. var rf = goApplicationManager.getReportFrame();
  447. var selectionOF = null;
  448. var oSelCtrlr = goApplicationManager.getSelectionController();
  449. if (oSelCtrlr !== null)
  450. {
  451. selectionOF = oSelCtrlr.getSelectionObjectFactory();
  452. }
  453. if (selectionOF === null)
  454. {
  455. return;
  456. }
  457. var allTables = rf.document.getElementsByTagName("table");
  458. var reselectionsPrimary = new Array();
  459. var reselectionsSecondary = new Array();
  460. var previousSelections = new Array();
  461. for (var i = 0; i < cfgSize("reselectColumns"); i++)
  462. {
  463. previousSelections[previousSelections.length] = cfgGetAt("reselectColumns", i);
  464. }
  465. for (var j = 0; j < previousSelections.length; j++)
  466. {
  467. var rowVal = previousSelections[j][2];
  468. var colVal = previousSelections[j][1];
  469. var foundNode = false;
  470. if (rowVal > -1 && colVal > -1)
  471. {
  472. for (var i = 0; i < allTables.length; i++)
  473. {
  474. try
  475. {
  476. if (allTables[i] && allTables[i].rows && allTables[i].rows[rowVal] && allTables[i].rows[rowVal].cells)
  477. {
  478. var cell = allTables[i].rows[rowVal].cells[colVal];
  479. if (cell && cell.hasChildNodes())
  480. {
  481. for (var k = 0; k < cell.childNodes.length; k++)
  482. {
  483. if (cell.childNodes[k].firstChild.data == previousSelections[j][3])
  484. {
  485. reselectionsPrimary[reselectionsPrimary.length] = cell;
  486. foundNode = true;
  487. break;
  488. }
  489. }
  490. }
  491. }
  492. }
  493. catch(e)
  494. {
  495. }
  496. }
  497. }
  498. if (foundNode == false)
  499. {
  500. reselectionsSecondary[reselectionsSecondary.length] = j;
  501. }
  502. }
  503. var focusSet = false;
  504. var oSelCtrlr = goApplicationManager.getSelectionController();
  505. for (var i = 0; i < reselectionsPrimary.length; i++)
  506. {
  507. if (oSelCtrlr !== null)
  508. {
  509. oSelCtrlr.selectNode(reselectionsPrimary[i]);
  510. }
  511. if (focusSet == false)
  512. {
  513. focusSet = reselectionsPrimary[i];
  514. }
  515. }
  516. for (var i = 0; i < reselectionsSecondary.length; i++)
  517. {
  518. var SelObj = selectionOF.getSecondarySelectionObject(previousSelections[reselectionsSecondary[i]][0], previousSelections[reselectionsSecondary[i]][4]);
  519. if (SelObj != null)
  520. {
  521. goApplicationManager.getSelectionController().addSelectionObject(SelObj);
  522. addSelectionToCfgVariables(SelObj.getTag(), true);
  523. if (focusSet == false)
  524. {
  525. focusSet = rf.document.getElementsByTagName("table")[0];
  526. }
  527. }
  528. }
  529. cfgRemove("reselectColumns");
  530. if (focusSet != false && typeof focusSet.focus == "function")
  531. {
  532. focusSet.focus();
  533. }
  534. };
  535. function getColRefIdFromSelectionObject(oSelObj)
  536. {
  537. oSelObj.fetchContextIds();
  538. var aContextIds = oSelObj.getSelectedContextIds();
  539. var sColRefId = "";
  540. if (aContextIds.length > 0 && aContextIds[0].length > 0)
  541. {
  542. var oSelController = goApplicationManager.getSelectionController();
  543. sColRefId = oSelController.getRefDataItem(aContextIds[0][0]);
  544. }
  545. return sColRefId;
  546. };
  547. function getColSpecialPropertiesFromSelectionObject(oSelObj)
  548. {
  549. oSelObj.fetchContextIds();
  550. var aContextIds = oSelObj.getSelectedContextIds();
  551. var oColSpecialProperties = {};
  552. var sLevelId = "";
  553. var sIntersectId = "";
  554. var sForcedType = "";
  555. if (aContextIds.length === 0 || oSelObj === null)
  556. {
  557. return oColSpecialProperties;
  558. }
  559. else
  560. {
  561. var sColRefId = getColRefIdFromSelectionObject(oSelObj);
  562. if (sColRefId === "")
  563. {
  564. return oColSpecialProperties;
  565. }
  566. var oMQMgr = goApplicationManager.getMiniQueryManager();
  567. if (oMQMgr === null)
  568. {
  569. return oColSpecialProperties;
  570. }
  571. var oSelController = goApplicationManager.getSelectionController();
  572. var colIdx = 0;
  573. var sColumnName = sColRefId;
  574. var oCellRef = oSelObj.getCellRef();
  575. if (typeof oCellRef == "object" && oCellRef !== null)
  576. {
  577. var sTag = oCellRef.getAttribute("tag");
  578. if (sTag !== null && sTag !== "")
  579. {
  580. for (colIdx = 0; colIdx < oMQMgr.getAllColumns().length; colIdx++)
  581. {
  582. if (sTag == oMQMgr.getTag(colIdx))
  583. {
  584. sColumnName = oMQMgr.getColumnId(colIdx);
  585. break;
  586. }
  587. }
  588. }
  589. }
  590. var bIsCrosstab = oMQMgr.hasPivottedColumns();
  591. var sCellRef = oSelObj.getCellRef();
  592. var iLastPivot = -1;
  593. if (bIsCrosstab === false && typeof sCellRef.getAttribute("qsc") == "string" && (sCellRef.getAttribute("qsc").indexOf("is") == 0 || sCellRef.getAttribute("qsc").indexOf("ss") == 0) && aContextIds[0].length > 1 && oSelController.getRefDataItem(aContextIds[0][1]))
  594. {
  595. sLevelId = oSelController.getRefDataItem(aContextIds[0][1]);
  596. }
  597. else if (bIsCrosstab === true)
  598. {
  599. for (colIdx = oMQMgr.getAllColumns().length; colIdx >= 0; colIdx--)
  600. {
  601. if (oMQMgr.isPivoted(colIdx))
  602. {
  603. iLastPivot = colIdx;
  604. break;
  605. }
  606. }
  607. if (typeof aContextIds[1] != "undefined" && aContextIds[1].length > 0 && typeof aContextIds[2] != "undefined" && aContextIds[2].length > 0)
  608. {
  609. var bIsPivot = false;
  610. var bIsInnerMeasure = false;
  611. var sLevelContext = "";
  612. var sIntersectContext = "";
  613. if (aContextIds[1].length > 1)
  614. {
  615. sLevelContext = aContextIds[1][1];
  616. }
  617. if (aContextIds[2].length > 1)
  618. {
  619. sIntersectContext = aContextIds[2][1];
  620. }
  621. if (oMQMgr.getColumnId(sColumnName) !== MINI_QUERY_NO_COLUMN_FOUND)
  622. {
  623. if (oMQMgr.isMeasure(sColumnName) && typeof sCellRef.getAttribute("qsc") == "string" && (sCellRef.getAttribute("qsc").indexOf("mv") == 0 || sCellRef.getAttribute("qsc").indexOf("ov") == 0))
  624. {
  625. bIsInnerMeasure = true;
  626. }
  627. if (oMQMgr.isPivoted(sColumnName))
  628. {
  629. bIsPivot = true;
  630. if (aContextIds[2].length > 1)
  631. {
  632. sLevelContext = aContextIds[2][1];
  633. }
  634. else
  635. {
  636. sLevelContext = "";
  637. }
  638. if (aContextIds[1].length > 1)
  639. {
  640. sIntersectContext = aContextIds[1][1];
  641. }
  642. else
  643. {
  644. sIntersectContext = "";
  645. }
  646. }
  647. }
  648. if (!bIsInnerMeasure)
  649. {
  650. if (sLevelContext && oSelController.getRefDataItem(sLevelContext))
  651. {
  652. sLevelId = oSelController.getRefDataItem(sLevelContext);
  653. }
  654. if (sIntersectContext && oSelController.getRefDataItem(sIntersectContext))
  655. {
  656. sIntersectId = oSelController.getRefDataItem(sIntersectContext);
  657. if (sIntersectId == oMQMgr.getColumnId(iLastPivot) || bIsPivot)
  658. {
  659. sIntersectId = "";
  660. }
  661. else if (sIntersectId != "")
  662. {
  663. var bFoundQuery = false;
  664. if (oMQMgr.getColumnId(sIntersectId) !== MINI_QUERY_NO_COLUMN_FOUND)
  665. {
  666. bFoundQuery = true;
  667. }
  668. if (!bFoundQuery)
  669. {
  670. sIntersectId = "";
  671. }
  672. else if (sLevelId === "")
  673. {
  674. sColumnName = sColRefId;
  675. sLevelId = sIntersectId;
  676. sIntersectId = "";
  677. sForcedType = "ColumnGroupFooterValueStyle";
  678. }
  679. }
  680. }
  681. }
  682. }
  683. if (sCellRef.getAttribute("qsc") && sColRefId)
  684. {
  685. if (sCellRef.getAttribute("qsc").indexOf("iv") == 0 || sCellRef.getAttribute("qsc").indexOf("ov") == 0)
  686. {
  687. var sMeasureId = "";
  688. if (sColumnName != sColRefId)
  689. {
  690. sMeasureId = sColRefId;
  691. }
  692. if (sLevelId == sMeasureId)
  693. {
  694. sLevelId = "";
  695. }
  696. if (sIntersectId == sMeasureId)
  697. {
  698. sIntersectId = "";
  699. }
  700. }
  701. else if (sCellRef.getAttribute("qsc").indexOf("il") == 0 || sCellRef.getAttribute("qsc").indexOf("ol") == 0)
  702. {
  703. if (oMQMgr.isMeasure(sColRefId))
  704. {
  705. sLevelId = sColumnName;
  706. sColumnName = sColRefId;
  707. }
  708. }
  709. }
  710. }
  711. if ((sLevelId !== "") && (oMQMgr.getColumnId(sLevelId) === MINI_QUERY_NO_COLUMN_FOUND))
  712. {
  713. sLevelId = "";
  714. }
  715. }
  716. if (sLevelId !== "")
  717. {
  718. oColSpecialProperties.levelId = sLevelId;
  719. }
  720. if (sIntersectId !== "")
  721. {
  722. oColSpecialProperties.intersectId = sIntersectId;
  723. }
  724. if (sForcedType !== "")
  725. {
  726. oColSpecialProperties.forcedType = sForcedType;
  727. }
  728. return oColSpecialProperties;
  729. };