Skip to content

Commit aed5760

Browse files
committed
show which revisions have results in changes page
1 parent 7843093 commit aed5760

3 files changed

Lines changed: 36 additions & 5 deletions

File tree

codespeed/static/js/changes.js

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ var Changes = (function(window){
33
// Localize globals
44
var TIMELINE_URL = window.TIMELINE_URL, getLoadText = window.getLoadText;
55

6-
var currentproject, changethres, trendthres, projectmatrix, revisionboxes = {};
6+
var currentproject, changethres, trendthres, projectmatrix, revisionboxes = {}, revisiondata = {}, envhasresults = {};
77

88
function getConfiguration(revision) {
99
return {
@@ -82,6 +82,19 @@ function updateTable() {
8282
});
8383
}
8484

85+
function updateRevisionMarkers(env_id) {
86+
var has = {};
87+
$.each(envhasresults[env_id] || [], function(_, commitid) { has[commitid] = true; });
88+
var current = $("#revision").val();
89+
var options = "";
90+
$.each(revisiondata[currentproject] || [], function(_, r) {
91+
var marker = has[r[1]] ? '● ' : '○ ';
92+
options += "<option value='" + r[1] + "'>" + marker + r[0] + "</option>";
93+
});
94+
$("#revision").html(options);
95+
$("#revision").val(current);
96+
}
97+
8598
function refreshContent() {
8699
refreshContentTable($("#revision option:selected").val());
87100
}
@@ -110,8 +123,8 @@ function changeRevisions() {
110123
selected_project = projectmatrix[executable];
111124

112125
if (selected_project !== currentproject) {
113-
$("#revision").html(revisionboxes[selected_project]);
114126
currentproject = selected_project;
127+
updateRevisionMarkers($("input[name='environment']:checked").val());
115128

116129
//Give visual cue that the select box has changed
117130
var bgc = $("#revision").parent().parent().css("backgroundColor");
@@ -132,8 +145,10 @@ function config(c) {
132145
function init(defaults) {
133146
currentproject = defaults.project;
134147
projectmatrix = defaults.projectmatrix;
148+
envhasresults = defaults.envhasresults || {};
135149

136150
$.each(defaults.revisionlists, function(project, revs) {
151+
revisiondata[project] = revs;
137152
var options = "";
138153
$.each(revs, function(index, r) {
139154
options += "<option value='" + r[1] + "'>" + r[0] + "</option>";
@@ -148,10 +163,14 @@ function init(defaults) {
148163
$("input[name='executable']").change(changeRevisions);
149164

150165
$("#env" + defaults.environment).prop('checked', true);
151-
$("input[name='environment']").change(refreshContent);
166+
$("input[name='environment']").change(function() {
167+
updateRevisionMarkers($("input[name='environment']:checked").val());
168+
refreshContent();
169+
});
152170

153171
$("#revision").html(revisionboxes[defaults.project]);
154172
$("#revision").val(defaults.revision);
173+
updateRevisionMarkers(defaults.environment);
155174
$("#revision").change(refreshContent);
156175

157176
$("#permalink").click(function() {

codespeed/templates/codespeed/changes.html

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,11 +81,12 @@
8181
Changes.init({
8282
project: "{{ defaultexecutable.project }}",
8383
executable: "{{ defaultexecutable.id }}",
84-
environment: "{{ defaultenvironment.id }}",
84+
environment: "{{ defaultenvironment.0.id }}",
8585
revision: "{{ selectedrevision.commitid }}",
8686
trend: "{{ defaulttrend }}",
8787
projectmatrix: eval({{ projectmatrix|safe }}),
88-
revisionlists: eval({{ revisionlists|safe }})
88+
revisionlists: eval({{ revisionlists|safe }}),
89+
envhasresults: eval({{ env_has_results|safe }})
8990
});
9091
});
9192
</script>

codespeed/views.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -908,6 +908,16 @@ def changes(request):
908908
projectmatrix[e.id] = e.project.name
909909
projectmatrix = json.dumps(projectmatrix)
910910

911+
all_commitids = [rev.commitid for revisions in revisionlists.values() for rev in revisions]
912+
env_has_results = {}
913+
for env in enviros:
914+
has = set(Result.objects.filter(
915+
environment=env,
916+
revision__commitid__in=all_commitids,
917+
).values_list('revision__commitid', flat=True).distinct())
918+
env_has_results[str(env.id)] = list(has)
919+
env_has_results = json.dumps(env_has_results)
920+
911921
for project, revisions in revisionlists.items():
912922
revisionlists[project] = [
913923
(str(rev), rev.commitid) for rev in revisions
@@ -928,6 +938,7 @@ def changes(request):
928938
'executables': executables,
929939
'projectmatrix': projectmatrix,
930940
'revisionlists': revisionlists,
941+
'env_has_results': env_has_results,
931942
'trends': trends,
932943
})
933944

0 commit comments

Comments
 (0)