2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights
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
12 * http://www.apache.org/licenses/LICENSE-2.0
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.
24 app.directive( "contextMenu", function($compile){
25 console.log("contextMenu");
27 contextMenu.restrict = "AE";
28 contextMenu.link = function( lScope, lElem, lAttr ){
30 lElem.on("contextmenu", function (e) {
31 console.log("contextmenu");
33 lElem.append( $compile( lScope[ lAttr.contextMenu ])(lScope) );
34 $("#contextmenu-node").css("left", e.clientX);
35 $("#contextmenu-node").css("top", e.clientY);
37 lElem.on("mouseleave", function(e){
38 console.log("mouseleave");
39 if($("#contextmenu-node") )
40 $("#contextmenu-node").remove();
42 lElem.on("click", function(e){
44 if($("#contextmenu-node") )
45 $("#contextmenu-node").remove();
51 app.directive('ngRightClick', function($parse) {
52 console.log("ngRightClick");
53 console.log("ngRightClick");
54 return function(scope, element, attrs) {
55 console.log("returnfunction");
56 var fn = $parse(attrs.ngRightClick);
57 element.bind('contextmenu', function(event) {
58 console.log("contextmenu");
59 scope.$apply(function() {
61 event.preventDefault();
62 fn(scope, {$event:event});
68 app.directive('inputInfoClass', function ($compile) {
69 console.log("inputInfoClass");
73 link: function(scope,element,attrs){
76 scope.sourceExplorer = 'AM';
77 angular.forEach(scope.infoType.schemaElements, function(value, key){
78 console.log("schemaElement");
80 scope.schemaElement = value;
82 if(scope.schemaElement.complexType != null){
83 if(scope.currentElementName == ''){
84 scope.currentElementName = scope.schemaElement.complexType.name;
87 scope.ParentKey = scope.parentName + '_' + scope.currentElementName;
88 if(scope.schemaElement.repeatableHierarchicalPrefix != null){
89 scope.ParentKey = scope.ParentKey + scope.schemaElement.repeatableHierarchicalPrefix;
91 scope.parElement = scope.schemaElement;
92 scope.tableStyle = 'table-level' + scope.heirarchyLevel + '-tree';
93 scope.tdLabelStyle = 'td-level' + scope.heirarchyLevel + '-label-tree';
94 scope.heirLevel = scope.heirarchyLevel;
96 elementHTML = elementHTML + '<div ng-show="schemaElement.complexType != null">';
97 elementHTML = elementHTML + '<table class="{{tableStyle}}"> <tr>';
98 elementHTML = elementHTML + '<td class="{{tdLabelStyle}}">';
99 elementHTML = elementHTML + '<span class="pull-left" ng-click="showUTMViewMsgHeader=!showUTMViewMsgHeader">';
100 elementHTML = elementHTML + '<i ng-class="showUTMViewMsgHeader == true ?\'fa fa-plus-circle\':\'fa fa-minus-circle\'"></i>';
101 elementHTML = elementHTML + '</span>';
102 elementHTML = elementHTML + '<b>{{currentElementName}}</b>';
103 elementHTML = elementHTML + '</td>';
104 elementHTML = elementHTML + '<td class="td-tree"></td>';
105 elementHTML = elementHTML + '<td class="td-tree"></td>';
106 elementHTML = elementHTML + '<td class="td-tree"></td>';
107 elementHTML = elementHTML + '<td class="td-blank"></td>';
108 elementHTML = elementHTML + '<td class="td-default_value-tree"> </td>';
109 elementHTML = elementHTML + '</tr></table>';
110 elementHTML = elementHTML + '<div style="margin-left: 10px" ng-class="{hidden:showUTMViewMsgHeader,chaldean:showUTMViewMsgHeader}">';
111 elementHTML = elementHTML + '<div class="inputInfoClassMember" style="margin-left: 10px" ng-repeat="schemaElement in schemaElement.elements"></div>';
112 elementHTML = elementHTML + '</div>';
113 elementHTML = elementHTML + '</div>';
114 var x = angular.element(elementHTML);
124 app.directive('inputInfoClassMember', function ($compile, $timeout) {
125 console.log("inputInfoClassMember");
129 link: function(scope,element,attrs){
132 var elementHTML = '';
134 scope.currentElementName=scope.objectName;
135 scope.parentName=scope.ParentKey;
136 scope.parentElement=scope.parElement;
137 scope.heirarchyLevel = scope.heirLevel + 1;
138 if(scope.schemaElement.element.name != null){
140 scope.elementKey=scope.parentName + '_' + scope.schemaElement.element.name;
141 if(scope.schemaElement.repeatableHierarchicalPrefix != null){
142 scope.elementKey = scope.elementKey + scope.schemaElement.repeatableHierarchicalPrefix;
144 scope.tableStyle='table-level' + scope.heirarchyLevel + '-tree';
145 scope.tdLabelStyle='td-level' + scope.heirarchyLevel +'-label-tree';
147 if(scope.schemaElement.type.complexType != null){
148 scope.showUTMViewMsgHeader = false;
151 scope.showUTMViewMsgHeader = true;
152 if(scope.schemaElement.element.simpleType != null){
153 if(scope.schemaElement.element.simpleType.restriction != null){
154 if(scope.schemaElement.element.simpleType.restriction.minExclusivesAndMinInclusivesAndMaxExclusives != null){
155 angular.forEach(scope.schemaElement.element.simpleType.restriction.minExclusivesAndMinInclusivesAndMaxExclusives, function(value, key){
156 if(value.name!=null){
157 if((value.name).indexOf('enumeration') > -1){
158 scope.showUTMViewMsgHeader = false;
167 elementHTML = elementHTML + '<div ng-show="schemaElement.element.name != null">';
168 elementHTML = elementHTML + '<div id="elementKey">';
169 elementHTML = elementHTML + '<table class="{{tableStyle}}"> ';
170 elementHTML = elementHTML + '<tr>';
171 elementHTML = elementHTML + '<td style="text-align: left;vertical-align: top;" class="{{tdLabelStyle}}">';
172 elementHTML = elementHTML + '<div ng-mouseover="getContextMenu(schemaElement,elementKey)" context-menu="myContextDiv">';
173 elementHTML = elementHTML + '<span class="pull-left" ng-click="showUTMViewMsgHeader=!showUTMViewMsgHeader" ng-style="(schemaElement.type.recursive ||schemaElement.list) && {\'color\':\'#0000FF\'} || {\'color\': \'#444444\'}">';
174 elementHTML = elementHTML + '<i expandable ng-class="showUTMViewMsgHeader == true ?\'fa fa-minus-circle\':\'fa fa-plus-circle\'"></i>';
175 elementHTML = elementHTML + '{{schemaElement.element.name}} ';
176 elementHTML = elementHTML + '';
177 elementHTML = elementHTML + '';
178 elementHTML = elementHTML + '';
179 elementHTML = elementHTML + '';
180 elementHTML = elementHTML + '</span>';
181 elementHTML = elementHTML + '</div>';
182 elementHTML = elementHTML + '</td>';
184 if(scope.repeatableHeirarchicalElementMap !=null){
185 elementHTML = elementHTML + '<div ng-if= "repeatableHeirarchicalElementMap !=null">';
186 elementHTML = elementHTML + '<div ng-if="repeatableHeirarchicalElementMap[elementKey] != null">';
187 elementHTML = elementHTML + '<div ng-repeat="repeatableElement in repeatableHeirarchicalElementMap[elementKey].repeatableElements">';
188 elementHTML = elementHTML + '<div ng-init="addRepeatableElement1(schemaElement, parentElement, elementKey, $index)"></div>';
189 elementHTML = elementHTML + '</div>';
190 elementHTML = elementHTML + '<div ng-repeat="heirarchicalElement in repeatableHeirarchicalElementMap[elementKey].heirarchicalElements">';
191 elementHTML = elementHTML + '</div>';
192 elementHTML = elementHTML + '<div ng-init="addHierarchicalElement1(schemaElement, parentElement, elementKey, $index)"></div>';
193 elementHTML = elementHTML + '</div>';
194 elementHTML = elementHTML + '</div>';
197 elementHTML = elementHTML + '<td class="td-blank"></td>';
198 elementHTML = elementHTML + '<td style="text-align: right;" class="td-tree">';
199 if(scope.schemaElement.type.complexType == null){
200 elementHTML = elementHTML + '<div><input type="checkbox" id="{{elementKey + \'_checkbox\'}}" ng-model="utmModelSchemaExtension.utmSchemaExtentionMap[elementKey].checked" ng-init="requiredValues[elementKey]=schemaElement.element.minOccurs;utmModelSchemaExtension.utmSchemaExtentionMap[elementKey].checked=(utmModelSchemaExtension.radioSelection == \'Required Only\' && schemaElement.element.minOccurs !=0) || utmModelSchemaExtension.radioSelection == \'Select All\' || utmModelSchemaExtension.utmSchemaExtentionMap[elementKey].checked" ng-change="onChange()"/></div>'
203 elementHTML = elementHTML + '</td>';
204 elementHTML = elementHTML + '<td style="text-align:center;word-wrap: break-word" class="td-default_value-tree"><label id="{{elementKey + \'_label\'}}"/>{{utmModelSchemaExtension.utmSchemaExtentionMap[elementKey].defaultValue}}</td>';
205 elementHTML = elementHTML + '</tr>';
206 elementHTML = elementHTML + '</table>';
207 elementHTML = elementHTML + '<div style="margin-left: 10px" ng-class="{hidden:!showUTMViewMsgHeader,chaldean:!showUTMViewMsgHeader}">';
209 if(scope.schemaElement.type != null && scope.schemaElement.type.restriction != null){
210 elementHTML = elementHTML + '<div ng-if = "schemaElement.type != null && schemaElement.type.restriction != null">';
211 elementHTML = elementHTML + '<div ng-repeat="object in filteredObjects = (schemaElement.type.restriction.minExclusivesAndMinInclusivesAndMaxExclusives | filter: {name : \'enumeration\'})">';
212 elementHTML = elementHTML + '{{object.value.value}}';
213 elementHTML = elementHTML + '</div>';
214 elementHTML = elementHTML + '</div>';
217 elementHTML = elementHTML + '</div>';
218 elementHTML = elementHTML + '';
219 elementHTML = elementHTML + '';
220 elementHTML = elementHTML + '';
221 elementHTML = elementHTML + '</div>';
222 elementHTML = elementHTML + '</div>';
224 var x = angular.element(elementHTML);
229 if(scope.schemaElement.type.complexType != null){
230 if(scope.schemaElement.repeatableHierarchicalPrefix!=null){
232 var elementHTML2 = '<div ng-show="schemaElement.type.complexType != null">'
233 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 : \'\');">'
234 elementHTML2 = elementHTML2 + '<div style="margin-left: 10px" ng-class="{hidden:!showUTMViewMsgHeader,chaldean:!showUTMViewMsgHeader}">'
235 if(scope.schemaElement.repeatableHierarchicalPrefix!=null){
236 elementHTML2 = elementHTML2 + '<div id="{{parKey}}"></div>'
238 elementHTML2 = elementHTML2 + '<div id="{{parKey}}"></div>'
240 elementHTML2 = elementHTML2 + '</div>'
241 elementHTML2 = elementHTML2 + '</div>'
242 elementHTML2 = elementHTML2 + '</div>';
243 var x = angular.element(elementHTML2);
256 app.directive('expandable', function ($compile) {
257 console.log("expandable");
260 link: function(scope,element,attrs){
262 var elementHTML = '';
263 element.bind("click", function(){
264 console.log("bindclick");
265 //console.log('directive clicked!!!');
266 //console.log(scope.sourceExplorer);
267 //console.log(scope.parKey);
269 var test1 = document.getElementById(scope.parKey);
272 if((test1.getElementsByTagName('div') != null)&&(scope.schemaElement.type.elements != null)){
274 var htmlCount = test1.getElementsByTagName('div').length;
275 var schemaElementCount = scope.schemaElement.type.elements.length;
276 //console.log(htmlCount);
277 //console.log(schemaElementCount);
279 if(htmlCount<schemaElementCount){
280 var x = angular.element(test1).append('<div class="inputInfoClassMember" style="margin-left: 10px" ng-repeat="schemaElement in schemaElement.type.elements" ng-init="currentElementName=schemaElement.element.name;parentName=parKey; parentElement=parElement; heirarchyLevel=heirLevel+1 ;"></div>');
281 $compile(x)(angular.element('#'+scope.parKey).scope());
286 var cElements = document.getElementsByClassName(scope.sourceExplorer+'_'+scope.parKey);
287 if(cElements != null){
289 for(var i=0; i<cElements.length; i++) {
290 if((cElements[i].getElementsByTagName('div') != null)&&(scope.schemaElement.type.elements != null)){
291 var htmlCount = cElements[i].getElementsByTagName('div').length;
292 var schemaElementCount = scope.schemaElement.type.elements.length;
293 //console.log(htmlCount);
294 //console.log(schemaElementCount);
295 //console.log(cElements[i]);
296 if(htmlCount<schemaElementCount){
298 if(scope.sourceExplorer=='SDV'){
299 x = angular.element(cElements[i]).append('<div class="inputInfoDVClassMember" style="margin-left: 10px" ng-repeat="schemaElement in schemaElement.type.elements" ng-init="currentElementName=schemaElement.element.name;parentName=parKey; parentElement=parElement; heirarchyLevel=heirLevel+1 ;"></div>');
300 }else if(scope.sourceExplorer=='PE'){
301 x = angular.element(cElements[i]).append('<div class="inputInfoPropertyClassMember" style="margin-left: 10px" ng-repeat="schemaElement in schemaElement.type.elements" ng-init="currentElementName=schemaElement.element.name;parentName=parKey; parentElement=parElement; heirarchyLevel=heirLevel+1 ;"></div>');
302 }else if(scope.sourceExplorer=='USU'||scope.sourceExplorer=='USC'){
303 x = angular.element(cElements[i]).append('<div class="inputInfoUpgradeClassMember" style="margin-left: 10px" ng-repeat="schemaElement in schemaElement.type.elements" ng-init="currentElementName=schemaElement.element.name;parentName=parKey; parentElement=parElement; heirarchyLevel=heirLevel+1 ;"></div>');
306 $compile(x)(angular.element('.'+scope.sourceExplorer+'_'+scope.parKey).scope());
317 app.controller('ActivityModellingCtrl', ['$scope', '$rootScope', '$location','dialogs', '$filter','Datafactory','soapRequestService', function($scope,$rootScope, $location,dialogs,$filter,Datafactory,soapRequestService){
319 console.log("ActivityModellingCtrl");
322 $scope.parentElementList=[];
323 $scope.schemaElementKeyMap={};
324 $scope.isVisible = false;
325 $rootScope.countElementKeyMap={};
326 $rootScope.depthElementKeyMap={};
327 $rootScope.isHorR = true;
328 $rootScope.requiredValues = {};
330 $scope.utmModelSchemaExtension = {};
331 $rootScope.repeatableHeirarchicalElementMap = {};
336 $rootScope.initProjectExplorer = function () {
337 console.log("initProjectExplorer");
338 if(map_model_repeatable_heirarchical_elements[selected_model] != null) {
339 $rootScope.repeatableHeirarchicalElementMap = map_model_repeatable_heirarchical_elements[selected_model];
340 ////console.log("$scope.repeatableHeirarchicalElementMap :: " + $rootScope.repeatableHeirarchicalElementMap);
344 ////console.log("$rootScope.utmModelSchemaExtension :: " + JSON.stringify(list_model_schema_extensions[selected_model]));
345 if(list_model_schema_extensions[selected_model] != null) {
346 $scope.utmModelSchemaExtension = list_model_schema_extensions[selected_model];
347 if($scope.utmModelSchemaExtension.radioSelection == null || $scope.utmModelSchemaExtension.radioSelection == '')
348 $scope.utmModelSchemaExtension.radioSelection = 'Required Only';
352 $rootScope.initProjectExplorer();
354 $scope.onChange= function(){
355 console.log("onChange");
357 list_model_schema_extensions[selected_model] = $scope.utmModelSchemaExtension;
361 $rootScope.requiredOnly = function(){
362 console.log("requiredOnly");
363 for (var key in $scope.utmModelSchemaExtension.utmSchemaExtentionMap) {
365 ////console.log(key);
367 if ($scope.utmModelSchemaExtension.utmSchemaExtentionMap.hasOwnProperty(key)) {
368 //$scope.utmModelSchemaExtension.utmSchemaExtentionMap[key].checked = $scope.utmModelSchemaExtension.radioSelection == "Required Only" && $rootScope.requiredValues[key] != 0;
369 $scope.utmModelSchemaExtension.utmSchemaExtentionMap[key].checked = $rootScope.requiredValues[key] != 0;
372 angular.forEach($scope.utmModelSchemaExtension.utmSchemaExtentionMap, function(value, key) {
373 console.log("forEach");
374 //console.log(key + ': ' + value);
378 $rootScope.selectAll = function(){
379 console.log("selectAll");
380 for (var key in $scope.utmModelSchemaExtension.utmSchemaExtentionMap) {
382 if ($scope.utmModelSchemaExtension.utmSchemaExtentionMap.hasOwnProperty(key)) {
384 $scope.utmModelSchemaExtension.utmSchemaExtentionMap[key].checked = true;
391 $rootScope.unSelectAll = function(){
392 console.log("unSelectAll");
393 for (var key in $scope.utmModelSchemaExtension.utmSchemaExtentionMap) {
395 if ($scope.utmModelSchemaExtension.utmSchemaExtentionMap.hasOwnProperty(key)) {
397 $scope.utmModelSchemaExtension.utmSchemaExtentionMap[key].checked = false;
403 /* $scope.generatedXML = function(xmlValue){
404 $scope.generatedXMLVal=xmlValue;
405 var dlg = dialogs.create('partials/portfolios/generatedXML.html','generateXMLCtrl',{},{size:'lg',keyboard: true,backdrop: true,windowClass: 'my-class'});
409 //Functionality for Hierarchical Elements
410 $scope.addHierarchicalElement1 = function(schemaElement, parentElement, elementKey, index){
411 console.log("addHeirarchicalElement1");
412 if($rootScope.isHorR){
413 //console.log("Entering addHeirarchicalElement1");
414 $scope.clonedSchemaElement={};
415 angular.copy(schemaElement, $scope.clonedSchemaElement);
417 if($scope.clonedSchemaElement.repeatableHierarchicalPrefix == null)
418 $scope.clonedSchemaElement.repeatableHierarchicalPrefix = "";
420 //Remove any Heirarchical/Repeatable Elements in the ClonedSchemaElement
421 for(var i=0;i<schemaElement.type.elements.length;i++) {
422 if(schemaElement.type.elements[i].element.name.indexOf(schemaElement.element.name) != -1) {
423 $scope.clonedSchemaElement.type.elements.splice(i,(schemaElement.type.elements.length-i));
427 $scope.clonedSchemaElement.repeatableHierarchicalPrefix = (index+1);
429 schemaElement.type.elements.push($scope.clonedSchemaElement);
434 //Functionality for Hierarchical Elements
435 $scope.addHierarchicalElement = function(schemaElement, parentElement, elementKey){
436 console.log("addHierarchicalElement");
437 $rootScope.isHorR = false;
438 $scope.clonedSchemaElement={};
439 angular.copy(schemaElement, $scope.clonedSchemaElement);
441 if($scope.clonedSchemaElement.repeatableHierarchicalPrefix == null)
442 $scope.clonedSchemaElement.repeatableHierarchicalPrefix = "";
444 //Remove any Heirarchical/Repeatable Elements in the ClonedSchemaElement
445 for(var i=0;i<schemaElement.type.elements.length;i++) {
446 if(schemaElement.type.elements[i].element.name.indexOf(schemaElement.element.name) != -1) {
447 $scope.clonedSchemaElement.type.elements.splice(i,(schemaElement.type.elements.length-i));
452 schemaElement.type.elements.push($scope.clonedSchemaElement);
454 if(list_model_repeatable_heirarchical_elements[selected_model] == null) {
455 list_model_repeatable_heirarchical_elements[selected_model] = {};
456 list_model_repeatable_heirarchical_elements[selected_model].repeatableHeirachicalSchemaElements = [];
459 if(map_model_repeatable_heirarchical_elements[selected_model] == null)
460 map_model_repeatable_heirarchical_elements[selected_model] = {};
462 if(map_model_repeatable_heirarchical_elements[selected_model][elementKey] == null) {
463 $scope.repeatableHeirachicalSchemaElement = {};
464 $scope.repeatableHeirachicalSchemaElement.elementKey = elementKey;
466 var count = list_model_repeatable_heirarchical_elements[selected_model].repeatableHeirachicalSchemaElements.length;
467 list_model_repeatable_heirarchical_elements[selected_model].repeatableHeirachicalSchemaElements[count] = $scope.repeatableHeirachicalSchemaElement;
469 $scope.clonedSchemaElement.repeatableHierarchicalPrefix = "1";
470 $scope.repeatableHeirachicalSchemaElementChild = {};
471 $scope.repeatableHeirachicalSchemaElementChild.elementKey = elementKey+'_'+ schemaElement.element.name + $scope.clonedSchemaElement.repeatableHierarchicalPrefix;
473 $scope.repeatableHeirachicalSchemaElement.heirarchicalElements = [];
474 $scope.repeatableHeirachicalSchemaElement.heirarchicalElements[0] = $scope.repeatableHeirachicalSchemaElementChild;
476 map_model_repeatable_heirarchical_elements[selected_model][elementKey] = $scope.repeatableHeirachicalSchemaElement;
477 map_model_repeatable_heirarchical_elements[selected_model][$scope.repeatableHeirachicalSchemaElementChild.elementKey] = $scope.repeatableHeirachicalSchemaElementChild;
479 if(map_model_repeatable_heirarchical_elements[selected_model][elementKey].heirarchicalElements == null) {
480 $scope.clonedSchemaElement.repeatableHierarchicalPrefix = "1";
481 $scope.repeatableHeirachicalSchemaElementChild = {};
482 $scope.repeatableHeirachicalSchemaElementChild.elementKey = elementKey+'_'+schemaElement.element.name + $scope.clonedSchemaElement.repeatableHierarchicalPrefix;
484 map_model_repeatable_heirarchical_elements[selected_model][elementKey].heirarchicalElements = [];
485 map_model_repeatable_heirarchical_elements[selected_model][elementKey].heirarchicalElements[0] = $scope.repeatableHeirachicalSchemaElementChild;
487 map_model_repeatable_heirarchical_elements[selected_model][$scope.repeatableHeirachicalSchemaElementChild.elementKey] = $scope.repeatableHeirachicalSchemaElementChild;
489 var count = map_model_repeatable_heirarchical_elements[selected_model][elementKey].heirarchicalElements.length;
491 $scope.clonedSchemaElement.repeatableHierarchicalPrefix = ""+(count+1);
492 $scope.repeatableHeirachicalSchemaElementChild = {};
493 $scope.repeatableHeirachicalSchemaElementChild.elementKey = elementKey+'_'+schemaElement.element.name + $scope.clonedSchemaElement.repeatableHierarchicalPrefix;
495 map_model_repeatable_heirarchical_elements[selected_model][elementKey].heirarchicalElements[count] = $scope.repeatableHeirachicalSchemaElementChild;
497 map_model_repeatable_heirarchical_elements[selected_model][$scope.repeatableHeirachicalSchemaElementChild.elementKey] = $scope.repeatableHeirachicalSchemaElementChild;
502 $scope.addRepeatableElement1 = function(schemaElement, parentElement, elementKey, index){
503 console.log("addRepeatableElement1");
504 if($rootScope.isHorR == true){
505 $scope.clonedSchemaElement={};
506 angular.copy(schemaElement, $scope.clonedSchemaElement);
508 if($scope.clonedSchemaElement.repeatableHierarchicalPrefix == null)
509 $scope.clonedSchemaElement.repeatableHierarchicalPrefix = "";
511 $scope.clonedSchemaElement.repeatableHierarchicalPrefix = $scope.clonedSchemaElement.repeatableHierarchicalPrefix +"-"+(index+1);
513 $scope.childElements = {};
514 if(parentElement.type != null && parentElement.type.elements != null) {
515 $scope.childElements = parentElement.type.elements;
516 } else if (parentElement.elements != null) {
517 $scope.childElements = parentElement.elements;
520 if(schemaElement.type.complexType != null){
521 for(var i=0;i<$scope.childElements.length;i++){
522 if(angular.equals($scope.childElements[i],schemaElement)){
523 //console.log("Complex Element List Match :" +$scope.childElements[i]);
524 $scope.childElements.splice((i+1),0,$scope.clonedSchemaElement);
528 } else if(schemaElement.element.name !=null) {
529 for(var j=0;j<$scope.childElements.length;j++){
530 if(angular.equals($scope.childElements[j],schemaElement)){
531 //console.log("Element List Match :" +$scope.childElements[j]);
532 $scope.childElements.splice((j+1),0,$scope.clonedSchemaElement);
542 $scope.getContextMenu = function(schemaElement,elementKey){
543 console.log("getContextMenu");
544 $scope.myContextDiv ="";
545 if(schemaElement.type.recursive && schemaElement.list){
546 if(schemaElement.repeatableHierarchicalPrefix != null){
547 $scope.myContextDiv = "<ul id='contextmenu-node' ><li class='contextmenu-item' ng-click='addHierarchicalElement(schemaElement, parentElement, elementKey)'> Add Hierarchical Element </li><li class='contextmenu-item' ng-click='addRepeatableElement(schemaElement, parentElement, elementKey)'> Add Repeatable Element </li><li class='contextmenu-item' ng-click='removeElement(schemaElement, parentElement, elementKey)'>Remove Element</li></ul>";
549 $scope.myContextDiv = "<ul id='contextmenu-node' ><li class='contextmenu-item' ng-click='addHierarchicalElement(schemaElement, parentElement, elementKey)'> Add Hierarchical Element </li><li class='contextmenu-item' ng-click='addRepeatableElement(schemaElement, parentElement, elementKey)'> Add Repeatable Element </li></ul>";
551 }else if(schemaElement.type.recursive){
552 if(schemaElement.repeatableHierarchicalPrefix != null){
553 $scope.myContextDiv = "<ul id='contextmenu-node' ><li class='contextmenu-item' ng-click='addHierarchicalElement(schemaElement, parentElement, elementKey)'> Add Hierarchical Element </li><li class='contextmenu-item' ng-click='removeElement(schemaElement, parentElement, elementKey)'>Remove Element</li></ul>";
555 $scope.myContextDiv = "<ul id='contextmenu-node' ><li class='contextmenu-item' ng-click='addHierarchicalElement(schemaElement, parentElement, elementKey)'> Add Hierarchical Element </li></ul>";
557 }else if(schemaElement.list){
558 if(schemaElement.repeatableHierarchicalPrefix != null){
559 $scope.myContextDiv = "<ul id='contextmenu-node' ><li class='contextmenu-item' ng-click='addRepeatableElement(schemaElement, parentElement, elementKey)'> Add Repeatable Element </li><li class='contextmenu-item' ng-click='removeElement(schemaElement, parentElement, elementKey)'>Remove Element</li></ul>";
561 $scope.myContextDiv = "<ul id='contextmenu-node' ><li class='contextmenu-item' ng-click='addRepeatableElement(schemaElement, parentElement, elementKey)'> Add Repeatable Element </li></ul>";
564 $scope.myContextDiv ="";
569 $scope.createSubModel = function(utmModels){
570 console.log("createSubModel");
571 $scope.mySubModelContext ="";
572 console.log("utmModels name::"+utmModels.name);
573 selected_model = utmModels.name ;
574 changecolor(utmModels.name);
575 isModelfrmClick = true;
576 $scope.mySubModelContext = "<ul id='contextmenu-node' ><li class='contextmenu-item' ng-click='createModel()'> Add Sub Model</li><li class='contextmenu-item' ng-click='renameModel()'> Rename Model</li></ul>";
580 function changecolor(selected_model){
581 console.log("changecolor");
583 $(".models").each(function(i){
584 console.log("changecolor");
585 var model_value = $(this).text().trim();
586 if(model_value == selected_model || model_value == ""){
587 $(this).addClass("selectedcolor");
589 $(this).removeClass("selectedcolor");
595 /*$scope.renameModel = function(){
596 console.log("renameModel");
598 console.log("renameModel");
600 var dlg = dialogs.create('partials/portfolios/rename_model.html','CreateModelCtrl',{},{size:'lg',keyboard: true,backdrop: true,windowClass: 'my-class'});
601 dlg.result.then(function(name){
602 console.log("dlg.result");
605 console.log("...empty");
612 $scope.addRepeatableElement = function(schemaElement, parentElement, elementKey){
613 console.log("addRepeatableElement");
614 $rootScope.isHorR = false;
615 $scope.clonedSchemaElement={};
616 angular.copy(schemaElement, $scope.clonedSchemaElement);
618 if($scope.clonedSchemaElement.repeatableHierarchicalPrefix == null)
619 $scope.clonedSchemaElement.repeatableHierarchicalPrefix = "";
621 //Remove any Heirarchical/Repeatable Elements in the ClonedSchemaElement
622 if(schemaElement.type.complexType != null){
623 for(var i=0;i<schemaElement.type.elements.length;i++) {
624 if(schemaElement.type.elements[i].element.name.indexOf(schemaElement.element.name) != -1) {
625 $scope.clonedSchemaElement.type.elements.splice(i,(schemaElement.type.elements.length-i));
631 $scope.childElements = {};
632 if(parentElement.type != null && parentElement.type.elements != null) {
633 $scope.childElements = parentElement.type.elements;
634 } else if (parentElement.elements != null) {
635 $scope.childElements = parentElement.elements;
638 if(schemaElement.type.complexType != null){
639 for(var i=0;i<$scope.childElements.length;i++){
640 if(angular.equals($scope.childElements[i],schemaElement)){
641 //console.log("Complex Element List Match :" +$scope.childElements[i]);
642 $scope.childElements.splice((i+1),0,$scope.clonedSchemaElement);
646 } else if(schemaElement.element.name !=null) {
647 for(var j=0;j<$scope.childElements.length;j++){
648 if(angular.equals($scope.childElements[j],schemaElement)){
649 //console.log("Element List Match :" +$scope.childElements[j]);
650 $scope.childElements.splice((j+1),0,$scope.clonedSchemaElement);
656 if(list_model_repeatable_heirarchical_elements[selected_model] == null) {
657 list_model_repeatable_heirarchical_elements[selected_model] = {};
658 list_model_repeatable_heirarchical_elements[selected_model].repeatableHeirachicalSchemaElements = [];
661 if(map_model_repeatable_heirarchical_elements[selected_model] == null)
662 map_model_repeatable_heirarchical_elements[selected_model] = {};
664 if(map_model_repeatable_heirarchical_elements[selected_model][elementKey] == null) {
665 $scope.repeatableHeirachicalSchemaElement = {};
666 $scope.repeatableHeirachicalSchemaElement.elementKey = elementKey;
668 var count = list_model_repeatable_heirarchical_elements[selected_model].repeatableHeirachicalSchemaElements.length;
669 list_model_repeatable_heirarchical_elements[selected_model].repeatableHeirachicalSchemaElements[count] = $scope.repeatableHeirachicalSchemaElement;
671 $scope.clonedSchemaElement.repeatableHierarchicalPrefix = $scope.clonedSchemaElement.repeatableHierarchicalPrefix +"-" + 1;
672 $scope.repeatableHeirachicalSchemaElementClone = {};
673 $scope.repeatableHeirachicalSchemaElementClone.elementKey = elementKey + "-" +1;
675 $scope.repeatableHeirachicalSchemaElement.repeatableElements = [];
676 $scope.repeatableHeirachicalSchemaElement.repeatableElements[0] = $scope.repeatableHeirachicalSchemaElementClone;
678 map_model_repeatable_heirarchical_elements[selected_model][elementKey] = $scope.repeatableHeirachicalSchemaElement;
679 map_model_repeatable_heirarchical_elements[selected_model][$scope.repeatableHeirachicalSchemaElementClone.elementKey] = $scope.repeatableHeirachicalSchemaElementClone;
681 if(map_model_repeatable_heirarchical_elements[selected_model][elementKey].repeatableElements == null) {
682 $scope.clonedSchemaElement.repeatableHierarchicalPrefix = $scope.clonedSchemaElement.repeatableHierarchicalPrefix+"-"+1;
683 $scope.repeatableHeirachicalSchemaElementClone = {};
684 $scope.repeatableHeirachicalSchemaElementClone.elementKey = elementKey + "-" +1;
686 map_model_repeatable_heirarchical_elements[selected_model][elementKey].repeatableElements = [];
687 map_model_repeatable_heirarchical_elements[selected_model][elementKey].repeatableElements[0] = $scope.repeatableHeirachicalSchemaElementClone;
689 map_model_repeatable_heirarchical_elements[selected_model][$scope.repeatableHeirachicalSchemaElementClone.elementKey] = $scope.repeatableHeirachicalSchemaElementClone;
691 var count = map_model_repeatable_heirarchical_elements[selected_model][elementKey].repeatableElements.length;
693 $scope.clonedSchemaElement.repeatableHierarchicalPrefix = $scope.clonedSchemaElement.repeatableHierarchicalPrefix+"-"+(count+1);
694 $scope.repeatableHeirachicalSchemaElementClone = {};
695 $scope.repeatableHeirachicalSchemaElementClone.elementKey = elementKey + "-" + (count+1);
697 map_model_repeatable_heirarchical_elements[selected_model][elementKey].repeatableElements[count] = $scope.repeatableHeirachicalSchemaElementClone;
698 map_model_repeatable_heirarchical_elements[selected_model][$scope.repeatableHeirachicalSchemaElementClone.elementKey] = $scope.repeatableHeirachicalSchemaElementClone;
702 $scope.removeElement = function(schemaElement, parentElement, elementKey){
703 console.log("removeElement");
705 if(parentElement.type != null && parentElement.type.elements != null) {
706 $scope.childElements = parentElement.type.elements;
707 } else if (parentElement.elements != null) {
708 $scope.childElements = parentElement.elements;
711 if(schemaElement.type.complexType != null){
712 for(var i=0;i<$scope.childElements.length;i++){
713 if(angular.equals($scope.childElements[i],schemaElement)){
714 //console.log("Complex Element List Match :" +$scope.childElements[i]);
715 $scope.childElements.splice(i,1);
720 } else if(schemaElement.element.name !=null) {
721 for(var j=0;j<$scope.childElements.length;j++){
722 if(angular.equals($scope.childElements[j],schemaElement)){
723 //console.log("Element List Match :" +$scope.childElements[j]);
724 $scope.childElements.splice(j,1);
731 /*if(parentElement.complexType != null){
732 var index = parentElement.elements.indexOf(schemaElement);
733 parentElement.elements.splice(index, 1);
736 var index = parentElement.type.elements.indexOf(schemaElement);
737 parentElement.type.elements.splice(index, 1);
741 if(list_model_repeatable_heirarchical_elements[selected_model] != null)
743 for(var i=0;i<list_model_repeatable_heirarchical_elements[selected_model].repeatableHeirachicalSchemaElements.length;i++){
744 if(list_model_repeatable_heirarchical_elements[selected_model].repeatableHeirachicalSchemaElements[i].elementKey.indexOf(schemaElement.element.name) > -1){
745 $scope.removeRepeatableHeirarchicalMap(selected_model,list_model_repeatable_heirarchical_elements[selected_model].repeatableHeirachicalSchemaElements[i],elementKey);
754 $scope.removeRepeatableHeirarchicalMap= function(modelName,repeatableHeirachicalSchemaElement,elementKey){
755 console.log("removeRepeatableHeirarchicalMap");
756 //console.log("child element length:"+$scope.childElements.length);
757 $scope.repeatableElements = repeatableHeirachicalSchemaElement.repeatableElements;
758 $scope.heirarchicalElements = repeatableHeirachicalSchemaElement.heirarchicalElements;
760 for(var j=0;j<$scope.repeatableElements.length;j++) {
761 if(angular.equals($scope.repeatableElements[j].elementKey,elementKey)){
762 map_model_repeatable_heirarchical_elements[modelName][repeatableHeirachicalSchemaElement.elementKey].repeatableElements.splice(j,1);
766 if($scope.repeatableElements[j].repeatableElements.length >0 || $scope.repeatableElements[j].heirarchicalElements.length >0 ){
767 if($scope.heirarchicalElements.length == 0){
768 $scope.removeRepeatableHeirarchicalMap(modelName,$scope.repeatableElements[j],elementKey);
771 if($scope.repeatableElements[j].heirarchicalElements.length > 0){
772 for(var i=0 ;i<$scope.repeatableElements[j].heirarchicalElements.length;i++){
773 if(angular.equals($scope.repeatableElements[j].heirarchicalElements[i].elementKey,elementKey)){
774 $scope.removeRepeatableHeirarchicalMap(modelName,$scope.repeatableElements[j],elementKey);
778 if($scope.repeatableElements[j].repeatableElements.length > 0){
779 for(var q=0 ;q<$scope.repeatableElements[j].repeatableElements.length;q++){
780 if(angular.equals($scope.repeatableElements[j].repeatableElements[q].elementKey,elementKey)){
781 $scope.removeRepeatableHeirarchicalMap(modelName,$scope.repeatableElements[j],elementKey);
789 for(var k=0;k<$scope.heirarchicalElements.length;k++) {
790 if(angular.equals($scope.heirarchicalElements[k].elementKey,elementKey)){
791 var count = $scope.heirarchicalElements[k].repeatableElements.length;
792 $scope.childElements.splice($scope.index,count);
793 map_model_repeatable_heirarchical_elements[modelName][repeatableHeirachicalSchemaElement.elementKey].heirarchicalElements.splice(k,1);
796 $scope.removeRepeatableHeirarchicalMap(modelName,$scope.heirarchicalElements[k],elementKey);
806 //Generate and Download tst
807 $scope.generateTST = function(index){
808 console.log("generateTST");
809 Datafactory.setSelectedTestCase($rootScope.modeltestset.activityTestCases[index]);
812 console.log("inside generateTST() method");
813 var generateTSTUrl ="/utm-service/soa_integration/generateTST";
814 var tempActivityTestcase= {};
815 angular.copy(Datafactory.getSelectedTestCase(),tempActivityTestcase);
817 tstInput.activityTestCase = tempActivityTestcase;
819 if(tstInput.activityTestCase.version != null){
820 var newTestCaseName = tstInput.activityTestCase.testCaseName + "_"+ tstInput.activityTestCase.version;
821 tstInput.activityTestCase.testCaseName = newTestCaseName;
825 tstInput.projectPreferenceInfo = Datafactory.getProjectPreferenceInfo();
826 tstInput.environmentData = $rootScope.environmentData;
827 tstInput.writeFileToolList=Datafactory.getWriteFileDataList();
828 tstInput.fileStreamWriterList=Datafactory.getFileStreamWriterList();
829 tstInput.commonPythonScriptList = Datafactory.getCommonPythonScriptList();
832 soapRequestService.generateTst(tstInput, generateTSTUrl)
833 .then(function(pars) {
837 var dlg = dialogs.confirm('Message','Do you want to download TST file?');
838 dlg.result.then(function(btn){
840 $scope.confirmed = 'You confirmed "Yes."';
841 var downloadTSTUrl ="/utm-service/soa_integration/downloadTST";
843 soapRequestService.downloadTst(pars, tstInput.activityTestCase.testCaseName, downloadTSTUrl)
844 .then(function(results) {
845 console.log("results");
847 var sets=results.data;
848 console.log("Sets value"+sets);
849 var headerValue=results.headers;
851 var fileName=results.config.data.tstName + ".tst";
852 console.log("Filename "+fileName);
854 var hiddenElement = document.createElement('a');
855 var objectUrl = URL.createObjectURL(results.data);
857 hiddenElement.href = objectUrl;
858 hiddenElement.download = fileName;
860 hiddenElement.target = '_blank';
861 document.body.appendChild(hiddenElement);
862 hiddenElement.click();
863 document.body.removeChild(hiddenElement);
868 $scope.confirmed = 'You confirmed "No."';
880 //Execute and display tst results
881 /*$scope.executeTst = function(index){
882 console.log("executeTst");
883 Datafactory.setSelectedTestCase($rootScope.modeltestset.activityTestCases[index]);
886 console.log("inside generateTST() method");
887 var executeTSTUrl ="/utm-service/soa_integration/executeTST";
888 var tempActivityTestcase= {};
889 angular.copy(Datafactory.getSelectedTestCase(),tempActivityTestcase);
891 tstInput.activityTestCase = tempActivityTestcase;
893 if(tstInput.activityTestCase.version != null){
894 var newTestCaseName = tstInput.activityTestCase.testCaseName + "_"+ tstInput.activityTestCase.version;
895 tstInput.activityTestCase.testCaseName = newTestCaseName;
899 tstInput.projectPreferenceInfo = Datafactory.getProjectPreferenceInfo();
900 tstInput.environmentData = $rootScope.environmentData;
901 tstInput.writeFileToolList=Datafactory.getWriteFileDataList();
902 tstInput.fileStreamWriterList=Datafactory.getFileStreamWriterList();
903 tstInput.commonPythonScriptList = Datafactory.getCommonPythonScriptList();
906 soapRequestService.generateTst(tstInput, executeTSTUrl)
907 .then(function(pars) {
910 if(pars != null || pars != undefined){
912 Datafactory.setExecuteResultset(pars);
914 var dlg = dialogs.create('partials/SOA/execute-request.html','executeRequestCtrl',{},{size:'lg',keyboard: true,backdrop: true,windowClass: 'my-class'});
917 dialogs.error("Some error occured during execution of tst file");