From d0216e5396b40f85be38e6462aa6f45ff7b47a6a Mon Sep 17 00:00:00 2001 From: Ville Rantanen Date: Tue, 9 Jan 2024 20:56:59 +0200 Subject: [PATCH] another ad-hoc, adding table of contents --- index.html | 57 +++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 50 insertions(+), 7 deletions(-) diff --git a/index.html b/index.html index 77ef7dc..73fb7f9 100644 --- a/index.html +++ b/index.html @@ -25,10 +25,11 @@ content:" "; padding-right: 1.0em; } + A:toc { text-decoration:none; color: #000000; } + A:visited { text-decoration:none; color: #000000; } A:link { text-decoration:none; color: #000000; } A:visited { text-decoration:none; color: #000000; } - A.link:hover { text-decoration: underline; } - A.link:focus { text-decoration: underline; } + A.link:hover, A.link:focus, A.toc:hover, A.toc:focus { text-decoration: underline; } #filter { width: 100%; } #search { width: 100%; display: table; } .search_span { display: table-cell; text-align: center; vertical-align: middle; @@ -147,9 +148,9 @@ function make_menu() { if (match != null) { //if ( linkList[c].substring(0,2) == "# " ) { var opt=document.createElement("option"); - var name=match[2].trim().replace(/ /g,""); - opt.innerHTML=linkList[c].trim(); - opt.value="anchor_" + name.replace(/^#/,"") + "_" + anchor_index; + var name=match.trim().replace(/ /g,""); + opt.innerHTML=match.trim(); + opt.value="anchor_" + name + "_" + anchor_index; sel.appendChild(opt); anchor_index++; } @@ -225,6 +226,8 @@ function search_hits(needle) { function open_link(c) { var match=linkReg.exec(linkList[c]); if (match != null ) { location.href=match[3]; return } + match=dwLinkReg.exec(linkList[c]); + if (match != null ) { location.href=match[2]; return } match=linkPlain.exec(linkList[c]); if (match != null ) { location.href=match[2]; return } return @@ -245,7 +248,7 @@ function print_results(hitList) { if (narrow_window()) { td.className+=" narrow"; } td.innerHTML+=make_head(linkList[c],cat); td.appendChild(td_content); - cats.push({name:name, td:td, count:0}); + cats.push({name:name, td:td, count:0, original:match}); cat+=1; } else { if (hitList.indexOf(c)==-1) { continue } @@ -259,6 +262,45 @@ function print_results(hitList) { var tbody=document.createElement("tbody"); var tr=document.createElement("tr"); var print_cat=0; + if (config.toc !== null) { + var tr=document.createElement("tr"); + tbody.appendChild(tr); + var td=document.createElement("td"); + td.id="td_"+config.toc.replace(/ /g,"")+"_0"; + td.innerHTML+=make_head("# "+config.toc,0); + tr.appendChild(td); + var td_content = document.createElement("div"); + td_content.id="content_"+config.toc.replace(/ /g,"")+"_0"; + if (narrow_window()) { td.className+=" narrow"; } + td.appendChild(td_content); + for (cat=0; cat0) { + var li=document.createElement("li"); + var a=document.createElement("a"); + a.className += "toc"; + var name = cats[cat].name.replace(/ /g,"")+"_"+cat; + a.href="#anchor_"+name; + a.data=name; + a.innerHTML = cats[cat].original; + a.onclick=function(){ + var head="head_" + this.data; + document.getElementById(head).classList.add("blink"); + fold_set(this.data,false); + setTimeout(function(){ document.getElementById(head).classList.remove("blink"); }, 3000); + document.getElementById("anchor_" + this.data).scrollIntoView({ behavior: 'smooth' }); + }; + a.ontouchstart = a.onclick; + li.appendChild(a); + td_content.appendChild(li); + + } + } + print_cat = 1; + + + + } + for (cat=0; cat0) { if ((print_cat%config.columns==0 || narrow_window())) { @@ -523,7 +565,8 @@ var config = { favicon:null, // link to favicon file narrow:600, // pixel width that is narrow screen = single column table arrows:['📙','📚'], // Arrow characters for in/out tab icon - foldCategories:true // fold categories in single column mode + foldCategories:true, // fold categories in single column mode + toc: null // Title of TableOfContents, if null, no TOC }; // TEMPLATED:CONFIG // TEMPLATED:LINKS