Spaces:
Running
Running
File size: 4,943 Bytes
ede5511 1d3a7b4 ac54ec5 1d3a7b4 ac54ec5 1d3a7b4 ac54ec5 3b24fc9 1d3a7b4 ac54ec5 3b24fc9 1d3a7b4 ac54ec5 3b24fc9 ac54ec5 3b24fc9 1d3a7b4 ac54ec5 1d3a7b4 ac54ec5 1d3a7b4 ede5511 1d3a7b4 e892728 1d3a7b4 ede5511 3b24fc9 e892728 ac54ec5 e892728 1d3a7b4 ede5511 e892728 ede5511 1d3a7b4 ede5511 1d3a7b4 ede5511 3b24fc9 ede5511 ac54ec5 3b24fc9 ede5511 3b24fc9 ede5511 e892728 ede5511 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
document.addEventListener("DOMContentLoaded", () => {
const workerUrl = "https://ctmresearchagent.aiagents.workers.dev"; // Replace if your URL is different
// Event Listeners
document.getElementById("uploadForm").addEventListener("submit", handleFileUpload);
document.getElementById("submitButton").addEventListener("click", handleAiQuerySubmit);
// Initial data load
loadReportsFromRss();
loadResearchHistory();
/**
* Fetches and displays the list of reports from the backend's RSS parser
*/
async function loadReportsFromRss() {
const reportsList = document.getElementById("reportsList");
reportsList.innerHTML = "<p>Fetching reports...</p>";
try {
const response = await fetch(`${workerUrl}/api/rss`);
if (!response.ok) throw new Error('Failed to fetch RSS feed.');
const items = await response.json();
reportsList.innerHTML = "";
if (items.length === 0) { reportsList.innerHTML = "<p>No reports found in the feed.</p>"; return; }
items.forEach(item => {
const entryDiv = document.createElement("div");
entryDiv.className = "report-entry";
entryDiv.innerHTML = `<a href="${item.link}" target="_blank" rel="noopener noreferrer">${item.title}</a><p>${item.description}</p>`;
reportsList.appendChild(entryDiv);
});
} catch (error) {
reportsList.innerHTML = `<p>Could not load reports: ${error.message}</p>`;
}
}
// Simplified File Upload
async function handleFileUpload(event) {
event.preventDefault();
const fileInput = document.getElementById("fileInput");
const uploadStatus = document.getElementById("uploadStatus");
const file = fileInput.files[0];
if (!file) { uploadStatus.textContent = 'Please select a file.'; return; }
uploadStatus.textContent = `Uploading ${file.name}...`;
const formData = new FormData();
formData.append('file', file);
try {
const response = await fetch(`${workerUrl}/api/upload`, { method: 'POST', body: formData });
const data = await response.json();
if (!response.ok) throw new Error(data.error || 'Upload failed');
uploadStatus.textContent = `Success: ${data.message}`;
fileInput.value = ''; // Clear the file input
} catch (error) {
uploadStatus.textContent = `Error: ${error.message}`;
}
}
// Simplified AI Query
async function handleAiQuerySubmit() {
const researchQueryInput = document.getElementById("researchQuery");
const resultDisplay = document.getElementById("resultDisplay");
const submitButton = document.getElementById("submitButton");
const query = researchQueryInput.value.trim();
if (!query) { alert("Please enter a query."); return; }
submitButton.disabled = true;
submitButton.innerText = "Thinking...";
resultDisplay.innerHTML = "<p>Generating response...</p>";
try {
const response = await fetch(`${workerUrl}/api/query`, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ query: query }) });
const data = await response.json();
if (!response.ok) throw new Error(data.error || "An unknown error occurred.");
resultDisplay.innerText = data.result;
await loadResearchHistory(); // Refresh history after a successful query
} catch (error) {
resultDisplay.innerText = `Error: ${error.message}`;
} finally {
submitButton.disabled = false;
submitButton.innerText = "Submit";
}
}
// Unchanged History Loader
async function loadResearchHistory() {
const historyContainer = document.getElementById("historyContainer");
try {
const response = await fetch(`${workerUrl}/api/research`);
if (!response.ok) throw new Error('Failed to load history.');
const logs = await response.json();
historyContainer.innerHTML = "";
if (logs.length === 0) { historyContainer.innerHTML = "<p>No research history found.</p>"; return; }
logs.forEach(log => {
const entryDiv = document.createElement("div");
entryDiv.className = "history-entry";
entryDiv.innerHTML = `<p><strong>Query:</strong> ${log.query}</p><p><strong>Result:</strong> ${log.result}</p><p><small><em>${new Date(log.timestamp).toLocaleString()}</em></small></p>`;
historyContainer.appendChild(entryDiv);
});
} catch (error) {
historyContainer.innerHTML = "<p>Error loading research history.</p>";
}
}
}); |