blob: 7c3fbeca52e2a4d58600d37ab0816c7d7ceee652 [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
var App = require('app');
App.ServiceConfigLayoutTabView = Em.View.extend(App.ConfigOverridable, App.LoadingOverlaySupport, {
/**
* Determines if view is editable
* It true - show all control-elements (undo, override, finalize etc) for each widget
* If false - no widgets control-elements will be shown
* Bound from template
* @type {boolean}
*/
canEdit: true,
/**
* view need some time to prepare data to display it correct
* before that it's better not to show anything
* @type {boolean}
*/
dataIsReady: false,
/**
* @type {App.Service}
*/
service: Em.computed.alias('controller.selectedService'),
templateName: function() {
var customTemplate = this.get('customTemplate');
return customTemplate ? customTemplate : require('templates/common/configs/service_config_layout_tab');
}.property('customTemplate'),
customTemplate: null,
fieldToObserve: 'controller.recommendationsInProgress',
classNames: ['enhanced-config-tab-content'],
checkOverlay: function () {
this.handleFieldChanges();
}.observes('controller.activeTab.id', 'controller.activeTab.isRendered'),
/**
* Prepare configs for render
* <code>subsection.configs</code> is an array of App.StackConfigProperty, but not App.ConfigProperty,
* so proper config-properties should be linked to the subsections.
* @method prepareConfigProperties
*/
prepareConfigProperties: function () {
var self = this;
this.get('content.sectionRows').forEach(function (row) {
row.forEach(function (section) {
section.get('subsectionRows').forEach(function (subRow) {
subRow.forEach(function (subsection) {
self.setConfigsToContainer(subsection);
subsection.get('subSectionTabs').forEach(function (subSectionTab) {
self.setConfigsToContainer(subSectionTab);
});
});
});
});
});
},
/**
* changes active subsection tab
* @param event
*/
setActiveSubTab: function(event) {
if (!event.context || !event.context.get('isVisible')) {
return false;
}
try {
event.context.get('subSection.subSectionTabs').setEach('isActive', false);
event.context.set('isActive', true);
} catch (e) {
console.error('Can\'t update active subsection tab');
}
},
didInsertElement: function () {
this.set('dataIsReady', false);
this.set('content.isConfigsPrepared', false);
this._super();
if (this.get('controller.isCompareMode')) {
this.get('parentView').filterEnhancedConfigs();
}
this.set('content.isConfigsPrepared', true);
this.set('dataIsReady', true);
this._super(...arguments);
}
});