remember state of folds

This commit is contained in:
ville rantanen
2018-01-04 20:32:42 +02:00
parent 468a00b21d
commit b3d509e19d

View File

@@ -104,7 +104,7 @@ function make_head(c,index="") {
var name=c.substring(1).trim(); var name=c.substring(1).trim();
var head=c.replace(/ /g," "); var head=c.replace(/ /g," ");
var id=name.replace(/ /g,"")+"_"+index; var id=name.replace(/ /g,"")+"_"+index;
return '<a name="'+name+'" id="anchor_'+id+'" onclick="fold_content(\''+id+'\')">'+ return '<a name="'+name+'" id="anchor_'+id+'" onclick="fold_toggle(\''+id+'\')">'+
'<div class=head align=center id="head_'+id+'">'+head+'</div></a>'+ '<div class=head align=center id="head_'+id+'">'+head+'</div></a>'+
'<hr WIDTH="100%" SIZE=3 NOSHADE>'; '<hr WIDTH="100%" SIZE=3 NOSHADE>';
} }
@@ -354,29 +354,79 @@ function filter_cookies(cookies,name) {
} }
} }
} }
return null return null;
} }
function fold_content(name) { function fold_toggle(name,save_state = true) {
if (!narrow_window()) { return } if (!narrow_window()) { return }
if (!config.foldCategories) { return } if (!config.foldCategories) { return }
var title = document.getElementById("head_"+name); var title = document.getElementById("head_"+name);
var el = document.getElementById("content_"+name); var el = document.getElementById("content_"+name);
el.hidden = ! el.hidden; el.hidden = ! el.hidden;
title.classList.toggle("fold_plus"); title.classList.toggle("fold_plus");
if (save_state) {
set_cookie("fold",fold_get_state());
}
}
function fold_set(name,value) {
if (!narrow_window()) { return }
if (!config.foldCategories) { return }
var title = document.getElementById("head_"+name);
var el = document.getElementById("content_"+name);
el.hidden = value;
if (value) {
title.classList.add("fold_plus");
} else {
title.classList.remove("fold_plus");
}
} }
function fold_initial() { function fold_initial() {
if (!narrow_window()) { return } if (!narrow_window()) { return }
if (!config.foldCategories) { return } if (!config.foldCategories) { return }
var state = get_cookie("fold");
if (state !== null) {
fold_set_state(state);
return;
}
var slides = document.getElementsByClassName("head"); var slides = document.getElementsByClassName("head");
for(var i = 0; i < slides.length; i++) { for(var i = 0; i < slides.length; i++) {
var el = slides.item(i); var el = slides.item(i);
var rect = el.getBoundingClientRect(); var rect = el.getBoundingClientRect();
if (window.innerHeight*1.5 < rect.top) { if (window.innerHeight*1.5 < rect.top) {
var name = el.id.replace("head_",""); var name = el.id.replace("head_","");
fold_content(name); fold_toggle(name);
} }
} }
} }
function fold_get_state() {
var slides = document.getElementsByClassName("head");
var state = "";
for(var i = 0; i < slides.length; i++) {
var title = slides.item(i);
var name = title.id.replace("head_","");
var el = document.getElementById("content_"+name);
if (el.hidden) {
state += '-';
} else {
state += '+';
}
}
return state;
}
function fold_set_state(state) {
var slides = document.getElementsByClassName("head");
for(var i = 0; i < slides.length; i++) {
var title = slides.item(i);
var name = title.id.replace("head_","");
if (state[i] == '-') {
fold_set(name, true);
}
if (state[i] == '+') {
fold_set(name, false);
}
}
return;
}
function set_cookie(name,value) { function set_cookie(name,value) {
// Save cookies for 2 hours // Save cookies for 2 hours
document.cookie = name + "=" + value.toString() + "&" + window.location.pathname + document.cookie = name + "=" + value.toString() + "&" + window.location.pathname +