// This script should be included at the END of the document. // For the fastest loading it does not inlude $(document).ready() // This Document contains a few helper functions for the documentation to display the current version, // collapse and expand the menu etc. // Function to make the sticky header possible function shiftWindow() { scrollBy(0, -70); console.log("window shifted") } window.addEventListener("hashchange", shiftWindow); function loadShift() { if (window.location.hash) { console.log("window has hash"); shiftWindow(); } } $(window).load(function() { loadShift(); }); $(function(){ // sidebar accordian-ing // don't apply on last object (it should be the FAQ) or the first (it should be introduction) // define an array to which all opened items should be added var openmenus = []; var elements = $('.toctree-l2'); // for (var i = 0; i < elements.length; i += 1) { var current = $(elements[i]); current.children('ul').hide();} // set initial collapsed state var elements = $('.toctree-l1'); for (var i = 0; i < elements.length; i += 1) { var current = $(elements[i]); if (current.hasClass('current')) { current.addClass('open'); currentlink = current.children('a')[0].href; openmenus.push(currentlink); // do nothing } else { // collapse children current.children('ul').hide(); } } if (doc_version == "") { $('.version-flyer ul').html('
  • Local
  • '); } // mark the active documentation in the version widget $(".version-flyer a:contains('" + doc_version + "')").parent().addClass('active-slug'); // attached handler on click // Do not attach to first element or last (intro, faq) so that // first and last link directly instead of accordian $('.sidebar > ul > li > a').not(':last').not(':first').click(function(){ var index = $.inArray(this.href, openmenus) if (index > -1) { console.log(index); openmenus.splice(index, 1); $(this).parent().children('ul').slideUp(200, function() { $(this).parent().removeClass('open'); // toggle after effect }); } else { openmenus.push(this.href); var current = $(this); setTimeout(function() { // $('.sidebar > ul > li').removeClass('current'); current.parent().addClass('current').addClass('open'); // toggle before effect current.parent().children('ul').hide(); current.parent().children('ul').slideDown(200); }, 100); } return false; }); // add class to all those which have children $('.sidebar > ul > li').not(':last').not(':first').addClass('has-children'); });