|
|
|
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);` |