123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 |
- "use strict";
- /**
- * Licensed Materials - Property of IBM
- * IBM Cognos Products: Cognos Analytics
- * Copyright IBM Corp. 2015, 2017
- * US Government Users Restricted Rights - Use, duplication or disclosure
- * restricted by GSA ADP Schedule Contract with IBM Corp.
- */
- 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) {
- 'use strict'; //NOSONAR: meant to be strict
- var ActionHandler = Class.extend({
- init: function init(options) {
- ActionHandler.inherited('init', this, arguments);
- this._initSchemaStatusMap();
- },
- _initSchemaStatusMap: function _initSchemaStatusMap() {
- this._schemaStatusMap = [];
- this._schemaStatusMap.push({
- context: 'schema_load',
- status: ['loaded', 'not_loaded', 'error']
- });
- this._schemaStatusMap.push({
- context: 'schema_clear',
- status: ['loaded', 'loading', 'pending', 'error']
- });
- this._schemaStatusMap.push({
- context: 'schema_cancel',
- status: ['executing', 'pending', 'loading']
- });
- this._schemaStatusMap.push({
- context: 'schema_options',
- status: ['loaded', 'not_loaded', 'error']
- });
- this._schemaStatusMap.push({
- context: 'schema_history',
- status: ['loaded', 'error', 'executing', 'pending', 'loading']
- });
- },
- _determineVisibilitySchemaStatus: function _determineVisibilitySchemaStatus(itemId, data, parentView) {
- var visible = false;
- var statusMap = _.find(this._schemaStatusMap, function (mapItem) {
- return mapItem.context === itemId;
- });
- data.forEach(function (d) {
- if (_.contains(statusMap.status, parentView._isLoadingStatusCheck(d.id, d.status))) {
- visible = true;
- }
- }.bind(this));
- return visible;
- },
- isContextMenuItemVisible: function isContextMenuItemVisible(itemId, data, parentView) {
- var visible = true;
- if (itemId === 'datasource_delete' && !data.writable) {
- visible = false;
- }
- if (itemId.indexOf('schema_') > -1) {
- visible = this._determineVisibilitySchemaStatus(itemId, data, parentView);
- } // Don't show the schema history menu item when multiple schema items are selected
- if (itemId === 'schema_history' && data.length > 1) {
- visible = false;
- }
- if (itemId === 'cubes_createModule' && data.length > 1) {
- visible = false;
- }
- if (itemId === 'connection_delete' && !data.writable) {
- visible = false;
- }
- return visible;
- },
- onContextMenu: function onContextMenu(id, data, parentView) {
- var dfd;
- switch (id) {
- case 'schema_load':
- dfd = parentView.loadSchemaAction(data);
- break;
- case 'schema_options':
- dfd = parentView.ShowSchemaLoadOptions(data, 'loadOptions');
- break;
- case 'schema_clear':
- dfd = parentView.confirmClearSchemaAction(data);
- break;
- case 'schema_cancel':
- dfd = parentView.cancelSchemaAction(data);
- break;
- case 'cubes_createModule':
- dfd = parentView.createModule(data);
- break;
- case 'datasource_delete':
- dfd = parentView.doDelete(data);
- break;
- case 'property':
- dfd = parentView.doSetProperties(data);
- break;
- case 'connection_delete':
- parentView.deleteConnection(data);
- break;
- case 'connection_property':
- parentView.showDataConnectionProperty(data);
- break;
- default:
- this.logger.error("Unexpected context menu id: " + id);
- dfd = Promise.resolve();
- break;
- }
- return dfd;
- }
- });
- return ActionHandler;
- });
|