Initiate packetization of Testing reporting
[releng.git] / utils / test / reporting / reporting / functest / template / index-status-tmpl.html
1  <html>
2   <head>
3     <meta charset="utf-8">
4     <!-- Bootstrap core CSS -->
5     <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" rel="stylesheet">
6     <link href="../../css/default.css" rel="stylesheet">
7     <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
8     <script type="text/javascript" src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
9     <script type="text/javascript" src="http://d3js.org/d3.v2.min.js"></script>
10     <script type="text/javascript" src="../../js/gauge.js"></script>
11     <script type="text/javascript" src="../../js/trend.js"></script>
12     <script>
13     function onDocumentReady() {
14         // Gauge management
15         {% for scenario in scenario_stats.iteritems() -%}
16             var gaugeScenario{{loop.index}} = gauge('#gaugeScenario{{loop.index}}');
17         {%- endfor %}
18
19         // assign success rate to the gauge
20         function updateReadings() {
21             {% for scenario,iteration in scenario_stats.iteritems() -%}
22                 gaugeScenario{{loop.index}}.update({{scenario_results[scenario].getScorePercent()}});
23              {%- endfor %}
24         }
25         updateReadings();
26         }
27
28         // trend line management
29         d3.csv("./scenario_history.txt", function(data) {
30        // ***************************************
31        // Create the trend line
32       {% for scenario,iteration in scenario_stats.iteritems() -%}
33        // for scenario {{scenario}}
34        // Filter results
35         var trend{{loop.index}} = data.filter(function(row) {
36              return row["scenario"]=="{{scenario}}" && row["installer"]=="{{installer}}";
37         })
38        // Parse the date
39         trend{{loop.index}}.forEach(function(d) {
40             d.date = parseDate(d.date);
41             d.score = +d.score
42         });
43         // Draw the trend line
44         var mytrend = trend("#trend_svg{{loop.index}}",trend{{loop.index}})
45         // ****************************************
46         {%- endfor %}
47     });
48     if ( !window.isLoaded ) {
49         window.addEventListener("load", function() {
50                         onDocumentReady();
51         }, false);
52     } else {
53         onDocumentReady();
54     }
55 </script>
56 <script type="text/javascript">
57 $(document).ready(function (){
58     $(".btn-more").click(function() {
59         $(this).hide();
60         $(this).parent().find(".panel-default").show();
61     });
62 })
63 </script>
64
65   </head>
66     <body>
67     <div class="container">
68       <div class="masthead">
69         <h3 class="text-muted">Functest status page ({{version}}, {{date}})</h3>
70         <nav>
71           <ul class="nav nav-justified">
72             <li class="active"><a href="../../index.html">Home</a></li>
73             <li><a href="status-apex.html">Apex</a></li>
74             <li><a href="status-compass.html">Compass</a></li>
75             <li><a href="status-fuel@x86.html">fuel@x86</a></li>
76             <li><a href="status-fuel@aarch64.html">fuel@aarch64</a></li>
77             <li><a href="status-joid.html">Joid</a></li>
78           </ul>
79         </nav>
80       </div>
81 <div class="row">
82     <div class="col-md-1"></div>
83     <div class="col-md-10">
84         <div class="page-header">
85             <h2>{{installer}}</h2>
86         </div>
87
88         <div class="scenario-overview">
89             <div class="panel-heading"><h4><b>List of last scenarios ({{version}}) run over the last {{period}} days </b></h4></div>
90                 <table class="table">
91                     <tr>
92                         <th width="40%">Scenario</th>
93                         <th width="20%">Status</th>
94                         <th width="20%">Trend</th>
95                         <th width="10%">Score</th>
96                         <th width="10%">Iteration</th>
97                     </tr>
98                         {% for scenario,iteration in scenario_stats.iteritems() -%}
99                             <tr class="tr-ok">
100                                 <td><a href={{scenario_results[scenario].getUrlLastRun()}}>{{scenario}}</a></td>
101                                 <td><div id="gaugeScenario{{loop.index}}"></div></td>
102                                 <td><div id="trend_svg{{loop.index}}"></div></td>
103                                 <td>{{scenario_results[scenario].getScore()}}</td>
104                                 <td>{{iteration}}</td>
105                             </tr>
106                             {%- endfor %}
107                         </table>
108         </div>
109
110
111         {% for scenario, iteration in scenario_stats.iteritems() -%}
112         <div class="scenario-part">
113             <div class="page-header">
114                 <h3><span class="glyphicon glyphicon-chevron-right"> <b>{{scenario}}</b></h3>
115             </div>
116                     <div class="panel panel-default">
117                     <div class="panel-heading">
118                         <span class="panel-header-item">
119                         </span>
120                     </div>
121                     <table class="table">
122                         <tr>
123                             {% for test in items[scenario] -%}
124                             <th>
125                             {% if test.getCriteria() > -1 -%}
126                             {{test.getDisplayName() }}
127                             {%- endif %}
128                             {% if test.getTier() > 3 -%}
129                             *
130                             {%- endif %}
131                              </th>
132                             {%- endfor %}
133                         </tr>
134                         <tr class="tr-weather-weather">
135                             {% for test in items[scenario] -%}
136                             {% if test.getCriteria() > 2 -%}
137                                 <td><img src="../../img/weather-clear.png"></td>
138                             {%- elif test.getCriteria() > 1 -%}
139                                 <td><img src="../../img/weather-few-clouds.png"></td>
140                             {%- elif test.getCriteria() > 0 -%}
141                                 <td><img src="../../img/weather-overcast.png"></td>
142                             {%- elif test.getCriteria() > -1 -%}
143                                 <td><img src="../../img/weather-storm.png"></td>
144                             {%- endif %}
145                             {%- endfor %}
146                         </tr>
147                     </table>
148                 </div>
149         </div>
150         {%- endfor %}
151     see <a href="https://wiki.opnfv.org/pages/viewpage.action?pageId=6828617">Functest scoring wiki page</a> for details on scenario scoring
152      <div> <br>
153     <a href="./status-{{installer}}.pdf" class="myButtonPdf">Export to PDF</a>   <a href="./scenario_history_{{installer}}.txt" class="myButtonCSV">Export to CSV</a>
154     </div>
155     </div>
156     <div class="col-md-1"></div>
157 </div>