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){
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) {
53 return function(scope, element, attrs) {
55 var fn = $parse(attrs.ngRightClick);
56 element.bind('contextmenu', function(event) {
58 scope.$apply(function() {
60 event.preventDefault();
61 fn(scope, {$event:event});
67 app.directive('inputInfoClass', function ($compile) {
72 link: function(scope,element,attrs){
75 scope.sourceExplorer = 'AM';
76 angular.forEach(scope.infoType.schemaElements, function(value, key){
79 scope.schemaElement = value;
81 if(scope.schemaElement.complexType != null){
82 if(scope.currentElementName == ''){
83 scope.currentElementName = scope.schemaElement.complexType.name;
86 scope.ParentKey = scope.parentName + '_' + scope.currentElementName;
87 if(scope.schemaElement.repeatableHierarchicalPrefix != null){
88 scope.ParentKey = scope.ParentKey + scope.schemaElement.repeatableHierarchicalPrefix;
90 scope.parElement = scope.schemaElement;
91 scope.tableStyle = 'table-level' + scope.heirarchyLevel + '-tree';
92 scope.tdLabelStyle = 'td-level' + scope.heirarchyLevel + '-label-tree';
93 scope.heirLevel = scope.heirarchyLevel;
95 elementHTML = elementHTML + '<div ng-show="schemaElement.complexType != null">';
96 elementHTML = elementHTML + '<table class="{{tableStyle}}"> <tr>';
97 elementHTML = elementHTML + '<td class="{{tdLabelStyle}}">';
98 elementHTML = elementHTML + '<span class="pull-left" ng-click="showUTMViewMsgHeader=!showUTMViewMsgHeader">';
99 elementHTML = elementHTML + '<i ng-class="showUTMViewMsgHeader == true ?\'fa fa-plus-circle\':\'fa fa-minus-circle\'"></i>';
100 elementHTML = elementHTML + '</span>';
101 elementHTML = elementHTML + '<b>{{currentElementName}}</b>';
102 elementHTML = elementHTML + '</td>';
103 elementHTML = elementHTML + '<td class="td-tree"></td>';
104 elementHTML = elementHTML + '<td class="td-tree"></td>';
105 elementHTML = elementHTML + '<td class="td-tree"></td>';
106 elementHTML = elementHTML + '<td class="td-blank"></td>';
107 elementHTML = elementHTML + '<td class="td-default_value-tree"> </td>';
108 elementHTML = elementHTML + '</tr></table>';
109 elementHTML = elementHTML + '<div style="margin-left: 10px" ng-class="{hidden:showUTMViewMsgHeader,chaldean:showUTMViewMsgHeader}">';
110 elementHTML = elementHTML + '<div class="inputInfoClassMember" style="margin-left: 10px" ng-repeat="schemaElement in schemaElement.elements"></div>';
111 elementHTML = elementHTML + '</div>';
112 elementHTML = elementHTML + '</div>';
113 var x = angular.element(elementHTML);
123 app.directive('inputInfoClassMember', function ($compile, $timeout) {
128 link: function(scope,element,attrs){
131 var elementHTML = '';
133 scope.currentElementName=scope.objectName;
134 scope.parentName=scope.ParentKey;
135 scope.parentElement=scope.parElement;
136 scope.heirarchyLevel = scope.heirLevel + 1;
137 if(scope.schemaElement.element.name != null){
139 scope.elementKey=scope.parentName + '_' + scope.schemaElement.element.name;
140 if(scope.schemaElement.repeatableHierarchicalPrefix != null){
141 scope.elementKey = scope.elementKey + scope.schemaElement.repeatableHierarchicalPrefix;
143 scope.tableStyle='table-level' + scope.heirarchyLevel + '-tree';
144 scope.tdLabelStyle='td-level' + scope.heirarchyLevel +'-label-tree';
146 if(scope.schemaElement.type.complexType != null){
147 scope.showUTMViewMsgHeader = false;
150 scope.showUTMViewMsgHeader = true;
151 if(scope.schemaElement.element.simpleType != null){
152 if(scope.schemaElement.element.simpleType.restriction != null){
153 if(scope.schemaElement.element.simpleType.restriction.minExclusivesAndMinInclusivesAndMaxExclusives != null){
154 angular.forEach(scope.schemaElement.element.simpleType.restriction.minExclusivesAndMinInclusivesAndMaxExclusives, function(value, key){
155 if(value.name!=null){
156 if((value.name).indexOf('enumeration') > -1){
157 scope.showUTMViewMsgHeader = false;
166 elementHTML = elementHTML + '<div ng-show="schemaElement.element.name != null">';
167 elementHTML = elementHTML + '<div id="elementKey">';
168 elementHTML = elementHTML + '<table class="{{tableStyle}}"> ';
169 elementHTML = elementHTML + '<tr>';
170 elementHTML = elementHTML + '<td style="text-align: left;vertical-align: top;" class="{{tdLabelStyle}}">';
171 elementHTML = elementHTML + '<div ng-mouseover="getContextMenu(schemaElement,elementKey)" context-menu="myContextDiv">';
172 elementHTML = elementHTML + '<span class="pull-left" ng-click="showUTMViewMsgHeader=!showUTMViewMsgHeader" ng-style="(schemaElement.type.recursive ||schemaElement.list) && {\'color\':\'#0000FF\'} || {\'color\': \'#444444\'}">';
173 elementHTML = elementHTML + '<i expandable ng-class="showUTMViewMsgHeader == true ?\'fa fa-minus-circle\':\'fa fa-plus-circle\'"></i>';
174 elementHTML = elementHTML + '{{schemaElement.element.name}} ';
175 elementHTML = elementHTML + '';
176 elementHTML = elementHTML + '';
177 elementHTML = elementHTML + '';
178 elementHTML = elementHTML + '';
179 elementHTML = elementHTML + '</span>';
180 elementHTML = elementHTML + '</div>';
181 elementHTML = elementHTML + '</td>';
183 if(scope.repeatableHeirarchicalElementMap !=null){
184 elementHTML = elementHTML + '<div ng-if= "repeatableHeirarchicalElementMap !=null">';
185 elementHTML = elementHTML + '<div ng-if="repeatableHeirarchicalElementMap[elementKey] != null">';
186 elementHTML = elementHTML + '<div ng-repeat="repeatableElement in repeatableHeirarchicalElementMap[elementKey].repeatableElements">';
187 elementHTML = elementHTML + '<div ng-init="addRepeatableElement1(schemaElement, parentElement, elementKey, $index)"></div>';
188 elementHTML = elementHTML + '</div>';
189 elementHTML = elementHTML + '<div ng-repeat="heirarchicalElement in repeatableHeirarchicalElementMap[elementKey].heirarchicalElements">';
190 elementHTML = elementHTML + '</div>';
191 elementHTML = elementHTML + '<div ng-init="addHierarchicalElement1(schemaElement, parentElement, elementKey, $index)"></div>';
192 elementHTML = elementHTML + '</div>';
193 elementHTML = elementHTML + '</div>';
196 elementHTML = elementHTML + '<td class="td-blank"></td>';
197 elementHTML = elementHTML + '<td style="text-align: right;" class="td-tree">';
198 if(scope.schemaElement.type.complexType == null){
199 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>'
202 elementHTML = elementHTML + '</td>';
203 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>';
204 elementHTML = elementHTML + '</tr>';
205 elementHTML = elementHTML + '</table>';
206 elementHTML = elementHTML + '<div style="margin-left: 10px" ng-class="{hidden:!showUTMViewMsgHeader,chaldean:!showUTMViewMsgHeader}">';
208 if(scope.schemaElement.type != null && scope.schemaElement.type.restriction != null){
209 elementHTML = elementHTML + '<div ng-if = "schemaElement.type != null && schemaElement.type.restriction != null">';
210 elementHTML = elementHTML + '<div ng-repeat="object in filteredObjects = (schemaElement.type.restriction.minExclusivesAndMinInclusivesAndMaxExclusives | filter: {name : \'enumeration\'})">';
211 elementHTML = elementHTML + '{{object.value.value}}';
212 elementHTML = elementHTML + '</div>';
213 elementHTML = elementHTML + '</div>';
216 elementHTML = elementHTML + '</div>';
217 elementHTML = elementHTML + '';
218 elementHTML = elementHTML + '';
219 elementHTML = elementHTML + '';
220 elementHTML = elementHTML + '</div>';
221 elementHTML = elementHTML + '</div>';
223 var x = angular.element(elementHTML);
228 if(scope.schemaElement.type.complexType != null){
229 if(scope.schemaElement.repeatableHierarchicalPrefix!=null){
231 var elementHTML2 = '<div ng-show="schemaElement.type.complexType != null">'
232 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 : \'\');">'
233 elementHTML2 = elementHTML2 + '<div style="margin-left: 10px" ng-class="{hidden:!showUTMViewMsgHeader,chaldean:!showUTMViewMsgHeader}">'
234 if(scope.schemaElement.repeatableHierarchicalPrefix!=null){
235 elementHTML2 = elementHTML2 + '<div id="{{parKey}}"></div>'
237 elementHTML2 = elementHTML2 + '<div id="{{parKey}}"></div>'
239 elementHTML2 = elementHTML2 + '</div>'
240 elementHTML2 = elementHTML2 + '</div>'
241 elementHTML2 = elementHTML2 + '</div>';
242 var x = angular.element(elementHTML2);
255 app.directive('expandable', function ($compile) {
259 link: function(scope,element,attrs){
261 var elementHTML = '';
262 element.bind("click", function(){
264 var test1 = document.getElementById(scope.parKey);
267 if((test1.getElementsByTagName('div') != null)&&(scope.schemaElement.type.elements != null)){
269 var htmlCount = test1.getElementsByTagName('div').length;
270 var schemaElementCount = scope.schemaElement.type.elements.length;
272 if(htmlCount<schemaElementCount){
273 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>');
274 $compile(x)(angular.element('#'+scope.parKey).scope());
279 var cElements = document.getElementsByClassName(scope.sourceExplorer+'_'+scope.parKey);
280 if(cElements != null){
282 for(var i=0; i<cElements.length; i++) {
283 if((cElements[i].getElementsByTagName('div') != null)&&(scope.schemaElement.type.elements != null)){
284 var htmlCount = cElements[i].getElementsByTagName('div').length;
285 var schemaElementCount = scope.schemaElement.type.elements.length;
287 if(htmlCount<schemaElementCount){
289 if(scope.sourceExplorer=='SDV'){
290 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>');
291 }else if(scope.sourceExplorer=='PE'){
292 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>');
293 }else if(scope.sourceExplorer=='USU'||scope.sourceExplorer=='USC'){
294 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>');
297 $compile(x)(angular.element('.'+scope.sourceExplorer+'_'+scope.parKey).scope());
308 app.controller('ActivityModellingCtrl', ['$scope', '$rootScope', '$location','dialogs', '$filter','Datafactory','soapRequestService', function($scope,$rootScope, $location,dialogs,$filter,Datafactory,soapRequestService){
313 $scope.parentElementList=[];
314 $scope.schemaElementKeyMap={};
315 $scope.isVisible = false;
316 $rootScope.countElementKeyMap={};
317 $rootScope.depthElementKeyMap={};
318 $rootScope.isHorR = true;
319 $rootScope.requiredValues = {};
321 $scope.utmModelSchemaExtension = {};
322 $rootScope.repeatableHeirarchicalElementMap = {};
327 $rootScope.initProjectExplorer = function () {
329 if(map_model_repeatable_heirarchical_elements[selected_model] != null) {
330 $rootScope.repeatableHeirarchicalElementMap = map_model_repeatable_heirarchical_elements[selected_model];
334 if(list_model_schema_extensions[selected_model] != null) {
335 $scope.utmModelSchemaExtension = list_model_schema_extensions[selected_model];
336 if($scope.utmModelSchemaExtension.radioSelection == null || $scope.utmModelSchemaExtension.radioSelection == '')
337 $scope.utmModelSchemaExtension.radioSelection = 'Required Only';
341 $rootScope.initProjectExplorer();
343 $scope.onChange= function(){
344 console.log("onChange");
346 list_model_schema_extensions[selected_model] = $scope.utmModelSchemaExtension;
350 $rootScope.requiredOnly = function(){
351 console.log("requiredOnly");
352 for (var key in $scope.utmModelSchemaExtension.utmSchemaExtentionMap) {
354 if ($scope.utmModelSchemaExtension.utmSchemaExtentionMap.hasOwnProperty(key)) {
355 $scope.utmModelSchemaExtension.utmSchemaExtentionMap[key].checked = $rootScope.requiredValues[key] != 0;
358 angular.forEach($scope.utmModelSchemaExtension.utmSchemaExtentionMap, function(value, key) {
359 console.log("forEach");
363 $rootScope.selectAll = function(){
364 console.log("selectAll");
365 for (var key in $scope.utmModelSchemaExtension.utmSchemaExtentionMap) {
367 if ($scope.utmModelSchemaExtension.utmSchemaExtentionMap.hasOwnProperty(key)) {
369 $scope.utmModelSchemaExtension.utmSchemaExtentionMap[key].checked = true;
376 $rootScope.unSelectAll = function(){
377 console.log("unSelectAll");
378 for (var key in $scope.utmModelSchemaExtension.utmSchemaExtentionMap) {
380 if ($scope.utmModelSchemaExtension.utmSchemaExtentionMap.hasOwnProperty(key)) {
382 $scope.utmModelSchemaExtension.utmSchemaExtentionMap[key].checked = false;
388 //Functionality for Hierarchical Elements
389 $scope.addHierarchicalElement1 = function(schemaElement, parentElement, elementKey, index){
390 console.log("addHeirarchicalElement1");
391 if($rootScope.isHorR){
393 $scope.clonedSchemaElement={};
394 angular.copy(schemaElement, $scope.clonedSchemaElement);
396 if($scope.clonedSchemaElement.repeatableHierarchicalPrefix == null)
397 $scope.clonedSchemaElement.repeatableHierarchicalPrefix = "";
399 //Remove any Heirarchical/Repeatable Elements in the ClonedSchemaElement
400 for(var i=0;i<schemaElement.type.elements.length;i++) {
401 if(schemaElement.type.elements[i].element.name.indexOf(schemaElement.element.name) != -1) {
402 $scope.clonedSchemaElement.type.elements.splice(i,(schemaElement.type.elements.length-i));
406 $scope.clonedSchemaElement.repeatableHierarchicalPrefix = (index+1);
408 schemaElement.type.elements.push($scope.clonedSchemaElement);
413 //Functionality for Hierarchical Elements
414 $scope.addHierarchicalElement = function(schemaElement, parentElement, elementKey){
415 console.log("addHierarchicalElement");
416 $rootScope.isHorR = false;
417 $scope.clonedSchemaElement={};
418 angular.copy(schemaElement, $scope.clonedSchemaElement);
420 if($scope.clonedSchemaElement.repeatableHierarchicalPrefix == null)
421 $scope.clonedSchemaElement.repeatableHierarchicalPrefix = "";
423 //Remove any Heirarchical/Repeatable Elements in the ClonedSchemaElement
424 for(var i=0;i<schemaElement.type.elements.length;i++) {
425 if(schemaElement.type.elements[i].element.name.indexOf(schemaElement.element.name) != -1) {
426 $scope.clonedSchemaElement.type.elements.splice(i,(schemaElement.type.elements.length-i));
431 schemaElement.type.elements.push($scope.clonedSchemaElement);
433 if(list_model_repeatable_heirarchical_elements[selected_model] == null) {
434 list_model_repeatable_heirarchical_elements[selected_model] = {};
435 list_model_repeatable_heirarchical_elements[selected_model].repeatableHeirachicalSchemaElements = [];
438 if(map_model_repeatable_heirarchical_elements[selected_model] == null)
439 map_model_repeatable_heirarchical_elements[selected_model] = {};
441 if(map_model_repeatable_heirarchical_elements[selected_model][elementKey] == null) {
442 $scope.repeatableHeirachicalSchemaElement = {};
443 $scope.repeatableHeirachicalSchemaElement.elementKey = elementKey;
445 var count = list_model_repeatable_heirarchical_elements[selected_model].repeatableHeirachicalSchemaElements.length;
446 list_model_repeatable_heirarchical_elements[selected_model].repeatableHeirachicalSchemaElements[count] = $scope.repeatableHeirachicalSchemaElement;
448 $scope.clonedSchemaElement.repeatableHierarchicalPrefix = "1";
449 $scope.repeatableHeirachicalSchemaElementChild = {};
450 $scope.repeatableHeirachicalSchemaElementChild.elementKey = elementKey+'_'+ schemaElement.element.name + $scope.clonedSchemaElement.repeatableHierarchicalPrefix;
452 $scope.repeatableHeirachicalSchemaElement.heirarchicalElements = [];
453 $scope.repeatableHeirachicalSchemaElement.heirarchicalElements[0] = $scope.repeatableHeirachicalSchemaElementChild;
455 map_model_repeatable_heirarchical_elements[selected_model][elementKey] = $scope.repeatableHeirachicalSchemaElement;
456 map_model_repeatable_heirarchical_elements[selected_model][$scope.repeatableHeirachicalSchemaElementChild.elementKey] = $scope.repeatableHeirachicalSchemaElementChild;
458 if(map_model_repeatable_heirarchical_elements[selected_model][elementKey].heirarchicalElements == null) {
459 $scope.clonedSchemaElement.repeatableHierarchicalPrefix = "1";
460 $scope.repeatableHeirachicalSchemaElementChild = {};
461 $scope.repeatableHeirachicalSchemaElementChild.elementKey = elementKey+'_'+schemaElement.element.name + $scope.clonedSchemaElement.repeatableHierarchicalPrefix;
463 map_model_repeatable_heirarchical_elements[selected_model][elementKey].heirarchicalElements = [];
464 map_model_repeatable_heirarchical_elements[selected_model][elementKey].heirarchicalElements[0] = $scope.repeatableHeirachicalSchemaElementChild;
466 map_model_repeatable_heirarchical_elements[selected_model][$scope.repeatableHeirachicalSchemaElementChild.elementKey] = $scope.repeatableHeirachicalSchemaElementChild;
468 var count = map_model_repeatable_heirarchical_elements[selected_model][elementKey].heirarchicalElements.length;
470 $scope.clonedSchemaElement.repeatableHierarchicalPrefix = ""+(count+1);
471 $scope.repeatableHeirachicalSchemaElementChild = {};
472 $scope.repeatableHeirachicalSchemaElementChild.elementKey = elementKey+'_'+schemaElement.element.name + $scope.clonedSchemaElement.repeatableHierarchicalPrefix;
474 map_model_repeatable_heirarchical_elements[selected_model][elementKey].heirarchicalElements[count] = $scope.repeatableHeirachicalSchemaElementChild;
476 map_model_repeatable_heirarchical_elements[selected_model][$scope.repeatableHeirachicalSchemaElementChild.elementKey] = $scope.repeatableHeirachicalSchemaElementChild;
481 $scope.addRepeatableElement1 = function(schemaElement, parentElement, elementKey, index){
482 console.log("addRepeatableElement1");
483 if($rootScope.isHorR == true){
484 $scope.clonedSchemaElement={};
485 angular.copy(schemaElement, $scope.clonedSchemaElement);
487 if($scope.clonedSchemaElement.repeatableHierarchicalPrefix == null)
488 $scope.clonedSchemaElement.repeatableHierarchicalPrefix = "";
490 $scope.clonedSchemaElement.repeatableHierarchicalPrefix = $scope.clonedSchemaElement.repeatableHierarchicalPrefix +"-"+(index+1);
492 $scope.childElements = {};
493 if(parentElement.type != null && parentElement.type.elements != null) {
494 $scope.childElements = parentElement.type.elements;
495 } else if (parentElement.elements != null) {
496 $scope.childElements = parentElement.elements;
499 if(schemaElement.type.complexType != null){
500 for(var i=0;i<$scope.childElements.length;i++){
501 if(angular.equals($scope.childElements[i],schemaElement)){
502 $scope.childElements.splice((i+1),0,$scope.clonedSchemaElement);
506 } else if(schemaElement.element.name !=null) {
507 for(var j=0;j<$scope.childElements.length;j++){
508 if(angular.equals($scope.childElements[j],schemaElement)){
509 $scope.childElements.splice((j+1),0,$scope.clonedSchemaElement);
519 $scope.getContextMenu = function(schemaElement,elementKey){
520 console.log("getContextMenu");
521 $scope.myContextDiv ="";
522 if(schemaElement.type.recursive && schemaElement.list){
523 if(schemaElement.repeatableHierarchicalPrefix != null){
524 $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>";
526 $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>";
528 }else if(schemaElement.type.recursive){
529 if(schemaElement.repeatableHierarchicalPrefix != null){
530 $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>";
532 $scope.myContextDiv = "<ul id='contextmenu-node' ><li class='contextmenu-item' ng-click='addHierarchicalElement(schemaElement, parentElement, elementKey)'> Add Hierarchical Element </li></ul>";
534 }else if(schemaElement.list){
535 if(schemaElement.repeatableHierarchicalPrefix != null){
536 $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>";
538 $scope.myContextDiv = "<ul id='contextmenu-node' ><li class='contextmenu-item' ng-click='addRepeatableElement(schemaElement, parentElement, elementKey)'> Add Repeatable Element </li></ul>";
541 $scope.myContextDiv ="";
546 $scope.createSubModel = function(utmModels){
547 console.log("createSubModel");
548 $scope.mySubModelContext ="";
549 console.log("utmModels name::"+utmModels.name);
550 selected_model = utmModels.name ;
551 changecolor(utmModels.name);
552 isModelfrmClick = true;
553 $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>";
557 function changecolor(selected_model){
558 console.log("changecolor");
560 $(".models").each(function(i){
561 console.log("changecolor");
562 var model_value = $(this).text().trim();
563 if(model_value == selected_model || model_value == ""){
564 $(this).addClass("selectedcolor");
566 $(this).removeClass("selectedcolor");
572 $scope.addRepeatableElement = function(schemaElement, parentElement, elementKey){
573 console.log("addRepeatableElement");
574 $rootScope.isHorR = false;
575 $scope.clonedSchemaElement={};
576 angular.copy(schemaElement, $scope.clonedSchemaElement);
578 if($scope.clonedSchemaElement.repeatableHierarchicalPrefix == null)
579 $scope.clonedSchemaElement.repeatableHierarchicalPrefix = "";
581 //Remove any Heirarchical/Repeatable Elements in the ClonedSchemaElement
582 if(schemaElement.type.complexType != null){
583 for(var i=0;i<schemaElement.type.elements.length;i++) {
584 if(schemaElement.type.elements[i].element.name.indexOf(schemaElement.element.name) != -1) {
585 $scope.clonedSchemaElement.type.elements.splice(i,(schemaElement.type.elements.length-i));
591 $scope.childElements = {};
592 if(parentElement.type != null && parentElement.type.elements != null) {
593 $scope.childElements = parentElement.type.elements;
594 } else if (parentElement.elements != null) {
595 $scope.childElements = parentElement.elements;
598 if(schemaElement.type.complexType != null){
599 for(var i=0;i<$scope.childElements.length;i++){
600 if(angular.equals($scope.childElements[i],schemaElement)){
601 //console.log("Complex Element List Match :" +$scope.childElements[i]);
602 $scope.childElements.splice((i+1),0,$scope.clonedSchemaElement);
606 } else if(schemaElement.element.name !=null) {
607 for(var j=0;j<$scope.childElements.length;j++){
608 if(angular.equals($scope.childElements[j],schemaElement)){
609 //console.log("Element List Match :" +$scope.childElements[j]);
610 $scope.childElements.splice((j+1),0,$scope.clonedSchemaElement);
616 if(list_model_repeatable_heirarchical_elements[selected_model] == null) {
617 list_model_repeatable_heirarchical_elements[selected_model] = {};
618 list_model_repeatable_heirarchical_elements[selected_model].repeatableHeirachicalSchemaElements = [];
621 if(map_model_repeatable_heirarchical_elements[selected_model] == null)
622 map_model_repeatable_heirarchical_elements[selected_model] = {};
624 if(map_model_repeatable_heirarchical_elements[selected_model][elementKey] == null) {
625 $scope.repeatableHeirachicalSchemaElement = {};
626 $scope.repeatableHeirachicalSchemaElement.elementKey = elementKey;
628 var count = list_model_repeatable_heirarchical_elements[selected_model].repeatableHeirachicalSchemaElements.length;
629 list_model_repeatable_heirarchical_elements[selected_model].repeatableHeirachicalSchemaElements[count] = $scope.repeatableHeirachicalSchemaElement;
631 $scope.clonedSchemaElement.repeatableHierarchicalPrefix = $scope.clonedSchemaElement.repeatableHierarchicalPrefix +"-" + 1;
632 $scope.repeatableHeirachicalSchemaElementClone = {};
633 $scope.repeatableHeirachicalSchemaElementClone.elementKey = elementKey + "-" +1;
635 $scope.repeatableHeirachicalSchemaElement.repeatableElements = [];
636 $scope.repeatableHeirachicalSchemaElement.repeatableElements[0] = $scope.repeatableHeirachicalSchemaElementClone;
638 map_model_repeatable_heirarchical_elements[selected_model][elementKey] = $scope.repeatableHeirachicalSchemaElement;
639 map_model_repeatable_heirarchical_elements[selected_model][$scope.repeatableHeirachicalSchemaElementClone.elementKey] = $scope.repeatableHeirachicalSchemaElementClone;
641 if(map_model_repeatable_heirarchical_elements[selected_model][elementKey].repeatableElements == null) {
642 $scope.clonedSchemaElement.repeatableHierarchicalPrefix = $scope.clonedSchemaElement.repeatableHierarchicalPrefix+"-"+1;
643 $scope.repeatableHeirachicalSchemaElementClone = {};
644 $scope.repeatableHeirachicalSchemaElementClone.elementKey = elementKey + "-" +1;
646 map_model_repeatable_heirarchical_elements[selected_model][elementKey].repeatableElements = [];
647 map_model_repeatable_heirarchical_elements[selected_model][elementKey].repeatableElements[0] = $scope.repeatableHeirachicalSchemaElementClone;
649 map_model_repeatable_heirarchical_elements[selected_model][$scope.repeatableHeirachicalSchemaElementClone.elementKey] = $scope.repeatableHeirachicalSchemaElementClone;
651 var count = map_model_repeatable_heirarchical_elements[selected_model][elementKey].repeatableElements.length;
653 $scope.clonedSchemaElement.repeatableHierarchicalPrefix = $scope.clonedSchemaElement.repeatableHierarchicalPrefix+"-"+(count+1);
654 $scope.repeatableHeirachicalSchemaElementClone = {};
655 $scope.repeatableHeirachicalSchemaElementClone.elementKey = elementKey + "-" + (count+1);
657 map_model_repeatable_heirarchical_elements[selected_model][elementKey].repeatableElements[count] = $scope.repeatableHeirachicalSchemaElementClone;
658 map_model_repeatable_heirarchical_elements[selected_model][$scope.repeatableHeirachicalSchemaElementClone.elementKey] = $scope.repeatableHeirachicalSchemaElementClone;
662 $scope.removeElement = function(schemaElement, parentElement, elementKey){
663 console.log("removeElement");
665 if(parentElement.type != null && parentElement.type.elements != null) {
666 $scope.childElements = parentElement.type.elements;
667 } else if (parentElement.elements != null) {
668 $scope.childElements = parentElement.elements;
671 if(schemaElement.type.complexType != null){
672 for(var i=0;i<$scope.childElements.length;i++){
673 if(angular.equals($scope.childElements[i],schemaElement)){
674 //console.log("Complex Element List Match :" +$scope.childElements[i]);
675 $scope.childElements.splice(i,1);
680 } else if(schemaElement.element.name !=null) {
681 for(var j=0;j<$scope.childElements.length;j++){
682 if(angular.equals($scope.childElements[j],schemaElement)){
683 //console.log("Element List Match :" +$scope.childElements[j]);
684 $scope.childElements.splice(j,1);
691 if(list_model_repeatable_heirarchical_elements[selected_model] != null)
693 for(var i=0;i<list_model_repeatable_heirarchical_elements[selected_model].repeatableHeirachicalSchemaElements.length;i++){
694 if(list_model_repeatable_heirarchical_elements[selected_model].repeatableHeirachicalSchemaElements[i].elementKey.indexOf(schemaElement.element.name) > -1){
695 $scope.removeRepeatableHeirarchicalMap(selected_model,list_model_repeatable_heirarchical_elements[selected_model].repeatableHeirachicalSchemaElements[i],elementKey);
704 $scope.removeRepeatableHeirarchicalMap= function(modelName,repeatableHeirachicalSchemaElement,elementKey){
705 console.log("removeRepeatableHeirarchicalMap");
706 $scope.repeatableElements = repeatableHeirachicalSchemaElement.repeatableElements;
707 $scope.heirarchicalElements = repeatableHeirachicalSchemaElement.heirarchicalElements;
709 for(var j=0;j<$scope.repeatableElements.length;j++) {
710 if(angular.equals($scope.repeatableElements[j].elementKey,elementKey)){
711 map_model_repeatable_heirarchical_elements[modelName][repeatableHeirachicalSchemaElement.elementKey].repeatableElements.splice(j,1);
715 if($scope.repeatableElements[j].repeatableElements.length >0 || $scope.repeatableElements[j].heirarchicalElements.length >0 ){
716 if($scope.heirarchicalElements.length == 0){
717 $scope.removeRepeatableHeirarchicalMap(modelName,$scope.repeatableElements[j],elementKey);
720 if($scope.repeatableElements[j].heirarchicalElements.length > 0){
721 for(var i=0 ;i<$scope.repeatableElements[j].heirarchicalElements.length;i++){
722 if(angular.equals($scope.repeatableElements[j].heirarchicalElements[i].elementKey,elementKey)){
723 $scope.removeRepeatableHeirarchicalMap(modelName,$scope.repeatableElements[j],elementKey);
727 if($scope.repeatableElements[j].repeatableElements.length > 0){
728 for(var q=0 ;q<$scope.repeatableElements[j].repeatableElements.length;q++){
729 if(angular.equals($scope.repeatableElements[j].repeatableElements[q].elementKey,elementKey)){
730 $scope.removeRepeatableHeirarchicalMap(modelName,$scope.repeatableElements[j],elementKey);
738 for(var k=0;k<$scope.heirarchicalElements.length;k++) {
739 if(angular.equals($scope.heirarchicalElements[k].elementKey,elementKey)){
740 var count = $scope.heirarchicalElements[k].repeatableElements.length;
741 $scope.childElements.splice($scope.index,count);
742 map_model_repeatable_heirarchical_elements[modelName][repeatableHeirachicalSchemaElement.elementKey].heirarchicalElements.splice(k,1);
745 $scope.removeRepeatableHeirarchicalMap(modelName,$scope.heirarchicalElements[k],elementKey);
755 //Generate and Download tst
756 $scope.generateTST = function(index){
757 console.log("generateTST");
758 Datafactory.setSelectedTestCase($rootScope.modeltestset.activityTestCases[index]);
761 console.log("inside generateTST() method");
762 var generateTSTUrl ="/utm-service/soa_integration/generateTST";
763 var tempActivityTestcase= {};
764 angular.copy(Datafactory.getSelectedTestCase(),tempActivityTestcase);
766 tstInput.activityTestCase = tempActivityTestcase;
768 if(tstInput.activityTestCase.version != null){
769 var newTestCaseName = tstInput.activityTestCase.testCaseName + "_"+ tstInput.activityTestCase.version;
770 tstInput.activityTestCase.testCaseName = newTestCaseName;
774 tstInput.projectPreferenceInfo = Datafactory.getProjectPreferenceInfo();
775 tstInput.environmentData = $rootScope.environmentData;
776 tstInput.writeFileToolList=Datafactory.getWriteFileDataList();
777 tstInput.fileStreamWriterList=Datafactory.getFileStreamWriterList();
778 tstInput.commonPythonScriptList = Datafactory.getCommonPythonScriptList();
781 soapRequestService.generateTst(tstInput, generateTSTUrl)
782 .then(function(pars) {
786 var dlg = dialogs.confirm('Message','Do you want to download TST file?');
787 dlg.result.then(function(btn){
789 $scope.confirmed = 'You confirmed "Yes."';
790 var downloadTSTUrl ="/utm-service/soa_integration/downloadTST";
792 soapRequestService.downloadTst(pars, tstInput.activityTestCase.testCaseName, downloadTSTUrl)
793 .then(function(results) {
794 console.log("results");
796 var sets=results.data;
797 console.log("Sets value"+sets);
798 var headerValue=results.headers;
800 var fileName=results.config.data.tstName + ".tst";
801 console.log("Filename "+fileName);
803 var hiddenElement = document.createElement('a');
804 var objectUrl = URL.createObjectURL(results.data);
806 hiddenElement.href = objectUrl;
807 hiddenElement.download = fileName;
809 hiddenElement.target = '_blank';
810 document.body.appendChild(hiddenElement);
811 hiddenElement.click();
812 document.body.removeChild(hiddenElement);
817 $scope.confirmed = 'You confirmed "No."';