ScheduleManagementContextMenu.js 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. "use strict";
  2. /*
  3. * Licensed Materials - Property of IBM
  4. *
  5. * IBM Cognos Products: ADMIN
  6. *
  7. * (C) Copyright IBM Corp. 2015, 2016
  8. *
  9. * US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
  10. */
  11. define(['bi/glass/core/Class', 'bi/admin/nls/StringResource', 'bi/schedule/service/service'], function (Class, StringResource, shareService) {
  12. 'use strict';
  13. var ContextMenuButtonView = Class.extend({
  14. shareService: shareService,
  15. onSelectItem: function onSelectItem(context) {
  16. var options = {
  17. context: context,
  18. launchPoint: context.target.plugin.activeObject.currentTarget
  19. };
  20. var idTokens = context.target.itemId.split('.');
  21. var key = idTokens[idTokens.length - 1];
  22. if (key === "update") {
  23. this._updateSubscriptionMenuItem(options);
  24. } else if (key === "versions") {
  25. this._viewVersionsOfSubscriptionMenuItem(options);
  26. } else if (key === "delete") {
  27. this._deleteSubscriptionMenuItem(options);
  28. }
  29. },
  30. isItemVisible: function isItemVisible(context) {
  31. /* var idTokens = context.target.itemId.split('.');
  32. var key = idTokens[idTokens.length - 1];
  33. if(key === "update" || key === "versions" || key === "delete") {
  34. return true;
  35. } else {
  36. return false;
  37. }*/
  38. return true;
  39. },
  40. _showSubscriptionPane: function _showSubscriptionPane(glassContext, descriptor, launchPoint, callback) {
  41. var content = {
  42. 'module': 'bi/schedule/views/SubscriptionView',
  43. 'glassContext': glassContext,
  44. 'descriptor': descriptor
  45. };
  46. if (callback !== undefined) {
  47. content.callback = callback;
  48. }
  49. glassContext.appController.showSlideOut({
  50. 'position': 'right',
  51. 'content': content,
  52. 'width': "400px",
  53. 'enableTabLooping': true,
  54. 'label': StringResource.get('subscription_header_region'),
  55. 'launchPoint': launchPoint
  56. });
  57. },
  58. _updateSubscriptionMenuItem: function _updateSubscriptionMenuItem(options) {
  59. var subscriptionId = options.context.target.activeObject.subscriptionId;
  60. var updateCallback = options.context.target.activeObject.updateCallback;
  61. this.shareService.getSubscriptionDetails(subscriptionId, options.context.glassContext).then(function (data) {
  62. this._showSubscriptionPane(options.context.glassContext, data, options.launchPoint, {
  63. onUpdate: updateCallback
  64. });
  65. }.bind(this));
  66. },
  67. _showVersionsPane: function _showVersionsPane(glassContext, properties, launchPoint) {
  68. var content = {
  69. 'module': 'bi/content_apps/VersionsView',
  70. 'glassContext': glassContext,
  71. 'objectInformation': properties.data[0]
  72. };
  73. glassContext.appController.showSlideOut({
  74. 'position': 'right',
  75. 'content': content,
  76. 'width': '350px',
  77. 'enableTabLooping': true,
  78. 'label': StringResource.get('schedule_subscription_version_aria_label'),
  79. 'launchPoint': launchPoint
  80. });
  81. },
  82. _viewVersionsOfSubscriptionMenuItem: function _viewVersionsOfSubscriptionMenuItem(options) {
  83. var subscriptionId = options.context.target.activeObject.subscriptionId;
  84. this.shareService.getObjectProperties(subscriptionId, options.context.glassContext).then(function (properties) {
  85. this._showVersionsPane(options.context.glassContext, properties, options.launchPoint);
  86. }.bind(this));
  87. },
  88. _deleteSubscriptionMenuItem: function _deleteSubscriptionMenuItem(options) {
  89. var subscriptionId = options.context.target.activeObject.subscriptionId;
  90. var deleteCallbacks = options.context.target.activeObject.deleteCallbacks;
  91. var $subscriptionRow = $(options.context.target.activeObject.currentTarget).closest('tr');
  92. var deleteOptions = {
  93. subscriptionId: subscriptionId,
  94. pending: true
  95. };
  96. if (options.context.glassContext.services.userProfile.preferences.accessibilityFeatures) {
  97. options.context.glassContext.appController.showMessage(StringResource.get('delete_subscription_confirm_message'), StringResource.get('delete_confirm'), 'info', ['ok', 'cancel'], undefined, function (evt) {
  98. if (evt.btn === 'ok') {
  99. deleteCallbacks.hideRow($subscriptionRow).done(function () {
  100. deleteCallbacks.complete(deleteOptions);
  101. }); //set focus to "Enabled" table header
  102. $("table.subscriptions_list_table thead tr th").eq(0).focus();
  103. } else {
  104. //set the focus back to the chevron that was clicked
  105. $(options.launchPoint).focus();
  106. }
  107. }.bind(this));
  108. } else {
  109. deleteCallbacks.hideRow($subscriptionRow); //set focus to "Enabled" table header
  110. $("table.subscriptions_list_table thead tr th").eq(0).focus();
  111. options.context.glassContext.appController.showToast(StringResource.get('delete_sub_message'), {
  112. 'type': 'info',
  113. 'btnLabel': StringResource.get('delete_undo'),
  114. 'callback': function callback() {
  115. deleteOptions.pending = false;
  116. deleteCallbacks.undoDelete($subscriptionRow);
  117. },
  118. 'newestOnTop': true,
  119. 'preventDuplicates': false,
  120. 'timeOut': 6000,
  121. 'extendedTimeOut': 1000,
  122. 'onHidden': function onHidden() {
  123. deleteCallbacks.complete(deleteOptions);
  124. }
  125. });
  126. }
  127. }
  128. });
  129. return ContextMenuButtonView;
  130. });