-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathjava.js
More file actions
146 lines (120 loc) · 5.02 KB
/
java.js
File metadata and controls
146 lines (120 loc) · 5.02 KB
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
const addbutton = document.getElementById("new-task");
const taskinput = document.getElementById("task-input");
const tasklist = document.getElementById("task-list");
const numbers = document.getElementById("numbers");
const progressBar = document.getElementById("progress");
const prioritySelect = document.getElementById("priority-select");
// Load tasks from local storage on page load
loadTask();
updateStats(); // Initialize stats on page load
// Event listener for adding a new task
addbutton.addEventListener('click', addTask);
// Function to add a new task
function addTask() {
const task = taskinput.value.trim();
const priority = prioritySelect.value; // get selected priority
if (task) {
createTaskElement(task, priority);
taskinput.value = '';
updateStats(); // Update stats after adding a new task
} else {
alert("Please enter a task!");
}
}
// Function to create a task element in the list
function createTaskElement(task, priority) {
const listitem = document.createElement('li');
listitem.dataset.priority = priority; // Store priority level as a data attribute
// Create and configure the checkbox
const checkbox = document.createElement('input');
checkbox.type = 'checkbox';
checkbox.className = 'taskCheckbox';
// Create a span to hold the task text
const taskText = document.createElement('span');
taskText.textContent = task;
// Edit button with an edit icon
const editButton = document.createElement('button');
editButton.className = 'editTask';
const editIcon = document.createElement('img');
editIcon.src = "edit.png"; // Set the path to your edit icon image
editIcon.className = 'editIcon'; // Add a class for styling the icon
editButton.appendChild(editIcon);
// Delete button with a delete icon
const deleteButton = document.createElement('button');
deleteButton.className = 'deleteTask';
const deleteIcon = document.createElement('img');
deleteIcon.src = "delete.png"; // Set the path to your delete icon image
deleteIcon.className = 'deleteIcon'; // Add a class for styling the icon
deleteButton.appendChild(deleteIcon);
listitem.appendChild(checkbox);
listitem.appendChild(taskText);
listitem.appendChild(editButton);
listitem.appendChild(deleteButton);
tasklist.appendChild(listitem);
// Event listener for deleting a task
deleteButton.addEventListener('click', function() {
const confirmation = confirm('Are you sure you want to delete this task?');
if (confirmation) {
tasklist.removeChild(listitem);
saveTasks();
updateStats(); // Update stats after deleting a task
}
});
// Event listener for editing a task
editButton.addEventListener('click', function() {
const editField = document.createElement('input');
editField.type = 'text';
editField.value = taskText.textContent;
editField.className = 'editField';
listitem.replaceChild(editField, taskText);
editField.addEventListener('blur', function() {
taskText.textContent = editField.value.trim();
listitem.replaceChild(taskText, editField);
saveTasks();
});
editField.addEventListener('keypress', function(e) {
if (e.key === 'Enter') {
editField.blur();
}
});
editField.focus();
});
// Event listener for checkbox change
checkbox.addEventListener('change', function() {
if (checkbox.checked) {
listitem.classList.add('completed');
tasklist.appendChild(listitem); // To append the checked lists to the end of the unchecked list
} else {
listitem.classList.remove('completed');
}
saveTasks();
updateStats(); // Update stats when a task is checked/unchecked
});
saveTasks();
}
// Function to save tasks to local storage
function saveTasks() {
let tasks = [];
tasklist.querySelectorAll('li').forEach(function(item) {
tasks.push({
name: item.querySelector('span').textContent.trim(),
priority: item.dataset.priority // Save priority level
});
});
localStorage.setItem('tasks', JSON.stringify(tasks));
}
// Function to load tasks from local storage
function loadTask() {
const tasks = JSON.parse(localStorage.getItem('tasks')) || [];
tasks.forEach(task => {
createTaskElement(task.name, task.priority);
});
}
// Function to update task statistics
function updateStats() {
const totalTasks = tasklist.querySelectorAll('li').length;
const completedTasks = tasklist.querySelectorAll('li.completed').length;
numbers.textContent = `${completedTasks}/${totalTasks}`;
const progressPercent = totalTasks === 0 ? 0 : (completedTasks / totalTasks) * 100;
progressBar.style.width = `${progressPercent}%`;
}