122 lines
3.8 KiB
JavaScript
122 lines
3.8 KiB
JavaScript
|
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<String> Nom du dataset en question
|
||
|
* @key<String> Clé à donner à l'élément
|
||
|
* @value<String> Valeur de l'élément
|
||
|
*
|
||
|
* @return error<Bool> 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<String> Nom du dataset en question
|
||
|
* @key<String> Clé de l'élément
|
||
|
*
|
||
|
* @return value<String> 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<String> Nom du dataset à créer ou récupérer
|
||
|
*
|
||
|
* @return error<Bool> 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();
|