Code coverage report for app/controllers/main/views_controller.js

Statements: 74.29% (26 / 35)      Branches: 52.38% (11 / 21)      Functions: 83.33% (10 / 12)      Lines: 74.29% (26 / 35)      Ignored: none     

All files » app/controllers/main/ » views_controller.js
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'));
      }
    }
  });
});