parent
3b145cf219
commit
d633cf719d
92
main.js
92
main.js
|
@ -24,8 +24,7 @@ var codelanguages = ["xml", "js", "sql"];
|
|||
var tagmark = "+";
|
||||
|
||||
// globals
|
||||
var currentguid = null;
|
||||
var notesindex = null;
|
||||
var metadata = null;
|
||||
var fileindex = 0;
|
||||
var workerid = null;
|
||||
var backup = "";
|
||||
|
@ -1162,6 +1161,19 @@ function remotecallfailed(error)
|
|||
}
|
||||
}
|
||||
|
||||
function getguid(title)
|
||||
{
|
||||
var guid = null;
|
||||
foreachmetadata( (g,i) =>
|
||||
{
|
||||
if (i.title == title)
|
||||
{
|
||||
guid = g;
|
||||
}
|
||||
});
|
||||
return guid;
|
||||
}
|
||||
|
||||
function gotoline(line)
|
||||
{
|
||||
var i = 0;
|
||||
|
@ -1177,23 +1189,28 @@ function gotoline(line)
|
|||
}
|
||||
}
|
||||
|
||||
function createnote(title)
|
||||
{
|
||||
var guid = genguid();
|
||||
var content = defaultheaders();
|
||||
var item = {
|
||||
title: title,
|
||||
pos: content.length,
|
||||
header: indexheader(content)
|
||||
};
|
||||
metadata[guid] = item;
|
||||
localStorage.setItem("index", JSON.stringify(metadata));
|
||||
localStorage.setItem(guid, content);
|
||||
return guid;
|
||||
}
|
||||
|
||||
function loadstorage()
|
||||
{
|
||||
notesindex = JSON.parse(localStorage.getItem("index"));
|
||||
if (!notesindex)
|
||||
metadata = JSON.parse(localStorage.getItem("index"));
|
||||
if (!metadata)
|
||||
{
|
||||
notesindex = {};
|
||||
// todo: refactor in "add new note"
|
||||
var guid = genguid();
|
||||
var content = defaultheaders();
|
||||
var item = {
|
||||
title: timestamp(),
|
||||
pos: content.length,
|
||||
header: indexheader(content)
|
||||
};
|
||||
notesindex[guid] = item;
|
||||
localStorage.setItem("index", JSON.stringify(notesindex));
|
||||
localStorage.setItem(guid, content);
|
||||
metadata = {};
|
||||
createnote(timestamp());
|
||||
}
|
||||
|
||||
var params = new URLSearchParams(window.location.search);
|
||||
|
@ -1230,9 +1247,10 @@ function loadstorage()
|
|||
}
|
||||
}*/
|
||||
|
||||
if (currentguid)
|
||||
if (window.title.value)
|
||||
{
|
||||
bind(currentguid);
|
||||
var guid = getguid(window.title.value);
|
||||
bind(guid);
|
||||
if (line)
|
||||
{
|
||||
gotoline(line);
|
||||
|
@ -1336,6 +1354,7 @@ function migratelegacystorage()
|
|||
var legacy = localStorage.getItem("data");
|
||||
if (legacy)
|
||||
{
|
||||
// todo: use title as key and guid as property. or not.
|
||||
var legacy = JSON.parse(legacy);
|
||||
var index = {};
|
||||
legacy.forEach(note =>
|
||||
|
@ -1578,7 +1597,7 @@ function md2html(content)
|
|||
|
||||
function loadlast()
|
||||
{
|
||||
loadnote(Object.keys(notesindex)[0]);
|
||||
loadnote(Object.values(metadata)[0].title);
|
||||
}
|
||||
|
||||
function loadprevious()
|
||||
|
@ -1683,7 +1702,7 @@ function commandpalette()
|
|||
suffix: [s.command]
|
||||
};
|
||||
}))
|
||||
.concat(Object.values(notesindex).map(item =>
|
||||
.concat(Object.values(metadata).map(item =>
|
||||
{
|
||||
return {
|
||||
prefix: "note ",
|
||||
|
@ -1883,7 +1902,8 @@ function setsaved()
|
|||
function serialize()
|
||||
{
|
||||
// serialize all gui stuff to local storage
|
||||
var item = notesindex[currentguid];
|
||||
var guid = getguid(window.title.value);
|
||||
var item = metadata[guid];
|
||||
item.title = title.value;
|
||||
item.pos = md.selectionStart;
|
||||
item.header = indexheader(md.value);
|
||||
|
@ -1891,8 +1911,8 @@ function serialize()
|
|||
// is it the right place?
|
||||
putontop();
|
||||
|
||||
localStorage.setItem("index", JSON.stringify(notesindex));
|
||||
localStorage.setItem(currentguid, md.value);
|
||||
localStorage.setItem("index", JSON.stringify(metadata));
|
||||
localStorage.setItem(guid, md.value);
|
||||
|
||||
}
|
||||
|
||||
|
@ -2343,7 +2363,7 @@ function toggletitle()
|
|||
function selectnote()
|
||||
{
|
||||
return searchinlist(
|
||||
Object.values(notesindex).map(item =>
|
||||
Object.values(metadata).map(item =>
|
||||
{
|
||||
return {
|
||||
text: item.title,
|
||||
|
@ -2365,9 +2385,7 @@ function searchandloadnote()
|
|||
selectnote().then(selected =>
|
||||
{
|
||||
var title = selected.text || selected;
|
||||
var guid = Object.values(notesindex).find(i => i.title == title);
|
||||
// todo: create a new one if not found
|
||||
loadnote(guid);
|
||||
loadnote(title);
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -2625,11 +2643,11 @@ function boldify()
|
|||
md.setSelectionRange(pos.start + offset, pos.end + offset);
|
||||
}
|
||||
|
||||
function foreachitemindex(callback)
|
||||
function foreachmetadata(callback)
|
||||
{
|
||||
Object.keys(notesindex).forEach(guid =>
|
||||
Object.keys(metadata).forEach(guid =>
|
||||
{
|
||||
callback(guid, notesindex[guid]);
|
||||
callback(guid, metadata[guid]);
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -2696,13 +2714,13 @@ function mainkeydownhandler()
|
|||
{
|
||||
// notes shortcuts
|
||||
var found = false;
|
||||
foreachitemindex((guid, item) =>
|
||||
foreachmetadata((guid, item) =>
|
||||
{
|
||||
if (item.header.shortcut && shortcutmatches(event, item.header.shortcut))
|
||||
{
|
||||
console.log("Loading note '" + item.title + "' from header shortcut " + item.header.shortcut);
|
||||
event.preventDefault();
|
||||
loadnote(guid);
|
||||
loadnote(item.title);
|
||||
found = true;
|
||||
}
|
||||
});
|
||||
|
@ -2977,11 +2995,15 @@ function defaultheaders(tags = "")
|
|||
"",""].join("\n");
|
||||
}
|
||||
|
||||
function loadnote(guid)
|
||||
function loadnote(title)
|
||||
{
|
||||
currentguid = guid;
|
||||
var guid = getguid(title);
|
||||
if (!guid)
|
||||
{
|
||||
guid = createnote(title);
|
||||
}
|
||||
var content = localStorage.getItem(guid);
|
||||
var item = notesindex[guid];
|
||||
var item = metadata[guid];
|
||||
|
||||
/*if (gettags(content).includes("journal"))
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue