Spaces:
Sleeping
Sleeping
File size: 2,757 Bytes
3f44b33 | 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 | // ===============================
// Select Form Elements
// ===============================
const dataInput = document.querySelector("input[name='data']");
const fillColorInput = document.querySelector("input[name='fill_color']");
const backColorInput = document.querySelector("input[name='back_color']");
const sizeSelect = document.querySelector("select[name='size']");
const logoInput = document.querySelector("input[name='logo']");
const form = document.querySelector("form");
// ===============================
// Create QR Preview Container
// ===============================
const previewContainer = document.createElement("div");
previewContainer.style.marginTop = "20px";
previewContainer.style.textAlign = "center";
const previewTitle = document.createElement("h3");
previewTitle.innerText = "Live QR Preview";
previewTitle.style.marginBottom = "10px";
const previewImg = document.createElement("img");
previewImg.style.maxWidth = "200px";
previewImg.style.border = "1px solid #ddd";
previewImg.style.padding = "10px";
previewImg.style.borderRadius = "10px";
previewContainer.appendChild(previewTitle);
previewContainer.appendChild(previewImg);
form.appendChild(previewContainer);
// ===============================
// Generate Live QR Preview
// ===============================
function generatePreview() {
const data = dataInput.value.trim();
const fillColor = fillColorInput.value;
const backColor = backColorInput.value;
const size = parseInt(sizeSelect.value);
if (data === "") {
previewImg.src = "";
return;
}
const qrSize = size * 25;
previewImg.src = `https://api.qrserver.com/v1/create-qr-code/?size=${qrSize}x${qrSize}&data=${encodeURIComponent(data)}&color=${fillColor.replace('#', '')}&bgcolor=${backColor.replace('#', '')}`;
}
// ===============================
// Event Listeners for Live Update
// ===============================
dataInput.addEventListener("input", generatePreview);
fillColorInput.addEventListener("input", generatePreview);
backColorInput.addEventListener("input", generatePreview);
sizeSelect.addEventListener("change", generatePreview);
// ===============================
// Logo Upload Handling
// ===============================
// (Logo will be embedded in backend only)
logoInput.addEventListener("change", function () {
generatePreview(); // Keep QR preview intact
});
// ===============================
// Simple Form Validation
// ===============================
form.addEventListener("submit", function (e) {
if (dataInput.value.trim() === "") {
e.preventDefault();
alert("Please enter Asset ID or text!");
dataInput.focus();
}
}); |