Persist Clear Selection with some garbage code

This is getting to be a mess.
main
Ryan Rix 2017-07-03 23:39:51 -05:00
parent a57280088b
commit 2a83ed4bb1
2 changed files with 38 additions and 18 deletions

View File

@ -3,10 +3,27 @@ var cacheEnabled = true;
var persistCache = function() { var persistCache = function() {
if (cacheEnabled) { if (cacheEnabled) {
window.localStorage.setItem('cache', cache); window.localStorage.setItem('cache', cache);
window.localStorage.setItem('hideUnselected', hideUnselected);
} }
} }
var primeCache = function() { var loadPage = function() {
cache = [];
hideCheck = document.getElementById('showToggle');
hideCheck.onchange = updateHideUnselected;
// Add the row click handlers and prime the cache
var elements = document.getElementsByClassName('run');
for (var i=0; i<elements.length; i++) {
var element = elements[i];
element.onclick = toggleRow;
var id = element.id.replace("run-", "");
cache[id-1] = false;
}
// Restore the cache if you need to
if (cacheEnabled) { if (cacheEnabled) {
var string = window.localStorage.getItem('cache') || ""; var string = window.localStorage.getItem('cache') || "";
var strCache = string.split(","); var strCache = string.split(",");
@ -15,20 +32,10 @@ var primeCache = function() {
cache[cache.length] = (item == 'true'); cache[cache.length] = (item == 'true');
setRowValue(cache.length, cache[cache.length-1]); setRowValue(cache.length, cache[cache.length-1]);
}); });
} else {
cache = []; setSelectedValue(window.localStorage.getItem('hideUnselected') || false);
} }
} }
primeCache();
var elements = document.getElementsByClassName('run');
for (var i=0; i<elements.length; i++) {
var element = elements[i];
element.onclick = toggleRow;
var id = element.id.replace("run-", "");
cache[id-1] = false;
}
function getRowValue(id) { function getRowValue(id) {
return cache[id-1]; return cache[id-1];
@ -47,6 +54,18 @@ function setRowValue(id, selected) {
} }
} }
function setSelectedValue(val) {
hideUnselected=val;
persistCache();
var table = document.getElementById('the_table');
hideUnselected ? table.className = "hide-unselected" : table.className = "";
document.getElementById('showToggle').checked = hideUnselected;
}
function getSelectedValue() {
return hideUnselected;
}
function toggleRow(e) { function toggleRow(e) {
var row = e.currentTarget; var row = e.currentTarget;
var id = row.id.replace("run-", ""); var id = row.id.replace("run-", "");
@ -58,9 +77,8 @@ function toggleRow(e) {
persistCache(); persistCache();
} }
function updateHideUnselected() { function updateHideUnselected(e) {
var table = document.getElementById('the_table'); setSelectedValue(e.target.checked);
table.className == "hide-unselected" ? table.className = "" : table.className = "hide-unselected";
} }
function clearSelection() { function clearSelection() {
@ -69,3 +87,5 @@ function clearSelection() {
} }
persistCache(); persistCache();
} }
loadPage();

View File

@ -20,9 +20,9 @@
</p> </p>
<label for="showToggle">Hide unselected</label> <label for="showToggle">Hide unselected</label>
<input type="checkbox" id="showToggle" onchange="updateHideUnselected()"> <input type="checkbox" id="showToggle" onchange=updateHideUnselected>
<button id="clearSelection" onclick="clearSelection()">Clear Selection</button> <button id="clearSelection" onclick=clearSelection>Clear Selection</button>
<table id="the_table"> <table id="the_table">
<tr> <tr>