Scriccpt
Scriccpt
Scriccpt
* [
* {
* id: <int>
* task: <string>
* timestamp: <string>
* isCompleted: <boolean>
* }
* ]
*/
const todos = [];
const RENDER_EVENT = 'render-todo';
const SAVED_EVENT = 'saved-todo';
const STORAGE_KEY = 'TODO_APPS';
function generateId() {
return +new Date();
}
function findTodo(todoId) {
for (const todoItem of todos) {
if (todoItem.id === todoId) {
return todoItem;
}
}
return null;
}
function findTodoIndex(todoId) {
for (const index in todos) {
if (todos[index].id === todoId) {
return index;
}
}
return -1;
}
/**
* Fungsi ini digunakan untuk memeriksa apakah localStorage didukung oleh browser
atau tidak
*
* @returns boolean
*/
function isStorageExist() /* boolean */ {
if (typeof (Storage) === undefined) {
alert('Browser kamu tidak mendukung local storage');
return false;
}
return true;
}
/**
* Fungsi ini digunakan untuk menyimpan data ke localStorage
* berdasarkan KEY yang sudah ditetapkan sebelumnya.
*/
function saveData() {
if (isStorageExist()) {
const parsed /* string */ = JSON.stringify(todos);
localStorage.setItem(STORAGE_KEY, parsed);
document.dispatchEvent(new Event(SAVED_EVENT));
}
}
/**
* Fungsi ini digunakan untuk memuat data dari localStorage
* Dan memasukkan data hasil parsing ke variabel {@see todos}
*/
function loadDataFromStorage() {
const serializedData /* string */ = localStorage.getItem(STORAGE_KEY);
let data = JSON.parse(serializedData);
document.dispatchEvent(new Event(RENDER_EVENT));
}
function makeTodo(todoObject) {
if (isCompleted) {
container.append(undoButton, trashButton);
} else {
container.append(checkButton);
}
return container;
}
function addTodo() {
const textTodo = document.getElementById('title').value;
const timestamp = document.getElementById('date').value;
document.dispatchEvent(new Event(RENDER_EVENT));
saveData();
}
todoTarget.isCompleted = true;
document.dispatchEvent(new Event(RENDER_EVENT));
saveData();
}
todos.splice(todoTarget, 1);
document.dispatchEvent(new Event(RENDER_EVENT));
saveData();
}
todoTarget.isCompleted = false;
document.dispatchEvent(new Event(RENDER_EVENT));
saveData();
}
document.addEventListener('DOMContentLoaded', function () {
if (isStorageExist()) {
loadDataFromStorage();
}
});
document.addEventListener(SAVED_EVENT, () => {
console.log('Data berhasil di simpan.');
});
document.addEventListener(RENDER_EVENT, function () {
const uncompletedTODOList = document.getElementById('todos');
const listCompleted = document.getElementById('completed-todos');