Digital Visitor Pass & Entry System

Please fill out your details to generate a digital visitor pass.

Company: ${visitor.company}

Host: ${visitor.host}

Issued: ${visitor.timestamp}

`; // Log the entry if not already logged if (!checkedInLog.some(log => log.id === visitor.id)) { const checkInTime = new Date().toLocaleTimeString('en-US', { timeStyle: 'short' }); checkedInLog.push({ ...visitor, checkInTime }); updateEntryLog(); } } else { verificationResultDiv.innerHTML = `

Invalid Pass ID

`; } passIdInput.value = ''; } /** * Updates the admin's visitor entry log table. */ function updateEntryLog() { if (checkedInLog.length === 0) { entryLogTableBody.innerHTML = 'No visitors checked in yet.'; return; } entryLogTableBody.innerHTML = ''; checkedInLog.forEach(log => { const row = document.createElement('tr'); row.innerHTML = ` ${log.name} ${log.id} ${log.checkInTime} `; entryLogTableBody.appendChild(row); }); } /** * Handles downloading the digital pass as a PDF. */ async function handleDownloadPdf() { const passCard = document.getElementById('digital-pass-card'); if (!passCard || !window.jspdf || !window.html2canvas) { console.error("PDF generation library or element not found."); return; } try { const canvas = await html2canvas(passCard, { scale: 2 }); const imgData = canvas.toDataURL('image/png'); const { jsPDF } = window.jspdf; const pdf = new jsPDF({ orientation: 'portrait', unit: 'px', format: [canvas.width/2, canvas.height/2] }); pdf.addImage(imgData, 'PNG', 0, 0, canvas.width/2, canvas.height/2); const pdfDataUri = pdf.output('dataurlstring'); const link = document.createElement('a'); link.href = pdfDataUri; link.download = `Visitor-Pass-${document.getElementById('passId').textContent}.pdf`; document.body.appendChild(link); link.click(); document.body.removeChild(link); } catch (error) { console.error("Failed to generate PDF:", error); } } // --- ATTACH EVENT LISTENERS --- if (generatePassBtn) generatePassBtn.addEventListener('click', handleGeneratePass); if (downloadPdfBtn) downloadPdfBtn.addEventListener('click', handleDownloadPdf); if (verifyPassBtn) verifyPassBtn.addEventListener('click', handleVerifyPass); if (newPassBtn) { newPassBtn.addEventListener('click', () => { passView.classList.add('hidden'); mainView.classList.remove('hidden'); showTab('entry'); // Default to entry tab }); } });
Scroll to Top