-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscript.js
157 lines (130 loc) · 5.02 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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
document.addEventListener('DOMContentLoaded', function() {
// loading tasks from local storage
loadTasksFromLocalStorage();
// event listener for all add buttons
const addButtons = document.querySelectorAll('.add-btn');
addButtons.forEach(button => {
button.addEventListener('click', function() {
const dayDiv = this.parentElement;
const taskInput = dayDiv.querySelector('.task-input');
const taskText = taskInput.value.trim();
if (taskText !== "") {
addTaskToDay(dayDiv, taskText);
taskInput.value = "";
saveTasksToLocalStorage();
}
});
});
// event listener for 'Enter' key press
const taskInputs = document.querySelectorAll('.task-input');
taskInputs.forEach(input => {
input.addEventListener('keydown', function(event) {
if (event.key === 'Enter') {
const dayDiv = this.parentElement;
const taskText = this.value.trim();
if (taskText !== "") {
addTaskToDay(dayDiv, taskText);
this.value = ""; // clear the input after adding
saveTasksToLocalStorage();
}
}
});
});
});
// drop down
document.addEventListener('DOMContentLoaded', function () {
const dropdown = document.querySelector('.dropdown');
const dropbtn = dropdown.querySelector('.dropbtn');
const defaultLink = dropdown.querySelector('.default-link');
const dropdownContent = dropdown.querySelector('.dropdown-content');
// Set the button's text to match the default link on page load
dropbtn.textContent = defaultLink.textContent;
// Hide the default link when the dropdown is hovered
dropdown.addEventListener('mouseover', function () {
defaultLink.classList.add('hidden'); // Hide the default link
});
// Show the default link again when the dropdown is not hovered
dropdown.addEventListener('mouseleave', function () {
defaultLink.classList.remove('hidden'); // Show the default link
});
// Update button text dynamically if another link is clicked
const dropdownLinks = dropdown.querySelectorAll('.dropdown-content a');
dropdownLinks.forEach(link => {
link.addEventListener('click', function () {
dropbtn.textContent = this.textContent;
});
});
});
function addTaskToDay(dayDiv, taskText, isChecked = false) {
const taskList = dayDiv.querySelector('.task-list');
const li = document.createElement('li');
li.classList.add('task-item'); // Add class for task item
const taskInput = document.createElement('input');
taskInput.type = 'text';
taskInput.value = taskText;
taskInput.classList.add('task');
if (isChecked) {
taskInput.classList.add('checked');
}
// check button
const checkBtn = document.createElement('button');
checkBtn.classList.add('check-btn');
checkBtn.textContent = '✔';
// click event for button
checkBtn.addEventListener('click', function() {
taskInput.classList.toggle('checked');
saveTasksToLocalStorage();
});
// delete button
const deleteBtn = document.createElement('button');
deleteBtn.classList.add('delete-btn');
deleteBtn.textContent = '✖';
// click event for delete
deleteBtn.addEventListener('click', function() {
li.remove();
saveTasksToLocalStorage();
});
// adding elements to list item
li.appendChild(taskInput);
li.appendChild(checkBtn);
li.appendChild(deleteBtn);
// add list item to list
taskList.appendChild(li);
}
function saveTasksToLocalStorage() {
const plannerData = {};
const days = document.querySelectorAll('.day');
days.forEach(day => {
const dayId = day.id;
const taskInputs = day.querySelectorAll('.task-list .task');
const tasks = Array.from(taskInputs).map(input => ({
text: input.value,
checked: input.classList.contains('checked')
}));
plannerData[dayId] = tasks;
});
localStorage.setItem('weeklyPlanner', JSON.stringify(plannerData));
}
function loadTasksFromLocalStorage() {
const plannerData = JSON.parse(localStorage.getItem('weeklyPlanner'));
if (plannerData) {
Object.keys(plannerData).forEach(dayId => {
const dayDiv = document.getElementById(dayId);
const tasks = plannerData[dayId];
tasks.forEach(task => {
addTaskToDay(dayDiv, task.text, task.checked);
});
});
}
}
// clear all button
document.getElementById('clear-weekly-planner').addEventListener('click', function () {
// clearing all task lists
const taskLists = document.querySelectorAll('.task-list');
taskLists.forEach(taskList => {
// clearing all tasks within the list
taskList.innerHTML = '';
})
// clearing local storage
localStorage.removeItem('weeklyPlanner');
});