Group localstorage calls into class
parent
d449da9f54
commit
76aab678b5
137
nullboard.html
137
nullboard.html
|
|
@ -1216,11 +1216,66 @@
|
||||||
var nb_codeVersion = 20200429;
|
var nb_codeVersion = 20200429;
|
||||||
var nb_dataVersion = 20190412;
|
var nb_dataVersion = 20190412;
|
||||||
|
|
||||||
//
|
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")
|
if (typeof(localStorage) === "undefined")
|
||||||
{
|
{
|
||||||
alert('Hmmm... no "localStorage" support');
|
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
|
* poor man's error handling -- $fixme
|
||||||
|
|
@ -1421,8 +1476,8 @@
|
||||||
|
|
||||||
var blob_id = board.id + '.' + board.revision;
|
var blob_id = board.id + '.' + board.revision;
|
||||||
|
|
||||||
localStorage.setItem('nullboard.board.' + blob_id, JSON.stringify(board));
|
globalStorage.set('nullboard.board.' + blob_id, JSON.stringify(board));
|
||||||
localStorage.setItem('nullboard.board.' + board.id, board.revision);
|
globalStorage.set('nullboard.board.' + board.id, board.revision);
|
||||||
console.log('Saved nullboard.board.' + blob_id + ' of ' + board.title);
|
console.log('Saved nullboard.board.' + blob_id + ' of ' + board.title);
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
@ -1473,11 +1528,11 @@
|
||||||
var blob;
|
var blob;
|
||||||
var board;
|
var board;
|
||||||
|
|
||||||
revision = localStorage.getItem('nullboard.board.' + board_id);
|
revision = globalStorage.get('nullboard.board.' + board_id);
|
||||||
if (! revision)
|
if (! revision)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
blob = localStorage.getItem('nullboard.board.' + board_id + '.' + revision);
|
blob = globalStorage.get('nullboard.board.' + board_id + '.' + revision);
|
||||||
if (! blob)
|
if (! blob)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
|
@ -1507,11 +1562,13 @@
|
||||||
var re = new RegExp('^nullboard\.board\.' + board_id + '\.(\\d+)$');
|
var re = new RegExp('^nullboard\.board\.' + board_id + '\.(\\d+)$');
|
||||||
var r = [];
|
var r = [];
|
||||||
|
|
||||||
for (var i=0; i<localStorage.length; i++)
|
globalStorage.forEach((k) => {
|
||||||
|
var m = k.match(re);
|
||||||
|
if (m)
|
||||||
{
|
{
|
||||||
var m = localStorage.key(i).match(re);
|
r.push( parseInt(m[1]) );
|
||||||
if (m) r.push( parseInt(m[1]) );
|
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
r.sort(function(a,b){ return b-a; });
|
r.sort(function(a,b){ return b-a; });
|
||||||
return r;
|
return r;
|
||||||
|
|
@ -1541,7 +1598,7 @@
|
||||||
function nukeBoardRevision(rev)
|
function nukeBoardRevision(rev)
|
||||||
{
|
{
|
||||||
var k = 'nullboard.board.' + document.board.id + '.' + rev;
|
var k = 'nullboard.board.' + document.board.id + '.' + rev;
|
||||||
localStorage.removeItem(k);
|
globalStorage.del(k);
|
||||||
console.log("Removed " + k);
|
console.log("Removed " + k);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1549,21 +1606,15 @@
|
||||||
{
|
{
|
||||||
var prefix = new RegExp('^nullboard\.board\.' + document.board.id);
|
var prefix = new RegExp('^nullboard\.board\.' + document.board.id);
|
||||||
|
|
||||||
for (var i=0; i<localStorage.length; )
|
globalStorage.forEach((k) => {
|
||||||
{
|
|
||||||
var k = localStorage.key(i);
|
|
||||||
if (k.match(prefix))
|
if (k.match(prefix))
|
||||||
{
|
{
|
||||||
console.log("Removed " + k);
|
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();
|
board.id = +new Date();
|
||||||
var blob_id = board.id + '.' + board.revision;
|
var blob_id = board.id + '.' + board.revision;
|
||||||
|
|
||||||
localStorage.setItem('nullboard.board.' + blob_id, JSON.stringify(board));
|
globalStorage.set('nullboard.board.' + blob_id, JSON.stringify(board));
|
||||||
localStorage.setItem('nullboard.board.' + board.id, board.revision);
|
globalStorage.set('nullboard.board.' + board.id, board.revision);
|
||||||
|
|
||||||
openBoard(board.id);
|
openBoard(board.id);
|
||||||
}
|
}
|
||||||
|
|
@ -1631,9 +1682,9 @@
|
||||||
demo.revision = 1;
|
demo.revision = 1;
|
||||||
demo.history = [ 1 ];
|
demo.history = [ 1 ];
|
||||||
|
|
||||||
localStorage.setItem('nullboard.board.' + demo.id + '.' + demo.revision, JSON.stringify(demo));
|
globalStorage.set('nullboard.board.' + demo.id + '.' + demo.revision, JSON.stringify(demo));
|
||||||
localStorage.setItem('nullboard.board.' + demo.id, demo.revision);
|
globalStorage.set('nullboard.board.' + demo.id, demo.revision);
|
||||||
localStorage.setItem('nullboard.last_board', demo.id);
|
globalStorage.set('nullboard.last_board', demo.id);
|
||||||
|
|
||||||
return demo.id;
|
return demo.id;
|
||||||
}
|
}
|
||||||
|
|
@ -1818,7 +1869,7 @@
|
||||||
|
|
||||||
document.board = loadBoard(board_id);
|
document.board = loadBoard(board_id);
|
||||||
|
|
||||||
localStorage.setItem('nullboard.last_board', board_id);
|
globalStorage.set('nullboard.last_board', board_id);
|
||||||
|
|
||||||
showBoard(true);
|
showBoard(true);
|
||||||
}
|
}
|
||||||
|
|
@ -1829,7 +1880,7 @@
|
||||||
|
|
||||||
var via_menu = $('.wrap .board > .head .menu .bulk').is(':visible');
|
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);
|
openBoard(board_id);
|
||||||
|
|
||||||
if (via_menu)
|
if (via_menu)
|
||||||
|
|
@ -1855,7 +1906,7 @@
|
||||||
.queue(function(){ $board.remove(); });
|
.queue(function(){ $board.remove(); });
|
||||||
|
|
||||||
document.board = null;
|
document.board = null;
|
||||||
localStorage.setItem('nullboard.last_board', null);
|
globalStorage.set('nullboard.last_board', null);
|
||||||
|
|
||||||
updateUndoRedo();
|
updateUndoRedo();
|
||||||
updateBoardIndex();
|
updateBoardIndex();
|
||||||
|
|
@ -1867,7 +1918,7 @@
|
||||||
document.board = new Board('');
|
document.board = new Board('');
|
||||||
document.board.history = [ 0 ];
|
document.board.history = [ 0 ];
|
||||||
|
|
||||||
localStorage.setItem('nullboard.last_board', document.board_id);
|
globalStorage.set('nullboard.last_board', document.board_id);
|
||||||
|
|
||||||
showBoard(false);
|
showBoard(false);
|
||||||
|
|
||||||
|
|
@ -2210,11 +2261,11 @@
|
||||||
*/
|
*/
|
||||||
function peekBoardTitle(board_id)
|
function peekBoardTitle(board_id)
|
||||||
{
|
{
|
||||||
var revision = localStorage.getItem('nullboard.board.' + board_id);
|
var revision = globalStorage.get('nullboard.board.' + board_id);
|
||||||
if (! revision)
|
if (! revision)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
var blob = localStorage.getItem('nullboard.board.' + board_id + '.' + revision);
|
var blob = globalStorage.get('nullboard.board.' + board_id + '.' + revision);
|
||||||
if (! blob)
|
if (! blob)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
|
@ -2239,17 +2290,15 @@
|
||||||
$index.html('');
|
$index.html('');
|
||||||
$index.hide();
|
$index.hide();
|
||||||
|
|
||||||
for (var i=0; i<localStorage.length; i++)
|
globalStorage.forEach((k) => {
|
||||||
{
|
|
||||||
var k = localStorage.key(i);
|
|
||||||
var m = k.match(/^nullboard\.board\.(\d+)$/);
|
var m = k.match(/^nullboard\.board\.(\d+)$/);
|
||||||
if (! m)
|
if (! m)
|
||||||
continue;
|
return;
|
||||||
|
|
||||||
var board_id = m[1];
|
var board_id = m[1];
|
||||||
var title = peekBoardTitle(board_id);
|
var title = peekBoardTitle(board_id);
|
||||||
if (title === false)
|
if (title === false)
|
||||||
continue;
|
return;
|
||||||
|
|
||||||
var $e = $entry.clone();
|
var $e = $entry.clone();
|
||||||
$e[0].board_id = board_id;
|
$e[0].board_id = board_id;
|
||||||
|
|
@ -2260,7 +2309,7 @@
|
||||||
|
|
||||||
$index.append($e);
|
$index.append($e);
|
||||||
empty = false;
|
empty = false;
|
||||||
}
|
});
|
||||||
|
|
||||||
if (id_now) $export.show();
|
if (id_now) $export.show();
|
||||||
else $export.hide();
|
else $export.hide();
|
||||||
|
|
@ -2610,11 +2659,11 @@
|
||||||
|
|
||||||
$('.config .exp-board').click(function(){
|
$('.config .exp-board').click(function(){
|
||||||
var board = document.board;
|
var board = document.board;
|
||||||
var revision = localStorage.getItem('nullboard.board.' + board.id);
|
var revision = globalStorage.get('nullboard.board.' + board.id);
|
||||||
if (! revision)
|
if (! revision)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
var blob = localStorage.getItem('nullboard.board.' + board.id + '.' + revision);
|
var blob = globalStorage.get('nullboard.board.' + board.id + '.' + revision);
|
||||||
if (! blob)
|
if (! blob)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
|
@ -2631,14 +2680,14 @@
|
||||||
$('.config .switch-theme').click(function() {
|
$('.config .switch-theme').click(function() {
|
||||||
var $body = $('body');
|
var $body = $('body');
|
||||||
$body.toggleClass('dark');
|
$body.toggleClass('dark');
|
||||||
localStorage.setItem('nullboard.theme', $body.hasClass('dark') ? 'dark' : '');
|
globalStorage.set('nullboard.theme', $body.hasClass('dark') ? 'dark' : '');
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
|
|
||||||
$('.config .switch-fsize').click(function(){
|
$('.config .switch-fsize').click(function(){
|
||||||
var $body = $('body');
|
var $body = $('body');
|
||||||
$body.toggleClass('z1');
|
$body.toggleClass('z1');
|
||||||
localStorage.setItem('nullboard.fsize', $body.hasClass('z1') ? 'z1' : '');
|
globalStorage.set('nullboard.fsize', $body.hasClass('z1') ? 'z1' : '');
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -2765,14 +2814,14 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
if (localStorage.getItem('nullboard.theme') == 'dark')
|
if (globalStorage.get('nullboard.theme') == 'dark')
|
||||||
$('body').addClass('dark');
|
$('body').addClass('dark');
|
||||||
|
|
||||||
if (localStorage.getItem('nullboard.fsize') == 'z1')
|
if (globalStorage.get('nullboard.fsize') == 'z1')
|
||||||
$('body').addClass('z1');
|
$('body').addClass('z1');
|
||||||
|
|
||||||
//
|
//
|
||||||
var board_id = localStorage.getItem('nullboard.last_board');
|
var board_id = globalStorage.get('nullboard.last_board');
|
||||||
|
|
||||||
if (board_id)
|
if (board_id)
|
||||||
document.board = loadBoard(board_id);
|
document.board = loadBoard(board_id);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue