WatchNewVersionsAction.js 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. /*
  2. *+------------------------------------------------------------------------+
  3. *| Licensed Materials - Property of IBM
  4. *| IBM Cognos Products: Viewer
  5. *| (C) Copyright IBM Corp. 2001, 2011
  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 WatchNewVersionsAction()
  13. {
  14. this.m_requestParms = {subAction:""};
  15. }
  16. WatchNewVersionsAction.prototype = new CognosViewerAction();
  17. WatchNewVersionsAction.prototype.setRequestParms = function(requestParms)
  18. {
  19. this.m_requestParms = requestParms;
  20. };
  21. WatchNewVersionsAction.prototype.execute = function()
  22. {
  23. var subscriptionManager = this.m_oCV.getSubscriptionManager();
  24. switch(this.m_requestParms.subAction)
  25. {
  26. case "loadMenu":
  27. this.loadMenu(this.m_requestParms.contextMenu);
  28. break;
  29. case "close":
  30. this.closeMenu();
  31. break;
  32. case "DeleteNotification":
  33. subscriptionManager.DeleteNotification();
  34. break;
  35. case "AddNotification":
  36. subscriptionManager.AddNotification();
  37. break;
  38. case "NewSubscription":
  39. subscriptionManager.NewSubscription();
  40. break;
  41. case "ModifySubscription":
  42. subscriptionManager.ModifySubscription(this.m_requestParms.subscriptionId);
  43. break;
  44. case "DeleteSubscription":
  45. subscriptionManager.DeleteSubscription(this.m_requestParms.subscriptionId);
  46. break;
  47. }
  48. };
  49. WatchNewVersionsAction.prototype.closeMenu = function() {
  50. var buttonSpec = this.m_oCV.findToolbarItem("WatchNewVersions");
  51. this.resetMenu(buttonSpec);
  52. var viewerString = getCognosViewerObjectRefAsString(this.m_oCV.getId());
  53. // we need to do a set time to let the original menu destroy itself before we go and create a new one
  54. setTimeout(viewerString + ".getViewerWidget().fireEvent(\"com.ibm.bux.widgetchrome.toolbar.update\", null, [" + viewerString + ".findToolbarItem(\"WatchNewVersions\")]);", 1);
  55. };
  56. WatchNewVersionsAction.prototype.resetMenu = function(jsonSpec) {
  57. jsonSpec.open = false;
  58. jsonSpec.action = {name: "WatchNewVersions", payload: {subAction:"loadMenu", contextMenu:false}};
  59. jsonSpec.closeAction = null;
  60. var menuItems = [];
  61. menuItems.push({ name: "loadng", label: RV_RES.GOTO_LOADING, iconClass: "loading"});
  62. jsonSpec.items = menuItems;
  63. };
  64. WatchNewVersionsAction.prototype.updateMenu = function(jsonSpec)
  65. {
  66. var items = jsonSpec.items;
  67. var subscriptionManager = this.m_oCV.getSubscriptionManager();
  68. // context menu won't have any items
  69. if (!items || items.length === 0){
  70. jsonSpec.visible = subscriptionManager.CanCreateNewWatchRule();
  71. jsonSpec.disabled = !(subscriptionManager.IsValidSelectionForNewRule());
  72. }
  73. else {
  74. // we always want to repopulate the toolbar menu, so reset it every time updaetMenu gets called
  75. this.resetMenu(jsonSpec);
  76. }
  77. return jsonSpec;
  78. };
  79. WatchNewVersionsAction.prototype.loadMenu = function(contextMenu)
  80. {
  81. var subscriptionManager = this.m_oCV.getSubscriptionManager();
  82. var cvId = this.m_oCV.getId();
  83. var oCV = this.m_oCV;
  84. var request = new JSONDispatcherEntry(oCV);
  85. request.addFormField("ui.action", "getSubscriptionInfo");
  86. request.addFormField("cv.responseFormat", "subscriptionManager");
  87. request.addFormField("contextMenu", contextMenu == true ? "true" : "false");
  88. subscriptionManager.addCommonFormFields(request, "");
  89. request.setCallbacks({"complete":{"object":this, "method":this.openSubscriptionMenuResponse}});
  90. oCV.dispatchRequest(request);
  91. };
  92. WatchNewVersionsAction.prototype.openSubscriptionMenuResponse = function(response)
  93. {
  94. var subscriptionManager = this.m_oCV.getSubscriptionManager();
  95. subscriptionManager.Initialize(response);
  96. var menuItems = [];
  97. // Clear the menu
  98. subscriptionManager.ClearSubscriptionMenu();
  99. var bAddSeperator = false;
  100. if ( subscriptionManager.CanGetNotified() )
  101. {
  102. if (subscriptionManager.m_sQueryNotificationResponse == 'on')
  103. {
  104. menuItems.push({ name: "DeleteNotification", label: RV_RES.RV_DO_NOT_ALERT_NEW_VERSION, iconClass: "deleteNotification", action: { name: "WatchNewVersions", payload: {subAction:"DeleteNotification"} }, items: null });
  105. bAddSeperator = true;
  106. }
  107. else if (subscriptionManager.m_sQueryNotificationResponse == 'off' && subscriptionManager.m_sEmail != "")
  108. {
  109. menuItems.push({ name: "AddNotification", label: RV_RES.RV_ALERT_NEW_VERSION, iconClass: "addNotification", action: { name: "WatchNewVersions", payload: {subAction:"AddNotification"} }, items: null });
  110. bAddSeperator = true;
  111. }
  112. }
  113. if (subscriptionManager.CanCreateNewWatchRule())
  114. {
  115. if (bAddSeperator)
  116. {
  117. menuItems.push({separator: true});
  118. }
  119. var newSubScriptionMenuItem = { name: "NewSubscription", label: RV_RES.RV_NEW_WATCH_RULE, iconClass: "newSubscription", action: { name: "WatchNewVersions", payload: {subAction:"NewSubscription"} }, items: null };
  120. if (!subscriptionManager.IsValidSelectionForNewRule())
  121. {
  122. newSubScriptionMenuItem.disabled = true;
  123. }
  124. menuItems.push(newSubScriptionMenuItem);
  125. bAddSeperator = true;
  126. }
  127. var sBlacklist = "";
  128. if (typeof this.m_oCV.UIBlacklist != "undefined")
  129. {
  130. sBlacklist = this.m_oCV.UIBlacklist;
  131. }
  132. //iterate through existing subscriptions
  133. if (sBlacklist.indexOf(' RV_TOOLBAR_BUTTONS_RULES ') == -1)
  134. {
  135. if ( subscriptionManager.m_aWatchRules && subscriptionManager.m_aWatchRules.length > 0)
  136. {
  137. if (bAddSeperator)
  138. {
  139. menuItems.push({separator: true});
  140. }
  141. var bCanModifyWatchRules = subscriptionManager.CanModifyWatchRule();
  142. for(var sub = 0; sub < subscriptionManager.m_aWatchRules.length; ++sub)
  143. {
  144. var menu = { name: "WatchRule" + sub, label: subscriptionManager.m_aWatchRules[sub].name, iconClass: "watchRule", action: null, items: [] };
  145. if (bCanModifyWatchRules && sBlacklist.indexOf(' RV_TOOLBAR_BUTTONS_RULES_MODIFY ') == -1)
  146. {
  147. menu.items.push({ name: "ModifySubscription" + sub, label: RV_RES.RV_MODIFY_WATCH_RULE, iconClass: "modifySubscription", action: { name: "WatchNewVersions", payload: {subAction:"ModifySubscription", subscriptionId:sub} }, items: null });
  148. }
  149. if (sBlacklist.indexOf(' RV_TOOLBAR_BUTTONS_RULES_DELETE ') == -1)
  150. {
  151. menu.items.push({ name: "DeleteSubscription" + sub, label: RV_RES.RV_DELETE_WATCH_RULE, iconClass: "deleteSubscription", action: { name: "WatchNewVersions", payload: {subAction:"DeleteSubscription", subscriptionId:sub} }, items: null });
  152. }
  153. menuItems.push(menu);
  154. }
  155. }
  156. }
  157. if (menuItems.length === 0)
  158. {
  159. menuItems.push({ name: "NoWatchRules", label: RV_RES.RV_NO_WATCH_RULES, iconClass: "", action: null, items: null, disabled:true });
  160. }
  161. var buttonSpec = this.m_oCV.findToolbarItem("WatchNewVersions");
  162. if (buttonSpec) {
  163. buttonSpec.items = menuItems;
  164. buttonSpec.action = null;
  165. buttonSpec.open = true;
  166. buttonSpec.closeAction = { name: "WatchNewVersions", payload: {subAction:"close"} };
  167. var updateItems = [];
  168. updateItems.push(buttonSpec);
  169. this.m_oCV.getViewerWidget().fireEvent("com.ibm.bux.widgetchrome.toolbar.update", null, updateItems);
  170. }
  171. };