From: Michael D. Lowis Date: Sat, 2 Dec 2017 01:37:07 +0000 (-0500) Subject: added first pass at local storage support X-Git-Url: https://git.mdlowis.com/?a=commitdiff_plain;h=922ea94040806bc57723032f4ec13e67194408f5;p=proto%2Fjournal.git added first pass at local storage support --- diff --git a/editor.js b/editor.js index 5625170..30eaf5a 100644 --- a/editor.js +++ b/editor.js @@ -3,6 +3,10 @@ (() => { const doc = document; doc.exec = doc.execCommand; + const ls = (() => { + try { return localStorage; } + catch (e) { return {}; } + })(); const getSelNode = () => { const node = doc.getSelection().anchorNode; @@ -14,6 +18,23 @@ return [dt.getFullYear(), (month > 9 ? '' : '0') + month, (day > 9 ? '' : '0') + day].join('.'); }; + const initialize = () => { + if (doc.title === "") { + content.innerHTML = !!ls['content'] ? ls['content'] : "

 

"; + header.innerHTML = !!ls['header'] ? ls['header'] + : '

' + ymd_string() + '


' ; + doc.title = header.innerText; + } + + content.onkeydown = (ev) => (!!keys[ev.key] ? (keys[ev.key])(ev) : true); + header.onkeyup = (ev) => { + doc.title = header.innerText; + ls['header'] = header.innerHTML; + ls['content'] = content.innerHTML; + }; + content.focus(); + } + const ctrlHeld = (ev) => (ev.ctrlKey || ev.metaKey); const inTag = (tag) => (getSelNode().nodeName === tag); const keyCmd = (ev, cmd, arg) => (ctrlHeld(ev) ? !doc.exec(cmd, false, arg) : true); @@ -49,6 +70,7 @@ return !doc.exec((ev.shiftKey ? "out" : "in")+"dent",false); }, + "\\": (ev) => init(), ";": (ev) => keyCmd(ev, "insertHTML", "\r\n"), "'": (ev) => { if (ctrlHeld(ev)) { @@ -59,12 +81,5 @@ }, }; - header.onkeyup = (ev) => (doc.title = header.innerText); - content.onkeydown = (ev) => (keys[ev.key] ? (keys[ev.key])(ev) : true); - content.focus(); - - if (doc.title === "") { - header.innerHTML = '

' + ymd_string() + '


'; - doc.title = header.innerText; - } + initialize(); })(); diff --git a/index.html b/index.html index 53620c5..a55c5e2 100644 --- a/index.html +++ b/index.html @@ -84,6 +84,10 @@ th:first-child, td:first-child { (() => { const doc = document; doc.exec = doc.execCommand; + const ls = (() => { + try { return localStorage; } + catch (e) { return {}; } + })(); const getSelNode = () => { const node = doc.getSelection().anchorNode; @@ -95,6 +99,23 @@ th:first-child, td:first-child { return [dt.getFullYear(), (month > 9 ? '' : '0') + month, (day > 9 ? '' : '0') + day].join('.'); }; + const initialize = () => { + if (doc.title === "") { + content.innerHTML = !!ls['content'] ? ls['content'] : "

 

"; + header.innerHTML = !!ls['header'] ? ls['header'] + : '

' + ymd_string() + '


' ; + doc.title = header.innerText; + } + + content.onkeydown = (ev) => (!!keys[ev.key] ? (keys[ev.key])(ev) : true); + header.onkeyup = (ev) => { + doc.title = header.innerText; + ls['header'] = header.innerHTML; + ls['content'] = content.innerHTML; + }; + content.focus(); + } + const ctrlHeld = (ev) => (ev.ctrlKey || ev.metaKey); const inTag = (tag) => (getSelNode().nodeName === tag); const keyCmd = (ev, cmd, arg) => (ctrlHeld(ev) ? !doc.exec(cmd, false, arg) : true); @@ -130,6 +151,7 @@ th:first-child, td:first-child { return !doc.exec((ev.shiftKey ? "out" : "in")+"dent",false); }, + "\\": (ev) => init(), ";": (ev) => keyCmd(ev, "insertHTML", "\r\n"), "'": (ev) => { if (ctrlHeld(ev)) { @@ -140,14 +162,7 @@ th:first-child, td:first-child { }, }; - header.onkeyup = (ev) => (doc.title = header.innerText); - content.onkeydown = (ev) => (keys[ev.key] ? (keys[ev.key])(ev) : true); - content.focus(); - - if (doc.title === "") { - header.innerHTML = '

' + ymd_string() + '


'; - doc.title = header.innerText; - } + initialize(); })();