blob: ab74660f4718321c901eea84608fd18d10fe2a2c [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.WizardStep6View = App.TableView.extend({
templateName: require('templates/wizard/step6'),
/**
* Number of visible rows
* @type {string}
*/
displayLength: "25",
/**
* List of hosts
* @type {object[]}
*/
content: function () {
return this.get('controller.hosts');
}.property('controller.hosts'),
/**
* Synonym to <code>content</code> in this <code>App.TableView</code>
* @type {object[]}
*/
filteredContent: Em.computed.alias('content'),
/**
* Set <code>label</code> and do <code>loadStep</code>
* @method didInsertElement
*/
didInsertElement: function () {
this.setLabel();
this.get('controller').loadStep();
},
/**
* Set <code>label</code> value
* @method setLabel
*/
setLabel: function () {
var clients = this.get('controller.content.clients');
var label = !!clients.length ? Em.I18n.t('installer.step6.body') + Em.I18n.t('installer.step6.body.clientText') : Em.I18n.t('installer.step6.body');
clients.forEach(function (_client) {
if (clients.length === 1) {
label = label + ' ' + _client.display_name;
} else {
if (_client !== clients[clients.length - 1]) { // [clients.length - 1]
label = label + ' ' + _client.display_name;
if (_client !== clients[clients.length - 2]) {
label = label + ',';
}
}
else {
label = label + ' ' + Em.I18n.t('and') + ' ' + _client.display_name + '.';
}
}
}, this);
this.set('label', label);
},
checkboxClick: function(e) {
var checkbox = e.context;
Em.set(checkbox, 'checked', !checkbox.checked);
this.get('controller').checkCallback(checkbox.component);
this.get('controller').callValidation();
},
columnCount: function() {
var hosts = this.get('controller.hosts');
return (hosts && hosts.length > 0) ? hosts[0].get('checkboxes').length + 1 : 1;
}.property('controller.hosts.@each.checkboxes')
});
App.WizardStep6HostView = Em.View.extend({
/**
* Bound <code>host</code> object
* @type {object}
*/
host: null,
tagName: 'td',
/**
* Create hover-labels for hostName with list of installed master-components
* @method didInsertElement
*/
didInsertElement: function () {
App.popover(this.$(), {
title: Em.I18n.t('installer.step6.wizardStep6Host.title').format(this.get('host.hostName')),
content: this.get('controller').getMasterComponentsForHost(this.get('host.hostName')).map(function (_component) {
return App.format.role(_component, false);
}).join("<br />"),
placement: 'right',
trigger: 'hover'
});
},
willDestroyElement: function() {
this.$().popover('destroy');
}
});