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, JSON.stringify(this.dataset_keys[index])); /* (3) On propage au 'localStorage' */ localStorage.setItem(dataset_name+'_'+key, JSON.stringify(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 JSON.parse( localStorage.getItem(dataset_name+'_'+key) ); }, /* 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( JSON.parse(storedDataset) ); /* (4) Sinon, on le crée 'dataset' */ }else{ this.dataset.push(name); this.dataset_keys.push([]); localStorage.setItem(name, ''); } return true; }, keys: 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 retourne la liste des clés pour ce dataset */ return this.dataset_keys[index]; } }; var lsi = new localStorageInterface();