Group localstorage calls into class
parent
d449da9f54
commit
76aab678b5
149
nullboard.html
149
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<localStorage.length; i++)
|
||||
{
|
||||
keys.push(localStorage.key(i));
|
||||
}
|
||||
for (var i=0; i<keys.length; i++)
|
||||
{
|
||||
foo(keys[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
globalStorage = new Local();
|
||||
|
||||
/*
|
||||
* poor man's error handling -- $fixme
|
||||
|
|
@ -1421,8 +1476,8 @@
|
|||
|
||||
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);
|
||||
console.log('Saved nullboard.board.' + blob_id + ' of ' + board.title);
|
||||
|
||||
//
|
||||
|
|
@ -1473,11 +1528,11 @@
|
|||
var blob;
|
||||
var board;
|
||||
|
||||
revision = localStorage.getItem('nullboard.board.' + board_id);
|
||||
revision = globalStorage.get('nullboard.board.' + board_id);
|
||||
if (! revision)
|
||||
return false;
|
||||
|
||||
blob = localStorage.getItem('nullboard.board.' + board_id + '.' + revision);
|
||||
blob = globalStorage.get('nullboard.board.' + board_id + '.' + revision);
|
||||
if (! blob)
|
||||
return false;
|
||||
|
||||
|
|
@ -1507,11 +1562,13 @@
|
|||
var re = new RegExp('^nullboard\.board\.' + board_id + '\.(\\d+)$');
|
||||
var r = [];
|
||||
|
||||
for (var i=0; i<localStorage.length; i++)
|
||||
{
|
||||
var m = localStorage.key(i).match(re);
|
||||
if (m) r.push( parseInt(m[1]) );
|
||||
}
|
||||
globalStorage.forEach((k) => {
|
||||
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<localStorage.length; )
|
||||
{
|
||||
var k = localStorage.key(i);
|
||||
globalStorage.forEach((k) => {
|
||||
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<localStorage.length; i++)
|
||||
{
|
||||
var k = localStorage.key(i);
|
||||
globalStorage.forEach((k) => {
|
||||
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);
|
||||
|
|
|
|||
Loading…
Reference in New Issue