diff --git a/nullboard.html b/nullboard.html
index 0717e11..c84937b 100644
--- a/nullboard.html
+++ b/nullboard.html
@@ -1216,11 +1216,66 @@
var nb_codeVersion = 20200429;
var nb_dataVersion = 20190412;
- //
- if (typeof(localStorage) === "undefined")
- {
- alert('Hmmm... no "localStorage" support');
- }
+ class Database {
+ get(key) {
+ throw "abstract";
+ }
+
+ set(key)
+ {
+ throw "abstract";
+ }
+
+ del(key)
+ {
+ throw "abstract";
+ }
+
+ forEach(foo)
+ {
+ throw "abstract";
+ }
+ }
+
+ class Local extends Database {
+ constructor()
+ {
+ super();
+ if (typeof(localStorage) === "undefined")
+ {
+ throw 'Hmmm... no "localStorage" support';
+ }
+ }
+
+ get(key) {
+ return localStorage.getItem(key);
+ }
+
+ set(key, value)
+ {
+ return localStorage.setItem(key, value);
+ }
+
+ del(key)
+ {
+ return localStorage.removeItem(key);
+ }
+
+ forEach(foo)
+ {
+ var keys = [];
+ for (var i=0; i {
+ var m = k.match(re);
+ if (m)
+ {
+ r.push( parseInt(m[1]) );
+ }
+ });
r.sort(function(a,b){ return b-a; });
return r;
@@ -1541,7 +1598,7 @@
function nukeBoardRevision(rev)
{
var k = 'nullboard.board.' + document.board.id + '.' + rev;
- localStorage.removeItem(k);
+ globalStorage.del(k);
console.log("Removed " + k);
}
@@ -1549,21 +1606,15 @@
{
var prefix = new RegExp('^nullboard\.board\.' + document.board.id);
- for (var i=0; i {
if (k.match(prefix))
{
console.log("Removed " + k);
- localStorage.removeItem(k);
+ globalStorage.del(k);
}
- else
- {
- i++;
- }
- }
+ });
- localStorage.removeItem('nullboard.last_board');
+ globalStorage.del('nullboard.last_board');
}
//
@@ -1582,8 +1633,8 @@
board.id = +new Date();
var blob_id = board.id + '.' + board.revision;
- localStorage.setItem('nullboard.board.' + blob_id, JSON.stringify(board));
- localStorage.setItem('nullboard.board.' + board.id, board.revision);
+ globalStorage.set('nullboard.board.' + blob_id, JSON.stringify(board));
+ globalStorage.set('nullboard.board.' + board.id, board.revision);
openBoard(board.id);
}
@@ -1619,7 +1670,7 @@
'in":false},{"text":"Boards","raw":true,"min":false},{"text":"\u2022 Check out \u2261 at the top right.",' +
'"raw":false,"min":false},{"text":"\u2022 Try adding a new board.\\n\u2022 Try switching between the boards' +
'.","raw":false,"min":false},{"text":"\u2022 Try deleting a board. Unlike deleting a\\n list this _canno' +
- 't_ be undone.","raw":false,"min":false},{"text":"\u2022 Export the board (save to a file, as json)\\n' +
+ 't_ be undone.","raw":false,"min":false},{"text":"\u2022 Export the board (save to a file, as json)\\n' +
'\u2022 Import the board (load from a save)","raw":false,"min":false}]}]}';
var demo = parseBoard(blob);
@@ -1631,9 +1682,9 @@
demo.revision = 1;
demo.history = [ 1 ];
- localStorage.setItem('nullboard.board.' + demo.id + '.' + demo.revision, JSON.stringify(demo));
- localStorage.setItem('nullboard.board.' + demo.id, demo.revision);
- localStorage.setItem('nullboard.last_board', demo.id);
+ globalStorage.set('nullboard.board.' + demo.id + '.' + demo.revision, JSON.stringify(demo));
+ globalStorage.set('nullboard.board.' + demo.id, demo.revision);
+ globalStorage.set('nullboard.last_board', demo.id);
return demo.id;
}
@@ -1818,7 +1869,7 @@
document.board = loadBoard(board_id);
- localStorage.setItem('nullboard.last_board', board_id);
+ globalStorage.set('nullboard.last_board', board_id);
showBoard(true);
}
@@ -1829,7 +1880,7 @@
var via_menu = $('.wrap .board > .head .menu .bulk').is(':visible');
- localStorage.setItem('nullboard.board.' + board_id, revision);
+ globalStorage.set('nullboard.board.' + board_id, revision);
openBoard(board_id);
if (via_menu)
@@ -1855,7 +1906,7 @@
.queue(function(){ $board.remove(); });
document.board = null;
- localStorage.setItem('nullboard.last_board', null);
+ globalStorage.set('nullboard.last_board', null);
updateUndoRedo();
updateBoardIndex();
@@ -1867,7 +1918,7 @@
document.board = new Board('');
document.board.history = [ 0 ];
- localStorage.setItem('nullboard.last_board', document.board_id);
+ globalStorage.set('nullboard.last_board', document.board_id);
showBoard(false);
@@ -2210,11 +2261,11 @@
*/
function peekBoardTitle(board_id)
{
- var revision = localStorage.getItem('nullboard.board.' + board_id);
+ var revision = globalStorage.get('nullboard.board.' + board_id);
if (! revision)
return false;
- var blob = localStorage.getItem('nullboard.board.' + board_id + '.' + revision);
+ var blob = globalStorage.get('nullboard.board.' + board_id + '.' + revision);
if (! blob)
return false;
@@ -2239,17 +2290,15 @@
$index.html('');
$index.hide();
- for (var i=0; i {
var m = k.match(/^nullboard\.board\.(\d+)$/);
if (! m)
- continue;
+ return;
var board_id = m[1];
var title = peekBoardTitle(board_id);
if (title === false)
- continue;
+ return;
var $e = $entry.clone();
$e[0].board_id = board_id;
@@ -2260,7 +2309,7 @@
$index.append($e);
empty = false;
- }
+ });
if (id_now) $export.show();
else $export.hide();
@@ -2610,11 +2659,11 @@
$('.config .exp-board').click(function(){
var board = document.board;
- var revision = localStorage.getItem('nullboard.board.' + board.id);
+ var revision = globalStorage.get('nullboard.board.' + board.id);
if (! revision)
return false;
- var blob = localStorage.getItem('nullboard.board.' + board.id + '.' + revision);
+ var blob = globalStorage.get('nullboard.board.' + board.id + '.' + revision);
if (! blob)
return false;
@@ -2631,14 +2680,14 @@
$('.config .switch-theme').click(function() {
var $body = $('body');
$body.toggleClass('dark');
- localStorage.setItem('nullboard.theme', $body.hasClass('dark') ? 'dark' : '');
+ globalStorage.set('nullboard.theme', $body.hasClass('dark') ? 'dark' : '');
return false;
});
$('.config .switch-fsize').click(function(){
var $body = $('body');
$body.toggleClass('z1');
- localStorage.setItem('nullboard.fsize', $body.hasClass('z1') ? 'z1' : '');
+ globalStorage.set('nullboard.fsize', $body.hasClass('z1') ? 'z1' : '');
return false;
});
@@ -2765,14 +2814,14 @@
}
//
- if (localStorage.getItem('nullboard.theme') == 'dark')
+ if (globalStorage.get('nullboard.theme') == 'dark')
$('body').addClass('dark');
- if (localStorage.getItem('nullboard.fsize') == 'z1')
+ if (globalStorage.get('nullboard.fsize') == 'z1')
$('body').addClass('z1');
//
- var board_id = localStorage.getItem('nullboard.last_board');
+ var board_id = globalStorage.get('nullboard.last_board');
if (board_id)
document.board = loadBoard(board_id);