74d410e96dd454ecd9cb3691cbeec982e26b25ef
[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-daisy.html">Daisy</a></li>
76             <li><a href="status-fuel@x86.html">fuel@x86</a></li>
77             <li><a href="status-fuel@aarch64.html">fuel@aarch64</a></li>
78             <li><a href="status-joid.html">Joid</a></li>
79           </ul>
80         </nav>
81       </div>
82 <div class="row">
83     <div class="col-md-1"></div>
84     <div class="col-md-10">
85         <div class="page-header">
86             <h2>{{installer}}</h2>
87         </div>
88
89         <div class="scenario-overview">
90             <div class="panel-heading"><h4><b>List of last scenarios ({{version}}) run over the last {{period}} days </b></h4></div>
91                 <table class="table">
92                     <tr>
93                         <th width="40%">Scenario</th>
94                         <th width="20%">Status</th>
95                         <th width="20%">Trend</th>
96                         <th width="10%">Score</th>
97                         <th width="10%">Iteration</th>
98                     </tr>
99                         {% for scenario,iteration in scenario_stats.iteritems() -%}
100                             <tr class="tr-ok">
101                                 <td><a href={{scenario_results[scenario].getUrlLastRun()}}>{{scenario}}</a></td>
102                                 <td><div id="gaugeScenario{{loop.index}}"></div></td>
103                                 <td><div id="trend_svg{{loop.index}}"></div></td>
104                                 <td>{{scenario_results[scenario].getScore()}}</td>
105                                 <td>{{iteration}}</td>
106                             </tr>
107                             {%- endfor %}
108                         </table>
109         </div>
110
111
112         {% for scenario, iteration in scenario_stats.iteritems() -%}
113         <div class="scenario-part">
114             <div class="page-header">
115                 <h3><span class="glyphicon glyphicon-chevron-right"> <b>{{scenario}}</b></h3>
116             </div>
117                     <div class="panel panel-default">
118                     <div class="panel-heading">
119                         <span class="panel-header-item">
120                         </span>
121                     </div>
122                     <table class="table">
123                         <tr>
124                             {% for test in items[scenario] -%}
125                             <th>
126                             {% if test.getCriteria() > -1 -%}
127                             {{test.getDisplayName() }}
128                             {%- endif %}
129                             {% if test.getTier() > 3 -%}
130                             *
131                             {%- endif %}
132                              </th>
133                             {%- endfor %}
134                         </tr>
135                         <tr class="tr-weather-weather">
136                             {% for test in items[scenario] -%}
137                             {% if test.getCriteria() > 2 -%}
138                                 <td><img src="../../img/weather-clear.png"></td>
139                             {%- elif test.getCriteria() > 1 -%}
140                                 <td><img src="../../img/weather-few-clouds.png"></td>
141                             {%- elif test.getCriteria() > 0 -%}
142                                 <td><img src="../../img/weather-overcast.png"></td>
143                             {%- elif test.getCriteria() > -1 -%}
144                                 <td><img src="../../img/weather-storm.png"></td>
145                             {%- endif %}
146                             {%- endfor %}
147                         </tr>
148                     </table>
149                 </div>
150         </div>
151         {%- endfor %}
152     see <a href="https://wiki.opnfv.org/pages/viewpage.action?pageId=6828617">Functest scoring wiki page</a> for details on scenario scoring
153      <div> <br>
154     <a href="./status-{{installer}}.pdf" class="myButtonPdf">Export to PDF</a>   <a href="./scenario_history_{{installer}}.txt" class="myButtonCSV">Export to CSV</a>
155     </div>
156     </div>
157     <div class="col-md-1"></div>
158 </div>