Mercurial > hg > sv-dependency-builds
comparison src/capnproto-git-20161025/doc/javascripts/main.js @ 133:1ac99bfc383d
Add Cap'n Proto source
author | Chris Cannam <cannam@all-day-breakfast.com> |
---|---|
date | Tue, 25 Oct 2016 11:17:01 +0100 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
132:42a73082be24 | 133:1ac99bfc383d |
---|---|
1 function initSidebar() { | |
2 var filename = document.location.pathname; | |
3 | |
4 if (filename.slice(0, 5) == "/next") { | |
5 filename = filename.slice(5); | |
6 } | |
7 | |
8 if (filename == "/") { | |
9 filename = "/index.html"; | |
10 } else if (filename.slice(0, 6) == "/news/") { | |
11 filename = "/news/"; | |
12 } | |
13 | |
14 var menu = document.getElementById("menu"); | |
15 var setMenuLayout = function() { | |
16 if (window.innerWidth < 900) { | |
17 document.body.className = "narrow"; | |
18 menu.className = ""; | |
19 } else { | |
20 if (document.body.clientWidth < 1340) { | |
21 document.body.className = "normal"; | |
22 } else { | |
23 document.body.className = "wide"; | |
24 } | |
25 | |
26 var y = (window.pageYOffset !== undefined) ? window.pageYOffset : | |
27 (document.documentElement || document.body.parentNode || document.body).scrollTop; | |
28 | |
29 if (y < 444 || window.innerHeight < menu.clientHeight + 100) { | |
30 menu.className = ""; | |
31 } else { | |
32 menu.className = "floating"; | |
33 } | |
34 } | |
35 }; | |
36 setMenuLayout(); | |
37 window.onresize = setMenuLayout; | |
38 window.onscroll = setMenuLayout; | |
39 | |
40 var items = menu.getElementsByTagName("li"); | |
41 var toc = null; | |
42 for (var i = 0; i < items.length; i++) { | |
43 var link = items[i].getElementsByTagName("a")[0]; | |
44 var href = link.href; | |
45 if (href.lastIndexOf(filename) >= 0) { | |
46 var parent = link.parentNode; | |
47 | |
48 while (link.childNodes.length > 0) { | |
49 var child = link.childNodes[0]; | |
50 link.removeChild(child); | |
51 parent.appendChild(child); | |
52 } | |
53 parent.removeChild(link); | |
54 items[i].className = "selected"; | |
55 toc = document.createElement("ul"); | |
56 toc.id = "toc"; | |
57 items[i].appendChild(toc); | |
58 } | |
59 } | |
60 | |
61 document.getElementById("main_content").style.minHeight = menu.clientHeight + 100 + "px"; | |
62 | |
63 return toc; | |
64 } | |
65 | |
66 function setupSidebar() { | |
67 var filename = document.location.pathname; | |
68 | |
69 if (filename.slice(0, 5) == "/next") { | |
70 filename = filename.slice(5); | |
71 } | |
72 | |
73 var isNews = filename.slice(0, 6) == "/news/"; | |
74 | |
75 var toc = initSidebar(); | |
76 if (toc) { | |
77 var content = document.getElementById("main_content").childNodes; | |
78 var headings = []; | |
79 | |
80 for (var i = 0; i < content.length; i++) { | |
81 if (content[i].tagName == "H2" || | |
82 (!isNews && (content[i].tagName == "H3" || content[i].tagName == "H4"))) { | |
83 headings.push(content[i]); | |
84 } | |
85 } | |
86 | |
87 var levels = [toc]; | |
88 for (var i in headings) { | |
89 var hl = headings[i].tagName.slice(1) - 1; | |
90 while (hl > levels.length) { | |
91 var parent = levels[levels.length - 1]; | |
92 var item = parent.childNodes[parent.childNodes.length - 1]; | |
93 var sublist = document.createElement("ul"); | |
94 item.appendChild(sublist); | |
95 levels.push(sublist); | |
96 } | |
97 while (hl < levels.length) { | |
98 levels.pop(); | |
99 } | |
100 | |
101 var parent = levels[levels.length - 1]; | |
102 var item = document.createElement("li"); | |
103 var p = document.createElement("p"); | |
104 var link = document.createElement("a"); | |
105 p.appendChild(document.createTextNode(headings[i].innerText || headings[i].textContent)); | |
106 var hlinks = headings[i].getElementsByTagName("a"); | |
107 if (hlinks.length == 1) { | |
108 link.href = hlinks[0].href; | |
109 } else { | |
110 link.href = "#" + headings[i].id; | |
111 } | |
112 link.appendChild(p); | |
113 item.appendChild(link); | |
114 parent.appendChild(item); | |
115 } | |
116 } | |
117 } | |
118 | |
119 function setupNewsSidebar(items) { | |
120 var toc = initSidebar(); | |
121 if (toc) { | |
122 for (var i in items) { | |
123 var item = document.createElement("li"); | |
124 var p = document.createElement("p"); | |
125 var link = document.createElement("a"); | |
126 p.appendChild(document.createTextNode(items[i].title)); | |
127 link.href = items[i].url; | |
128 link.appendChild(p); | |
129 item.appendChild(link); | |
130 toc.appendChild(item); | |
131 } | |
132 } | |
133 } |