/**
* Trading Pairs Loader
* Loads trading pairs from trading_pairs.txt and populates comboboxes
*/
let tradingPairs = [];
// Load trading pairs on page load
async function loadTradingPairs() {
try {
const response = await fetch('/trading_pairs.txt');
const text = await response.text();
tradingPairs = text.trim().split('\n').filter(pair => pair.trim());
console.log(`Loaded ${tradingPairs.length} trading pairs`);
return tradingPairs;
} catch (error) {
console.error('Error loading trading pairs:', error);
// Fallback to common pairs
tradingPairs = ['BTCUSDT', 'ETHUSDT', 'BNBUSDT', 'SOLUSDT', 'XRPUSDT'];
return tradingPairs;
}
}
// Create a combobox (select with datalist) for trading pairs
function createTradingPairCombobox(id, placeholder = 'Select trading pair', selectedPair = 'BTCUSDT') {
const datalistId = `${id}-datalist`;
const options = tradingPairs.map(pair => ``
).join('');
return `
`;
}
// Get SVG icon HTML
function getSvgIcon(iconId, size = 20, className = '') {
return ``;
}
// Replace emoji with SVG icon
function replaceEmojiWithSvg(text, emojiMap) {
let result = text;
for (const [emoji, iconId] of Object.entries(emojiMap)) {
result = result.replace(new RegExp(emoji, 'g'), getSvgIcon(iconId));
}
return result;
}
// Common emoji to SVG icon mappings
const emojiToSvg = {
'📊': 'market',
'🔄': 'refresh',
'✅': 'check',
'❌': 'close',
'⚠️': 'warning',
'💰': 'diamond',
'🚀': 'rocket',
'📈': 'trending-up',
'📉': 'trending-down',
'🐋': 'whale',
'💎': 'diamond',
'🔥': 'fire',
'🎯': 'fire',
'📱': 'monitor',
'⚙️': 'settings',
'🏠': 'home',
'📰': 'news',
'😊': 'sentiment',
'🧠': 'brain',
'🔗': 'link',
'💾': 'database',
'₿': 'bitcoin'
};
// Initialize trading pairs on page load
document.addEventListener('DOMContentLoaded', async function() {
await loadTradingPairs();
console.log('Trading pairs loaded and ready');
// Dispatch custom event
document.dispatchEvent(new CustomEvent('tradingPairsLoaded', { detail: { pairs: tradingPairs } }));
});
// Export for use in other scripts
window.TradingPairsLoader = {
loadTradingPairs,
createTradingPairCombobox,
createTradingPairSelect,
getSvgIcon,
replaceEmojiWithSvg,
emojiToSvg,
getTradingPairs: () => tradingPairs
};