1. Rapport sur les bugs trouvés - Nicodev17/Todo_list_app_recovery GitHub Wiki
Bugs présents dans le code de base de l'application
Premier Bug : Faute de Frappe
Un 'd' était en trop dans l'appel de la fonction addItem dans controller.js
Controller.prototype.addItem = function (title) {
var self = this;
if (title.trim() === '') {
return;
}
self.model.create(title, function () {
self.view.render('clearNewTodo');
self._filter(true);
});
};
Controller.prototype.adddItem au lieu de Controller.prototype.addItem
Deuxième bug : Génération défaillante des ID pour chaque tâche
Dans store.js, la méthode de création des ID pour chacune des tâches n'était pas optimale et laissait passer l'éventualité que 2 ID soient identiques.
Il était donc impératif d'optimiser cette génération pour éviter les conflits lors d'une suppression de tâche par exemple.
Pour cela nous avons utilisé la méthode Date.now() qui retourne un nombre unique correspondant aux millisecondes écoulées depuis le 1er Janvier 1970 à 00:00:00, avec cette technique nous obtenons bien un ID unique pour chaque tâche.
Store.prototype.save = function (updateData, callback, id) {
var data = JSON.parse(localStorage[this._dbName]);
var todos = data.todos;
callback = callback || function () {};
if (id) {
for (var i = 0; i < todos.length; i++) {
if (todos[i].id === id) {
for (var key in updateData) {
todos[i][key] = updateData[key];
}
break;
}
}
localStorage[this._dbName] = JSON.stringify(data);
callback.call(this, todos);
} else {
updateData.id = Date.now();
todos.push(updateData);
localStorage[this._dbName] = JSON.stringify(data);
callback.call(this, [updateData]);
}
};
Suite à la résolution de ces bugs majeurs l'application s'est mise à refonctionner correctement.