FreezeColumnHeadingsAction.js 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  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 FreezeColumnHeadingsAction()
  13. {
  14. }
  15. FreezeColumnHeadingsAction.prototype = new UndoableClientActionBase();
  16. FreezeColumnHeadingsAction.superclass = UndoableClientActionBase.prototype;
  17. FreezeColumnHeadingsAction.prototype.execute = function()
  18. {
  19. var lidToFreeze = this.m_sContainerId ? this.m_sContainerId : this.getSelectedCrosstabOrListContainerId();
  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().freezeContainerColumnHeadings(lidToFreeze);
  25. this.addClientSideUndo(this, [lidToFreeze]);
  26. }
  27. };
  28. FreezeColumnHeadingsAction.prototype.getUndoHint = function()
  29. {
  30. return RV_RES.IDS_JS_FREEZECOLUMNHEADINGS;
  31. };
  32. FreezeColumnHeadingsAction.prototype.getUndoClass = function()
  33. {
  34. return "UnfreezeColumnHeadings";
  35. };
  36. FreezeColumnHeadingsAction.prototype.getSelectedCrosstabOrListContainerLid = function()
  37. {
  38. var selectedObjects = this.m_oCV.getSelectionController().getAllSelectedObjects();
  39. if (selectedObjects && selectedObjects.length &&
  40. (selectedObjects[0].getDataContainerType() == "crosstab" ||
  41. selectedObjects[0].getDataContainerType() == "list")) {
  42. var lid=(selectedObjects[0].getLayoutElementId());
  43. if (lid) {
  44. return lid;
  45. }
  46. }
  47. return null;
  48. };
  49. /**
  50. * return the selected container id (without namespace) if it is valid for pin freeze Columns (ie: its a crosstab)
  51. */
  52. FreezeColumnHeadingsAction.prototype.getSelectedCrosstabOrListContainerId = function()
  53. {
  54. var lid = this.getSelectedCrosstabOrListContainerLid();
  55. if (lid) {
  56. return this.removeNamespace(lid);
  57. }
  58. return null;
  59. };
  60. /**
  61. * Column headings can be frozen if the layout type is right and the Column headings aren't already frozen.
  62. */
  63. FreezeColumnHeadingsAction.prototype.canFreezeColumnHeadings = function()
  64. {
  65. var pfManager = this.m_oCV.getPinFreezeManager();
  66. if (pfManager) {
  67. var containerId=this.getSelectedCrosstabOrListContainerId();
  68. if (containerId) {
  69. if(!pfManager.hasFrozenColumnHeadings(containerId) && pfManager.getValidSelectedContainerId(true)) {
  70. return true;
  71. }
  72. }
  73. return false;
  74. }
  75. };
  76. FreezeColumnHeadingsAction.prototype.updateMenu = function(jsonSpec)
  77. {
  78. jsonSpec.visible = this.canFreezeColumnHeadings();
  79. return jsonSpec;
  80. };