Code coverage report for app/views/common/configs/service_config_container_view.js

Statements: 72.09% (31 / 43)      Branches: 63.64% (14 / 22)      Functions: 50% (6 / 12)      Lines: 73.17% (30 / 41)      Ignored: none     

All files » app/views/common/configs/ » service_config_container_view.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 119 120 121 122 123 124 125 126 127 128 129    1                                     1   1   1                             7 6 6 6 3                                                       3   6 6   4 4 4                   6                       8 3 3 1   3 3     8 8       13   13 6   7 7 5            
'use strict';
 
;require.register("views/common/configs/service_config_container_view", 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');
 
  var lazyLoading = require('utils/lazy_loading');
 
  App.ServiceConfigContainerView = Em.ContainerView.extend({
 
    view: null,
 
    lazyLoading: null,
 
    pushViewTimeout: null,
 
    didInsertElement: function didInsertElement() {
      if (this.get('controller.isInstallWizard')) {
        this.selectedServiceObserver();
      }
    },
 
    pushView: function pushView() {
      if (this.get('controller.selectedService')) {
        var self = this;
        var controllerRoute = 'App.router.' + this.get('controller.name');
        if (!this.get('view')) {
          this.get('childViews').pushObject(App.ServiceConfigView.create({
            templateName: require('templates/common/configs/service_config_wizard'),
            controllerBinding: controllerRoute,
            isNotEditableBinding: controllerRoute + '.isNotEditable',
            filterBinding: controllerRoute + '.filter',
            columnsBinding: controllerRoute + '.filterColumns',
            selectedServiceBinding: controllerRoute + '.selectedService',
            actionsStacked: function () {
              return this.get('controller.isInstallWizard') && this.get('supportsConfigLayout');
            }.property('controller.isInstallWizard', 'supportsConfigLayout'),
            serviceConfigsByCategoryView: Em.ContainerView.create(),
            willDestroyElement: function willDestroyElement() {
              $('.loading').append(Em.I18n.t('common.loading.eclipses'));
            },
            didInsertElement: function didInsertElement() {
              $('.loading').empty();
              this._super();
            },
            setActiveTab: function setActiveTab(event) {
              if (event.context.get('isHiddenByFilter')) return false;
              this.get('tabs').forEach(function (tab) {
                tab.set('isActive', false);
              });
              var currentTab = event.context;
              currentTab.set('isActive', true);
            }
          }));
        } else {
          this.get('childViews').pushObject(this.get('view'));
        }
        var categoriesToPush = [];
        this.get('controller.selectedService.configCategories').forEach(function (item) {
 
          var categoryView = item.get('isCustomView') ? item.get('customView') : App.ServiceConfigsByCategoryView;
          Eif (categoryView !== null) {
            categoriesToPush.pushObject(categoryView.extend({
              category: item,
              controllerBinding: controllerRoute,
              canEditBinding: 'parentView.canEdit',
              serviceBinding: controllerRoute + '.selectedService',
              serviceConfigsBinding: controllerRoute + '.selectedService.configs',
              supportsHostOverridesBinding: 'parentView.supportsHostOverrides'
            }));
          }
        });
        this.set('lazyLoading', lazyLoading.run({
          destination: self.get('childViews.lastObject.serviceConfigsByCategoryView.childViews'),
          source: categoriesToPush,
          initSize: 3,
          chunkSize: 3,
          delay: 200,
          context: this
        }));
      }
    },
 
    selectedServiceObserver: function () {
      if (this.get('childViews.length')) {
        var view = this.get('childViews.firstObject');
        if (view.get('serviceConfigsByCategoryView.childViews.length')) {
          view.get('serviceConfigsByCategoryView.childViews').clear();
        }
        view.removeFromParent();
        this.set('view', view);
      }
      //terminate lazy loading when switch service
      if (this.get('lazyLoading')) lazyLoading.terminate(this.get('lazyLoading'));
      this.pushViewAfterRecommendation();
    }.observes('controller.selectedService', 'controller.selectedService.redrawConfigs'),
 
    pushViewAfterRecommendation: function pushViewAfterRecommendation() {
      var _this = this;
 
      if (this.get('controller.isRecommendedLoaded')) {
        this.pushView();
      } else {
        clearTimeout(this.get('pushViewTimeout'));
        this.set('pushViewTimeout', setTimeout(function () {
          return _this.pushViewAfterRecommendation();
        }, 300));
      }
    }
 
  });
});