"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; });