diff --git a/.vscode/settings.json b/.vscode/settings.json index 7fa64d5..71ff75e 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,4 +1,4 @@ { - "editor.fontSize": 38, - "terminal.integrated.fontSize": 60 + "editor.fontSize": 15, + "terminal.integrated.fontSize": 10 } \ No newline at end of file diff --git a/config/.env b/config/.env index 4c70e77..f02423f 100644 --- a/config/.env +++ b/config/.env @@ -1,2 +1,2 @@ PORT = 2121 -DB_STRING = mongodb+srv://demo:demo@cluster0.nfzrd.mongodb.net/todolist?retryWrites=true&w=majority +DB_STRING = mongodb+srv://cheekygerold:database8@cluster0.5ojtsvw.mongodb.net/?retryWrites=true&w=majority diff --git a/controllers/todos.js b/controllers/todos.js index b20b1a3..a6a9d8d 100644 --- a/controllers/todos.js +++ b/controllers/todos.js @@ -12,7 +12,7 @@ module.exports = { }, createTodo: async (req, res)=>{ try{ - await Todo.create({todo: req.body.todoItem, completed: false}) + await Todo.create({todo: req.body.todoItem, completed: false, likes:0}) console.log('Todo has been added!') res.redirect('/todos') }catch(err){ @@ -50,5 +50,16 @@ module.exports = { }catch(err){ console.log(err) } + }, + addLike: async (req,res)=>{ + try { + await Todo.findOneAndUpdate({_id:req.body.todoIdFromJSFile},{ + likes: +req.body.likesFromJSFile + 1 + }) + console.log('Added Like'); + res.json('Added Like') + } catch (err) { + console.log(err) + } } } \ No newline at end of file diff --git a/models/Todo.js b/models/Todo.js index 85753af..b09062f 100644 --- a/models/Todo.js +++ b/models/Todo.js @@ -8,6 +8,10 @@ const TodoSchema = new mongoose.Schema({ completed: { type: Boolean, required: true, + }, + likes:{ + type: Number, + required:true, } }) diff --git a/public/js/main.js b/public/js/main.js index b4cfee0..12ab88d 100644 --- a/public/js/main.js +++ b/public/js/main.js @@ -1,6 +1,7 @@ const deleteBtn = document.querySelectorAll('.del') const todoItem = document.querySelectorAll('span.not') const todoComplete = document.querySelectorAll('span.completed') +const likeItem = document.querySelectorAll('.like') Array.from(deleteBtn).forEach((el)=>{ el.addEventListener('click', deleteTodo) @@ -14,6 +15,30 @@ Array.from(todoComplete).forEach((el)=>{ el.addEventListener('click', markIncomplete) }) +Array.from(likeItem).forEach((el)=>{ + el.addEventListener('click', addLike) +}) + +async function addLike(){ + const todoId = this.parentNode.dataset.id + const likeId = this.parentNode.dataset.likes + try{ + const response = await fetch('todos/addLike', { + method: 'put', + headers: {'Content-type': 'application/json'}, + body: JSON.stringify({ + 'todoIdFromJSFile': todoId, + 'likesFromJSFile' : likeId, + }) + }) + const data = await response.json() + console.log(data) + location.reload() + }catch(err){ + console.log(err) + } +} + async function deleteTodo(){ const todoId = this.parentNode.dataset.id try{ diff --git a/routes/todos.js b/routes/todos.js index 5d54fb6..957f183 100644 --- a/routes/todos.js +++ b/routes/todos.js @@ -10,6 +10,8 @@ router.put('/markComplete', todosController.markComplete) router.put('/markIncomplete', todosController.markIncomplete) +router.put('/addLike', todosController.addLike) + router.delete('/deleteTodo', todosController.deleteTodo) module.exports = router \ No newline at end of file diff --git a/views/todos.ejs b/views/todos.ejs index 6e5e061..5433c21 100644 --- a/views/todos.ejs +++ b/views/todos.ejs @@ -11,10 +11,13 @@

Todos