document.addEventListener("DOMContentLoaded", () => {
const containFormData = document.querySelector(".words-check-container");
const form = document.getElementById("wordsForm");
const csrfToken = document.querySelector("[name=csrfmiddlewaretoken]").value;
const message = document.getElementById("response-message");
const modal = document.getElementById("confirmModal");
const modalContent = document.getElementById("confirmModalContent");
const cancelBtn = document.getElementById("cancelBtn");
const confirmBtn = document.getElementById("confirmBtn");
const URL = "/cata/testers/api/ratingword/cata";
const checkboxes = form.querySelectorAll('input[type="checkbox"]');
checkboxes.forEach((cb) => (cb.checked = false));
let wordsData = [];
form.addEventListener("submit", (e) => {
e.preventDefault();
const checkboxes = form.querySelectorAll('input[type="checkbox"]');
wordsData = Array.from(checkboxes).map((cb) => ({
id: parseInt(cb.dataset.wordId),
word: cb.dataset.wordName,
is_check: cb.checked,
}));
showModal(wordsData);
});
function showModal(words) {
const checkedWords = words.filter((w) => w.is_check);
const uncheckedWords = words.filter((w) => !w.is_check);
modalContent.innerHTML = `
Palabras seleccionadas:
${
checkedWords.length > 0
? checkedWords
.map(
(w) =>
`- ${w.word}
`
)
.join("")
: '- Ninguna
'
}
Palabras no seleccionadas:
${
uncheckedWords.length > 0
? uncheckedWords
.map(
(w) =>
`- ${w.word}
`
)
.join("")
: '- Todas seleccionadas
'
}
`;
modal.classList.remove("hidden");
}
cancelBtn.addEventListener("click", () => {
modalContent.innerHTML = "";
modal.classList.add("hidden");
});
confirmBtn.addEventListener("click", async () => {
modal.classList.add("hidden");
const dataProduct = {
id: parseInt(document.querySelector(".id-product").textContent),
code: document.querySelector(".code-product").textContent,
};
try {
const response = await fetch(URL, {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-CSRFToken": csrfToken,
"X-Requested-With": "XMLHttpRequest",
},
body: JSON.stringify({ words: wordsData, product: dataProduct }),
});
if (!response.ok) {
message.textContent = "Error en la respuesta del servidor";
message.classList.remove("hidden");
}
const result = await response.json();
const messError = result.error;
if (messError) {
message.textContent = messError;
return;
}
containFormData.innerHTML = `
Exito al guardar
${result.message}
`;
} catch (err) {
console.error(err);
message.textContent = "Error en la respuesta del servidor";
message.classList.remove("hidden");
}
});
});