@@ -1435,6 +1435,35 @@ <h6>Browser Lock</h6>
14351435 </ div >
14361436 </ div >
14371437 </ div >
1438+
1439+ <!-- 360 Room Camera QR Section -->
1440+ < div class ="card mb-3 " style ="border:1.5px solid #d8b4fe;background:linear-gradient(135deg,#faf5ff,#f3e8ff); ">
1441+ < div class ="card-body " style ="padding:20px; ">
1442+ < div style ="display:flex;justify-content:space-between;align-items:flex-start;flex-wrap:wrap;gap:12px; ">
1443+ < div >
1444+ < h5 style ="margin:0 0 4px;font-weight:700;display:flex;align-items:center;gap:8px; ">
1445+ < i class ="fas fa-mobile-screen " style ="color:#7c3aed; "> </ i > 360° Room Camera
1446+ < span style ="font-size:0.68rem;font-weight:700;color:#7c3aed;background:#ede9fe;padding:2px 8px;border-radius:10px; "> OPTIONAL</ span >
1447+ </ h5 >
1448+ < p style ="font-size:0.82rem;color:#6b7280;margin:0; "> Generate a QR code for the candidate to scan with their smartphone</ p >
1449+ </ div >
1450+ < button class ="btn-primary-custom " onclick ="show360QRCode() " style ="background:#7c3aed;border-color:#7c3aed;white-space:nowrap; ">
1451+ < i class ="fas fa-qrcode "> </ i > Generate QR Code
1452+ </ button >
1453+ </ div >
1454+ < div id ="qr360Container " style ="display:none;margin-top:16px;text-align:center; ">
1455+ < div style ="background:white;display:inline-block;padding:20px;border-radius:16px;border:2px solid #d8b4fe; ">
1456+ < div id ="qr360Canvas " style ="width:200px;height:200px;margin:0 auto; "> </ div >
1457+ < div style ="margin-top:10px;font-size:0.78rem;color:#6b21a8;font-weight:600; "> Scan with phone camera</ div >
1458+ < div id ="qr360Link " style ="margin-top:4px;font-size:0.72rem;color:#94a3b8;word-break:break-all; "> </ div >
1459+ </ div >
1460+ < div style ="margin-top:12px;display:flex;justify-content:center;gap:8px; ">
1461+ < button class ="btn-outline-custom " style ="font-size:0.78rem;padding:5px 14px; " onclick ="copy360Link() "> < i class ="fas fa-copy me-1 "> </ i > Copy Link</ button >
1462+ < a id ="qr360DirectLink " href ="# " target ="_blank " class ="btn-outline-custom " style ="font-size:0.78rem;padding:5px 14px;text-decoration:none; "> < i class ="fas fa-external-link-alt me-1 "> </ i > Open Page</ a >
1463+ </ div >
1464+ </ div >
1465+ </ div >
1466+ </ div >
14381467 < div class ="card ">
14391468 < div class ="card-header "> < h5 > Proctored Interview Sessions</ h5 > </ div >
14401469 < div class ="card-body ">
@@ -2329,6 +2358,26 @@ <h6><i class="fas fa-shield-halved"></i> Proctored Interview Settings <span clas
23292358 </ div >
23302359 </ div >
23312360 </ div >
2361+ <!-- 360 Room Camera Option -->
2362+ < div style ="margin-top:12px;padding:14px 16px;background:linear-gradient(135deg,#faf5ff,#f3e8ff);border:1.5px solid #d8b4fe;border-radius:12px; ">
2363+ < div class ="proctor-option " style ="margin:0; ">
2364+ < input type ="checkbox " id ="proctor360Camera " onchange ="document.getElementById('proctor360Info').style.display=this.checked?'block':'none' ">
2365+ < div style ="flex:1; ">
2366+ < label for ="proctor360Camera "> < strong > 📱 360° Room Camera</ strong > < span style ="font-size:0.7rem;font-weight:700;color:#7c3aed;background:#ede9fe;padding:2px 8px;border-radius:10px;margin-left:4px; "> OPTIONAL</ span > </ label >
2367+ < div class ="proctor-desc "> Candidate scans QR code on smartphone, places it behind desk as secondary camera</ div >
2368+ </ div >
2369+ </ div >
2370+ < div id ="proctor360Info " style ="display:none;margin-top:10px;padding:10px 12px;background:white;border-radius:8px;border:1px solid #e9d5ff; ">
2371+ < div style ="font-size:0.78rem;color:#6b21a8;font-weight:600;margin-bottom:6px; "> < i class ="fas fa-info-circle me-1 "> </ i > How it works:</ div >
2372+ < ol style ="font-size:0.76rem;color:#581c87;margin:0;padding-left:18px;line-height:1.7; ">
2373+ < li > After scheduling, a < strong > QR code</ strong > is generated for the candidate</ li >
2374+ < li > Candidate scans it with their < strong > smartphone</ strong > </ li >
2375+ < li > Phone opens a page streaming the < strong > rear camera</ strong > </ li >
2376+ < li > Candidate places phone < strong > behind their desk</ strong > </ li >
2377+ < li > Proctor sees both < strong > webcam + room view</ strong > side by side</ li >
2378+ </ ol >
2379+ </ div >
2380+ </ div >
23322381 < div class ="form-group mt-3 ">
23332382 < label > Max Violations Before Auto-Flag</ label >
23342383 < select class ="form-control-custom " id ="proctorMaxViolations " style ="width:auto; ">
@@ -2529,6 +2578,7 @@ <h6 style="font-size:0.88rem;font-weight:700;margin-bottom:10px;display:flex;ali
25292578</ div >
25302579
25312580< script src ="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js "> </ script >
2581+ < script src ="https://cdn.jsdelivr.net/npm/qrcode-generator@1.4.4/qrcode.min.js "> </ script >
25322582< script src ="https://cdn.jsdelivr.net/npm/@supabase/supabase-js@2 "> </ script >
25332583< script src ="../js/hr-config.js "> </ script >
25342584< script >
0 commit comments