InvokeChangeDisplayTypeDialogAction.js 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. /*
  2. *+------------------------------------------------------------------------+
  3. *| Licensed Materials - Property of IBM
  4. *| IBM Cognos Products: Viewer
  5. *| (C) Copyright IBM Corp. 2001, 2012
  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 InvokeChangeDisplayTypeDialogAction(){}
  13. InvokeChangeDisplayTypeDialogAction.prototype = new CognosViewerAction();
  14. InvokeChangeDisplayTypeDialogAction.prototype.execute = function() {
  15. var viewer = this.getCognosViewer();
  16. var selectedObject = this.getSelectedReportInfo();
  17. if(selectedObject)
  18. {
  19. var viewerWidget = viewer.getViewerWidget();
  20. var bGetInfoOnServer = false;
  21. if (selectedObject.suggestedDisplayTypesEnabled == true) {
  22. bGetInfoOnServer = (typeof selectedObject.possibleDisplayTypes == "undefined") || (typeof selectedObject.suggestedDisplayTypes == "undefined")? true : false;
  23. } else {
  24. bGetInfoOnServer = (typeof selectedObject.possibleDisplayTypes == "undefined");
  25. }
  26. if (bGetInfoOnServer)
  27. {
  28. var asynchRequest = new AsynchJSONDispatcherEntry(this.m_oCV);
  29. asynchRequest.setCallbacks({
  30. "complete": {"object": this, "method": this.handleResponse}
  31. });
  32. asynchRequest.setRequestIndicator(viewer.getRequestIndicator());
  33. asynchRequest.addFormField("ui.action", "getInfoFromReportSpec");
  34. asynchRequest.addFormField("bux", "true");
  35. asynchRequest.addNonEmptyStringFormField("modelPath", this.m_oCV.getModelPath());
  36. asynchRequest.addFormField("ui.object", this.m_oCV.envParams["ui.object"]);
  37. asynchRequest.addDefinedFormField("ui.spec", this.m_oCV.envParams["ui.spec"]);
  38. asynchRequest.addFormField("cv.actionContext", this.addActionContext());
  39. asynchRequest.addFormField("ui.conversation", encodeURIComponent(this.m_oCV.getConversation()));
  40. viewer.dispatchRequest(asynchRequest);
  41. }
  42. else
  43. {
  44. viewerWidget.invokeDisplayTypeDialog(selectedObject.possibleDisplayTypes,selectedObject.suggestedDisplayTypes );
  45. }
  46. }
  47. };
  48. InvokeChangeDisplayTypeDialogAction.prototype.handleResponse = function(asynchJSONResponse)
  49. {
  50. var viewer = this.getCognosViewer();
  51. var viewerWidget = viewer.getViewerWidget();
  52. var reportInfos = asynchJSONResponse.getResult();
  53. for ( var i in reportInfos.containers)
  54. {
  55. var selectedReportInfo = this.getReportInfo(reportInfos.containers[i].container);
  56. selectedReportInfo.possibleDisplayTypes = reportInfos.containers[i].possibleDisplayTypes;
  57. selectedReportInfo.suggestedDisplayTypes = reportInfos.containers[i].suggestedDisplayTypes;
  58. }
  59. var selectedObject = this.getSelectedReportInfo();
  60. viewerWidget.invokeDisplayTypeDialog(selectedObject.possibleDisplayTypes,selectedObject.suggestedDisplayTypes);
  61. };
  62. InvokeChangeDisplayTypeDialogAction.prototype.addActionContext = function()
  63. {
  64. var actionContext = "<getInfoActions>";
  65. actionContext += "<getInfoAction name=\"GetInfo\">";
  66. actionContext += "<include><possibleDisplayTypes/></include>";
  67. actionContext += "<include><suggestedDisplayTypes/></include>";
  68. actionContext += this.getDataItemInfoMap();;
  69. actionContext += this.addClientContextData(/*maxValuesPerRDI*/3);
  70. actionContext += "</getInfoAction>";
  71. actionContext += "</getInfoActions>";
  72. return actionContext;
  73. };
  74. InvokeChangeDisplayTypeDialogAction.prototype.updateMenu = function(jsonSpec)
  75. {
  76. var oRAPReportInfo = this.getCognosViewer().getRAPReportInfo();
  77. jsonSpec.visible = oRAPReportInfo.containsInteractiveDataContainer();
  78. if (! jsonSpec.visible)
  79. {
  80. return jsonSpec;
  81. }
  82. var reportInfo = this.getSelectedReportInfo();
  83. jsonSpec.disabled = (reportInfo == null || reportInfo.displayTypeId == null || !this.isInteractiveDataContainer(reportInfo.displayTypeId));
  84. if (jsonSpec.disabled)
  85. {
  86. jsonSpec.iconClass = "chartTypesDisabled";
  87. return jsonSpec;
  88. }
  89. jsonSpec.iconClass = "chartTypes";
  90. return jsonSpec;
  91. };