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')); } }); }; }); |