summaryrefslogtreecommitdiffstats
path: root/SdncReports/SdncReportsApi/src/main/webapp/js
diff options
context:
space:
mode:
Diffstat (limited to 'SdncReports/SdncReportsApi/src/main/webapp/js')
-rw-r--r--SdncReports/SdncReportsApi/src/main/webapp/js/app.js47
-rw-r--r--SdncReports/SdncReportsApi/src/main/webapp/js/sdnc-controller/sdnc-validationTest-controller.js207
-rw-r--r--SdncReports/SdncReportsApi/src/main/webapp/js/sdnc-controller/sdnc-viewreport-controller.js169
-rw-r--r--SdncReports/SdncReportsApi/src/main/webapp/js/sdnc-services/sdnc-validationTest-service.js62
-rw-r--r--SdncReports/SdncReportsApi/src/main/webapp/js/sdnc-services/sdnc-viewReport-service.js53
5 files changed, 538 insertions, 0 deletions
diff --git a/SdncReports/SdncReportsApi/src/main/webapp/js/app.js b/SdncReports/SdncReportsApi/src/main/webapp/js/app.js
new file mode 100644
index 00000000..82fac469
--- /dev/null
+++ b/SdncReports/SdncReportsApi/src/main/webapp/js/app.js
@@ -0,0 +1,47 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* ============LICENSE_END=========================================================
+*/
+
+// app.js This is first entry point for the application
+// =============================================================================
+var myApp = angular.module('myApp', ['ngRoute', 'ngSanitize', 'ngCsv', 'angularUtils.directives.dirPagination', 'angular-growl','ng-ip-address']);
+
+// configuring our routes
+// =============================================================================
+myApp.config(['$routeProvider', function($routeProvider) {
+
+ //Called when user select pre validation test from the UI
+ $routeProvider.
+ when('/testValidation', {
+ templateUrl: 'form-validationTest.html',
+ controller: 'TestController'
+ }).
+ when('/', {
+ templateUrl: 'form-validationTest.html',
+ controller: 'TestController'
+ }).
+ //Called when user select view test report from the UI
+ when('/testReports', {
+ templateUrl: 'form-viewReport.html',
+ controller: 'ReportController'
+ }).
+ otherwise({
+ redirectTo: 'form-validationTest.html'
+ });
+}]); \ No newline at end of file
diff --git a/SdncReports/SdncReportsApi/src/main/webapp/js/sdnc-controller/sdnc-validationTest-controller.js b/SdncReports/SdncReportsApi/src/main/webapp/js/sdnc-controller/sdnc-validationTest-controller.js
new file mode 100644
index 00000000..bf7005be
--- /dev/null
+++ b/SdncReports/SdncReportsApi/src/main/webapp/js/sdnc-controller/sdnc-validationTest-controller.js
@@ -0,0 +1,207 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* ============LICENSE_END=========================================================
+*/
+
+myApp.controller('TestController', ['$scope', '$http', 'growl', 'viewReportService', 'validationTestService', function($scope, $http, growl, viewReportService, validationTestService) {
+
+ $scope.showTestReport = false;
+
+ //Input data for validation test dropdown
+ var validationTestList = [{
+ "typeId": 1,
+ "validationType": "Network Layer",
+ "Selected": false
+ }
+
+ ];
+
+ $scope.validationTestList = validationTestList;
+
+
+ $scope.getselectval = function() {
+ $scope.selectedvalues = 'Name: ' + $scope.selitem.validationType + ' Id: ' + $scope.selitem.typeId;
+ }
+
+ $scope.showError = false;
+ $scope.errorMessage = "";
+ $scope.showSuccess = false;
+ $scope.successMessage = "";
+ $scope.showWarning = false;
+ $scope.warningMessage = "";
+ $scope.showInfo = false;
+ $scope.infoMessage = "";
+ $scope.ShowResult = false;
+ $scope.allowTestSelection = false;
+ $scope.hostNamePattern = /([a-z0-9](.[a-z0-9-]*[a-z0-9]))/;
+
+ //Called when user clicks on runtest button
+ $scope.runTest = function() {
+
+ $scope.showError = false;
+ $scope.vnfSelected = [];
+ $scope.testSelected = [];
+
+ var message = "";
+ for (var i = 0; i < $scope.validationTestList.length; i++) {
+ if ($scope.validationTestList[i].Selected) {
+ var typeId = $scope.validationTestList[i].typeId;
+ var validationType = $scope.validationTestList[i].validationType;
+ message += "typeId: " + typeId + " validationType: " + validationType + "\n";
+ console.log("--TestController::Runtest--", message);
+ var testDetails = {};
+ testDetails.typeId = typeId;
+ testDetails.validationType = validationType;
+ $scope.testSelected.push(testDetails);
+ }
+ }
+ console.log("--TestController::Runtest--", JSON.stringify($scope.testSelected));
+
+ var vnfDetails = {};
+ if ($scope.IPAddress != null && $scope.HostName != null && $scope.testSelected.length >= 1) {
+ vnfDetails.ipAddress = $scope.IPAddress;
+ vnfDetails.hostName = $scope.HostName;
+ $scope.vnfSelected.push(vnfDetails);
+ console.log("--TestController::Runtest--", JSON.stringify($scope.vnfSelected));
+
+ //Call the validation test service with vnfselected and testType as the parameter
+
+ validationTestService.runPretest($scope.vnfSelected, $scope.testSelected).then(function(response) {
+ console.log("--TestController::runTest--", JSON.stringify(response));
+ var status = response.status;
+ var response = response.data;
+ //in case of success, build the model object to store the service output here
+ if (status === 200) {
+ if (response.preTestResponse != null && response.preTestResponse.length >= 1) {
+ $scope.ShowResult = true;
+ $scope.createTestModel(response.preTestResponse);
+ $scope.showMessage(response.preTestResponse);
+
+ } else {
+ console.log(response);
+ $scope.showError = true;
+ $scope.errorMessage = "Something went wrong!!!";
+ growl.error($scope.errorMessage, {
+ title: 'Error!'
+ });
+ }
+ } else {
+ console.log(response);
+ $scope.showError = true;
+ $scope.errorMessage = "Pre test validation failed!!! Check the report for more details";
+ growl.error($scope.errorMessage, {
+ title: 'Error!'
+ });
+ }
+ },
+ function(response) {
+ console.log("--TestController--", response);
+ });
+ } else {
+ $scope.showError = true;
+ $scope.errorMessage = "Please provide the inputs for VNF and test to be performed!!";
+ growl.error($scope.errorMessage, {
+ title: 'Error!'
+ });
+ }
+
+ };
+
+ $scope.showMessage=function(data){
+
+ if(angular.isDefined(data) && data.length>=1){
+
+ angular.forEach(data, function(value, key){
+ if(value.status == "unreachable"){
+ console.log("--TestController::showMessage--",value.status);
+ $scope.showError = true;
+ $scope.errorMessage = "PreTest validation Failed, Please check logs for further details!!!";
+ growl.error($scope.errorMessage, {
+ title: 'Error!'
+ });
+ }
+ else
+ {
+ $scope.showSuccess = true;
+ $scope.successMessage = "Pre test validation completed!!";
+ growl.success($scope.successMessage, {
+ title: 'Success!'
+ });
+ }
+
+ });
+
+ }
+ }
+
+ //Function to build the UI model to be shown
+ $scope.createTestModel = function(result) {
+
+ $scope.showError = false;
+ $scope.showWarning = false;
+ $scope.objPreTestModel = result;
+ $scope.objPreTest = [];
+
+
+ if ($scope.objPreTestModel.length >= 1) {
+ for (var i = 0; i < $scope.objPreTestModel.length; i++) {
+ var objTestReport = {};
+ objTestReport.ipaddress = $scope.objPreTestModel[i].ipaddress;
+ objTestReport.status = $scope.objPreTestModel[i].status;
+ objTestReport.testtype = $scope.objPreTestModel[i].testtype;
+ objTestReport.statistics = $scope.objPreTestModel[i].statistics;
+ objTestReport.avgTime = $scope.objPreTestModel[i].avgTime;
+
+
+ if ($scope.objPreTestModel[i].testtype === "Network Layer") {
+ if (objTestReport.statistics != null) {
+ //fetching the statistics to show in progress bar
+
+ var statistics = objTestReport.statistics;
+ statistics = statistics.split("%");
+ objTestReport.statistics = statistics[0];
+ if (objTestReport.statistics == 0) {
+ objTestReport.statisticPer = parseInt(objTestReport.statistics) + 50;
+ } else
+ objTestReport.statisticPer = objTestReport.statistics;
+ }
+
+ //fetching the avg time to show in progress bar
+
+ if (objTestReport.avgTime != null) {
+ var avgTime = objTestReport.avgTime;
+ avgTime = avgTime.split("=");
+ var Testtime = avgTime[1];
+ objTestReport.avgTime = Testtime.slice(0, -2).trim();
+ console.log("--TestController::createTestModel--", objTestReport.avgTime);
+ if (objTestReport.avgTime < 50) {
+ objTestReport.avgTimePer = parseInt(objTestReport.avgTime) + 10;
+ } else
+ objTestReport.avgTimePer = objTestReport.avgTime;
+
+ }
+ }
+ $scope.objPreTest.push(objTestReport);
+ console.log("--TestController::createTestModel--", JSON.stringify($scope.objPreTest));
+ }
+ }
+ console.log("--TestController::createTestModel::final PreTestModel--" + JSON.stringify($scope.objPreTest));
+
+ }
+
+}]); \ No newline at end of file
diff --git a/SdncReports/SdncReportsApi/src/main/webapp/js/sdnc-controller/sdnc-viewreport-controller.js b/SdncReports/SdncReportsApi/src/main/webapp/js/sdnc-controller/sdnc-viewreport-controller.js
new file mode 100644
index 00000000..62158d57
--- /dev/null
+++ b/SdncReports/SdncReportsApi/src/main/webapp/js/sdnc-controller/sdnc-viewreport-controller.js
@@ -0,0 +1,169 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* ============LICENSE_END=========================================================
+*/
+
+myApp.controller('ReportController', ['$scope', '$http', 'viewReportService', 'growl', function($scope, $http, viewReportService, growl) {
+ $scope.isDisabled = true;
+ $scope.pagination = false;
+ $scope.selectedDevice;
+ $scope.ShowResult = false;
+ $scope.dateValidation = false;
+ $scope.NoSearchResult = false;
+ $scope.showError = false;
+ $scope.errorMessage = "";
+ $scope.showSuccess = false;
+ $scope.successMessage = "";
+ $scope.showWarning = false;
+ $scope.warningMessage = "";
+ $scope.showExecutionDetails = true;
+
+ //THIS FUNCTION WILL BE CALLED WHEN USER CLICK SUBMIT FROM UI
+ $scope.getReports = function(deviceIP, startdate, enddate) {
+
+ $scope.ShowResult = false;
+ if (new Date(startdate) > new Date(enddate)) {
+ $scope.dateValidation = true;
+ $scope.showError = true;
+ $scope.errorMessage = "Start date cannot be greated than End date";
+ growl.error($scope.errorMessage, {
+ title: 'Error!'
+ });
+ return false;
+ }
+ var date = new Date(startdate);
+ if (angular.isDefined(deviceIP)) {
+ $scope.DeviceIP = deviceIP;
+ }
+ if (angular.isDefined(startdate)) {
+ $scope.startDate = startdate;
+ }
+ if (angular.isDefined(enddate)) {
+ $scope.endDate = enddate;
+ }
+
+ if (deviceIP != null && startdate != null && enddate != null) {
+
+ //service call to fetch the reports start date,end date,test name
+ viewReportService.getData($scope.startDate, $scope.endDate, $scope.DeviceIP).then(function(result) {
+ console.log("--ReportController::getdata called from controler--", JSON.stringify(result.data));
+ if (result.status == 200) {
+ if (result.data != null && result.data.length >= 1) {
+
+ //in case of success, build the model object to store the service output here
+ $scope.createTestReportModel(result.data);
+ } else {
+ $scope.ShowResult = false;
+ $scope.showWarning = true;
+ $scope.warningMessage = "No result found for specified Device name !!";
+ growl.warning($scope.warningMessage, {
+ title: 'Warning!'
+ });
+ }
+ } else {
+ $scope.ShowResult = false;
+ $scope.showWarning = true;
+ $scope.warningMessage = "No result found for specified Device name !!";
+ growl.warning($scope.warningMessage, {
+ title: 'Warning!'
+ });
+ }
+ },
+ function(response) {
+ console.log("--ReportController::getdata::Error--", response);
+ });
+ }
+ }
+
+
+ //FUNCTION WILL BE CALLED WHEN USER CLICK DOWNLOAD FROM UI
+ $scope.exportToExcel = function(tableId) { // ex: '#my-table'
+ var exportHref = Excel.tableToExcel(tableId, 'export');
+ $timeout(function() {
+ location.href = exportHref;
+ }, 100); // trigger download
+
+ console.log("--ReportController::exportToexcel--");
+ }
+
+ $scope.createTestReportModel = function(result) {
+
+ $scope.showError = false;
+ $scope.showWarning = false;
+ $scope.objTestReportModel = result;
+ $scope.objTestModel = [];
+
+
+ if ($scope.objTestReportModel.length >= 1) {
+ for (var i = 0; i < $scope.objTestReportModel.length; i++) {
+ var objTestReport = {};
+ objTestReport.testid = $scope.objTestReportModel[i].testid;
+ objTestReport.deviceid = $scope.objTestReportModel[i].deviceid;
+ objTestReport.deviceIP = $scope.objTestReportModel[i].deviceIP;
+ objTestReport.result = $scope.objTestReportModel[i].result;
+ objTestReport.timeStamp = $scope.objTestReportModel[i].timeStamp;
+ objTestReport.testname = $scope.objTestReportModel[i].testName;
+
+ var executionDetails = {};
+ $scope.tmp = angular.fromJson($scope.objTestReportModel[i].execuationDetails);
+ executionDetails = $scope.tmp.output;
+
+ if ($scope.objTestReportModel[i].testName === "Network Layer") {
+
+ //fetching the statistics to show in progress bar
+ var statistics = executionDetails.statistics;
+ objTestReport.status = executionDetails.status;
+ objTestReport.statistics = executionDetails.statistics;
+ statistics = statistics.split("%");
+ executionDetails.statistics = statistics[0];
+ if (executionDetails.statistics == 0) {
+ executionDetails.statisticPer = parseInt(executionDetails.statistics) + 50;
+ } else
+ executionDetails.statisticPer = executionDetails.statistics;
+
+ console.log("--ReportController::CreateTestReportModel--", executionDetails.statistics);
+
+ //fetching the avg time to show in progress bar
+
+ var avgTime = executionDetails.avgTime;
+ objTestReport.avgTime = executionDetails.avgTime;
+ avgTime = avgTime.split("=");
+ var Testtime = avgTime[1];
+ executionDetails.avgTime = Testtime.slice(0, -2).trim();
+ console.log("--ReportController::CreateTestReportModel--", executionDetails.avgTime);
+ if (executionDetails.avgTime < 50) {
+ executionDetails.avgTimePer = parseInt(executionDetails.avgTime) + 10;
+ } else
+ executionDetails.avgTimePer = executionDetails.avgTime;
+
+ }
+
+
+ objTestReport.executionDetails = executionDetails;
+ $scope.objTestModel.push(objTestReport);
+ console.log("--ReportController::CreateTestReportModel--", JSON.stringify($scope.objTestModel));
+
+ }
+ $scope.ShowResult = true;
+ $scope.pagination = true;
+ }
+ console.log("--ReportController::createTestReportModel::final TestReportModel--" + JSON.stringify($scope.objTestModel));
+ $scope.csvOrder = ['testname', 'deviceIP', 'timeStamp', 'status', 'statistics', 'avgTime', 'result'];
+
+ }
+}]); \ No newline at end of file
diff --git a/SdncReports/SdncReportsApi/src/main/webapp/js/sdnc-services/sdnc-validationTest-service.js b/SdncReports/SdncReportsApi/src/main/webapp/js/sdnc-services/sdnc-validationTest-service.js
new file mode 100644
index 00000000..aa985ac3
--- /dev/null
+++ b/SdncReports/SdncReportsApi/src/main/webapp/js/sdnc-services/sdnc-validationTest-service.js
@@ -0,0 +1,62 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* ============LICENSE_END=========================================================
+*/
+myApp.service('validationTestService', ['$http', function($http) {
+
+ this.runPretest = function(vnfList, validationTestType) {
+
+
+ var data = {};
+ data.vnfList = vnfList;
+ data.validationTestType = validationTestType;
+
+ var config = {
+ params: data,
+ headers: {
+ 'Accept': 'application/json'
+ }
+ };
+
+ console.log("validationTestService::runPretest::config", JSON.stringify(config));
+
+ // Call the pre validation service
+ var request = {
+ method: 'POST',
+ url: '/runtest',
+ data: data,
+ headers: {
+ 'Content-Type': "application/json"
+ }
+ };
+
+ // // SEND VNF FOR VALIDATION
+ return $http(request)
+ .then(function(response) {
+ console.log("---validationTestService::runPretest::Response---" + JSON.stringify(response));
+ return response;
+ },
+ function(response) {
+ console.log("--validationTestService::Status Code--", response.status);
+ return response;
+ });
+
+
+ }
+
+}]); \ No newline at end of file
diff --git a/SdncReports/SdncReportsApi/src/main/webapp/js/sdnc-services/sdnc-viewReport-service.js b/SdncReports/SdncReportsApi/src/main/webapp/js/sdnc-services/sdnc-viewReport-service.js
new file mode 100644
index 00000000..de22ff3c
--- /dev/null
+++ b/SdncReports/SdncReportsApi/src/main/webapp/js/sdnc-services/sdnc-viewReport-service.js
@@ -0,0 +1,53 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* ============LICENSE_END=========================================================
+*/
+
+myApp.service('viewReportService', ['$http', function($http) {
+ this.getData = function(startDate, endDate, deviceName) {
+
+ var data = {};
+ if (startDate != null && endDate != null && deviceName != null) {
+
+ data.startdate = startDate;
+ data.enddate = endDate;
+ data.devicename = deviceName;
+
+ }
+ var config = {
+ params: '',
+ headers: {
+ 'Accept': 'application/json'
+ }
+ };
+
+ var sdate = new Date(startDate);
+ var edate = new Date(endDate);
+
+ var objTestList = {};
+
+ return $http.get('/findReportByDeviceIP/'+sdate+'/'+edate+'/'+deviceName,config)
+ .then(function(result) {
+ console.log("--viewReportService::getdata::TestResponse--", JSON.stringify(result));
+ objTestList = result.data;
+ console.log("--viewReportService::getdata::TestResponse--", +JSON.stringify(objTestList));
+ return result;
+ });
+ };
+
+}]); \ No newline at end of file