updated scripts

This commit is contained in:
Ryan Prather 2024-04-30 08:40:27 -04:00
parent 8f4b0640a1
commit 7e820f8138

View File

@ -1,9 +1,11 @@
// Get the link element // Get the link element
const link = document.querySelector('.hamburger'); const link = document.querySelector('.hamburger');
var converter = null; var converter = null;
var markdownit = null; var md = null;
var references = {}; var references = {};
let saved = false; let saved = false;
let textDirty = false;
let saveTimeout = 10000;
// Add an event listener to the link // Add an event listener to the link
if (link) { if (link) {
@ -13,11 +15,22 @@ if (link) {
}); });
} }
document.addEventListener('keyup', function (event) {
if (event.key == "F3") {
openRef();
}
});
document.querySelector('#notes').addEventListener('keyup', function (event) {
textDirty = true;
document.querySelector('#note-header-left h2').classList.add('dirty');
});
function setHeight() { function setHeight() {
converter = new showdown.Converter(); converter = new showdown.Converter();
//converter.setFlavor(); //converter.setFlavor();
markdownit = new markdownit({ md = new markdownit({
html: true, html: true,
linkify: true, linkify: true,
breaks: true breaks: true
@ -45,12 +58,30 @@ function setHeight() {
dt = new Date(); dt = new Date();
date.value = dt.getFullYear() + '-' + ((dt.getMonth() < 9) ? '0' + (dt.getMonth() + 1) : (dt.getMonth() + 1)) + '-' + dt.getDate(); date.value = dt.getFullYear() + '-' + ((dt.getMonth() < 9) ? '0' + (dt.getMonth() + 1) : (dt.getMonth() + 1)) + '-' + dt.getDate();
setTimeout(saveNote, 10000); setTimeout(saveNote, saveTimeout);
} }
function newNote() { function newNote() {
notes = document.querySelector('.notes'); notes = document.querySelector('#notes');
notes.textContent = ''; notes.text = '';
notes.value = '';
references = {};
saved = true;
textDirty = false;
document.querySelector('#note-header-left h2').classList.remove('dirty');
dt = new Date();
document.querySelector('#noteDate').value = dt.getFullYear() + '-' + ((dt.getMonth() < 9) ? '0' + (dt.getMonth() + 1) : (dt.getMonth() + 1)) + '-' + dt.getDate();
document.querySelector('#noteTitle').value = '';
document.querySelector('#speaker').value = 0;
document.querySelector('#series').value = 0;
document.querySelector('#template').value = 0;
document.querySelector('#passage').value = '';
document.querySelector('#noteId').value = uuidv4();
document.querySelector('#noteSearch').style.display = 'none';
document.querySelector('#ref-list').innerHTML = '';
document.querySelector('#ref').innerHTML = '';
} }
/** /**
@ -64,8 +95,8 @@ function saveNote(event) {
event.preventDefault(); event.preventDefault();
} }
if (!validateNote()) { if (!textDirty || !validateNote()) {
setTimeout(saveNote, 5000); setTimeout(saveNote, saveTimeout);
return; return;
} }
@ -76,7 +107,8 @@ function saveNote(event) {
speaker: document.querySelector('#speaker').value, speaker: document.querySelector('#speaker').value,
series: document.querySelector('#series').value, series: document.querySelector('#series').value,
passage: document.querySelector('#passage').value, passage: document.querySelector('#passage').value,
note: document.querySelector('#notes').value note: document.querySelector('#notes').value,
refs: references
}; };
fetch('/index.php/save-note', { fetch('/index.php/save-note', {
method: 'POST', method: 'POST',
@ -90,10 +122,12 @@ function saveNote(event) {
if (data.msg == 'saved' && !saved) { if (data.msg == 'saved' && !saved) {
showSave(); showSave();
saved = true; saved = true;
textDirty = false;
document.querySelector('#note-header-left h2').classList.remove('dirty');
} }
}) })
.catch(error => console.log(error)); .catch(error => console.log(error));
setTimeout(saveNote, 10000); setTimeout(saveNote, saveTimeout);
} }
function validateNote() { function validateNote() {
@ -105,7 +139,7 @@ function validateNote() {
const id = document.querySelector('#noteId'); const id = document.querySelector('#noteId');
const psg = document.querySelector('#passage'); const psg = document.querySelector('#passage');
if (!parseInt(id.value)) { return false; } if (!isUuidV4Valid(id.value)) { return false; }
if (!title.value.length) { return false; } if (!title.value.length) { return false; }
if (!date.value) { return false; } if (!date.value) { return false; }
if (!parseInt(speaker.value)) { return false; } if (!parseInt(speaker.value)) { return false; }
@ -116,6 +150,11 @@ function validateNote() {
return true; return true;
} }
function isUuidV4Valid(uuid) {
const regex = /^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[8|9|a|b][a-f0-9]{3}-[a-f0-9]{12}$/i;
return regex.test(uuid);
}
/** /**
* Displays a checkmark animation on the screen. * Displays a checkmark animation on the screen.
* *
@ -267,7 +306,7 @@ function queryRef() {
body: JSON.stringify({ body: JSON.stringify({
'type': type.value, 'type': type.value,
'book': book.value, 'book': book.value,
'reference': input.value 'reference': input.value,
}) })
}) })
.then(response => response.text()) .then(response => response.text())
@ -277,17 +316,7 @@ function queryRef() {
const list = document.querySelector('#ref-list'); const list = document.querySelector('#ref-list');
var newList = document.createElement('li'); var newList = document.createElement('li');
newList.className = 'tab'; newList.className = 'tab';
var button = document.createElement('button'); button = makeButton(results.title);
button.innerText = results.title;
button.onclick = function () {
document.querySelector('#ref').innerHTML = converter.makeHtml(references[button.innerText]);
}
button.ondblclick = function () {
document.querySelector('#ref').innerHTML = '';
delete references[results.title];
var list = button.parentElement;
list.remove();
}
newList.appendChild(button); newList.appendChild(button);
list.appendChild(newList); list.appendChild(newList);
@ -297,13 +326,38 @@ function queryRef() {
references[results.title] = results.text; references[results.title] = results.text;
input.value = ''; input.value = '';
document.querySelector('#referenceType').value = 0; document.querySelector('#referenceType').value = '';
document.querySelector('#referenceBook').value = 0; document.querySelector('#referenceBook').value = '';
openRef(); openRef();
link.click(); if (document.querySelector('ul.hamburger-list').classList.contains('menu-open')) {
link.click();
}
saved = false;
textDirty = true;
saveNote();
}); });
} }
function makeButton(title) {
var btn = document.createElement('button');
btn.innerText = title;
btn.addEventListener('click', function () {
document.querySelector('#ref').innerHTML = converter.makeHtml(references[title]);
});
btn.addEventListener('dblclick', function () {
document.querySelector('#ref').innerHTML = '';
delete references[title];
var list = this.parentElement;
list.remove();
saved = false;
textDirty = true;
saveNote();
});
return btn;
}
function retrieveTemplate(orig, dest) { function retrieveTemplate(orig, dest) {
const temp = document.querySelector('#' + orig); const temp = document.querySelector('#' + orig);
if (temp.value == '0') { if (temp.value == '0') {
@ -464,8 +518,14 @@ function previewNote() {
var notePreview = document.querySelector('#notePreview'); var notePreview = document.querySelector('#notePreview');
var previewButton = document.querySelector('#previewBtn'); var previewButton = document.querySelector('#previewBtn');
//notePreview.innerHTML = converter.makeHtml(noteText.value); const title = document.querySelector('#noteTitle');
notePreview.innerHTML = markdownit.render(noteText.value); const speaker = document.querySelector('#speaker');
const passage = document.querySelector('#passage');
const markdownPreview = "# " + title.value + " - " +
speaker.options[speaker.selectedIndex].text + " - " + passage.value + "\n\n" + noteText.value;
notePreview.innerHTML = md.render(markdownPreview);
if (previewButton.value == 'Preview') { if (previewButton.value == 'Preview') {
previewButton.value = 'Hide Preview'; previewButton.value = 'Hide Preview';
@ -482,7 +542,7 @@ function previewNote() {
function findLinks() { function findLinks() {
var links = document.querySelector('#notePreview').querySelectorAll('a'); var links = document.querySelector('#notePreview').querySelectorAll('a');
alert(links.length); //alert(links.length);
} }
function showSearchNote(event) { function showSearchNote(event) {
@ -519,5 +579,33 @@ function searchNote() {
document.querySelector('#noteSearch').style.display = 'none'; document.querySelector('#noteSearch').style.display = 'none';
link.click(); link.click();
if (result.references) {
references = result.references;
}
const list = document.querySelector('#ref-list');
var newList = null;
for (var x in references) {
var newList = document.createElement('li');
newList.className = 'tab';
var button = makeButton(x);
newList.appendChild(button);
list.appendChild(newList);
}
});
}
/**
* Generates a random UUIDv4 string.
*
* @return {string} The generated UUIDv4 string.
*/
function uuidv4() {
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'
.replace(/[xy]/g, function (c) {
const r = Math.random() * 16 | 0,
v = c == 'x' ? r : (r & 0x3 | 0x8);
return v.toString(16);
}); });
} }