/* * Licensed Materials - Property of IBM * * IBM Cognos Products: Modeling UI * * Copyright IBM Corp. 2017, 2021 * * US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. */ define( ['bi/glass/core/Class', '../StringResourcesBridge', '../FileUploadBridge'], function (BaseClass, Resources, FileUploader) { var fileUploader; var APPEND_ITEM_ID = 'com.ibm.bi.ca-uploadModeller.ca-modeller-glass-upload-append' ; var UploadActionHandler = BaseClass.extend({ init: function () { UploadActionHandler.inherited('init', this, arguments); }, initialize: function(context) { var providers = context.controllerConfig && context.controllerConfig.providers; if (!fileUploader) { fileUploader = new FileUploader(context.glassContext); fileUploader.render({ providers: providers }); } }, _isSupported: function (application) { if (!window.File) { application.showErrorMessage(Resources.get('errorHTML5Support') + '(1)'); return false; } else if (!window.FileReader) { application.showErrorMessage(Resources.get('errorHTML5Support') + '(2)'); return false; } else if (!window.FileList) { application.showErrorMessage(Resources.get('errorHTML5Support') + '(3)'); return false; } else if (!window.Blob) { application.showErrorMessage(Resources.get('errorHTML5Support') + '(4)'); return false; } else if (/^((?!chrome).)*safari\/537/i.test(navigator.userAgent)) { // safari 8 not good application.showErrorMessage(Resources.get('errorUploadSupport')); return false; } return true; }, // #onSelectItem for Upload or refresh button onSelectItem: function (context) { if (this._isSupported(context.glassContext)) { // fileUploadId var fileUploadId = null; var isAppend = false; // moser needs destination to be undefined as default var folderName = undefined; if (context.target.activeObject) { fileUploadId = context.target.activeObject.aSelectedContext[0].id; ancestors = context.target.activeObject.aSelectedContext[0].ancestors // https://jsw.ibm.com/browse/MUI-1256 folderName = (ancestors && ancestors.length > 0) ? ancestors[ancestors.length -1].defaultName : undefined; if (context.target.itemId === APPEND_ITEM_ID) { isAppend = true; } } fileUploader.showFilePicker(fileUploadId, null, isAppend, { destination: folderName }); } }, isItemVisible: function (context) { if (!context.target.activeObject) { // Show in the Create New menu return true; } var obj = context.target.activeObject.aSelectedContext[0]; var singleSelect = context.target.activeObject.aSelectedContext.length === 1; var visible = singleSelect && obj.type === 'uploadedFile' && _.indexOf(obj.permissions, 'write') > -1; if (obj.extensions && obj.extensions.refresh === false) { visible = false; } return visible; } }); return UploadActionHandler; } );