Skip to content

Instantly share code, notes, and snippets.

@AviTapp
Last active December 26, 2017 19:06
Show Gist options
  • Save AviTapp/28f58ea9d51df631e3d9168c70d3e6d7 to your computer and use it in GitHub Desktop.
Save AviTapp/28f58ea9d51df631e3d9168c70d3e6d7 to your computer and use it in GitHub Desktop.
Create a basic ToDo list, focusing primarily on JavaScript
var todoList = {
todos: [],
addTodo: function(e) {
this.todos.push({
todoText: e,
completed: !1
})
},
changeTodo: function(e, t) {
this.todos[e].todoText = t
},
deleteTodo: function(e) {
this.todos.splice(e, 1)
},
toggleCompleted: function(e) {
var t = this.todos[e];
t.completed = !t.completed
},
toggleAll: function() {
var e = this.todos.length,
t = 0;
this.todos.forEach(function(e) {
!0 === e.completed && t++
}), this.todos.forEach(function(o) {
o.completed = t !== e
})
}
},
handlers = {
addTodo: function() {
var e = document.getElementById("addTodoTextInput");
todoList.addTodo(e.value), e.value = "", view.displayTodos()
},
changeTodo: function() {
var e = document.getElementById("changeTodoPositionInput"),
t = document.getElementById("changeTodoTextInput");
todoList.changeTodo(e.valueAsNumber, t.value), e.value = "", t.value = "", view.displayTodos()
},
deleteTodo: function(e) {
todoList.deleteTodo(e), view.displayTodos()
},
toggleCompleted: function() {
var e = document.getElementById("toggleCompletedPositionInput");
todoList.toggleCompleted(e.valueAsNumber), e.value = "", view.displayTodos()
},
toggleAll: function() {
todoList.toggleAll(), view.displayTodos()
}
},
view = {
displayTodos: function() {
var e = document.querySelector("ul");
e.innerHTML = "", todoList.todos.forEach(function(t, o) {
var d = document.createElement("li"),
n = "";
n = !0 === t.completed ? "(x) " + t.todoText : "( ) " + t.todoText, d.id = o, d.textContent = n, d.appendChild(this.createDeleteButton()), e.appendChild(d)
}, this)
},
createDeleteButton: function() {
var e = document.createElement("button");
return e.textContent = "Delete", e.className = "deleteButton", e
},
setUpEventListeners: function() {
document.querySelector("ul").addEventListener("click", function(e) {
var t = e.target;
"deleteButton" === t.className && handlers.deleteTodo(parseInt(t.parentNode.id))
})
}
};
view.setUpEventListeners();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment