formations/javascript/base/exercices/vanilla-todos/vanilla-todos.js

58 lines
1.2 KiB
JavaScript

(function(VT, window) {
"use strict";
// Déclaration des variables
var _rootEl; // Élement racine de notre application
var _todos = []; // Notre liste de todos
var document = window.document; // Alias
/***************
* API publique
***************/
/*
* "Monte" l'application VanillaTodo sur l'élément du DOM
* correspondant au sélecteur CSS donné
*/
VT.mount = function(selector) {
_rootEl = document.querySelector(selector);
if(!_rootEl) {
throw new Error('Invalid selector "'+selector+'" !');
}
_todos = _loadTodos();
// A vous de compléter !
};
/**************
* API privée
**************/
/*
* Charge les tâches depuis le localStorage
*
* Retourne les tâches sous la forme d'un tableau d'objets
*/
function _loadTodos() {
var todosStr = window.localStorage.getItem('vanillaTodos.todos');
return JSON.parse(todosStr || '[]');
}
/*
* Sauvegarde le tableau de tâches donné dans le localStorage
*
* Ne retourne rien
*/
function _saveTodos(todos) {
var todosStr = JSON.stringify(todos);
window.localStorage.setItem('vanillaTodos.todos', todosStr);
}
}(this.VanillaTodos = this.VanillaTodos || {}, window));