Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
function init() {
let infoText = document.getElementById('infoText')
infoText.innerHTML = 'Ladataan tehtävälista palvelimelta, odota...'
loadTodos()
}
async function loadTodos() {
let response = await fetch('http://localhost:3000/jumps')
let jumps = await response.json()
console.log(jumps)
showTodos(jumps)
}
function createTodoListItem(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() { editTodo(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() { removeTodo(jump._id) }
li.appendChild(del_span)
return li
}
function showTodos(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 = createTodoListItem(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 = createTodoListItem(jump)
jumpsList.appendChild(li)
let infoText = document.getElementById('infoText')
infoText.innerHTML = ''
newTodo.value = ''
}
function editTodo(id){
let li = document.getElementById(id)
let input = document.getElementById("newTodo")
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() { saveTodo(id) }
}
async function saveTodo(id){
let newTodo = document.getElementById('newTodo')
const data = { 'text': newTodo.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 = ''
newTodo.value = ''
}
async function removeTodo(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ä'
}
}