Update the policyName send to Policy
[clamp.git] / src / main / resources / META-INF / resources / designer / scripts / propertyExplorerCtrl.js
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP CLAMP
4  * ================================================================================
5  * Copyright (C) 2017 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  * ECOMP is a trademark and service mark of AT&T Intellectual Property.
22  */
23 app.directive('opentext', function ($compile, dialogs, $rootScope){
24     console.log("//////////opentext");
25   return {
26       restrict: "AE",
27       link: function(scope,element,attrs){
28         console.log("link");
29           var elementHTML = '';
30           element.bind("click", function(){
31             console.log("bind");
32                 
33                 if(attrs.ngModel=='decisionIdentifier.textualInformation.testCaseDescription'){
34                         
35                         $rootScope.textAreaData = scope.decisionIdentifier.textualInformation.testCaseDescription;
36                 $rootScope.textAreaTitle = 'Test Case Description';
37                 var dlg = dialogs.create('partials/portfolios/text_area_modal.html','textAreaCtrl',{},{size:'sm',keyboard: true,backdrop: 'static'});
38                         
39                 dlg.result.then(function(name){
40                     console.log("dlg.result");
41                                 scope.decisionIdentifier.textualInformation.testCaseDescription = $rootScope.textAreaData;
42                         },function(){
43                                 scope.decisionIdentifier.textualInformation.testCaseDescription = $rootScope.textAreaData;
44                         });
45                         
46                 }else if(attrs.ngModel=='decisionIdentifier.textualInformation.testStepDescription'){
47                         
48                         $rootScope.textAreaData = scope.decisionIdentifier.textualInformation.testStepDescription;
49                 $rootScope.textAreaTitle = 'Test Step Description';
50                 var dlg = dialogs.create('partials/portfolios/text_area_modal.html','textAreaCtrl',{},{size:'sm',keyboard: true,backdrop: 'static'});
51                         
52                 dlg.result.then(function(name){
53                     console.log("dlg.result");
54                                 scope.decisionIdentifier.textualInformation.testStepDescription = $rootScope.textAreaData;
55                         },function(){
56                                 scope.decisionIdentifier.textualInformation.testStepDescription = $rootScope.textAreaData;
57                         });
58                         
59                 }else if(attrs.ngModel=='decisionIdentifier.textualInformation.expectedResult'){
60                         
61                         $rootScope.textAreaData = scope.decisionIdentifier.textualInformation.expectedResult;
62                 $rootScope.textAreaTitle = 'Expected Result';
63                 
64                 var dlg = dialogs.create('partials/portfolios/text_area_modal.html','textAreaCtrl',{},{size:'sm',keyboard: true,backdrop: 'static'});
65                         dlg.result.then(function(name){
66                     console.log("dlg.result");
67                                 scope.decisionIdentifier.textualInformation.expectedResult = $rootScope.textAreaData;
68                         },function(){
69                                 scope.decisionIdentifier.textualInformation.expectedResult = $rootScope.textAreaData;
70                         });
71                         
72                 }else if(attrs.ngModel=='pathDetails.textualInformation.testPathDescription'){
73                         
74                         if(scope.pathDetails.textualInformation==null){
75                                 scope.pathDetails.textualInformation = {};
76                                 scope.pathDetails.textualInformation.testPathDescription = '';
77                         }
78                         $rootScope.textAreaData = scope.pathDetails.textualInformation.testPathDescription;
79                 $rootScope.textAreaTitle = 'Test Path Description';
80                 var dlg = dialogs.create('partials/portfolios/text_area_modal.html','textAreaCtrl',{},{size:'sm',keyboard: true,backdrop: 'static'});
81                         
82                 dlg.result.then(function(name){
83                     console.log("dlg.result");
84                                 scope.pathDetails.textualInformation.testPathDescription = $rootScope.textAreaData;
85                         },function(){
86                                 scope.decisionIdentifier.textualInformation.testPathDescription = $rootScope.textAreaData;
87                         });
88                 
89                 }else if(attrs.ngModel=='runtimePythonScript.inputParams'){
90                         
91                         $rootScope.textAreaData = scope.runtimePythonScript.inputParams;
92                 $rootScope.textAreaTitle = 'Input Parameter';
93                 var dlg = dialogs.create('partials/portfolios/text_area_modal.html','textAreaCtrl',{},{size:'sm',keyboard: true,backdrop: 'static'});
94                         
95                 dlg.result.then(function(name){
96                     console.log("");
97                                 scope.runtimePythonScript.inputParams = $rootScope.textAreaData;
98                         },function(){
99                                 scope.runtimePythonScript.inputParams = $rootScope.textAreaData;
100                         });
101                 
102                 }
103                 
104           });
105       }
106   }
107 });
108
109 app.directive('inputInfoPropertyClass', function ($compile) {
110     console.log("inputInfoPropertyClass");
111   return {
112       restrict: "C",
113       replace: true,
114       link: function(scope,element,attrs){
115         console.log("link");
116           var elementHTML = '';
117           scope.sourceExplorer = 'PE';
118           angular.forEach(scope.infoType.schemaElements, function(value, key){
119             console.log("schemaElement");
120                   
121                   scope.schemaElement = value;
122                   
123                   if(scope.schemaElement.complexType != null){
124                           if(scope.currentElementName == ''){
125                                   scope.currentElementName = scope.schemaElement.complexType.name;
126                           }
127                           
128                           scope.ParentKey = scope.parentName + '_' + scope.currentElementName;
129                           if(scope.schemaElement.repeatableHierarchicalPrefix != null){
130                                   scope.ParentKey = scope.ParentKey + scope.schemaElement.repeatableHierarchicalPrefix; 
131                           }
132                           scope.showUTMViewMsgHeader = true;
133                           scope.parElement = scope.schemaElement;
134                           scope.tableStyle = 'table-level' + scope.heirarchyLevel + '-tree'; 
135                           scope.tdLabelStyle = 'td-level' + scope.heirarchyLevel + '-label-tree'; 
136                           scope.heirLevel = scope.heirarchyLevel;
137                           
138                           elementHTML = elementHTML + '<div ng-show="schemaElement.complexType != null">';
139                           elementHTML = elementHTML + '<table class="{{tableStyle}}"> <tr>';
140                           elementHTML = elementHTML + '<td class="{{tdLabelStyle}}">';
141                           elementHTML = elementHTML + '<span class="pull-left" ng-click="showUTMViewMsgHeader=!showUTMViewMsgHeader">';
142                           elementHTML = elementHTML + '<i ng-class="showUTMViewMsgHeader == true ?\'fa fa-plus-circle\':\'fa fa-minus-circle\'"></i>';
143                           elementHTML = elementHTML + '</span>';
144                           elementHTML = elementHTML + '<b>{{currentElementName}}</b>';
145                           elementHTML = elementHTML + '</td>';
146                           elementHTML = elementHTML + '</tr></table>';
147                           elementHTML = elementHTML + '<div style="margin-left: 10px" ng-class="{hidden:showUTMViewMsgHeader,chaldean:showUTMViewMsgHeader}">';
148                           elementHTML = elementHTML + '<div class="inputInfoPropertyClassMember" style="margin-left: 10px" ng-repeat="schemaElement in schemaElement.elements"></div>';
149                           elementHTML = elementHTML + '</div>';
150                           elementHTML = elementHTML + '</div>';
151                           var x = angular.element(elementHTML);
152                         element.append(x);
153                         $compile(x)(scope);
154                   }
155               });
156           
157       }
158   }
159 });
160
161 app.directive('inputInfoPropertyClassMember', function ($compile) {
162     console.log("inputInfoPropertyClassMember");
163   return {
164       restrict: "C",
165
166       link: function(scope,element,attrs){
167         console.log("link");
168           var elementHTML = '';
169           
170           scope.currentElementName=scope.objectName;
171           scope.parentName=scope.ParentKey; 
172           scope.parentElement=scope.parElement; 
173           scope.heirarchyLevel = scope.heirLevel + 1;
174           
175           if(scope.schemaElement.element.name != null){
176                   
177                   scope.elementKey=scope.parentName + '_' + scope.schemaElement.element.name;
178                   if(scope.schemaElement.repeatableHierarchicalPrefix != null){
179                           scope.elementKey = scope.elementKey + scope.schemaElement.repeatableHierarchicalPrefix;
180                   }
181                   scope.tableStyle='table-level' + scope.heirarchyLevel + '-tree'; 
182                   scope.tdLabelStyle='td-level' + scope.heirarchyLevel +'-label-tree';
183                   
184                   if(scope.schemaElement.type.complexType != null){
185                           scope.showUTMViewMsgHeader = false;
186                           
187                   }else{
188                           scope.showUTMViewMsgHeader = true;
189                           
190                   }
191                   
192                   elementHTML = elementHTML + '<div ng-show="schemaElement.element.name != null">';
193                   elementHTML = elementHTML + '<div ng-show = "schemaElement.type.complexType != null || utmSchemaExts[elementKey].checked">';
194                   elementHTML = elementHTML + '<table class="{{tableStyle}}"> ';
195                   elementHTML = elementHTML + '<tr>';
196                   elementHTML = elementHTML + '<td style="text-align: left;vertical-align: top;" class="{{tdLabelStyle}}">';
197                   elementHTML = elementHTML + '<span class="pull-left" ng-click="showUTMViewMsgHeader=!showUTMViewMsgHeader">';
198                   elementHTML = elementHTML + '<i expandable ng-class="showUTMViewMsgHeader == true ?\'fa fa-minus-circle\':\'fa fa-plus-circle\'"></i>';
199                   elementHTML = elementHTML + '{{schemaElement.element.name}}  ';
200                   elementHTML = elementHTML + '';
201                   elementHTML = elementHTML + '';
202                   elementHTML = elementHTML + '';
203                   elementHTML = elementHTML + '';
204                   elementHTML = elementHTML + '</span>';
205                   elementHTML = elementHTML + '</td>';
206                   
207                   
208                   
209                   elementHTML = elementHTML + '<td style="width: 70px">&nbsp;&nbsp;&nbsp;</td>';
210                   elementHTML = elementHTML + '<td style="width: 40px; float: left;">';
211                   if(scope.schemaElement.type.complexType == null){
212                           elementHTML = elementHTML + '<div ng-show="schemaElement.type.complexType == null">';
213                           elementHTML = elementHTML + '<div ng-repeat="object in filteredObjects = (schemaElement.type.restriction.minExclusivesAndMinInclusivesAndMaxExclusives | filter: {name : \'enumeration\'})"></div>';
214                           elementHTML = elementHTML + '<div ng-if="filteredObjects.length > 0" class="defaultSelect">';
215                           elementHTML = elementHTML + '<input type="text" class="defaultVal" id="{{elementKey}}" ng-model="decisionIdentifier.elementValues[elementKey]" style="width:150px;"/>';
216                           elementHTML = elementHTML + '<select style="width: 170px; id=;height: 20px;" id="{{elementKey}}" onchange="this.previousElementSibling.value=this.value;" ng-model="decisionIdentifier.elementValues[elementKey]" ';
217                           elementHTML = elementHTML + 'ng-options="filteredObject.value.value as filteredObject.value.value for filteredObject in filteredObjects">';
218                           elementHTML = elementHTML + '<option value=""></option>';
219                           elementHTML = elementHTML + '</select>';
220                           elementHTML = elementHTML + '</div>';
221                           elementHTML = elementHTML + '<div ng-if="filteredObjects == null || filteredObjects.length == 0">';
222                           elementHTML = elementHTML + '<div ng-if="schemaElement.type != null && schemaElement.type==\'boolean\'">';
223                           elementHTML = elementHTML + '<div style="display: inline-flex">';
224                           elementHTML = elementHTML + '<input type="radio" value="true" ng-model="decisionIdentifier.elementValues[elementKey]">True <span style="width:20px;"></span>';
225                           elementHTML = elementHTML + '<input type="radio" value="false" ng-model="decisionIdentifier.elementValues[elementKey]">False';
226                           elementHTML = elementHTML + '';
227                           elementHTML = elementHTML + '';
228                           elementHTML = elementHTML + '</div>';
229                           elementHTML = elementHTML + '</div>';
230                           elementHTML = elementHTML + '<div ng-if="schemaElement.type == null || schemaElement.type != \'boolean\'">';
231                           elementHTML = elementHTML + '<input type="text"  id="{{elementKey}}"  style="width: 170px;" class="defaultVal" ng-model="decisionIdentifier.elementValues[elementKey]"/>';
232                           elementHTML = elementHTML + '';
233                           elementHTML = elementHTML + '</div>';
234                           elementHTML = elementHTML + '';
235                           elementHTML = elementHTML + '</div>';
236                           elementHTML = elementHTML + '</div>';
237                   }
238                   
239                   elementHTML = elementHTML + '</td>';
240                   elementHTML = elementHTML + '</tr>';
241                   elementHTML = elementHTML + '<br/>';
242                   elementHTML = elementHTML + '</table>';
243                   
244                   
245                   
246                   elementHTML = elementHTML + '';
247                   elementHTML = elementHTML + '';
248                   elementHTML = elementHTML + '';
249                   elementHTML = elementHTML + '</div>';
250                   elementHTML = elementHTML + '</div>';
251                   
252                   var x = angular.element(elementHTML);
253                 element.append(x);
254                 $compile(x)(scope);
255                   
256                   
257                   if(scope.schemaElement.type.complexType != null){
258                           var elementHTML2 = '<div ng-show="schemaElement.type.complexType != null">'
259                           elementHTML2 = elementHTML2 + '<div ng-init="parKey=parentName + \'_\' + schemaElement.element.name + (schemaElement.repeatableHierarchicalPrefix != null ? schemaElement.repeatableHierarchicalPrefix : \'\'); heirLevel=heirarchyLevel; parElement=schemaElement; ParentKey=ParentKey+\'_\'+schemaElement.element.name + (schemaElement.repeatableHierarchicalPrefix != null ? schemaElement.repeatableHierarchicalPrefix : \'\')">'
260                           elementHTML2 = elementHTML2 + '<div style="margin-left: 10px" ng-class="{hidden:!showUTMViewMsgHeader,chaldean:!showUTMViewMsgHeader}">'
261                           elementHTML2 = elementHTML2 + '<div class="{{sourceExplorer+\'_\'+parKey}}"></div>'
262                           elementHTML2 = elementHTML2 + '</div>'
263                           elementHTML2 = elementHTML2 + '</div>'
264                           elementHTML2 = elementHTML2 + '</div>';
265                           var x = angular.element(elementHTML2);
266                         element.append(x);
267                         $compile(x)(scope);
268                   }
269                   
270           }
271
272       }
273   }
274 });
275
276 app.controller('propertyExplorerCtrl',['$scope','$rootScope','$location','$modalInstance','dialogs','Datafactory',function($scope, $rootScope, $location, $modalInstance, dialogs, Datafactory) {
277         console.log("propertyExplorerCtrl");
278     $rootScope.bpmnElementName;
279         $rootScope.pathIdentifiers;
280         $scope.propertyExplorerObject = {};
281
282         $scope.pathDetailsList = [];
283         $scope.utmSchemaExts = {};
284         $scope.user3 ="";
285         
286         $scope.close = function(){
287         console.log("close");
288                 $modalInstance.close();
289         };
290         
291         $rootScope.initPropertyExplorer = function() {  
292     console.log("initPropertyExplorer");        
293                 $scope.pathDetailsList = list_model_path_details[selected_model];
294                 if(list_model_schema_extensions[selected_model] != null && list_model_schema_extensions[selected_model].utmSchemaExtentionMap != null) {
295                         $scope.utmSchemaExts = list_model_schema_extensions[selected_model].utmSchemaExtentionMap;
296                 }
297                 
298                  $(".resize-none").each(function() {
299             console.log("resize-none");
300                             $(this).val($(this).val().replace(/,/g, "\n"));
301                           });
302                 
303                 if($scope.pathDetailsList == null)
304                         $scope.pathDetailsList = [];
305                 
306                 if ($rootScope.bpmnElementName != null) {
307                         if ($scope.pathDetailsList != null && $scope.pathDetailsList.length > 0) {
308                                 var isPathDetailsAvailable = false;
309                                 for (var i = 0; i < $scope.pathDetailsList.length; i++) {
310                                         if ($scope.pathDetailsList[i].conditionalNode == $rootScope.bpmnElementName) {
311                                                 isPathDetailsAvailable = true;
312                                         }
313                                 }
314
315                                 if (!isPathDetailsAvailable) {
316                                         $scope.addPathDetails();
317                                 }
318                         } else if ($scope.pathDetailsList == null) {
319                                 $scope.addPathDetails();
320                         }
321                 }
322         };
323
324         $scope.addPathDetails = function() {
325         console.log("addPathDetails");
326                 $scope.pathDetails = {};
327                 $scope.pathDetails.conditionalNode = $rootScope.bpmnElementName;
328                 $scope.pathDetailsList.push($scope.pathDetails);
329                 $scope.addDecisionIdentifier($scope.pathDetails);
330                 list_model_path_details[selected_model] = $scope.pathDetailsList;               
331         };
332         
333         
334
335         $scope.addDecisionIdentifier = function(pathDtls) {
336         console.log("addDecisionIdentifier");
337                 $scope.decisionIdentifier = {};
338                 $scope.decisionIdentifier.textualInformation={};
339                 //$scope.decisionIdentifier.textualInformation.use=true;
340                 if (pathDtls.decisionIdentifiers != null) {
341                         if(angular.isUndefined($scope.decisionIdentifier.textualInformation.use))
342                                 $scope.decisionIdentifier.textualInformation.use = true;                        
343                         pathDtls.decisionIdentifiers.push($scope.decisionIdentifier);
344                 } else {
345                         pathDtls.decisionIdentifiers = [];
346                         if(angular.isUndefined($scope.decisionIdentifier.textualInformation.use))
347                                 $scope.decisionIdentifier.textualInformation.use = true;                        
348                         pathDtls.decisionIdentifiers.push($scope.decisionIdentifier);
349                 }
350         };
351
352         $scope.isElementCheckedinExplorer = function(elementId) {
353         console.log("isElementCheckedinExplorer");
354                 console.log("Enter into property explorer");
355                 if (elementId.indexOf("_decisionValue") != -1) {
356                         var elementIdSplit = elementId.split("_decisionValue");
357                         var elementCheckBoxId = elementIdSplit[0] + "_checkbox";
358                         var elementCheckBoxValue = document.getElementById(elementCheckBoxId);
359                         if (elementCheckBoxValue != "" && elementCheckBoxValue.checked) {
360                                 return true;
361                         }
362                         return false;
363                 }
364                 return false;
365         };
366
367         $scope.moreDecisions = function(pathDtls) {
368         console.log("moreDecisions");
369                 //alert("PropertyExplorerCtrl entering moreDecisions");
370                 $scope.addDecisionIdentifier(pathDtls);
371                 //alert("PropertyExplorerCtrl exiting moreDecisions");
372         };
373
374         $scope.morePaths = function() {
375         console.log("morePaths");
376                 var elementCount=0;
377                 $scope.pathDetailsList = list_model_path_details[selected_model];
378                 if ($scope.pathDetailsList == null){
379                         if($rootScope.pathIdentifiers.length>0){
380                                 $scope.pathDetailsList = [];
381                                 $scope.addPathDetails();
382                         }
383                         else
384                                 dialogs.error('Error','Please define atleast 1 path in model to proceed.');
385                 }
386                 else
387                 {
388                 for(var i=0;i<$scope.pathDetailsList.length;i++){
389                         if($rootScope.bpmnElementName == $scope.pathDetailsList[i].conditionalNode){
390                                 elementCount++;
391                         }
392                 }
393                 if(elementCount < $rootScope.pathIdentifiers.length)
394                         $scope.addPathDetails();
395                 else
396                         dialogs.error('Error','The number of paths defined for this conditional node cannot be more than the number of Path Identifiers defined in the Model.');
397         }
398         };
399
400         $rootScope.initPropertyExplorer();
401         
402         $scope.sendDbData = function(dbToolRequestList){
403         console.log("sendDbData");
404                 if(dbToolRequestList!=null){
405                         Datafactory.setDbDataList(dbToolRequestList);
406                 }
407                 else{
408                         dbToolRequestList=[];
409                         Datafactory.setDbDataList(dbToolRequestList);
410                 }
411         };
412
413         $scope.sendAssertData = function(xmlAsserterRequest){
414         console.log("sendAssertData");
415                 if(xmlAsserterRequest!=null){
416                         Datafactory.setXmlAsserter(xmlAsserterRequest);
417                 }
418                 else{
419                         xmlAsserterRequest={};
420                         Datafactory.setXmlAsserter(xmlAsserterRequest);
421                 }
422                 
423         };      
424
425         $scope.sendRuntimePythonScriptData = function(pathDtls){
426         console.log("sendRuntimePythonScriptData");
427                 if(pathDtls!=null){
428                         Datafactory.setRuntimePythonScriptList(pathDtls);
429                 }
430                 else{
431                         pathDtls=[];
432                         Datafactory.setRuntimePythonScriptList(pathDtls);
433                 }
434                 
435         };
436 }]);