fiskaly / grafana.surrealdb

Grafana Datasource Plugin for SurrealDB
https://grafana.com/grafana/plugins/fiskaly-surrealdb-datasource/
Other
2 stars 1 forks source link

improvement: Is it possible to add variables in a Grafana plugin #13

Closed coutouly closed 8 months ago

coutouly commented 9 months ago

improvement: Is it possible to add variables in a Grafana plugin representing, for example, the geolocation position.coords in a variable $__position? what do you think ? thanks in advence

ppaulweber commented 9 months ago

@coutouly which variables are you exactly here referring to?

coutouly commented 9 months ago

what i am trying to say is that i want to save the browser geolocalisation :

if ("geolocation" in navigator) {
  // Vérifie si la géolocalisation est prise en charge
  navigator.geolocation.getCurrentPosition(function(position) {
    // Cette fonction est appelée en cas de succès
    console.log("Latitude: " + position.coords.latitude);
    console.log("Longitude: " + position.coords.longitude);
  }, function(error) {
    // Cette fonction est appelée en cas d'erreur
    console.error("Erreur de géolocalisation: " + error.message);
  }, {
    enableHighAccuracy: true, // Pour une meilleure précision
    timeout: 5000, // Temps maximum en millisecondes avant de renoncer
    maximumAge: 0 // Âge maximum en millisecondes de la position mise en cache acceptable
  });
} else {
  // La géolocalisation n'est pas prise en charge
  console.log("La géolocalisation n'est pas prise en charge par ce navigateur.");
}

do you think that in your plugin you can define a variable that I can use therefor ?

coutouly commented 8 months ago

So i did it with another plugin. thanks

ppaulweber commented 8 months ago

@coutouly just curious what plugin did you use to solve your use case?

coutouly commented 8 months ago

I use this: https://github.com/VolkovLabs/volkovlabs-form-panel and write some javascript code in create payload:

function obtenirGeolocalisation() {
  return new Promise((resolve, reject) => {
    if ("geolocation" in navigator) {
      navigator.geolocation.getCurrentPosition(function (position) {
        // En cas de succès, résout la promesse avec la position
        const latitude = position.coords.latitude;
        const longitude = position.coords.longitude;

        resolve({
          surql: "create timeline content { timestamp:time::now(), location:(" + longitude + "," + latitude + "),email:'${__user.email}'} ;",
          mode: 'raw',
        })
      }, function (error) {
        // En cas d'erreur, rejette la promesse
        reject("Erreur de géolocalisation: " + error.message);
      }, {
        enableHighAccuracy: true, // Pour une meilleure précision
        timeout: 5000, // Temps maximum en millisecondes avant de renoncer
        maximumAge: 0 // Âge maximum en millisecondes de la position mise en cache acceptable
      });
    } else {
      reject("La géolocalisation n'est pas prise en charge par ce navigateur.");
    }
  });
}

return obtenirGeolocalisation();