diff --git a/src/root/layout.tt b/src/root/layout.tt index 8768ad40..2337599b 100644 --- a/src/root/layout.tt +++ b/src/root/layout.tt @@ -33,78 +33,7 @@ - + [% tracker %] diff --git a/src/root/static/js/common.js b/src/root/static/js/common.js new file mode 100644 index 00000000..44f52462 --- /dev/null +++ b/src/root/static/js/common.js @@ -0,0 +1,67 @@ +$(document).ready(function() { + + /*** 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() { + if ($(this).siblings("ul:hidden").length == 0) { + $(this).text("-"); + } else { + $(this).text("+"); + } + }); + + /* When a toggle is clicked, show or hide the subtree. */ + $(".tree-toggle").click(function() { + if ($(this).siblings("ul:hidden").length != 0) { + $(this).siblings("ul").show(); + $(this).text("-"); + } else { + $(this).siblings("ul").hide(); + $(this).text("+"); + } + }); + + /* Implementation of the expand all link. */ + $(".tree-expand-all").click(function() { + $(".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() { + $(this).siblings("ul").hide(); + $(this).text("+"); + }); + }); + + $("table.clickable-rows").click(function(event) { + if ($(event.target).closest("a").length) return; + link = $(event.target).parents("tr").find("a.row-link"); + if (link.length == 1) + window.location = link.attr("href"); + }); + + bootbox.animate(false); + + $(".hydra-popover").popover({}); + + /* Ensure that pressing the back button on another page + navigates back to the previously selected tab on this + page. */ + $('.nav-tabs').bind('show', function(e) { + var pattern = /#.+/gi; + var id = e.target.toString().match(pattern)[0]; + history.replaceState(null, "", id); + }); + + $(function() { + if (window.location.hash) { + $(".nav a[href='" + window.location.hash + "']").tab('show'); + } + }) +});