// ========================================================= // Tableaux globaux // ========================================================= let configIndices = []; // Données issues de la table "indice" let coursActionsData = []; // Données issues de la table "cours_actions" // ========================================================= // CHARGEMENT DES DONNÉES // ========================================================= function chargerDonnees() { // Chargement en parallèle des deux API Promise.all([ fetch("./php/api_lecture_tableindice.php").then((res) => res.json()), fetch("./php/api_indices.php").then((res) => res.json()), ]) .then(([configResult, coursResult]) => { // ----------------------------------------------------- // Configuration des indices // ----------------------------------------------------- if (configResult.status === "success") { configIndices = configResult.data; console.log( "Configuration indices chargée :", configIndices.length, "éléments", ); } else { console.error("Erreur API config indices :", configResult.message); } // ----------------------------------------------------- // Cours des actions // ----------------------------------------------------- if (coursResult.status === "success") { coursActionsData = coursResult.data; console.log( "Cours actions chargés :", coursActionsData.length, "éléments", ); } else { console.error("Erreur API cours_actions :", coursResult.message); } // ----------------------------------------------------- // Mise à jour des vues // ----------------------------------------------------- afficherSyntheseCartes(); alimenterBandeauxTicker(); // ----------------------------------------------------- // Statut de rafraîchissement // ----------------------------------------------------- const statut = document.getElementById("statut"); if (statut) { statut.innerText = `Dernière mise à jour : ${new Date().toLocaleTimeString()}`; } }) .catch((error) => { console.error("Erreur réseau lors du chargement des API :", error); }); } // ========================================================= // AFFICHAGE DES CARTES // ========================================================= function afficherSyntheseCartes() { const container = document.getElementById("cards-container"); if (!container) return; container.innerHTML = ""; // ------------------------------------------------------- // On se base STRICTEMENT sur afficher == 1 // ------------------------------------------------------- const actionsAffichees = configIndices.filter( (item) => String(item.afficher) === "1" || item.afficher == 1, ); if (actionsAffichees.length > 0) { actionsAffichees.forEach((conf) => { // --------------------------------------------------- // Croisement avec les cours en direct // --------------------------------------------------- const d = coursActionsData.find( (item) => item.symbole === conf.symbole || item.isin === conf.isin, ) || {}; const ecartValeur = parseFloat(d.variation || 0); const isPositive = ecartValeur >= 0; const badgeColor = isPositive ? "text-emerald-400" : "text-rose-400"; const sign = isPositive ? "+" : ""; // --------------------------------------------------- // Volume // --------------------------------------------------- const volumeFormate = d.volume ? parseInt(d.volume).toLocaleString("fr-FR") : "--"; // --------------------------------------------------- // Carte // --------------------------------------------------- container.innerHTML += `