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 == "Open CL") {
268 $scope.cldsOpenModel();
269 } else if (name == "Save CL") {
270 $rootScope.isNewClosed = false;
271 $scope.cldsPerformAction("SAVE");
272 } else if (name == "Validation Test") {
273 $scope.cldsPerformAction("TEST");
274 } else if (name == "Submit") {
275 $scope.cldsConfirmPerformAction("SUBMIT");
276 } else if (name == "Resubmit") {
277 $scope.cldsConfirmPerformAction("RESUBMIT");
278 } else if (name == "Update") {
279 $scope.cldsConfirmPerformAction("UPDATE");
280 } else if (name == "Delete") {
281 $scope.cldsConfirmPerformAction("DELETE");
282 } else if (name == "Stop") {
283 $scope.cldsConfirmPerformAction("STOP");
284 } else if (name == "Restart") {
285 $scope.cldsConfirmPerformAction("RESTART");
286 } else if (name == "Refresh Status") {
287 $scope.refreshStatus();
288 } else if (name == "Properties CL") {
289 $scope.cldsOpenModelProperties();
290 } else if (name == "Deploy") {
291 $scope.cldsAskDeployParametersPerformAction();
292 } else if (name == "UnDeploy") {
293 $scope.cldsConfirmToggleDeployPerformAction("UnDeploy");
295 $rootScope.screenName = name;
296 $scope.updatebreadcrumb(value);
297 $location.path(value);
301 $rootScope.impAlerts = function() {
306 link : "/cldsOpenModel",
309 link : "/cldsSaveModel",
312 link : "/cldsOpenModelProperties",
313 name : "Properties CL"
315 link : "/RevertChanges",
316 name : "Revert Model Changes"
322 link : "/cldsTestActivate",
323 name : "Validation Test"
325 link : "/cldsSubmit",
328 link : "/cldsResubmit",
331 link : "/cldsUpdate",
337 link : "/cldsRestart",
340 link : "/cldsDelete",
343 link : "/cldsDeploy",
346 link : "/cldsUnDeploy",
350 link : "/refreshStatus",
351 name : "Refresh Status"
354 link : "http://wiki.onap.org",
357 link : "/contact_us",
360 link : "/extraUserInfo",
365 Object.keys = function(obj) {
368 for ( var i in obj) {
369 if (obj.hasOwnProperty(i)) {
375 $scope.keyList = Object.keys($scope.tabs);
377 $scope.keyList = Object.keys($scope.tabs);
379 $scope.updatebreadcrumb = function(path) {
381 var currentURL = $location.path();
382 if (path != undefined) {
385 if (currentURL == "/dashboard") {
386 $rootScope.screenName = "Universal Test Modeler";
387 $rootScope.parentMenu = "Home";
388 $rootScope.rightTabName = "UTM Build Configuration";
391 angular.forEach($scope.keyList, function(value, key) {
394 $rootScope.parentMenu = value;
395 angular.forEach($scope.tabs[value],
396 function(value, key) {
398 if (currentURL == value.link) {
399 $rootScope.screenName = value.name;
407 $scope.updatebreadcrumb();
408 $scope.homePage = function() {
410 $location.path('/dashboard');
412 $scope.propertyExplorerErrorMessage = function(msg) {
414 var dlg = dialogs.notify('Error', msg);
416 $scope.reviewTestSet = function() {
418 $rootScope.modeltestset = list_model_test_sets[selected_model];
419 $rootScope.isPalette = false;
420 $rootScope.isTestset = true;
421 $rootScope.isRequirementCoverage = false;
422 document.getElementById("modeler_name").textContent = "UTM Test Set";
423 $('div').find('.k-collapse-next').click();
425 $scope.requirementCoverage = function() {
427 $rootScope.testCaseRequirements = [];
428 $rootScope.validTestRequirementArray = [];
429 $rootScope.validTestRequirements = {};
430 $rootScope.modeltestset = list_model_test_sets[selected_model];
431 var allPathDetails = [];
432 $scope.currentSelectedModel = {};
433 $rootScope.pathDetailsList = list_model_path_details[selected_model];
434 for (var x = 0; x < allPathDetails.length; x++) {
435 var tempPathDetails = allPathDetails[x];
436 if (tempPathDetails != null) {
437 for (var i = 0; i < tempPathDetails.length; i++) {
438 var pathDetails = tempPathDetails[i];
439 if (pathDetails.requirement !== ''
440 && pathDetails.requirement !== null) {
441 $rootScope.testCaseRequirements
442 .push(pathDetails.requirement);
447 for (var p = 0; p < $rootScope.modeltestset.activityTestCases.length; p++) {
448 var activityTestCases = $rootScope.modeltestset.activityTestCases[p];
449 if (activityTestCases.mappedRequirements != null) {
450 for (var i = 0; i < activityTestCases.mappedRequirements.length; i++) {
451 var testCaseNames = $rootScope.validTestRequirements[activityTestCases.mappedRequirements[i]];
452 if (testCaseNames == null) {
455 if (activityTestCases.version != null)
456 var testCase = activityTestCases.testCaseName + "_"
457 + activityTestCases.version;
459 var testCase = activityTestCases.testCaseName;
460 testCaseNames.push(testCase);
461 $rootScope.validTestRequirements[activityTestCases.mappedRequirements[i]] = testCaseNames;
465 $rootScope.isPalette = false;
466 $rootScope.isTestset = false;
467 $rootScope.isRequirementCoverage = true;
468 document.getElementById("modeler_name").textContent = "Test Case / Requirement Coverage";
469 $('div').find('.k-collapse-next').click();
471 $scope.activityModelling = function() {
474 $scope.cldsClose = function() {
476 var dlg = dialogs.create(
477 'partials/portfolios/confirmation_window.html',
478 'CldsOpenModelCtrl', {
485 windowClass : 'my-class'
487 dlg.result.then(function(name) {
489 // $scope.name = name;
492 // if(angular.equals($scope.name,''))
493 // $scope.name = 'You did not enter in your
497 $scope.saveConfirmationNotificationPopUp = function(callBack) {
499 var dlg = dialogs.create(
500 'partials/portfolios/save_confirmation.html',
501 'saveConfirmationModalPopUpCtrl', {
508 windowClass : 'my-class'
510 dlg.result.then(function(name) {
518 $scope.cldsRevertModel = function() {
520 var dlg = dialogs.create(
521 'partials/portfolios/ConfirmRevertChanges.html',
522 'CldsOpenModelCtrl', {
529 windowClass : 'my-class'
531 dlg.result.then(function(name) {
537 $rootScope.cldsOpenModelProperties = function() {
539 var dlg = dialogs.create(
540 'partials/portfolios/global_properties.html',
541 'GlobalPropertiesCtrl', {}, {
545 windowClass : 'my-class'
547 dlg.result.then(function(name) {
553 $scope.cldsOpenModel = function() {
555 var dlg = dialogs.create(
556 'partials/portfolios/clds_open_model.html', 'CldsOpenModelCtrl', {
563 windowClass : 'my-class'
565 dlg.result.then(function(name) {
571 $scope.extraUserInfo = function() {
573 var dlg = dialogs.create(
574 'partials/portfolios/extra_user_info.html', 'ExtraUserInfoCtrl', {
581 windowClass : 'my-class'
583 dlg.result.then(function(name) {
589 $scope.cldsPerformAction = function(uiAction) {
591 var modelName = selected_model;
592 var controlNamePrefix = "ClosedLoop-";
593 var bpmnText = modelXML;
594 // serialize model properties
595 var propText = JSON.stringify(elementMap);
596 var templateName = selected_template
597 var svgXml = $("#svgContainer").html();
598 console.log("cldsPerformAction: " + uiAction + " modelName="
600 console.log("cldsPerformAction: " + uiAction
601 + " controlNamePrefix=" + controlNamePrefix);
602 console.log("cldsPerformAction: " + uiAction + " bpmnText="
604 console.log("cldsPerformAction: " + uiAction + " propText="
606 console.log("cldsPerformAction: " + uiAction + " typeID=" + typeID);
607 console.log("cldsPerformAction: " + uiAction + " deploymentId="
609 cldsModelService.processAction(uiAction, modelName,
610 controlNamePrefix, bpmnText, propText, svgXml, templateName,
611 typeID, deploymentId).then(function(pars) {
613 console.log("cldsPerformAction: pars=" + pars);
614 cldsModelService.processRefresh(pars);
619 $scope.refreshStatus = function() {
621 var modelName = selected_model;
622 var svgXml = $("#svgContainer").html();
623 console.log("refreStatus modelName=" + modelName);
624 cldsModelService.getModel(modelName).then(function(pars) {
626 console.log("refreStatus: pars=" + pars);
627 cldsModelService.processRefresh(pars);
632 $scope.cldsConfirmPerformAction = function(uiAction) {
634 var dlg = dialogs.confirm('Message', 'Do you want to '
635 + uiAction.toLowerCase() + ' the closed loop?');
636 dlg.result.then(function(btn) {
638 $scope.cldsPerformAction(uiAction);
643 $scope.cldsAskDeployParametersPerformAction = function() {
645 var dlg = dialogs.create(
646 'partials/portfolios/deploy_parameters.html', 'DeploymentCtrl', {},
650 windowClass : 'deploy-parameters'
652 dlg.result.then(function() {
654 var confirm = dialogs.confirm('Deploy',
655 'Are you sure you want to deploy the closed loop?');
656 confirm.result.then(function() {
658 cldsToggleDeploy("deploy");
662 $scope.cldsConfirmToggleDeployPerformAction = function(uiAction) {
664 var dlg = dialogs.confirm('Message', 'Do you want to '
665 + uiAction.toLowerCase() + ' the closed loop?');
666 dlg.result.then(function(btn) {
668 cldsToggleDeploy(uiAction.toLowerCase());
673 function cldsToggleDeploy(uiAction) {
675 var modelName = selected_model;
676 var controlNamePrefix = "ClosedLoop-";
677 var bpmnText = modelXML;
678 // serialize model properties
679 var propText = JSON.stringify(elementMap);
680 var templateName = selected_template;
681 var svgXml = $("#svgContainer").html();
682 console.log("cldsPerformAction: " + uiAction + " modelName="
684 console.log("cldsPerformAction: " + uiAction
685 + " controlNamePrefix=" + controlNamePrefix);
686 console.log("cldsPerformAction: " + uiAction + " bpmnText="
688 console.log("cldsPerformAction: " + uiAction + " propText="
690 console.log("cldsPerformAction: " + uiAction
691 + " modelEventService=" + modelEventService);
692 console.log("cldsPerformAction: " + uiAction + " typeID=" + typeID);
693 console.log("cldsPerformAction: " + uiAction + " deploymentId="
695 cldsModelService.toggleDeploy(uiAction, modelName,
696 controlNamePrefix, bpmnText, propText, svgXml, templateName,
697 typeID, controlNameUuid, modelEventService, deploymentId).then(
700 var cldsObject = pars.body;
701 typeID = cldsObject.typeId;
702 controlNameUuid = cldsObject.controlNameUuid;
703 selected_template = cldsObject.templateName;
704 modelEventService = cldsObject.event;
705 actionStateCd = cldsObject.event.actionStateCd;
706 deploymentId = cldsObject.deploymentId;
707 cldsModelService.processActionResponse(modelName, cldsObject);
712 $scope.VesCollectorWindow = function(vesCollector) {
714 var dlg = dialogs.create(
715 'partials/portfolios/vesCollector_properties.html',
716 'ImportSchemaCtrl', {
723 windowClass : 'my-class'
725 dlg.result.then(function(name) {
731 $scope.HolmesWindow = function(holmes) {
733 var partial = 'partials/portfolios/holmes_properties.html'
734 var dlg = dialogs.create(partial, 'ImportSchemaCtrl', holmes, {
741 windowClass : 'my-class'
744 $scope.TCAWindow = function(tca) {
746 var dlg = dialogs.create('partials/portfolios/tca_properties.html',
747 'ImportSchemaCtrl', {
754 windowClass : 'my-class'
756 dlg.result.then(function(name) {
762 $scope.ToscaModelWindow = function (tosca_model) {
764 var dlg = dialogs.create('partials/portfolios/tosca_model_properties.html','ToscaModelCtrl',{closable:true,draggable:true},{size:'lg',keyboard: true,backdrop: 'static',windowClass: 'my-class'});
765 dlg.result.then(function(name){
769 $scope.PolicyWindow = function(policy) {
771 var dlg = dialogs.create(
772 'partials/portfolios/PolicyWindow_properties.html',
773 'ImportSchemaCtrl', {
780 windowClass : 'my-class'
782 dlg.result.then(function(name) {
789 app.service('MenuService', [ '$http', '$q', function($http, $q) {
792 app.directive('focus', function($timeout) {
798 link : function(scope, element) {
800 scope.$watch('trigger', function(value) {
802 if (value === "true") {
803 $timeout(function() {
812 app.directive('draggable', function($document) {
814 return function(scope, element, attr) {
816 var startX = 0, startY = 0, x = 0, y = 0;
818 position : 'relative',
819 backgroundColor : 'white',
823 element.on('mousedown', function(event) {
825 startX = event.screenX - x;
826 startY = event.screenY - y;
827 $document.on('mousemove', mousemove);
828 $document.on('mouseup', mouseup);
830 function mousemove(event) {
832 y = event.screenY - startY;
833 x = event.screenX - startX;
841 $document.off('mousemove', mousemove);
842 $document.off('mouseup', mouseup);
846 app.factory('myHttpInterceptor', function($q, $window) {
848 return function(promise) {
850 return promise.then(function(response) {
853 }, function(response) {
855 return $q.reject(response);
859 app.run([ '$route', function($route) {
863 function TestCtrl($scope) {
865 $scope.msg = "Hello from a controller method.";
866 $scope.returnHello = function() {
871 function importshema() {
873 angular.element(document.getElementById('navbar')).scope().importSchema();
875 function VesCollectorWindow(vesCollectorWin) {
877 angular.element(document.getElementById('navbar')).scope()
878 .VesCollectorWindow(vesCollectorWin);
880 function HolmesWindow(holmesWin) {
882 angular.element(document.getElementById('navbar')).scope().HolmesWindow(
885 function F5Window() {
887 angular.element(document.getElementById('navbar')).scope().F5Window();
889 function TCAWindow(tca) {
891 angular.element(document.getElementById('navbar')).scope().TCAWindow(tca);
893 function GOCWindow() {
895 angular.element(document.getElementById('navbar')).scope().GOCWindow();
897 function ToscaModelWindow() {
898 angular.element(document.getElementById('navbar')).scope().ToscaModelWindow();
900 function PolicyWindow(PolicyWin) {
902 angular.element(document.getElementById('navbar')).scope().PolicyWindow(
905 function pathDetails(bpmnElementID, bpmnElementName, pathIdentifiers) {
907 angular.element(document.getElementById('navbar')).scope().pathDetails(
908 bpmnElementID, bpmnElementName, pathIdentifiers);
910 function setdefaultvalue() {
912 angular.element(document.getElementById('navbar')).scope()
915 function upgradeSchemaVersion() {
917 angular.element(document.getElementById('navbar')).scope()
918 .upgradeSchemaVersion();
920 function saveProject() {
922 angular.element(document.getElementById('navbar')).scope().saveProject();
924 function modifySchema() {
926 angular.element(document.getElementById('navbar')).scope().modifySchema();
928 function definePID() {
930 angular.element(document.getElementById('navbar')).scope().definePID();
932 function defineServiceAcronym() {
934 angular.element(document.getElementById('navbar')).scope()
935 .defineServiceAcronym();
937 function errorProperty(msg) {
939 angular.element(document.getElementById('navbar')).scope()
940 .propertyExplorerErrorMessage(msg);
942 function invisiblepropertyExplorer() {
944 angular.element(document.getElementById('navbar')).scope()
945 .invisibleproperty();
947 function updateDecisionLabel(originalLabel, newLabel) {
949 angular.element(document.getElementById('navbar')).scope()
950 .updateDecisionLabels(originalLabel, newLabel);
952 // Used to logout the session , when browser window was closed
953 window.onunload = function() {
955 window.localStorage.removeItem("isAuth");
956 window.localStorage.removeItem("loginuser");
957 window.localStorage.removeItem("invalidUser");