document.addEventListener('DOMContentLoaded', () => {
const toolGrid = document.querySelector('.tool-grid');
const toolModal = document.getElementById('tool-modal');
const modalCloseBtn = document.getElementById('modal-close-btn');
const toolInterface = document.getElementById('tool-interface');
// Dummy data for tools (replace with actual data from backend)
const tools = [
{ name: 'Get Price', description: 'Fetches real-time price data for a symbol.', category: 'Market Data' },
{ name: 'Place Order', description: 'Places a trade order in the market.', category: 'Execution' },
{ name: 'Portfolio Risk', description: 'Analyzes the risk of your portfolio.', category: 'Risk Management' },
{ name: 'Run Backtest', description: 'Executes a backtest on a trading strategy.', category: 'Backtesting' },
{ name: 'Analyze Ticker', description: 'Performs comprehensive analysis on a ticker.', category: 'Prompts' },
];
// Render tool cards
tools.forEach(tool => {
const toolCard = document.createElement('div');
toolCard.classList.add('tool-card');
toolCard.innerHTML = `
${tool.name}
${tool.description}
${tool.category}
`;
toolCard.addEventListener('click', () => openToolModal(tool));
toolGrid.appendChild(toolCard);
});
// Open tool modal
function openToolModal(tool) {
toolInterface.innerHTML = `
${tool.name}
${tool.description}
`;
toolModal.classList.add('show');
document.getElementById('run-tool-btn').addEventListener('click', async () => {
const symbol = document.getElementById('symbol').value;
const resultElement = document.getElementById('tool-result');
resultElement.textContent = 'Running tool...';
// Example of calling a backend tool (requires window.openai to be available)
// if (window.openai && window.openai.callTool) {
// try {
// const result = await window.openai.callTool(tool.name.replace(/\s+/g, '_').toLowerCase(), { symbol: symbol });
// resultElement.textContent = JSON.stringify(result, null, 2);
// } catch (error) {
// resultElement.textContent = `Error: ${error.message}`;
// }
// } else {
// resultElement.textContent = 'MCP not available. Cannot call backend tools.';
// }
resultElement.textContent = `Simulating tool run for ${tool.name} with symbol: ${symbol}`;
});
}
// Close tool modal
modalCloseBtn.addEventListener('click', () => {
toolModal.classList.remove('show');
});
// Close modal on outside click
window.addEventListener('click', (event) => {
if (event.target === toolModal) {
toolModal.classList.remove('show');
}
});
// Dummy dashboard rendering (replace with actual data)
document.querySelector('.portfolio').innerHTML = 'Portfolio Overview
Detailed portfolio data will go here.
';
document.querySelector('.watchlist').innerHTML = 'Watchlist
Your watched symbols will appear here.
';
document.querySelector('.news').innerHTML = 'Intel Feed
Latest market news and sentiment.
';
document.querySelector('.crypto').innerHTML = 'Crypto Movers
Trending cryptocurrency data.
';
});