docs: add instruction of python package installation
[releng.git] / utils / test / result_collection_api / tools / dashboard / opnfv_dashboard_tests.js
1 /*#############################################################################\r
2 # All rights reserved. This program and the accompanying materials\r
3 # are made available under the terms of the Apache License, Version 2.0\r
4 # which accompanies this distribution, and is available at\r
5 # http://www.apache.org/licenses/LICENSE-2.0\r
6 ##############################################################################\r
7 */\r
8 \r
9 // Function to sort data to be ordered according to the time\r
10 function sortFunction(a,b){\r
11     var dateA = new Date(a.date).getTime();\r
12     var dateB = new Date(b.date).getTime();\r
13     return dateA > dateB ? 1 : -1;\r
14 };\r
15 \r
16 // Function to format date according to JS\r
17 function formatDate(inputDate){\r
18     var input=inputDate.slice(0,-7);\r
19     input=input.replace(' ','T');\r
20     input+='Z';\r
21     return new Date(Date.parse(input));\r
22 }\r
23 \r
24 // Draw a single graph for a specific test for a specific installer\r
25 function drawGraph(filename,installer,test_unit){\r
26     $.getJSON( filename, function(data) {\r
27     var serie=[];\r
28     index_test=0;\r
29     // find index mapping to the test_unit\r
30     for (var i=0;i<data.dashboard.length;i++)\r
31        if (data.dashboard[i].name==test_unit){index_test=i; break;}\r
32 \r
33     // build the data according to dygraph\r
34     for (i=0;i<data.dashboard[index_test].data_set.length;i++) {\r
35         var d=[];\r
36         result=data.dashboard[index_test].data_set[i];\r
37         d.push(formatDate(result.x));\r
38 \r
39         // push y data if available\r
40         var keys=Object.keys(result);\r
41         for (var y in opnfv_dashboard_ys)\r
42             if ($.inArray(opnfv_dashboard_ys[y], keys)!=-1) d.push(result[opnfv_dashboard_ys[y]]);      \r
43                 serie.push(d);\r
44     };\r
45 \r
46     // sort by date/time\r
47     serie.sort(function(a,b){\r
48         return new Date(a[0]).getTime()-new Date(b[0]).getTime()\r
49     });\r
50 \r
51     // Label management\r
52     var yLabel='';\r
53     if (test_unit.includes('nb'))\r
54         yLabel='number';\r
55     else if (test_unit.includes('duration'))\r
56         yLabel='seconds';\r
57     var labels=[];\r
58     labels.push('time');\r
59     var keys=Object.keys(data.dashboard[index_test].info);\r
60     for (var y in opnfv_dashboard_y_labels)\r
61         if ($.inArray(opnfv_dashboard_y_labels[y], keys)!=-1) labels.push(data.dashboard[index_test].info[opnfv_dashboard_y_labels[y]]);        \r
62 \r
63     // Draw the graph\r
64     g=new Dygraph(\r
65         document.getElementById(installer),\r
66         serie,\r
67         {\r
68             colors:[opnfv_dashboard_graph_color_ok, opnfv_dashboard_graph_color_nok, opnfv_dashboard_graph_color_other],\r
69             fillGraph:true,\r
70             legend:opnfv_dashboard_graph_legend,\r
71             title:installer,\r
72             titleHeight:opnfv_dashboard_graph_title_height,\r
73             ylabel:yLabel,\r
74             labelsDivStyles:{\r
75                 'text-align': opnfv_dashboard_graph_text_align,\r
76                 'background-color': opnfv_dashboard_graph_background_color\r
77             },\r
78             axisLabelColor:opnfv_dashboard_graph_axis_label_color,\r
79             labels:labels,\r
80             highlightSeriesOpts:{strokeWidth:opnfv_dashboard_graph_stroke_width},\r
81             stepPlot:true\r
82         }\r
83     );\r
84 });\r
85 }\r
86 \r
87 // function to generate all the graphs for all installers\r
88 function drawGraphsSerie(project,test,test_unit) {\r
89     for (i=0;i<opnfv_dashboard_installers.length;i++){\r
90         var filename='./'+opnfv_dashboard_file_directory+'/'+project+'/'+opnfv_dashboard_file_prefix+project+'_'+test+'_'+opnfv_dashboard_installers[i]+opnfv_dashboard_file_suffix;\r
91         drawGraph(filename,opnfv_dashboard_installers[i],test_unit);\r
92     }\r
93 }\r
94 \r
95 // generate text and buttons for each test and unit test\r
96 var text_html='';\r
97 for (var i in opnfv_dashboard_projects)\r
98     for (var project in opnfv_dashboard_projects[i])\r
99         for (var test in opnfv_dashboard_projects[i][project]){\r
100             text_html+=test+' ';\r
101             for (var t in  opnfv_dashboard_projects[i][project][test]){\r
102                 test_unit=opnfv_dashboard_projects[i][project][test][t];\r
103                 text_html+='<button onClick="drawGraphsSerie(\''+project+'\',\''+test +'\',\''+test_unit+'\')">'+test_unit+'</button>';\r
104             }\r
105             text_html+='<br>';\r
106         }\r
107 document.getElementById('tests').innerHTML=text_html;\r
108 \r
109 // debug\r
110 console.log(text_html);\r
111 \r
112 // generate a div per installer (to host the graph)\r
113 for (var i in opnfv_dashboard_installers){\r
114     var div_installer='<div class= "chart" id="'+opnfv_dashboard_installers[i]+'"/>'\r
115     var $newdiv=$(div_installer);\r
116     $("body").append($newdiv);\r
117 }\r