const tasksDOM = document.querySelector('.tasks')
const loadingDOM = document.querySelector('.loading-text')
const formDOM = document.querySelector('.task-form')
const taskInputDOM = document.querySelector('.task-input')
const formAlertDOM = document.querySelector('.form-alert')
// Load tasks from /api/tasks
const showTasks = async () => {
loadingDOM.style.visibility = 'visible'
try {
const {
data: { tasks },
} = await axios.get('/api/v1/tasks')
if (tasks.length < 1) {
tasksDOM.innerHTML = '
No tasks in your list
'
loadingDOM.style.visibility = 'hidden'
return
}
const allTasks = tasks
.map((task) => {
const { completed, _id: taskID, name } = task
return ``
})
.join('')
tasksDOM.innerHTML = allTasks
} catch (error) {
tasksDOM.innerHTML =
'There was an error, please try later....
'
}
loadingDOM.style.visibility = 'hidden'
}
showTasks()
// delete task /api/tasks/:id
tasksDOM.addEventListener('click', async (e) => {
const el = e.target
if (el.parentElement.classList.contains('delete-btn')) {
loadingDOM.style.visibility = 'visible'
const id = el.parentElement.dataset.id
try {
await axios.delete(`/api/v1/tasks/${id}`)
showTasks()
} catch (error) {
console.log(error)
}
}
loadingDOM.style.visibility = 'hidden'
})
// form
formDOM.addEventListener('submit', async (e) => {
e.preventDefault()
const name = taskInputDOM.value
try {
await axios.post('/api/v1/tasks', { name })
showTasks()
taskInputDOM.value = ''
formAlertDOM.style.display = 'block'
formAlertDOM.textContent = `success, task added`
formAlertDOM.classList.add('text-success')
} catch (error) {
formAlertDOM.style.display = 'block'
formAlertDOM.innerHTML = `error, please try again`
}
setTimeout(() => {
formAlertDOM.style.display = 'none'
formAlertDOM.classList.remove('text-success')
}, 3000)
})