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