- 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
59 lines
2.5 KiB
JavaScript
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
|