// © 2009–2010 EPFL/LAMP // code by Gilles Dubochet with contributions by Pedro Furlanetto $(document).ready(function(){ var isHiddenClass; if (document.title == 'scala.AnyRef') { isHiddenClass = function (name) { return name == 'scala.Any'; }; } else { isHiddenClass = function (name) { return name == 'scala.Any' || name == 'scala.AnyRef'; }; } $("#linearization li").filter(function(){ return isHiddenClass($(this).attr("name")); }).removeClass("in").addClass("out"); // Pre-filter members filter(); // Member filter box var input = $("#textfilter input"); input.bind("keyup", function(event) { if (event.keyCode == 27) input.val(""); // escape key filter(true); }); input.focus(function(event) { input.select(); }); $("#textfilter > .post").click(function() { $("#textfilter input").attr("value", ""); filter(); }); $(document).keydown(function(event) { if(!event.altKey && !event.ctrlKey && (event.keyCode == 27 || (event.keyCode >= 48 && event.keyCode <= 90)) && document.activeElement != $("#textfilter input")[0]) { $("#textfilter input").focus(); } }); $("#textfilter input").focus(); $("#linearization li").click(function(){ if ($(this).hasClass("in")) { $(this).removeClass("in"); $(this).addClass("out"); } else if ($(this).hasClass("out")) { $(this).removeClass("out"); $(this).addClass("in"); }; filter(); }); $("#ancestors > ol > li.hideall").click(function() { $("#linearization li.in").removeClass("in").addClass("out"); $("#linearization li:first").removeClass("out").addClass("in"); filter(); }) $("#ancestors > ol > li.showall").click(function() { var filtered = $("#linearization li.out").filter(function() { return ! isHiddenClass($(this).attr("name")); }); filtered.removeClass("out").addClass("in"); filter(); }); $("#visbl > ol > li.public").click(function() { if ($(this).hasClass("out")) { $(this).removeClass("out").addClass("in"); $("#visbl > ol > li.all").removeClass("in").addClass("out"); filter(); }; }) $("#visbl > ol > li.all").click(function() { if ($(this).hasClass("out")) { $(this).removeClass("out").addClass("in"); $("#visbl > ol > li.public").removeClass("in").addClass("out"); filter(); }; }); $("#order > ol > li.alpha").click(function() { if ($(this).hasClass("out")) { $(this).removeClass("out").addClass("in"); $("#order > ol > li.inherit").removeClass("in").addClass("out"); orderAlpha(); }; }) $("#order > ol > li.inherit").click(function() { if ($(this).hasClass("out")) { $(this).removeClass("out").addClass("in"); $("#order > ol > li.alpha").removeClass("in").addClass("out"); orderInherit(); }; }); initInherit(); // Create tooltips $(".extype").add(".defval").tooltip({ tip: "#tooltip", position:"top center", predelay: 500, onBeforeShow: function(ev) { $(this.getTip()).text(this.getTrigger().attr("name")); } }); /* Add toggle arrows */ var docAllSigs = $("#template li").has(".fullcomment").find(".signature"); function commentToggleFct(signature){ var parent = signature.parent(); var shortComment = $(".shortcomment", parent); var fullComment = $(".fullcomment", parent); var vis = $(":visible", fullComment); signature.toggleClass("closed").toggleClass("opened"); if (vis.length > 0) { shortComment.slideDown(100); fullComment.slideUp(100); } else { shortComment.slideUp(100); fullComment.slideDown(100); } }; docAllSigs.addClass("closed"); docAllSigs.click(function() { commentToggleFct($(this)); }); /* Linear super types and known subclasses */ function toggleShowContentFct(outerElement){ var content = $(".hiddenContent", outerElement); var vis = $(":visible", content); if (vis.length > 0) { content.slideUp(100); $(".showElement", outerElement).show(); $(".hideElement", outerElement).hide(); } else { content.slideDown(100); $(".showElement", outerElement).hide(); $(".hideElement", outerElement).show(); } }; $(".toggleContainer").click(function() { toggleShowContentFct($(this)); }); // Set parent window title windowTitle(); }); function orderAlpha() { $("#template > div.parent").hide(); $("#ancestors").show(); filter(); }; function orderInherit() { $("#template > div.parent").show(); $("#ancestors").hide(); filter(); }; /** Prepares the DOM for inheritance-based display. To do so it will: * - hide all statically-generated parents headings; * - copy all members from the value and type members lists (flat members) to corresponding lists nested below the * parent headings (inheritance-grouped members); * - initialises a control variable used by the filter method to control whether filtering happens on flat members * or on inheritance-grouped members. */ function initInherit() { // parents is a map from fully-qualified names to the DOM node of parent headings. var parents = new Object(); $("#inheritedMembers > div.parent").each(function(){ parents[$(this).attr("name")] = $(this); }); $("#types > ol > li").each(function(){ var mbr = $(this); this.mbrText = mbr.find("> .fullcomment .cmt").text(); var qualName = mbr.attr("name"); var owner = qualName.slice(0, qualName.indexOf("#")); var name = qualName.slice(qualName.indexOf("#") + 1); var parent = parents[owner]; if (parent != undefined) { var types = $("> .types > ol", parent); if (types.length == 0) { parent.append("

Type Members

    "); types = $("> .types > ol", parent); } var clone = mbr.clone(); clone[0].mbrText = this.mbrText; types.append(clone); } }); $("#values > ol > li").each(function(){ var mbr = $(this); this.mbrText = mbr.find("> .fullcomment .cmt").text(); var qualName = mbr.attr("name"); var owner = qualName.slice(0, qualName.indexOf("#")); var name = qualName.slice(qualName.indexOf("#") + 1); var parent = parents[owner]; if (parent != undefined) { var values = $("> .values > ol", parent); if (values.length == 0) { parent.append("

    Value Members

      "); values = $("> .values > ol", parent); } var clone = mbr.clone(); clone[0].mbrText = this.mbrText; values.append(clone); } }); $("#inheritedMembers > div.parent").each(function() { if ($("> div.members", this).length == 0) { $(this).remove(); }; }); }; function filter(scrollToMember) { var query = $.trim($("#textfilter input").val()).toLowerCase(); query = query.replace(/[-[\]{}()*+?.,\\^$|#]/g, "\\$&").replace(/\s+/g, "|"); var queryRegExp = new RegExp(query, "i"); var privateMembersHidden = $("#visbl > ol > li.public").hasClass("in"); var orderingAlphabetic = $("#order > ol > li.alpha").hasClass("in"); var hiddenSuperclassElements = orderingAlphabetic ? $("#linearization > li.out") : $("#linearization > li:gt(0)"); var hiddenSuperclasses = hiddenSuperclassElements.map(function() { return $(this).attr("name"); }).get(); var hideInheritedMembers; if(orderingAlphabetic) { $("#inheritedMembers").hide(); hideInheritedMembers = true; $("#allMembers > .members").each(filterFunc); } else { $("#inheritedMembers").show(); hideInheritedMembers = true; $("#allMembers > .members").each(filterFunc); hideInheritedMembers = false; $("#inheritedMembers > .parent > .members").each(filterFunc); } function filterFunc() { var membersVisible = false; var members = $(this); members.find("> ol > li").each(function() { var mbr = $(this); if (privateMembersHidden && mbr.attr("visbl") == "prt") { mbr.hide(); return; } var name = mbr.attr("name"); // Owner filtering must not happen in "inherited from" member lists if (hideInheritedMembers) { var ownerIndex = name.indexOf("#"); if (ownerIndex < 0) { ownerIndex = name.lastIndexOf("."); } var owner = name.slice(0, ownerIndex); for (var i = 0; i < hiddenSuperclasses.length; i++) { if (hiddenSuperclasses[i] == owner) { mbr.hide(); return; } } } if (query && !(queryRegExp.test(name) || queryRegExp.test(this.mbrText))) { mbr.hide(); return; } mbr.show(); membersVisible = true; }); if (membersVisible) members.show(); else members.hide(); }; if (scrollToMember) { window.scrollTo(0, $("#mbrsel").offset().top); } return false; }; function windowTitle() { try { parent.document.title=document.title; } catch(e) { // Chrome doesn't allow settings the parent's title when // used on the local file system. } };