/*Preprocess*/ var LANG = ['python', 'scala', 'r', 'julia', 'c++', 'perl']; var TITLE_WITH_LANG = ['/get_started/', '/tutorials/', '/faq/', '/architecture/', '/community/']; for(var i = 0; i < LANG.length; ++i) { TITLE_WITH_LANG.push('/api/' + LANG[i] + '/'); } /*Check whether is API page*/ var API_PAGE = ['python']; var isAPI = false; function render_left_helper(toc) { var lefttoc = toc; lefttoc.addClass('current'); $('.leftsidebar > .sphinxsidebarwrapper').children().remove(); $('.leftsidebar > .sphinxsidebarwrapper').append(lefttoc); addToggle('.leftsidebar'); $('.leftsidebar li a').click(function () { $('.leftsidebar li a').css('color', '#337ab7'); $(this).css('color', 'black'); }); } /*Render content tree of different pages*/ function render_lefttoc() { var url = window.location.href, indexTrailing = 'index.html'; if (url.indexOf('/get_started/') != -1) { var leftToc = ""; render_left_helper($($.parseHTML(leftToc)), 'Get Started'); keepExpand(); $('.sphinxsidebar').css("visibility", "visible"); return; } // If current page is not index page if (url.indexOf(indexTrailing) == -1) { for(var i = 0; i < TITLE_WITH_LANG.length; ++i) { var path = TITLE_WITH_LANG[i]; if (url.indexOf(path) != -1) { urlElem = url.split('/'); version = ''; for (var j = 0; j < urlElem.length; ++j) { if(urlElem[j] == 'versions') { version = '/versions/' + urlElem[j + 1]; break; } } var protocol = location.protocol.concat("//"); var urlPath = protocol + window.location.host + version + path; $.get(urlPath + indexTrailing, null, function(data) { var lastToc = $($.parseHTML(data)).find('.leftsidebar > .sphinxsidebarwrapper > ul.current > li.current > ul') render_left_helper(lastToc); var tocLink = $('.leftsidebar .sphinxsidebarwrapper .leaf a'); var staticLink = 'http'; tocLink.each(function () { if (!$(this).attr('href').startsWith(staticLink)) { $(this).attr('href', urlPath + $(this).attr('href')); } }); keepExpand(); $('.sphinxsidebar').css("visibility", "visible"); if ($('div.sphinxsidebar').css('display') != 'none') $('.content').css('width', 'calc(100% - 300px)'); else $('.content').css('width', '100%'); }) } } } else { var toc = $('.leftsidebar > .sphinxsidebarwrapper > ul.current > li.current > ul').clone(); render_left_helper(toc); $('.sphinxsidebar').css("visibility", "visible"); } } /*Render contents inside page*/ function render_righttoc() { var url = window.location.href, indexTrailing = 'index.html'; var rightTocTitle = "Page Contents"; $("div.rightsidebar > div.sphinxsidebarwrapper > h3").children().remove(); $("div.rightsidebar > div.sphinxsidebarwrapper > h3").html(rightTocTitle); addToggle('.rightsidebar'); $('.rightsidebar li a').click(function () { $('.rightsidebar li a').css('color', '#337ab7'); $(this).css('color', 'black'); }); if (url.indexOf(indexTrailing) != -1 || isAPI) { $('.rightsidebar').hide(); } } /*Highlight entry when scrolling*/ function scroll_righttoc() { var navbarHeight = 60; var links = $('.rightsidebar a'); for(var i = 1; i < links.length; ++i) { var divID = links.eq(i).attr('href'); if ($(divID).offset().top - $(window).scrollTop() > navbarHeight) { $('.rightsidebar a').css('color', '#337ab7'); links.eq(i - 1).css('color', 'black'); if (!links.eq(i - 1).parent().hasClass('leaf')) { links.eq(i - 1).parent().removeClass('closed'); links.eq(i - 1).parent().addClass('opened'); links.eq(i - 1).parent().find('ul').first().show(); } break; } } } /*Decorate toc*/ function addToggle(tocClass) { var allEntry = $(tocClass + " div.sphinxsidebarwrapper li"); var subEntry = $(tocClass + " div.sphinxsidebarwrapper").children("ul").first().children("li"); if (subEntry.length == 1) { subEntry.prepend(""); subEntry.addClass('opened'); allEntry = subEntry.find("li"); //subEntry.children("a").hide(); subEntry.children("ul").css("padding-left", "0"); //subEntry.parent().css("margin-left", "-10px"); } allEntry.each(function () { $(this).prepend(""); var childUL = $(this).find("ul"); if (childUL.length && childUL.first().children().length) { $(this).addClass("closed"); $(this).find("ul").first().hide(); } else $(this).addClass("leaf"); var anchor = $(this).children("a").first(); anchor.click(function () { autoExpand(anchor); }); }); }; /*Sidebar toc toggle button behavior*/ function toggle(elem) { if ($(elem).parent().hasClass("closed")) { $(elem).parent().find("ul").first().show(); $(elem).parent().removeClass("closed").addClass("opened"); } else if ($(elem).parent().hasClass("opened")) { $(elem).parent().find("ul").first().hide(); $(elem).parent().removeClass("opened").addClass("closed"); } } /*Automatically expand child level while cilcking an entry*/ function autoExpand(elem) { if (elem.parent().hasClass("closed")) { elem.parent().removeClass("closed").addClass("opened"); elem.parent().children("ul").first().show(); } else { elem.parent().removeClass("opened").addClass("closed"); elem.parent().children("ul").first().hide(); } } /*Keep toc expansion while redirecting*/ function keepExpand() { var url = window.location.href, currentEntry; var entryList = $('.sphinxsidebar li'); for(var i = entryList.length - 1; i >= 0; --i) { var entryURL = entryList.eq(i).find('a').first().attr('href'); if (entryURL != '#' && url.indexOf(entryURL) != -1) { currentEntry = entryList.eq(i); break; } } //Merge right toc into left toc for API pages since they are quite long if (isAPI) { var rootEntry = currentEntry; rootEntry.append($('.rightsidebar .sphinxsidebarwrapper > ul > li > ul').clone()); rootEntry.addClass('closed').removeClass('leaf'); var allEntry = $(".leftsidebar div.sphinxsidebarwrapper li.toctree-l2 li"); allEntry.each(function () { var anchor = $(this).children("a").first(); anchor.click(function () { autoExpand(anchor); }); }); $('.sphinxsidebar li').each(function () { if (url.endsWith($(this).find('a').first().attr('href'))) { currentEntry = $(this); return false; } }); $('.leftsidebar li a').click(function () { $('.leftsidebar li a').css('color', '#337ab7'); $(this).css('color', 'black'); }); } currentEntry.find('a').first().css('color', '#337ab7'); currentEntry.children("ul").first().show(); if (!currentEntry.hasClass('leaf')) currentEntry.removeClass("closed").addClass("opened"); while(currentEntry.parent().is('ul') && currentEntry.parent().parent().is('li')) { currentEntry = currentEntry.parent().parent(); currentEntry.removeClass("closed").addClass("opened"); currentEntry.children("ul").first().show(); } } $(document).ready(function () { var url = window.location.href, searchFlag = 'search.html'; var showRightToc = false; try { if (url.indexOf('/get_started/') == -1 && url.indexOf(searchFlag) == -1) { for(var i = 0; i < API_PAGE.length; ++i) { if (url.indexOf('/api/' + API_PAGE[i]) != -1) { isAPI = true; break; } } render_righttoc(); if ($('.leftsidebar').length) render_lefttoc(); } if ($('div.sphinxsidebar').css('visibility') == 'hidden') $('.content').css('width', '100%'); if (url.indexOf('/api/') != -1) return; if (url.indexOf('/install/') != -1) { $('div.sphinxsidebar').hide(); $('.content').css('width', '100%'); } if (showRightToc) { $(window).scroll(function () { scroll_righttoc(); }); } else { $('.rightsidebar').hide(); } // move right toc to left if current left toc is empty if ($('.leftsidebar > .sphinxsidebarwrapper').children().length == 0) { $('.leftsidebar > .sphinxsidebarwrapper').append($('.rightsidebar > .sphinxsidebarwrapper > ul')); } } catch(err) { if ($('div.sphinxsidebar').css('visibility') == 'hidden') $('.content').css('width', '100%'); return; } });