diff --git a/src/root/build-deps.tt b/src/root/build-deps.tt
index 157b113e..f15342fa 100644
--- a/src/root/build-deps.tt
+++ b/src/root/build-deps.tt
@@ -4,6 +4,6 @@
- [% INCLUDE renderNode node=buildTimeGraph %]
+ [% INCLUDE renderNode node=buildTimeGraph isRoot=1 %]
diff --git a/src/root/build.tt b/src/root/build.tt
index 027ce3e4..93a02e0f 100644
--- a/src/root/build.tt
+++ b/src/root/build.tt
@@ -481,11 +481,11 @@ END;
[% END %]
[% IF drvAvailable %]
- [% INCLUDE makeLazyTab tabName="tabs-build-deps" uri=c.uri_for('/build' build.id 'build-deps') %]
+ [% INCLUDE makeLazyTab tabName="tabs-build-deps" uri=c.uri_for('/build' build.id 'build-deps') callback="makeTreeCollapsible" %]
[% END %]
[% IF available %]
- [% INCLUDE makeLazyTab tabName="tabs-runtime-deps" uri=c.uri_for('/build' build.id 'runtime-deps') %]
+ [% INCLUDE makeLazyTab tabName="tabs-runtime-deps" uri=c.uri_for('/build' build.id 'runtime-deps') callback="makeTreeCollapsible" %]
[% END %]
diff --git a/src/root/common.tt b/src/root/common.tt
index 6b4e406e..32d6c8cc 100644
--- a/src/root/common.tt
+++ b/src/root/common.tt
@@ -520,7 +520,11 @@ BLOCK makeLazyTab %]
[% END;
diff --git a/src/root/deps.tt b/src/root/deps.tt
index a2c1fbba..6daa9725 100644
--- a/src/root/deps.tt
+++ b/src/root/deps.tt
@@ -19,9 +19,16 @@
[% node.name %] (no info)
[% END %]
+ [% IF isRoot %]
+
+ (collapse all
+ –
+ expand all)
+
+ [% END %]
[% IF node.refs.size > 0 %]
- [% FOREACH ref IN node.refs; INCLUDE renderNode node=ref; END %]
+ [% FOREACH ref IN node.refs; INCLUDE renderNode node=ref isRoot=0; END %]
[% END %]
[% END %]
diff --git a/src/root/static/css/hydra.css b/src/root/static/css/hydra.css
index 3b50d246..aac3f1ea 100644
--- a/src/root/static/css/hydra.css
+++ b/src/root/static/css/hydra.css
@@ -33,6 +33,11 @@ span:target > span.dep-tree-line {
font-weight: bold;
}
+span.dep-tree-buttons {
+ font-style: italic;
+ padding-left: 10px;
+}
+
span.disabled-project, span.disabled-jobset, span.disabled-job {
text-decoration: line-through;
}
diff --git a/src/root/static/css/tree.css b/src/root/static/css/tree.css
index 71df2f12..e80f6871 100644
--- a/src/root/static/css/tree.css
+++ b/src/root/static/css/tree.css
@@ -9,6 +9,7 @@ ul.tree, ul.subtree {
ul.subtree > li {
position: relative;
padding-left: 2.0em;
+ line-height: 140%;
border-left: 0.1em solid #6185a0;
}
diff --git a/src/root/static/js/common.js b/src/root/static/js/common.js
index 433c06d7..c51f769a 100644
--- a/src/root/static/js/common.js
+++ b/src/root/static/js/common.js
@@ -1,10 +1,9 @@
-$(document).ready(function() {
-
+function makeTreeCollapsible(tab) {
/*** Tree toggles in logfiles. ***/
/* Set the appearance of the toggle depending on whether the
corresponding subtree is initially shown or hidden. */
- $(".tree-toggle").map(function() {
+ tab.find(".tree-toggle").map(function() {
if ($(this).siblings("ul:hidden").length == 0) {
$(this).text("-");
} else {
@@ -13,7 +12,7 @@ $(document).ready(function() {
});
/* When a toggle is clicked, show or hide the subtree. */
- $(".tree-toggle").click(function() {
+ tab.find(".tree-toggle").click(function() {
if ($(this).siblings("ul:hidden").length != 0) {
$(this).siblings("ul").show();
$(this).text("-");
@@ -24,21 +23,23 @@ $(document).ready(function() {
});
/* Implementation of the expand all link. */
- $(".tree-expand-all").click(function() {
- $(".tree-toggle", $(this).parent().siblings(".tree")).map(function() {
+ tab.find(".tree-expand-all").click(function() {
+ tab.find(".tree-toggle", $(this).parent().siblings(".tree")).map(function() {
$(this).siblings("ul").show();
$(this).text("-");
});
});
/* Implementation of the collapse all link. */
- $(".tree-collapse-all").click(function() {
- $(".tree-toggle", $(this).parent().siblings(".tree")).map(function() {
+ tab.find(".tree-collapse-all").click(function() {
+ tab.find(".tree-toggle", $(this).parent().siblings(".tree")).map(function() {
$(this).siblings("ul").hide();
$(this).text("+");
});
});
+}
+$(document).ready(function() {
$("table.clickable-rows").click(function(event) {
if ($(event.target).closest("a").length) return;
link = $(event.target).parents("tr").find("a.row-link");
@@ -132,7 +133,7 @@ $(document).ready(function() {
var tabsLoaded = {};
-function makeLazyTab(tabName, uri) {
+function makeLazyTab(tabName, uri, callback) {
$('.nav-tabs').bind('show.bs.tab', function(e) {
var pattern = /#.+/gi;
var id = e.target.toString().match(pattern)[0];
@@ -140,11 +141,15 @@ function makeLazyTab(tabName, uri) {
tabsLoaded[id] = 1;
$('#' + tabName).load(uri, function(response, status, xhr) {
var lazy = xhr.getResponseHeader("X-Hydra-Lazy") === "Yes";
+ var tab = $('#' + tabName);
if (status == "error" && !lazy) {
- $('#' + tabName).html("Error loading tab: " + xhr.status + " " + xhr.statusText + "
");
+ tab.html("Error loading tab: " + xhr.status + " " + xhr.statusText + "
");
}
else {
- $('#' + tabName).html(response);
+ tab.html(response);
+ if (callback) {
+ callback(tab);
+ }
}
});
}