function localStorageInterface(){} localStorageInterface.prototype = { dataset: [], // Contiendra les différents 'dataset' dataset_keys: [], // Contiendra les clés de chaque 'dataset' /* AJOUTE UN ELEMENT AU DATASET DONNE * * @dataset_name Nom du dataset en question * @key Clé à donner à l'élément * @value Valeur de l'élément * * @return error Retourne FALSE si erreur, sinon TRUE * */ set: function(dataset_name, key, value){ var index = this.dataset.indexOf(dataset_name); /* (1) Si le 'dataset' n'existe pas */ if( index == -1 ) return false; // erreur /* (2) On enregistre la nouvelle clé */ this.dataset_keys[index].push(key); localStorage.setItem(dataset_name, this.dataset_keys[index].join(',')); /* (3) On propage au 'localStorage' */ localStorage.setItem(dataset_name+'_'+key, value); return true; }, /* RETOURNE UN ELEMENT AU DATASET DONNE * * @dataset_name Nom du dataset en question * @key Clé de l'élément * * @return value Retourne la valeur de l'élément, sinon FALSE si erreur * */ get: function(dataset_name, key){ /* (1) Si le 'dataset' n'existe pas */ if( this.dataset.indexOf(dataset_name) == -1 ) return false; // erreur /* (2) On propage au 'localStorage' */ return localStorage.getItem(dataset_name+'_'+key); }, setObject: function(dataset_name, object){ /* (1) Si le 'dataset' n'existe pas */ var index = this.dataset.indexOf(dataset_name); if( index == -1 ) return false; // erreur /* (2) On met toutes les valeurs de l'objet dans le 'localStorage' */ for( var key in object ) this.set(dataset_name, key, object[key]); /* (3) On retourne que tout s'est bien passé */ return true }, getObject: function(dataset_name){ /* (1) Si le 'dataset' n'existe pas */ var index = this.dataset.indexOf(dataset_name); if( index == -1 ) return false; // erreur /* (2) On récupère toutes les valeurs dans un objet */ var obj = {}; for( var i = 0 ; i < this.dataset_keys[index].length ; i++ ) obj[this.dataset_keys[index][i]] = this.get(dataset_name, this.dataset_keys[index][i]); /* (3) On retourne l'objet */ return obj; }, /* CREATION D'UN DATASET OU RECUPERATION DES DONNEES S'IL EXISTE DEJA * * @name Nom du dataset à créer ou récupérer * * @return error Retourne true si tout s'est bien passé, sinon false * */ createDataset: function(name){ /* (1) On vérifie que le @name est correct */ if( name == null || typeof name != 'string' ) return false; // erreur /* (2) Si le dataset est déjà enregistré, on ne fais rien */ if( this.dataset.indexOf(name) > -1 ) return true; /* (3) On charge le dataset s'il existe */ var storedDataset = localStorage.getItem(name); if( storedDataset != null ){ // Si le dataset existe, on charge les données this.dataset.push(name); this.dataset_keys.push( storedDataset.split(',') ); /* (4) Sinon, on le crée 'dataset' */ }else{ this.dataset.push(name); this.dataset_keys.push([]); localStorage.setItem(name, ''); } return true; } }; var lsi = new localStorageInterface();