EVAL/static/execute.js

62 lines
1.6 KiB
JavaScript
Raw Normal View History

const setAnswer = (answer, files) => {
document.getElementById("answer").textContent = answer;
const filesDiv = document.getElementById("response-files");
filesDiv.innerHTML = "";
files.forEach((file) => {
const a = document.createElement("a");
a.classList.add("icon-link");
a.href = file;
a.textContent = file.split("/").pop();
a.setAttribute("download", "");
filesDiv.appendChild(a);
});
};
const submit = async () => {
setAnswer("Loading...", []);
const files = [];
const rawfiles = document.getElementById("files").files;
if (rawfiles.length > 0) {
const formData = new FormData();
for (let i = 0; i < rawfiles.length; i++) {
formData.append("files", rawfiles[i]);
}
const respone = await fetch("/upload", {
method: "POST",
body: formData,
});
const { urls } = await respone.json();
files.push(...urls);
}
const prompt = document.getElementById("prompt").value;
const session = document.getElementById("session").value;
try {
const response = await fetch("/api/execute", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
prompt,
session,
files,
}),
});
if (response.status !== 200) {
throw new Error(await response.text());
}
const { answer, files: responseFiles } = await response.json();
setAnswer(answer, responseFiles);
} catch (e) {
setAnswer("Error: " + e.message, []);
}
};
const setRandomSessionId = () => {
const sessionId = Math.random().toString(36).substring(2, 15);
document.getElementById("session").value = sessionId;
};