58 lines
1.2 KiB
JavaScript
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));
|