annotate src/capnproto-0.6.0/doc/javascripts/main.js @ 83:ae30d91d2ffe

Replace these with versions built using an older toolset (so as to avoid ABI compatibilities when linking on Ubuntu 14.04 for packaging purposes)
author Chris Cannam
date Fri, 07 Feb 2020 11:51:13 +0000
parents 0994c39f1e94
children
rev   line source
cannam@62 1 function initSidebar() {
cannam@62 2 var filename = document.location.pathname;
cannam@62 3
cannam@62 4 if (filename.slice(0, 5) == "/next") {
cannam@62 5 filename = filename.slice(5);
cannam@62 6 }
cannam@62 7
cannam@62 8 if (filename == "/") {
cannam@62 9 filename = "/index.html";
cannam@62 10 } else if (filename.slice(0, 6) == "/news/") {
cannam@62 11 filename = "/news/";
cannam@62 12 }
cannam@62 13
cannam@62 14 var menu = document.getElementById("menu");
cannam@62 15 var setMenuLayout = function() {
cannam@62 16 if (window.innerWidth < 900) {
cannam@62 17 document.body.className = "narrow";
cannam@62 18 menu.className = "";
cannam@62 19 } else {
cannam@62 20 if (document.body.clientWidth < 1340) {
cannam@62 21 document.body.className = "normal";
cannam@62 22 } else {
cannam@62 23 document.body.className = "wide";
cannam@62 24 }
cannam@62 25
cannam@62 26 var y = (window.pageYOffset !== undefined) ? window.pageYOffset :
cannam@62 27 (document.documentElement || document.body.parentNode || document.body).scrollTop;
cannam@62 28
cannam@62 29 if (y < 444 || window.innerHeight < menu.clientHeight + 100) {
cannam@62 30 menu.className = "";
cannam@62 31 } else {
cannam@62 32 menu.className = "floating";
cannam@62 33 }
cannam@62 34 }
cannam@62 35 };
cannam@62 36 setMenuLayout();
cannam@62 37 window.onresize = setMenuLayout;
cannam@62 38 window.onscroll = setMenuLayout;
cannam@62 39
cannam@62 40 var items = menu.getElementsByTagName("li");
cannam@62 41 var toc = null;
cannam@62 42 for (var i = 0; i < items.length; i++) {
cannam@62 43 var link = items[i].getElementsByTagName("a")[0];
cannam@62 44 var href = link.href;
cannam@62 45 if (href.lastIndexOf(filename) >= 0) {
cannam@62 46 var parent = link.parentNode;
cannam@62 47
cannam@62 48 while (link.childNodes.length > 0) {
cannam@62 49 var child = link.childNodes[0];
cannam@62 50 link.removeChild(child);
cannam@62 51 parent.appendChild(child);
cannam@62 52 }
cannam@62 53 parent.removeChild(link);
cannam@62 54 items[i].className = "selected";
cannam@62 55 toc = document.createElement("ul");
cannam@62 56 toc.id = "toc";
cannam@62 57 items[i].appendChild(toc);
cannam@62 58 }
cannam@62 59 }
cannam@62 60
cannam@62 61 document.getElementById("main_content").style.minHeight = menu.clientHeight + 100 + "px";
cannam@62 62
cannam@62 63 return toc;
cannam@62 64 }
cannam@62 65
cannam@62 66 function setupSidebar() {
cannam@62 67 var filename = document.location.pathname;
cannam@62 68
cannam@62 69 if (filename.slice(0, 5) == "/next") {
cannam@62 70 filename = filename.slice(5);
cannam@62 71 }
cannam@62 72
cannam@62 73 var isNews = filename.slice(0, 6) == "/news/";
cannam@62 74
cannam@62 75 var toc = initSidebar();
cannam@62 76 if (toc) {
cannam@62 77 var content = document.getElementById("main_content").childNodes;
cannam@62 78 var headings = [];
cannam@62 79
cannam@62 80 for (var i = 0; i < content.length; i++) {
cannam@62 81 if (content[i].tagName == "H2" ||
cannam@62 82 (!isNews && (content[i].tagName == "H3" || content[i].tagName == "H4"))) {
cannam@62 83 headings.push(content[i]);
cannam@62 84 }
cannam@62 85 }
cannam@62 86
cannam@62 87 var levels = [toc];
cannam@62 88 for (var i in headings) {
cannam@62 89 var hl = headings[i].tagName.slice(1) - 1;
cannam@62 90 while (hl > levels.length) {
cannam@62 91 var parent = levels[levels.length - 1];
cannam@62 92 var item = parent.childNodes[parent.childNodes.length - 1];
cannam@62 93 var sublist = document.createElement("ul");
cannam@62 94 item.appendChild(sublist);
cannam@62 95 levels.push(sublist);
cannam@62 96 }
cannam@62 97 while (hl < levels.length) {
cannam@62 98 levels.pop();
cannam@62 99 }
cannam@62 100
cannam@62 101 var parent = levels[levels.length - 1];
cannam@62 102 var item = document.createElement("li");
cannam@62 103 var p = document.createElement("p");
cannam@62 104 var link = document.createElement("a");
cannam@62 105 p.appendChild(document.createTextNode(headings[i].innerText || headings[i].textContent));
cannam@62 106 var hlinks = headings[i].getElementsByTagName("a");
cannam@62 107 if (hlinks.length == 1) {
cannam@62 108 link.href = hlinks[0].href;
cannam@62 109 } else {
cannam@62 110 link.href = "#" + headings[i].id;
cannam@62 111 }
cannam@62 112 link.appendChild(p);
cannam@62 113 item.appendChild(link);
cannam@62 114 parent.appendChild(item);
cannam@62 115 }
cannam@62 116 }
cannam@62 117 }
cannam@62 118
cannam@62 119 function setupNewsSidebar(items) {
cannam@62 120 var toc = initSidebar();
cannam@62 121 if (toc) {
cannam@62 122 for (var i in items) {
cannam@62 123 var item = document.createElement("li");
cannam@62 124 var p = document.createElement("p");
cannam@62 125 var link = document.createElement("a");
cannam@62 126 p.appendChild(document.createTextNode(items[i].title));
cannam@62 127 link.href = items[i].url;
cannam@62 128 link.appendChild(p);
cannam@62 129 item.appendChild(link);
cannam@62 130 toc.appendChild(item);
cannam@62 131 }
cannam@62 132 }
cannam@62 133 }