1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 | 1 1 1 2 1 2 1 1 1 1 1 8 8 8 8 8 8 8 8 8 8 8 1 1 2 1 | 'use strict'; ;require.register("controllers/main/views_controller", function (exports, require, module) { /** * 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.MainViewsController = Em.Controller.extend({ name: 'mainViewsController', isDataLoaded: false, ambariViews: [], visibleAmbariViews: Em.computed.filterBy('ambariViews', 'visible', true), dataLoading: function dataLoading() { var viewsController = this; var dfd = $.Deferred(); if (this.get('isDataLoaded')) { dfd.resolve(this.get('ambariViews')); } else { var interval = setInterval(function () { if (viewsController.get('isDataLoaded')) { dfd.resolve(viewsController.get('ambariViews')); clearInterval(interval); } }, 50); } return dfd.promise(); }, loadAmbariViews: function loadAmbariViews() { if (App.router.get('loggedIn')) { return App.ajax.send({ name: 'views.info', sender: this, success: 'loadAmbariViewsSuccess', error: 'loadAmbariViewsError' }); } }, loadAmbariViewsSuccess: function loadAmbariViewsSuccess(data, opt, params) { if (data.items.length) { App.ajax.send({ name: 'views.instances', sender: this, success: 'loadViewInstancesSuccess', error: 'loadViewInstancesError' }); } else { this.set('ambariViews', []); this.set('isDataLoaded', true); } }, loadAmbariViewsError: function loadAmbariViewsError() { this.set('ambariViews', []); this.set('isDataLoaded', true); }, loadViewInstancesSuccess: function loadViewInstancesSuccess(data, opt, params) { this.set('ambariViews', []); var instances = []; data.items.forEach(function (view) { view.versions.forEach(function (version) { version.instances.forEach(function (instance) { var info = instance.ViewInstanceInfo; var currentInstance = App.ViewInstance.create({ iconPath: info.icon_path || '/img/ambari-view-default.png', label: info.label || version.ViewVersionInfo.label || info.view_name, visible: info.visible || false, version: info.version, description: info.description || Em.I18n.t('views.main.instance.noDescription'), viewName: info.view_name, shortUrl: info.short_url, instanceName: info.instance_name, href: info.context_path + '/' }); Eif (currentInstance.visible) { instances.push(currentInstance); } }, this); }, this); }, this); this.get('ambariViews').pushObjects(instances); this.set('isDataLoaded', true); }, loadViewInstancesError: function loadViewInstancesError() { this.set('ambariViews', []); this.set('isDataLoaded', true); }, setView: function setView(event) { if (event.context) { window.open(event.context.get('internalAmbariUrl')); } } }); }); |