// © 2009–2010 EPFL/LAMP
// code by Gilles Dubochet with contributions by Pedro Furlanetto
$(document).ready(function(){
var prefilters = $("#ancestors > ol > li").filter(function(){
var name = $(this).attr("name");
return name == "scala.Any" || name == "scala.AnyRef";
});
prefilters.removeClass("in");
prefilters.addClass("out");
filter();
var input = $("#textfilter > input");
input.bind("keyup", function(event) {
if (event.keyCode == 27) { // escape
input.attr("value", "");
}
filter();
});
input.focus(function(event) { input.select(); });
$("#textfilter > .post").click(function(){
$("#textfilter > input").attr("value", "");
filter();
});
$("#ancestors > ol > 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() {
$("#ancestors > ol > li.in").removeClass("in").addClass("out");
filter();
})
$("#ancestors > ol > li.showall").click(function() {
var filtered =
$("#ancestors > ol > li.out").filter(function() {
var name = $(this).attr("name");
return !(name == "scala.Any" || name == "scala.AnyRef");
});
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();
};
});
$("#impl > ol > li.concrete").click(function() {
if ($(this).hasClass("out")) {
$(this).removeClass("out").addClass("in");
$("li[data-isabs='false']").show();
} else {
$(this).removeClass("in").addClass("out");
$("li[data-isabs='false']").hide();
}
});
$("#impl > ol > li.abstract").click(function() {
if ($(this).hasClass("out")) {
$(this).removeClass("out").addClass("in");
$("li[data-isabs='true']").show();
} else {
$(this).removeClass("in").addClass("out");
$("li[data-isabs='true']").hide();
}
});
$("#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();
};
});
//http://flowplayer.org/tools/tooltip.html
$(".extype").tooltip({
tip: "#tooltip",
position:"top center",
onBeforeShow: function(ev) {
$(this.getTip()).text(this.getTrigger().attr("name"));
}
});
var docAllSigs = $("#template .signature");
function commentShowFct(fullComment){
var vis = $(":visible", fullComment);
if (vis.length > 0) {
fullComment.slideUp(100);
}
else {
fullComment.slideDown(100);
}
};
var docShowSigs = docAllSigs.filter(function(){
return $("+ div.fullcomment", $(this)).length > 0;
});
docShowSigs.css("cursor", "pointer");
docShowSigs.click(function(){
commentShowFct($("+ div.fullcomment", $(this)));
});
function commentToggleFct(shortComment){
var vis = $("~ div.fullcomment:visible", shortComment);
if (vis.length > 0) {
shortComment.slideDown(100);
vis.slideUp(100);
}
else {
var hid = $("~ div.fullcomment:hidden", shortComment);
hid.slideDown(100);
shortComment.slideUp(100);
}
};
var docToggleSigs = docAllSigs.filter(function(){
return $("+ p.shortcomment", $(this)).length > 0;
});
docToggleSigs.css("cursor", "pointer");
docToggleSigs.click(function(){
commentToggleFct($("+ p.shortcomment", $(this)));
});
$("p.shortcomment").click(function(){
commentToggleFct($(this));
});
initInherit();
});
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();
$("#template > div.parent").each(function(){
parents[$(this).attr("name")] = $(this);
});
//
$("#types > ol > li").each(function(){
var qualName = $(this).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("<div class='types members'><h3>Type Members</h3><ol></ol></div>");
types = $("> .types > ol", parent);
}
types.append($(this).clone());
}
});
$("#values > ol > li").each(function(){
var qualName = $(this).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("<div class='values members'><h3>Value Members</h3><ol></ol></div>");
values = $("> .values > ol", parent);
}
values.append($(this).clone());
}
});
$("#template > div.parent").each(function(){
if ($("> div.members", this).length == 0) { $(this).remove(); };
});
$("#template > div.parent").each(function(){
$(this).hide();
});
};
function filter() {
var query = $("#textfilter > input").attr("value").toLowerCase();
var queryRegExp = new RegExp(query, "i");
var inheritHides = null
if ($("#order > ol > li.inherit").hasClass("in")) {
inheritHides = $("#linearization > li:gt(0)");
}
else {
inheritHides = $("#linearization > li.out");
}
var outOwners =
inheritHides.map(function(){
var r = $(this).attr("name");
return r
}).get();
var prtVisbl = $("#visbl > ol > li.all").hasClass("in");
$(".members > ol > li").each(function(){
var vis1 = $(this).attr("visbl");
var qualName1 = $(this).attr("name");
//var name1 = qualName1.slice(qualName1.indexOf("#") + 1);
var showByOwned = true;
if ($(this).parents(".parent").length == 0) {
// owner filtering must not happen in "inherited from" member lists
var owner1 = qualName1.slice(0, qualName1.indexOf("#"));
for (out in outOwners) {
if (outOwners[out] == owner1) {
showByOwned = false;
};
};
};
var showByVis = true;
if (vis1 == "prt") {
showByVis = prtVisbl;
};
var showByName = true;
if (query != "") {
var content = $(this).attr("name") + $("> .fullcomment .cmt", this).text();
showByName = queryRegExp.test(content);
};
if (showByOwned && showByVis && showByName) {
$(this).show();
}
else {
$(this).hide();
};
});
$(".members").each(function(){
$(this).show();
if ($(" > ol > li:visible", this).length == 0) { $(this).hide(); }
});
return false
};