68 lines
1.9 KiB
JavaScript
68 lines
1.9 KiB
JavaScript
import taskList from "task_list";
|
|
import Task from "task";
|
|
import * as dom from "DOM";
|
|
|
|
const displayTasks = () => {
|
|
taskList.sortByDueDate();
|
|
|
|
const select = dom.get("#tasks");
|
|
select.textContent = ""; // clear previous tasks
|
|
|
|
for (let task of taskList) {
|
|
const opt = document.createElement("option");
|
|
opt.appendChild(document.createTextNode(task));
|
|
select.appendChild(opt);
|
|
}
|
|
dom.focus("#task");
|
|
}
|
|
|
|
dom.load(() => {
|
|
dom.addClick("#add_task", () => {
|
|
dom.clear("#msg"); // clear any previous message
|
|
|
|
const newTask = new Task(
|
|
dom.getValue("#task"),
|
|
dom.getValue("#due_date"));
|
|
|
|
let message = "";
|
|
if (newTask.description === "") {
|
|
message = "Task is required. ";
|
|
}
|
|
if (newTask.hasInvalidDueDate || newTask.isPastDue) {
|
|
message += "Due Date must be a valid date in the future."
|
|
}
|
|
|
|
if (message === "") {
|
|
taskList.load().add(newTask).save();
|
|
dom.clear("#task");
|
|
dom.clear("#due_date");
|
|
displayTasks();
|
|
} else {
|
|
dom.setText("#msg", message);
|
|
dom.select("#task");
|
|
}
|
|
});
|
|
|
|
dom.addClick("#clear_tasks", () => {
|
|
taskList.clear();
|
|
dom.clear("#tasks");
|
|
dom.clear("#task");
|
|
dom.clear("#due_date");
|
|
dom.clear("#msg");
|
|
dom.focus("#task");
|
|
});
|
|
|
|
dom.addClick("#delete_task", () => {
|
|
dom.clear("#msg"); // clear any previous message
|
|
|
|
const index = dom.get("#tasks").selectedIndex;
|
|
if (index === -1) {
|
|
dom.setText("#msg", "Please select a task to delete.");
|
|
} else {
|
|
taskList.load().delete(index).save();
|
|
displayTasks();
|
|
}
|
|
});
|
|
taskList.load()
|
|
displayTasks();
|
|
}); |