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) {
31 cfpLoadingBarProvider.includeBar = true;
32 cfpLoadingBarProvider.includeSpinner = true;
34 .config(function($httpProvider) {
35 $httpProvider.interceptors.push('myHttpInterceptor');
36 var spinnerFunction = function spinnerFunction(data, headersGetter) {
39 $httpProvider.defaults.transformRequest.push(spinnerFunction);
46 'cfpLoadingBarProvider',
47 function($routeProvider, $locationProvider, cfpLoadingBarProvider, $timeout,
49 $locationProvider.html5Mode(false);
50 $routeProvider.when('/otherwise', {
51 templateUrl : 'please_wait.html',
52 controller : 'QueryParamsHandlerCtrl'
53 }).when('/dashboard', {
54 templateUrl : 'partials/portfolios/clds_modelling.html',
55 controller : 'DashboardCtrl'
56 }).when('/activity_modelling', {
57 templateUrl : 'partials/portfolios/clds_modelling.html',
58 controller : 'DashboardCtrl'
59 }).when('/authenticate', {
60 templateUrl : 'authenticate.html',
61 controller : 'AuthenticateCtrl'
62 }).when('/invalidlogin', {
63 templateUrl : 'invalid_login.html',
64 controller : 'PageUnderConstructionCtrl'
66 redirectTo : '/otherwise'
71 function($scope, $rootScope, $timeout, dialogs) {
73 $scope.lang = 'en-US';
74 $scope.language = 'English';
77 $scope.confirmed = 'No confirmation yet!';
81 // -- Listeners & Watchers --//
82 $scope.$watch('lang', function(val, old) {
85 $scope.language = 'English';
88 $scope.language = 'Spanish';
93 $rootScope.testCaseRequirements = [];
94 $rootScope.validTestRequirements = [];
95 $scope.setLanguage = function(lang) {
99 $rootScope.launch = function(which) {
112 var dlg = dialogs.confirm();
113 dlg.result.then(function(btn) {
114 $scope.confirmed = 'You confirmed "Yes."';
116 $scope.confirmed = 'You confirmed "No."';
120 var dlg = dialogs.create('/dialogs/custom.html',
121 'customDialogCtrl', {}, {
125 windowClass : 'my-class'
127 dlg.result.then(function(name) {
130 if (angular.equals($scope.name, ''))
131 $scope.name = 'You did not enter in your name!';
135 var dlg = dialogs.create('/dialogs/custom2.html',
136 'customDialogCtrl2', $scope.custom, {
144 'All is not supported, Please select interface(s)/version(s) to fetch real time federated coverage report.');
150 'You are about to fetch real time federated coverage report.This may take sometime!!!.');
151 dlg.result.then(function(btn) {
152 $scope.confirmed = 'You confirmed "Yes."';
154 $scope.confirmed = 'You confirmed "No."';
158 var dlg = dialogs.notify('Success',
159 'Request has been successfully processed.');
162 var dlg = dialogs.notify('Message',
163 'Please type Testscenario Name');
167 var _fakeWaitProgress = function() {
168 $timeout(function() {
169 if (_progress < 100) {
171 $rootScope.$broadcast('dialogs.wait.progress', {
172 'progress' : _progress
176 $rootScope.$broadcast('dialogs.wait.complete');
192 'userPreferencesService',
194 'extraUserInfoService',
195 function($scope, $rootScope, $timeout, dialogs, $location, MenuService,
196 Datafactory, userPreferencesService, cldsModelService,
197 extraUserInfoService) {
198 console.log("MenuCtrl");
199 $rootScope.screenName = "Universal Test Modeler";
200 $rootScope.testSet = null;
201 var testingType = "";
202 $rootScope.contactUs = function() {
203 console.log("contactUs");
204 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.";
205 window.location.href = link;
207 extraUserInfoService.getUserInfo().then(function(pars) {
208 $scope.userInfo = pars;
209 if (!($scope.userInfo["permissionUpdateCl"])) {
214 $scope.emptyMenuClick = function(value, name) {
215 if ($rootScope.isNewClosed && name != "Save CL"
216 && name != "Close Model" && name != "Properties CL") {
217 saveConfirmationNotificationPopUp();
221 function saveConfirmationNotificationPopUp() {
222 $scope.saveConfirmationNotificationPopUp(function(data) {
224 if ($rootScope.isNewClosed) {
225 isSaveCheck("Save CL");
227 $rootScope.isNewClosed = false;
233 function isSaveCheck(name) {
234 if (name == "User Info") {
235 $scope.extraUserInfo();
236 } else if (name == "Wiki") {
238 } else if (name == "Contact Us") {
239 $rootScope.contactUs();
240 } else if (name == "Revert Model Changes") {
241 $scope.cldsRevertModel();
242 } else if (name == "Close Model") {
244 } else if (name == "Refresh ASDC") {
245 $scope.cldsRefreshASDC();
246 } else if (name == "Create CL") {
247 $rootScope.isNewClosed = true;
248 $scope.cldsCreateModel();
249 } else if (name == "Open CL") {
250 $scope.cldsOpenModel();
251 } else if (name == "Save CL") {
252 $rootScope.isNewClosed = false;
253 $scope.cldsPerformAction("SAVE");
254 } else if (name == "Validation Test") {
255 $scope.cldsPerformAction("TEST");
256 } else if (name == "Submit") {
257 $scope.cldsConfirmPerformAction("SUBMIT");
258 } else if (name == "Resubmit") {
259 $scope.cldsConfirmPerformAction("RESUBMIT");
260 } else if (name == "Update") {
261 $scope.cldsConfirmPerformAction("UPDATE");
262 } else if (name.toLowerCase() == "delete") {
263 $scope.manageConfirmPerformAction("DELETE");
264 } else if (name == "Stop") {
265 $scope.cldsConfirmPerformAction("STOP");
266 } else if (name == "Restart") {
267 $scope.cldsConfirmPerformAction("RESTART");
268 } else if (name == "Refresh Status") {
269 $scope.refreshStatus();
270 } else if (name == "Properties CL") {
271 $scope.cldsOpenModelProperties();
272 } else if (name == "Deploy") {
273 $scope.cldsAskDeployParametersPerformAction();
274 } else if (name == "UnDeploy") {
275 $scope.cldsConfirmToggleDeployPerformAction("UnDeploy");
277 $rootScope.screenName = name;
278 $scope.updatebreadcrumb(value);
279 $location.path(value);
283 $rootScope.impAlerts = function() {
287 link : "/cldsCreateModel",
290 link : "/cldsOpenModel",
293 link : "/cldsSaveModel",
296 link : "/cldsOpenModelProperties",
297 name : "Properties CL"
299 link : "/RevertChanges",
300 name : "Revert Model Changes"
306 link : "/cldsTestActivate",
307 name : "Validation Test"
309 link : "/cldsSubmit",
312 link : "/cldsResubmit",
315 link : "/cldsUpdate",
321 link : "/cldsRestart",
324 link : "/cldsDelete",
327 link : "/cldsDeploy",
330 link : "/cldsUnDeploy",
334 link : "/refreshStatus",
335 name : "Refresh Status"
337 link : "/cldsRefreshASDC",
338 name : "Refresh ASDC"
341 link : "http://wiki.onap.org",
344 link : "/contact_us",
347 link : "/extraUserInfo",
352 Object.keys = function(obj) {
354 for ( var i in obj) {
355 if (obj.hasOwnProperty(i)) {
361 $scope.keyList = Object.keys($scope.tabs);
363 $scope.keyList = Object.keys($scope.tabs);
365 $scope.updatebreadcrumb = function(path) {
366 var currentURL = $location.path();
367 if (path != undefined) {
370 if (currentURL == "/dashboard") {
371 $rootScope.screenName = "Universal Test Modeler";
372 $rootScope.parentMenu = "Home";
373 $rootScope.rightTabName = "UTM Build Configuration";
376 angular.forEach($scope.keyList, function(value, key) {
378 $rootScope.parentMenu = value;
379 angular.forEach($scope.tabs[value], function(value, key) {
380 if (currentURL == value.link) {
381 $rootScope.screenName = value.name;
389 $scope.updatebreadcrumb();
390 $scope.homePage = function() {
391 $location.path('/dashboard');
393 $scope.propertyExplorerErrorMessage = function(msg) {
394 var dlg = dialogs.notify('Error', msg);
396 $scope.reviewTestSet = function() {
397 $rootScope.modeltestset = list_model_test_sets[selected_model];
398 $rootScope.isPalette = false;
399 $rootScope.isTestset = true;
400 $rootScope.isRequirementCoverage = false;
401 document.getElementById("modeler_name").textContent = "UTM Test Set";
402 $('div').find('.k-collapse-next').click();
404 $scope.requirementCoverage = function() {
405 $rootScope.testCaseRequirements = [];
406 $rootScope.validTestRequirementArray = [];
407 $rootScope.validTestRequirements = {};
408 $rootScope.modeltestset = list_model_test_sets[selected_model];
409 var allPathDetails = [];
410 $scope.currentSelectedModel = {};
411 $rootScope.pathDetailsList = list_model_path_details[selected_model];
412 for (var x = 0; x < allPathDetails.length; x++) {
413 var tempPathDetails = allPathDetails[x];
414 if (tempPathDetails != null) {
415 for (var i = 0; i < tempPathDetails.length; i++) {
416 var pathDetails = tempPathDetails[i];
417 if (pathDetails.requirement !== ''
418 && pathDetails.requirement !== null) {
419 $rootScope.testCaseRequirements
420 .push(pathDetails.requirement);
425 for (var p = 0; p < $rootScope.modeltestset.activityTestCases.length; p++) {
426 var activityTestCases = $rootScope.modeltestset.activityTestCases[p];
427 if (activityTestCases.mappedRequirements != null) {
428 for (var i = 0; i < activityTestCases.mappedRequirements.length; i++) {
429 var testCaseNames = $rootScope.validTestRequirements[activityTestCases.mappedRequirements[i]];
430 if (testCaseNames == null) {
433 if (activityTestCases.version != null)
434 var testCase = activityTestCases.testCaseName + "_"
435 + activityTestCases.version;
437 var testCase = activityTestCases.testCaseName;
438 testCaseNames.push(testCase);
439 $rootScope.validTestRequirements[activityTestCases.mappedRequirements[i]] = testCaseNames;
443 $rootScope.isPalette = false;
444 $rootScope.isTestset = false;
445 $rootScope.isRequirementCoverage = true;
446 document.getElementById("modeler_name").textContent = "Test Case / Requirement Coverage";
447 $('div').find('.k-collapse-next').click();
449 $scope.activityModelling = function() {
451 $scope.cldsClose = function() {
452 var dlg = dialogs.create(
453 'partials/portfolios/confirmation_window.html', 'CldsOpenModelCtrl', {
460 windowClass : 'my-class'
462 dlg.result.then(function(name) {
463 // $scope.name = name;
465 // if(angular.equals($scope.name,''))
466 // $scope.name = 'You did not enter in your
470 $scope.saveConfirmationNotificationPopUp = function(callBack) {
471 var dlg = dialogs.create('partials/portfolios/save_confirmation.html',
472 'saveConfirmationModalPopUpCtrl', {
479 windowClass : 'my-class'
481 dlg.result.then(function(name) {
487 $scope.cldsRefreshASDC = function() {
488 var dlg = dialogs.create('partials/portfolios/refresh_asdc.html',
489 'CldsOpenModelCtrl', {
496 windowClass : 'my-class'
498 dlg.result.then(function(name) {
502 $scope.cldsRevertModel = function() {
503 var dlg = dialogs.create(
504 'partials/portfolios/ConfirmRevertChanges.html', 'CldsOpenModelCtrl', {
511 windowClass : 'my-class'
513 dlg.result.then(function(name) {
517 $rootScope.cldsOpenModelProperties = function() {
518 var dlg = dialogs.create('partials/portfolios/global_properties.html',
519 'GlobalPropertiesCtrl', {}, {
523 windowClass : 'my-class'
525 dlg.result.then(function(name) {
529 $scope.cldsOpenModel = function() {
530 var dlg = dialogs.create('partials/portfolios/clds_open_model.html',
531 'CldsOpenModelCtrl', {
538 windowClass : 'my-class'
540 dlg.result.then(function(name) {
544 $scope.cldsCreateModel = function() {
545 var dlg = dialogs.create(
546 'partials/portfolios/clds_create_model_off_Template.html',
547 'CldsOpenModelCtrl', {
554 windowClass : 'my-class'
556 dlg.result.then(function(name) {
560 $scope.extraUserInfo = function() {
561 var dlg = dialogs.create('partials/portfolios/extra_user_info.html',
562 'ExtraUserInfoCtrl', {
569 windowClass : 'my-class'
571 dlg.result.then(function(name) {
575 $scope.cldsPerformAction = function(uiAction) {
576 var modelName = selected_model;
577 var controlNamePrefix = "ClosedLoop-";
578 var bpmnText = modelXML;
579 // serialize model properties
580 var propText = JSON.stringify(elementMap);
581 var templateName = selected_template
582 var svgXml = $("#svgContainer").html();
583 console.log("cldsPerformAction: " + uiAction + " modelName="
585 console.log("cldsPerformAction: " + uiAction + " controlNamePrefix="
586 + controlNamePrefix);
587 console.log("cldsPerformAction: " + uiAction + " bpmnText=" + bpmnText);
588 console.log("cldsPerformAction: " + uiAction + " propText=" + propText);
589 console.log("cldsPerformAction: " + uiAction + " typeID=" + typeID);
590 console.log("cldsPerformAction: " + uiAction + " deploymentId="
592 cldsModelService.processAction(uiAction, modelName, controlNamePrefix,
593 bpmnText, propText, svgXml, templateName, typeID, deploymentId).then(
595 console.log("cldsPerformAction: pars=" + pars);
596 cldsModelService.processRefresh(pars);
600 $scope.refreshStatus = function() {
601 var modelName = selected_model;
602 var svgXml = $("#svgContainer").html();
603 console.log("refreStatus modelName=" + modelName);
604 cldsModelService.getModel(modelName).then(function(pars) {
605 console.log("refreStatus: pars=" + pars);
606 cldsModelService.processRefresh(pars);
610 $scope.cldsConfirmPerformAction = function(uiAction) {
611 var dlg = dialogs.confirm('Message', 'Do you want to '
612 + uiAction.toLowerCase() + ' the closed loop?');
613 dlg.result.then(function(btn) {
614 $scope.cldsPerformAction(uiAction);
618 $scope.cldsAskDeployParametersPerformAction = function() {
619 var dlg = dialogs.create('partials/portfolios/deploy_parameters.html',
620 'DeploymentCtrl', {}, {
623 windowClass : 'deploy-parameters'
625 dlg.result.then(function() {
626 var confirm = dialogs.confirm('Deploy',
627 'Are you sure you want to deploy the closed loop?');
628 confirm.result.then(function() {
629 cldsToggleDeploy("deploy");
633 $scope.cldsConfirmToggleDeployPerformAction = function(uiAction) {
634 var dlg = dialogs.confirm('Message', 'Do you want to '
635 + uiAction.toLowerCase() + ' the closed loop?');
636 dlg.result.then(function(btn) {
637 cldsToggleDeploy(uiAction.toLowerCase());
641 function cldsToggleDeploy(uiAction) {
642 var modelName = selected_model;
643 var controlNamePrefix = "ClosedLoop-";
644 var bpmnText = modelXML;
645 // serialize model properties
646 var propText = JSON.stringify(elementMap);
647 var templateName = selected_template;
648 var svgXml = $("#svgContainer").html();
649 console.log("cldsPerformAction: " + uiAction + " modelName="
651 console.log("cldsPerformAction: " + uiAction + " controlNamePrefix="
652 + controlNamePrefix);
653 console.log("cldsPerformAction: " + uiAction + " bpmnText=" + bpmnText);
654 console.log("cldsPerformAction: " + uiAction + " propText=" + propText);
655 console.log("cldsPerformAction: " + uiAction + " modelEventService="
656 + modelEventService);
657 console.log("cldsPerformAction: " + uiAction + " typeID=" + typeID);
658 console.log("cldsPerformAction: " + uiAction + " deploymentId="
660 cldsModelService.toggleDeploy(uiAction, modelName, controlNamePrefix,
661 bpmnText, propText, svgXml, templateName, typeID, controlNameUuid,
662 modelEventService, deploymentId).then(function(pars) {
663 typeID = pars.typeId;
664 controlNameUuid = pars.controlNameUuid;
665 selected_template = pars.templateName;
666 modelEventService = pars.event;
667 actionStateCd = pars.event.actionStateCd;
668 deploymentId = pars.deploymentId;
669 cldsModelService.processActionResponse(modelName, pars);
673 $scope.managePerformAction = function(action) {
674 if (action.toLowerCase() === "delete") {
675 cldsModelService.manageAction(selected_model,
676 "805b9f83-261f-48d9-98c7-8011fc2cc8e8", "ClosedLoop-ABCD-0000.yml")
677 .then(function(pars) {
682 $scope.manageConfirmPerformAction = function(uiAction) {
683 var dlg = dialogs.confirm('Message', 'Do you want to '
684 + uiAction.toLowerCase() + ' the closed loop?');
685 dlg.result.then(function(btn) {
686 $scope.managePerformAction(uiAction);
690 $scope.VesCollectorWindow = function(vesCollector) {
691 var dlg = dialogs.create(
692 'partials/portfolios/vesCollector_properties.html', 'ImportSchemaCtrl',
700 windowClass : 'my-class'
702 dlg.result.then(function(name) {
706 $scope.HolmesWindow = function(holmes) {
707 var partial = 'partials/portfolios/holmes_properties.html'
708 var dlg = dialogs.create(partial, 'ImportSchemaCtrl', holmes, {
715 windowClass : 'my-class'
718 $scope.TCAWindow = function(tca) {
719 var dlg = dialogs.create('partials/portfolios/tca_properties.html',
720 'ImportSchemaCtrl', {
727 windowClass : 'my-class'
729 dlg.result.then(function(name) {
733 $scope.PolicyWindow = function(policy) {
734 var dlg = dialogs.create(
735 'partials/portfolios/PolicyWindow_properties.html', 'ImportSchemaCtrl',
743 windowClass : 'my-class'
745 dlg.result.then(function(name) {
750 app.service('MenuService', [ '$http', '$q', function($http, $q) {
752 app.directive('focus', function($timeout) {
757 link : function(scope, element) {
758 scope.$watch('trigger', function(value) {
759 if (value === "true") {
760 $timeout(function() {
768 app.directive('draggable', function($document) {
769 return function(scope, element, attr) {
770 var startX = 0, startY = 0, x = 0, y = 0;
772 position : 'relative',
773 backgroundColor : 'white',
777 element.on('mousedown', function(event) {
778 startX = event.screenX - x;
779 startY = event.screenY - y;
780 $document.on('mousemove', mousemove);
781 $document.on('mouseup', mouseup);
783 function mousemove(event) {
784 y = event.screenY - startY;
785 x = event.screenX - startX;
792 $document.off('mousemove', mousemove);
793 $document.off('mouseup', mouseup);
797 app.factory('myHttpInterceptor', function($q, $window) {
798 return function(promise) {
799 return promise.then(function(response) {
801 }, function(response) {
802 return $q.reject(response);
806 app.run([ '$route', function($route) {
809 function TestCtrl($scope) {
810 $scope.msg = "Hello from a controller method.";
811 $scope.returnHello = function() {
815 function importshema() {
816 angular.element(document.getElementById('navbar')).scope().importSchema();
818 function VesCollectorWindow(vesCollectorWin) {
819 angular.element(document.getElementById('navbar')).scope()
820 .VesCollectorWindow(vesCollectorWin);
822 function HolmesWindow(holmesWin) {
823 angular.element(document.getElementById('navbar')).scope().HolmesWindow(
826 function F5Window() {
827 angular.element(document.getElementById('navbar')).scope().F5Window();
829 function TCAWindow(tca) {
830 angular.element(document.getElementById('navbar')).scope().TCAWindow(tca);
832 function GOCWindow() {
833 angular.element(document.getElementById('navbar')).scope().GOCWindow();
835 function PolicyWindow(PolicyWin) {
836 angular.element(document.getElementById('navbar')).scope().PolicyWindow(
839 function pathDetails(bpmnElementID, bpmnElementName, pathIdentifiers) {
840 angular.element(document.getElementById('navbar')).scope().pathDetails(
841 bpmnElementID, bpmnElementName, pathIdentifiers);
843 function setdefaultvalue() {
844 angular.element(document.getElementById('navbar')).scope()
847 function upgradeSchemaVersion() {
848 angular.element(document.getElementById('navbar')).scope()
849 .upgradeSchemaVersion();
851 function saveProject() {
852 angular.element(document.getElementById('navbar')).scope().saveProject();
854 function modifySchema() {
855 angular.element(document.getElementById('navbar')).scope().modifySchema();
857 function definePID() {
858 angular.element(document.getElementById('navbar')).scope().definePID();
860 function defineServiceAcronym() {
861 angular.element(document.getElementById('navbar')).scope()
862 .defineServiceAcronym();
864 function errorProperty(msg) {
865 angular.element(document.getElementById('navbar')).scope()
866 .propertyExplorerErrorMessage(msg);
868 function invisiblepropertyExplorer() {
869 angular.element(document.getElementById('navbar')).scope()
870 .invisibleproperty();
872 function updateDecisionLabel(originalLabel, newLabel) {
873 angular.element(document.getElementById('navbar')).scope()
874 .updateDecisionLabels(originalLabel, newLabel);
876 // Used to logout the session , when browser window was closed
877 window.onunload = function() {
878 window.localStorage.removeItem("isAuth");
879 window.localStorage.removeItem("loginuser");
880 window.localStorage.removeItem("invalidUser");