Gestion au niveau de `localStorageInterface` de la suppression d'un item (del) et de l'import (import) d'un dataset complet.
This commit is contained in:
parent
da69d09579
commit
741f69baaa
|
@ -1,3 +1,4 @@
|
|||
function localStorageInterface(){}
|
||||
localStorageInterface.prototype={dataset:[],dataset_keys:[],set:function(a,b,d){var c=this.dataset.indexOf(a);if(-1==c)return!1;-1==this.dataset_keys[c].indexOf(b)&&(this.dataset_keys[c].push(b),localStorage.setItem(a,JSON.stringify(this.dataset_keys[c])));localStorage.setItem(a+"_"+b,JSON.stringify(d));return!0},get:function(a,b){return-1==this.dataset.indexOf(a)?!1:JSON.parse(localStorage.getItem(a+"_"+b))},createDataset:function(a){if(null==a||"string"!=typeof a)return!1;if(-1<this.dataset.indexOf(a))return!0;
|
||||
var b=localStorage.getItem(a);null!=b?(this.dataset.push(a),this.dataset_keys.push(JSON.parse(b))):(this.dataset.push(a),this.dataset_keys.push([]),localStorage.setItem(a,JSON.stringify([])));return!0},keys:function(a){a=this.dataset.indexOf(a);return-1==a?!1:this.dataset_keys[a]},"export":function(a){var b=this.dataset.indexOf(a);if(-1==b)return!1;for(var d={},c=0;c<this.dataset_keys[b].length;c++)d[this.dataset_keys[b][c]]=this.get(a,this.dataset_keys[b][c]);return d}};var lsi=new localStorageInterface;
|
||||
localStorageInterface.prototype={dataset:[],dataset_keys:[],set:function(a,b,d){var c=this.dataset.indexOf(a);if(-1==c)return!1;-1==this.dataset_keys[c].indexOf(b)&&(this.dataset_keys[c].push(b),localStorage.setItem(a,JSON.stringify(this.dataset_keys[c])));localStorage.setItem(a+"_"+b,JSON.stringify(d));return!0},get:function(a,b){return-1==this.dataset.indexOf(a)?!1:JSON.parse(localStorage.getItem(a+"_"+b))},del:function(a,b){var d=this.dataset.indexOf(a);if(-1==d)return!1;var c=this.dataset_keys[d].indexOf(b);
|
||||
if(-1==c)return!1;localStorage.removeItem(a+"_"+b);this.dataset_keys[d].splice(c,1);localStorage.setItem(a,JSON.stringify(this.dataset_keys[d]));return!0},createDataset:function(a){if("string"!=typeof a)return!1;if(-1<this.dataset.indexOf(a))return!0;var b=localStorage.getItem(a);null!=b?(this.dataset.push(a),this.dataset_keys.push(JSON.parse(b))):(this.dataset.push(a),this.dataset_keys.push([]),localStorage.setItem(a,JSON.stringify([])));return!0},keys:function(a){a=this.dataset.indexOf(a);return-1==
|
||||
a?!1:this.dataset_keys[a]},"export":function(a){var b=this.dataset.indexOf(a);if(-1==b)return!1;for(var d={},c=0;c<this.dataset_keys[b].length;c++)d[this.dataset_keys[b][c]]=this.get(a,this.dataset_keys[b][c]);return d},"import":function(a,b){if(-1==this.dataset.indexOf(a))this.createDataset(a);else{var d=this["export"](a),c;for(c in d)this.del(a,c)}for(c in b)this.set(a,c,b[c]);return!0}};var lsi=new localStorageInterface;
|
||||
|
|
|
@ -49,6 +49,36 @@ localStorageInterface.prototype = {
|
|||
return JSON.parse( localStorage.getItem(dataset_name+'_'+key) );
|
||||
},
|
||||
|
||||
/* SUPPRIME UN ELEMENT D'UN DATASET DONNE
|
||||
*
|
||||
* @dataset<String> Nom du dataset en question
|
||||
* @key<String> Clé de l'élément
|
||||
*
|
||||
* @return status<boolean> Retourne FALSE si erreur
|
||||
*
|
||||
*/
|
||||
del: function(dataset, key){
|
||||
/* (1) Si le 'dataset' n'existe pas */
|
||||
var index = this.dataset.indexOf(dataset);
|
||||
if( index == -1 ) return false; // erreur
|
||||
|
||||
/* (2) On récupère la clé dans la liste des clés */
|
||||
var keyIndex = this.dataset_keys[index].indexOf(key);
|
||||
if( keyIndex == -1 ) return false; // erreur si la clé n'est pas référencée
|
||||
|
||||
/* (3) On supprime dans le 'localStorage' */
|
||||
localStorage.removeItem(dataset+'_'+key);
|
||||
|
||||
/* (4) On supprime la clé dans la liste des clés */
|
||||
this.dataset_keys[index].splice(keyIndex, 1);
|
||||
|
||||
/* (5) On met à jour dans le 'localStorage' */
|
||||
localStorage.setItem(dataset, JSON.stringify(this.dataset_keys[index]));
|
||||
|
||||
|
||||
return true;
|
||||
},
|
||||
|
||||
|
||||
/* CREATION D'UN DATASET OU RECUPERATION DES DONNEES S'IL EXISTE DEJA
|
||||
*
|
||||
|
@ -59,11 +89,12 @@ localStorageInterface.prototype = {
|
|||
*/
|
||||
createDataset: function(name){
|
||||
/* (1) On vérifie que le @name est correct */
|
||||
if( name == null || typeof name != 'string' ) return false; // erreur
|
||||
if( 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;
|
||||
var datasetIndex = this.dataset.indexOf(name);
|
||||
if( datasetIndex > -1 ) return true;
|
||||
|
||||
/* (3) On charge le dataset s'il existe */
|
||||
var storedDataset = localStorage.getItem(name);
|
||||
|
@ -72,7 +103,7 @@ localStorageInterface.prototype = {
|
|||
this.dataset.push(name);
|
||||
this.dataset_keys.push( JSON.parse(storedDataset) );
|
||||
|
||||
/* (4) Sinon, on le crée 'dataset' */
|
||||
/* (4) Sinon, on crée le 'dataset' */
|
||||
}else{
|
||||
|
||||
this.dataset.push(name);
|
||||
|
@ -107,6 +138,32 @@ localStorageInterface.prototype = {
|
|||
|
||||
/* (3) On retourne le résultat */
|
||||
return obj;
|
||||
},
|
||||
|
||||
|
||||
import: function(dataset, data){
|
||||
/* (1) On récupère l'indice du dataset s'il existe déjà */
|
||||
var index = this.dataset.indexOf(dataset);
|
||||
|
||||
/* (2) Cas 1 : Le dataset n'existe pas -> on le crée */
|
||||
if( index == -1 )
|
||||
this.createDataset(dataset);
|
||||
|
||||
/* (3) Cas 2 : Le dataset existe -> on supprime tout */
|
||||
else{
|
||||
var content = this.export(dataset);
|
||||
// On supprime toutes les valeurs
|
||||
for( var key in content )
|
||||
this.del(dataset, key);
|
||||
|
||||
}
|
||||
|
||||
/* (2) On remplit le dataset avec toutes les données de l'objet */
|
||||
for( var key in data )
|
||||
this.set(dataset, key, data[key]);
|
||||
|
||||
/* (3) On retourne le résultat */
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -39,6 +39,8 @@
|
|||
<h3 data-n='0' class='color4'>Effacer les données de la dernière enquête</h3>
|
||||
<span data-space></span>
|
||||
<h4 class='self color2' data-icon='e'>
|
||||
<input type='submit' class='primary' id='export-all' value='Exporter les données'><br>
|
||||
<input type='submit' class='primary' id='import-all' value='Importer des données'><br>
|
||||
<input type='submit' class='primary' id='clear-all' value='Tout effacer'>
|
||||
</h4>
|
||||
<span data-space></span>
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue