$(document).ready(function () { // Set up filter $(".filterable").searcher({ inputSelector: "#filter" }); $("#reset-filter").click(function() { $("#filter").val("").change() }); $(".description-filterable").searcher({ inputSelector: "#descriptions-filter" }); // Align content below floating menu var header_height = $("#nav-bar").height() + 20; $("#content_container, #angular-content").css("margin-top", header_height); $("a.scope_anchor").css("height", header_height); $("a.scope_anchor").css("margin-top", -header_height); $(".scope_logo_big").each(function(){ var icon = $(this); $(window).scroll(function() { icon.removeClass("fixed"); var pos = icon.offset(); var top_pos = $(this).scrollTop() + header_height; if(top_pos >= pos.top && icon.css("position") == "static") { icon.addClass("fixed").css("top", header_height); } else if(top_pos <= pos.top && icon.hasClass("fixed")) { icon.removeClass("fixed"); } }) }); $('.scope_anchor').each(function(){ var anchor = $(this); $(window).scroll(function() { setCurrentScopeState(anchor); highlightCurrentScope(); }) }); // Hook up the toggle links $(".toggle").click(function(){ $(this).closest(".scope").find(".scope_content").collapse("toggle"); $(this).toggleClass("collapsed"); }); $("#collapse-all").click(function(){ $(".scope_content").collapse("hide"); $(".toggle").addClass("collapsed"); $(this).hide(); $("#expand-all").show(); }); $("#expand-all").click(function(){ $(".scope_content").collapse("show"); $(".toggle").removeClass("collapsed"); $(this).hide(); $("#collapse-all").show(); }); // Set up inspection details popover $("a.inspection_details").popover({ template: "", trigger: "click", placement: "bottom", html: true, content: function() { return $("#inspection_details").html(); }, title: function() { return "Inspection details"; } }); $('.inspection-details-popover .close').click(function() { $(".inspection_details").popover("hide") }); // Set up scope icon popovers $(".btn[data-toggle]").popover({ trigger: "hover", html: true }); // Set up file download links $(".file-download").click(function() { $("#file-modal .spinner").show(); $("#file-modal-file-content").hide(); $("#file-modal-error").hide(); var file = $(this); var scope = file.parents(".scope").data("scope"); var description = $("body").data("description"); var url = encodeURI("/descriptions/" + description + "/files/" + scope + file.text().trim()); $("#file-modal-download-link").attr("href", url); $.get(url, function(res) { if(res.length === 0) { $("#file-modal-error").html("File is empty.").show(); } else { $("#file-modal-file-content").val(res).show(); $("#file-modal-file-content").scrollTop(0); } $("#file-modal .spinner").hide(); }, "text"). error(function(res) { $("#file-modal .spinner").hide(); if(res.readyState == 0) { $("#file-modal-error").html("Could not download file content. Is the web server still running?").show(); } else if(res.status == 406) { $("#file-modal-error").html("File is binary.").show(); } else { $("#file-modal-error").html("There was an unknown error downloading the file.").show(); } }); $("#file-modal-title").html(file.html()); $("#file-modal").modal("show"); return false; }); // Set up config file diffs popovers var counter; $(".diff-toggle").popover({ trigger: "mouseenter", html: true, template: "", content: function() { file = $(this).data("config-file"); return $("*[data-config-file-diff='" + file + "']").html(); }, title: function() { return "Changes for '" + $(this).data("config-file") + "'"; } }).on("mouseenter",function () { clearTimeout(counter); var _this = this; $(".diff-toggle").not(_this).popover("hide"); counter = setTimeout(function(){ $(_this).popover("show"); $(".diff-popover").on("mouseleave", function () { $(".diff-toggle").popover("hide"); }); }, 100); }).on("mouseleave", function () { counter = setTimeout(function(){ if (!$(".diff-popover:hover").length) { $(".diff-toggle").popover("hide"); } }, 500); }); // Tooltips for service states $("td.systemd_enabled, td.systemd_enabled-runtime").attr("title", "Enabled through a symlink in .wants directory (permanently or just in /run)."); $("td.systemd_linked, td.systemd_linked-runtime").attr("title", "Made available through a symlink to the unit file (permanently or just in /run)."); $("td.systemd_masked, td.systemd_masked-runtime").attr("title", "Disabled entirely (permanently or just in /run)."); $("td.systemd_static").attr("title", "Unit file is not enabled, and has no provisions for enabling in the \"[Install]\" section."); $("td.systemd_indirect").attr("title", "Unit file itself is not enabled, but it has a non-empty Also= setting in the \"[Install]\" section, listing other unit files that might be enabled."); $("td.systemd_disabled").attr("title", "Unit file is not enabled."); $("td.sysvinit_on").attr("title", "Service is enabled"); $("td.sysvinit_off").attr("title", "Service is disabled"); // Show title on cut-off table elements $('.scope td').bind('mouseenter', function(){ var $this = $(this); if(this.offsetWidth < this.scrollWidth && !$this.attr('title')){ $this.attr('title', $this.text()); } }); $('.scope_anchor').each(function(){ var anchor = $(this); setCurrentScopeState(anchor); }); highlightCurrentScope(); }); $(document).on("click", ".open-description-selector", function () { if ($(this).hasClass("show")) { $(".description-selector-action").text("show its details."); $("a.show-description").show(); $("a.compare-description").hide(); }else{ descriptionName = $(".description-name:first").val(); $(".description-selector-action").text("compare with description \"" + descriptionName + "\"."); $("a.show-description").hide(); $("a.compare-description").show(); } });