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