// Licensed Materials - Property of IBM // IBM Cognos Products: rs // (C) Copyright IBM Corp. 2015, 2021 // US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. define(['bi/glass/app/plugins/MenuActionInterface'], function(MenuActionInterface) { 'use strict'; var AuthoringMenu = MenuActionInterface.extend({ onSelectItem: function(context) { var v_sMenuItem = context.target.itemId; var v_sObserverId = "rsAppSaveAsMenuActions"; var v_Application = context.glassContext.currentAppView.currentContentView.getAuthoringApplication(); if (!v_Application) { return; } switch( v_sMenuItem ) { case "com.ibm.bi.authoring.save_as": v_Application.SaveAsReport(); break; case "com.ibm.bi.authoring.convert_to_active_report": v_Application.ConvertToActiveReport(); break; case "com.ibm.bi.authoring.convert_to_template": v_Application.ConvertToTemplate(); break; case "com.ibm.bi.authoring.save_as_report_view": v_Application.SaveAsReportView(); break; case "com.ibm.bi.authoring.save": case "com.ibm.bi.datasets.dataset_save": var v_oCmProperties = context.glassContext.currentAppView.currentContentView.cmProperties; if (v_sMenuItem == "com.ibm.bi.authoring.save" && v_Application.SharedState.Get("isViewer") && v_oCmProperties && v_oCmProperties.permissions.indexOf("read") == -1) { // Doing save from viewer without read access - not supported since need to unstub spec // which is not possible if can't read spec. context.glassContext.showToast(v_Application.GetString("IDS_MSG_NO_PERMISSIONS_TO_SAVE"), {'type':'error'}); break; } else if (!v_oCmProperties || v_oCmProperties.permissions.indexOf("write") != -1) { // no cm permissions implies this is a new report/dataset so we need to allow save. v_Application.Save(); } else { // No write permission if (v_sMenuItem == "com.ibm.bi.authoring.save" && v_Application.SharedState.Get("isViewer") && context.glassContext.hasCapability("canUseReportStudio") && context.glassContext.hasCapability("canUseReportStudioFileManagement")) { // Doing a save from viewer - switch to save as but only if the required capabiltities are available v_Application.SaveAsReport(); } else { context.glassContext.showToast(v_Application.GetString("IDS_MSG_NO_PERMISSIONS_TO_SAVE"), {'type':'error'}); } } break; case "com.ibm.bi.datasets.refresh": v_Application.SaveDataSet(function(v_sFileName, v_sStoreID) { // options.id {string} - store ID of the dataset to run // options.name {string} - the name of the data set to execute. Will be shown in the toast // options.showToastWhenDone {boolean} - default is true, set to false if you don't want a toast to be displayed when the dataset is done running // options.glassContext {object} - the glassContext object var options = { id : v_sStoreID, name : v_sFileName, showToastWhenDone : true, glassContext : context.glassContext }; context.glassContext.getSvc('.DatasetExecutionService') .then(function(DatasetExecutionService){ DatasetExecutionService.execute(options); }); }); break; default: console.warn("Unhandled item: " + v_sMenuItem); return; } v_Application.GlassMenu_onSelectItem(v_sMenuItem); }, isItemVisible: function(context){ var v_sMenuItem = context.target.itemId; var v_Application = context.glassContext.currentAppView.currentContentView.getAuthoringApplication(); if (!v_Application) { return; } var v_oCmProperties = context.glassContext.currentAppView.currentContentView.cmProperties; var v_bRead = !v_oCmProperties || v_oCmProperties.permissions.indexOf("read") != -1; var v_bResult; switch (v_sMenuItem) { case "com.ibm.bi.authoring.save_as_report_view": v_bResult = v_Application.SharedState.Get("isViewer") && v_Application.SharedState.Get("cmSearchPath") && !v_Application.SharedState.Get("isModified"); break; case "com.ibm.bi.datasets.dataset_save": v_bResult = v_Application.SharedState.Get("isModified"); break; case "com.ibm.bi.authoring.save": v_bResult = false; // always hide save from popup since it is the default action on button break; case "com.ibm.bi.authoring.save_as": if (!(context.glassContext.hasCapability("canUseReportStudio") && context.glassContext.hasCapability("canUseReportStudioFileManagement"))) { // save as calls the report service add method which requires both the above capabilities. v_bResult = false; } else if (v_Application.SharedState.Get("isViewer")) { // Saving from viewer requires full spec which is only possible if you have read access v_bResult = v_bRead; } else { v_bResult = true; } break; case "com.ibm.bi.datasets.refresh": v_bResult = v_Application.SharedState.Get("isModified"); break; case "com.ibm.bi.authoring.convert_to_active_report": v_bResult = !v_Application.SharedState.Get("isViewer") && !v_Application.SharedState.Get("isActiveReport"); break; case "com.ibm.bi.authoring.convert_to_template": v_bResult = !v_Application.SharedState.Get("isViewer"); break; default: v_bResult = true; break; } return v_bResult; } }); return AuthoringMenu; });