Skip to content
Browse files

Merge pull request #107 from squiddy/js

Separate JS from Templates #2
  • Loading branch information...
2 parents 85239bf + 86d952c commit 5ef6809f505a2e270862df522c13dd887798e1dc @tobami committed Jan 29, 2012
View
18 codespeed/static/js/changes.js
@@ -1,3 +1,8 @@
+var Changes = (function(window){
+
+// Localize globals
+var TIMELINE_URL = window.TIMELINE_URL, getLoadText = window.getLoadText;
+
var currentproject, changethres, trendthres, projectmatrix, revisionboxes = {};
function getConfiguration() {
@@ -122,4 +127,17 @@ function init(defaults) {
$("#revision").html(revisionboxes[defaults.project]);
$("#revision").val(defaults.revision);
$("#revision").change(refreshContent);
+
+ $("#permalink").click(function() {
+ window.location = "?" + $.param(getConfiguration());
+ });
+
+ refreshContent();
}
+
+return {
+ init: init,
+ config: config
+};
+
+})(window);
View
24 codespeed/static/js/codespeed.js
@@ -1,8 +1,3 @@
-
-function permalink() {
- window.location="?" + $.param(getConfiguration());
-}
-
function readCheckbox(el) {
/* Builds a string that holds all checked values in an input form */
var config = "";
@@ -30,3 +25,22 @@ function getLoadText(text, h, showloader) {
loadtext += '</p></div>';
return loadtext;
}
+
+$(function() {
+ // Check all and none links
+ $('.checkall').each(function() {
+ var inputs = $(this).parent().children("li").children("input");
+ $(this).click(function() {
+ inputs.attr("checked", true);
+ return false;
+ });
+ });
+
+ $('.uncheckall').each(function() {
+ var inputs = $(this).parent().children("li").children("input");
+ $(this).click(function() {
+ inputs.attr("checked", false);
+ return false;
+ });
+ });
+});
View
55 codespeed/static/js/comparison.js
@@ -1,3 +1,10 @@
+var Comparison = (function(window){
+
+// Localize globals
+var readCheckbox = window.readCheckbox, getLoadText = window.getLoadText;
+
+var compdata, bench_units;
+
function getConfiguration() {
return {
exe: readCheckbox("input[name='executables']:checked"),
@@ -375,3 +382,51 @@ function renderComparisonPlot(plotid, benchmarks, exes, enviros, baseline, chart
$("#" + plotid).css('height', h);
$.jqplot(plotid, plotdata, plotoptions);
}
+
+function init(defaults) {
+ bench_units = defaults.bench_units;
+
+ // Set default values
+ $("#chart_type").val(defaults.chart_type);
+ $("#baseline").val(defaults.baseline);
+ $("#direction").attr("checked", defaults.direction === "True");
+
+ var sel = $("input[name='executables']");
+ $.each(defaults.executables, function(i, exe) {
+ sel.filter("[value='" + exe + "']").attr('checked', true);
+ });
+
+ sel = $("input[name='benchmarks']");
+ $.each(defaults.benchmarks, function(i, bench) {
+ sel.filter("[value='" + bench + "']").attr('checked', true);
+ });
+
+ sel = $("input[name='environments']");
+ $.each(defaults.environments, function(i, env) {
+ sel.filter("[value='" + env + "']").attr('checked', true);
+ });
+
+ $("#chart_type, #baseline, #direction, input[name='executables']," +
+ "input[name='benchmarks'], input[name='environments']").change(refreshContent);
+
+ $('.checkall, .uncheckall').click(refreshContent);
+
+ $.ajaxSetup ({
+ cache: false
+ });
+
+ // Get comparison data
+ var h = $("#content").height();//get height for loading text
+ $("#cplot").html(getLoadText("Loading...", h, true));
+ $.getJSON("json/", savedata);
+
+ $("#permalink").click(function() {
+ window.location = "?" + $.param(getConfiguration());
+ });
+}
+
+return {
+ init: init
+};
+
+})(window);
View
89 codespeed/static/js/timeline.js
@@ -1,3 +1,14 @@
+var Timeline = (function(window){
+
+// Localize globals
+var CHANGES_URL = window.CHANGES_URL, readCheckbox = window.readCheckbox,
+ getLoadText = window.getLoadText;
+
+var seriesindex = [],
+ baselineColor = "#d8b83f",
+ seriesColors = ["#4bb2c5", "#EAA228", "#579575", "#953579", "#839557", "#ff5800", "#958c12", "#4b5de4", "#0085cc"],
+ defaults;
+
function setExeColors() {
// Set color data attribute for all executables
$("#executable > div.boxbody > ul > ul > li > input").each(function(index) {
@@ -36,7 +47,7 @@ function getConfiguration() {
}
function permalinkToChanges(commitid, executableid, environment) {
- window.location=changes_url + "?rev=" + commitid + "&" + "exe=" + executableid + "&env=" + environment;
+ window.location=CHANGES_URL + "?rev=" + commitid + "&" + "exe=" + executableid + "&env=" + environment;
}
function OnMarkerClickHandler(ev, gridpos, datapos, neighbor, plot) {
@@ -248,3 +259,79 @@ function refreshSite(event) {
setValuesOfInputFields(event);
refreshContent();
}
+
+function setValuesOfInputFields(event) {
+ // Either set the default value, or the one parsed from the url
+
+ // Reset all checkboxes
+ $("input:checkbox").removeAttr('checked');
+
+ $("#revisions").val(valueOrDefault(event.parameters.revs, defaults.revisions));
+ $("#baseline").val(valueOrDefault(event.parameters.base, defaults.baseline));
+
+ // Set default selected executables
+ var executables = event.parameters.exe ? event.parameters.exe.split(',') : defaults.executables;
+ var sel = $("input[name='executable']");
+
+ $.each(executables, function(i, exe) {
+ sel.filter("[value='" + exe + "']").attr('checked', true);
+ });
+
+ // Set default selected branches
+ var branches = event.parameters.bran ? event.parameters.bran.split(',') : defaults.branches;
+ sel = $("input[name='branch']");
+
+ $.each(branches, function(i, b) {
+ sel.filter("[value='" + b + "']").attr('checked', true);
+ });
+
+ // Set default selected benchmark
+ var benchmark = valueOrDefault(event.parameters.ben, defaults.benchmark);
+ $("input:radio[name='benchmark']")
+ .filter("[value='" + benchmark + "']")
+ .attr('checked', true);
+
+ // Set default selected environment
+ var environment = valueOrDefault(event.parameters.env, defaults.environment);
+ $("input:radio[name='environments']")
+ .filter("[value='" + environment + "']")
+ .attr('checked', true);
+
+ // Add color legend to executable list
+ $("#executable div.boxbody > ul > ul > li > input").each(function() {
+ $(this).parent()
+ .find("div.seriescolor")
+ .css("background-color", getColor($(this).attr("id").slice(10)));
+ });
+
+ $("#baselinecolor").css("background-color", baselineColor);
+ $("#equidistant").attr('checked', valueOrDefault(event.parameters.equid, defaults.equidistant === "on"));
+}
+
+function init(def) {
+ defaults = def;
+
+ $.ajaxSetup ({
+ cache: false
+ });
+
+ // Even listener for clicks on plot markers
+ $.jqplot.eventListenerHooks.push(['jqplotClick', OnMarkerClickHandler]);
+
+ // Init and change handlers are set to the refreshContent handler
+ $.address.init(initializeSite).change(refreshSite);
+
+ $('.checkall, .uncheckall').click(refreshContent);
+
+ setExeColors();
+
+ $("#permalink").click(function() {
+ window.location = "?" + $.param(getConfiguration());
+ });
+}
+
+return {
+ init: init
+};
+
+})(window);
View
57 codespeed/templates/codespeed/changes.html
@@ -1,34 +1,5 @@
{% extends "base.html" %}
{% block title %}{{ block.super }}: Changes{% endblock %}
-{% block extra_head %}
-{{ block.super }}
-<script type="text/javascript" src="{{ STATIC_URL }}js/jquery.tablesorter.min.js"></script>
-<script type="text/javascript" src="{{ STATIC_URL }}js/changes.js"></script>
-<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1/jquery-ui.min.js"></script>
-<script type="text/javascript">
- var TIMELINE_URL = "{% url timeline %}";
-
- $(function() {
- // Configure defaults
- init({
- project: "{{ defaultexecutable.project }}",
- executable: "{{ defaultexecutable.id }}",
- environment: "{{ defaultenvironment.id }}",
- revision: "{{ selectedrevision.commitid }}",
- trend: "{{ defaulttrend }}",
- projectmatrix: eval({{ projectmatrix|safe }}),
- revisionlists: eval({{ revisionlists|safe }})
- });
-
- config({
- changethres: {{ defaultchangethres }},
- trendthres: {{ defaulttrendthres }}
- });
-
- refreshContent();
- });
-</script>
-{% endblock %}
{% block navigation %}
{{ block.super }}
@@ -83,9 +54,35 @@
<div id="configbar">
<span class="options">Results for revision <select id="revision"></select></span>
- <a id="permalink" href="javascript:permalink();">Permalink</a>
+ <a id="permalink" href="#">Permalink</a>
</div>
<div id="content" class="clearfix">
<div id="contentwrap"></div>
</div>
{% endblock %}
+
+{% block extra_body %}
+{{ block.super }}
+<script type="text/javascript" src="{{ STATIC_URL }}js/jquery.tablesorter.min.js"></script>
+<script type="text/javascript" src="{{ STATIC_URL }}js/changes.js"></script>
+<script type="text/javascript">
+ var TIMELINE_URL = "{% url timeline %}";
+
+ $(function() {
+ Changes.config({
+ changethres: {{ defaultchangethres }},
+ trendthres: {{ defaulttrendthres }}
+ });
+
+ Changes.init({
+ project: "{{ defaultexecutable.project }}",
+ executable: "{{ defaultexecutable.id }}",
+ environment: "{{ defaultenvironment.id }}",
+ revision: "{{ selectedrevision.commitid }}",
+ trend: "{{ defaulttrend }}",
+ projectmatrix: eval({{ projectmatrix|safe }}),
+ revisionlists: eval({{ revisionlists|safe }})
+ });
+ });
+</script>
+{% endblock %}
View
102 codespeed/templates/codespeed/comparison.html
@@ -1,81 +1,11 @@
{% extends "base.html" %}
{% block title %}{{ block.super }}: Comparison{% endblock %}
+
{% block extra_head %}
{{ block.super }}
-<!--[if IE]><script language="javascript" type="text/javascript" src="{{ STATIC_URL }}js/jqplot/excanvas.min.js"></script><![endif]-->
<link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}js/jqplot/jquery.jqplot.min.css" />
-<script type="text/javascript" src="{{ STATIC_URL }}js/jqplot/jquery.jqplot.min.js"></script>
-<script type="text/javascript" src="{{ STATIC_URL }}js/jqplot/jqplot.barRenderer.min.js"></script>
-<script type="text/javascript" src="{{ STATIC_URL }}js/jqplot/jqplot.categoryAxisRenderer.min.js"></script>
-<script type="text/javascript" src="{{ STATIC_URL }}js/jqplot/jqplot.canvasTextRenderer.min.js"></script>
-<script type="text/javascript" src="{{ STATIC_URL }}js/jqplot/jqplot.canvasAxisTickRenderer.min.js"></script>
-<script type="text/javascript" src="{{ STATIC_URL }}js/jqplot/jqplot.canvasAxisLabelRenderer.min.js"></script>
-<script type="text/javascript" src="{{ STATIC_URL }}js/comparison.js"></script>
-
-<script type="text/javascript">
- var compdata = new Object();
- var defaultbase = "";
- var bench_units = eval({{ bench_units|safe }});
- var plotheight = 10;//Initial height
-
- $(function() {
- $.ajaxSetup ({
- cache: false
- });
-
- //reset all checkboxes
- $("input:checkbox").removeAttr('checked');
-
- //set default chart type
- $("#chart_type").val("{{ selectedchart }}");
- $("#chart_type").change(refreshContent);
-
- $("#baseline").val("{{ selectedbaseline }}");
- $("#baseline").change(refreshContent);
-
- {% if selecteddirection %}$("input[name=direction]").attr('checked', true);{% endif %}
- $("#direction").change(refreshContent);
-
- //set default selected executables
- {% for checkedexecutable in checkedexecutables %}
- $("input[name='executables']").filter('[value="{{ checkedexecutable }}"]').attr('checked', true);{% endfor %}
- $("input[name='executables']").change(refreshContent);
-
- //set default selected benchmarks
- {% for checkedbenchmark in checkedbenchmarks %}
- $("input:checkbox[name='benchmarks']").filter('[value="{{ checkedbenchmark.id }}"]').attr('checked', true);{% endfor %}
- $("input[name='benchmarks']").change(refreshContent);
-
- //set default selected environments
- {% for checkedenv in checkedenviros %}
- $("input:checkbox[name='environments']").filter('[value="{{ checkedenv.id }}"]').attr('checked', true);{% endfor %}
- $("input[name='environments']").change(refreshContent);
-
- // Check all and none links
- $('.checkall').click(function() {
- $(this).parent().children("li").children("input").each(function() {
- $(this).attr('checked', true);
- });
- refreshContent();
- return false;
- });
-
- $('.uncheckall').click(function() {
- $(this).parent().children("li").children("input").each(function() {
- $(this).attr('checked', false);
- });
- refreshContent();
- return false;
- });
-
- var plotheight = $("#cplot").height();
- // Get comparison data
- var h = $("#content").height();//get height for loading text
- $("#cplot").html(getLoadText("Loading...", h, true));
- $.getJSON("json/", savedata);
- });
-</script>
{% endblock %}
+
{% block navigation %}
{{ block.super }}
{% endblock %}
@@ -140,9 +70,35 @@
<label for="direction">horizontal</label>
<input id="direction" type="checkbox" name="direction" value="horizontal"/>
</span>
- <a id="permalink" href="javascript:permalink();">Permalink</a>
+ <a id="permalink" href="#">Permalink</a>
</div>
<div id="content" class="clearfix">
<div id="plotwrapper"></div>
</div>
{% endblock %}
+
+{% block extra_body %}
+{{ block.super }}
+<!--[if lt IE 9]><script language="javascript" type="text/javascript" src="{{ STATIC_URL }}js/jqplot/excanvas.min.js"></script><![endif]-->
+<script type="text/javascript" src="{{ STATIC_URL }}js/jqplot/jquery.jqplot.min.js"></script>
+<script type="text/javascript" src="{{ STATIC_URL }}js/jqplot/jqplot.barRenderer.min.js"></script>
+<script type="text/javascript" src="{{ STATIC_URL }}js/jqplot/jqplot.categoryAxisRenderer.min.js"></script>
+<script type="text/javascript" src="{{ STATIC_URL }}js/jqplot/jqplot.canvasTextRenderer.min.js"></script>
+<script type="text/javascript" src="{{ STATIC_URL }}js/jqplot/jqplot.canvasAxisTickRenderer.min.js"></script>
+<script type="text/javascript" src="{{ STATIC_URL }}js/jqplot/jqplot.canvasAxisLabelRenderer.min.js"></script>
+<script type="text/javascript" src="{{ STATIC_URL }}js/comparison.js"></script>
+
+<script type="text/javascript">
+ $(function() {
+ Comparison.init({
+ chart_type: "{{ selectedchart }}",
+ baseline: "{{ selectedbaseline }}",
+ direction: "{{ selecteddirection }}",
+ executables: [{% for e in checkedexecutables %}"{{ e }}",{% endfor %}],
+ benchmarks: [{% for b in checkedbenchmarks %}{{ b.id }},{% endfor %}],
+ environments: [{% for e in checkedenviros %}{{ e.id }},{% endfor %}],
+ bench_units: eval({{ bench_units|safe }})
+ });
+ });
+</script>
+{% endblock %}
View
145 codespeed/templates/codespeed/timeline.html
@@ -1,116 +1,8 @@
{% extends "base.html" %}
{% block title %}{{ block.super }}: Timeline{% endblock %}
-{% block extra_head %}
-{{ block.super }}
-<!--[if lt IE 9]><script language="javascript" type="text/javascript" src="{{ STATIC_URL }}js/jqplot/excanvas.min.js"></script><![endif]-->
-<link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}js/jqplot/jquery.jqplot.min.css" />
-<script type="text/javascript" src="{{ STATIC_URL }}js/jquery.address-1.4.min.js?autoUpdate=0"></script>
-<script type="text/javascript" src="{{ STATIC_URL }}js/jqplot/jquery.jqplot.min.js"></script>
-<script type="text/javascript" src="{{ STATIC_URL }}js/jqplot/jqplot.cursor.min.js"></script>
-<script type="text/javascript" src="{{ STATIC_URL }}js/jqplot/jqplot.highlighter.min.js"></script>
-<script type="text/javascript" src="{{ STATIC_URL }}js/jqplot/jqplot.dateAxisRenderer.min.js"></script>
-<script type="text/javascript" src="{{ STATIC_URL }}js/jqplot/jqplot.categoryAxisRenderer.min.js"></script>
-<script type="text/javascript" src="{{ STATIC_URL }}js/jqplot/jqplot.canvasTextRenderer.min.js"></script>
-<script type="text/javascript" src="{{ STATIC_URL }}js/jqplot/jqplot.canvasAxisLabelRenderer.min.js"></script>
-<script type="text/javascript" src="{{ STATIC_URL }}js/timeline.js"></script>
-
-<script type="text/javascript">
- var seriesindex = [];
- var baselineColor = "#d8b83f";
- var seriesColors = ["#4bb2c5", "#EAA228", "#579575", "#953579", "#839557", "#ff5800", "#958c12", "#4b5de4", "#0085cc"];
-
- var changes_url = "{% url changes %}";
-
- function setValuesOfInputFields(event) {
- // Either set the default value, or the one parsed from the url
-
- //Set default amount of revisions shown
- $("#revisions").val(valueOrDefault(event.parameters.revs, {{ defaultlast }}));
-
- //Reset all checkboxes
- $("input:checkbox").removeAttr('checked');
-
- //Set default selected executables
- $("#baseline").val(valueOrDefault(event.parameters.base, "{{ defaultbaseline }}"));
-
- if (event.parameters.exe) {
- var executable_ids = event.parameters.exe.split(',');
- for (var exec in executable_ids) {
- exec = executable_ids[exec];
- $("input[name='executable']").filter('[value='+exec+']').attr('checked', true);
- }
- }
- else {
- {% for checkedexecutable in checkedexecutables %}
- $("input[name='executable']").filter('[value={{ checkedexecutable.id }}]').attr('checked', true);
- {% endfor %}
- }
-
- if (event.parameters.bran) {
- var branch_ids = event.parameters.bran.split(',');
- for (var bran in branch_ids) {
- var branch = branch_ids[bran];
- $("input[name='branch']").filter('[value='+branch+']').attr('checked', true);
- }
- }
- else {
- {% for branch in branch_list %}
- $("input[name='branch']").filter('[value={{ branch }}]').attr('checked', true);
- {% endfor %}
- }
-
- //Set default selected benchmark
- $("input:radio[name='benchmark']")
- .filter('[value=\"' + valueOrDefault(event.parameters.ben,
- '{{ defaultbenchmark }}') + '\"]')
- .attr('checked', true);
-
- //Set default selected environment
- $("input:radio[name='environments']")
- .filter('[value=' + valueOrDefault(event.parameters.env,
- '{{ defaultenvironment.id }}') + ']')
- .attr('checked', true);
-
- //Add color legend to executable list
- $("#executable div.boxbody > ul > ul > li > input").each(function() {
- $(this).parent()
- .find("div.seriescolor")
- .css("background-color", getColor($(this).attr("id").slice(10)));
- });
- $("#baselinecolor").css("background-color", baselineColor);
- $("#equidistant").attr('checked', valueOrDefault(event.parameters.equid, '{{ defaultequid }}') == "on");
- }
-
- $(function() {
- $.ajaxSetup ({
- cache: false
- });
-
- // Even listener for clicks on plot markers
- $.jqplot.eventListenerHooks.push(['jqplotClick', OnMarkerClickHandler]);
- // Init and change handlers are set to the refreshContent handler
- $.address.init(initializeSite).change(refreshSite);
-
- // Check all and none links
- $('.checkall').click(function() {
- $(this).parent().children("li").children("input").each(function() {
- $(this).attr('checked', true);
- });
- refreshContent();
- return false;
- });
-
- $('.uncheckall').click(function() {
- $(this).parent().children("li").children("input").each(function() {
- $(this).attr('checked', false);
- });
- refreshContent();
- return false;
- });
- setExeColors();
- });
-</script>
+{% block extra_head %}
+ <link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}js/jqplot/jquery.jqplot.min.css" />
{% endblock %}
{% block navigation %}
@@ -190,10 +82,41 @@
<input id="equidistant" name="equidistant" type="checkbox" />
<label for="equidistant">Equidistant</label>
</span>
- <a id="permalink" href="javascript:permalink();">Permalink</a>
+ <a id="permalink" href="#">Permalink</a>
</div>
<div id="content" class="clearfix">
<div id="plotgrid"></div>
<div id="plotdescription"></div>
</div>
{% endblock %}
+
+{% block extra_body %}
+{{ block.super }}
+<!--[if lt IE 9]><script language="javascript" type="text/javascript" src="{{ STATIC_URL }}js/jqplot/excanvas.min.js"></script><![endif]-->
+<script type="text/javascript" src="{{ STATIC_URL }}js/jquery.address-1.4.min.js?autoUpdate=0"></script>
+<script type="text/javascript" src="{{ STATIC_URL }}js/jqplot/jquery.jqplot.min.js"></script>
+<script type="text/javascript" src="{{ STATIC_URL }}js/jqplot/jqplot.cursor.min.js"></script>
+<script type="text/javascript" src="{{ STATIC_URL }}js/jqplot/jqplot.highlighter.min.js"></script>
+<script type="text/javascript" src="{{ STATIC_URL }}js/jqplot/jqplot.dateAxisRenderer.min.js"></script>
+<script type="text/javascript" src="{{ STATIC_URL }}js/jqplot/jqplot.categoryAxisRenderer.min.js"></script>
+<script type="text/javascript" src="{{ STATIC_URL }}js/jqplot/jqplot.canvasTextRenderer.min.js"></script>
+<script type="text/javascript" src="{{ STATIC_URL }}js/jqplot/jqplot.canvasAxisLabelRenderer.min.js"></script>
+<script type="text/javascript" src="{{ STATIC_URL }}js/timeline.js"></script>
+
+<script type="text/javascript">
+ var CHANGES_URL = "{% url changes %}";
+
+ $(function() {
+ Timeline.init({
+ revisions: {{ defaultlast }},
+ baseline: "{{ defaultbaseline }}",
+ executables: [{% for exe in checkedexecutables %}{{ exe.id }}, {% endfor %}],
+ branches: [{% for b in branch_list %}"{{ branch }}", {% endfor %}],
+ benchmark: "{{ defaultbenchmark }}",
+ environment: {{ defaultenvironment.id }},
+ equidistant: "{{ defaultequid }}"
+ });
+ });
+</script>
+{% endblock %}
+
View
12 example/templates/base.html
@@ -6,11 +6,6 @@
<meta name="keywords" content="performance, test, interpreter, plots, charts">
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<link href="{{ STATIC_URL }}css/main.css" rel="stylesheet" type="text/css">
- <script type='text/javascript'>
- var STATIC_URL = '{{ STATIC_URL }}';
- </script>
- <script type="text/javascript" src="{{ STATIC_URL }}js/codespeed.js"></script>
- <script type="text/javascript" src="{{ STATIC_URL }}js/jquery-1.7.1.min.js"></script>
{% block extra_head %}{% endblock %}
</head>
<body>
@@ -52,5 +47,12 @@
<div class="footer">Powered by <a href="https://github.com/tobami/codespeed/">Codespeed</a>, <a href="http://www.djangoproject.com/">Django</a> and <a href="http://www.python.org">Python</a></div>
{% endblock %}
</div>
+
+ <script type='text/javascript'>
+ var STATIC_URL = '{{ STATIC_URL }}';
+ </script>
+ <script type="text/javascript" src="{{ STATIC_URL }}js/jquery-1.7.1.min.js"></script>
+ <script type="text/javascript" src="{{ STATIC_URL }}js/codespeed.js"></script>
+ {% block extra_body %}{% endblock %}
</body>
</html>
View
57 example/templates/home.html
@@ -1,6 +1,34 @@
{% extends "base.html" %}
-{% block extra_head %}
+{% block navigation %}
+{% endblock navigation %}
+
+{% block body %}
+<div id="presentation" class="clearfix">
+ <a href="{% url changes %}">
+ <div id="changes" class="menubox">
+ <h2>Changes</h2>
+ <p>Track performance changes in the latest revisions</p>
+ </div>
+ </a>
+ <a href="{% url timeline %}">
+ <div id="timeline" class="menubox">
+ <h2>Timeline</h2>
+ <p>Analyze performance over time</p>
+ </div>
+ </a>
+ <a href="{% url comparison %}">
+ <div id="comparison" class="menubox">
+ <h2>Comparison</h2>
+ <p>Compare different executables and revisions</p>
+ </div>
+ </a>
+ <br />
+ <div id="reports"></div>
+</div>
+{% endblock body %}
+
+{% block extra_body %}
{{ block.super }}
<script type="text/javascript">
function permalinkToChanges(permalink) {
@@ -29,30 +57,3 @@
});
</script>
{% endblock %}
-{% block navigation %}
-{% endblock navigation %}
-
-{% block body %}
-<div id="presentation" class="clearfix">
- <a href="{% url changes %}">
- <div id="changes" class="menubox">
- <h2>Changes</h2>
- <p>Track performance changes in the latest revisions</p>
- </div>
- </a>
- <a href="{% url timeline %}">
- <div id="timeline" class="menubox">
- <h2>Timeline</h2>
- <p>Analyze performance over time</p>
- </div>
- </a>
- <a href="{% url comparison %}">
- <div id="comparison" class="menubox">
- <h2>Comparison</h2>
- <p>Compare different executables and revisions</p>
- </div>
- </a>
- <br />
- <div id="reports"></div>
-</div>
-{% endblock body %}

0 comments on commit 5ef6809

Please sign in to comment.
Something went wrong with that request. Please try again.