diff options
Diffstat (limited to 'scripts/src/note-edit.js')
-rw-r--r-- | scripts/src/note-edit.js | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/scripts/src/note-edit.js b/scripts/src/note-edit.js new file mode 100644 index 0000000..c9126f1 --- /dev/null +++ b/scripts/src/note-edit.js @@ -0,0 +1,101 @@ +function edit_note(btn, form, title, qcontainer, url){ + var form_inputs = form.getElementsByTagName('input'); + var notebook_display = document.getElementById('n-link'); + var tags_display = document.getElementById('t-display'); + var tags_edit = form.getElementsByTagName('input')['tags'] + var form_texts = form.getElementsByTagName('textarea'); + var colorbox = document.getElementById('n-box'); + if (window.editing === false) { + title.setAttribute('contenteditable', true); + title.classList.add('highlight'); + qcontainer.classList.remove('inactive'); + form.getElementsByTagName('select')['notebook'].parentNode.classList.remove('hide'); + document.getElementsByTagName('select')['notebook'].parentNode.classList.remove('hide'); + notebook_display.classList.add('hide'); + tags_display.classList.add('hide'); + tags_edit.parentNode.classList.remove('hide'); + window.quill.enable(true); + btn.innerHTML = 'Save'; + btn.classList.add('save'); + window.editing = true; + window.titlecontents = title.innerHTML; + } else { + if (window.quillchange === true || window.titlecontents != title.innerHTML || window.formchange) { + form_inputs['title'].value = title.innerHTML; + form_texts['body_html'].innerHTML = window.quill.root.innerHTML; + form_texts['body_text'].innerHTML = window.quill.getText(); + form_texts['body_qjson'].innerHTML = JSON.stringify(window.quill.getContents()); + var request = new XMLHttpRequest(); + request.open('PATCH', url); + var csrftoken = Cookies.get('csrftoken'); + request.setRequestHeader('X-CSRFToken', csrftoken); + request.onload = function() { + if (request.status >= 200 && request.status < 400) { + var data = JSON.parse(request.responseText); + var request2 = new XMLHttpRequest(); + request2.open('GET', '/api/v1/notes/notebook/'+data['notebook']+'/'); + request2.setRequestHeader('X-CSRFToken', csrftoken); + request2.onload = function() { + var data2 = JSON.parse(request2.responseText); + var select = form.getElementsByTagName('select')['notebook']; + document.getElementById('n-box').style.backgroundColor = data2['color_rgb']; + notebook_display.getElementsByTagName('span')['n-name'].textContent = select.item(select.selectedIndex).innerHTML; + } + request2.send(); + window.quillchange = false; + } else { + console.log(request); + console.log('server error'); + } + }; + request.onerror = function() { + console.log('error on request'); + }; + request.send(new FormData(form)); + } + title.setAttribute('contenteditable', false); + title.classList.remove('highlight'); + qcontainer.classList.add('inactive'); + window.quill.enable(false); + form.getElementsByTagName('select')['notebook'].parentNode.classList.add('hide'); + btn.innerHTML = 'Edit'; + btn.classList.remove('save'); + tags_display.classList.remove('hide'); + tags_edit.parentNode.classList.add('hide'); + notebook_display.classList.remove('hide'); + document.body.focus(); + window.editing = false; + } + return false; +} + +if (typeof(document.getElementById('note-edit-form')) != "undefined" && document.getElementById('note-edit-form') != null) { + var btn = document.getElementById('edit-toggle-btn'), + qcontainer = document.getElementById('q-container'), + title = document.getElementById('note-title'), + tag_wrapper = document.getElementById('tag-wrapper'), + form = document.getElementById('note-edit-form'), + note_html = document.createElement('textarea'), + note_qjson = document.createElement('textarea'); + + note_html.setAttribute('name', 'body_html'); + note_html.setAttribute('class', 'hide'); + note_html.setAttribute('id', 'id_body_html'); + note_qjson.setAttribute('name', 'body_qjson'); + note_qjson.setAttribute('id', 'id_body_qjson'); + note_qjson.setAttribute('class', 'hide'); + form.appendChild(note_html); + form.appendChild(note_qjson); + form.addEventListener('input', function () { + window.formchange = true; + }); + document.getElementById('btn-js-hide').classList.add('hide'); + btn.classList.remove('hide'); + btn.addEventListener('click', function(e){ + e.preventDefault(); + edit_note(this, form, title, qcontainer, window.url); + }, false); + window.editing = false; + window.quillchange = false; +} + |