f4c658ce177ddf94c24ef4f9220dd9a6a6fa7a67
[clamp.git] / src / main / resources / META-INF / resources / designer / scripts / GlobalPropertiesCtrl.js
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP CLAMP
4  * ================================================================================
5  * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights
6  *                             reserved.
7  * ================================================================================
8  * Licensed under the Apache License, Version 2.0 (the "License"); 
9  * you may not use this file except in compliance with the License. 
10  * You may obtain a copy of the License at
11  * 
12  * http://www.apache.org/licenses/LICENSE-2.0
13  * 
14  * Unless required by applicable law or agreed to in writing, software 
15  * distributed under the License is distributed on an "AS IS" BASIS, 
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
17  * See the License for the specific language governing permissions and 
18  * limitations under the License.
19  * ============LICENSE_END============================================
20  * ===================================================================
21  * 
22  */
23 app.controller('GlobalPropertiesCtrl', [
24 '$scope',
25 '$rootScope',
26 '$uibModalInstance',
27 'cldsModelService',
28 '$location',
29 'dialogs',
30 'cldsTemplateService',
31 function($scope, $rootScope, $uibModalInstance, cldsModelService, $location,
32          dialogs, cldsTemplateService) {
33         $scope.$watch('name', function(newValue, oldValue) {
34                 var services = asdc_Services
35                 setASDCFields()
36                 // add blank service item as the default service, to force user chose
37                 // the correct service by themselves
38                 $("#service").append("<option></option>")
39                 for (k in services) {
40                         $("#service").append(
41                         "<option value=" + k + ">" + services[k] + "</option>")
42                 }
43                 var el = elementMap["global"];
44                 if (el !== undefined) {
45                         for (var i = 0; i < el.length; i++) {
46                                 if (el[i].name === 'deployParameters')
47                                 {
48                                         // This is a special case, that value is not a string but a JSON
49                                         $("#" + el[i].name).val(JSON.stringify(el[i].value));
50                                 } else {
51                                         $("#" + el[i].name).val(el[i].value);
52                                 }
53                         }
54                 }
55                 setMultiSelect();
56                 if (readMOnly) {
57                         $("#savePropsBtn").attr("disabled", "");
58                         $('select[multiple] option').each(function() {
59                                 var input = $('input[value="' + $(this).val() + '"]');
60                                 input.prop('disabled', true);
61                                 input.parent('li').addClass('disabled');
62                         });
63                         $('input[value="multiselect-all"]').prop('disabled', true).parent(
64                         'li').addClass('disabled');
65                         ($("select:not([multiple])")).multiselect("disable");
66                 }
67         });
68         $scope.retry = function() {
69                 console.log("retry");
70         }
71         $scope.close = function() {
72                 console.log("close");
73                 $uibModalInstance.close("closed");
74         };
75     $scope.convertDeployParametersJsonToString = function() {
76         var index = elementMap["global"].findIndex(function(e) {
77                 return (typeof e == "object" && !(e instanceof Array))
78                 && "deployParameters" == e["name"];
79         });
80         if (index != -1) {
81                 $('#deployParameters').val(JSON.stringify(elementMap["global"][index].value));
82         }
83     }
84     
85     function noRepeats(form) {
86         var select = {};
87         for (var i = 0; i < form.length; i++) {
88                 if (form[i].hasOwnProperty("name")) {
89                         if (form[i].name === 'deployParameters') {
90                                         // This is a special case, that value MUST not be a string but a JSON
91                                 select[form[i].name]=JSON.parse(form[i].value);
92                         } else {
93                                 if (select[form[i].name] === undefined)
94                                         select[form[i].name] = []
95                                 select[form[i].name].push(form[i].value);
96                         }
97                 }
98         }
99         var arr = []
100         for (s in select) {
101                 var f = {}
102                 f.name = s
103                 f.value = select[s]
104                 if (!(s == "service" && f.value == "")) {
105                         arr.push(f)
106                 }
107         }
108         return arr
109     }
110     
111     $scope.submitForm = function() {
112         saveGlobalProperties(noRepeats($("#saveProps").serializeArray()))
113         //module reset, based on property updates
114         if (elementMap["global"]) {
115                 $.each(Object.keys(elementMap), function(i, v) {
116                         if ((v.match(/^Policy/)) && asDiff) {
117                                 elementMap[v] = {};
118                         }
119                         if ((v.match(/^TCA/)) && (vfDiff || serDiff)) {
120                                 elementMap[v] = {};
121                         }
122                 });
123         }
124         $uibModalInstance.close();
125     }
126   
127 } ]);