changed: saving strategy. Use an 5-sec interval worker
This commit is contained in:
parent
d03ded0762
commit
1f9a2d303c
52
main.js
52
main.js
|
@ -1,6 +1,6 @@
|
||||||
var defaultsettings =
|
var defaultsettings =
|
||||||
{
|
{
|
||||||
savedelay: 1000,
|
savedelay: 5000,
|
||||||
bgcolor: "white",
|
bgcolor: "white",
|
||||||
fontfamily: "'Inconsolata', 'Consolas', monospace",
|
fontfamily: "'Inconsolata', 'Consolas', monospace",
|
||||||
fontsize: "90%",
|
fontsize: "90%",
|
||||||
|
@ -21,7 +21,7 @@ var codelanguages = ["xml", "js", "sql"];
|
||||||
// globals
|
// globals
|
||||||
var currentnote = null;
|
var currentnote = null;
|
||||||
var fileindex = 0;
|
var fileindex = 0;
|
||||||
var timeoutid = null;
|
var workerid = null;
|
||||||
var folds = [];
|
var folds = [];
|
||||||
var backup = "";
|
var backup = "";
|
||||||
var localdata = null;
|
var localdata = null;
|
||||||
|
@ -549,15 +549,6 @@ function downloadnote()
|
||||||
download(currentnote.title + ".md", getnotecontent());
|
download(currentnote.title + ".md", getnotecontent());
|
||||||
}
|
}
|
||||||
|
|
||||||
function delay()
|
|
||||||
{
|
|
||||||
return new Promise(function(apply)
|
|
||||||
{
|
|
||||||
clearTimeout(timeoutid);
|
|
||||||
timeoutid = setTimeout(apply, settings.savedelay);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function save()
|
function save()
|
||||||
{
|
{
|
||||||
var content = getnotecontent();
|
var content = getnotecontent();
|
||||||
|
@ -696,6 +687,17 @@ function initvault()
|
||||||
currentvault = window.localStorage.getItem("vault") || "local";
|
currentvault = window.localStorage.getItem("vault") || "local";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function startworker()
|
||||||
|
{
|
||||||
|
workerid = setInterval(function()
|
||||||
|
{
|
||||||
|
if (!saved)
|
||||||
|
{
|
||||||
|
save();
|
||||||
|
}
|
||||||
|
}, settings.savedelay);
|
||||||
|
}
|
||||||
|
|
||||||
function init()
|
function init()
|
||||||
{
|
{
|
||||||
loadsettings();
|
loadsettings();
|
||||||
|
@ -713,15 +715,16 @@ function init()
|
||||||
queryremote({action: "fetch"})
|
queryremote({action: "fetch"})
|
||||||
.then(data =>
|
.then(data =>
|
||||||
{
|
{
|
||||||
marksaved();
|
|
||||||
localdata = data;
|
localdata = data;
|
||||||
loadlast();
|
loadlast();
|
||||||
|
startworker();
|
||||||
})
|
})
|
||||||
.catch(remotecallfailed);
|
.catch(remotecallfailed);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
loadstorage();
|
loadstorage();
|
||||||
|
startworker();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (issplit())
|
if (issplit())
|
||||||
|
@ -749,16 +752,11 @@ function togglepassword()
|
||||||
|
|
||||||
function pushtoremote()
|
function pushtoremote()
|
||||||
{
|
{
|
||||||
if (!isremote())
|
|
||||||
{
|
|
||||||
console.log("local vault, no push");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
console.log("sending data to php server");
|
console.log("sending data to php server");
|
||||||
|
markunsaved("⇅");
|
||||||
|
|
||||||
if (localdata)
|
if (localdata)
|
||||||
{
|
{
|
||||||
clearTimeout(timeoutid);
|
|
||||||
var content = getnotecontent();
|
var content = getnotecontent();
|
||||||
queryremote({action: "push", data: JSON.stringify(localdata)})
|
queryremote({action: "push", data: JSON.stringify(localdata)})
|
||||||
.then(() => {
|
.then(() => {
|
||||||
|
@ -770,7 +768,7 @@ function pushtoremote()
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
console.warn("Content changed in the meantime, keep as unsaved");
|
console.warn("Content changed in the meantime, keep as unsaved");
|
||||||
save();
|
markunsaved("*");
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.catch(remotecallfailed);
|
.catch(remotecallfailed);
|
||||||
|
@ -1278,7 +1276,7 @@ function resize()
|
||||||
{
|
{
|
||||||
if (md.clientHeight > md.scrollHeight) return;
|
if (md.clientHeight > md.scrollHeight) return;
|
||||||
|
|
||||||
console.log("resize");
|
//console.log("resize");
|
||||||
md.style.height = md.scrollHeight + 'px';
|
md.style.height = md.scrollHeight + 'px';
|
||||||
|
|
||||||
/*md.rows = (md.value.match(/\n/g) || []).length + 1;
|
/*md.rows = (md.value.match(/\n/g) || []).length + 1;
|
||||||
|
@ -1300,16 +1298,7 @@ function putontop()
|
||||||
function notecontentchanged()
|
function notecontentchanged()
|
||||||
{
|
{
|
||||||
resize();
|
resize();
|
||||||
markunsaved("⇅");
|
markunsaved("*");
|
||||||
|
|
||||||
if (isremote())
|
|
||||||
{
|
|
||||||
delay().then(save);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
save();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function loadtodo()
|
function loadtodo()
|
||||||
|
@ -1417,8 +1406,7 @@ function rename(newname)
|
||||||
|
|
||||||
currentnote.title = newname;
|
currentnote.title = newname;
|
||||||
|
|
||||||
markunsaved("⇅");
|
markunsaved("*");
|
||||||
save();
|
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue