lib/crazy_ivan/templates/index.html in crazy_ivan-1.2.2 vs lib/crazy_ivan/templates/index.html in crazy_ivan-1.2.3
- old
+ new
@@ -61,13 +61,13 @@
}
.project h2 { margin: 12px 0 0 0;}
.tests { margin: 0 0 0 18px;}
- .tests .test { font-size: 80%; margin-right: 8px}
+ .tests .test { margin-right: 8px}
.tests a.test:hover { text-decoration: underline;}
- .tests .test:first-child { font-size: 100%;}
+ .tests .test.first { font-size: 100%;}
.tests .test.active { font-weight: bold;}
.result .timestamp { margin-right: 12px;}
.result .version { margin: 6px 0 6px 12px }
.result .output { padding: 5px; color: silver; background: black; margin: 12px 18px 8px 18px; overflow: auto }
@@ -96,20 +96,26 @@
<script type="text/html" id="projectTemplate">
<div id="<%= projectId %>" class="project">
<h2><%= projectName %></h2>
<div class="tests"></div>
+ <div style="clear: left"></div>
<div class="results"></div>
<div>
</script>
<!-- test link template -->
<script type="text/html" id="resultLinkTemplate">
- <a id="<%= projectDomId %>-<%= version.output %>" class="test"><%= shortTimeStamp %></a>
+ <div style="float: left; margin-right: 8px">
+ <div style="float:left; height: 1.2em; font-size: 84%"><%= longTimeStamp %></div>
+ <div style="clear: left">
+ <a id="<%= projectDomId %>-<%= version.output %>" class="test"><%= shortTimeStamp %></a>
+ </div>
+ </div>
</script>
- <!-- build result holder -->
+ <!-- build rult holder -->
<script type="text/html" id="resultTemplate">
<div class="result <%= projectDomId %>-<%= version.output %>" style="display: none">
<div>
<span class="timestamp"><%= timestamp.finish %></span>
<span class="version"><%= version.output %></span>
@@ -131,79 +137,86 @@
</div>
</script>
<script type="text/javascript" charset="utf-8">
var json = {projects: []};
+ var projectNames;
jQuery(document).ready(function($) {
$.getJSON("projects.json", function(data) {
+ projectNames = data.projects;
jQuery.each(data.projects, function(i, projectName) {
addProjectToJson(projectName);
});
});
});
function addProjectToJson(name) {
- var project = {'name': name, reports: []};
- var recentVersionsJsonPath = name + "/recent.json";
+ var projectJsonPath = name + "/reports.json";
- jQuery.getJSON(recentVersionsJsonPath, function(data) {
- jQuery.each(data.recent_versions, function(i, version) {
- addReportToProject(project, version);
- });
- });
-
- json.projects.push(project);
- }
-
- function addReportToProject(project, version) {
- var name = project.name;
- var resultJsonPath = name + "/" + version + ".json";
- jQuery.getJSON(resultJsonPath, function(data) {
- project.reports.push(data);
+ jQuery.getJSON(projectJsonPath, function(data) {
+ json.projects.push({'name': name, reports: data});
trigger_render();
});
}
- function sortReports(reports) {
- return reports.sort(function(report_a, report_b) {
- // Not sure why providing a 3-letter day trips up Date.js sometimes
- a = Date.parse(report_a.timestamp.finish.substring(4));
- b = Date.parse(report_b.timestamp.finish.substring(4));
-
- return Date.compare(a, b);
- });
- }
-
var timeout = null;
function trigger_render() {
if (timeout) { clearTimeout(timeout) }
timeout = setTimeout(render, 50);
}
+ function orderedProjects(projects) {
+ var orderedProjects = [];
+
+ // order the projects by what the projects.json returns
+ for(var name in projectNames) {
+ for(var project in projects) {
+ if(projects[project].name == projectNames[name]) {
+ orderedProjects.push(projects[project]);
+ break;
+ }
+ }
+ }
+ return orderedProjects;
+ }
+
var render = function() {
$('#projects').empty();
- jQuery.each(json.projects, function(i, project) {
+ var sortedProjects = orderedProjects(json.projects);
+
+ jQuery.each(sortedProjects, function(i, project) {
var name = project.name;
var domId = name.replace(/\./g, ""); // remove . from id name
// create project holder div
$('#projects').append(tmpl("projectTemplate", {projectName: name, projectId: domId}));
- project.reports = sortReports(project.reports);
-
- jQuery.each(project.reports, function(i, report) {
+ jQuery.each(project.reports.reverse(), function(i, report) {
var version = report.version.output;
var resultJsonPath = name + "/" + version + ".json";
var domId = name.replace(/\./g, ""); // remove . from id name
+ var timestamp = report.timestamp.finish;
+ report["longTimeStamp"] = Date.parse(timestamp.substring(4)).toString("MMM d");
+
+ // To group the long time stamps (e.g. Feb 8)
+ if(project.reports[i - 1] != undefined) {
+ next_timestamp = project.reports[i - 1].timestamp.finish;
+ next_longTimeStamp = Date.parse(next_timestamp.substring(4)).toString("MMM d");
+
+ if(report["longTimeStamp"] == next_longTimeStamp) {
+ report["longTimeStamp"] = "";
+ }
+ }
+
// Not sure why providing a 3-letter day trips up Date.js sometimes
- report["shortTimeStamp"] = Date.parse(report.timestamp.finish.substring(4)).toString("HH:mm");
+ report["shortTimeStamp"] = Date.parse(timestamp.substring(4)).toString("HH:mm");
report["projectDomId"] = domId;
$("#" + domId + " .results").append(tmpl("resultTemplate", report));
- $("#" + domId + " .tests").prepend(tmpl("resultLinkTemplate", report));
+ $("#" + domId + " .tests").append(tmpl("resultLinkTemplate", report));
// add failed/success indication to link - inlining in the template screws up
if (report.test.exit_status && report.test.exit_status != '0') {
$("#" + domId + '-' + version).addClass('error');
}
\ No newline at end of file