Le projet Dashboad est piloté par Erasme dans le cadre de Datagora dont l'objectif est de mettre en place un tableau de bord modulable applicable à tout type de donné et facilement replicable dans d'autre contexte.Elle permet de visualiser différent KPI sur la végétalisation à travers différents graphes afin d'aider les collctivités à la prise de décision.
- Installer les module complémentaire ws:
npm install ws
npm install socket.io
npm install express
npm install ejs
- lancer de l'application
node server.js
ou
nodemon server.js
-
Aller sur le lien https://localhost:8080 pour accepter le certificat et permettre au dashboard de se connecter au serveur.
-
Aller sur le lien https://localhost:3001 pour voir la page d'accueil de l'application
Vous touverez des protos déja enregistrés dénomé myParameters3.json,myParameters4.json, myParameters5.json que vous pouvez charger ou commencer un nouveau demo en utilisant un proto vierge en chargeant myParameters.json.
Pour visuliser les données utilisées par le dashboard vous pouvez utiliser l’extension simple websocket
Le dashboard à été réalisé en utilisant du d3.js avec les notebook observable.
0. Allez sur le lien du notebook: https://observablehq.com/@moustapha/modular-dashboard-with-websocket/3?oetm_referrer=https%3A%2F%2Flocalhost%3A3001%2F&oetm_route=%2F%40moustapha%2Fmodular-dashboard-with-websocket%2F3
2. Une fenetre s'ouvre et vous avez la possiblité de choisir les cellules à afficher.Nous avons décider de prendre le notebook entier en selectionnant Entire notebook>
3. Puis sur la meme fenetre selectionner l'option iframe et cliquer sur copy pour copier le code dans un fichier.Pour nous c'est le fichier dashboard.ejs dans le repertoire /var/www/erasme/views>
Ajouter des données avec les websocket
dataVegetal = Generators.observe(notify => {
const data = [];
const socket = new WebSocket("wss://localhost:8080/dataVegetal");
socket.onerror = function(error) {
notify(Promise.reject(new Error("socket error: " + error.message)));
};
socket.addEventListener("open", () => {
socket.send(
JSON.stringify({
hello: { sid: "mystream.binance-btc-usd", isNew: false }
})
);
});
socket.addEventListener("message", message => {
if (JSON.parse(message.data).type === "dataVegetal") {
data.shift();
data.push(JSON.parse(message.data).value);
notify(data[0]);
}
});
notify(data[0]);
return () => socket.close();
})
On peut aussi allimenter le dashboard en utilisant les données de l'API devéloppée ou de datagrandlyon voir https://observablehq.com/@moustapha/dashboard-modulable.
urlEspacesVegetal = "http://localhost:3001/api/espacesvegetal"
vegetal = fetch(urlVegetal).then(response => {
return response.json();
})
urlVegetal = "http://localhost:3001/api/espacesvegetal"
Espacevegetal = fetch(urlEspaceVegetal).then(response => {
return response.json();
})