NxTIC/js/lib/local-storage-interface.js

103 lines
3.3 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é, si elle est nouvelle */
if( this.dataset_keys[index].indexOf(key) == -1 ){
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<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 JSON.parse( localStorage.getItem(dataset_name+'_'+key) );
},
/* 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( JSON.parse(storedDataset) );
/* (4) Sinon, on le crée 'dataset' */
}else{
this.dataset.push(name);
this.dataset_keys.push([]);
localStorage.setItem(name, JSON.stringify([]));
}
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();