in rst/themes/lifescience-theme/static/js/custom-sidenav.js [1:57]
$(document).ready(function() {
var toc = document.getElementById("local-toc");
if (!toc) return;
var data = getTocObject(toc);
if (!data.ul) return;
data = data.ul.length > 1 ? data : data.ul[0];
var htmlstring =
'{{#each ul}}' +
'<div class="panel accordion-item">' +
' {{#if ul}}' +
' <div class="accordion-heading">' +
' <p class="accordion-title">' +
' <a data-toggle="collapse" data-parent="#accordion1"' +
' class="accordion-toggle collapsed" href="#item{{@index}}">{{text}}</a>' +
' </p>' +
' </div>' +
' <div class="accordion-collapse collapse" id="item{{@index}}">' +
' <div class="accordion-body">' +
' <ul>' +
' {{#each ul}}' +
' <li><a href="{{href}}">{{text}}</a></li>' +
' {{/each}}' +
' </ul>' +
' </div>' +
' </div>' +
' {{else}}' +
' <div class="accordion-heading">' +
' <p class="accordion-title">' +
' <a data-parent="#accordion1" class="accordion-toggle" href="{{href}}">{{text}}</a>' +
' </p>' +
' </div>' +
' {{/if}}' +
'</div>' +
'{{/each}}';
var template = Handlebars.compile(htmlstring);
$('#accordion1').append(template(data));
function getTocObject(current) {
var newNode = {};
var child;
for (var i = 0; i < current.children.length; i++) {
child = current.children[i];
if (child.localName == "ul") {
newNode["ul"] = [];
for (var j = 0; j < child.children.length; j++)
newNode["ul"].push(getTocObject(child.children[j]))
} else {
newNode["text"] = child.innerHTML;
newNode["href"] = child.attributes["href"].nodeValue;
}
}
return newNode;
}
});