mirror of
https://gitea.smigz.com/smiggiddy/odin-codeprojects.git
synced 2024-12-27 14:40:43 -05:00
feat: local storage added
This commit is contained in:
parent
5a9f303e80
commit
f18b11a22b
3 changed files with 46 additions and 6 deletions
14
todo/src/components/storage.js
Normal file
14
todo/src/components/storage.js
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
function save(data) {
|
||||||
|
let json = JSON.stringify(data);
|
||||||
|
localStorage.setItem('todoList', json);
|
||||||
|
}
|
||||||
|
|
||||||
|
function load() {
|
||||||
|
const data = localStorage.getItem('todoList');
|
||||||
|
if (data) {
|
||||||
|
return data;
|
||||||
|
} else
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
export { save, load };
|
|
@ -21,9 +21,16 @@ function createProject(name) {
|
||||||
|
|
||||||
class todoHandler {
|
class todoHandler {
|
||||||
// Create default project during construction
|
// Create default project during construction
|
||||||
constructor() {
|
constructor(projects=null) {
|
||||||
|
if (projects) {
|
||||||
|
this.projects = projects;
|
||||||
|
} else {
|
||||||
this.projects = [new createProject('default')];
|
this.projects = [new createProject('default')];
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
getEverything() { return this.projects }
|
||||||
|
|
||||||
|
|
||||||
getTodos() {
|
getTodos() {
|
||||||
return this.projects.map(item => item.todos);
|
return this.projects.map(item => item.todos);
|
||||||
|
@ -67,7 +74,15 @@ class todoHandler {
|
||||||
return todoArr.find(todo => todo.title === title);
|
return todoArr.find(todo => todo.title === title);
|
||||||
}
|
}
|
||||||
|
|
||||||
addProject = name => this.projects.push(createProject(name));
|
addProject(name) {
|
||||||
|
let exists = this.projects.find(x => x.name === name);
|
||||||
|
if (!exists) {
|
||||||
|
this.projects.push(createProject(name));
|
||||||
|
return
|
||||||
|
}
|
||||||
|
console.log(`Project ${name} already exists!`);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
getProjects () {
|
getProjects () {
|
||||||
return this.projects.map(item => item.name);
|
return this.projects.map(item => item.name);
|
||||||
|
|
|
@ -1,15 +1,26 @@
|
||||||
import { todoHandler } from "./components/todo";
|
import { todoHandler } from "./components/todo";
|
||||||
|
import { save, load } from "./components/storage";
|
||||||
|
|
||||||
let todos = new todoHandler();
|
let todos; let data = load();
|
||||||
|
|
||||||
|
// if there's local data save it in the array
|
||||||
|
if (data) {
|
||||||
|
let jsonData = JSON.parse(data);
|
||||||
|
todos = new todoHandler(jsonData);
|
||||||
|
} else {
|
||||||
|
todos = new todoHandler();
|
||||||
|
}
|
||||||
|
|
||||||
// todoHandler().addTodo('default', 'test', 'some stuff', 'today', 5);
|
// todoHandler().addTodo('default', 'test', 'some stuff', 'today', 5);
|
||||||
todos.addProject('chores');
|
todos.addProject('job');
|
||||||
todos.addTodo('default', 'test default 2', 'some stuff', 'today', 5);
|
todos.addTodo('default', 'test default 2', 'some stuff', 'today', 5);
|
||||||
todos.addTodo('default', 'default 2', 'some stuff', 'today', 5);
|
todos.addTodo('default', 'default 2', 'some stuff', 'today', 5);
|
||||||
// todos.addTodo('chores', 'choretest', 'some stuff', 'today', 5);
|
// todos.addTodo('chores', 'choretest', 'some stuff', 'today', 5);
|
||||||
console.log(todos.getTodos());
|
|
||||||
// todos.delProject('de');
|
// todos.delProject('de');
|
||||||
// todos.editTodo('default', 'test', 'stuffing', 'tomorrow', 4);
|
// todos.editTodo('default', 'test', 'stuffing', 'tomorrow', 4);
|
||||||
// console.log(todos.getTodos());
|
// console.log(todos.getTodos());
|
||||||
// todos.deleteTodo('chores', 'choretest');
|
// todos.deleteTodo('chores', 'choretest');
|
||||||
// console.log(todos.getTodos());
|
// console.log(todos.getTodos());
|
||||||
|
//
|
||||||
|
//
|
||||||
|
save(todos.getEverything());
|
||||||
|
|
Loading…
Reference in a new issue