106 lines
3.1 KiB
JavaScript
106 lines
3.1 KiB
JavaScript
|
|
/*
|
||
|
|
Enable the "Next" and "Previous" buttons to move through the table of
|
||
|
|
contents, making entries visible if necessary.
|
||
|
|
*/
|
||
|
|
|
||
|
|
function first_highlighted_navlink() {
|
||
|
|
let highlighted_titles = [...K.getv(".section-title.highlight")];
|
||
|
|
if (highlighted_titles.length === 0) {
|
||
|
|
return null;
|
||
|
|
}
|
||
|
|
return highlighted_titles[0].parentNode;
|
||
|
|
}
|
||
|
|
|
||
|
|
function make_navlink_visible(navlink) {
|
||
|
|
const elts = [...K.getv(".navlink, .caret")];
|
||
|
|
let i;
|
||
|
|
for (i = elts.indexOf(navlink); i >= 0; i -= 1) {
|
||
|
|
let elt = elts[i];
|
||
|
|
if (K.has_class(elt, "caret")) {
|
||
|
|
if (!K.has_class(elt, "caret-down")) {
|
||
|
|
toggle_caret(elt);
|
||
|
|
}
|
||
|
|
if (K.attr(elt, "data-level") === "0") {
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
function show_button_status(id, active_p) {
|
||
|
|
//const inactive_color = "rgb(60%,60%,60%)";
|
||
|
|
//const inactive_color = "rgb(20%,20%,20%)";
|
||
|
|
const inactive_color = "transparent";
|
||
|
|
//const text_color = "white";
|
||
|
|
const text_color = "black";
|
||
|
|
|
||
|
|
const node = K.get(id);
|
||
|
|
if (active_p) {
|
||
|
|
K.style(node, "color", text_color);
|
||
|
|
//K.style(node, "color", "white");
|
||
|
|
K.style(node, "text-decoration", "none");
|
||
|
|
//K.style(node, "font-style", "normal");
|
||
|
|
} else {
|
||
|
|
K.style(node, "color", inactive_color);
|
||
|
|
K.style(node, "text-decoration", "none");
|
||
|
|
//K.style(node, "font-style", "italic");
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
function set_next_last_button_status() {
|
||
|
|
const navlinks = [...K.getv(".navlink")];
|
||
|
|
const top = headers_in_text()[0][0];
|
||
|
|
let status;
|
||
|
|
if (!top) {
|
||
|
|
status = [true, false];
|
||
|
|
}
|
||
|
|
else if (top.id === K.attr(navlinks[0], "data-target")) {
|
||
|
|
status = [true, false];
|
||
|
|
} else if (top.id === K.attr(navlinks[navlinks.length-1], "data-target")) {
|
||
|
|
status = [false, true];
|
||
|
|
} else {
|
||
|
|
status = [true, true];
|
||
|
|
}
|
||
|
|
show_button_status("#next", status[0]);
|
||
|
|
show_button_status("#previous", status[1]);
|
||
|
|
}
|
||
|
|
|
||
|
|
function next_navlink() {
|
||
|
|
let navlinks = [...K.getv(".navlink")];
|
||
|
|
let index = navlinks.indexOf(first_highlighted_navlink());
|
||
|
|
if (index < navlinks.length - 1) {
|
||
|
|
let next = navlinks[index + 1];
|
||
|
|
next.children[0].children[0].click();
|
||
|
|
//make_navlink_visible(next);
|
||
|
|
}
|
||
|
|
return index + 1;
|
||
|
|
}
|
||
|
|
|
||
|
|
function previous_navlink() {
|
||
|
|
let navlinks = [...K.getv(".navlink")];
|
||
|
|
let index = navlinks.indexOf(first_highlighted_navlink());
|
||
|
|
if (index > 0) {
|
||
|
|
let previous = navlinks[index - 1];
|
||
|
|
previous.children[0].children[0].click();
|
||
|
|
//make_navlink_visible(previous);
|
||
|
|
}
|
||
|
|
return index - 1;
|
||
|
|
}
|
||
|
|
|
||
|
|
window.addEventListener("load", function (event) {
|
||
|
|
|
||
|
|
K.get("#next").addEventListener("click", function (event) {
|
||
|
|
// hide_help();
|
||
|
|
const index = next_navlink();
|
||
|
|
resize_toc();
|
||
|
|
});
|
||
|
|
K.get("#previous").addEventListener("click", function (event) {
|
||
|
|
// hide_help();
|
||
|
|
const index = previous_navlink();
|
||
|
|
resize_toc();
|
||
|
|
});
|
||
|
|
define_keypress("N", "#next");
|
||
|
|
define_keypress("P", "#previous");
|
||
|
|
set_next_last_button_status();
|
||
|
|
});
|