resolvendo dependencias dos projetos

This commit is contained in:
JotaChina committed 2025-12-08 18:37:04 -03:00
1 parent d9b0648b85
commit 2ecad6268d
2 files changed
+120 -42

No files matched your search

+70
View File
@@ -804,6 +804,76 @@
});
}
});
document.addEventListener("DOMContentLoaded", () => {
// --- LÓGICA DE UPLOAD DE SAMPLE AVULSO ---
const uploadSampleBtn = document.getElementById("upload-sample-btn");
const sampleInput = document.getElementById("sample-file-input");
if (uploadSampleBtn && sampleInput) {
// 1. Botão clica no input invisível
uploadSampleBtn.addEventListener("click", () => {
sampleInput.click();
});
// 2. Quando o arquivo é selecionado
sampleInput.addEventListener("change", async () => {
if (sampleInput.files.length === 0) return;
const file = sampleInput.files[0];
// Pergunta a categoria para organizar no servidor (opcional)
// O backend usa isso para criar pastas: samples/drums, samples/vocals, etc.
const category = prompt(
"Em qual categoria este sample se encaixa? (Ex: drums, effects, vocals)",
"imported"
);
if (category === null) {
// Usuário cancelou
sampleInput.value = "";
return;
}
// Prepara o formulário
const formData = new FormData();
formData.append("sample_file", file); // Deve bater com 'sample_file' no Python
formData.append("subfolder", category); // Deve bater com 'subfolder' no Python
// Feedback Visual (ícone girando ou ficando transparente)
const originalIcon = uploadSampleBtn.className;
uploadSampleBtn.className = "fa-solid fa-spinner fa-spin"; // Ícone de loading
uploadSampleBtn.style.pointerEvents = "none";
try {
const response = await fetch("https://alice.ufsj.edu.br:33002/api/upload/sample", {
method: "POST",
body: formData
});
const result = await response.json();
if (response.ok) {
alert("Sucesso! " + result.message);
// Opcional: Recarregar a lista de samples lateral se você tiver uma função para isso
// reloadBrowser();
} else {
alert("Erro ao enviar: " + (result.error || "Desconhecido"));
}
} catch (error) {
console.error("Erro no upload:", error);
alert("Erro de conexão com o servidor.");
} finally {
// Restaura o botão e limpa o input
uploadSampleBtn.className = originalIcon;
uploadSampleBtn.style.pointerEvents = "auto";
sampleInput.value = "";
}
});
}
});
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.10.1/jszip.min.js"></script>