You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
314 lines
9.4 KiB
314 lines
9.4 KiB
(function() { |
|
|
|
var localStorage = {}, sessionStorage = {}; |
|
try { localStorage = window.localStorage; } catch (e) { } |
|
try { sessionStorage = window.sessionStorage; } catch (e) { } |
|
|
|
function createSourceLinks() { |
|
$('.method_details_list .source_code'). |
|
before("<span class='showSource'>[<a href='#' class='toggleSource'>View source</a>]</span>"); |
|
$('.toggleSource').toggle(function() { |
|
$(this).parent().nextAll('.source_code').slideDown(100); |
|
$(this).text("Hide source"); |
|
}, |
|
function() { |
|
$(this).parent().nextAll('.source_code').slideUp(100); |
|
$(this).text("View source"); |
|
}); |
|
} |
|
|
|
function createDefineLinks() { |
|
var tHeight = 0; |
|
$('.defines').after(" <a href='#' class='toggleDefines'>more...</a>"); |
|
$('.toggleDefines').toggle(function() { |
|
tHeight = $(this).parent().prev().height(); |
|
$(this).prev().css('display', 'inline'); |
|
$(this).parent().prev().height($(this).parent().height()); |
|
$(this).text("(less)"); |
|
}, |
|
function() { |
|
$(this).prev().hide(); |
|
$(this).parent().prev().height(tHeight); |
|
$(this).text("more..."); |
|
}); |
|
} |
|
|
|
function createFullTreeLinks() { |
|
var tHeight = 0; |
|
$('.inheritanceTree').toggle(function() { |
|
tHeight = $(this).parent().prev().height(); |
|
$(this).parent().toggleClass('showAll'); |
|
$(this).text("(hide)"); |
|
$(this).parent().prev().height($(this).parent().height()); |
|
}, |
|
function() { |
|
$(this).parent().toggleClass('showAll'); |
|
$(this).parent().prev().height(tHeight); |
|
$(this).text("show all"); |
|
}); |
|
} |
|
|
|
function searchFrameButtons() { |
|
$('.full_list_link').click(function() { |
|
toggleSearchFrame(this, $(this).attr('href')); |
|
return false; |
|
}); |
|
window.addEventListener('message', function(e) { |
|
if (e.data === 'navEscape') { |
|
$('#nav').slideUp(100); |
|
$('#search a').removeClass('active inactive'); |
|
$(window).focus(); |
|
} |
|
}); |
|
|
|
$(window).resize(function() { |
|
if ($('#search:visible').length === 0) { |
|
$('#nav').removeAttr('style'); |
|
$('#search a').removeClass('active inactive'); |
|
$(window).focus(); |
|
} |
|
}); |
|
} |
|
|
|
function toggleSearchFrame(id, link) { |
|
var frame = $('#nav'); |
|
$('#search a').removeClass('active').addClass('inactive'); |
|
if (frame.attr('src') === link && frame.css('display') !== "none") { |
|
frame.slideUp(100); |
|
$('#search a').removeClass('active inactive'); |
|
} |
|
else { |
|
$(id).addClass('active').removeClass('inactive'); |
|
if (frame.attr('src') !== link) frame.attr('src', link); |
|
frame.slideDown(100); |
|
} |
|
} |
|
|
|
function linkSummaries() { |
|
$('.summary_signature').click(function() { |
|
document.location = $(this).find('a').attr('href'); |
|
}); |
|
} |
|
|
|
function summaryToggle() { |
|
$('.summary_toggle').click(function(e) { |
|
e.preventDefault(); |
|
localStorage.summaryCollapsed = $(this).text(); |
|
$('.summary_toggle').each(function() { |
|
$(this).text($(this).text() == "collapse" ? "expand" : "collapse"); |
|
var next = $(this).parent().parent().nextAll('ul.summary').first(); |
|
if (next.hasClass('compact')) { |
|
next.toggle(); |
|
next.nextAll('ul.summary').first().toggle(); |
|
} |
|
else if (next.hasClass('summary')) { |
|
var list = $('<ul class="summary compact" />'); |
|
list.html(next.html()); |
|
list.find('.summary_desc, .note').remove(); |
|
list.find('a').each(function() { |
|
$(this).html($(this).find('strong').html()); |
|
$(this).parent().html($(this)[0].outerHTML); |
|
}); |
|
next.before(list); |
|
next.toggle(); |
|
} |
|
}); |
|
return false; |
|
}); |
|
if (localStorage.summaryCollapsed == "collapse") { |
|
$('.summary_toggle').first().click(); |
|
} else { localStorage.summaryCollapsed = "expand"; } |
|
} |
|
|
|
function constantSummaryToggle() { |
|
$('.constants_summary_toggle').click(function(e) { |
|
e.preventDefault(); |
|
localStorage.summaryCollapsed = $(this).text(); |
|
$('.constants_summary_toggle').each(function() { |
|
$(this).text($(this).text() == "collapse" ? "expand" : "collapse"); |
|
var next = $(this).parent().parent().nextAll('dl.constants').first(); |
|
if (next.hasClass('compact')) { |
|
next.toggle(); |
|
next.nextAll('dl.constants').first().toggle(); |
|
} |
|
else if (next.hasClass('constants')) { |
|
var list = $('<dl class="constants compact" />'); |
|
list.html(next.html()); |
|
list.find('dt').each(function() { |
|
$(this).addClass('summary_signature'); |
|
$(this).text( $(this).text().split('=')[0]); |
|
if ($(this).has(".deprecated").length) { |
|
$(this).addClass('deprecated'); |
|
}; |
|
}); |
|
// Add the value of the constant as "Tooltip" to the summary object |
|
list.find('pre.code').each(function() { |
|
console.log($(this).parent()); |
|
var dt_element = $(this).parent().prev(); |
|
var tooltip = $(this).text(); |
|
if (dt_element.hasClass("deprecated")) { |
|
tooltip = 'Deprecated. ' + tooltip; |
|
}; |
|
dt_element.attr('title', tooltip); |
|
}); |
|
list.find('.docstring, .tags, dd').remove(); |
|
next.before(list); |
|
next.toggle(); |
|
} |
|
}); |
|
return false; |
|
}); |
|
if (localStorage.summaryCollapsed == "collapse") { |
|
$('.constants_summary_toggle').first().click(); |
|
} else { localStorage.summaryCollapsed = "expand"; } |
|
} |
|
|
|
function generateTOC() { |
|
if ($('#filecontents').length === 0) return; |
|
var _toc = $('<ol class="top"></ol>'); |
|
var show = false; |
|
var toc = _toc; |
|
var counter = 0; |
|
var tags = ['h2', 'h3', 'h4', 'h5', 'h6']; |
|
var i; |
|
var curli; |
|
if ($('#filecontents h1').length > 1) tags.unshift('h1'); |
|
for (i = 0; i < tags.length; i++) { tags[i] = '#filecontents ' + tags[i]; } |
|
var lastTag = parseInt(tags[0][1], 10); |
|
$(tags.join(', ')).each(function() { |
|
if ($(this).parents('.method_details .docstring').length != 0) return; |
|
if (this.id == "filecontents") return; |
|
show = true; |
|
var thisTag = parseInt(this.tagName[1], 10); |
|
if (this.id.length === 0) { |
|
var proposedId = $(this).attr('toc-id'); |
|
if (typeof(proposedId) != "undefined") this.id = proposedId; |
|
else { |
|
var proposedId = $(this).text().replace(/[^a-z0-9-]/ig, '_'); |
|
if ($('#' + proposedId).length > 0) { proposedId += counter; counter++; } |
|
this.id = proposedId; |
|
} |
|
} |
|
if (thisTag > lastTag) { |
|
for (i = 0; i < thisTag - lastTag; i++) { |
|
if ( typeof(curli) == "undefined" ) { |
|
curli = $('<li/>'); |
|
toc.append(curli); |
|
} |
|
toc = $('<ol/>'); |
|
curli.append(toc); |
|
curli = undefined; |
|
} |
|
} |
|
if (thisTag < lastTag) { |
|
for (i = 0; i < lastTag - thisTag; i++) { |
|
toc = toc.parent(); |
|
toc = toc.parent(); |
|
} |
|
} |
|
var title = $(this).attr('toc-title'); |
|
if (typeof(title) == "undefined") title = $(this).text(); |
|
curli =$('<li><a href="#' + this.id + '">' + title + '</a></li>'); |
|
toc.append(curli); |
|
lastTag = thisTag; |
|
}); |
|
if (!show) return; |
|
html = '<div id="toc"><p class="title hide_toc"><a href="#"><strong>Table of Contents</strong></a></p></div>'; |
|
$('#content').prepend(html); |
|
$('#toc').append(_toc); |
|
$('#toc .hide_toc').toggle(function() { |
|
$('#toc .top').slideUp('fast'); |
|
$('#toc').toggleClass('hidden'); |
|
$('#toc .title small').toggle(); |
|
}, function() { |
|
$('#toc .top').slideDown('fast'); |
|
$('#toc').toggleClass('hidden'); |
|
$('#toc .title small').toggle(); |
|
}); |
|
} |
|
|
|
function navResizeFn(e) { |
|
if (e.which !== 1) { |
|
navResizeFnStop(); |
|
return; |
|
} |
|
|
|
sessionStorage.navWidth = e.pageX.toString(); |
|
$('.nav_wrap').css('width', e.pageX); |
|
$('.nav_wrap').css('-ms-flex', 'inherit'); |
|
} |
|
|
|
function navResizeFnStop() { |
|
$(window).unbind('mousemove', navResizeFn); |
|
window.removeEventListener('message', navMessageFn, false); |
|
} |
|
|
|
function navMessageFn(e) { |
|
if (e.data.action === 'mousemove') navResizeFn(e.data.event); |
|
if (e.data.action === 'mouseup') navResizeFnStop(); |
|
} |
|
|
|
function navResizer() { |
|
$('#resizer').mousedown(function(e) { |
|
e.preventDefault(); |
|
$(window).mousemove(navResizeFn); |
|
window.addEventListener('message', navMessageFn, false); |
|
}); |
|
$(window).mouseup(navResizeFnStop); |
|
|
|
if (sessionStorage.navWidth) { |
|
navResizeFn({which: 1, pageX: parseInt(sessionStorage.navWidth, 10)}); |
|
} |
|
} |
|
|
|
function navExpander() { |
|
var done = false, timer = setTimeout(postMessage, 500); |
|
function postMessage() { |
|
if (done) return; |
|
clearTimeout(timer); |
|
var opts = { action: 'expand', path: pathId }; |
|
document.getElementById('nav').contentWindow.postMessage(opts, '*'); |
|
done = true; |
|
} |
|
|
|
window.addEventListener('message', function(event) { |
|
if (event.data === 'navReady') postMessage(); |
|
return false; |
|
}, false); |
|
} |
|
|
|
function mainFocus() { |
|
var hash = window.location.hash; |
|
if (hash !== '' && $(hash)[0]) { |
|
$(hash)[0].scrollIntoView(); |
|
} |
|
|
|
setTimeout(function() { $('#main').focus(); }, 10); |
|
} |
|
|
|
function navigationChange() { |
|
// This works around the broken anchor navigation with the YARD template. |
|
window.onpopstate = function() { |
|
var hash = window.location.hash; |
|
if (hash !== '' && $(hash)[0]) { |
|
$(hash)[0].scrollIntoView(); |
|
} |
|
}; |
|
} |
|
|
|
$(document).ready(function() { |
|
navResizer(); |
|
navExpander(); |
|
createSourceLinks(); |
|
createDefineLinks(); |
|
createFullTreeLinks(); |
|
searchFrameButtons(); |
|
linkSummaries(); |
|
summaryToggle(); |
|
constantSummaryToggle(); |
|
generateTOC(); |
|
mainFocus(); |
|
navigationChange(); |
|
}); |
|
|
|
})();
|
|
|