Exemple avec une variable qu'on va nommer "vitesse
".
On part du principe qu'en début de script, vitesse est une variable de type "int" (nombre entier). Par défaut elle vaut, par exemple, 50.
let vitesse = 50;
On va vérifier si cette variable est présente dans le stockage local ; si oui, on va l'appliquer.
On vérifie déjà si on est dans Openboard (et on récupère le résultat dans une variable, qui pourra servir à différentes occasions).
// Est-on dans Openboard ?
openboard = Boolean(window.widget || window.sankore);
console.log('Openboard ? '+openboard);
On définit un préfixe se stockage basé sur le nom de l'appli :
let prefixeAppli = 'nomdelappli';
// Ce préfixe sera utilisé pour le stockage des paramètres dans le cache
(On reviendra un peu plus loin sur la raison de ce préfixe...)
Puis on lance une fonction de lecture du stockage local :
verifieStockageLocal();
Comme la variable est stockée sous forme de chaîne de caractères, il faut penser à la convertir en nombre entier (comme dans un tableur) avec parseInt
.
On va donc vérifier que parseInt(vitesseStockage)
rend bien un nombre entier.
async function verifieStockageLocal() {
console.log('Début de la lecture du stockage local'); // Affichage en console
try {
const vitesseStockage = await litDepuisStockage('vitesse');
if (!isNaN(parseInt(vitesseStockage))){ // Vérification
console.log('trouvé vitesse '+vitesseStockage) // Affichage en console
vitesse = parseInt(vitesseStockage); // Application de la variable
console.log('vitesse='+vitesse); // Affichage en console
}
} catch (error) {
console.error('Erreur lors de la récupération depuis le stockage :', error);
}
// Si on a d'autres variables à récupérer on procède de la même sorte en adaptant les variables, avec pour chaque, des nouvelles accolades try / catch
}
Cette fonction nécessite la présence d'une autre qui tournera pour toutes les variables. Afin que cela fonctionne à la fois pour Openboard mais aussi pour l'appli en ligne, on va se servir de notre variable openboard
.
Dans tous les cas, les données sont stockées sous forme de paires clés / valeur.
Attention : il faut éviter qu'une même clé soit utilisée par deux applications.
Pour éviter cette situation, on va ajouter un préfixe prefixeAppli
à la clé (ce préfixe a été défini plus haut). Les fonctions suivantes litDepuisStockage et stocke vont ajouter automatiquement "nomdelappli" (pensez donc à personnaliser cette clé au début du script).
async function litDepuisStockage(cle) {
console.log('Lecture de la clé '+cle);
if (openboard){ //Récupération pour Openboard
valeurAretourner = await window.sankore.async.preference(prefixeAppli+'-'+cle);
console.log("lecture "+cle+"="+valeurAretourner); // Pour la console
} else { // Récupération en Web
valeurAretourner = localStorage.getItem(prefixeAppli+'-'+cle);
console.log("lecture depuis stockage "+cle+"="+valeurAretourner); // Pour la console
}
return valeurAretourner;
}
Il faudra aussi, à chaque fois que nécessaire, mettre à jour le stockage local, en appelant la fonction stocke()
.
function stocke(cle,valeur){
console.log("stockage "+cle+"="+valeur);
if (openboard){
window.sankore.setPreference(prefixeAppli+'-'+cle,valeur);
} else {
localStorage.setItem(prefixeAppli+'-'+cle,valeur);
}
}
Au moment opportun, il faudra donc appeler la fonction, par exemple avec :
stocke('vitesse',85);