Files
aitbc/apps/exchange/update_price_ticker.js
AITBC System b033923756 chore: normalize file permissions across repository
- Remove executable permissions from configuration files (.editorconfig, .env.example, .gitignore)
- Remove executable permissions from documentation files (README.md, LICENSE, SECURITY.md)
- Remove executable permissions from web assets (HTML, CSS, JS files)
- Remove executable permissions from data files (JSON, SQL, YAML, requirements.txt)
- Remove executable permissions from source code files across all apps
- Add executable permissions to Python
2026-03-08 11:26:18 +01:00

59 lines
2.5 KiB
JavaScript

// Add this function to index.real.html to update price ticker with real data
async function updatePriceTicker() {
try {
// Get recent trades to calculate price statistics
const response = await fetch(`${EXCHANGE_API_BASE}/api/trades/recent?limit=100`);
if (!response.ok) return;
const trades = await response.json();
if (trades.length === 0) {
console.log('No trades to calculate price from');
return;
}
// Calculate 24h volume (sum of all trades in last 24h)
const now = new Date();
const yesterday = new Date(now.getTime() - 24 * 60 * 60 * 1000);
const recentTrades = trades.filter(trade =>
new Date(trade.created_at) > yesterday
);
const totalVolume = recentTrades.reduce((sum, trade) => sum + trade.amount, 0);
const totalBTC = recentTrades.reduce((sum, trade) => sum + trade.total, 0);
// Calculate current price (price of last trade)
const currentPrice = trades[0].price;
// Calculate 24h high/low
const prices = recentTrades.map(t => t.price);
const high24h = Math.max(...prices);
const low24h = Math.min(...prices);
// Calculate price change (compare with price 24h ago)
const price24hAgo = trades[trades.length - 1]?.price || currentPrice;
const priceChange = ((currentPrice - price24hAgo) / price24hAgo) * 100;
// Update UI
document.getElementById('currentPrice').textContent = `${currentPrice.toFixed(6)} BTC`;
document.getElementById('volume24h').textContent = `${totalVolume.toFixed(0).replace(/\B(?=(\d{3})+(?!\d))/g, ",")} AITBC`;
document.getElementById('volume24h').nextElementSibling.textContent = `${totalBTC.toFixed(5)} BTC`;
document.getElementById('highLow').textContent = `${high24h.toFixed(6)} / ${low24h.toFixed(6)}`;
// Update price change with color
const changeElement = document.getElementById('priceChange');
changeElement.textContent = `${priceChange >= 0 ? '+' : ''}${priceChange.toFixed(2)}%`;
changeElement.className = `text-sm ${priceChange >= 0 ? 'text-green-600' : 'text-red-600'}`;
} catch (error) {
console.error('Failed to update price ticker:', error);
}
}
// Call this function in the DOMContentLoaded event
// Add to existing initialization:
// updatePriceTicker();
// setInterval(updatePriceTicker, 30000); // Update every 30 seconds