123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318 |
- /**
- * Licensed Materials - Property of IBM
- * IBM Cognos Products: Cognos Analytics
- * Copyright IBM Corp. 2015, 2019
- * US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
- */
- 'use strict'; //NOSONAR
- define(['underscore', 'bi/admin/nls/StringResource', 'doT', 'bacontentnav/common/ContentListPageView', 'bacontentnav/common/ui/ListControl', 'bi/admin/common/ui/listview/actions/AddParameterAction', 'bi/admin/account/services/RoleCustomizationService', 'bacontentnav/ui/dialogs/OpenDialog', 'bi/admin/common/utils/parameters/Parameters', 'text!bi/admin/common/templates/ParametersTabTemplate.html', 'bi/commons/utils/Utils', 'bacontentnav/utils/WidgetNavigator'], function (_, StringResource, doT, View, ListControl, AddParameterAction, RoleCustomizationService, OpenDialog, Parameters, ParametersTabTemplate, Utils, WidgetNavigator) {
- var GlobalParametersTab = View.extend({
- init: function init(options) {
- GlobalParametersTab.inherited('init', this, arguments);
- _.extend(this, options);
- this._sWaitDiv = Utils.getLoadingAnimation(1);
- this.isSlideout = false;
- this.modified = false;
- this.parameters = [];
- },
- render: function render() {
- return this.getParameters(this.isSysAdmin, this.isPortalAdmin, this.tenantID).then(function (parameters) {
- this.parameters = parameters;
- this.$el.empty();
- this.$el.addClass('gp-define-parameters-container');
- var sHtml = doT.template(ParametersTabTemplate)({
- 'isSlideout': this.isSlideout,
- 'description': StringResource.get('globalParametersDescription'),
- 'importText': StringResource.get('import'),
- 'newText': StringResource.get('new'),
- 'newButtonId': 'admin-add-param',
- 'title': this.title
- });
- this.$el.html(sHtml);
- $('#pickReport').on('primaryaction', this._pickReport.bind(this));
- $('#admin-add-param').on('primaryaction', this._addParameterNameValue.bind(this));
- return this._renderListControl();
- }.bind(this));
- },
- _renderListControl: function _renderListControl() {
- if (this.listControl) {
- this.listControl.remove();
- }
- var $container = this.$el.find('.ca-listContainer');
- this.listControl = new ListControl({
- contentView: this,
- columns: this.getColumnSpecs(),
- el: $container,
- showEmptyNewFolderButton: false,
- emptyFolderString: StringResource.get('noGlobalParameters'),
- accessibleLabel: StringResource.get('viewGlobalParameters'),
- disableColumnHeaders: true,
- glassContext: this.glassContext,
- getJSONDataCallback: function () {
- return Promise.resolve({
- data: this.parameters
- });
- }.bind(this)
- });
- return this.listControl.render().then(function () {
- this.listControl.widgetKeyController = new WidgetNavigator({
- $el: this.listControl.$el.find('.listControl'),
- focusClass: 'contentListFocusable'
- });
- }.bind(this));
- },
- getColumnSpecs: function getColumnSpecs() {
- return [{
- 'type': 'Text',
- 'module': 'bacontentnav/common/ui/list_columns/Text',
- 'showAsActiveLink': true,
- 'propertyName': 'name',
- 'sortable': false,
- 'scope': 'row',
- 'clickCallback': function (obj) {
- this._showPropertiesPanel(obj);
- }.bind(this)
- }, {
- 'type': 'SimpleContextMenu',
- 'width': '10%',
- 'module': 'bi/admin/common/ui/listview/columns/SimpleContextMenu',
- callback: function (obj, e) {
- var position = e;
- if (e.type = "keyup") {
- var offset = $(e.target).offset();
- position = {
- pageX: offset.left,
- pageY: offset.top
- };
- }
- this.glassContext.appController.showContextMenu({
- "position": position,
- "menuId": 'com.ibm.bi.admin.tenantParameterMenu',
- "activeObject": {
- handler: this,
- data: obj
- }
- });
- }.bind(this)
- }];
- },
- onContextMenu: function onContextMenu(action, obj) {
- var existingItem = _.find(this.parameters, function (parameter) {
- return parameter.name === obj.name;
- });
- if (existingItem) {
- switch (action) {
- case "tenant_parameter_delete":
- {
- this._deleteParameter(existingItem);
- break;
- }
- case "tenant_parameter_properties":
- {
- this._showPropertiesPanel(existingItem);
- break;
- }
- case "tenant_parameter_move_up":
- case "tenant_parameter_move_down":
- {
- this._moveParameter(existingItem, action);
- break;
- }
- default:
- break;
- }
- }
- },
- _moveParameter: function _moveParameter(obj, action) {
- if (this.parameters.length > 0) {
- var item = _.find(this.parameters, function (parameter) {
- return parameter.name === obj.name;
- });
- var index = this.parameters.indexOf(item);
- if (action === "tenant_parameter_move_up" && index !== 0) {
- var swapWithItem = this.parameters[index - 1];
- this.parameters[index - 1] = item;
- this.parameters[index] = swapWithItem;
- } else if (action === "tenant_parameter_move_down" && index < this.parameters.length - 1) {
- var swapWithItem = this.parameters[index + 1];
- this.parameters[index + 1] = item;
- this.parameters[index] = swapWithItem;
- }
- this.listControl.updateDatatable();
- this.updateParameters(this.parameters, this.isSysAdmin, this.isPortalAdmin, this.tenantID);
- }
- },
- _deleteParameter: function _deleteParameter(obj) {
- var item = _.find(this.parameters, function (parameter) {
- return parameter.name === obj.name;
- });
- this.parameters.splice(this.parameters.indexOf(item), 1);
- this.listControl.updateDatatable();
- this.updateParameters(this.parameters, this.isSysAdmin, this.isPortalAdmin, this.tenantID);
- },
- _showPropertiesPanel: function _showPropertiesPanel(obj) {
- this.glassContext.appController.showSlideOut({
- parent: this.slideout,
- width: '400px',
- label: obj.name,
- content: {
- 'module': 'bi/admin/common/slideout/GlobalParametersProperties',
- 'glassContext': this.glassContext,
- 'parameter': obj,
- 'parameters': this.parameters,
- save: function () {
- this.updateParameters(this.parameters, this.isSysAdmin, this.isPortalAdmin, this.tenantID);
- this.listControl.updateDatatable();
- this._renderListControl();
- }.bind(this)
- },
- onHide: function onHide() {
- if (this.contentView.modified) {
- this.contentView.save();
- }
- }
- });
- },
- _pickReport: function _pickReport() {
- this._pickReportDialog = new OpenDialog({
- 'glassContext': this.glassContext,
- 'typesToOpen': ['exploration', 'report', 'reportView', 'package'],
- 'multiSelect': false,
- 'onOpenCallback': function (reports) {
- if (reports.length === 1) {
- this._getReportParameters(reports[0]);
- }
- }.bind(this),
- 'dialogTitle': StringResource.get('importParametersFromReport'),
- 'primaryBtnText': StringResource.get('select'),
- 'teamContentOnly': false
- }).open();
- },
- _getReportParameters: function _getReportParameters(report) {
- if (report) {
- var $waitDiv = $(this._sWaitDiv);
- this.$el.append($waitDiv);
- var reportParameters = new Parameters({
- glassContext: this.glassContext,
- report: report,
- credentials: []
- });
- reportParameters.get().then(this._processGetParametersResponse.bind(this));
- }
- },
- _processGetParametersResponse: function _processGetParametersResponse(response) {
- if (response.status === 'prompting') {
- this._showDataSourcePromptPanel(response);
- } else {
- this.$el.find('.wait_loading_animation').remove();
- if (response.status === 'error') {
- this.glassContext.appController.showToast(response.message, {
- type: 'error'
- });
- } else {
- if (response.parameters.length === 0) {
- this.glassContext.appController.showToast(StringResource.get('reportContainsNoParametersToast'), {
- type: 'info'
- });
- } else {
- _.each(response.parameters, function (parameter) {
- this.addParameter(parameter);
- }.bind(this));
- this.updateParameters(this.parameters, this.isSysAdmin, this.isPortalAdmin, this.tenantID);
- this.listControl.updateDatatable();
- this._renderListControl();
- }
- }
- }
- },
- _showDataSourcePromptPanel: function _showDataSourcePromptPanel(getParametersResult) {
- this.glassContext.appController.showSlideOut({
- parent: this.slideout,
- overlay: true,
- content: {
- module: 'bi/admin/globalparameters/view/DataSourcePromptPanel',
- glassContext: this.glassContext,
- parameter: getParametersResult.parameters[0],
- prompt_details: getParametersResult,
- onOKCallback: this._processGetParametersResponse.bind(this)
- },
- onHide: function () {
- this.$el.find('.wait_loading_animation').remove();
- }.bind(this)
- });
- },
- _addParameterValueItems: function _addParameterValueItems(sParameterValues, searchPath) {
- var xmlDoc = $.parseXML(sParameterValues);
- var parameterValueItems = $(xmlDoc).find('item[xsi\\\:type=\'bus:parameterValue\']');
- for (var i = 0; i < parameterValueItems.length; ++i) {
- var parameterName = $(parameterValueItems[i]).find('name').text();
- this.addItem({
- 'label': parameterName,
- 'parameterName': parameterName,
- 'type': 'reportParameter',
- 'searchPath': searchPath,
- 'parameterValues': $(parameterValueItems[i])[0].outerHTML
- });
- }
- },
- _addParameterNameValue: function _addParameterNameValue() {
- var addParameterAction = new AddParameterAction({
- 'oListControl': this.listControl,
- 'contentView': this,
- 'addCallback': function (value) {
- if (value !== '') {
- var newParameter = {
- 'name': value,
- 'description': '',
- 'multilingualDisplay': {},
- 'source': 'user',
- 'type': 'simpleParmValue',
- 'multiSelect': true,
- 'accessibleAtSystemOrTenantLevel': false,
- 'disabled': false
- };
- this.addParameter(newParameter);
- this.updateParameters(this.parameters, this.isSysAdmin, this.isPortalAdmin, this.tenantID);
- }
- }.bind(this)
- });
- addParameterAction.execute();
- },
- addParameter: function addParameter(newItem) {
- var existingItem = _.find(this.parameters, function (parameter) {
- return parameter.name === newItem.name;
- });
- if (!existingItem) {
- this.parameters.push(newItem);
- }
- },
- save: function save() {
- this.modified = false;
- this.updateParameters(this.parameters, this.isSysAdmin, this.isPortalAdmin, this.tenantID);
- }
- });
- return GlobalParametersTab;
- });
|