[pypy-svn] r71310 - in codespeed/pyspeed: codespeed media/css media/js templates

tobami at codespeak.net tobami at codespeak.net
Thu Feb 18 22:17:45 CET 2010


Author: tobami
Date: Thu Feb 18 22:17:43 2010
New Revision: 71310

Added:
   codespeed/pyspeed/templates/results_table.html
Removed:
   codespeed/pyspeed/templates/result_list.html
Modified:
   codespeed/pyspeed/codespeed/urls.py
   codespeed/pyspeed/codespeed/views.py
   codespeed/pyspeed/media/css/main5.css
   codespeed/pyspeed/media/js/codespeed.js
   codespeed/pyspeed/templates/overview.html
   codespeed/pyspeed/templates/results.html
Log:
use ajax to get table

Modified: codespeed/pyspeed/codespeed/urls.py
==============================================================================
--- codespeed/pyspeed/codespeed/urls.py	(original)
+++ codespeed/pyspeed/codespeed/urls.py	Thu Feb 18 22:17:43 2010
@@ -5,12 +5,6 @@
 from pyspeed.codespeed.models import Result, Revision, Interpreter
 from pyspeed import settings
 
-result_list = {
-    'queryset': Result.objects.order_by('-date'),
-    'template_name': 'result_list.html',
-    'template_object_name': 'result',
-}
-
 def getresults():
     #Function so that results are not cached
     return Result.objects.filter(revision__project=settings.PROJECT_NAME)
@@ -36,7 +30,8 @@
 urlpatterns += patterns('pyspeed.codespeed.views',
     (r'^overview/$', 'overview'),
     (r'^overview/table/$', 'overviewtable'),
-    (r'^results/$', list_detail.object_list, result_list),
+    (r'^results/$', 'results'),
+    (r'^results/table/$', 'resultstable'),
     (r'^revision/$', list_detail.object_list, revision_list),
     # URL interface for adding results
     (r'^result/add/$', 'addresult'),

Modified: codespeed/pyspeed/codespeed/views.py
==============================================================================
--- codespeed/pyspeed/codespeed/views.py	(original)
+++ codespeed/pyspeed/codespeed/views.py	Thu Feb 18 22:17:43 2010
@@ -5,8 +5,15 @@
 from pyspeed import settings
 from time import sleep
 
+def resultstable(request):
+    result_list = Result.objects.order_by('-date')[:200]
+    return render_to_response('results_table.html', locals())
+
+def results(request):
+    return render_to_response('results.html')
+
 def overviewtable(request):
-    #sleep(4)
+    #sleep(2)
     trendconfig = int(request.GET["trend"])
     lastrevisions = Revision.objects.filter(
         project=settings.PROJECT_NAME
@@ -43,19 +50,18 @@
         
         #calculate past average
         average = 0
-        for rev in pastrevisions:
-            past_rev = Result.objects.filter(
-                revision__number=rev.number
-            ).filter(
-                revision__project=settings.PROJECT_NAME
-            ).filter(benchmark=bench)
-            if past_rev.count():
-                average += past_rev[0].value
-            else:
-                average = 0
-                break
+        if len(pastrevisions):
+            for rev in pastrevisions:
+                past_rev = Result.objects.filter(
+                    revision__number=rev.number
+                ).filter(
+                    revision__project=settings.PROJECT_NAME
+                ).filter(benchmark=bench)
+                if past_rev.count():
+                    average += past_rev[0].value
+        else: average = "-"
         trend = 0
-        if average:
+        if average and average != "-":
             average = average / len(pastrevisions)
             trend =  (result - average)*100/average
         
@@ -72,19 +78,26 @@
         })
     
     return render_to_response('overview_table.html', locals())
-    #return HttpResponse("<div>Aquí estoy!<br>Trend="+ str(request.GET["trend"]) +"</div>")
     
 def overview(request):
+    if request.method != 'GET':
+        return HttpResponseNotAllowed('GET')
+    data = request.GET
     trendconfig = 10
     # TODO: list of posible <select> values. choose from nearest
-    #if request.GET.has_key("trend"):
-        #if request.GET["trend"] > 0:
+    #if data.has_key("trend"):
+        #if data["trend"] > 0:
             #trendconfig = int(request.GET["trend"])
 
     interpreters = Interpreter.objects.filter(name__startswith=settings.PROJECT_NAME)
-    lastrevision = Revision.objects.filter(
+    lastrevisions = Revision.objects.filter(
         project=settings.PROJECT_NAME
-    ).order_by('-number')[0].number
+    ).order_by('-number')[:10]
+    selectedrevision = lastrevisions[0].number
+    if data.has_key("revision"):
+        if data["revision"] > 0:
+            # TODO: Create 404 html embeded in the overview
+            selectedrevision = get_object_or_404(Revision, number=data["revision"])
     
     hostlist = Environment.objects.all()
     return render_to_response('overview.html', locals())

Modified: codespeed/pyspeed/media/css/main5.css
==============================================================================
--- codespeed/pyspeed/media/css/main5.css	(original)
+++ codespeed/pyspeed/media/css/main5.css	Thu Feb 18 22:17:43 2010
@@ -5,13 +5,12 @@
 }
 
 h1 { margin: 0; font-style: italic; }
-div#containter { width: 75em; margin-left: auto; margin-right: auto; }
+div#containter { width: 73em; margin-left: auto; margin-right: auto; }
 div#header { width: 100%; margin: 0; margin-bottom: 0.8em; float:left; }
 div#title {
     width: 100%;
     float: left;
     background-color: #EAEAEA; color: #000000;
-    padding-bottom: 6px;
     -moz-border-radius-bottomleft: 12px;
     -moz-border-radius-bottomright: 12px;
     -webkit-border-radius-bottomleft: 12px;
@@ -160,6 +159,7 @@
     border: 1px solid #CDCDCD;
     vertical-align: top;
     text-align: right;
+    white-space: nowrap;
 }
 table.tablesorter tbody tr.odd td {
     background-color:#F0F0F6;
@@ -209,7 +209,7 @@
 table.tablesorter tbody tr td.status-yellow { background-color: #FEE772; }
 table.tablesorter tbody tr.highlight td {
     background-color: #9DADC6 !important;
-    cursor: pointer;
+/*     cursor: pointer; */
 }
 
 /* new clearfix */

Modified: codespeed/pyspeed/media/js/codespeed.js
==============================================================================
--- codespeed/pyspeed/media/js/codespeed.js	(original)
+++ codespeed/pyspeed/media/js/codespeed.js	Thu Feb 18 22:17:43 2010
@@ -1,7 +1 @@
-// $(function() {
-//     $("#navigation ul li").hover(function() {
-//         $(this).addClass('highlight');
-//       }, function() {
-//         $(this).removeClass('highlight');
-//       });
-// });
\ No newline at end of file
+//?
\ No newline at end of file

Modified: codespeed/pyspeed/templates/overview.html
==============================================================================
--- codespeed/pyspeed/templates/overview.html	(original)
+++ codespeed/pyspeed/templates/overview.html	Thu Feb 18 22:17:43 2010
@@ -2,7 +2,7 @@
 {% block script %}
 <script type="text/javascript" src="/media/js/jquery.tablesorter.min.js"></script>
 <script type="text/javascript">
-  var config = {"petardo": 2};
+  var config = new Object();
   
   function updateTable() {
     var tdwidth = parseInt($("#results thead tr").find("th:eq(5)").css("width"));
@@ -42,6 +42,7 @@
   
   function readConfiguration() {
     config["trend"] = $("#trend option:selected").val();
+    config["revision"] = $("#revision option:selected").val();
   }
   
   function refreshContent() {
@@ -55,28 +56,18 @@
     h2 = parseInt($("#content").css("height")) - 16;
     if(h2 < 40) { h2 = 40; }
     h = "height:" + h2;
-//     alert(h);
     h2 = h2/2 + 30;
-//     alert(h + " parsed: " + parseInt(h));
     var ajax_load = '<div style="text-align:center;' + w + ';' + h + 'px;"><p style="line-height:' + h2 + 'px;">loading...</p></div>';
     
     var loadUrl = "table/";
-    $("#content").html(ajax_load).load(loadUrl, $.param(config), function(responseText) { updateTable(); });
-//     alert($("#content").css("height"));
+    $("#content").fadeOut("fast").html(ajax_load).fadeIn("fast").load(loadUrl, $.param(config), function(responseText) { updateTable(); });
   }
   
-  function onSelectChange() {
-    var selected = $("#trend option:selected");     
-    var output = "";
-    if(selected.val() != 0){
-      output = "You Selected " + selected.text();
-    }
-    refreshContent();
-  }
-
   $(function() {
     $("#trend").val({{ trendconfig }});
-    $("#trend").change(onSelectChange);
+    $("#trend").change(refreshContent);
+    $("#revision").val({{ selectedrevision }});
+    $("#revision").change(refreshContent);
     refreshContent();
   });
 </script>
@@ -115,7 +106,12 @@
   <div class="boxhead"><h2>Options</h2></div>
   <div class="boxbody">
   <ul>
-    <li title="Trend since {{ trendconfig }} tested revisions ago">Trend: <select id="trend"><option value="5">5</option><option value="10">10</option><option value="20">20</option></select>
+    <li title="Trend since {{ trendconfig }} tested revisions ago">Trend:
+      <select id="trend">
+        <option value="5">5</option>
+        <option value="10">10</option>
+        <option value="20">20</option>
+      </select>
     </li>
 <!--     <li id="output">{{ trendconfig }}</li> -->
   </ul>
@@ -123,7 +119,11 @@
 </div>
 </div>
 
-<div id="configbar">Results for revision {{ lastrevision }}</div>
+<div id="configbar">Results for revision
+  <select id="revision">{% for rev in lastrevisions %}
+    <option value="{{ rev }}">{{ rev }}</option>{% endfor %}
+  </select>
+</div>
 <div id="content">
 <table class="tablesorter"></table>
 </div>

Modified: codespeed/pyspeed/templates/results.html
==============================================================================
--- codespeed/pyspeed/templates/results.html	(original)
+++ codespeed/pyspeed/templates/results.html	Thu Feb 18 22:17:43 2010
@@ -1,12 +1,56 @@
 {% extends "base.html" %}
+{% block script %}
+<script type="text/javascript" src="/media/js/jquery.tablesorter.min.js"></script>
+<script type="text/javascript">
+  function updateTable() {
+    $("#results").tablesorter({widgets: ['zebra']});
+    $("#results tbody td").hover(function() {
+      $(this).parents('tr').addClass('highlight');
+    }, function() {
+      $(this).parents('tr').removeClass('highlight');
+    });
+  }
+    
+  function refreshContent() {
+//     readConfiguration();
+    $.ajaxSetup ({  
+         cache: false  
+    });
+    
+    //loading text
+    w = "width:" + $("#content").css("width");
+    h2 = parseInt($("#content").css("height")) - 16;
+    if(h2 < 40) { h2 = 40; }
+    h = "height:" + h2;
+    h2 = h2/2 + 30;
+    var ajax_load = '<div style="text-align:center;' + w + ';' + h + 'px;"><p style="line-height:' + h2 + 'px;">loading...</p></div>';
+    
+    var loadUrl = "table/";
+    $("#content").hide();
+    $("#content").html(ajax_load).fadeIn().load(loadUrl, function(responseText) { updateTable(); });
+  }
+  
+  $(function() {
+    refreshContent();
+  });
+</script>
+{% endblock %}
+
+{% block navigation %}
+  <div id="tabs">
+    <ul>
+      <li><a href="/overview/">Overview</a></li>
+      <li><a href="#">Timeline</a></li>
+      <li><a href="#" class="current">Results</a></li>
+    </ul>
+  </div>
+{% endblock %}
+
 {% block body %}
-<p>Results for pypy revision {{ revision }}</p>
-<table>
-  <tr>
-    <th>Benchmark</th><th>Result</th><th>Relative to cpython</th>
-  </tr>
-{% for result in result_list %}  <tr>
-    <td>{{ result.benchmark }}</td><td>{{ result.value }}</td><td></td>
-  </tr>{% endfor %}
-</table>
+<div id="configbar">List of test results. Filter: none.</div>
+<div id="content">
+<table class="tablesorter"></table>
+</div>
+{% endblock %}
+{% block footer %}
 {% endblock %}

Added: codespeed/pyspeed/templates/results_table.html
==============================================================================
--- (empty file)
+++ codespeed/pyspeed/templates/results_table.html	Thu Feb 18 22:17:43 2010
@@ -0,0 +1,11 @@
+<table id="results" class="tablesorter">
+  <thead>
+    <tr><th>Revision</th><th>Interpreter</th><th>Compile options</th><th>Benchmark</th><th>Result</th><th>run date</th></tr>
+  </thead>
+  <tbody>
+{% for result in result_list %}  <tr>
+    <td>{{ result.revision.number }}</td><td>{{ result.interpreter.name }}</td><td>{{ result.interpreter.coptions }}</td><td>{{ result.benchmark }}</td><td>{{ result.value }}</td><td>{{ result.date }}</td>
+  </tr>
+{% endfor %}
+  </tbody>
+</table>
\ No newline at end of file



More information about the Pypy-commit mailing list