ActionHandler.js 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. "use strict";
  2. /**
  3. * Licensed Materials - Property of IBM
  4. * IBM Cognos Products: Cognos Analytics
  5. * Copyright IBM Corp. 2015, 2017
  6. * US Government Users Restricted Rights - Use, duplication or disclosure
  7. * restricted by GSA ADP Schedule Contract with IBM Corp.
  8. */
  9. define(['underscore', 'bi/commons/ui/core/Class', 'bi/admin/datasource/App', 'bi/admin/nls/StringResource', 'bi/admin/common/dialog/SimpleDialog'], function (_, Class, App, StringResource, SimpleDialog) {
  10. 'use strict'; //NOSONAR: meant to be strict
  11. var ActionHandler = Class.extend({
  12. init: function init(options) {
  13. ActionHandler.inherited('init', this, arguments);
  14. this._initSchemaStatusMap();
  15. },
  16. _initSchemaStatusMap: function _initSchemaStatusMap() {
  17. this._schemaStatusMap = [];
  18. this._schemaStatusMap.push({
  19. context: 'schema_load',
  20. status: ['loaded', 'not_loaded', 'error']
  21. });
  22. this._schemaStatusMap.push({
  23. context: 'schema_clear',
  24. status: ['loaded', 'loading', 'pending', 'error']
  25. });
  26. this._schemaStatusMap.push({
  27. context: 'schema_cancel',
  28. status: ['executing', 'pending', 'loading']
  29. });
  30. this._schemaStatusMap.push({
  31. context: 'schema_options',
  32. status: ['loaded', 'not_loaded', 'error']
  33. });
  34. this._schemaStatusMap.push({
  35. context: 'schema_history',
  36. status: ['loaded', 'error', 'executing', 'pending', 'loading']
  37. });
  38. },
  39. _determineVisibilitySchemaStatus: function _determineVisibilitySchemaStatus(itemId, data, parentView) {
  40. var visible = false;
  41. var statusMap = _.find(this._schemaStatusMap, function (mapItem) {
  42. return mapItem.context === itemId;
  43. });
  44. data.forEach(function (d) {
  45. if (_.contains(statusMap.status, parentView._isLoadingStatusCheck(d.id, d.status))) {
  46. visible = true;
  47. }
  48. }.bind(this));
  49. return visible;
  50. },
  51. isContextMenuItemVisible: function isContextMenuItemVisible(itemId, data, parentView) {
  52. var visible = true;
  53. if (itemId === 'datasource_delete' && !data.writable) {
  54. visible = false;
  55. }
  56. if (itemId.indexOf('schema_') > -1) {
  57. visible = this._determineVisibilitySchemaStatus(itemId, data, parentView);
  58. } // Don't show the schema history menu item when multiple schema items are selected
  59. if (itemId === 'schema_history' && data.length > 1) {
  60. visible = false;
  61. }
  62. if (itemId === 'cubes_createModule' && data.length > 1) {
  63. visible = false;
  64. }
  65. if (itemId === 'connection_delete' && !data.writable) {
  66. visible = false;
  67. }
  68. return visible;
  69. },
  70. onContextMenu: function onContextMenu(id, data, parentView) {
  71. var dfd;
  72. switch (id) {
  73. case 'schema_load':
  74. dfd = parentView.loadSchemaAction(data);
  75. break;
  76. case 'schema_options':
  77. dfd = parentView.ShowSchemaLoadOptions(data, 'loadOptions');
  78. break;
  79. case 'schema_clear':
  80. dfd = parentView.confirmClearSchemaAction(data);
  81. break;
  82. case 'schema_cancel':
  83. dfd = parentView.cancelSchemaAction(data);
  84. break;
  85. case 'cubes_createModule':
  86. dfd = parentView.createModule(data);
  87. break;
  88. case 'datasource_delete':
  89. dfd = parentView.doDelete(data);
  90. break;
  91. case 'property':
  92. dfd = parentView.doSetProperties(data);
  93. break;
  94. case 'connection_delete':
  95. parentView.deleteConnection(data);
  96. break;
  97. case 'connection_property':
  98. parentView.showDataConnectionProperty(data);
  99. break;
  100. default:
  101. this.logger.error("Unexpected context menu id: " + id);
  102. dfd = Promise.resolve();
  103. break;
  104. }
  105. return dfd;
  106. }
  107. });
  108. return ActionHandler;
  109. });