236 lines
6.5 KiB
JavaScript
236 lines
6.5 KiB
JavaScript
|
// Get the link element
|
||
|
const link = document.querySelector('.hamburger');
|
||
|
var converter = null;
|
||
|
var references = {};
|
||
|
|
||
|
// Add an event listener to the link
|
||
|
if (link) {
|
||
|
link.addEventListener('click', function () {
|
||
|
// Toggle the class of the link to open or close the menu
|
||
|
document.querySelector('ul.hamburger-list').classList.toggle('menu-open');
|
||
|
});
|
||
|
}
|
||
|
|
||
|
function setHeight() {
|
||
|
converter = new showdown.Converter();
|
||
|
converter.setFlavor('github');
|
||
|
|
||
|
body = document.querySelector('body');
|
||
|
body.style.height = window.innerHeight + 'px';
|
||
|
|
||
|
cont = document.querySelector('.container');
|
||
|
cont.style.height = (window.innerHeight - 50) + 'px';
|
||
|
|
||
|
tabs = document.querySelector('.ref-tab');
|
||
|
tabs.style.height = (window.innerHeight - 60) + 'px';
|
||
|
|
||
|
ref = document.querySelector('.ref');
|
||
|
ref.style.height = (window.innerHeight - 125) + 'px';
|
||
|
|
||
|
notes = document.querySelector('.notes');
|
||
|
notes.style.height = (window.innerHeight - 150) + 'px';
|
||
|
|
||
|
setTimeout(saveNote, 5000);
|
||
|
}
|
||
|
|
||
|
function newNote() {
|
||
|
notes = document.querySelector('.notes');
|
||
|
notes.textContent = '';
|
||
|
}
|
||
|
|
||
|
function openNote() {
|
||
|
|
||
|
}
|
||
|
|
||
|
function saveNote(event) {
|
||
|
event.preventDefault();
|
||
|
|
||
|
if(!validateNote()) {
|
||
|
setTimeout(saveNote, 5000);
|
||
|
return;
|
||
|
}
|
||
|
fetch('/index.php/save-note', {
|
||
|
method: 'POST',
|
||
|
headers: {
|
||
|
"Content-Type": 'application/x-www-form-urlencoded'
|
||
|
},
|
||
|
body: {
|
||
|
title: document.querySelector('#noteTitle').value,
|
||
|
speaker: document.querySelector('#speaker').value,
|
||
|
series: document.querySelector('#series').value,
|
||
|
note: document.querySelector('#notes').textContent
|
||
|
}
|
||
|
.then(response => response.text)
|
||
|
.then(results => {
|
||
|
results = JSON.parse(results);
|
||
|
alert(results);
|
||
|
showSave();
|
||
|
})
|
||
|
});
|
||
|
setTimeout(saveNote, 5000);
|
||
|
}
|
||
|
|
||
|
function validateNote() {
|
||
|
const note = document.querySelector('#notes');
|
||
|
const speaker = document.querySelector('#speaker');
|
||
|
const series = document.querySelector('#series');
|
||
|
const title = document.querySelector('#noteTitle');
|
||
|
|
||
|
if(!title.value.length) {return false;}
|
||
|
|
||
|
if(!speaker.value) {return false;}
|
||
|
|
||
|
if(!series.value) {return false;}
|
||
|
|
||
|
if(!note.textContent.length) {return false;}
|
||
|
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
function showSave() {// Get the element that will display the checkmark
|
||
|
var checkmark = document.getElementById("save-check");
|
||
|
|
||
|
// Schedule the animation to run every 1 second (which is equivalent to a 1-second delay between each iteration)
|
||
|
setInterval(function() {
|
||
|
// Increment the opacity of the checkmark by 0.01 each time
|
||
|
checkmark.style.opacity += 0.1;
|
||
|
|
||
|
// If the opacity is greater than or equal to 1, reset it back to 0 and stop the animation
|
||
|
if (checkmark.style.opacity >= 1) {
|
||
|
checkmark.style.opacity = 0;
|
||
|
clearInterval(setInterval);
|
||
|
}
|
||
|
}, 100);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Function to discard the note by clearing all input fields and closing the menu.
|
||
|
*/
|
||
|
function discardNote() {
|
||
|
document.querySelector('#noteTitle').value = '';
|
||
|
document.querySelector('#speaker').value = 0;
|
||
|
document.querySelector('#series').value = 0;
|
||
|
document.querySelector('#template').value = 0;
|
||
|
document.querySelector('#notes').value = '';
|
||
|
|
||
|
openRef();
|
||
|
}
|
||
|
|
||
|
function openRef() {
|
||
|
refQuery = document.querySelector('#refQuery');
|
||
|
if (refQuery.style.display === 'block') {
|
||
|
refQuery.style.display = 'none';
|
||
|
} else {
|
||
|
refQuery.style.display = 'block';
|
||
|
}
|
||
|
|
||
|
menu = document.querySelector('ul.hamburger-list');
|
||
|
refQuery.style.left = (menu.clientLeft + menu.clientWidth) + 'px';
|
||
|
refQuery.style.top = (menu.clientTop + menu.clientHeight) + 'px';
|
||
|
}
|
||
|
|
||
|
function queryRef() {
|
||
|
const input = document.querySelector('#refQuery #search');
|
||
|
fetch('/index.php/retrieve-reference', {
|
||
|
method: 'POST',
|
||
|
headers: {
|
||
|
'Content-Type': 'plain/text'
|
||
|
},
|
||
|
body: JSON.stringify({
|
||
|
'reference': input.value
|
||
|
})
|
||
|
})
|
||
|
.then(response => response.text())
|
||
|
.then(results => {
|
||
|
results = JSON.parse(results);
|
||
|
|
||
|
const list = document.querySelector('#ref-list');
|
||
|
var newList = document.createElement('li');
|
||
|
newList.className = 'tab';
|
||
|
var button = document.createElement('button');
|
||
|
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);
|
||
|
list.appendChild(newList);
|
||
|
|
||
|
const ref = document.querySelector('#ref');
|
||
|
ref.innerHTML = converter.makeHtml(results.text);
|
||
|
|
||
|
references[results.title] = results.text;
|
||
|
|
||
|
input.value = '';
|
||
|
openRef();
|
||
|
link.click();
|
||
|
});
|
||
|
}
|
||
|
|
||
|
function retrieveTemplate(orig, dest) {
|
||
|
const temp = document.querySelector('#' + orig);
|
||
|
if (temp.value == '0') {
|
||
|
document.querySelector('#' + dest).value = '';
|
||
|
return;
|
||
|
}
|
||
|
fetch('/index.php/retrieve-template', {
|
||
|
method: 'POST',
|
||
|
headers: {
|
||
|
'Content-Type': 'plain/text'
|
||
|
},
|
||
|
body: JSON.stringify({
|
||
|
'template': temp.value
|
||
|
})
|
||
|
})
|
||
|
.then(response => response.text())
|
||
|
.then(results => {
|
||
|
const div = document.querySelector('#' + dest);
|
||
|
div.value = results;
|
||
|
});
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Saves the template by sending a POST request to the server with template data.
|
||
|
*/
|
||
|
function saveTemplate() {
|
||
|
fetch('/index.php/save-template', {
|
||
|
method: 'POST',
|
||
|
headers: {
|
||
|
'Content-Type': 'plain/text'
|
||
|
},
|
||
|
body: JSON.stringify({
|
||
|
'template_id': document.querySelector('#template_id').value,
|
||
|
'template_name': document.querySelector('#template_name').value,
|
||
|
'template_value': document.querySelector('#template_value').value,
|
||
|
})
|
||
|
})
|
||
|
.then(response => response.text())
|
||
|
.then(results => {
|
||
|
alert(results);
|
||
|
});
|
||
|
}
|
||
|
|
||
|
function retrieveSeries() {
|
||
|
|
||
|
}
|
||
|
|
||
|
function saveSeries() {
|
||
|
|
||
|
}
|
||
|
|
||
|
function retrieveSpeaker() {
|
||
|
|
||
|
}
|
||
|
|
||
|
function saveSpeaker() {
|
||
|
|
||
|
}
|
||
|
|
||
|
function referenceEditor() {
|
||
|
}
|