-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscript.js
125 lines (79 loc) · 3.2 KB
/
script.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
let todos = [{
title: "Task 1",
priority: {
name: 'Low',
value: 0
},
description: 'Task 1',
completed: false,
}];
let sortTodosOption = {
sort: 'title'
}
// Items
const todoList = document.getElementById('todoList');
const todoInputTitle = document.getElementById('todoInputTitle');
const todoInputPriority = document.getElementById('todoInputPriority');
const todoInputDescription = document.getElementById('todoInputDescription');
const addTodoButton = document.getElementById('addTodo');
const inputSearch = document.getElementById('inputSearch');
const inputHidenCompletedTodos = document.getElementById('inputHidenCompletedTodos');
const incompletedTodos = document.getElementById('incompletedTodos');
// ========================= Structure of the Table ========================= //
let template = tableTitles();
// ========================= LocalStorage ========================= //
todos = getDataLocalStorage();
// ========================= Render ========================= //
const render = () => {
// ========================= Delete the todo ========================= //
// Deleted items
todos.forEach(deleteItems);
// ========================= Change the todo ========================= //
// Priority Value
todos.forEach(setPriorityValue);
// ========================= Filter Todos ========================= //
// Search todos
const filteredTodos = todos.filter(filterTodos);
// Sort Todos By Title
const sortTodosTitles = filteredTodos.sort(sortTodosByTitle);
// Sort Todos (Options)
const sortTodos = sortTodosTitles.sort(sortTodosByOptions);
// Incompleted Todos
const sortIncompletedTodos = sortTodos.filter(e => !e.completed);
// ========================= Print Todos ========================= //
// Print Data
printData(sortIncompletedTodos, sortTodos);
// ========================= Change the todo ========================= //
// Checked
checkedTodo(sortTodos);
// Change Title
changeTitle(sortTodos);
// Change Description
changeDescription(sortTodos);
// Change Priority
changePrioity(sortTodos);
// ========================= Delete the todo ========================= //
// Delete Todo
deleteTodo(sortTodos);
// ========================= Some Styles ========================= //
// Sort Todos Classes
sortTodosClasses(sortTodos);
// ========================= Reset Values ========================= //
// Reset inputs values when you add a new todo
resetValues();
// ========================= LocalStorage ========================= //
// Set Data in the LocalStorage
setDataLocalStorage();
}; render();
// Add Todo
addTodoButton.addEventListener('click', addNewTodo);
// Hide Completed Todos
inputHidenCompletedTodos.addEventListener('change', render);
// Search
inputSearch.addEventListener('input', render);
// Checked
todoList.addEventListener('click', e => (e.target.className === 'input-checkbox') ? render() : null);
// Delete Todo
todoList.addEventListener('click', e => (e.target.className === 'delete-todo') ? render() : null);
// Navbar Efect
window.addEventListener('scroll', navbarEfect);