* 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"
- }
- ]
- }
+ .controller('TableController', ['$scope', '$state', '$stateParams', '$http', 'TableFactory', '$timeout',
+ function($scope, $state, $stateParams, $http, TableFactory, $timeout) {
+
+ init();
+
+ function init() {
+ $scope.filterlist = [];
+ $scope.selection = [];
+
+ $scope.statusList = [];
+ $scope.projectList = [];
+ $scope.installerList = [];
+ $scope.versionlist = [];
+ $scope.loopList = [];
+ $scope.timeList = [];
+
+ $scope.selectStatus = [];
+ $scope.selectProjects = [];
+ $scope.selectInstallers = [];
+ $scope.selectVersion = null;
+ $scope.selectLoop = null;
+ $scope.selectTime = null;
+
+ $scope.statusClicked = false;
+ $scope.installerClicked = false;
+ $scope.projectClicked = false;
+
+ $scope.scenarios = {};
+
+ $scope.VersionConfig = {
+ create: true,
+ valueField: 'title',
+ labelField: 'title',
+ delimiter: '|',
+ maxItems: 1,
+ placeholder: 'Version',
+ onChange: function(value) {
+ $scope.selectVersion = value;
+
+ getScenarioData();
+
}
}
- };
-
- // 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) {
-
+ $scope.LoopConfig = {
+ create: true,
+ valueField: 'title',
+ labelField: 'title',
+ delimiter: '|',
+ maxItems: 1,
+ placeholder: 'Loop',
+ onChange: function(value) {
+ $scope.selectLoop = value;
+ getScenarioData();
- 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);
+ $scope.TimeConfig = {
+ create: true,
+ valueField: 'title',
+ labelField: 'title',
+ delimiter: '|',
+ maxItems: 1,
+ placeholder: 'Time',
+ onChange: function(value) {
+ $scope.selectTime = value;
+
+ getScenarioData();
}
-
}
- 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);
-
+ getFilters();
}
-
- 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]);
- }
+ function getFilters() {
+ TableFactory.getFilter().get({
+ }).$promise.then(function(response) {
+ if (response != null) {
+ $scope.statusList = response.filters.status;
+ $scope.projectList = response.filters.projects;
+ $scope.installerList = response.filters.installers;
+ $scope.versionList = toSelectList(response.filters.version);
+ $scope.loopList = toSelectList(response.filters.loops);
+ $scope.timeList = toSelectList(response.filters.time);
+
+ $scope.selectStatus = copy($scope.statusList);
+ $scope.selectInstallers = copy($scope.installerList);
+ $scope.selectProjects = copy($scope.projectList);
+ $scope.selectVersion = response.filters.version[0];
+ $scope.selectLoop = response.filters.loops[0];
+ $scope.selectTime = response.filters.time[0];
+
+ getScenarioData();
+
+ } else {
+ }
+ });
}
- 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);
-
+ function toSelectList(arr){
+ var tempList = [];
+ angular.forEach(arr, function(ele){
+ tempList.push({'title': ele});
+ });
+ return tempList;
}
- 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++;
+ function copy(arr){
+ var tempList = [];
+ angular.forEach(arr, function(ele){
+ tempList.push(ele);
+ });
+ return tempList;
}
- 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();
+ function getScenarioData() {
+ var data = {
+ 'status': $scope.selectStatus,
+ 'projects': $scope.selectProjects,
+ 'installers': $scope.selectInstallers,
+ 'version': $scope.selectVersion,
+ 'loops': $scope.selectLoop,
+ 'time': $scope.selectTime
+ };
- $scope.colspan=$scope.tableDataAll.colspan;
- //filter function
- function filterData() {
+ TableFactory.getScenario(data).then(function(response) {
+ if (response.status == 200) {
+ $scope.scenarios = response.data.scenarios;
+ getScenario();
+ }
+ }, function(error) {
+ });
- $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;
+ function getScenario(){
+ $scope.project_row = [];
+ angular.forEach($scope.selectInstallers, function(installer){
+ angular.forEach($scope.selectProjects, function(project){
+ var temp = {
+ 'installer': installer,
+ 'project': project
+ }
+ $scope.project_row.push(temp);
+
+ });
+ });
+
+
+ $scope.scenario_rows = [];
+ angular.forEach($scope.scenarios, function(scenario, name){
+ var scenario_row = {
+ 'name': null,
+ 'status': null,
+ 'statusDisplay': null,
+ 'datadisplay': [],
+ };
+ scenario_row.name = name;
+ scenario_row.status = scenario.status;
+
+ var scenarioStatusDisplay;
+ if (scenario.status == "success") {
+ scenarioStatusDisplay = "navy";
+ } else if (scenario.status == "danger") {
+ scenarioStatusDisplay = "danger";
+ } else if (scenario.status == "warning") {
+ scenarioStatusDisplay = "warning";
+ }
+ scenario_row.statusDisplay = scenarioStatusDisplay;
+
+ angular.forEach($scope.selectInstallers, function(installer){
+ angular.forEach($scope.selectProjects, function(project){
+ var datadisplay = {
+ 'installer': null,
+ 'project': null,
+ 'value': null,
+ 'label': null,
+ 'label_value': null
+ };
+ datadisplay.installer = installer;
+ datadisplay.project = project;
+ datadisplay.value = scenario.installers[installer][project].score;
+
+ var single_status = scenario.installers[installer][project].status;
+ if (single_status == "platinium") {
+ datadisplay.label = 'primary';
+ datadisplay.label_value = 'P';
+ } else if (single_status == "gold") {
+ datadisplay.label = 'danger';
+ datadisplay.label_value = 'G';
+ } else if (single_status == "silver") {
+ datadisplay.label = 'warning';
+ datadisplay.label_value = 'S';
+ } else if (single_status == null) {
+ }
+ scenario_row.datadisplay.push(datadisplay);
+
+ });
+ });
+ $scope.scenario_rows.push(scenario_row);
+ });
}
- 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);
+ function clickBase(eleList, ele){
+ var idx = eleList.indexOf(ele);
+ if(idx > -1){
+ eleList.splice(idx, 1);
+ }else{
+ eleList.push(ele);
+ }
}
- //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.clickStatus = function(status){
+ if($scope.selectStatus.length == $scope.statusList.length && $scope.statusClicked == false){
+ $scope.selectStatus = [];
+ $scope.statusClicked = true;
+ }
+ clickBase($scope.selectStatus, status);
- $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);
+ if($scope.selectStatus.length == 0 && $scope.statusClicked == true){
+ $scope.selectStatus = copy($scope.statusList);
+ $scope.statusClicked = false;
+ }
+ getScenarioData();
}
- }
-
- $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.clickInstaller = function(installer){
+ if($scope.selectInstallers.length == $scope.installerList.length && $scope.installerClicked == false){
+ $scope.selectInstallers = [];
+ $scope.installerClicked = true;
+ }
- }
- }
+ clickBase($scope.selectInstallers, installer);
- $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)
+ if($scope.selectInstallers.length == 0 && $scope.installerClicked == true){
+ $scope.selectInstallers = copy($scope.installerList);
+ $scope.installerClicked = false;
+ }
+ getScenarioData();
}
- }
- //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;
+ $scope.clickProject = function(project){
+ if($scope.selectProjects.length == $scope.projectList.length && $scope.projectClicked == false){
+ $scope.selectProjects = [];
+ $scope.projectClicked = true;
}
- }
- }
- //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);
- }
- }
- }
+ clickBase($scope.selectProjects, project);
- function toggleSelection(status) {
- var idx = $scope.selection.indexOf(status);
+ if($scope.selectProjects.length == 0 && $scope.projectClicked == true){
+ $scope.selectProjects = copy($scope.projectList);
+ $scope.projectClicked = false;
+ }
- if (idx > -1) {
- $scope.selection.splice(idx, 1);
+ getScenarioData();
}
- else {
- $scope.selection.push(status);
- }
- console.log($scope.selection);
- filterData();
}
-
- }]);
+ ]);