split js to allow resume extract preview

This commit is contained in:
Kyle Belanger 2025-02-17 15:00:17 -05:00
parent 2a91527ff0
commit ab20fdf0aa
2 changed files with 57 additions and 37 deletions

View file

@ -1,5 +1,9 @@
@import "tailwindcss"; @import "tailwindcss";
#outputSection { #resumePreviewSection {
display: none;
}
#coverLetterSection {
display: none; display: none;
} }

View file

@ -1,71 +1,87 @@
document.getElementById('uploadForm').addEventListener('submit', async function (event) { document.getElementById('uploadForm').addEventListener('submit', async function (event) {
event.preventDefault(); event.preventDefault();
const outputSection = document.getElementById('outputSection'); const resumePreviewSection = document.getElementById('resumePreviewSection');
const coverLetterOutput = document.getElementById('coverLetterOutput'); const generateBtn = document.getElementById('generateCoverLetterBtn');
const generateBtn = document.getElementById('generateBtn');
const downloadBtn = document.getElementById('downloadBtn');
generateBtn.disabled = true; generateBtn.disabled = true;
generateBtn.textContent = "Generating..."; generateBtn.textContent = "Reading Resume...";
coverLetterOutput.value = ""; //This clear any previous generated output resumePreviewSection.value = ""; //This clear any previous generated output
resumePreviewSection.style.display = "flex";
// Show the Output Section while the program runs
outputSection.style.display = "block";
coverLetterOutput.value = "Generating cover letter...";
const fileInput = document.getElementById('resume'); const fileInput = document.getElementById('resume');
const jobDescriptionInput = document.getElementById('jobDescription');
if (!fileInput || !jobDescriptionInput) {
console.error("Form elements not found.");
return;
}
const file = fileInput.files[0]; const file = fileInput.files[0];
const jobDescription = jobDescriptionInput.value;
if (!file) { if (!file) {
alert("Please upload a resume."); alert("Please upload a resume.");
return; return;
} }
if (!jobDescription.trim()) {
alert("Please enter a job description.");
return;
}
const formData = new FormData(); const formData = new FormData();
formData.append("resume", file); formData.append("resume", file);
formData.append("jobDescription", jobDescription);
try { try {
const response = await fetch('/generate', { const response = await fetch('/generate/extract-resume', {
method: "POST", method: "POST",
body: formData, body: formData,
}); });
const result = await response.json(); const data = await response.json();
if (result.coverLetter) { if (data.error) {
coverLetterOutput.value = result.coverLetter; alert("Error: " + data.error)
downloadBtn.style.display = 'block';
} else { } else {
alert('Error Generating Cover Letter (Check Console for more details'); resumePreviewSection.value = data.extractedText;
outputSection.style.display = 'none' // Hides the output on erros generateBtn.disabled = false;
generateBtn.textContent = "Generate Cover Letter"
} }
} catch (error) { } catch (error) {
console.error('Error:', error); console.error('Error:', error);
alert('Something went wrong. Please try again.'); alert('Something went wrong. Please try again.');
outputSection.style.display = "none"; outputSection.style.display = "none";
} finally {
generateBtn.disabled = false;
generateBtn.textContent = 'Generate Cover Letter';
} }
}); });
document.getElementById("generateCoverLetterBtn").addEventListener("click", async function () {
const extractedResumeText = document.getElementById("resumeTextOutput").value;
const jobDescription = document.getElementById("jobDescription").value;
if (!extractedResumeText.trim()) {
alert("Please confirm the extracted resume text.");
return;
}
if (!jobDescription.trim()) {
alert("Please enter a job description.");
return;
}
const requestData = {
extractedResumeText,
jobDescription,
};
try {
const response = await fetch("/generate", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(requestData),
});
const data = await response.json();
if (data.error) {
alert("Error: " + data.error);
} else {
document.getElementById("coverLetterOutput").innerText = data.coverLetter;
document.getElementById("coverLetterSection").style.display = "block"; // Show cover letter section
}
} catch (error) {
console.error("Error generating cover letter:", error);
alert("Something went wrong. Please try again.");
}
});
document.getElementById('downloadBtn').addEventListener('click', async function () { document.getElementById('downloadBtn').addEventListener('click', async function () {
const coverLetterText = document.getElementById('coverLetterOutput').value; const coverLetterText = document.getElementById('coverLetterOutput').value;