-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTaskManager.js
More file actions
executable file
·63 lines (55 loc) · 1.95 KB
/
TaskManager.js
File metadata and controls
executable file
·63 lines (55 loc) · 1.95 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
class TaskManager extends Table {
constructor(tableElement, taskPane) {
super(tableElement);
this.taskPane = taskPane;
this.taskBox = document.querySelector("#task-box");
}
get taskBoxText() {
return this.taskBox.value;
}
get selectedTask() {
return document.querySelector("#selected-task");
}
set textBoxText(text="") {
this.taskBox.value = text;
}
addTaskButtonClick(clickEvent) {
if (this.taskBox.value) {
this.addTaskRow(this.taskBox.value);
this.textBoxText = "";
}
}
crossOutTask(clickEvent) {
if (clickEvent.target.getAttribute("type") === "checkbox") {
clickEvent.target.parentElement.parentElement.classList.toggle("task-complete");
clickEvent.target.parentElement.parentElement.removeAttribute("id");
}
}
selectTask(clickEvent) {
const allTasks = document.querySelectorAll(".task-name");
if (
clickEvent.target.parentElement.id !== "selected-task" &&
!clickEvent.target.parentElement.classList.contains("task-complete")
) {
allTasks.forEach((task) => task.parentElement.removeAttribute("id"));
clickEvent.target.parentElement.setAttribute("id", "selected-task");
} else {
clickEvent.target.parentElement.removeAttribute("id");
}
}
addTaskRow(taskName) {
const taskRow = super.createElementWith("tr", {className: "task-row"});
const checkBox = super.createElementWith("td", {
className: "task-checkbox",
innerHTML: "<input type='checkbox'>"
});
const task = super.createElementWith("td", {
className: "task-name",
innerHTML: taskName
});
const editors = super.createElementWith("td", {
className: "editors",
})
super.addRow(taskRow, [checkBox, task, editors]);
}
};