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 * ===================================================================
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', function($scope,$rootScope, $location,dialogs,$filter,Datafactory){
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
400 // ClonedSchemaElement
401 for(var i=0;i<schemaElement.type.elements.length;i++) {
402 if(schemaElement.type.elements[i].element.name.indexOf(schemaElement.element.name) != -1) {
403 $scope.clonedSchemaElement.type.elements.splice(i,(schemaElement.type.elements.length-i));
407 $scope.clonedSchemaElement.repeatableHierarchicalPrefix = (index+1);
409 schemaElement.type.elements.push($scope.clonedSchemaElement);
414 // Functionality for Hierarchical Elements
415 $scope.addHierarchicalElement = function(schemaElement, parentElement, elementKey){
416 console.log("addHierarchicalElement");
417 $rootScope.isHorR = false;
418 $scope.clonedSchemaElement={};
419 angular.copy(schemaElement, $scope.clonedSchemaElement);
421 if($scope.clonedSchemaElement.repeatableHierarchicalPrefix == null)
422 $scope.clonedSchemaElement.repeatableHierarchicalPrefix = "";
424 // Remove any Heirarchical/Repeatable Elements in the
425 // ClonedSchemaElement
426 for(var i=0;i<schemaElement.type.elements.length;i++) {
427 if(schemaElement.type.elements[i].element.name.indexOf(schemaElement.element.name) != -1) {
428 $scope.clonedSchemaElement.type.elements.splice(i,(schemaElement.type.elements.length-i));
433 schemaElement.type.elements.push($scope.clonedSchemaElement);
435 if(list_model_repeatable_heirarchical_elements[selected_model] == null) {
436 list_model_repeatable_heirarchical_elements[selected_model] = {};
437 list_model_repeatable_heirarchical_elements[selected_model].repeatableHeirachicalSchemaElements = [];
440 if(map_model_repeatable_heirarchical_elements[selected_model] == null)
441 map_model_repeatable_heirarchical_elements[selected_model] = {};
443 if(map_model_repeatable_heirarchical_elements[selected_model][elementKey] == null) {
444 $scope.repeatableHeirachicalSchemaElement = {};
445 $scope.repeatableHeirachicalSchemaElement.elementKey = elementKey;
447 var count = list_model_repeatable_heirarchical_elements[selected_model].repeatableHeirachicalSchemaElements.length;
448 list_model_repeatable_heirarchical_elements[selected_model].repeatableHeirachicalSchemaElements[count] = $scope.repeatableHeirachicalSchemaElement;
450 $scope.clonedSchemaElement.repeatableHierarchicalPrefix = "1";
451 $scope.repeatableHeirachicalSchemaElementChild = {};
452 $scope.repeatableHeirachicalSchemaElementChild.elementKey = elementKey+'_'+ schemaElement.element.name + $scope.clonedSchemaElement.repeatableHierarchicalPrefix;
454 $scope.repeatableHeirachicalSchemaElement.heirarchicalElements = [];
455 $scope.repeatableHeirachicalSchemaElement.heirarchicalElements[0] = $scope.repeatableHeirachicalSchemaElementChild;
457 map_model_repeatable_heirarchical_elements[selected_model][elementKey] = $scope.repeatableHeirachicalSchemaElement;
458 map_model_repeatable_heirarchical_elements[selected_model][$scope.repeatableHeirachicalSchemaElementChild.elementKey] = $scope.repeatableHeirachicalSchemaElementChild;
460 if(map_model_repeatable_heirarchical_elements[selected_model][elementKey].heirarchicalElements == null) {
461 $scope.clonedSchemaElement.repeatableHierarchicalPrefix = "1";
462 $scope.repeatableHeirachicalSchemaElementChild = {};
463 $scope.repeatableHeirachicalSchemaElementChild.elementKey = elementKey+'_'+schemaElement.element.name + $scope.clonedSchemaElement.repeatableHierarchicalPrefix;
465 map_model_repeatable_heirarchical_elements[selected_model][elementKey].heirarchicalElements = [];
466 map_model_repeatable_heirarchical_elements[selected_model][elementKey].heirarchicalElements[0] = $scope.repeatableHeirachicalSchemaElementChild;
468 map_model_repeatable_heirarchical_elements[selected_model][$scope.repeatableHeirachicalSchemaElementChild.elementKey] = $scope.repeatableHeirachicalSchemaElementChild;
470 var count = map_model_repeatable_heirarchical_elements[selected_model][elementKey].heirarchicalElements.length;
472 $scope.clonedSchemaElement.repeatableHierarchicalPrefix = ""+(count+1);
473 $scope.repeatableHeirachicalSchemaElementChild = {};
474 $scope.repeatableHeirachicalSchemaElementChild.elementKey = elementKey+'_'+schemaElement.element.name + $scope.clonedSchemaElement.repeatableHierarchicalPrefix;
476 map_model_repeatable_heirarchical_elements[selected_model][elementKey].heirarchicalElements[count] = $scope.repeatableHeirachicalSchemaElementChild;
478 map_model_repeatable_heirarchical_elements[selected_model][$scope.repeatableHeirachicalSchemaElementChild.elementKey] = $scope.repeatableHeirachicalSchemaElementChild;
483 $scope.addRepeatableElement1 = function(schemaElement, parentElement, elementKey, index){
484 console.log("addRepeatableElement1");
485 if($rootScope.isHorR == true){
486 $scope.clonedSchemaElement={};
487 angular.copy(schemaElement, $scope.clonedSchemaElement);
489 if($scope.clonedSchemaElement.repeatableHierarchicalPrefix == null)
490 $scope.clonedSchemaElement.repeatableHierarchicalPrefix = "";
492 $scope.clonedSchemaElement.repeatableHierarchicalPrefix = $scope.clonedSchemaElement.repeatableHierarchicalPrefix +"-"+(index+1);
494 $scope.childElements = {};
495 if(parentElement.type != null && parentElement.type.elements != null) {
496 $scope.childElements = parentElement.type.elements;
497 } else if (parentElement.elements != null) {
498 $scope.childElements = parentElement.elements;
501 if(schemaElement.type.complexType != null){
502 for(var i=0;i<$scope.childElements.length;i++){
503 if(angular.equals($scope.childElements[i],schemaElement)){
504 $scope.childElements.splice((i+1),0,$scope.clonedSchemaElement);
508 } else if(schemaElement.element.name !=null) {
509 for(var j=0;j<$scope.childElements.length;j++){
510 if(angular.equals($scope.childElements[j],schemaElement)){
511 $scope.childElements.splice((j+1),0,$scope.clonedSchemaElement);
521 $scope.getContextMenu = function(schemaElement,elementKey){
522 console.log("getContextMenu");
523 $scope.myContextDiv ="";
524 if(schemaElement.type.recursive && schemaElement.list){
525 if(schemaElement.repeatableHierarchicalPrefix != null){
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><li class='contextmenu-item' ng-click='removeElement(schemaElement, parentElement, elementKey)'>Remove Element</li></ul>";
528 $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>";
530 }else if(schemaElement.type.recursive){
531 if(schemaElement.repeatableHierarchicalPrefix != null){
532 $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>";
534 $scope.myContextDiv = "<ul id='contextmenu-node' ><li class='contextmenu-item' ng-click='addHierarchicalElement(schemaElement, parentElement, elementKey)'> Add Hierarchical Element </li></ul>";
536 }else if(schemaElement.list){
537 if(schemaElement.repeatableHierarchicalPrefix != null){
538 $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>";
540 $scope.myContextDiv = "<ul id='contextmenu-node' ><li class='contextmenu-item' ng-click='addRepeatableElement(schemaElement, parentElement, elementKey)'> Add Repeatable Element </li></ul>";
543 $scope.myContextDiv ="";
548 $scope.createSubModel = function(utmModels){
549 console.log("createSubModel");
550 $scope.mySubModelContext ="";
551 console.log("utmModels name::"+utmModels.name);
552 selected_model = utmModels.name ;
553 changecolor(utmModels.name);
554 isModelfrmClick = true;
555 $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>";
559 function changecolor(selected_model){
560 console.log("changecolor");
562 $(".models").each(function(i){
563 console.log("changecolor");
564 var model_value = $(this).text().trim();
565 if(model_value == selected_model || model_value == ""){
566 $(this).addClass("selectedcolor");
568 $(this).removeClass("selectedcolor");
574 $scope.addRepeatableElement = function(schemaElement, parentElement, elementKey){
575 console.log("addRepeatableElement");
576 $rootScope.isHorR = false;
577 $scope.clonedSchemaElement={};
578 angular.copy(schemaElement, $scope.clonedSchemaElement);
580 if($scope.clonedSchemaElement.repeatableHierarchicalPrefix == null)
581 $scope.clonedSchemaElement.repeatableHierarchicalPrefix = "";
583 // Remove any Heirarchical/Repeatable Elements in the
584 // ClonedSchemaElement
585 if(schemaElement.type.complexType != null){
586 for(var i=0;i<schemaElement.type.elements.length;i++) {
587 if(schemaElement.type.elements[i].element.name.indexOf(schemaElement.element.name) != -1) {
588 $scope.clonedSchemaElement.type.elements.splice(i,(schemaElement.type.elements.length-i));
594 $scope.childElements = {};
595 if(parentElement.type != null && parentElement.type.elements != null) {
596 $scope.childElements = parentElement.type.elements;
597 } else if (parentElement.elements != null) {
598 $scope.childElements = parentElement.elements;
601 if(schemaElement.type.complexType != null){
602 for(var i=0;i<$scope.childElements.length;i++){
603 if(angular.equals($scope.childElements[i],schemaElement)){
604 // console.log("Complex Element List Match :"
605 // +$scope.childElements[i]);
606 $scope.childElements.splice((i+1),0,$scope.clonedSchemaElement);
610 } else if(schemaElement.element.name !=null) {
611 for(var j=0;j<$scope.childElements.length;j++){
612 if(angular.equals($scope.childElements[j],schemaElement)){
613 // console.log("Element List Match :"
614 // +$scope.childElements[j]);
615 $scope.childElements.splice((j+1),0,$scope.clonedSchemaElement);
621 if(list_model_repeatable_heirarchical_elements[selected_model] == null) {
622 list_model_repeatable_heirarchical_elements[selected_model] = {};
623 list_model_repeatable_heirarchical_elements[selected_model].repeatableHeirachicalSchemaElements = [];
626 if(map_model_repeatable_heirarchical_elements[selected_model] == null)
627 map_model_repeatable_heirarchical_elements[selected_model] = {};
629 if(map_model_repeatable_heirarchical_elements[selected_model][elementKey] == null) {
630 $scope.repeatableHeirachicalSchemaElement = {};
631 $scope.repeatableHeirachicalSchemaElement.elementKey = elementKey;
633 var count = list_model_repeatable_heirarchical_elements[selected_model].repeatableHeirachicalSchemaElements.length;
634 list_model_repeatable_heirarchical_elements[selected_model].repeatableHeirachicalSchemaElements[count] = $scope.repeatableHeirachicalSchemaElement;
636 $scope.clonedSchemaElement.repeatableHierarchicalPrefix = $scope.clonedSchemaElement.repeatableHierarchicalPrefix +"-" + 1;
637 $scope.repeatableHeirachicalSchemaElementClone = {};
638 $scope.repeatableHeirachicalSchemaElementClone.elementKey = elementKey + "-" +1;
640 $scope.repeatableHeirachicalSchemaElement.repeatableElements = [];
641 $scope.repeatableHeirachicalSchemaElement.repeatableElements[0] = $scope.repeatableHeirachicalSchemaElementClone;
643 map_model_repeatable_heirarchical_elements[selected_model][elementKey] = $scope.repeatableHeirachicalSchemaElement;
644 map_model_repeatable_heirarchical_elements[selected_model][$scope.repeatableHeirachicalSchemaElementClone.elementKey] = $scope.repeatableHeirachicalSchemaElementClone;
646 if(map_model_repeatable_heirarchical_elements[selected_model][elementKey].repeatableElements == null) {
647 $scope.clonedSchemaElement.repeatableHierarchicalPrefix = $scope.clonedSchemaElement.repeatableHierarchicalPrefix+"-"+1;
648 $scope.repeatableHeirachicalSchemaElementClone = {};
649 $scope.repeatableHeirachicalSchemaElementClone.elementKey = elementKey + "-" +1;
651 map_model_repeatable_heirarchical_elements[selected_model][elementKey].repeatableElements = [];
652 map_model_repeatable_heirarchical_elements[selected_model][elementKey].repeatableElements[0] = $scope.repeatableHeirachicalSchemaElementClone;
654 map_model_repeatable_heirarchical_elements[selected_model][$scope.repeatableHeirachicalSchemaElementClone.elementKey] = $scope.repeatableHeirachicalSchemaElementClone;
656 var count = map_model_repeatable_heirarchical_elements[selected_model][elementKey].repeatableElements.length;
658 $scope.clonedSchemaElement.repeatableHierarchicalPrefix = $scope.clonedSchemaElement.repeatableHierarchicalPrefix+"-"+(count+1);
659 $scope.repeatableHeirachicalSchemaElementClone = {};
660 $scope.repeatableHeirachicalSchemaElementClone.elementKey = elementKey + "-" + (count+1);
662 map_model_repeatable_heirarchical_elements[selected_model][elementKey].repeatableElements[count] = $scope.repeatableHeirachicalSchemaElementClone;
663 map_model_repeatable_heirarchical_elements[selected_model][$scope.repeatableHeirachicalSchemaElementClone.elementKey] = $scope.repeatableHeirachicalSchemaElementClone;
667 $scope.removeElement = function(schemaElement, parentElement, elementKey){
668 console.log("removeElement");
670 if(parentElement.type != null && parentElement.type.elements != null) {
671 $scope.childElements = parentElement.type.elements;
672 } else if (parentElement.elements != null) {
673 $scope.childElements = parentElement.elements;
676 if(schemaElement.type.complexType != null){
677 for(var i=0;i<$scope.childElements.length;i++){
678 if(angular.equals($scope.childElements[i],schemaElement)){
679 // console.log("Complex Element List Match :"
680 // +$scope.childElements[i]);
681 $scope.childElements.splice(i,1);
686 } else if(schemaElement.element.name !=null) {
687 for(var j=0;j<$scope.childElements.length;j++){
688 if(angular.equals($scope.childElements[j],schemaElement)){
689 // console.log("Element List Match :"
690 // +$scope.childElements[j]);
691 $scope.childElements.splice(j,1);
698 if(list_model_repeatable_heirarchical_elements[selected_model] != null)
700 for(var i=0;i<list_model_repeatable_heirarchical_elements[selected_model].repeatableHeirachicalSchemaElements.length;i++){
701 if(list_model_repeatable_heirarchical_elements[selected_model].repeatableHeirachicalSchemaElements[i].elementKey.indexOf(schemaElement.element.name) > -1){
702 $scope.removeRepeatableHeirarchicalMap(selected_model,list_model_repeatable_heirarchical_elements[selected_model].repeatableHeirachicalSchemaElements[i],elementKey);
711 $scope.removeRepeatableHeirarchicalMap= function(modelName,repeatableHeirachicalSchemaElement,elementKey){
712 console.log("removeRepeatableHeirarchicalMap");
713 $scope.repeatableElements = repeatableHeirachicalSchemaElement.repeatableElements;
714 $scope.heirarchicalElements = repeatableHeirachicalSchemaElement.heirarchicalElements;
716 for(var j=0;j<$scope.repeatableElements.length;j++) {
717 if(angular.equals($scope.repeatableElements[j].elementKey,elementKey)){
718 map_model_repeatable_heirarchical_elements[modelName][repeatableHeirachicalSchemaElement.elementKey].repeatableElements.splice(j,1);
722 if($scope.repeatableElements[j].repeatableElements.length >0 || $scope.repeatableElements[j].heirarchicalElements.length >0 ){
723 if($scope.heirarchicalElements.length == 0){
724 $scope.removeRepeatableHeirarchicalMap(modelName,$scope.repeatableElements[j],elementKey);
727 if($scope.repeatableElements[j].heirarchicalElements.length > 0){
728 for(var i=0 ;i<$scope.repeatableElements[j].heirarchicalElements.length;i++){
729 if(angular.equals($scope.repeatableElements[j].heirarchicalElements[i].elementKey,elementKey)){
730 $scope.removeRepeatableHeirarchicalMap(modelName,$scope.repeatableElements[j],elementKey);
734 if($scope.repeatableElements[j].repeatableElements.length > 0){
735 for(var q=0 ;q<$scope.repeatableElements[j].repeatableElements.length;q++){
736 if(angular.equals($scope.repeatableElements[j].repeatableElements[q].elementKey,elementKey)){
737 $scope.removeRepeatableHeirarchicalMap(modelName,$scope.repeatableElements[j],elementKey);
745 for(var k=0;k<$scope.heirarchicalElements.length;k++) {
746 if(angular.equals($scope.heirarchicalElements[k].elementKey,elementKey)){
747 var count = $scope.heirarchicalElements[k].repeatableElements.length;
748 $scope.childElements.splice($scope.index,count);
749 map_model_repeatable_heirarchical_elements[modelName][repeatableHeirachicalSchemaElement.elementKey].heirarchicalElements.splice(k,1);
752 $scope.removeRepeatableHeirarchicalMap(modelName,$scope.heirarchicalElements[k],elementKey);