Code coverage report for app/views/common/modal_popups/select_groups_popup.js

Statements: 7.5% (3 / 40)      Branches: 0% (0 / 18)      Functions: 9.09% (1 / 11)      Lines: 7.69% (3 / 39)      Ignored: none     

All files » app/views/common/modal_popups/ » select_groups_popup.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    1                                     1                   1                                                                                                                                                                
'use strict';
 
;require.register("views/common/modal_popups/select_groups_popup", 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');
 
  /**
   * Show confirmation popup
   * @param {string} selectedServiceName
   * @param {App.ConfigGroup} selectedConfigGroup
   * @param {App.ServiceConfig[]} dependentStepConfigs
   * @param {Object[]} configs
   * @return {App.ModalPopup}
   */
  App.showSelectGroupsPopup = function (selectedServiceName, selectedConfigGroup, dependentStepConfigs, configs) {
    return App.ModalPopup.show({
      encodeBody: false,
      primary: Em.I18n.t('common.save'),
      header: Em.I18n.t('popup.dependent.configs.select.config.group.header'),
      selectedServiceName: selectedServiceName,
      selectedConfigGroup: selectedConfigGroup,
      dependentStepConfigs: dependentStepConfigs,
      selectedGroups: {},
      didInsertElement: function didInsertElement() {
        this._super();
        this.set('selectedGroups', $.extend({}, selectedConfigGroup.get('dependentConfigGroups')));
      },
      bodyClass: Em.CollectionView.extend({
        content: dependentStepConfigs,
        itemViewClass: Em.View.extend({
          templateName: require('templates/common/modal_popups/select_groups_popup'),
          didInsertElement: function didInsertElement() {
            this.set('selectedGroup', this.get('parentView.parentView.selectedConfigGroup.dependentConfigGroups')[this.get('serviceName')]);
          },
          hasGroups: Em.computed.bool('groups.length'),
          serviceName: Em.computed.alias('content.serviceName'),
          selectedGroup: null,
          updateGroup: function () {
            var dependentGroups = $.extend({}, this.get('parentView.parentView.selectedConfigGroup.dependentConfigGroups'));
            dependentGroups[this.get('serviceName')] = this.get('selectedGroup');
            this.set('parentView.parentView.selectedConfigGroup.dependentConfigGroups', dependentGroups);
          }.observes('selectedGroup'),
          groups: function () {
            return this.get('content').get('configGroups').filterProperty('isDefault', false).mapProperty('name');
          }.property('content')
        })
      }),
      onPrimary: function onPrimary() {
        this._super();
        Object.keys(this.get('selectedConfigGroup.dependentConfigGroups')).forEach(function (serviceName) {
          var selectedGroupName = this.get('selectedConfigGroup.dependentConfigGroups')[serviceName];
          var currentGroupName = this.get('selectedGroups')[serviceName] || "";
          var configGroup = this.get('dependentStepConfigs').findProperty('serviceName', serviceName).get('configGroups').findProperty('name', selectedGroupName);
          if (!configGroup) return; //There can be no dependent config group.
          if (selectedGroupName != currentGroupName) {
            /** changing config group for recommendations **/
            configs.filterProperty('serviceName', serviceName).filterProperty('configGroup', selectedGroupName).forEach(function (c) {
              if (configs.filterProperty('serviceName', serviceName).filterProperty('configGroup', currentGroupName)) {
                configs.removeObject(c);
              }
            });
            configs.filterProperty('serviceName', serviceName).filterProperty('configGroup', currentGroupName).setEach('configGroup', selectedGroupName);
            /** danger part!!!! changing config group ***/
            this.get('dependentStepConfigs').findProperty('serviceName', serviceName).get('configs').forEach(function (cp) {
              var dependentConfig = configs.filterProperty('propertyName', cp.get('name')).filterProperty('fileName', App.config.getConfigTagFromFileName(cp.get('filename'))).findProperty('configGroup', selectedGroupName);
              var recommendedValue = dependentConfig && Em.get(dependentConfig, 'recommendedValue');
              if (cp.get('overrides')) {
                var currentGroupOverride = cp.get('overrides').findProperty('group.name', currentGroupName);
                if (currentGroupOverride && currentGroupOverride.get('initialValue') != currentGroupOverride.get('recommendedValue')) {
                  currentGroupOverride.set('group', configGroup);
                  currentGroupOverride.set('recommendedValue', recommendedValue);
                  currentGroupOverride.set('value', recommendedValue);
                } else {
                  var selectedGroupOverride = cp.get('overrides').findProperty('group.name', configGroup.get('name'));
                  if (selectedGroupOverride) {
                    selectedGroupOverride.set('recommendedValue', recommendedValue);
                    selectedGroupOverride.set('value', recommendedValue);
                  } else {
                    App.config.createOverride(cp, { "value": recommendedValue, "recommendedValue": recommendedValue, "isEditable": true }, configGroup);
                  }
                }
              } else {
                App.config.createOverride(cp, { "value": recommendedValue, "recommendedValue": recommendedValue, "isEditable": true }, configGroup);
              }
            }, this);
          }
        }, this);
      },
      onSecondary: function onSecondary() {
        this._super();
        this.get('selectedConfigGroup').set('dependentConfigGroups', this.get('selectedGroups'));
      }
    });
  };
});