123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267 |
- "use strict";
- /**
- * Licensed Materials - Property of IBM
- * IBM Cognos Products: Cognos Analytics
- * Copyright IBM Corp. 2015, 2017
- * US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
- */
- define(['underscore', 'doT', 'bi/admin/nls/StringResource', 'bacontentnav/common/ContentListPageView', 'bi/commons/ui/properties/PropertyUIControl', 'bi/admin/common/utils/parameters/GlobalParameters', 'bi/admin/globalparameters/helpers/ParameterValueHelper', 'bi/commons/ui/ButtonBar', 'text!bi/admin/account/templates/SetParametersTemplate.html'], function (_, doT, StringResource, ContentView, PropertyUIControl, GlobalParametersController, GlobalParameterHelper, ButtonBar, SetParametersTemplate) {
- 'use strict'; //NOSONAR
- var RoleParametersPane = ContentView.extend({
- init: function init(options) {
- RoleParametersPane.inherited('init', this, arguments);
- _.extend(this, options);
- this._modified = false;
- this._cachedCollectParameterValuesResponses = {};
- this._dictionary = null;
- this._globalParametersController = new GlobalParametersController({
- 'glassContext': this.glassContext
- });
- this.modified_parameter_values = {};
- if (this.parameter_values) {
- for (var i in this.parameter_values) {
- this.modified_parameter_values[i] = {
- 'name': this.parameter_values[i].name,
- 'values': this.parameter_values[i].values.slice(),
- 'enabled': this.parameter_values[i].enabled || false
- };
- }
- }
- },
- _save: function _save() {
- this.parameter_values = this.modified_parameter_values; // before we save, cleanse the parameter values (make sure we aren't saving anything that isn't part of the dictionary
- _.each(this.parameter_values, function (parameterValue, key) {
- if (!this._dictionary[key]) {
- delete this.parameter_values[key];
- }
- }.bind(this));
- this.onSave(this.parameter_values);
- this._updateSaveButton(false);
- },
- _cancel: function _cancel() {
- this.slideout.hide();
- },
- render: function render() {
- this.$el.empty();
- this.$el.addClass('roleParametersPane');
- var sHtml = doT.template(SetParametersTemplate)({
- no_values_message: StringResource.get('noGlobalParameters')
- });
- this.$el.html(sHtml);
- return this._globalParametersController.getDictionaryValues().then(function (dictionaryValues) {
- this._dictionary = dictionaryValues;
- this._initializeModifiedParameters();
- return this._renderPanel();
- }.bind(this));
- },
- _initializeModifiedParameters: function _initializeModifiedParameters() {
- // adds in a new global parameter if it has not been added
- // to parameter_values yet
- for (var i in this._dictionary) {
- if (!this.modified_parameter_values[i]) {
- this.modified_parameter_values[i] = {
- 'name': this._dictionary[i].name,
- 'values': [],
- 'enabled': false,
- 'checked': this._dictionary[i].accessibleAtSystemOrTenantLevel || false
- };
- }
- }
- },
- _renderPanel: function _renderPanel() {
- var propertyControlItems = this._getHeaderItems();
- var parameterItems = this._getParameterItems();
- if (parameterItems.length === 0) {
- this._showNoContentMessage();
- } else {
- propertyControlItems = propertyControlItems.concat(parameterItems);
- }
- this._propertyUIControls = new PropertyUIControl({
- 'el': this.$el.find('.gp-setparams-header-body-container'),
- 'glassContext': this.glassContext,
- 'slideout': this.slideout,
- 'items': propertyControlItems
- });
- this._addButtonBar();
- return this._propertyUIControls.render();
- },
- _showNoContentMessage: function _showNoContentMessage() {
- this.$el.find('.emptyTableContent').css('display', '');
- },
- _getParameterItems: function _getParameterItems() {
- var propertyControlItems = [];
- _.each(this._dictionary, function (item) {
- var paramName = item.name;
- var label = GlobalParameterHelper.getMultilingualDisplay(this.glassContext.services.userProfile.preferences.contentLocale, item);
- propertyControlItems.push({
- 'type': 'Split',
- 'name': 'param_' + paramName,
- 'items': [{
- 'align': 'left',
- 'items': [{
- 'ellipses': true,
- 'module': 'bi/admin/common/ui/properties/EllipsableCheckbox',
- 'name': 'checkbox_' + paramName,
- 'label': label,
- 'controlOnLeft': true,
- 'checked': this.modified_parameter_values[paramName].enabled || this._dictionary[paramName].accessibleAtSystemOrTenantLevel ? true : false,
- 'nestedUIControl': true,
- 'disabled': this._dictionary[paramName].accessibleAtSystemOrTenantLevel || false,
- 'onChange': function (obj, value) {
- this._onCheckParameter(obj, value, paramName);
- }.bind(this)
- }]
- }, {
- 'align': 'right',
- 'items': [{
- 'name': 'setParamValues_' + paramName,
- 'label': '',
- 'value': this._getSingleLineValueLabel(paramName),
- 'type': 'SingleLineValue',
- 'nestedUIControl': true,
- 'disabled': this.modified_parameter_values[paramName].enabled || this._dictionary[paramName].accessibleAtSystemOrTenantLevel ? false : true,
- 'ellipses': true,
- 'editCallback': function () {
- this._openSetParameterValuesPanel(paramName);
- }.bind(this)
- }]
- }]
- });
- }.bind(this));
- return propertyControlItems;
- },
- _getHeaderItems: function _getHeaderItems() {
- var items = [{
- 'name': 'parameterName',
- 'label': '',
- 'value': StringResource.get('globalParameters'),
- 'type': 'Banner',
- 'editable': false
- }, {
- 'type': 'Separator'
- }];
- return items;
- },
- _getSingleLineValueLabel: function _getSingleLineValueLabel(parameterName) {
- if (this.modified_parameter_values[parameterName] && this.modified_parameter_values[parameterName].values.length !== 0) {
- var prompt_length = this.modified_parameter_values[parameterName].values.length;
- if (prompt_length === 1) {
- return prompt_length + ' ' + StringResource.get('promptValue');
- }
- return prompt_length + ' ' + StringResource.get('promptValues');
- }
- return StringResource.get('setValues');
- },
- _onCheckParameter: function _onCheckParameter(obj, value, paramName) {
- if (value) {
- this._propertyUIControls.getProperty('param_' + paramName).propertyUIControlRight._aProperties[0].enable();
- this.modified_parameter_values[paramName].enabled = true;
- } else {
- this._propertyUIControls.getProperty('param_' + paramName).propertyUIControlRight._aProperties[0].disable();
- this.modified_parameter_values[paramName].enabled = false;
- if (this._setParameterValuesPanel && this._setParameterValuesPanel.content.parameter.name === paramName) {
- this._setParameterValuesPanel.hide();
- }
- }
- this._updateSaveButton(true);
- },
- _addButtonBar: function _addButtonBar() {
- this._buttonBar = new ButtonBar({
- buttons: [{
- 'id': 'gp-save',
- 'label': StringResource.get('save'),
- 'onSelect': this._save.bind(this),
- 'disabled': true
- }, {
- 'id': 'gp-cancel',
- 'label': StringResource.get('cancel'),
- 'onSelect': this._cancel.bind(this),
- 'disabled': false,
- 'cssClass': 'secondary'
- }]
- });
- this._buttonBar.render().then(function (buttonBarHtml) {
- this.$el.find('.gp-common-footer').html(buttonBarHtml);
- this._updateSaveButton(false);
- }.bind(this));
- this._updateSaveButton(false);
- },
- _updateSaveButton: function _updateSaveButton(enable) {
- _.each(this._buttonBar.getButtonList(), function (button) {
- if (button.id === 'gp-save') {
- enable ? button.enable() : button.disable();
- }
- }.bind(this));
- },
- _openSetParameterValuesPanel: function _openSetParameterValuesPanel(paramName) {
- var parameter = this._dictionary[paramName];
- this._setParameterValuesPanel = this.glassContext.appController.showSlideOut({
- parent: this.slideout,
- width: '400px',
- label: '',
- content: {
- 'module': 'bi/admin/account/slideout/ParameterValuesPane',
- 'glassContext': this.glassContext,
- 'activeCollectParameterValuesResponse': parameter.report_id ? this._cachedCollectParameterValuesResponses[parameter.report_id] : null,
- 'parameter': parameter,
- 'current_parameter_value': this.modified_parameter_values[paramName],
- 'onApply': this._onSetParameterValues.bind(this),
- 'cacheCollectParameterValuesResponse': this._cacheCollectParameterValuesResponse.bind(this),
- 'requestParameterValues': parameter.report_id ? this._getRequestParameterValues(parameter.report_id) : {}
- }
- });
- },
- _getRequestParameterValues: function _getRequestParameterValues(report_id) {
- var requestParameterValues = {};
- _.each(this.modified_parameter_values, function (parameterValue) {
- if (this._dictionary[parameterValue.name] && this._dictionary[parameterValue.name].report_id === report_id && parameterValue.values.length !== 0) {
- requestParameterValues[parameterValue.name] = parameterValue;
- }
- }.bind(this));
- return requestParameterValues;
- },
- _cacheCollectParameterValuesResponse: function _cacheCollectParameterValuesResponse(parameter, collectParameterValuesResponse) {
- if (parameter.report_id) {
- this._cachedCollectParameterValuesResponses[parameter.report_id] = collectParameterValuesResponse;
- }
- },
- _onSetParameterValues: function _onSetParameterValues(parameter, parameter_value) {
- this.modified_parameter_values[parameter.name].values = parameter_value.values;
- this.modified_parameter_values[parameter.name].enable = true;
- this._propertyUIControls.getProperty('param_' + parameter.name).propertyUIControlRight._aProperties[0].setValue(this._getSingleLineValueLabel(parameter.name));
- this._updateSaveButton(true);
- }
- });
- return RoleParametersPane;
- });
|