/** * 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'); var validator = require('utils/validator'); var componentHelper = require('utils/component'); App.MainHostController = Em.ArrayController.extend({ name:'mainHostController', content: App.Host.find(), comeWithFilter: false, alerts: function () { return App.router.get('clusterController.alerts').filterProperty('isOk', false).filterProperty('ignoredForHosts', false); }.property('App.router.clusterController.alerts.length'), /** * Components which will be shown in component filter */ componentsForFilter:function() { var installedComponents = componentHelper.getInstalledComponents(); installedComponents.setEach('checkedForHostFilter', false); return installedComponents; }.property('App.router.clusterController.isLoaded'), masterComponents:function () { return this.get('componentsForFilter').filterProperty('isMaster', true); }.property('componentsForFilter'), slaveComponents:function () { return this.get('componentsForFilter').filterProperty('isSlave', true); }.property('componentsForFilter'), clientComponents: function() { return this.get('componentsForFilter').filterProperty('isClient', true); }.property('componentsForFilter'), /** * Is true if alets filter is active */ filteredByAlerts:false, /** * Is true if Hosts page was opened by clicking on alerts count badge */ comeWithAlertsFilter: false, /** * Enable or disable filtering by alets */ filterByAlerts: function () { if (App.router.get('currentState.name') == 'index') { this.set('filteredByAlerts', !this.get('filteredByAlerts')); } else { App.router.transitionTo('hosts.index'); this.set('comeWithAlertsFilter', true); } }, /** * Filter hosts by componentName of component * @param component App.HostComponent */ filterByComponent:function (component) { var id = component.get('componentName'); this.get('componentsForFilter').setEach('checkedForHostFilter', false); this.get('componentsForFilter').filterProperty('id', id).setEach('checkedForHostFilter', true); this.set('comeWithFilter', true); }, /** * On click callback for decommission button * @param event */ decommissionButtonPopup:function () { var self = this; App.ModalPopup.show({ header:Em.I18n.t('hosts.decommission.popup.header'), body:Em.I18n.t('hosts.decommission.popup.body'), primary:'Yes', secondary:'No', onPrimary:function () { alert('do'); this.hide(); }, onSecondary:function () { this.hide(); } }); }, /** * On click callback for delete button * @param event */ deleteButtonPopup:function () { var self = this; App.ModalPopup.show({ header:Em.I18n.t('hosts.delete.popup.header'), body:Em.I18n.t('hosts.delete.popup.body'), primary:'Yes', secondary:'No', onPrimary:function () { self.removeHosts(); this.hide(); }, onSecondary:function () { this.hide(); } }); }, showAlertsPopup: function (event) { var host = event.context; App.ModalPopup.show({ header: this.t('services.alerts.headingOfList'), bodyClass: Ember.View.extend({ hostAlerts: function () { var allAlerts = App.router.get('clusterController.alerts').filterProperty('ignoredForHosts', false); if (host) { return allAlerts.filterProperty('hostName', host.get('hostName')); } return 0; }.property('App.router.clusterController.alerts'), closePopup: function () { this.get('parentView').hide(); }, templateName: require('templates/main/host/alerts_popup') }), primary: 'Close', onPrimary: function() { this.hide(); }, secondary : null, didInsertElement: function () { this.$().find('.modal-footer').addClass('align-center'); this.$().children('.modal').css({'margin-top': '-350px'}); } }); event.stopPropagation(); }, /** * remove selected hosts */ removeHosts:function () { var hosts = this.get('content'); var selectedHosts = hosts.filterProperty('isChecked', true); selectedHosts.forEach(function (_hostInfo) { console.log('Removing: ' + _hostInfo.hostName); }); this.get('fullContent').removeObjects(selectedHosts); }, /** * remove hosts with id equal host_id * @param host_id */ checkRemoved:function (host_id) { var hosts = this.get('content'); var selectedHosts = hosts.filterProperty('id', host_id); this.get('fullContent').removeObjects(selectedHosts); } });