Spaces:
Running
Running
File size: 5,735 Bytes
ede5511 e11bb61 1d3a7b4 e11bb61 1d3a7b4 ac54ec5 1d3a7b4 e11bb61 1d3a7b4 e11bb61 1d3a7b4 e11bb61 1d3a7b4 e11bb61 1d3a7b4 e11bb61 1d3a7b4 e11bb61 1d3a7b4 e11bb61 1d3a7b4 ac54ec5 e11bb61 ac54ec5 1d3a7b4 ede5511 1d3a7b4 e892728 ede5511 3b24fc9 e892728 ac54ec5 e892728 e11bb61 ede5511 e892728 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 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 |
document.addEventListener("DOMContentLoaded", () => {
const workerUrl = "https://ctmresearchagent.aiagents.workers.dev"; // Your worker URL
// Event Listeners
document.getElementById("uploadForm").addEventListener("submit", handleReportUpload);
document.getElementById("submitButton").addEventListener("click", handleAiQuerySubmit);
// Initial data load
loadReportsList();
loadResearchHistory();
/**
* NEW: Submits the structured report data as JSON
*/
async function handleReportUpload(event) {
event.preventDefault();
const uploadButton = document.getElementById("uploadButton");
const uploadStatus = document.getElementById("uploadStatus");
const report = {
title: document.getElementById('reportTitle').value,
description: document.getElementById('reportDescription').value,
body: document.getElementById('reportBody').value,
};
if (!report.title || !report.description || !report.body) {
uploadStatus.textContent = 'Please fill out all fields.';
return;
}
uploadButton.disabled = true;
uploadButton.innerText = "Processing...";
uploadStatus.textContent = "Submitting and processing report. This may take a moment...";
try {
const response = await fetch(`${workerUrl}/api/upload`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(report),
});
const data = await response.json();
if (!response.ok) throw new Error(data.error || 'Failed to process report.');
uploadStatus.textContent = `Success: ${data.message}`;
document.getElementById("uploadForm").reset();
await loadReportsList(); // Refresh the list
} catch (error) {
uploadStatus.textContent = `Error: ${error.message}`;
} finally {
uploadButton.disabled = false;
uploadButton.innerText = "Process and Add Report";
}
}
/**
* NEW: Loads the list of reports directly from the database
*/
async function loadReportsList() {
const reportsList = document.getElementById("reportsList");
reportsList.innerHTML = "<p>Fetching reports...</p>";
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 have been added yet.</p>"; return; }
documents.forEach(doc => {
const entryDiv = document.createElement("div");
entryDiv.className = "report-entry";
entryDiv.innerHTML = `<h3>${doc.title}</h3><p>${doc.description}</p>`;
reportsList.appendChild(entryDiv);
});
} catch (error) {
reportsList.innerHTML = `<p>Could not load reports: ${error.message}</p>`;
}
}
// AI Query and History functions remain the same as the last working version
async function handleAiQuerySubmit() { /* ... function code is unchanged ... */ }
async function loadResearchHistory() { /* ... function code is unchanged ... */ }
// Paste the unchanged functions here
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();
} catch (error) {
resultDisplay.innerText = `Error: ${error.message}`;
} finally {
submitButton.disabled = false;
submitButton.innerText = "Submit";
}
}
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>";
}
}
}); |