Skip to content
Snippets Groups Projects
code.js 5.55 KiB
Newer Older
AA2875's avatar
AA2875 committed
function init() {
    let infoText = document.getElementById('infoText')
    infoText.innerHTML = 'Ladataan tehtävälista palvelimelta, odota...'
AA2875's avatar
AA2875 committed
    loadJumps()
AA2875's avatar
AA2875 committed
}

AA2875's avatar
AA2875 committed
async function loadJumps() {
AA2875's avatar
AA2875 committed
    let response = await fetch('http://localhost:3000/jumps')
    let jumps = await response.json()
    console.log(jumps)
AA2875's avatar
AA2875 committed
    showJumps(jumps)
AA2875's avatar
AA2875 committed
}

AA2875's avatar
AA2875 committed
function createJumpListItem(jump) {    
AA2875's avatar
AA2875 committed
    let li = document.createElement('li')
AA2875's avatar
AA2875 committed
    let li_attr_id = document.createAttribute('id')
    let li_attr_class = document.createAttribute('class')
    li_attr_class.value = 'jumpItem'
    li.setAttributeNode(li_attr_class)
    li_attr_id.value = jump._id
    li.setAttributeNode(li_attr_id)
AA2875's avatar
AA2875 committed

AA2875's avatar
AA2875 committed
    let spanDate = document.createElement('span')
    let spanClassDate = document.createAttribute('class')
    spanClassDate.value = 'headerJumpDate'
    spanDate.setAttributeNode(spanClassDate)
AA2875's avatar
AA2875 committed
    let jumpDate = document.createTextNode(jump.date)
AA2875's avatar
AA2875 committed
    spanDate.appendChild(jumpDate)
    let jumpHeader = document.createTextNode('#' + jump.number)
    li.appendChild(jumpHeader)
    li.appendChild(spanDate)
AA2875's avatar
AA2875 committed

AA2875's avatar
AA2875 committed
    let spanMore = document.createElement('span')
    let spanClassMore = document.createAttribute('class')
    spanClassMore.value = 'headerMore'
    spanMore.setAttributeNode(spanClassMore)
    let moreButton = document.createTextNode('')
    spanMore.appendChild(moreButton)
    li.appendChild(spanMore)
    
    return li
}
AA2875's avatar
AA2875 committed

// function createJumpListItem(jump) {    // Tähän sisennys hommat
//     let li = document.createElement('li')
//     let li_attr = document.createAttribute('id')
//     li_attr.value = jump._id
//     li.setAttributeNode(li_attr)
//     let jumpSpecs = document.createTextNode(jump.number + " " + jump.date)
//     li.appendChild(jumpSpecs)
//     // 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
// }

AA2875's avatar
AA2875 committed
function showJumps(jumps) {
AA2875's avatar
AA2875 committed
    let jumpsList = document.getElementById('jumpsList')
    let infoText = document.getElementById('infoText')
    // no jumps
    if (jumps.length === 0) {
AA2875's avatar
AA2875 committed
        infoText.innerHTML = 'Ei hyppyjä'
AA2875's avatar
AA2875 committed
    } else {    
AA2875's avatar
AA2875 committed
        jumps.slice().reverse().forEach(jump => {
AA2875's avatar
AA2875 committed
            let li = createJumpListItem(jump)        
AA2875's avatar
AA2875 committed
            jumpsList.appendChild(li)
        })
    infoText.innerHTML = ''
    }
}

async function addJump() {
    let newJumpNumber = document.getElementById('newJumpNumber')
    let newJumpDate = document.getElementById('newJumpDate')
AA2875's avatar
AA2875 committed
    let newJumpHeight = document.getElementById('newJumpHeight')
    let newJumpFalltime = document.getElementById('newJumpFalltime')
AA2875's avatar
AA2875 committed
    const data = { 
        'number': newJumpNumber.value,
AA2875's avatar
AA2875 committed
        'date': newJumpDate.value,
        'height': newJumpHeight.value,
        'falltime':newJumpFalltime.value
AA2875's avatar
AA2875 committed
    }
    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')
AA2875's avatar
AA2875 committed
    let li = createJumpListItem(jump)
AA2875's avatar
AA2875 committed
    jumpsList.appendChild(li)
  
    let infoText = document.getElementById('infoText')
    infoText.innerHTML = ''
AA2875's avatar
AA2875 committed
    newJumpNumber.value = ''
    newJumpDate.value = ''
AA2875's avatar
AA2875 committed
    newJumpHeight.value = ''
    newJumpFalltime.value = ''
AA2875's avatar
AA2875 committed
}

AA2875's avatar
AA2875 committed
function editJump(id){
AA2875's avatar
AA2875 committed
    let li = document.getElementById(id)
AA2875's avatar
AA2875 committed
    let number = document.getElementById("newJumpNumber")
AA2875's avatar
AA2875 committed
    let jump_content = li.innerHTML.slice(0, -63)
AA2875's avatar
AA2875 committed
    number.value = jump_content
    let button = document.getElementById("addJumpBtn")
AA2875's avatar
AA2875 committed
    button.style.backgroundColor = "yellow"
    button.innerHTML = "Tallenna"
AA2875's avatar
AA2875 committed
    button.onclick = function() { saveJump(id) }
AA2875's avatar
AA2875 committed
}

AA2875's avatar
AA2875 committed
async function saveJump(id){  // Erheitä esim text newJump.value
AA2875's avatar
AA2875 committed
    let newJump = document.getElementById('newJump')
    const data = { 'text': newJump.value }
AA2875's avatar
AA2875 committed
    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 = ''
AA2875's avatar
AA2875 committed
    newJump.value = ''
AA2875's avatar
AA2875 committed
}

AA2875's avatar
AA2875 committed
async function removeJump(id) {
AA2875's avatar
AA2875 committed
    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ä'
    }
}