ambari-web/app/controllers/application.js (92 lines of code) (raw):

/** * 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.ApplicationController = Em.Controller.extend(App.Persist, { name: 'applicationController', isPollerRunning: false, clusterName: Em.computed.alias('App.router.clusterController.clusterName'), /** * set ambari server version from installerController or mainController, making sure version shown up all the time */ ambariVersion: function () { return App.router.get('installerController.ambariServerVersion') || App.router.get('mainController.ambariServerVersion') || Em.I18n.t('common.notAvailable'); }.property('App.router.installerController.ambariServerVersion', 'App.router.mainController.ambariServerVersion'), clusterDisplayName: Em.computed.truncate('clusterName', 13, 10), isClusterDataLoaded: Em.computed.and('App.router.clusterController.isLoaded','App.router.loggedIn'), isExistingClusterDataLoaded: Em.computed.and('App.router.clusterInstallCompleted', 'isClusterDataLoaded'), enableLinks: Em.computed.and('isExistingClusterDataLoaded', '!App.isOnlyViewUser'), /** * Determines if "Exit" menu-item should be shown * It should if cluster isn't installed * If cluster is installer, <code>isClusterDataLoaded</code> is checked * @type {boolean} */ showExitLink: function () { if (App.router.get('clusterInstallCompleted')) { return this.get('isClusterDataLoaded'); } return true; }.property('App.router.clusterInstallCompleted', 'isClusterDataLoaded'), /** * Determines if "Manage Ambari" menu-item should be shown * * @type {boolean} */ showManageAmbari: function () { if (App.router.get('clusterInstallCompleted')) { return this.get('isClusterDataLoaded'); } return App.get('isPermissionDataLoaded'); }.property('App.router.clusterInstallCompleted', 'isClusterDataLoaded', 'App.isPermissionDataLoaded'), /** * Determines if upgrade label should be shown * * @type {boolean} */ showUpgradeLabel: Em.computed.or('App.upgradeInProgress', 'App.upgradeHolding', 'App.upgradeSuspended'), /** * @return {{msg: string, cls: string, icon: string}} */ upgradeMap: function () { var upgradeInProgress = App.get('upgradeInProgress'); var upgradeHolding = App.get('upgradeHolding'); var upgradeSuspended = App.get('upgradeSuspended'); var isDowngrade = App.router.get('mainAdminStackAndUpgradeController.isDowngrade'); var typeSuffix = isDowngrade ? 'downgrade' : 'upgrade'; var hasUpgradePrivilege = App.isAuthorized('CLUSTER.UPGRADE_DOWNGRADE_STACK'); var wizardWatcherController = App.router.get('wizardWatcherController'); var isNotWizardUser; var wizardUserName; if (upgradeInProgress) { isNotWizardUser =wizardWatcherController.get('isNonWizardUser'); wizardUserName = wizardWatcherController.get('wizardUser'); return { cls: hasUpgradePrivilege? 'upgrade-in-progress' : 'upgrade-in-progress not-allowed-cursor', icon: 'glyphicon-cog', msg: isNotWizardUser ? Em.I18n.t('admin.stackVersions.version.' + typeSuffix + '.running.nonWizard').format(wizardUserName) : Em.I18n.t('admin.stackVersions.version.' + typeSuffix + '.running') } } if (upgradeHolding) { return { cls: hasUpgradePrivilege? 'upgrade-holding' : 'upgrade-holding not-allowed-cursor', icon: 'glyphicon-pause', msg: Em.I18n.t('admin.stackVersions.version.' + typeSuffix + '.pause') } } if (upgradeSuspended) { return { cls: hasUpgradePrivilege? 'upgrade-aborted' : 'upgrade-aborted not-allowed-cursor', icon: 'glyphicon-pause', msg: Em.I18n.t('admin.stackVersions.version.' + typeSuffix + '.suspended') } } return {}; }.property('App.upgradeInProgress', 'App.upgradeHolding', 'App.upgradeSuspended', 'App.router.mainAdminStackAndUpgradeController.isDowngrade'), startKeepAlivePoller: function() { if (!this.get('isPollerRunning')) { this.set('isPollerRunning',true); App.updater.run(this, 'getStack', 'isPollerRunning', App.sessionKeepAliveInterval); } }, getStack: function(callback) { App.ajax.send({ name: 'router.login.clusters', sender: this, callback: callback }); }, goToAdminView: function () { App.router.route("adminView"); }, goToDashboard: function () { if (this.get('enableLinks')) { App.router.route("main/dashboard"); } }, showAboutPopup: function() { App.ModalPopup.show({ header: Em.I18n.t('common.aboutAmbari'), secondary: false, bodyClass: Em.View.extend({ templateName: require('templates/common/about'), ambariVersion: this.get('ambariVersion') }) }); } });