-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.js
132 lines (111 loc) · 3.8 KB
/
app.js
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
128
129
130
131
132
// Tüm Elementlerin Seçimi
const form = document.querySelector("#todo-form");
const todoInput = document.querySelector("#todo");
const todoList = document.querySelector(".list-group");
const firstCardBody = document.querySelectorAll(".card-body")[0];
const secondsCardBody = document.querySelectorAll(".card-body")[1];
const filter = document.querySelector("#filter");
const clearButton = document.querySelector("#clear-todos");
eventListener();
function eventListener() {
form.addEventListener("submit", (addTodo) => {
const newTodo = todoInput.value.trim();
if (newTodo === "") {
showAlert("danger", "Lütfen bir todo girin...");
} else {
addTodoToUI(newTodo);
addTodoToStorage(newTodo);
showAlert("success", "Başarıyla Eklendi...");
}
addTodo.preventDefault();
});
// Sayfa Yüklendiğinde Todoları Yükleme...
document.addEventListener("DOMContentLoaded", (loadAllTodosToUI) => {
let todos = getTodosFromStorage();
todos.forEach((todo) => {
addTodoToUI(todo);
});
});
// Todoları Arayüzden Silme
secondsCardBody.addEventListener("click", (deleteTodo) => {
if (deleteTodo.target.className === "fa fa-remove") {
deleteTodo.target.parentElement.parentElement.remove();
showAlert("success", "Todo başarıyla silindi...");
}
deleteTodoFormStorage(deleteTodo.target.parentElement.parentElement.textContent);
});
// Todoları Filtreleme
filter.addEventListener("keyup", (filterTodos) => {
const filterValue = filterTodos.target.value.toLowerCase();
const listItems = document.querySelectorAll(".list-group-item");
listItems.forEach((listItem) => {
const text = listItem.textContent.toLowerCase();
if (text.indexOf(filterValue) === -1) {
//Bulamadı
listItem.setAttribute("style", "display:none !important");
} else {
listItem.setAttribute("style", "display:block");
}
});
});
// Tüm Todoları Temizleme
clearButton.addEventListener("click", (clearAllTodo) => {
//Arayüzden Todoları Temizleme
if (confirm("Tüm taskları silmek istediğinize emin misiniz? ")) {
while(todoList.firstElementChild != null){
todoList.removeChild(todoList.firstElementChild);
}
localStorage.removeItem("todos"); // Tüm Local Storageleri Silme
}
});
}
// Todoları Storageden Silme
function deleteTodoFormStorage(deletetodo) {
let todos = getTodosFromStorage();
todos.forEach((todo, index) => {
if (todo === deletetodo) {
todos.splice(index, 1); // Arraydan değeri silme
}
localStorage.setItem("todos", JSON.stringify(todos));
});
}
function getTodosFromStorage() { // Storagedan Todoları Alma
let todos;
if (localStorage.getItem("todos") === null) {
todos = [];
} else {
todos = JSON.parse(localStorage.getItem("todos"));
}
return todos;
}
function addTodoToStorage(newTodo) {
let todos = getTodosFromStorage();
todos.push(newTodo);
localStorage.setItem("todos", JSON.stringify(todos));
}
function showAlert(type, message) {
const alert = document.createElement("div");
alert.className = `alert alert-${type}`;
alert.textContent = message;
firstCardBody.appendChild(alert);
//setTimeout
setTimeout(function() {
alert.remove();
}, 2000);
};
function addTodoToUI(newTodo) {
// List item oluşturma
const listItem = document.createElement("li");
// Link oluşturma
const link = document.createElement("a");
link.href = "#";
link.className = "delete-item";
link.innerHTML = "<i class ='fa fa-remove'></i>";
listItem.className = "list-group-item d-flex justify-content-between";
// Text Node Ekleme
listItem.appendChild(document.createTextNode(newTodo));
listItem.appendChild(link);
// Todo List'e list item'ı ekleme
todoList.appendChild(listItem);
todoInput.value = "";
}