qr-generator / static /script.js
ministerchief's picture
Upload 7 files
e858903 verified
Raw
History Blame Contribute Delete
3.31 kB
// ===============================
// THREE.JS 3D BACKGROUND
// ===============================
const canvas = document.querySelector("#bg");
const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera(
75,
window.innerWidth / window.innerHeight,
0.1,
1000
);
const renderer = new THREE.WebGLRenderer({
canvas: canvas,
});
renderer.setSize(window.innerWidth, window.innerHeight);
camera.position.z = 30;
// Create particles
const particlesGeometry = new THREE.BufferGeometry();
const particlesCount = 5000;
const posArray = new Float32Array(particlesCount * 3);
for (let i = 0; i < particlesCount * 3; i++) {
posArray[i] = (Math.random() - 0.5) * 200;
}
particlesGeometry.setAttribute(
"position",
new THREE.BufferAttribute(posArray, 3)
);
const particlesMaterial = new THREE.PointsMaterial({
size: 0.5,
color: 0x4e73df
});
const particlesMesh = new THREE.Points(
particlesGeometry,
particlesMaterial
);
scene.add(particlesMesh);
// Animation loop
function animate() {
requestAnimationFrame(animate);
particlesMesh.rotation.y += 0.0007;
particlesMesh.rotation.x += 0.0003;
renderer.render(scene, camera);
}
animate();
// Resize
window.addEventListener("resize", () => {
camera.aspect = window.innerWidth / window.innerHeight;
camera.updateProjectionMatrix();
renderer.setSize(window.innerWidth, window.innerHeight);
});
// ===============================
// QR PREVIEW CODE
// ===============================
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");
// Preview container
const previewContainer = document.createElement("div");
previewContainer.style.marginTop = "20px";
previewContainer.style.textAlign = "center";
const previewImg = document.createElement("img");
previewImg.style.maxWidth = "200px";
previewContainer.appendChild(previewImg);
form.appendChild(previewContainer);
// Generate preview
function generatePreview() {
const data = dataInput.value.trim();
const fillColor = fillColorInput.value;
const backColor = backColorInput.value;
const size = sizeSelect.value;
if (data === "") {
previewImg.src = "";
return;
}
previewImg.src =
`https://api.qrserver.com/v1/create-qr-code/?size=${size * 25}x${size * 25}&data=${encodeURIComponent(data)}&color=${fillColor.replace('#', '')}&bgcolor=${backColor.replace('#', '')}`;
}
// Events
dataInput.addEventListener("input", generatePreview);
fillColorInput.addEventListener("input", generatePreview);
backColorInput.addEventListener("input", generatePreview);
sizeSelect.addEventListener("change", generatePreview);
// Form validation
form.addEventListener("submit", function (e) {
if (dataInput.value.trim() === "") {
e.preventDefault();
alert("Please enter Asset ID!");
}
});