[CLAMP-1] Initial ONAP CLAMP seed code commit
[clamp.git] / src / main / resources / META-INF / resources / designer / scripts / app.js
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP CLAMP
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights
6  *                             reserved.
7  * ================================================================================
8  * Licensed under the Apache License, Version 2.0 (the "License"); 
9  * you may not use this file except in compliance with the License. 
10  * You may obtain a copy of the License at
11  * 
12  * http://www.apache.org/licenses/LICENSE-2.0
13  * 
14  * Unless required by applicable law or agreed to in writing, software 
15  * distributed under the License is distributed on an "AS IS" BASIS, 
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
17  * See the License for the specific language governing permissions and 
18  * limitations under the License.
19  * ============LICENSE_END============================================
20  * ===================================================================
21  * ECOMP is a trademark and service mark of AT&T Intellectual Property.
22  */
23
24 'use strict';
25
26 /* App Module */
27
28  
29 var app = angular.module('clds-app', ['ngRoute', 
30                                           'ngResource',
31                                           'angularjs-dropdown-multiselect',
32                                           'angularjs-dropdown-multiselect-new',
33                                           'hljs',
34                                           'ui.bootstrap',
35                                           'angular-loading-bar', 
36                                           'ngAnimate',
37                                           'dialogs.main',
38                                           'ui.grid', 
39                                           'ui.grid.resizeColumns',
40                                           'ui.grid.paging',
41                                           'ui.grid.selection',
42                                           'ui.grid.cellNav',
43                                           'ui.grid.pinning',
44                                           'ngSanitize',
45                                           'ngCookies',
46                                           'ui.bootstrap.modal',
47                                           'ui.grid.exporter',
48                                           'angucomplete',
49                                           'kendo.directives'
50                                           ])
51 .config(['cfpLoadingBarProvider', function(cfpLoadingBarProvider) 
52 {
53         console.log("///////////////cfpLoadingBarProvider");
54     cfpLoadingBarProvider.includeBar = true;
55     cfpLoadingBarProvider.includeSpinner = true;
56   }])
57 .config(function ($httpProvider) {
58         console.log("config");
59           $httpProvider.responseInterceptors.push('myHttpInterceptor');
60
61           var spinnerFunction = function spinnerFunction(data, headersGetter) 
62           {
63                 console.log("spinnerFunction");
64                 return data;
65           };
66
67           $httpProvider.defaults.transformRequest.push(spinnerFunction);
68 })
69 .config(['$routeProvider','$locationProvider', '$compileProvider','cfpLoadingBarProvider',function(
70                                 $routeProvider, 
71                                 $locationProvider,
72                                 cfpLoadingBarProvider,
73                                 $timeout,
74                                 dialogs,
75                                 $cookies) 
76 {
77         console.log("$routeProvider','$locationProvider', '$compileProvider','cfpLoadingBarProvider'")
78   $locationProvider.html5Mode(false);
79   //alert("App.js");
80      
81         $routeProvider.
82         when('/otherwise', {templateUrl: 'partials/please_wait.html', controller: QueryParamsHandlerCtrl }).
83         //when('/dashboard_submit', { templateUrl: 'partials/portfolios/dashboard_submit.html', controller: CreateNewPrjCtrl }).
84         when('/dashboard', { templateUrl: 'partials/portfolios/clds_modelling.html', controller: DashboardCtrl }).
85         //when('/dashboard_upload', { templateUrl: 'partials/portfolios/dashboard_upload.html', controller: DashboardCtrl }).
86         when('/activity_modelling', { templateUrl: 'partials/portfolios/clds_modelling.html', controller: DashboardCtrl }).
87         when('/authenticate', { templateUrl: 'authenticate.html', controller: AuthenticateCtrl }).
88         when('/invalidlogin', { templateUrl: 'partials/invalid_login.html', controller: PageUnderConstructionCtrl }).
89         otherwise({redirectTo: '/otherwise'});
90   
91 }]).controller('dialogCtrl',function($scope,$rootScope,$timeout,dialogs){
92         
93         //-- Variables --//
94         console.log("dialogCtrl");
95         $scope.lang = 'en-US';
96         $scope.language = 'English';
97
98         var _progress = 100;
99         
100         $scope.name = '';
101         $scope.confirmed = 'No confirmation yet!';
102         
103         $scope.custom = {
104                 val: 'Initial Value'
105         };
106         
107         //-- Listeners & Watchers --//
108
109         $scope.$watch('lang',function(val,old){
110                 console.log("lang");
111                 switch(val){
112                         case 'en-US':
113                                 $scope.language = 'English';
114                                 break;
115                         case 'es':
116                                 $scope.language = 'Spanish';
117                                 break;
118                 }
119         });
120
121         //-- Methods --//
122 $rootScope.testCaseRequirements=[];
123 $rootScope.validTestRequirements=[];
124 /*$rootScope.testCaseValue=[];*/
125         $scope.setLanguage = function(lang)
126         {
127                 console.log("setLanguage");
128
129                 $scope.lang = lang;
130                 $translate.use(lang);
131         };
132
133         $rootScope.launch = function(which){
134                 console.log("launch");
135                 switch(which){
136                         case 'error':
137                                 dialogs.error();
138                                 break;
139                         case 'wait':
140                                 //var dlg = dialogs.wait(undefined,undefined,_progress);
141                                 //_fakeWaitProgress();
142                                 break;
143                         case 'customwait':
144                                 //var dlg = dialogs.wait('Custom Wait Header','Custom Wait Message',_progress);
145                                 //_fakeWaitProgress();
146                                 break;
147                         case 'notify':
148                                 dialogs.notify();
149                                 break;
150                         case 'confirm':
151                                 var dlg = dialogs.confirm();
152                                 dlg.result.then(function(btn){
153                                         console.log("dlg.result");
154                                         $scope.confirmed = 'You confirmed "Yes."';
155                                 },function(btn){
156                                         console.log("btn");
157                                         $scope.confirmed = 'You confirmed "No."';
158                                 });
159                                 break;
160                         case 'custom':
161                                 var dlg = dialogs.create('/dialogs/custom.html','customDialogCtrl',{},{size:'lg',keyboard: true,backdrop: 'static',windowClass: 'my-class'});
162                                 dlg.result.then(function(name){
163                                         console.log("dlg.result");
164                                         $scope.name = name;
165                                 },function(){
166                                         console.log("custom");
167                                         if(angular.equals($scope.name,''))
168                                                 $scope.name = 'You did not enter in your name!';
169                                 });
170                                 break;
171                         case 'custom2':
172                                 var dlg = dialogs.create('/dialogs/custom2.html','customDialogCtrl2',$scope.custom,{size:'lg'});
173                                 break;
174                         case 'custom3':
175                                 var dlg = dialogs.notify('Message','All is not supported, Please select interface(s)/version(s) to fetch real time federated coverage report.');
176                                 break;
177                         case 'custom4':
178                                 var dlg = dialogs.confirm('Message','You are about to fetch real time federated coverage report.This may take sometime!!!.');
179                                 dlg.result.then(function(btn){
180                                         console.log("dlg.result");
181                                         $scope.confirmed = 'You confirmed "Yes."';
182                                 },function(btn){
183                                         console.log("btn");
184                                         $scope.confirmed = 'You confirmed "No."';
185                                 });
186                                 break;
187                         case 'custom5':
188                                 var dlg = dialogs.notify('Success','Request has been successfully processed.');
189                                 break;
190                         case 'custom6':
191                                 var dlg = dialogs.notify('Message','Please type Testscenario Name');
192                                 break;
193                 }
194         }; // end launch
195         
196         var _fakeWaitProgress = function()
197         {
198                 console.log("_fakeWaitProgress");
199                 $timeout(function()
200                 {
201                         console.log("timeout");
202                         if(_progress < 100)
203                         {
204                                 _progress += 33;
205                                 $rootScope.$broadcast('dialogs.wait.progress',{'progress' : _progress});
206                                 _fakeWaitProgress();
207                         }
208                         else
209                         {
210                                 $rootScope.$broadcast('dialogs.wait.complete');
211                                 _progress = 0;
212                         }
213                 },1000);
214         };
215 }).controller('MenuCtrl',['$scope', '$rootScope','$timeout','dialogs','$location','MenuService','Datafactory',
216 'userPreferencesService','cldsModelService','cldsTemplateService',function($scope,$rootScope,$timeout,dialogs,
217         $location, MenuService,Datafactory,userPreferencesService,cldsModelService,cldsTemplateService)
218 {       
219         console.log("MenuCtrl");
220         $rootScope.screenName="Universal Test Modeler";
221         $rootScope.testSet = null;
222         $rootScope.isNew= false;
223         var testingType="";
224         $rootScope.contactUs= function()
225         {
226                 console.log("contactUs");
227                 var link = "mailto:onap-discuss@lists.onap.org?subject=CLAMP&body=Please send us suggestions or feature enhancements or defect. If possible, please send us the steps to replicate any defect.";
228                 window.location.href = link;
229         };
230         
231 $scope.emptyMenuClick = function(value, name) {
232     if ($rootScope.isNew && (name != "Save Template" && name != "Close Template" &&
233             name != "Template Properties")) {
234         saveConfirmationNotificationPopUp();
235     } else if ($rootScope.isNewClosed && name != "Save CL" && name != "Close Model" &&
236         name != "Properties CL") {
237         saveConfirmationNotificationPopUp();
238     } else {
239         isSaveCheck(name);
240     }
241
242     function saveConfirmationNotificationPopUp() {
243         $scope.saveConfirmationNotificationPopUp(function(data) {
244             console.log("saveConfirmationNotificationPopUp");
245             if (data) {
246                 if ($rootScope.isNewClosed) {
247                     isSaveCheck("Save CL");
248                 } else {
249                     isSaveCheck("Save Template");
250                 }
251                 $rootScope.isNewClosed = false;
252                 $rootScope.isNew = false;
253             } else {
254                 return false;
255             }
256         });
257     }
258
259     function isSaveCheck(name) {
260         console.log("isSaveCheck");
261         if (name == "Wiki") {
262             window.open(value);
263         } else if (name == "Contact Us") {
264             $rootScope.contactUs();
265         } else if (name == "Revert Template Changes") {
266             $scope.cldsRevertTemplate();
267         } else if (name == "Revert Model Changes") {
268             $scope.cldsRevertModel();
269         } else if (name == "Create Template") {
270             $rootScope.isNew = true;
271             $scope.cldsCreateTemplate();
272         } else if (name == "Open Template") {
273             $scope.cldsOpenTemplate();
274         } else if (name == "Save Template") {
275             $scope.cldsTemplatePerformAction("SAVE");
276             $rootScope.isNewClosed = false;
277             $rootScope.isNew = false;
278         } else if (name == "Template Properties") {
279             $scope.cldsOpenTemplateProperties();
280         } else if (name == "Close Model" || name == "Close Template") {
281             $scope.cldsClose();
282         } else if (name == "Refresh ASDC") {
283             $scope.cldsRefreshASDC();
284         } else if (name == "Create CL") {
285             $rootScope.isNewClosed = true;
286             $scope.cldsCreateModel();
287         } else if (name == "Open CL") {
288             $scope.cldsOpenModel();
289         } else if (name == "Save CL") {
290             $rootScope.isNewClosed = false;
291             $rootScope.isNew = false;
292             $scope.cldsPerformAction("SAVE");
293         } else if (name == "Test") {
294             $scope.cldsPerformAction("TEST");
295         } else if (name == "Submit") {
296             $scope.cldsConfirmPerformAction("SUBMIT");
297         } else if (name == "Resubmit") {
298             $scope.cldsConfirmPerformAction("RESUBMIT");
299         } else if (name == "Update") {
300             $scope.cldsConfirmPerformAction("UPDATE");
301         } else if (name == "Delete") {
302             $scope.cldsConfirmPerformAction("DELETE");
303         } else if (name == "Stop") {
304             $scope.cldsConfirmPerformAction("STOP");
305         } else if (name == "Restart") {
306             $scope.cldsConfirmPerformAction("RESTART");
307         } else if (name == "Refresh Status") {
308             $scope.cldsPerformAction("REFRESH");
309         } else if (name == "Properties CL") {
310             $scope.cldsOpenModelProperties();
311         } else if (name === "Running Instances") {
312             $scope.cldsShowRunningInstances();
313         } else {
314             $rootScope.screenName = name;
315             $scope.updatebreadcrumb(value);
316             $location.path(value);
317         }
318     }
319 };
320
321         
322         
323         
324         $rootScope.impAlerts= function()
325         {
326                 console.log("impAlerts");
327         };
328         
329         $scope.tabs = {         
330                                         "Template": [
331                                              {
332                                                  link: "/cldsCreateTemplate",
333                                              name: "Create Template"
334                                              }, {
335                                                      link: "/cldsOpenTemplate",
336                                                      name: "Open Template"
337                                      }, {
338                                         link: "/cldsSaveTemplate",
339                                         name: "Save Template"                      
340                                              },
341                                              {
342                                                  link: "/cldsOpenTemplateProperties",
343                                              name: "Template Properties"
344                                              },
345                                              {
346                                                  link: "/RevertChanges",
347                                              name: "Revert Template Changes"
348                                              },
349                                              {
350                                                  link: "/Close",
351                                              name: "Close Template"
352                                              }
353                                          ],
354                                     
355                                  "Closed Loop": [
356                                              {
357                                                  link: "/cldsCreateModel",
358                                              name: "Create CL"
359                                              }, {
360                                                      link: "/cldsOpenModel",
361                                                      name: "Open CL"
362                                      }, {
363                                         link: "/cldsSaveModel",
364                                         name: "Save CL"                    
365                                              },
366                                              {
367                                                  link: "/cldsOpenModelProperties",
368                                              name: "Properties CL"
369                                              },
370                                              {
371                                                  link: "/RevertChanges",
372                                              name: "Revert Model Changes"
373                                              },
374                                              {
375                                                  link: "/Close",
376                                              name: "Close Model"
377                                              }
378                                          ],    
379                                  "Manage": [
380                                                  {
381                                                      link: "/cldsTestActivate",
382                                                      name: "Test"
383                                     },
384                                     {
385                                         link: "/cldsSubmit",
386                                         name: "Submit"                     
387                                              },
388                                      {
389                                         link: "/cldsResubmit",
390                                         name: "Resubmit"                           
391                                              },
392                                      {
393                                         link: "/cldsUpdate",
394                                         name: "Update"                     
395                                              },
396                                      {
397                                         link: "/cldsStop",
398                                         name: "Stop"                       
399                                              },
400                                      {
401                                         link: "/cldsRestart",
402                                         name: "Restart"                    
403                                              },
404                                      {
405                                         link: "/cldsDelete",
406                                         name: "Delete"                     
407                                              }
408                                          ],   
409                                          "View": [
410                                                 {
411                                                      link: "/refreshStatus",
412                                                      name: "Refresh Status"
413                                     },
414                                     {
415                                         link:"/refreshASDCProperties",
416                                         name:"Refresh ASDC"
417                                     },
418                                     {
419                                         link:"/viewRunningInstances",
420                                         name:"Running Instances"
421                                     }
422                                                          ],   
423                                  "Help": [
424                                     {
425                                         link: "http://wiki.onap.org",
426                                         name: "Wiki"
427                                     }, {
428                                         link: "/contact_us",
429                                         name: "Contact Us"                         
430                                     }
431                                     
432                                     
433                                  ]
434         };
435
436         
437         if (!Object.keys) 
438         {
439             Object.keys = function(obj) 
440             {
441                 console.log("keys");
442                 console.log("keys");
443                 var keys = [];
444
445                 for (var i in obj) {
446                     if (obj.hasOwnProperty(i)) {
447                         keys.push(i);
448                     }
449                 }
450
451                 return keys;
452             };
453             $scope.keyList = Object.keys($scope.tabs);
454         } else
455         {
456             $scope.keyList = Object.keys($scope.tabs);
457         }
458         
459         $scope.updatebreadcrumb = function(path)
460         {     
461                 console.log("updatebreadcrumb");
462                 var currentURL = $location.path();              
463                 if(path!=undefined)
464                 {
465                  currentURL = path;
466                 }                       
467                 
468                 if(currentURL=="/dashboard")
469             {
470                 $rootScope.screenName = "Universal Test Modeler";
471                 $rootScope.parentMenu = "Home";
472                 $rootScope.rightTabName="UTM Build Configuration";
473             }
474                 /*else if(currentURL=="/quicksearch")
475             {
476                 $rootScope.screenName = "Quick Search";
477                 $rootScope.parentMenu = "Home";
478             }*/
479             else
480             {
481                 var found = false;
482                 
483                 angular.forEach($scope.keyList, function(value, key) 
484                 {
485                         console.log("foreachfunction");
486                         if(!found)
487                         {
488                                 $rootScope.parentMenu = value;
489                                 
490                             angular.forEach($scope.tabs[value], function(value, key) 
491                                 {
492                                         console.log("tebvalue");
493                                 if(currentURL==value.link)
494                                 {
495                                         $rootScope.screenName=value.name;
496                                         found=true;
497                                 }                         
498                                 });
499                         }
500                 });
501             }
502         };
503         
504         $scope.updatebreadcrumb();
505         
506         $scope.createNewProject = function(){  
507             console.log("createNewProject");
508                 if($rootScope.projectName != null){
509                         var dlg = dialogs.confirm('Message','Do you want to over-write  the project ?');
510                 
511                                 dlg.result.then(function(btn){
512                                         console.log("dlg.result");
513                                         $scope.clearProject();
514                                         var dlg1 = dialogs.create('partials/portfolios/create_new_project.html','CreateNewPrjCtrl',{},{size:'sm',keyboard: true,backdrop: false,windowClass: 'my-class'});
515                                 dlg1.result.then(function(name){
516                                         console.log("dlg.result");
517                                         //$scope.name = name;
518                                 },function(){
519                                         console.log("emptyfunction");
520                                         //if(angular.equals($scope.name,''))
521                                                 //$scope.name = 'You did not enter in your name!';
522                                 });     
523                                 },function(btn){
524                                         console.log("btn");
525                                         //$modalInstance.close("closed");
526                                 });
527                         
528                 }else{
529                         var dlg = dialogs.create('partials/portfolios/create_new_project.html','CreateNewPrjCtrl',{},{size:'lg',keyboard: true,backdrop: false,windowClass: 'my-class'});
530                         dlg.result.then(function(name){
531                                 console.log("dlg.result");
532                                 //$scope.name = name;
533                         },function(){
534                                 console.log("emptyfunction");
535                                 //if(angular.equals($scope.name,''))
536                                         //$scope.name = 'You did not enter in your name!';
537                         });     
538                         
539                 }
540         };
541         
542         $scope.clearProject= function(){ 
543             console.log("clearProject");
544                 $rootScope.projectName= null;
545                 $rootScope.revision = -1;
546                 //$rootScope.models.length=0;
547                 $rootScope.utmModels=$rootScope.$new(true);
548                 $rootScope.serviceInfo = $rootScope.$new(true);
549                 $rootScope.serviceInfo= null;
550                 $rootScope.serviceInputPartInfo = $rootScope.$new(true);
551                 $rootScope.serviceOutputPartInfo=$rootScope.$new(true);
552                 $rootScope.servicefaultPartInfo =$rootScope.$new(true);
553                 $rootScope.isModel = false;
554                 $("#paletteDiv").load('./modeler/dist/index.html');  
555                 $rootScope.isPalette = false;      
556                 $rootScope.isTestset = false;
557                 $rootScope.isRequirementCoverage = false;
558                 $rootScope.ispropertyExplorer = false;
559          //     $("#propertyDiv").load('./partials/portfolios/Property_Explorer.html');
560                 $rootScope.modelName="";
561                 //document.getElementById('propertyExplorer').classList.remove('visible');
562                 document.getElementById("modeler_name").textContent="Activity Modeler";
563                 //$( "#propertyExplorer" ).prev().css( "display", "block" );
564                 $( "#activity_modeler" ).prev().css( "display", "block" );
565                 $( 'div' ).find('.k-expand-next').click();
566         
567                 $rootScope.$apply();
568                         
569         };
570         
571         $scope.homePage=function(){
572                 console.log("homePage");
573                 $location.path('/dashboard');
574         };
575        $scope.propertyExplorerErrorMessage = function(msg)
576        {
577             console.log("propertyExplorerErrorMessage");
578            var dlg = dialogs.notify('Error',msg);
579        }
580        
581        //$scope.fromTstMultipleFlag=false;
582         /*onclicking of review testset / generate testset */
583         $scope.generateTestSet=function(testingType){
584                 console.log("generateTestSet");
585                 var errorMessage="";
586                 var generateTestSetMDTURL = "/utm-service/test_generation/generateMDTTestSet";
587                 
588                         var UTMProjectExplorer = {};
589                         UTMProjectExplorer.projectName = $rootScope.projectName;
590                         UTMProjectExplorer.utmModels = $rootScope.utmModels;
591                         
592                         UTMProjectExplorer.utmDepthValueMap = $rootScope.depthElementKeyMap;
593                         UTMProjectExplorer.utmCountValueMap = $rootScope.countElementKeyMap;
594
595                 var utmMDTRequest = {};
596                 utmMDTRequest.mainProcessName = selected_model;
597                         var utm_models = [];
598                         $rootScope.populateUTMModelArray(utm_models,$rootScope.utmModels);                      
599                         utmMDTRequest.utmModels = utm_models;
600                         
601                         utmMDTRequest.testingType=testingType;
602                 
603                         utmMDTRequest.utmProjectExplorer = UTMProjectExplorer;
604                         if ($rootScope.wsdlInfo != null) {
605                                 utmMDTRequest.schemaLocation = $rootScope.wsdlInfo.schemaLocation;                                      
606                         }
607                         
608                         utmMDTRequest.dbToolRequests = Datafactory.getDbToolProjectLevelList();
609                         utmMDTRequest.runtimePythonScriptProjectLevelList = Datafactory.getRuntimePythonScriptProjectLevelList();
610                         utmMDTRequest.xmlValidatorList = Datafactory.getXmlValidatorList();
611                         utmMDTRequest.modelPreferenceInfo = Datafactory.getModelPreferenceInfo();
612                 MenuService.generateMDTTestSet(utmMDTRequest, generateTestSetMDTURL)
613                 .then(function(pars) {
614                         list_model_test_sets[selected_model] = pars;
615                         
616                         //populate test sets of other models
617                         for(var i = 0; i < utm_models.length; i++){
618                                 var model_test_set = {};
619                                 model_test_set.activityTestCases = [];
620                                 model_test_set.invalidModelException = pars.invalidModelException;
621                                 model_test_set.serviceName = pars.serviceName;
622                                 for(var y = 0; y < pars.activityTestCases.length; y++){
623                                         for(var z = 0; z < pars.activityTestCases[y].modelElements.length; z++){
624                                                 if(pars.activityTestCases[y].modelElements[z].modelName == utm_models[i].modelName){
625                                                         model_test_set.activityTestCases.push(pars.activityTestCases[y]);
626                                                         break;
627                                                 }
628                                         }
629                                 }
630                                 list_model_test_sets[utm_models[i].modelName] = model_test_set;
631                         }
632                         
633                         list_model_test_sets[selected_model] = pars;
634
635                         if(pars.invalidModelException.invalidModelElementExceptions.length>0){
636                                 for(var i=0;i<pars.invalidModelException.invalidModelElementExceptions.length;i++){
637                                         errorMessage = errorMessage +"\n"+"["+(i+1)+"]." + " "+pars.invalidModelException.invalidModelElementExceptions[i].message+"\n";
638                                         console.log("error Message:"+errorMessage);
639                                 }
640                                 
641                                 var dlg = dialogs.notify('Failure',errorMessage);
642                                 
643                         }else{
644                                 
645                                 $rootScope.modeltestset = pars; 
646                                 
647                                 if(!$scope.fromTstMultipleFlag){
648                                 $rootScope.isPalette = false;
649                                 $rootScope.isTestset = true;
650                                 $rootScope.isRequirementCoverage = false;
651                                 document.getElementById("modeler_name").textContent="UTM Test Set";
652                                 //document.getElementById('propertyExplorer').classList.add('visible');
653                                 $('div').find('.k-collapse-next').click();
654                                 //$( "#propertyExplorer" ).prev().css( "display", "none" );
655                                 //$rootScope.$apply();
656                                 document.getElementById("Review/Validate Test Set").classList.remove('ThisLink');
657                         
658                                 document.getElementById("Export to Excel").classList.remove('ThisLink');
659                                 /*document.getElementById("Export Test Set").classList.remove('ThisLink');*/
660                                 document.getElementById("Test Case / Requirement Coverage").classList.remove('ThisLink');
661                                 //$rootScope.$apply();
662                         }
663                 }
664                         
665                 },
666                 function(data) {
667                         console.log("data");
668
669                 });
670                 
671                         
672         };
673         $scope.reviewTestSet=function(){
674
675                         console.log("reviewTestSet");
676                                 $rootScope.modeltestset = list_model_test_sets[selected_model];
677                                 
678                                 $rootScope.isPalette = false;
679                                 $rootScope.isTestset = true;
680                                 $rootScope.isRequirementCoverage = false;
681                                 document.getElementById("modeler_name").textContent="UTM Test Set";
682                                 //document.getElementById('propertyExplorer').classList.add('visible');
683                                 
684                                 //$( "#propertyExplorer" ).prev().css( "display", "none" );
685                                 $('div').find('.k-collapse-next').click();
686                                 console.log($rootScope.modeltestset);
687                                 //$rootScope.$apply();
688                 
689                 
690                         
691         };
692         $scope.requirementCoverage=function(){
693                 console.log("requirementCoverage");
694                 $rootScope.testCaseRequirements=[];
695                 $rootScope.validTestRequirementArray=[];
696                 $rootScope.validTestRequirements={};        
697                 $rootScope.modeltestset = list_model_test_sets[selected_model];         
698                 var allPathDetails=[]; 
699                 $scope.currentSelectedModel = {};
700                 $scope.getPathDetails($rootScope.utmModels,selected_model);
701                 $scope.populatePathDetails(allPathDetails,$scope.currentSelectedModel);
702                 $rootScope.pathDetailsList = list_model_path_details[selected_model];
703                 /*for(var p=0;p<100;p++){
704                                 $rootScope.testCaseRequirements.push("Requirement"+p);  
705                         }
706                 for(var p=0;p<100;p++){
707                         $rootScope.testCaseValue.push("TestCase"+p);                            
708                 }*/
709                 for(var x=0;x<allPathDetails.length;x++){                       
710                         var tempPathDetails = allPathDetails[x];   
711                         if(tempPathDetails != null){
712                                 for (var i = 0; i < tempPathDetails.length; i++) {
713                                         var pathDetails = tempPathDetails[i];                           
714                                         if(pathDetails.requirement !=='' && pathDetails.requirement !== null ){                                 
715                                                 $rootScope.testCaseRequirements.push(pathDetails.requirement);
716                                         }
717                 
718                                         /*for (var j = 0; j < pathDetails.decisionIdentifiers.length; j++) {
719                                           if(pathDetails.decisionIdentifiers[j].requirement !== '' && pathDetails.decisionIdentifiers[j].requirement !== null){                                         
720                                                 $rootScope.testCaseRequirements.push(pathDetails.decisionIdentifiers[j].requirement);
721                                           }
722                                         }*/
723                     }
724                         }
725                         
726         }
727                 /*console.log("path details "+JSON.stringify($rootScope.pathDetailsList));
728                 console.log("modeltestset "+$rootScope.modeltestset);*/
729                 for(var p=0;p<$rootScope.modeltestset.activityTestCases.length;p++)
730                         {
731                                                                 var activityTestCases = $rootScope.modeltestset.activityTestCases[p];
732                                                                 if (activityTestCases.mappedRequirements !=null) {
733                                                                 for (var i = 0; i < activityTestCases.mappedRequirements.length; i++) {
734                                                                         //$rootScope.testCaseRequirements
735                                                                         //.push(activityTestCases.mappedRequirements[i]);
736                                                                         var testCaseNames = $rootScope.validTestRequirements[activityTestCases.mappedRequirements[i]];
737                                                                         if(testCaseNames == null){
738                                                                                 testCaseNames = [];
739                                                                         }
740                                                                         if(activityTestCases.version !=null)
741                                                                                 var testCase= activityTestCases.testCaseName + "_" +activityTestCases.version;
742                                                                         else
743                                                                                 var testCase= activityTestCases.testCaseName;
744                                                                         testCaseNames.push(testCase);
745                                                                         $rootScope.validTestRequirements[activityTestCases.mappedRequirements[i]]=testCaseNames;
746                                                                 }
747                                                         }
748                         }
749                 
750                 
751                 
752                 
753                 
754                 
755                                 $rootScope.isPalette = false;
756                                 $rootScope.isTestset = false;
757                                 $rootScope.isRequirementCoverage = true;
758                                 document.getElementById("modeler_name").textContent="Test Case / Requirement Coverage";
759                                 //document.getElementById('propertyExplorer').classList.add('visible');
760                                 console.log("modeltestset"+JSON.stringify($rootScope.modeltestset));
761                                 //$( "#propertyExplorer" ).prev().css( "display", "none" );
762                                 $('div').find('.k-collapse-next').click();
763                                 //$rootScope.$apply();
764                 
765                 
766                         
767         };
768         
769         
770         
771         
772         $scope.activityModelling = function(){
773                 console.log(".activityModelling");
774                 //window.open("./bpmn-js-examples-master/modeler/dist/index.html", "_self");
775        // $location.path('/activity_modelling');
776         };
777         /*$scope.openProject = function(){
778                 $location.path('/dashboard_upload');
779         };*/
780         $rootScope.cldsOpenTemplateProperties=function(){
781                 console.log("cldsOpenTemplateProperties");
782                 var dlg = dialogs.create('partials/portfolios/global_template_properties.html','CldsOpenTemplateCtrl',{},{size:'lg',keyboard: true,backdrop: 'static',windowClass: 'my-class'});
783                 
784                 dlg.result.then(function(name){
785                         console.log("dlg.result");
786                         //$scope.modelName =modelName;
787                         //$("#" + selected_model).addClass("selectedcolor");
788                                 //alert ("model name:"+$scope.modelName);
789                         },function(){
790                                 console.log("....emptyfunction");
791                                 //if(angular.equals($scope.name,''))
792                                         //$scope.name = 'You did not enter in your name!';
793                         });     
794         }
795         
796         $scope.cldsShowRunningInstances=function(){
797                 console.log("cldsShowRunningInstances");
798                 var localInstances;
799                 var modelName = selected_model;
800                 var dlg;
801                 cldsModelService.getRunningInstances(modelName).then(function(pars) {
802                         console.log("getRunningInstances");
803                         localInstances = pars;
804                         angular.forEach(localInstances.cldsModelInstanceList , function(element){
805                                 console.log("cldsModelInstanceList");
806                                 element.status = "Stopped";
807                                 if ( localInstances.status == "ACTIVE" ) {
808                                         element.status = "Running";
809                                 }
810                                         element.view = "";
811                                 });
812                                 runningInstances = localInstances.cldsModelInstanceList;
813                                 dlg = dialogs.create('partials/portfolios/running_instances.html','CldsOpenModelCtrl',{closable:true,draggable:true},{size:'lg',keyboard: true,backdrop: 'static',windowClass: 'my-class'});
814                                 dlg.result.then(function(name){
815                                         console.log("dlg.ressult");
816                         //$scope.name = name;
817                         },function(){
818                                 console.log("...emptyfunction");
819                                 //if(angular.equals($scope.name,''))
820                                         //$scope.name = 'You did not enter in your name!';
821                         });                                     
822                 },
823                 function(data) {
824                         console.log("data");
825                         //alert("setModel failed:  " + data);
826                 });             
827                         
828                 
829         };
830         
831         $scope.cldsClose = function(){
832                 console.log("cldsClose");
833                 var dlg = dialogs.create('partials/portfolios/confirmation_window.html','CldsOpenTemplateCtrl',{closable:true,draggable:true},{size:'lg',keyboard: true,backdrop: 'static',windowClass: 'my-class'});
834                         
835                 dlg.result.then(function(name){
836                         console.log("dlg.result");
837                         //$scope.name = name;
838                 },function(){
839                         console.log("...emptyfunction");
840                         //if(angular.equals($scope.name,''))
841                                 //$scope.name = 'You did not enter in your name!';
842                 });     
843         };
844         $scope.cldsOpenTemplate = function(){
845                 console.log("cldsOpenTemplate");
846                 var dlg = dialogs.create('partials/portfolios/clds_open_template.html','CldsOpenTemplateCtrl',{closable:true,draggable:true},{size:'lg',keyboard: true,backdrop: 'static',windowClass: 'my-class'});
847                         
848                 dlg.result.then(function(name){
849                         console.log("dlg.result");
850                         //$scope.name = name;
851                 },function(){
852                         console.log("emptyfunction");
853                         //if(angular.equals($scope.name,''))
854                                 //$scope.name = 'You did not enter in your name!';
855                 });     
856         };
857         $scope.saveConfirmationNotificationPopUp = function(callBack) {
858                 console.log("saveConfirmationNotificationPopUp");
859                     var dlg = dialogs.create('partials/portfolios/save_confirmation.html', 'saveConfirmationModalPopUpCtrl', { closable: true, draggable: true }, { size: 'lg', keyboard: true, backdrop: 'static', windowClass: 'my-class' });
860
861                     dlg.result.then(function(name) {
862                         console.log("OK");
863                         console.log("MINA TEST OK BUTTON: " + callBack);
864                         callBack("OK");
865                     }, function() {
866                         console.log("CANCEL");
867                         callBack(null);
868                     });
869
870                 };
871         $scope.cldsCreateTemplate=function(){
872                 console.log("cldsCreateTemplate");
873                 var dlg = dialogs.create('partials/portfolios/clds_create_template.html','CldsOpenTemplateCtrl',{closable:true,draggable:true},{size:'lg',keyboard: true,backdrop: 'static',windowClass: 'my-class'});
874                 
875                 dlg.result.then(function(name){
876                         console.log("dlg.result");
877                         //$scope.name = name;
878                 },function(){
879                         console.log("...emptyfunction");
880                         //if(angular.equals($scope.name,''))
881                                 //$scope.name = 'You did not enter in your name!';
882                 });     
883   
884         };
885         $scope.cldsRefreshASDC=function(){
886                 console.log("cldsRefreshASDC");
887                 var dlg = dialogs.create('partials/portfolios/refresh_asdc.html','CldsOpenModelCtrl',{closable:true,draggable:true},{size:'lg',keyboard: true,backdrop: 'static',windowClass: 'my-class'});
888                 dlg.result.then(function(name){
889                         console.log("dlg.result");
890                         //$scope.name = name;
891                 },function(){
892                         console.log("...emtptyfunction");
893                         //if(angular.equals($scope.name,''))
894                                 //$scope.name = 'You did not enter in your name!';
895                 });     
896         }
897         $scope.cldsRevertModel=function(){
898                 console.log("cldsRevertModel");
899                 var dlg = dialogs.create('partials/portfolios/ConfirmRevertChanges.html','CldsOpenModelCtrl',{closable:true,draggable:true},{size:'lg',keyboard: true,backdrop: 'static',windowClass: 'my-class'});
900                 
901                 dlg.result.then(function(name){
902                         console.log("dlg.result");
903                         //$scope.name = name;
904                 },function(){
905                         console.log("...emptyfunction");
906                         //if(angular.equals($scope.name,''))
907                                 //$scope.name = 'You did not enter in your name!';
908                 });     
909   
910         };
911         
912         $scope.cldsRevertTemplate=function(){
913                 console.log("cldsRevertTemplate");
914                 var dlg = dialogs.create('partials/portfolios/ConfirmRevertChanges.html','CldsOpenTemplateCtrl',{closable:true,draggable:true},{size:'lg',keyboard: true,backdrop: 'static',windowClass: 'my-class'});
915                 
916                 dlg.result.then(function(name){
917                         console.log("dlg.result");
918                         //$scope.name = name;
919                 },function(){
920                         console.log("..emptyfunction");
921                         //if(angular.equals($scope.name,''))
922                                 //$scope.name = 'You did not enter in your name!';
923                 });     
924   
925         };
926         $scope.cldsTemplatePerformAction = function(uiAction){
927                 console.log("cldsTemplatePerformAction");
928                         var modelName = selected_model;
929                         var controlNamePrefix = "ClosedLoop-";
930                         var bpmnText = modelXML;
931                         // serialize model properties
932                         var propText =  JSON.stringify(elementMap);     
933
934                         console.log("Generateing svg image");
935                         var svgXml = "";
936                         console.log(abootDiagram.saveSVG({format:true},function(err,xml){
937
938                                 if(err)
939                                 console.log("error")
940                                 else
941                                 console.log(xml)
942                                 svgXml = xml;
943                                 }));
944                         console.log("cldsTemplatePerformAction: " + uiAction + " modelName=" + modelName);      
945                         console.log("cldsTemplatePerformAction: " + uiAction + " controlNamePrefix=" + controlNamePrefix);      
946                         console.log("cldsTemplatePerformAction: " + uiAction + " bpmnText=" + bpmnText);      
947                         console.log("cldsTemplatePerformAction: " + uiAction + " propText=" + propText);      
948                         cldsTemplateService.processAction( uiAction, modelName, controlNamePrefix, bpmnText, propText,svgXml).then(function(pars) {
949                                 console.log("processAction");
950                         console.log("cldsTemplatePerformAction: pars=" + pars);
951                         cldsTemplateService.processActionResponse(modelName, pars);
952                 },
953                 function(data) {
954                         console.log(".....emptyfunction");
955                         //alert("setModel failed:  " + data);
956                 });
957         };  
958         
959         
960         
961         $rootScope.cldsOpenModelProperties=function(){
962                 console.log("cldsOpenModelProperties");
963                 var dlg = dialogs.create('partials/portfolios/global_properties.html','GlobalPropertiesCtrl',{},{size:'lg',keyboard: true,backdrop: 'static',windowClass: 'my-class'});
964                 
965                 dlg.result.then(function(name){
966                         console.log("dlg.result");
967                         //$scope.modelName =modelName;
968                         //$("#" + selected_model).addClass("selectedcolor");
969                                 //alert ("model name:"+$scope.modelName);
970                         },function(){
971                                 console.log("...emptyfunction");
972                                 //if(angular.equals($scope.name,''))
973                                         //$scope.name = 'You did not enter in your name!';
974                         });     
975         }
976         $scope.cldsOpenModel = function(){
977                 console.log("cldsOpenModel");
978                 var dlg = dialogs.create('partials/portfolios/clds_open_model.html','CldsOpenModelCtrl',{closable:true,draggable:true},{size:'lg',keyboard: true,backdrop: 'static',windowClass: 'my-class'});
979                         
980                 dlg.result.then(function(name){
981                         console.log("dlg.result");
982                         //$scope.name = name;
983                 },function(){
984                         console.log("...emptyfunction");
985                         //if(angular.equals($scope.name,''))
986                                 //$scope.name = 'You did not enter in your name!';
987                 });     
988         };
989         $scope.cldsCreateModel=function(){
990                 console.log("cldsCreateModel");
991                 var dlg = dialogs.create('partials/portfolios/clds_create_model_off_Template.html','CldsOpenModelCtrl',{closable:true,draggable:true},{size:'lg',keyboard: true,backdrop: 'static',windowClass: 'my-class'});
992                 
993                 dlg.result.then(function(name){
994                         console.log("dlg.result");
995                         //$scope.name = name;
996                 },function(){
997                         console.log("...emptyfunction");
998                         //if(angular.equals($scope.name,''))
999                                 //$scope.name = 'You did not enter in your name!';
1000                 });     
1001   
1002         };
1003         $scope.cldsPerformAction = function(uiAction){
1004                 console.log("cldsPerformAction");
1005                         var modelName = selected_model;
1006                         var controlNamePrefix = "ClosedLoop-";
1007                         var bpmnText = modelXML;
1008                         // serialize model properties
1009                         var propText =  JSON.stringify(elementMap);     
1010                         var templateName=selected_template
1011                         console.log("Generateing svg image");
1012                         var svgXml = "";
1013                         console.log(abootDiagram.saveSVG({format:true},function(err,xml){
1014                                 if(err)
1015                                 console.log("error")
1016                                 else
1017                                 console.log(xml)
1018                                 svgXml = xml;
1019                                 }));
1020                         console.log("cldsPerformAction: " + uiAction + " modelName=" + modelName);      
1021                         console.log("cldsPerformAction: " + uiAction + " controlNamePrefix=" + controlNamePrefix);      
1022                         console.log("cldsPerformAction: " + uiAction + " bpmnText=" + bpmnText);      
1023                         console.log("cldsPerformAction: " + uiAction + " propText=" + propText);      
1024                 cldsModelService.processAction( uiAction, modelName, controlNamePrefix, bpmnText, propText,svgXml,templateName).then(function(pars) {
1025                         console.log("cldsPerformAction: pars=" + pars);
1026                         cldsModelService.processRefresh(pars);
1027                 },
1028                 function(data) {
1029                         console.log("data");
1030                         //alert("setModel failed:  " + data);
1031                 });
1032         };   
1033         
1034        $scope.cldsConfirmPerformAction = function(uiAction){
1035
1036        console.log("cldsConfirmPerformAction");
1037                 var dlg = dialogs.confirm('Message', 'Do you want to ' + uiAction.toLowerCase() + ' the closed loop?');
1038                 dlg.result.then(function (btn) {
1039                         console.log("dlg.result");
1040                         $scope.cldsPerformAction(uiAction);
1041                 }, function (btn) {
1042                         console.log("btn");
1043                 //$modalInstance.close("closed");
1044             });
1045         }; 
1046       
1047         $scope.CollectorsWindow = function (collectorsWin) {
1048                 console.log("CollectorsWindow");
1049
1050             if (isTemplate){
1051                 var dlg = dialogs.create('partials/portfolios/Template_model.html','ImportSchemaCtrl',collectorsWin,{closable:true,draggable:true},{size:'lg',keyboard: true,backdrop: 'static',windowClass: 'my-class'});
1052                 dlg.result.then(function(name){
1053                         console.log("dlg.result");
1054
1055                 },function(){
1056                         console.log("...emptyfunction");
1057                     //if(angular.equals($scope.name,''))
1058                     //$scope.name = 'You did not enter in your name!';
1059                 });
1060             }
1061             else{
1062                 var dlg = dialogs.create('partials/portfolios/Collector_properties.html','ImportSchemaCtrl',{closable:true,draggable:true},{size:'lg',keyboard: true,backdrop: 'static',windowClass: 'my-class'});
1063                 dlg.result.then(function(name){
1064                         console.log("dlg.result");
1065
1066                 },function(){
1067                         console.log("...emptyfunction");
1068                     //if(angular.equals($scope.name,''))
1069                     //$scope.name = 'You did not enter in your name!';
1070                 });
1071
1072             }
1073
1074         };
1075         $scope.StringMatchWindow = function (stringMatch) {
1076                 console.log("StringMatchWindow");
1077                 if (isTemplate){
1078                 var dlg = dialogs.create('partials/portfolios/Template_model.html','ImportSchemaCtrl',stringMatch,{closable:true,draggable:true},{size:'lg',keyboard: true,backdrop: 'static',windowClass: 'my-class'});
1079                 dlg.result.then(function(name){
1080                         console.log("dlg.result");
1081
1082                 },function(){
1083                         console.log("...emptyfunction");
1084                     //if(angular.equals($scope.name,''))
1085                     //$scope.name = 'You did not enter in your name!';
1086                 });
1087             }
1088             else{
1089
1090                 var dlg = dialogs.create('partials/portfolios/stringMatch_properties.html','ImportSchemaCtrl',{closable:true,draggable:true},{size:'lg',keyboard: true,backdrop: 'static',windowClass: 'my-class'});
1091
1092                 dlg.result.then(function(name){
1093                         console.log("dlg.result");
1094                     //$scope.name = name;
1095                 },function(){
1096                         console.log("...emptyfunction");
1097                     //if(angular.equals($scope.name,''))
1098                     //$scope.name = 'You did not enter in your name!';
1099                 });
1100
1101             }
1102         };
1103
1104         $scope.TCAWindow = function (tca) {
1105                 if (isTemplate){
1106                 var dlg = dialogs.create('partials/portfolios/Template_model.html','ImportSchemaCtrl',tca,{closable:true,draggable:true},{size:'lg',keyboard: true,backdrop: 'static',windowClass: 'my-class'});
1107                 dlg.result.then(function(name){
1108                 },function(){
1109                     //if(angular.equals($scope.name,''))
1110                     //$scope.name = 'You did not enter in your name!';
1111                 });
1112             }
1113             else{
1114                 var dlg = dialogs.create('partials/portfolios/tca_properties.html','ImportSchemaCtrl',{closable:true,draggable:true},{size:'lg',keyboard: true,backdrop: 'static',windowClass: 'my-class'});
1115
1116                 dlg.result.then(function(name){
1117                     //$scope.name = name;
1118                 },function(){
1119                     //if(angular.equals($scope.name,''))
1120                     //$scope.name = 'You did not enter in your name!';
1121                 });
1122             }
1123         };
1124         
1125         $scope.PolicyWindow=function (policy) {
1126                 console.log("PolicyWindow");
1127                 if (isTemplate){
1128                 var dlg = dialogs.create('partials/portfolios/Template_model.html','ImportSchemaCtrl',policy,{closable:true,draggable:true},{size:'lg',keyboard: true,backdrop: 'static',windowClass: 'my-class'});
1129                 dlg.result.then(function(name){
1130                         console.log("dlg.result");
1131
1132                 },function(){
1133                         console.log("...emptyfunction");
1134                     //if(angular.equals($scope.name,''))
1135                     //$scope.name = 'You did not enter in your name!';
1136                 });
1137             }
1138             else {
1139                 var dlg = dialogs.create('partials/portfolios/PolicyWindow_properties.html', 'ImportSchemaCtrl', {
1140                     closable: true,
1141                     draggable: true
1142                 }, {size: 'lg', keyboard: true, backdrop: 'static', windowClass: 'my-class'});
1143
1144                 dlg.result.then(function (name) {
1145                         console.log("dlg.result");
1146                     //$scope.name = name;
1147                 }, function () {
1148                         console.log("...emptyfunction");
1149                     //if(angular.equals($scope.name,''))
1150                     //$scope.name = 'You did not enter in your name!';
1151                 });
1152
1153             }
1154         };
1155        
1156         
1157       
1158         
1159         $scope.populatePathDetails= function(allPathDetails,utmModels){
1160         console.log("populatePathDetails");             
1161                 if (utmModels != null && utmModels.name != null) {
1162                         var pathDetails = {};                           
1163                         pathDetails = list_model_path_details[utmModels.name];
1164                         allPathDetails.push(pathDetails);
1165                         if(utmModels.subModels != null && utmModels.subModels.length>0){                                
1166                                 for(var i=0 ; i<utmModels.subModels.length;i++) {
1167                                         var subModel = {};
1168                                         subModel = utmModels.subModels[i];
1169                                         $scope.populatePathDetails(allPathDetails,subModel);
1170                                  }
1171                         }
1172                         
1173                 }
1174         };      
1175         
1176         $scope.getPathDetails= function(utmModels,selectedModelName) { 
1177            console.log("getPathDetails");               
1178                 if (utmModels != null && utmModels.name != null && utmModels.name===selectedModelName){
1179                         $scope.currentSelectedModel = utmModels;
1180                 }else if(utmModels.subModels != null && utmModels.subModels.length>0){                          
1181                                 for(var i=0 ; i<utmModels.subModels.length;i++) {
1182                                         var subModel = {};
1183                                         subModel = utmModels.subModels[i];
1184                                         $scope.getPathDetails(subModel,selectedModelName);
1185                                  }
1186                         }
1187                                 
1188         };
1189         
1190         
1191         
1192 }]);
1193
1194 app.service('MenuService', ['$http', '$q', function ($http, $q) {
1195         console.log("MenuService");
1196     this.generateMDTTestSet = function(utmMDTRequest, generateTestSetMDTURL){
1197
1198         console.log("generateMDTTestSet");
1199         //alert("In generateMDTTestSet :: " + JSON.stringify(utmMDTRequest));
1200         var def = $q.defer();
1201         var sets = [];
1202         
1203         $http.post(generateTestSetMDTURL, utmMDTRequest)
1204         .success(function(data){ 
1205         console.log("success");         
1206                 sets = data;
1207                 def.resolve(data);              
1208                 
1209         })
1210         .error(function(data){
1211         console.log("error");                         
1212                 def.reject("GenerateMDTTestSet not successful");
1213         });
1214         
1215         return def.promise;
1216     };
1217 }]);
1218
1219 app.directive('focus',
1220                 function($timeout) {
1221                         console.log("focus");
1222         return {
1223                 scope : {
1224                         trigger : '@focus'
1225                 },
1226                 link : function(scope, element) {
1227                         scope.$watch('trigger', function(value) {
1228                                 console.log("trigger");
1229                                 if (value === "true") {
1230                                         $timeout(function() {
1231                                                 console.log("timeout");
1232                                                 element[0].focus();
1233                                         });
1234                                 }
1235                         });
1236                 }
1237         };
1238 }
1239 ); 
1240 app.directive('draggable', function($document) {
1241         console.log("draggable");
1242   return function(scope, element, attr) {
1243         console.log("return");
1244     var startX = 0, startY = 0, x = 0, y = 0;
1245     element.css({
1246      position: 'relative',
1247      
1248      backgroundColor: 'white',
1249      cursor: 'move',
1250      display: 'block',
1251      
1252     });
1253     element.on('mousedown', function(event) {
1254         console.log("mousedown");
1255       // Prevent default dragging of selected content
1256       //event.preventDefault();
1257       startX = event.screenX - x;
1258       startY = event.screenY - y;
1259       $document.on('mousemove', mousemove);
1260       $document.on('mouseup', mouseup);
1261     });
1262
1263     function mousemove(event) {
1264         console.log("mousemove");
1265       y = event.screenY - startY;
1266       x = event.screenX - startX;
1267       element.css({
1268         top: y + 'px',
1269         left:  x + 'px'
1270       });
1271     }
1272
1273     function mouseup() {
1274         console.log("mouseup");
1275       $document.off('mousemove', mousemove);
1276       $document.off('mouseup', mouseup);
1277     }
1278   };
1279 });
1280
1281 app.factory('myHttpInterceptor', function ($q, $window) 
1282 {
1283         console.log("myHttpInterceptor");
1284           return function (promise) 
1285           {
1286                 console.log("promise");
1287             return promise.then(function (response) 
1288             {
1289                 console.log("response");
1290               return response;
1291             }, 
1292             function (response) 
1293             {   
1294                 console.log("response");
1295               return $q.reject(response);
1296             });
1297           };
1298 });
1299
1300
1301
1302 app.run(['$route', function($route)  {
1303         console.log("route");
1304           $route.reload();
1305 }]);
1306 function TestCtrl($scope) {
1307         console.log("TestCtrl");
1308     $scope.msg = "Hello from a controller method.";
1309     $scope.returnHello = function() {
1310         console.log("returnHello");
1311         return $scope.msg ; 
1312     }
1313 }
1314 function importshema()
1315 {
1316         console.log("importshema");
1317
1318         angular.element(document.getElementById('navbar')).scope().importSchema();
1319         
1320 }
1321
1322 function CollectorsWindow(collectorsWin) {
1323         console.log("CollectorsWindow");
1324
1325     angular.element(document.getElementById('navbar')).scope().CollectorsWindow(collectorsWin);
1326
1327 }
1328
1329 function F5Window() {
1330         console.log("F5Window");
1331
1332     angular.element(document.getElementById('navbar')).scope().F5Window();
1333
1334 }
1335
1336 function StringMatchWindow(stringMatch) {
1337         console.log("StringMatchWindow");
1338
1339     angular.element(document.getElementById('navbar')).scope().StringMatchWindow(stringMatch);
1340
1341 }
1342 function TCAWindow(tca) {
1343
1344     angular.element(document.getElementById('navbar')).scope().TCAWindow(tca);
1345
1346 }
1347 function GOCWindow() {
1348         console.log("GOCWindow");
1349
1350     angular.element(document.getElementById('navbar')).scope().GOCWindow();
1351
1352 }
1353 function PolicyWindow(PolicyWin) {
1354         console.log("PolicyWin");
1355     angular.element(document.getElementById('navbar')).scope().PolicyWindow(PolicyWin);
1356
1357 }
1358
1359
1360
1361 function pathDetails(bpmnElementID,bpmnElementName,pathIdentifiers)
1362 {
1363         console.log("pathDetails");
1364
1365         angular.element(document.getElementById('navbar')).scope().pathDetails(bpmnElementID,bpmnElementName,pathIdentifiers);
1366         
1367 }
1368 function setdefaultvalue()
1369 {
1370         console.log("setDefaultValue");
1371
1372         angular.element(document.getElementById('navbar')).scope().setDefaultValue();
1373         
1374 }
1375 function upgradeSchemaVersion()
1376 {
1377         console.log("upgradeSchemaVersion");
1378
1379         angular.element(document.getElementById('navbar')).scope().upgradeSchemaVersion();
1380         
1381 }
1382 function saveProject()
1383 {
1384         console.log("saveProject");
1385
1386         angular.element(document.getElementById('navbar')).scope().saveProject();
1387         
1388 }
1389 function modifySchema()
1390 {
1391         console.log("modifySchema");
1392
1393         angular.element(document.getElementById('navbar')).scope().modifySchema();
1394         
1395 }
1396
1397 function definePID()
1398 {
1399         console.log("definePID");
1400
1401         angular.element(document.getElementById('navbar')).scope().definePID();
1402         
1403 }
1404 function defineServiceAcronym()
1405 {
1406         console.log("defineServiceAcronym");
1407
1408         angular.element(document.getElementById('navbar')).scope().defineServiceAcronym();
1409         
1410 }
1411 function errorProperty(msg)
1412 {
1413         console.log("errorProperty");
1414         angular.element(document.getElementById('navbar')).scope().propertyExplorerErrorMessage(msg);
1415 }
1416 function invisiblepropertyExplorer()
1417 {
1418         console.log("invisiblepropertyExplorer");
1419         
1420         angular.element(document.getElementById('navbar')).scope().invisibleproperty();
1421 }
1422 function updateDecisionLabel(originalLabel, newLabel)
1423 {
1424         console.log("updateDecisionLabel");
1425         angular.element(document.getElementById('navbar')).scope().updateDecisionLabels(originalLabel, newLabel);
1426 }