ichimatsu
Version:
Turn list elements into checkboxes and remember them.
48 lines (47 loc) • 1.46 kB
JavaScript
// Generated by LiveScript 1.4.0
(function(){
var makeCheckboxes, saveState, loadState;
makeCheckboxes = function(){
var count, i$, ref$, len$, li, checked, checkbox, results$ = [];
count = 0;
for (i$ = 0, len$ = (ref$ = document.querySelectorAll('li')).length; i$ < len$; ++i$) {
li = ref$[i$];
if (!li.innerHTML.match(/^\[.\]/)) {
continue;
}
count = count + 1;
li.setAttribute('ichimatsu-pos', count);
checked = 'checked="checked"';
if (li.innerHTML[1] === ' ') {
checked = '';
}
li.innerHTML = ("<input type=\"checkbox\" " + checked + ">") + li.innerHTML.substr(3);
checkbox = li.querySelector('input');
checkbox.onchange = saveState;
results$.push(loadState(li));
}
return results$;
};
saveState = function(){
var url, pos;
url = window.location.pathname;
pos = this.parentNode.getAttribute('ichimatsu-pos');
console.log(url + ":" + pos);
return localStorage.setItem(url + ":" + pos, this.checked);
};
loadState = function(li){
var url, pos, saved, checkbox;
url = window.location.pathname;
pos = li.getAttribute('ichimatsu-pos');
saved = localStorage.getItem(url + ":" + pos);
if (saved === null) {
return;
}
if (saved === 'false') {
saved = false;
}
checkbox = li.querySelector('input');
return checkbox.checked = saved;
};
makeCheckboxes();
}).call(this);