55 lines
2.0 KiB
JavaScript
55 lines
2.0 KiB
JavaScript
import { state } from './state.js';
|
|
/**
|
|
* Toggles the display of the new speaker input field and hides the speaker select field.
|
|
*
|
|
* @return {void} This function does not return anything.
|
|
*/
|
|
export function newSpeaker() {
|
|
if (document.querySelector('#speaker').value == 'new') {
|
|
document.querySelector('#newSpeaker').style.display = 'inline-block';
|
|
document.querySelector('#speaker').style.display = 'none';
|
|
}
|
|
|
|
state.saved = false;
|
|
state.textDirty = true;
|
|
}
|
|
|
|
/**
|
|
* Saves a new speaker to the database and updates the UI with the new speaker option.
|
|
*
|
|
* @param {Event} event - The keydown event triggered by the user.
|
|
* @return {Promise} A Promise that resolves with the results of the fetch request.
|
|
*/
|
|
export function saveSpeaker(event) {
|
|
if (event.keyCode == 27) {
|
|
document.querySelector('#newSpeaker').style.display = 'none';
|
|
document.querySelector('#speaker').style.display = 'inline-block';
|
|
document.querySelector('#speaker').value = 0;
|
|
}
|
|
if (event.keyCode == 13 && document.querySelector('#newSpeaker').value != '') {
|
|
fetch('/save-speaker', {
|
|
method: 'POST',
|
|
headers: {
|
|
'Content-Type': 'application/json'
|
|
},
|
|
body: JSON.stringify({
|
|
'speakerName': document.querySelector('#newSpeaker').value
|
|
})
|
|
})
|
|
.then(response => response.json())
|
|
.then(results => {
|
|
var newSpeaker = document.createElement('option');
|
|
newSpeaker.text = document.querySelector('#newSpeaker').value;
|
|
newSpeaker.value = results.id;
|
|
document.querySelector('#speaker').add(newSpeaker);
|
|
|
|
alert(results.msg);
|
|
document.querySelector('#newSpeaker').style.display = 'none';
|
|
document.querySelector('#speaker').style.display = 'inline-block';
|
|
|
|
document.querySelector('#newSpeaker').value = '';
|
|
document.querySelector('#speaker').value = results.id;
|
|
});
|
|
}
|
|
}
|