"use strict"; /** * Licensed Materials - Property of IBM * IBM Cognos Products: admin * Copyright IBM Corp. 2017,2018 * US Government Users Restricted Rights - * Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. */ define(['bi/admin/common/slideout/BasePane', 'bi/commons/ui/properties/PropertyUIControl', 'bi/admin/nls/StringResource', 'bi/admin/system/services/TopicsListController'], function (BasePane, PropertyUIControl, StringResource, TopicsListController) { 'use strict'; //NOSONAR: meant to be strict var LoggingConfigurationPane = BasePane.extend({ currentTopic: { topicName: '', topicType: '' }, init: function init(options) { LoggingConfigurationPane.inherited('init', this, arguments); $.extend(this, options); this.topicsController = this._getNewTopicsListController({ glassContext: this.glassContext }); }, _getNewTopicsListController: function _getNewTopicsListController(options) { return new TopicsListController(options); }, renderBody: function renderBody($body) { this.$el.addClass("diagnosticLogging"); return this.topicsController._getCurrentTopic().then(function (currentTopic) { this.currentTopic = this._renderCurrentTopic(currentTopic); var aControls = []; this.logType = { 'type': 'SingleLineValue', 'name': 'logType', 'label': StringResource.get('logType'), 'value': StringResource.get(this.currentTopic.topicName) }; this.logDetails = { 'type': 'TextArea', 'label': StringResource.get(this.currentTopic.topicName + '_Description'), 'value': '', 'editable': false, 'multiline': false, 'name': 'logDetails', 'indent': 2 }; aControls.push(this.logType); aControls.push(this.logDetails); var tabItems = [{ 'name': StringResource.get('topics'), 'module': 'bi/admin/system/BuiltinTopicTab', 'parentView': this.slideout, 'onSelectCallback': this.getCurrentSelection.bind(this), 'currentHomeValue': this.currentTopic }, { 'name': StringResource.get('addOnTopics'), 'module': 'bi/admin/system/CustomTopicTab', 'parentView': this.slideout, 'onSelectCallback': this.getCurrentSelection.bind(this), 'currentHomeValue': this.currentTopic }]; aControls.push({ 'type': 'TabControl', 'items': tabItems, 'name': 'topicTab' }); aControls.push({ 'type': 'Footer', 'name': 'topicsFooter', 'items': [{ 'type': 'Button', 'label': StringResource.get('apply'), 'primary': true, 'onSelect': this.applyLoggingConfiguration.bind(this), 'name': 'applyButton' }, { 'type': 'Button', 'label': StringResource.get('reset'), 'primary': false, 'onSelect': this._resetToDefault.bind(this), 'name': 'resetButton' }] }); this._oPropertyUIControl = this._newPropertyUIControl({ 'glassContext': this.glassContext, 'el': $body, 'items': aControls }); return this._oPropertyUIControl.render().then(function () { this._disableApplyButton(); }.bind(this)); }.bind(this)); }, _newPropertyUIControl: function _newPropertyUIControl(options) { return new PropertyUIControl(options); }, _renderCurrentTopic: function _renderCurrentTopic(topicJson) { var result = { topicName: '', topicType: '' }; var topicObjArray = topicJson['logsEnabled']; if (topicObjArray.length === 0) { result.topicName = 'DEFAULT'; result.topicType = 'BUILTIN'; } else { for (var i = topicObjArray.length - 1; i >= 0; i--) { if (topicObjArray[i]['topicName'] && topicObjArray[i]['topicType']) { result.topicName = topicObjArray[i]['topicName']; result.topicType = topicObjArray[i]['topicType']; break; } else { result.topicName = topicObjArray[i]['topicName']; } } } return result; }, _updateSelectedLogDetails: function _updateSelectedLogDetails() { // only show selected topic label if the selected topic is in the tab that is active var tabType = this._oPropertyUIControl.getProperty('topicTab')._selectedTabObject.item.module.includes('Builtin') ? 'BUILTIN' : 'CUSTOM'; if (this.currentSelection && tabType === this.currentSelection.topicType) { this._setLabelValue(this._oPropertyUIControl.getProperty('selectedLogDetails'), this._getSelectedLogTopicLabel()); } else { this._setLabelValue(this._oPropertyUIControl.getProperty('selectedLogDetails'), ''); } }, _setLabelValue: function _setLabelValue(UIProperty, text) { var $label = UIProperty.getPropertyNode().find('label'); if ($label.length > 0) { $label.text(text); } UIProperty.processEllipses(); }, getCurrentSelection: function getCurrentSelection(selection) { this.currentSelection = selection; this.checkApplyButton(); this._oPropertyUIControl.getProperty('logType').setValue(StringResource.get(this.currentSelection.topicName)); this._setLabelValue(this._oPropertyUIControl.getProperty('logDetails'), StringResource.get(this.currentSelection.topicName + '_Description')); //clear the other tab var topicTabs = this._oPropertyUIControl.getProperty('topicTab')._tabs; for (var i = 0; i < topicTabs.length; i++) { if (topicTabs[i].item.name === StringResource.get('topics') && this.currentSelection.topicType === 'CUSTOM' && !_.isUndefined(topicTabs[i].tabContent)) { topicTabs[i].tabContent._listControl._clearRows(); } if (topicTabs[i].item.name === StringResource.get('addOnTopics') && this.currentSelection.topicType === 'BUILTIN' && !_.isUndefined(topicTabs[i].tabContent)) { topicTabs[i].tabContent._listControl._clearRows(); } } }, checkApplyButton: function checkApplyButton() { return this.topicsController._getCurrentTopic().then(function (data) { var currentActiveTopic = this._renderCurrentTopic(data); if (currentActiveTopic.topicName !== this.currentSelection.topicName) { this._enableApplyButton(); } else { this._disableApplyButton(); } }.bind(this)); }, applyLoggingConfiguration: function applyLoggingConfiguration() { this.currentTopic = this.currentSelection; var loggingSettings; var loggerList = []; loggerList.push(this.currentTopic); loggingSettings = { '_meta': { 'type': 'glugLoggingConfiguration', 'version': '0.0.1' }, 'defaultLevel': 'ERROR', 'defaultSessionLevel': 'DEBUG', 'logsEnabled': loggerList }; return this.topicsController._updateLoggingConfiguration(loggingSettings).then(function () { this._disableApplyButton(); return this.glassContext.appController.showToast(StringResource.get('topicEnableSuccessMsg', { 'topicName': StringResource.get(this.currentTopic.topicName) }), { 'type': 'success' }); }.bind(this)); }, _resetToDefault: function _resetToDefault() { this.currentSelection = { topicName: 'DEFAULT', topicType: 'BUILTIN' }; return this.applyLoggingConfiguration().then(function () { this._oPropertyUIControl.getProperty('logType').setValue(StringResource.get(this.currentSelection.topicName)); this._setLabelValue(this._oPropertyUIControl.getProperty('logDetails'), StringResource.get(this.currentSelection.topicName + '_Description')); var topicTabs = this._oPropertyUIControl.getProperty('topicTab')._tabs; this._oPropertyUIControl.getProperty('topicTab').selectTabByName(StringResource.get('topics')); var topicRows = this.$body.find('.listControl tr'); for (var j = 1; j < topicRows.length; j++) { if (topicRows[j].childNodes[1].firstChild.innerText === StringResource.get(this.currentSelection.topicName)) { this._oPropertyUIControl.getProperty('topicTab')._selectedTabObject.tabContent._listControl._selectRow(topicRows[j]); } else { $(topicRows[j]).removeClass('selected'); } } for (var i = 0; i < topicTabs.length; i++) { if (topicTabs[i].item.name === StringResource.get('addOnTopics')) { topicTabs[i].tabContent._listControl._clearRows(); } } }.bind(this)); }, _getApplyButton: function _getApplyButton() { var footerSection = this._oPropertyUIControl.getProperty('topicsFooter'); return footerSection._oPropertyUIControl.getProperty('applyButton'); }, _disableApplyButton: function _disableApplyButton() { this._getApplyButton().disable(); }, _enableApplyButton: function _enableApplyButton() { this._getApplyButton().enable(); } }); return LoggingConfigurationPane; });