git.shiar.nl
/
sheet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
sc: refer to ventral sacs overlord by its common name
[sheet.git]
/
keys.js
diff --git
a/keys.js
b/keys.js
index 993e8f458cc76ae300971d4c9532a2beb2f6d7af..cebd0eee376efc5243de9435d44f0eb49ed3fc3f 100644
(file)
--- a/
keys.js
+++ b/
keys.js
@@
-1,20
+1,36
@@
-function setmode(classname) {
+var basetitle = document.title;
+
+function setmode(classname, restore) {
+ var tableref = document.getElementById('rows');
+ if (!tableref) return;
// set style for each #rows>li>ul>li to display:none unless it matches classname
var showclass = classname ? '^mode '+classname+'(?!\\w)' : '^(?!mode)';
// set style for each #rows>li>ul>li to display:none unless it matches classname
var showclass = classname ? '^mode '+classname+'(?!\\w)' : '^(?!mode)';
- var rows =
document.getElementById('rows')
.getElementsByTagName('TR');
+ var rows =
tableref
.getElementsByTagName('TR');
for (var i = 0; i < rows.length; i++) {
var el = rows[i];
el.style.display = el.className.match(showclass) ? 'block' : 'none';
}
// update H2 to reflect the first part of a currently active (but hidden) row header
for (var i = 0; i < rows.length; i++) {
var el = rows[i];
el.style.display = el.className.match(showclass) ? 'block' : 'none';
}
// update H2 to reflect the first part of a currently active (but hidden) row header
- var h3s =
document
.getElementsByTagName('TH');
+ var h3s =
tableref
.getElementsByTagName('TH');
for (var i = 0; i < h3s.length; i++) {
if (h3s[i].parentNode.style.display != 'block') continue;
for (var i = 0; i < h3s.length; i++) {
if (h3s[i].parentNode.style.display != 'block') continue;
- document.getElementsByTagName('H2')[0].innerHTML = h3s[i].firstChild.data;
+ var header = h3s[i].firstChild.data;
+ document.getElementsByTagName('H2')[0].innerHTML = header;
+ document.title = basetitle + ': ' + header;
+ if (restore) break;
+ history.pushState(null, header, classname ? '#'+classname : '#');
+ break;
}
}
}
}
+window.addEventListener('hashchange', function(e) {
+ setmode(location.hash.slice(1), true);
+});
+if (location.hash) {
+ setmode(location.hash.slice(1), true);
+}
+
var keyfocus = undefined;
document.onkeypress = function(e) {
var keylabels = document.getElementById('rows').getElementsByTagName('B');
var keyfocus = undefined;
document.onkeypress = function(e) {
var keylabels = document.getElementById('rows').getElementsByTagName('B');