FreezeRowHeadingsAction.js 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. /*
  2. *+------------------------------------------------------------------------+
  3. *| Licensed Materials - Property of IBM
  4. *| IBM Cognos Products: Viewer
  5. *| (C) Copyright IBM Corp. 2013
  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 FreezeRowHeadingsAction()
  13. {
  14. }
  15. FreezeRowHeadingsAction.prototype = new UndoableClientActionBase();
  16. FreezeRowHeadingsAction.superclass = UndoableClientActionBase.prototype;
  17. FreezeRowHeadingsAction.prototype.execute = function()
  18. {
  19. var lidToFreeze = this.m_sContainerId? this.m_sContainerId : this.getSelectedCrosstabContainerId();
  20. if (lidToFreeze) {
  21. //Selection borders in high contrast mode aren't cleaned up properly when cloned,
  22. //so remove all selections before performing freeze
  23. this.m_oCV.getSelectionController().resetSelections();
  24. this.m_oCV.getPinFreezeManager().freezeContainerRowHeadings(lidToFreeze);
  25. this.addClientSideUndo(this, [lidToFreeze]);
  26. }
  27. };
  28. FreezeRowHeadingsAction.prototype.getUndoHint = function()
  29. {
  30. return RV_RES.IDS_JS_FREEZEROWHEADINGS;
  31. };
  32. FreezeRowHeadingsAction.prototype.getUndoClass = function()
  33. {
  34. return "UnfreezeRowHeadings";
  35. };
  36. FreezeRowHeadingsAction.prototype.getSelectedCrosstabContainerLid = function()
  37. {
  38. var selectedObjects = this.m_oCV.getSelectionController().getAllSelectedObjects();
  39. if (selectedObjects && selectedObjects.length && selectedObjects[0].getDataContainerType() == "crosstab") {
  40. var lid=(selectedObjects[0].getLayoutElementId());
  41. if (lid) {
  42. return lid;
  43. }
  44. }
  45. return null;
  46. };
  47. /**
  48. * return the selected container id (without namespace) if it is valid for pin freeze rows (ie: its a crosstab)
  49. */
  50. FreezeRowHeadingsAction.prototype.getSelectedCrosstabContainerId = function()
  51. {
  52. var lid = this.getSelectedCrosstabContainerLid();
  53. if (lid) {
  54. return this.removeNamespace(lid);
  55. }
  56. return null;
  57. };
  58. /**
  59. * row headings can be frozen if the layout type is right and the row headings aren't already frozen.
  60. */
  61. FreezeRowHeadingsAction.prototype.canFreezeRowHeadings = function()
  62. {
  63. var pfManager = this.m_oCV.getPinFreezeManager();
  64. if (pfManager) {
  65. var containerId=this.getSelectedCrosstabContainerId();
  66. if (containerId) {
  67. if(!pfManager.hasFrozenRowHeadings(containerId) && pfManager.getValidSelectedContainerId(false)) {
  68. return true;
  69. }
  70. }
  71. }
  72. return false;
  73. };
  74. FreezeRowHeadingsAction.prototype.updateMenu = function(jsonSpec)
  75. {
  76. jsonSpec.visible = this.canFreezeRowHeadings();
  77. return jsonSpec;
  78. };