Spaces:
Running
Running
File size: 4,537 Bytes
ede5511 3b24fc9 ac54ec5 3b24fc9 ac54ec5 3b24fc9 ac54ec5 3b24fc9 ac54ec5 3b24fc9 ac54ec5 3b24fc9 ac54ec5 3b24fc9 ac54ec5 3b24fc9 ac54ec5 3b24fc9 ac54ec5 ede5511 3b24fc9 e892728 ede5511 3b24fc9 e892728 ac54ec5 e892728 ede5511 e892728 ede5511 3b24fc9 ede5511 ac54ec5 3b24fc9 ede5511 3b24fc9 ede5511 e892728 ede5511 ac54ec5 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 |
document.addEventListener("DOMContentLoaded", () => {
const workerUrl = "https://ctmresearchagent.aiagents.workers.dev"; // Replace with your worker URL if different
const uploadForm = document.getElementById("uploadForm");
const fileInput = document.getElementById("fileInput");
const uploadStatus = document.getElementById("uploadStatus");
const reportsList = document.getElementById("reportsList");
const submitButton = document.getElementById("submitButton");
const researchQueryInput = document.getElementById("researchQuery");
const resultDisplay = document.getElementById("resultDisplay");
const historyContainer = document.getElementById("historyContainer");
async function handleFileUpload(event) {
event.preventDefault();
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 = `Successfully uploaded ${file.name}!`;
uploadForm.reset();
await loadReportsList();
} catch (error) {
uploadStatus.textContent = `Error: ${error.message}`;
}
}
async function loadReportsList() {
try {
const response = await fetch(`${workerUrl}/api/documents`);
if (!response.ok) throw new Error('Failed to fetch reports list.');
const documents = await response.json();
reportsList.innerHTML = "";
if (documents.length === 0) { reportsList.innerHTML = "<p>No reports uploaded yet.</p>"; return; }
documents.forEach(doc => {
const entryDiv = document.createElement("div");
entryDiv.className = "report-entry";
entryDiv.innerHTML = `<span>${doc.filename}</span><span class="status ${doc.status.toLowerCase()}">${doc.status}</span>`;
reportsList.appendChild(entryDiv);
});
} catch (error) {
reportsList.innerHTML = "<p>Could not load reports.</p>";
}
}
async function handleAiQuerySubmit() {
const query = researchQueryInput.value.trim();
if (!query) { alert("Please enter a research 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();
} catch (error) {
resultDisplay.innerText = `Error: ${error.message}`;
} finally {
submitButton.disabled = false;
submitButton.innerText = "Submit";
}
}
async function loadResearchHistory() {
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>";
}
}
uploadForm.addEventListener("submit", handleFileUpload);
submitButton.addEventListener("click", handleAiQuerySubmit);
loadReportsList();
loadResearchHistory();
}); |