"use strict"; /** * Licensed Materials - Property of IBM * IBM Cognos Products: Cognos Analytics * Copyright IBM Corp. 2016, 2017 * US Government Users Restricted Rights - Use, duplication or disclosure * restricted by GSA ADP Schedule Contract with IBM Corp. */ define(['q', 'bi/admin/nls/StringResource', 'bacontentnav/common/ContentListPageView', 'bi/admin/common/Uploader', 'bi/admin/common/services/ExtensionService'], function (Q, StringResource, View, Uploader, ExtensionService) { 'use strict'; //NOSONAR: meant to be strict var ExtensionsTab = View.extend({ getContextMenuId: function getContextMenuId() { return 'com.ibm.bi.admin.extensionListViewMenu'; }, getViewContainerClass: function getViewContainerClass() { return 'ContentListPageView ThemesTabPageView'; }, renderContent: function renderContent() { this.$el.addClass('adminContentListView'); return this.renderContentList({ 'columns': this._getColumnSpecs(), 'defaultSort': [1, 'asc'], 'multiSelect': false, 'getJSONDataCallback': this._getDataObjects.bind(this), 'setActionPayload': function setActionPayload() { return Q(true); }, 'getSelectedObjectFolderCapabilities': function getSelectedObjectFolderCapabilities(selectedObjects) { return Q(selectedObjects); }, 'getSelectedObjectWPermissions': function getSelectedObjectWPermissions(selectedObjects) { return Q(selectedObjects); }, 'checkSetVersionsSupported': function checkSetVersionsSupported(selectedObjects) { return Q(selectedObjects); }, 'getContextMenuId': this.getContextMenuId }); }, _getDataObjects: function _getDataObjects() { var ajaxService = this.glassContext.services.ajax; var promise = ajaxService.ajax({ 'dataType': 'json', 'type': 'GET', 'data': {}, 'url': 'v1/plugins/extensions?fields=defaultName,permissions,tenantID,type,modificationTime,id,version' }); return promise.then(function (list) { var resultList = []; var listObject = list.objects; for (var i = 0; i < listObject.length; i++) { if (listObject[i].permissions.indexOf('read') > -1) { var extensionsObj = { defaultName: listObject[i].defaultName, modificationTime: listObject[i].modificationTime, id: listObject[i].id, tenantID: listObject[i].tenantID, type: listObject[i].type, version: listObject[i].version, _meta: listObject[i]._meta }; resultList.push(extensionsObj); } } return Promise.resolve({ data: resultList }); }.bind(this)); }, contentbarItems: function contentbarItems() { return [{ 'name': 'nameLabel', 'module': 'bi/content_apps/common/ui/contentbar_components/HiddenLabel', 'label': this.name }, { 'name': 'uploadExt', 'position': 'trailing', 'label': StringResource.get('uploadExtension'), 'module': 'bacontentnav/common/ui/contentbar_components/Button', 'className': 'uploadExtButton', 'icon': 'common-upload', 'action': this.uploadExt.bind(this) }]; }, _getColumnSpecs: function _getColumnSpecs() { return [{ 'type': 'Text', 'propertyName': 'defaultName', '_bNavigable': false, 'label': StringResource.get('name'), 'scope': 'row' }, { 'type': 'Time', 'propertyName': 'modificationTime' }, { 'type': 'ContextMenu' }]; }, /** * Prepares the uploader and calls for an upload, then refreshes the extension list */ uploadExt: function uploadExt() { if (!this.extensionService) { var esOptions = { 'glassContext': this.glassContext }; this.extensionService = new ExtensionService(esOptions); } var ajaxOptions = { 'isUpload': true, 'type': 'extension', 'tenantID': this.tenantID }; var uploader = new Uploader({ '$el': this.$el, 'glassContext': this.glassContext, 'ajax': this.extensionService.updateOrUpload.bind(this.extensionService), 'ajaxOptions': ajaxOptions }); return uploader.doUpload().then(function () { this.refresh(); }.bind(this)); } }); return ExtensionsTab; });