Merge "Add export functions to reporting"
[releng.git] / utils / test / reporting / functest / template / index-status-tmpl.html
index 604f2c8..e3c9c5f 100644 (file)
@@ -3,25 +3,73 @@
     <meta charset="utf-8">
     <!-- Bootstrap core CSS -->
     <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" rel="stylesheet">
-    <link href="default.css" rel="stylesheet">
+    <link href="../../../css/default.css" rel="stylesheet">
     <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
     <script type="text/javascript" src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
-    <script type="text/javascript">
-    $(document).ready(function (){
-        $(".btn-more").click(function() {
-            $(this).hide();
-            $(this).parent().find(".panel-default").show();
+    <script type="text/javascript" src="http://d3js.org/d3.v2.min.js"></script>
+    <script type="text/javascript" src="../../../js/gauge.js"></script>
+    <script type="text/javascript" src="../../../js/trend.js"></script>
+    <script>
+    function onDocumentReady() {
+       // Gauge management
+        {% for scenario in scenario_stats.iteritems() -%}
+           var gaugeScenario{{loop.index}} = gauge('#gaugeScenario{{loop.index}}');
+        {%- endfor %}
+       
+       // assign success rate to the gauge
+       function updateReadings() {
+           {% for scenario,iteration in scenario_stats.iteritems() -%}
+               gaugeScenario{{loop.index}}.update({{scenario_results[scenario].getScorePercent()}});
+            {%- endfor %}
+       }
+       updateReadings();                                                                               
+        }
+        
+        // trend line management
+        d3.csv("./scenario_history.txt", function(data) {
+       // ***************************************
+       // Create the trend line
+      {% for scenario,iteration in scenario_stats.iteritems() -%}
+       // for scenario {{scenario}} 
+       // Filter results
+        var trend{{loop.index}} = data.filter(function(row) { 
+            return row["scenario"]=="{{scenario}}" && row["installer"]=="{{installer}}";
+       })
+       // Parse the date 
+        trend{{loop.index}}.forEach(function(d) {
+           d.date = parseDate(d.date);
+           d.score = +d.score
         });
-    })
-    </script>
+        // Draw the trend line
+        var mytrend = trend("#trend_svg{{loop.index}}",trend{{loop.index}})
+        // ****************************************
+        {%- endfor %}
+    });            
+    if ( !window.isLoaded ) {
+        window.addEventListener("load", function() {
+                       onDocumentReady();
+        }, false);
+    } else {
+       onDocumentReady();
+    }
+</script>
+<script type="text/javascript">
+$(document).ready(function (){
+    $(".btn-more").click(function() {
+       $(this).hide();
+       $(this).parent().find(".panel-default").show();
+    });
+})
+</script>
+    
   </head>
     <body>
     <div class="container">
       <div class="masthead">
-        <h3 class="text-muted">Functest status page ({{version}})</h3>
+        <h3 class="text-muted">Functest status page ({{version}}, {{date}})</h3>
         <nav>
           <ul class="nav nav-justified">
-            <li class="active"><a href="index.html">Home</a></li>
+            <li class="active"><a href="http://testresults.opnfv.org/reporting/index.html">Home</a></li>
             <li><a href="index-status-apex.html">Apex</a></li>
             <li><a href="index-status-compass.html">Compass</a></li>
             <li><a href="index-status-fuel.html">Fuel</a></li>
             <div class="panel-heading"><h4><b>List of last scenarios ({{version}}) run over the last {{period}} days </b></h4></div>
                 <table class="table">
                     <tr>
-                        <th width="80%">Scenario</th>
-                        <th width="20%">Iteration</th>
+                        <th width="40%">Scenario</th>
+                        <th width="20%">Status</th>
+                        <th width="20%">Trend</th>
+                        <th width="10%">Score</th>
+                        <th width="10%">Iteration</th>
                     </tr>
                         {% for scenario,iteration in scenario_stats.iteritems() -%}
                             <tr class="tr-ok">
-                                <td>{{scenario}}</td>
+                                <td><a href={{scenario_results[scenario].getUrlLastRun()}}>{{scenario}}</a></td>
+                                <td><div id="gaugeScenario{{loop.index}}"></div></td>
+                                <td><div id="trend_svg{{loop.index}}"></div></td>
+                                <td>{{scenario_results[scenario].getScore()}}</td>
                                 <td>{{iteration}}</td>
                             </tr>
                             {%- endfor %}
         </div>
 
 
-
         {% for scenario, iteration in scenario_stats.iteritems() -%}
         <div class="scenario-part">
             <div class="page-header">
                     <table class="table">
                         <tr>
                             {% for test in items[scenario] -%}
-                            <th>{{test.getName() }}</th>
+                            <th>
+                            {% if test.getCriteria() > -1 -%}
+                            {{test.getDisplayName() }}
+                            {%- endif %}
+                            {% if test.getTier() > 3 -%}
+                            *
+                            {%- endif %}
+                             </th>
                             {%- endfor %}
                         </tr>
                         <tr class="tr-weather-weather">
                             {% for test in items[scenario] -%}
-                            {% if test.isRunnable is sameas false -%}
-                                <td>N.R</td>
-                            {% elif test.getCriteria() > 2 -%}
+                            {% if test.getCriteria() > 2 -%}
                                 <td><img src="../../img/weather-clear.png"></td>
                             {%- elif test.getCriteria() > 1 -%}
                                 <td><img src="../../img/weather-few-clouds.png"></td>
                             {%- elif test.getCriteria() > 0 -%}
                                 <td><img src="../../img/weather-overcast.png"></td>
-                            {%- else -%}
+                            {%- elif test.getCriteria() > -1 -%}
                                 <td><img src="../../img/weather-storm.png"></td>
                             {%- endif %}
                             {%- endfor %}
                 </div>
         </div>
         {%- endfor %}
+    see <a href="https://wiki.opnfv.org/pages/viewpage.action?pageId=6828617">Functest scoring wiki page</a> for details on scenario scoring
+     <div> <br>
+    <a href="./status-{{installer}}.pdf" class="myButtonPdf">Export to PDF</a>   <a href="./scenario_history_{{installer}}.txt" class="myButtonCSV">Export to CSV</a>
+    </div>
     </div>
     <div class="col-md-1"></div>
 </div>