70 lines
2.2 KiB
JavaScript
70 lines
2.2 KiB
JavaScript
// Cookie manipulation functions, from https://www.w3schools.com/js/js_cookies.asp
|
|
|
|
function setCookie(cname, cvalue, exdays) {
|
|
var d = new Date();
|
|
d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
|
|
var expires = "expires="+d.toUTCString();
|
|
document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
|
|
}
|
|
|
|
function getCookie(cname) {
|
|
var name = cname + "=";
|
|
var ca = document.cookie.split(';');
|
|
for(var i = 0; i < ca.length; i++) {
|
|
var c = ca[i];
|
|
while (c.charAt(0) == ' ') {
|
|
c = c.substring(1);
|
|
}
|
|
if (c.indexOf(name) == 0) {
|
|
return c.substring(name.length, c.length);
|
|
}
|
|
}
|
|
return "";
|
|
}
|
|
|
|
// Toogle sidebar collapse
|
|
|
|
function initSideBarCollapse() {
|
|
var collapsed = getCookie("pydoctor-sidebar-collapsed");
|
|
if (collapsed == "yes") {
|
|
document.body.classList.add("sidebar-collapsed");
|
|
}
|
|
if (collapsed == ""){
|
|
setCookie("pydoctor-sidebar-collapsed", "no", 365);
|
|
}
|
|
updateSideBarCollapse();
|
|
}
|
|
|
|
function toggleSideBarCollapse() {
|
|
if (document.body.classList.contains('sidebar-collapsed')){
|
|
document.body.classList.remove('sidebar-collapsed');
|
|
setCookie("pydoctor-sidebar-collapsed", "no", 365);
|
|
}
|
|
else {
|
|
document.body.classList.add("sidebar-collapsed");
|
|
setCookie("pydoctor-sidebar-collapsed", "yes", 365);
|
|
}
|
|
|
|
updateSideBarCollapse();
|
|
}
|
|
|
|
function updateSideBarCollapse() {
|
|
let link = document.querySelector('#collapseSideBar a')
|
|
// Since this script is called before the page finishes the parsing,
|
|
// link is undefined when it's first called.
|
|
if (link!=undefined){
|
|
var collapsed = document.body.classList.contains('sidebar-collapsed');
|
|
link.innerText = collapsed ? '»' : '«';
|
|
}
|
|
// Fixes renderring issue with safari.
|
|
// https://stackoverflow.com/a/8840703
|
|
var sidebarcontainer = document.querySelector('.sidebarcontainer');
|
|
sidebarcontainer.style.display='none';
|
|
sidebarcontainer.offsetHeight; // no need to store this anywhere, the reference is enough
|
|
// Set the sidebar display on load to avoid showing it for few miliseconds when loading..
|
|
sidebarcontainer.style.display='flex';
|
|
|
|
}
|
|
|
|
initSideBarCollapse();
|