From 0e3e6ff1e05c77466c0d4a1c98f7a81563f3e363 Mon Sep 17 00:00:00 2001
From: "[oceane]" <[e21497@eps-marche.be]>
Date: Sat, 28 Feb 2026 21:26:57 +0100
Subject: [PATCH] =?utf8?q?mise=20=C3=A0=20jour=20branch=C3=A9=20api?=
MIME-Version: 1.0
Content-Type: text/plain; charset=utf8
Content-Transfer-Encoding: 8bit
---
Wallette/web/script.js | 126 ++++++++++++++++++++++++++++++++++-------
1 file changed, 104 insertions(+), 22 deletions(-)
diff --git a/Wallette/web/script.js b/Wallette/web/script.js
index b820286..ab63ed6 100644
--- a/Wallette/web/script.js
+++ b/Wallette/web/script.js
@@ -8,24 +8,37 @@ import {
const SERVER_URL = 'http://localhost:3000';
-// Exemple : récupérer un userId (ici exemple statique, adapte-toi)
-const userId = 'user-123';
+//récupérer un userId (ici exemple statique, adapte-toi)
+let userId = 'user-123';
// Connecter automatiquement à l'ouverture
connectToAlerts(userId);
-//function api
+//------------------function api ---------------------------------------------------------------
// Charger historique alertes
-async function loadAlertHistory() {
+async function loadWalletEvents(walletId) {
try {
- const res = await fetch(`${SERVER_URL}/api/alerts/history?userId=${userId}`);
- const data = await res.json();
+ const res = await fetch(`${SERVER_URL}/api/wallets/${walletId}/events`);
+ const events = await res.json();
+
+ const eventsList = document.getElementById("walletEvents");
+ eventsList.innerHTML = '';
+
+ if (!events.length) {
+ eventsList.innerHTML = `
Aucune transaction`;
+ return;
+ }
+
+ events.forEach(ev => {
+ const li = document.createElement('li');
+ li.className = 'list-group-item bg-transparent text-white';
- data.forEach(alert => {
- // on réutilise EXACTEMENT la même logique que socket
- handleAlert(alert);
+ const date = new Date(ev.timestamp).toLocaleString('fr-FR');
+
+ li.textContent = `${date} â ${ev.type} â ${ev.amount} BTC`;
+ eventsList.appendChild(li);
});
} catch (err) {
@@ -33,19 +46,21 @@ async function loadAlertHistory() {
}
}
-// Charger prix actuel
+// Charger prix actuel ------------------------------------------------------------------------
async function loadCurrentPrice(pair = "BTC/EUR") {
try {
- const res = await fetch(`${SERVER_URL}/api/prices/current?pair=${pair}`);
+ const res = await fetch(`${SERVER_URL}/api/price/current?pair=${pair}`);
const data = await res.json();
const priceEl = document.getElementById("price");
+
if (priceEl && data.price !== undefined) {
const currency = pair.includes("USD") ? "USD" : "EUR";
- priceEl.textContent = Number(data.price).toLocaleString('fr-FR', {
- style: 'currency',
- currency: currency
- });
+ priceEl.textContent =
+ Number(data.price).toLocaleString('fr-FR', {
+ style: 'currency',
+ currency: currency
+ });
}
} catch (err) {
@@ -53,22 +68,67 @@ async function loadCurrentPrice(pair = "BTC/EUR") {
}
}
-// Charger wallet utilisateur
-async function loadWallet() {
+// Charger wallet utilisateur -----------------------------------------------------------------------------------------
+async function loadWallets() {
try {
- const res = await fetch(`${SERVER_URL}/api/wallet/${userId}`);
- const data = await res.json();
+ const res = await fetch(`${SERVER_URL}/api/wallets?userId=${userId}`);
+ const wallets = await res.json();
+
+ const walletList = document.getElementById("walletList");
+ walletList.innerHTML = '';
- const balanceEl = document.getElementById("balance");
- if (balanceEl && data.balance !== undefined) {
- balanceEl.textContent = data.balance + " BTC";
+ if (!wallets.length) {
+ walletList.innerHTML = `Aucun wallet chargé`;
+ return;
}
+ wallets.forEach(wallet => {
+
+ const li = document.createElement('li');
+ li.className = 'list-group-item bg-transparent text-white';
+ li.textContent = `${wallet.name} â ${wallet.balance} BTC`;
+ walletList.appendChild(li);
+
+ // Charger les transactions pour chaque wallet
+ loadWalletEvents(wallet.id);
+ });
+
} catch (err) {
console.error("Erreur wallet :", err);
}
}
+// Signal actuel -------------------------------------------------------------------------------------
+async function loadCurrentSignal() {
+ try {
+ const res = await fetch(`${SERVER_URL}/api/signal/current`);
+ const signal = await res.json();
+
+ const box = document.getElementById('signalBox');
+ const actionEl = document.getElementById('signalAction');
+ const critEl = document.getElementById('signalCriticality');
+ const confEl = document.getElementById('signalConfidence');
+ const reasonEl = document.getElementById('signalReason');
+
+ if (!box) return;
+
+ const action = signal.action || 'HOLD';
+
+ box.className = 'signal-box ' + action.toLowerCase();
+ actionEl.textContent = action;
+ critEl.textContent = signal.alertLevel || 'INFO';
+ confEl.textContent =
+ typeof signal.confidence === 'number'
+ ? Math.round(signal.confidence * 100) + '%'
+ : 'â';
+ reasonEl.textContent = signal.reason || '';
+
+ } catch (err) {
+ console.error("Erreur API signal/current :", err);
+ }
+}
+
+// socket -------------------------------------------------------------------------------------------------------
// Quand une alerte arrive, l'ajouter dans la liste #alertList
function handleIncomingAlert(alert) {
@@ -198,6 +258,28 @@ onAlert(function(alert) {
handleIncomingAlert(alert);
});
+//button user
+
+document.getElementById("saveUserBtn")?.addEventListener("click", () => {
+ const input = document.getElementById("userIdInput");
+ if (input.value) {
+ userId = input.value;
+ alert("User ID sauvegardé : " + userId);
+ }
+});
+
+document.getElementById("connectBtn")?.addEventListener("click", () => {
+ connectToAlerts(userId);
+ document.getElementById("connStatus").className = "badge bg-success";
+ document.getElementById("connStatus").textContent = "Statut : on";
+});
+
+document.getElementById("disconnectBtn")?.addEventListener("click", () => {
+ disconnectFromAlerts();
+ document.getElementById("connStatus").className = "badge bg-secondary";
+ document.getElementById("connStatus").textContent = "Statut : off";
+});
+
loadAlertHistory();
loadCurrentPrice();
loadWallet();
--
2.50.1