function init() { let infoText = document.getElementById('infoText') infoText.innerHTML = 'Ladataan tehtävälista palvelimelta, odota...' loadJumps() } async function loadJumps() { let response = await fetch('http://localhost:3000/jumps') let jumps = await response.json() console.log(jumps) showJumps(jumps) } function createJumpListItem(jump) { let li = document.createElement('li') let li_attr = document.createAttribute('id') li_attr.value= jump._id li.setAttributeNode(li_attr) let text = document.createTextNode(jump.text) li.appendChild(text) // spanit let edit_span = document.createElement('span') let edit_span_attr = document.createAttribute('class') let del_span = document.createElement('span') let del_span_attr = document.createAttribute('class') // edit edit_span_attr.value = "edit" edit_span.setAttributeNode(edit_span_attr) let edit = document.createTextNode(" edit ") edit_span.appendChild(edit) edit_span.onclick = function() { editJump(jump._id) } li.appendChild(edit_span) // delete del_span_attr.value = 'delete' del_span.setAttributeNode(del_span_attr) let x = document.createTextNode(' x ') del_span.appendChild(x) del_span.onclick = function() { removeJump(jump._id) } li.appendChild(del_span) return li } function showJumps(jumps) { let jumpsList = document.getElementById('jumpsList') let infoText = document.getElementById('infoText') // no jumps if (jumps.length === 0) { infoText.innerHTML = 'Ei tehtäviä' } else { jumps.forEach(jump => { let li = createJumpListItem(jump) jumpsList.appendChild(li) }) infoText.innerHTML = '' } } async function addJump() { let newJumpNumber = document.getElementById('newJumpNumber') let newJumpDate = document.getElementById('newJumpDate') const data = { 'number': newJumpNumber.value, 'date': newJumpDate.value } const response = await fetch('http://localhost:3000/jumps', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) let jump = await response.json() let jumpsList = document.getElementById('jumpsList') let li = createJumpListItem(jump) jumpsList.appendChild(li) let infoText = document.getElementById('infoText') infoText.innerHTML = '' newJump.value = '' } function editJump(id){ let li = document.getElementById(id) let input = document.getElementById("newJump") let jump_content = li.innerHTML.slice(0, -63) input.value = jump_content let button = document.getElementById("btn") button.style.backgroundColor = "yellow" button.innerHTML = "Tallenna" button.onclick = function() { saveJump(id) } } async function saveJump(id){ let newJump = document.getElementById('newJump') const data = { 'text': newJump.value } const response = await fetch('http://localhost:3000/jumps/'+id, { method: 'PUT', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) let jump = await response.json() document.getElementById(jump._id).firstChild.nodeValue = jump.text let addButton = document.getElementById('btn') addButton.setAttribute('onclick', "addJump()") addButton.innerHTML = "Lissee" addButton.style.backgroundColor = "" let infoText = document.getElementById('infoText') infoText.innerHTML = '' newJump.value = '' } async function removeJump(id) { const response = await fetch('http://localhost:3000/jumps/'+id, { method: 'DELETE' }) let responseJson = await response.json() let li = document.getElementById(id) li.parentNode.removeChild(li) let jumpsList = document.getElementById('jumpsList') if (!jumpsList.hasChildNodes()) { let infoText = document.getElementById('infoText') infoText.innerHTML = 'Ei tehtäviä' } }