ExpandCollapseMemberAction.js 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. /*
  2. *+------------------------------------------------------------------------+
  3. *| Licensed Materials - Property of IBM
  4. *| IBM Cognos Products: Viewer
  5. *| (C) Copyright IBM Corp. 2001, 2014
  6. *|
  7. *| US Government Users Restricted Rights - Use, duplication or
  8. *| disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
  9. *|
  10. *+------------------------------------------------------------------------+
  11. */
  12. function ExpandCollapseMemberAction()
  13. {
  14. this.m_sAction = "ExpandCollapseMember";
  15. this.m_sExpandCollapseType=null;
  16. this.m_RAPReportInfo = null;
  17. this.m_itemInfo = null;
  18. this.m_sPreviousDataItem = null;
  19. }
  20. ExpandCollapseMemberAction.prototype = new ModifyReportAction();
  21. ExpandCollapseMemberAction.baseclass = ModifyReportAction.prototype;
  22. ExpandCollapseMemberAction.prototype._getCanExpand = function(oSelectionObject)
  23. {
  24. var itemInfo = this._getItemInfo( oSelectionObject );
  25. return ( itemInfo && itemInfo.canExpand );
  26. };
  27. ExpandCollapseMemberAction.prototype._isExpanded = function(oSelectionObject)
  28. {
  29. var sMUN = this._getSelectedMUN(oSelectionObject);
  30. if( !sMUN )
  31. {
  32. return false;
  33. }
  34. var itemInfo = this._getItemInfo( oSelectionObject );
  35. return ( itemInfo && itemInfo.expandedMembers && itemInfo.expandedMembers[sMUN] === true );
  36. };
  37. ExpandCollapseMemberAction.prototype._getSelectedMUN = function( oSelectionObject )
  38. {
  39. var sMun = null;
  40. var aMuns = oSelectionObject.getMuns();
  41. if (aMuns && aMuns.length>0 && aMuns[0].length>0) {
  42. sMun = aMuns[0][0];
  43. }
  44. return sMun;
  45. };
  46. ExpandCollapseMemberAction.prototype._getDataItem = function( oSelectionObject )
  47. {
  48. if (!oSelectionObject) {
  49. return null;
  50. }
  51. var sDataItemName = null;
  52. var aDataItems = oSelectionObject.getDataItems();
  53. if (aDataItems && aDataItems.length>0 && aDataItems[0].length>0) {
  54. sDataItemName = aDataItems[0][0];
  55. }
  56. return sDataItemName;
  57. };
  58. ExpandCollapseMemberAction.prototype._getItemInfo = function(selObj)
  59. {
  60. var sDataItem= this._getDataItem(selObj);
  61. if (!sDataItem ) {
  62. return null;
  63. }
  64. var sContainerLID = this.removeNamespace( selObj.getLayoutElementId() );
  65. this.m_RAPReportInfo = this.m_oCV.getRAPReportInfo();
  66. this.m_itemInfo = this.m_RAPReportInfo.getItemInfo( sContainerLID, sDataItem );
  67. this.m_sPreviousDataItem = sDataItem;
  68. return this.m_itemInfo;
  69. };
  70. ExpandCollapseMemberAction.prototype._alwaysCanExpandCollapse = function(selObj)
  71. {
  72. var itemInfo = this._getItemInfo(selObj);
  73. return ( itemInfo && itemInfo.alwaysCanExpandCollapse );
  74. };
  75. ExpandCollapseMemberAction.prototype._canShowMenu = function(oSectionController)
  76. {
  77. var selObj = this._getFirstSelectedObject(oSectionController);
  78. return (selObj && this._hasMUN(selObj) && this._isCrosstab(selObj) && this._isOnEdge(selObj) && !oSectionController.areSelectionsMeasureOrCalculation());
  79. };
  80. ExpandCollapseMemberAction.prototype._getCtxId = function(selObj)
  81. {
  82. var cellRef = selObj.getCellRef();
  83. if (cellRef && cellRef.getAttribute) {
  84. var ctxValue = cellRef.getAttribute("ctx");
  85. if (ctxValue) {
  86. ctxValue = ctxValue.split("::")[0].split(":")[0];
  87. return ctxValue;
  88. }
  89. }
  90. return "";
  91. };
  92. ExpandCollapseMemberAction.prototype._hasMUN = function(selObj)
  93. {
  94. var aMuns = selObj.getMuns();
  95. return aMuns.length>0 ? true : false;
  96. };
  97. ExpandCollapseMemberAction.prototype._isCrosstab = function(selObj)
  98. {
  99. return selObj.getDataContainerType() === 'crosstab' ? true : false;
  100. };
  101. ExpandCollapseMemberAction.prototype._isOnEdge = function(selObj)
  102. {
  103. return selObj.getLayoutType() === 'columnTitle' ? true : false;
  104. };
  105. ExpandCollapseMemberAction.prototype.keepRAPCache = function()
  106. {
  107. return false;
  108. };
  109. ExpandCollapseMemberAction.prototype.updateMenu = function(jsonSpec)
  110. {
  111. var oSectionController = this.m_oCV.getSelectionController();
  112. jsonSpec.visible = this._canShowMenu(oSectionController);
  113. if (! jsonSpec.visible)
  114. {
  115. return jsonSpec;
  116. }
  117. jsonSpec.disabled = !this._canEnableMenu(oSectionController);
  118. return jsonSpec;
  119. };
  120. ExpandCollapseMemberAction.prototype._canEnableMenu = function(oSectionController) {return true;};
  121. ExpandCollapseMemberAction.prototype._getFirstSelectedObject = function(oSectionController)
  122. {
  123. var selectedObjects = oSectionController.getAllSelectedObjects();
  124. if (selectedObjects.length>0) {
  125. return selectedObjects[0]; //use the first object
  126. }
  127. return null;
  128. };
  129. ExpandCollapseMemberAction.prototype._isSingleSelection = function(oSectionController)
  130. {
  131. var selectedObjects = oSectionController.getAllSelectedObjects();
  132. return (selectedObjects.length === 1);
  133. };
  134. ExpandCollapseMemberAction.prototype.addActionContextAdditionalParms = function()
  135. {
  136. var oSelectionController = this.getCognosViewer().getSelectionController();
  137. var selObj = this._getFirstSelectedObject(oSelectionController);
  138. var sPUN = oSelectionController.getPun(this._getCtxId(selObj))
  139. if( sPUN )
  140. {
  141. sPUN = "<PUN>" + sXmlEncode(sPUN) + "</PUN>";
  142. }
  143. var sType="";
  144. if (this.m_sExpandCollapseType) {
  145. //For now, ExpandMember or CollapseMember
  146. sType = "<ExpandCollapseType>" + this.m_sExpandCollapseType + "</ExpandCollapseType>";
  147. }
  148. return this.getSelectedCellTags() + sPUN + sType;
  149. };