2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017-2018 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 * ===================================================================
28 [ 'ngRoute', 'ngResource', 'ui.bootstrap', 'angular-loading-bar', 'ngAnimate',
29 'dialogs.main', 'ngSanitize', 'ngCookies', 'ui.bootstrap.modal' ])
30 .config([ 'cfpLoadingBarProvider', function(cfpLoadingBarProvider) {
32 cfpLoadingBarProvider.includeBar = true;
33 cfpLoadingBarProvider.includeSpinner = true;
35 .config(function($httpProvider) {
37 $httpProvider.interceptors.push('myHttpInterceptor');
38 var spinnerFunction = function spinnerFunction(data, headersGetter) {
42 $httpProvider.defaults.transformRequest.push(spinnerFunction);
49 'cfpLoadingBarProvider',
50 function($routeProvider, $locationProvider, cfpLoadingBarProvider,
51 $timeout, dialogs, $cookies) {
53 $locationProvider.html5Mode(false);
54 $routeProvider.when('/otherwise', {
55 templateUrl : 'please_wait.html',
56 controller : 'QueryParamsHandlerCtrl'
57 }).when('/dashboard', {
58 templateUrl : 'partials/portfolios/clds_modelling.html',
59 controller : 'DashboardCtrl'
60 }).when('/activity_modelling', {
61 templateUrl : 'partials/portfolios/clds_modelling.html',
62 controller : 'DashboardCtrl'
63 }).when('/authenticate', {
64 templateUrl : 'authenticate.html',
65 controller : 'AuthenticateCtrl'
66 }).when('/invalidlogin', {
67 templateUrl : 'invalid_login.html',
68 controller : 'PageUnderConstructionCtrl'
70 redirectTo : '/otherwise'
75 function($scope, $rootScope, $timeout, dialogs) {
78 $scope.lang = 'en-US';
79 $scope.language = 'English';
82 $scope.confirmed = 'No confirmation yet!';
86 // -- Listeners & Watchers --//
87 $scope.$watch('lang', function(val, old) {
91 $scope.language = 'English';
94 $scope.language = 'Spanish';
99 $rootScope.testCaseRequirements = [];
100 $rootScope.validTestRequirements = [];
101 $scope.setLanguage = function(lang) {
104 $translate.use(lang);
106 $rootScope.launch = function(which) {
120 var dlg = dialogs.confirm();
121 dlg.result.then(function(btn) {
123 $scope.confirmed = 'You confirmed "Yes."';
126 $scope.confirmed = 'You confirmed "No."';
130 var dlg = dialogs.create('/dialogs/custom.html',
131 'customDialogCtrl', {}, {
135 windowClass : 'my-class'
137 dlg.result.then(function(name) {
142 if (angular.equals($scope.name, ''))
143 $scope.name = 'You did not enter in your name!';
147 var dlg = dialogs.create('/dialogs/custom2.html',
148 'customDialogCtrl2', $scope.custom, {
156 'All is not supported, Please select interface(s)/version(s) to fetch real time federated coverage report.');
162 'You are about to fetch real time federated coverage report.This may take sometime!!!.');
163 dlg.result.then(function(btn) {
165 $scope.confirmed = 'You confirmed "Yes."';
168 $scope.confirmed = 'You confirmed "No."';
172 var dlg = dialogs.notify('Success',
173 'Request has been successfully processed.');
176 var dlg = dialogs.notify('Message',
177 'Please type Testscenario Name');
181 var _fakeWaitProgress = function() {
183 $timeout(function() {
185 if (_progress < 100) {
187 $rootScope.$broadcast('dialogs.wait.progress', {
188 'progress' : _progress
192 $rootScope.$broadcast('dialogs.wait.complete');
208 'userPreferencesService',
210 'extraUserInfoService',
211 function($scope, $rootScope, $timeout, dialogs, $location, MenuService,
212 Datafactory, userPreferencesService, cldsModelService,
213 extraUserInfoService) {
215 console.log("MenuCtrl");
216 $rootScope.screenName = "Universal Test Modeler";
217 $rootScope.testSet = null;
218 var testingType = "";
219 $rootScope.contactUs = function() {
221 console.log("contactUs");
222 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.";
223 window.location.href = link;
225 extraUserInfoService.getUserInfo().then(function(pars) {
227 $scope.userInfo = pars;
228 if (!($scope.userInfo["permissionUpdateCl"])) {
233 $scope.emptyMenuClick = function(value, name) {
235 if ($rootScope.isNewClosed && name != "Save CL"
236 && name != "Close Model" && name != "Properties CL") {
237 saveConfirmationNotificationPopUp();
241 function saveConfirmationNotificationPopUp() {
243 $scope.saveConfirmationNotificationPopUp(function(data) {
246 if ($rootScope.isNewClosed) {
247 isSaveCheck("Save CL");
249 $rootScope.isNewClosed = false;
255 function isSaveCheck(name) {
257 if (name == "User Info") {
258 $scope.extraUserInfo();
259 } else if (name == "Wiki") {
261 } else if (name == "Contact Us") {
262 $rootScope.contactUs();
263 } else if (name == "Revert Model Changes") {
264 $scope.cldsRevertModel();
265 } else if (name == "Close Model") {
267 } else if (name == "Refresh ASDC") {
268 $scope.cldsRefreshASDC();
269 } else if (name == "Create CL") {
270 $rootScope.isNewClosed = true;
271 $scope.cldsCreateModel();
272 } else if (name == "Open CL") {
273 $scope.cldsOpenModel();
274 } else if (name == "Save CL") {
275 $rootScope.isNewClosed = false;
276 $scope.cldsPerformAction("SAVE");
277 } else if (name == "Validation Test") {
278 $scope.cldsPerformAction("TEST");
279 } else if (name == "Submit") {
280 $scope.cldsConfirmPerformAction("SUBMIT");
281 } else if (name == "Resubmit") {
282 $scope.cldsConfirmPerformAction("RESUBMIT");
283 } else if (name == "Update") {
284 $scope.cldsConfirmPerformAction("UPDATE");
285 } else if (name == "Delete") {
286 $scope.cldsConfirmPerformAction("DELETE");
287 } else if (name == "Stop") {
288 $scope.cldsConfirmPerformAction("STOP");
289 } else if (name == "Restart") {
290 $scope.cldsConfirmPerformAction("RESTART");
291 } else if (name == "Refresh Status") {
292 $scope.refreshStatus();
293 } else if (name == "Properties CL") {
294 $scope.cldsOpenModelProperties();
295 } else if (name == "Deploy") {
296 $scope.cldsAskDeployParametersPerformAction();
297 } else if (name == "UnDeploy") {
298 $scope.cldsConfirmToggleDeployPerformAction("UnDeploy");
300 $rootScope.screenName = name;
301 $scope.updatebreadcrumb(value);
302 $location.path(value);
306 $rootScope.impAlerts = function() {
311 link : "/cldsCreateModel",
314 link : "/cldsOpenModel",
317 link : "/cldsSaveModel",
320 link : "/cldsOpenModelProperties",
321 name : "Properties CL"
323 link : "/RevertChanges",
324 name : "Revert Model Changes"
330 link : "/cldsTestActivate",
331 name : "Validation Test"
333 link : "/cldsSubmit",
336 link : "/cldsResubmit",
339 link : "/cldsUpdate",
345 link : "/cldsRestart",
348 link : "/cldsDelete",
351 link : "/cldsDeploy",
354 link : "/cldsUnDeploy",
358 link : "/refreshStatus",
359 name : "Refresh Status"
361 link : "/cldsRefreshASDC",
362 name : "Refresh ASDC"
365 link : "http://wiki.onap.org",
368 link : "/contact_us",
371 link : "/extraUserInfo",
376 Object.keys = function(obj) {
379 for ( var i in obj) {
380 if (obj.hasOwnProperty(i)) {
386 $scope.keyList = Object.keys($scope.tabs);
388 $scope.keyList = Object.keys($scope.tabs);
390 $scope.updatebreadcrumb = function(path) {
392 var currentURL = $location.path();
393 if (path != undefined) {
396 if (currentURL == "/dashboard") {
397 $rootScope.screenName = "Universal Test Modeler";
398 $rootScope.parentMenu = "Home";
399 $rootScope.rightTabName = "UTM Build Configuration";
402 angular.forEach($scope.keyList, function(value, key) {
405 $rootScope.parentMenu = value;
406 angular.forEach($scope.tabs[value],
407 function(value, key) {
409 if (currentURL == value.link) {
410 $rootScope.screenName = value.name;
418 $scope.updatebreadcrumb();
419 $scope.homePage = function() {
421 $location.path('/dashboard');
423 $scope.propertyExplorerErrorMessage = function(msg) {
425 var dlg = dialogs.notify('Error', msg);
427 $scope.reviewTestSet = function() {
429 $rootScope.modeltestset = list_model_test_sets[selected_model];
430 $rootScope.isPalette = false;
431 $rootScope.isTestset = true;
432 $rootScope.isRequirementCoverage = false;
433 document.getElementById("modeler_name").textContent = "UTM Test Set";
434 $('div').find('.k-collapse-next').click();
436 $scope.requirementCoverage = function() {
438 $rootScope.testCaseRequirements = [];
439 $rootScope.validTestRequirementArray = [];
440 $rootScope.validTestRequirements = {};
441 $rootScope.modeltestset = list_model_test_sets[selected_model];
442 var allPathDetails = [];
443 $scope.currentSelectedModel = {};
444 $rootScope.pathDetailsList = list_model_path_details[selected_model];
445 for (var x = 0; x < allPathDetails.length; x++) {
446 var tempPathDetails = allPathDetails[x];
447 if (tempPathDetails != null) {
448 for (var i = 0; i < tempPathDetails.length; i++) {
449 var pathDetails = tempPathDetails[i];
450 if (pathDetails.requirement !== ''
451 && pathDetails.requirement !== null) {
452 $rootScope.testCaseRequirements
453 .push(pathDetails.requirement);
458 for (var p = 0; p < $rootScope.modeltestset.activityTestCases.length; p++) {
459 var activityTestCases = $rootScope.modeltestset.activityTestCases[p];
460 if (activityTestCases.mappedRequirements != null) {
461 for (var i = 0; i < activityTestCases.mappedRequirements.length; i++) {
462 var testCaseNames = $rootScope.validTestRequirements[activityTestCases.mappedRequirements[i]];
463 if (testCaseNames == null) {
466 if (activityTestCases.version != null)
467 var testCase = activityTestCases.testCaseName + "_"
468 + activityTestCases.version;
470 var testCase = activityTestCases.testCaseName;
471 testCaseNames.push(testCase);
472 $rootScope.validTestRequirements[activityTestCases.mappedRequirements[i]] = testCaseNames;
476 $rootScope.isPalette = false;
477 $rootScope.isTestset = false;
478 $rootScope.isRequirementCoverage = true;
479 document.getElementById("modeler_name").textContent = "Test Case / Requirement Coverage";
480 $('div').find('.k-collapse-next').click();
482 $scope.activityModelling = function() {
485 $scope.cldsClose = function() {
487 var dlg = dialogs.create(
488 'partials/portfolios/confirmation_window.html',
489 'CldsOpenModelCtrl', {
496 windowClass : 'my-class'
498 dlg.result.then(function(name) {
500 // $scope.name = name;
503 // if(angular.equals($scope.name,''))
504 // $scope.name = 'You did not enter in your
508 $scope.saveConfirmationNotificationPopUp = function(callBack) {
510 var dlg = dialogs.create(
511 'partials/portfolios/save_confirmation.html',
512 'saveConfirmationModalPopUpCtrl', {
519 windowClass : 'my-class'
521 dlg.result.then(function(name) {
529 $scope.cldsRefreshASDC = function() {
531 var dlg = dialogs.create('partials/portfolios/refresh_asdc.html',
532 'CldsOpenModelCtrl', {
539 windowClass : 'my-class'
541 dlg.result.then(function(name) {
547 $scope.cldsRevertModel = function() {
549 var dlg = dialogs.create(
550 'partials/portfolios/ConfirmRevertChanges.html',
551 'CldsOpenModelCtrl', {
558 windowClass : 'my-class'
560 dlg.result.then(function(name) {
566 $rootScope.cldsOpenModelProperties = function() {
568 var dlg = dialogs.create(
569 'partials/portfolios/global_properties.html',
570 'GlobalPropertiesCtrl', {}, {
574 windowClass : 'my-class'
576 dlg.result.then(function(name) {
582 $scope.cldsOpenModel = function() {
584 var dlg = dialogs.create(
585 'partials/portfolios/clds_open_model.html', 'CldsOpenModelCtrl', {
592 windowClass : 'my-class'
594 dlg.result.then(function(name) {
600 $scope.cldsCreateModel = function() {
602 var dlg = dialogs.create(
603 'partials/portfolios/clds_create_model_off_Template.html',
604 'CldsOpenModelCtrl', {
611 windowClass : 'my-class'
613 dlg.result.then(function(name) {
619 $scope.extraUserInfo = function() {
621 var dlg = dialogs.create(
622 'partials/portfolios/extra_user_info.html', 'ExtraUserInfoCtrl', {
629 windowClass : 'my-class'
631 dlg.result.then(function(name) {
637 $scope.cldsPerformAction = function(uiAction) {
639 var modelName = selected_model;
640 var controlNamePrefix = "ClosedLoop-";
641 var bpmnText = modelXML;
642 // serialize model properties
643 var propText = JSON.stringify(elementMap);
644 var templateName = selected_template
645 var svgXml = $("#svgContainer").html();
646 console.log("cldsPerformAction: " + uiAction + " modelName="
648 console.log("cldsPerformAction: " + uiAction
649 + " controlNamePrefix=" + controlNamePrefix);
650 console.log("cldsPerformAction: " + uiAction + " bpmnText="
652 console.log("cldsPerformAction: " + uiAction + " propText="
654 console.log("cldsPerformAction: " + uiAction + " typeID=" + typeID);
655 console.log("cldsPerformAction: " + uiAction + " deploymentId="
657 cldsModelService.processAction(uiAction, modelName,
658 controlNamePrefix, bpmnText, propText, svgXml, templateName,
659 typeID, deploymentId).then(function(pars) {
661 console.log("cldsPerformAction: pars=" + pars);
662 cldsModelService.processRefresh(pars);
667 $scope.refreshStatus = function() {
669 var modelName = selected_model;
670 var svgXml = $("#svgContainer").html();
671 console.log("refreStatus modelName=" + modelName);
672 cldsModelService.getModel(modelName).then(function(pars) {
674 console.log("refreStatus: pars=" + pars);
675 cldsModelService.processRefresh(pars);
680 $scope.cldsConfirmPerformAction = function(uiAction) {
682 var dlg = dialogs.confirm('Message', 'Do you want to '
683 + uiAction.toLowerCase() + ' the closed loop?');
684 dlg.result.then(function(btn) {
686 $scope.cldsPerformAction(uiAction);
691 $scope.cldsAskDeployParametersPerformAction = function() {
693 var dlg = dialogs.create(
694 'partials/portfolios/deploy_parameters.html', 'DeploymentCtrl', {},
698 windowClass : 'deploy-parameters'
700 dlg.result.then(function() {
702 var confirm = dialogs.confirm('Deploy',
703 'Are you sure you want to deploy the closed loop?');
704 confirm.result.then(function() {
706 cldsToggleDeploy("deploy");
710 $scope.cldsConfirmToggleDeployPerformAction = function(uiAction) {
712 var dlg = dialogs.confirm('Message', 'Do you want to '
713 + uiAction.toLowerCase() + ' the closed loop?');
714 dlg.result.then(function(btn) {
716 cldsToggleDeploy(uiAction.toLowerCase());
721 function cldsToggleDeploy(uiAction) {
723 var modelName = selected_model;
724 var controlNamePrefix = "ClosedLoop-";
725 var bpmnText = modelXML;
726 // serialize model properties
727 var propText = JSON.stringify(elementMap);
728 var templateName = selected_template;
729 var svgXml = $("#svgContainer").html();
730 console.log("cldsPerformAction: " + uiAction + " modelName="
732 console.log("cldsPerformAction: " + uiAction
733 + " controlNamePrefix=" + controlNamePrefix);
734 console.log("cldsPerformAction: " + uiAction + " bpmnText="
736 console.log("cldsPerformAction: " + uiAction + " propText="
738 console.log("cldsPerformAction: " + uiAction
739 + " modelEventService=" + modelEventService);
740 console.log("cldsPerformAction: " + uiAction + " typeID=" + typeID);
741 console.log("cldsPerformAction: " + uiAction + " deploymentId="
743 cldsModelService.toggleDeploy(uiAction, modelName,
744 controlNamePrefix, bpmnText, propText, svgXml, templateName,
745 typeID, controlNameUuid, modelEventService, deploymentId).then(
748 var cldsObject = pars.body;
749 typeID = cldsObject.typeId;
750 controlNameUuid = cldsObject.controlNameUuid;
751 selected_template = cldsObject.templateName;
752 modelEventService = cldsObject.event;
753 actionStateCd = cldsObject.event.actionStateCd;
754 deploymentId = cldsObject.deploymentId;
755 cldsModelService.processActionResponse(modelName, cldsObject);
760 $scope.VesCollectorWindow = function(vesCollector) {
762 var dlg = dialogs.create(
763 'partials/portfolios/vesCollector_properties.html',
764 'ImportSchemaCtrl', {
771 windowClass : 'my-class'
773 dlg.result.then(function(name) {
779 $scope.HolmesWindow = function(holmes) {
781 var partial = 'partials/portfolios/holmes_properties.html'
782 var dlg = dialogs.create(partial, 'ImportSchemaCtrl', holmes, {
789 windowClass : 'my-class'
792 $scope.TCAWindow = function(tca) {
794 var dlg = dialogs.create('partials/portfolios/tca_properties.html',
795 'ImportSchemaCtrl', {
802 windowClass : 'my-class'
804 dlg.result.then(function(name) {
810 $scope.PolicyWindow = function(policy) {
812 var dlg = dialogs.create(
813 'partials/portfolios/PolicyWindow_properties.html',
814 'ImportSchemaCtrl', {
821 windowClass : 'my-class'
823 dlg.result.then(function(name) {
830 app.service('MenuService', [ '$http', '$q', function($http, $q) {
833 app.directive('focus', function($timeout) {
839 link : function(scope, element) {
841 scope.$watch('trigger', function(value) {
843 if (value === "true") {
844 $timeout(function() {
853 app.directive('draggable', function($document) {
855 return function(scope, element, attr) {
857 var startX = 0, startY = 0, x = 0, y = 0;
859 position : 'relative',
860 backgroundColor : 'white',
864 element.on('mousedown', function(event) {
866 startX = event.screenX - x;
867 startY = event.screenY - y;
868 $document.on('mousemove', mousemove);
869 $document.on('mouseup', mouseup);
871 function mousemove(event) {
873 y = event.screenY - startY;
874 x = event.screenX - startX;
882 $document.off('mousemove', mousemove);
883 $document.off('mouseup', mouseup);
887 app.factory('myHttpInterceptor', function($q, $window) {
889 return function(promise) {
891 return promise.then(function(response) {
894 }, function(response) {
896 return $q.reject(response);
900 app.run([ '$route', function($route) {
904 function TestCtrl($scope) {
906 $scope.msg = "Hello from a controller method.";
907 $scope.returnHello = function() {
912 function importshema() {
914 angular.element(document.getElementById('navbar')).scope().importSchema();
916 function VesCollectorWindow(vesCollectorWin) {
918 angular.element(document.getElementById('navbar')).scope()
919 .VesCollectorWindow(vesCollectorWin);
921 function HolmesWindow(holmesWin) {
923 angular.element(document.getElementById('navbar')).scope().HolmesWindow(
926 function F5Window() {
928 angular.element(document.getElementById('navbar')).scope().F5Window();
930 function TCAWindow(tca) {
932 angular.element(document.getElementById('navbar')).scope().TCAWindow(tca);
934 function GOCWindow() {
936 angular.element(document.getElementById('navbar')).scope().GOCWindow();
938 function PolicyWindow(PolicyWin) {
940 angular.element(document.getElementById('navbar')).scope().PolicyWindow(
943 function pathDetails(bpmnElementID, bpmnElementName, pathIdentifiers) {
945 angular.element(document.getElementById('navbar')).scope().pathDetails(
946 bpmnElementID, bpmnElementName, pathIdentifiers);
948 function setdefaultvalue() {
950 angular.element(document.getElementById('navbar')).scope()
953 function upgradeSchemaVersion() {
955 angular.element(document.getElementById('navbar')).scope()
956 .upgradeSchemaVersion();
958 function saveProject() {
960 angular.element(document.getElementById('navbar')).scope().saveProject();
962 function modifySchema() {
964 angular.element(document.getElementById('navbar')).scope().modifySchema();
966 function definePID() {
968 angular.element(document.getElementById('navbar')).scope().definePID();
970 function defineServiceAcronym() {
972 angular.element(document.getElementById('navbar')).scope()
973 .defineServiceAcronym();
975 function errorProperty(msg) {
977 angular.element(document.getElementById('navbar')).scope()
978 .propertyExplorerErrorMessage(msg);
980 function invisiblepropertyExplorer() {
982 angular.element(document.getElementById('navbar')).scope()
983 .invisibleproperty();
985 function updateDecisionLabel(originalLabel, newLabel) {
987 angular.element(document.getElementById('navbar')).scope()
988 .updateDecisionLabels(originalLabel, newLabel);
990 // Used to logout the session , when browser window was closed
991 window.onunload = function() {
993 window.localStorage.removeItem("isAuth");
994 window.localStorage.removeItem("loginuser");
995 window.localStorage.removeItem("invalidUser");