summaryrefslogtreecommitdiffstats
path: root/utils/test/reporting/pages/app/scripts
diff options
context:
space:
mode:
authorchenjiankun <chenjiankun1@huawei.com>2016-12-24 23:08:46 +0000
committerchenjiankun <chenjiankun1@huawei.com>2016-12-30 15:38:08 +0000
commit64605f1cc7117854abb203375deee396e0d65cc1 (patch)
tree42f863658d915c45b18996be37271813385d3f33 /utils/test/reporting/pages/app/scripts
parent53ed9e36a13d03455fc04b3f54ed290037359f6b (diff)
Create Test Reporting landing page
JIRA: RELENG-165 In this patch, I do the follow things: 1.deploy tornado server(currently I haven't write any backend code, since the backend code depend on the testapi and I need to communicate with Serena). 2.landing page code(almostly finished. But I haven't the data, so for now, the data this page shows is a mock json. When the testapi and my backend code ready, this page will finally finished) 3.deployment: supervisor + nginx + tornado + angular usage: docker run -itd -p 8000:8000 opnfv/reporting:<tag> visit landing page: http://server_ip:8000/reporting/index.html test api: http://server_ip:8000/landing-page/filters visit old reporting page: http://server_ip:8000/display/master/yardstick/status-apex.html Change-Id: I527ab2661ce9e84b2942ebe673afbf5f2bc7878f Signed-off-by: chenjiankun <chenjiankun1@huawei.com>
Diffstat (limited to 'utils/test/reporting/pages/app/scripts')
-rw-r--r--utils/test/reporting/pages/app/scripts/app.js20
-rw-r--r--utils/test/reporting/pages/app/scripts/config.js14
-rw-r--r--utils/test/reporting/pages/app/scripts/config.router.js53
-rw-r--r--utils/test/reporting/pages/app/scripts/controllers/table.controller.js520
-rw-r--r--utils/test/reporting/pages/app/scripts/data.json76
-rw-r--r--utils/test/reporting/pages/app/scripts/directives/mydirective.js18
-rw-r--r--utils/test/reporting/pages/app/scripts/factory/table.factory.js20
7 files changed, 721 insertions, 0 deletions
diff --git a/utils/test/reporting/pages/app/scripts/app.js b/utils/test/reporting/pages/app/scripts/app.js
new file mode 100644
index 000000000..6e99ce3d7
--- /dev/null
+++ b/utils/test/reporting/pages/app/scripts/app.js
@@ -0,0 +1,20 @@
+'use strict';
+
+/**
+ * @ngdoc overview
+ * @name opnfvApp
+ * @description
+ * # opnfvApp
+ *
+ * Main module of the application.
+ */
+angular
+ .module('opnfvApp', [
+ 'ngAnimate',
+ 'ui.router',
+ 'oc.lazyLoad',
+ 'ui.bootstrap',
+ 'ngResource',
+ 'selectize'
+
+ ]);
diff --git a/utils/test/reporting/pages/app/scripts/config.js b/utils/test/reporting/pages/app/scripts/config.js
new file mode 100644
index 000000000..838460a38
--- /dev/null
+++ b/utils/test/reporting/pages/app/scripts/config.js
@@ -0,0 +1,14 @@
+/**
+ * @ngdoc overview
+ * @name opnfvApp
+ * @description
+ * # opnfvApp
+ *
+ * Main config file of the application.
+ */
+angular
+ .module('opnfvApp').config(function () {
+
+ }
+
+ )
diff --git a/utils/test/reporting/pages/app/scripts/config.router.js b/utils/test/reporting/pages/app/scripts/config.router.js
new file mode 100644
index 000000000..641ea6a74
--- /dev/null
+++ b/utils/test/reporting/pages/app/scripts/config.router.js
@@ -0,0 +1,53 @@
+'use strict'
+/**
+ * @ngdoc function
+ * @name opnfvdashBoardAngularApp.config:config.router.js
+ * @description config of the ui router and lazy load setting
+ * config of the opnfvdashBoardAngularApp
+ */
+angular.module('opnfvApp')
+ .run([
+ '$rootScope', '$state', '$stateParams',
+ function ($rootScope, $state, $stateParams) {
+
+ $rootScope.$state = $state;
+ $rootScope.$stateParams = $stateParams;
+
+ }
+ ]
+ ).config(['$stateProvider', '$urlRouterProvider',
+ function ($stateProvider, $urlRouterProvider) {
+
+ $urlRouterProvider.otherwise('/landingpage/table');
+
+ $stateProvider
+ .state('landingpage', {
+ url: "/landingpage",
+ //controller: 'MainCtrl',
+ templateUrl: "views/main.html",
+ data: { pageTitle: '首页', specialClass: 'landing-page' },
+ resolve: {
+ controller: ['$ocLazyLoad', function ($ocLazyLoad) {
+ return $ocLazyLoad.load([
+
+ ])
+ }]
+ }
+ })
+ .state('landingpage.table', {
+ url: "/table",
+ controller:'TableController',
+ templateUrl: "views/commons/table.html",
+ resolve: {
+ controller: ['$ocLazyLoad', function ($ocLazyLoad) {
+ return $ocLazyLoad.load([
+ // 'scripts/controllers/table.controller.js'
+
+
+ ])
+ }]
+ }
+ })
+
+ }])
+ .run();
diff --git a/utils/test/reporting/pages/app/scripts/controllers/table.controller.js b/utils/test/reporting/pages/app/scripts/controllers/table.controller.js
new file mode 100644
index 000000000..8ca1e474c
--- /dev/null
+++ b/utils/test/reporting/pages/app/scripts/controllers/table.controller.js
@@ -0,0 +1,520 @@
+'use strict';
+
+/**
+ * @ngdoc function
+ * @name opnfvdashBoardAngularApp.controller:TableController
+ * @description
+ * # TableController
+ * Controller of the opnfvdashBoardAngularApp
+ */
+angular.module('opnfvApp')
+ .controller('TableController', ['$scope', '$state', '$stateParams', 'TableFactory', function ($scope, $state, $stateParams, TableFactory) {
+
+ $scope.filterlist = [];
+ $scope.selection = [];
+ $scope.statusList = ["Success", "Warning", "Danger"];
+ $scope.projectList = ["Deployment", "Functest", "Yardstick"];
+ $scope.installerList = ["apex", "compass", "fuel", "joid"];
+ $scope.versionlist = ["Colorado", "Master"];
+ $scope.loopci = ["Daily", "Weekly", "Monthly"];
+ $scope.time = ["10 days", "1 Month"];
+ $scope.tableDataAll = {};
+ $scope.tableInfoAll = {};
+
+
+
+ $scope.scenario =
+ {
+ "scenarios": {
+ "os-nosdn-kvm-noha": {
+ "status": "Success",
+ "installers": {
+ "apex": [
+ {
+ "project": "Deployment",
+ "score": "13/14",
+ "status": "SUCCESS",
+
+
+ },
+ {
+ "project": "Functest",
+ "score": "null",
+ "status": "SUCCESS"
+ },
+ {
+ "project": "Yardstick",
+ "score": "13/14",
+ "status": "SUCCESS"
+ }
+ ],
+ "compass": [
+ {
+ "project": "Deployment",
+ "score": "13/14",
+ "status": "SUCCESS"
+ },
+ {
+ "project": "Functest",
+ "score": "13/14",
+ "status": "SUCCESS"
+ },
+ {
+ "project": "Yardstick",
+ "score": "13/14",
+ "status": "SUCCESS"
+ }
+ ],
+ "fuel": [
+ {
+ "project": "Deployment",
+ "score": "13/14",
+ "status": "SUCCESS"
+ },
+ {
+ "project": "Functest",
+ "score": "13/14",
+ "status": "SUCCESS"
+ },
+ {
+ "project": "Yardstick",
+ "score": "13/14",
+ "status": "SUCCESS"
+ }
+ ],
+ "joid": [
+ {
+ "project": "Deployment",
+ "score": "13/14",
+ "status": "SUCCESS"
+ },
+ {
+ "project": "Functest",
+ "score": "13/14",
+ "status": "SUCCESS"
+ },
+ {
+ "project": "Yardstick",
+ "score": "13/14",
+ "status": "SUCCESS"
+ }
+ ]
+ }
+ },
+ "os-nosdn-ovs-ha": {
+ "status": "Danger",
+ "installers": {
+ "apex": [
+ {
+ "project": "Deployment",
+ "score": "13/14",
+ "status": "SUCCESS",
+
+
+ },
+ {
+ "project": "Functest",
+ "score": "13/14",
+ "status": "SUCCESS"
+ },
+ {
+ "project": "Yardstick",
+ "score": "13/14",
+ "status": "SUCCESS"
+ }
+ ],
+ "compass": [
+ {
+ "project": "Deployment",
+ "score": "13/14",
+ "status": "SUCCESS"
+ },
+ {
+ "project": "Functest",
+ "score": "13/14",
+ "status": "SUCCESS"
+ },
+ {
+ "project": "Yardstick",
+ "score": "13/14",
+ "status": "SUCCESS"
+ }
+ ],
+ "fuel": [
+ {
+ "project": "Deployment",
+ "score": "13/14",
+ "status": "SUCCESS"
+ },
+ {
+ "project": "Functest",
+ "score": "13/14",
+ "status": "SUCCESS"
+ },
+ {
+ "project": "Yardstick",
+ "score": "13/14",
+ "status": "SUCCESS"
+ }
+ ],
+ "joid": [
+ {
+ "project": "Deployment",
+ "score": "13/14",
+ "status": "SUCCESS"
+ },
+ {
+ "project": "Functest",
+ "score": "13/14",
+ "status": "SUCCESS"
+ },
+ {
+ "project": "Yardstick",
+ "score": "13/14",
+ "status": "SUCCESS"
+ }
+ ]
+ }
+ },
+ "os-nosdn-ovs-noha": {
+ "status": "Warning",
+ "installers": {
+ "apex": [
+ {
+ "project": "Deployment",
+ "score": "13/14",
+ "status": "SUCCESS",
+
+
+ },
+ {
+ "project": "Functest",
+ "score": "13/14",
+ "status": "SUCCESS"
+ },
+ {
+ "project": "Yardstick",
+ "score": "13/14",
+ "status": "SUCCESS"
+ }
+ ],
+ "compass": [
+ {
+ "project": "Deployment",
+ "score": "13/14",
+ "status": "SUCCESS"
+ },
+ {
+ "project": "Functest",
+ "score": "13/14",
+ "status": "SUCCESS"
+ },
+ {
+ "project": "Yardstick",
+ "score": "13/14",
+ "status": "SUCCESS"
+ }
+ ],
+ "fuel": [
+ {
+ "project": "Deployment",
+ "score": "13/14",
+ "status": "SUCCESS"
+ },
+ {
+ "project": "Functest",
+ "score": "13/14",
+ "status": "SUCCESS"
+ },
+ {
+ "project": "Yardstick",
+ "score": "13/14",
+ "status": "SUCCESS"
+ }
+ ],
+ "joid": [
+ {
+ "project": "Deployment",
+ "score": "13/14",
+ "status": "SUCCESS"
+ },
+ {
+ "project": "Functest",
+ "score": "13/14",
+ "status": "SUCCESS"
+ },
+ {
+ "project": "Yardstick",
+ "score": "13/14",
+ "status": "SUCCESS"
+ }
+ ]
+ }
+ }
+ }
+ };
+
+ // var headData = Object.keys($scope.scenario.scenarios.os_nosdn_kvm_noha.installers);
+ // $scope.headData = headData;
+ //construct json
+ function constructJson() {
+
+ var colspan;
+ var InstallerData;
+ var projectsInfo;
+ $scope.tableDataAll["scenario"] = [];
+
+
+ for (var item in $scope.scenario.scenarios) {
+
+
+
+
+ var headData = Object.keys($scope.scenario.scenarios[item].installers);
+ var scenarioStatus = $scope.scenario.scenarios[item].status;
+
+
+ InstallerData = headData;
+ var projectData = [];
+ var datadisplay = [];
+ var projects = [];
+
+
+ for (var j = 0; j < headData.length; j++) {
+
+ projectData.push($scope.scenario.scenarios[item].installers[headData[j]]);
+ }
+ for (var j = 0; j < projectData.length; j++) {
+
+ for (var k = 0; k < projectData[j].length; k++) {
+ projects.push(projectData[j][k].project);
+ var temArray = [];
+ temArray.push(projectData[j][k].score);
+ temArray.push(projectData[j][k].project);
+ temArray.push(headData[j]);
+ datadisplay.push(temArray);
+
+ }
+
+ }
+
+ colspan = projects.length / headData.length;
+
+ var tabledata = {
+ scenarioName: item, Installer: InstallerData, projectData: projectData, projects: projects,
+ datadisplay: datadisplay, colspan: colspan, status: scenarioStatus
+ };
+
+ JSON.stringify(tabledata);
+ $scope.tableDataAll.scenario.push(tabledata);
+
+ }
+
+
+ projectsInfo = $scope.tableDataAll.scenario[0].projects;
+
+ var tempHeadData = [];
+
+
+
+ for (var i = 0; i < InstallerData.length; i++) {
+ for (var j = 0; j < colspan; j++) {
+ tempHeadData.push(InstallerData[i]);
+ }
+ }
+
+ console.log(tempHeadData);
+
+ var projectsInfoAll = [];
+
+ for (var i = 0; i < projectsInfo.length; i++) {
+ var tempA = [];
+ tempA.push(projectsInfo[i]);
+ tempA.push(tempHeadData[i]);
+ projectsInfoAll.push(tempA);
+
+ }
+ console.log(projectsInfoAll);
+
+ $scope.tableDataAll["colspan"] = colspan;
+ $scope.tableDataAll["Installer"] = InstallerData;
+ $scope.tableDataAll["Projects"] = projectsInfoAll;
+
+ console.log($scope.tableDataAll);
+
+ }
+
+ //get json element size
+ function getSize(jsondata) {
+ var size = 0;
+ for (var item in jsondata) {
+ size++;
+ }
+ return size;
+ }
+
+ init();
+ function init() {
+ $scope.toggleSelection = toggleSelection;
+
+ constructJson();
+
+ }
+
+ // $scope.test=false;
+
+ var statusListString = $scope.statusList.toString();
+ var projectListString = $scope.projectList.toString();
+ var installerListString = $scope.installerList.toString();
+
+
+ $scope.colspan=$scope.tableDataAll.colspan;
+ //filter function
+ function filterData() {
+
+
+ $scope.selectInstallers = [];
+ $scope.selectProjects = [];
+ $scope.selectStatus = [];
+ for (var i = 0; i < $scope.selection.length; i++) {
+ if (statusListString.indexOf($scope.selection[i]) > -1) {
+ $scope.selectStatus.push($scope.selection[i]);
+ }
+ if (projectListString.indexOf($scope.selection[i]) > -1) {
+ $scope.selectProjects.push($scope.selection[i]);
+ }
+ if (installerListString.indexOf($scope.selection[i]) > -1) {
+ $scope.selectInstallers.push($scope.selection[i]);
+ }
+ }
+
+ $scope.colspan=$scope.selectProjects.length;
+ //when some selection is empty, we set it full
+ if($scope.selectInstallers.length==0){
+ $scope.selectInstallers=$scope.installerList;
+
+ }
+ if($scope.selectProjects.length==0){
+ $scope.selectProjects=$scope.projectList;
+ $scope.colspan=$scope.tableDataAll.colspan;
+ }
+ if($scope.selectStatus.length==0){
+ $scope.selectStatus=$scope.statusList
+ }
+ }
+
+
+ //find all same element index
+ function getSameElementIndex(array, element) {
+ var indices = [];
+ var idx = array.indexOf(element);
+ while (idx != -1) {
+ indices.push(idx);
+ idx = array.indexOf(element, idx + 1);
+ }
+ //return indices;
+ var result = { element: element, index: indices };
+ JSON.stringify(result);
+ return result;
+ }
+
+ //delete element in array
+ function deletElement(array, index) {
+ array.splice(index, 1);
+
+ }
+
+
+ $scope.VersionOption = [
+ { title: 'Colorado' },
+ { title: 'Master' }
+ ];
+ $scope.VersionConfig = {
+ create: true,
+ valueField: 'title',
+ labelField: 'title',
+ delimiter: '|',
+ maxItems: 1,
+ placeholder: 'Version',
+ onChange: function (value) {
+ checkElementArrayValue($scope.selection, $scope.VersionOption);
+ $scope.selection.push(value);
+ // console.log($scope.selection);
+
+ }
+
+ }
+
+ $scope.LoopOption = [
+ { title: 'Daily' },
+ { title: 'Weekly' },
+ { title: 'Monthly' }
+ ];
+ $scope.LoopConfig = {
+ create: true,
+ valueField: 'title',
+ labelField: 'title',
+ delimiter: '|',
+ maxItems: 1,
+ placeholder: 'Loop',
+ onChange: function (value) {
+ checkElementArrayValue($scope.selection, $scope.LoopOption);
+ $scope.selection.push(value);
+ // console.log($scope.selection);
+
+ }
+ }
+
+ $scope.TimeOption = [
+ { title: '10 days' },
+ { title: '1 month' }
+ ];
+ $scope.TimeConfig = {
+ create: true,
+ valueField: 'title',
+ labelField: 'title',
+ delimiter: '|',
+ maxItems: 1,
+ placeholder: 'Time',
+ onChange: function (value) {
+ checkElementArrayValue($scope.selection, $scope.TimeOption);
+ $scope.selection.push(value);
+ // console.log($scope.selection)
+
+ }
+ }
+
+ //remove element in the array
+ function removeArrayValue(arr, value) {
+ for (var i = 0; i < arr.length; i++) {
+ if (arr[i] == value) {
+ arr.splice(i, 1);
+ break;
+ }
+ }
+ }
+
+ //check if exist element
+ function checkElementArrayValue(arrayA, arrayB) {
+ for (var i = 0; i < arrayB.length; i++) {
+ if (arrayA.indexOf(arrayB[i].title) > -1) {
+ removeArrayValue(arrayA, arrayB[i].title);
+ }
+ }
+ }
+
+ function toggleSelection(status) {
+ var idx = $scope.selection.indexOf(status);
+
+ if (idx > -1) {
+ $scope.selection.splice(idx, 1);
+ }
+ else {
+ $scope.selection.push(status);
+ }
+ console.log($scope.selection);
+ filterData();
+
+ }
+
+ }]);
diff --git a/utils/test/reporting/pages/app/scripts/data.json b/utils/test/reporting/pages/app/scripts/data.json
new file mode 100644
index 000000000..a15fdf37e
--- /dev/null
+++ b/utils/test/reporting/pages/app/scripts/data.json
@@ -0,0 +1,76 @@
+
+{"scenarios": {
+ "os-nosdn-kvm-noha": {
+ "status": "Success",
+ "installers": {
+ "apex": [
+ {
+ "project": "Deployment",
+ "score": "13/14",
+ "status": "SUCCESS"
+ },
+ {
+ "project": "Functest",
+ "score": "13/14",
+ "status": "SUCCESS"
+ },
+ {
+ "project": "Yardstick",
+ "socre": "13/14",
+ "status": "SUCCESS"
+ }
+ ],
+ "compass": [
+ {
+ "project": "Deployment",
+ "score": "13/14",
+ "status": "SUCCESS"
+ },
+ {
+ "project": "Functest",
+ "score": "13/14",
+ "status": "SUCCESS"
+ },
+ {
+ "project": "Yardstick",
+ "socre": "13/14",
+ "status": "SUCCESS"
+ }
+ ],
+ "fuel": [
+ {
+ "project": "Deployment",
+ "score": "13/14",
+ "status": "SUCCESS"
+ },
+ {
+ "project": "Functest",
+ "score": "13/14",
+ "status": "SUCCESS"
+ },
+ {
+ "project": "Yardstick",
+ "socre": "13/14",
+ "status": "SUCCESS"
+ }
+ ],
+ "joid": [
+ {
+ "project": "Deployment",
+ "score": "13/14",
+ "status": "SUCCESS"
+ },
+ {
+ "project": "Functest",
+ "score": "13/14",
+ "status": "SUCCESS"
+ },
+ {
+ "project": "Yardstick",
+ "socre": "13/14",
+ "status": "SUCCESS"
+ }
+ ]
+ }
+ }
+}}
diff --git a/utils/test/reporting/pages/app/scripts/directives/mydirective.js b/utils/test/reporting/pages/app/scripts/directives/mydirective.js
new file mode 100644
index 000000000..1d7177a56
--- /dev/null
+++ b/utils/test/reporting/pages/app/scripts/directives/mydirective.js
@@ -0,0 +1,18 @@
+'use strict';
+
+/**
+ * @ngdoc directive
+ * @name opnfvApp.directive:myDirective
+ * @description
+ * # myDirective
+ */
+angular.module('opnfvApp')
+ .directive('myDirective', function () {
+ return {
+ template: '<div></div>',
+ restrict: 'E',
+ link: function postLink(scope, element, attrs) {
+ element.text('this is the myDirective directive');
+ }
+ };
+ });
diff --git a/utils/test/reporting/pages/app/scripts/factory/table.factory.js b/utils/test/reporting/pages/app/scripts/factory/table.factory.js
new file mode 100644
index 000000000..22443221e
--- /dev/null
+++ b/utils/test/reporting/pages/app/scripts/factory/table.factory.js
@@ -0,0 +1,20 @@
+'use strict';
+
+/**
+ * get data factory
+ */
+angular.module('opnfvApp')
+ .factory('TableFactory', function ($resource, $rootScope) {
+ // var baseUrl = base_Url;
+
+ return {
+ getFilter: function () {
+ return $resource(baseUrl + '/', {}, {
+ 'post': {
+ method: 'POST',
+
+ }
+ });
+ }
+ };
+ });