Sindbad~EG File Manager

Current Path : /home/numerotech/conf-regdesk.numerotech.com/reg_desk/core/templates/signup/
Upload File :
Current File : //home/numerotech/conf-regdesk.numerotech.com/reg_desk/core/templates/signup/qr_scanner.html

{% extends "login/layout.html" %}
{% block title %}
QR Scan to Signup
{% endblock %}  
{% block style %}
 <style>
        #video {
            width: 100%;
            max-width: 500px;
            height: 300px; /* Set your desired height here */
            object-fit: cover; /* This ensures the video covers the entire area */
        }
        #canvas {
            display: none;
        }
    </style>
{% endblock %}  
{% block content %}
<div class="container-fluid mt-3">
    <h1>QR Code Scan to Signup</h1>
    
    <div id="controls" class="row">
        <div class="col text-center">
        <button id="start" class="btn btn-primary"><i class="fa-solid fa-camera"></i>Start Scanning</button>
        <button id="stop" class="btn btn-danger" style="display:none"><i class="fa-solid fa-camera"></i>Stop Scanning</button>
          <a href="{{ url_for('signup.getSearch',conf_id=conf_id,conf_key=conf_key) }}" class="btn btn-danger"> <i class="fa-solid fa-search"></i> Search delegates</a>
        </div>
    </div>
    
    <video id="video" autoplay style="display:none"></video>
    <canvas id="canvas"></canvas>
    <div class="w-100 text-center">
        <!--<h4 id="output">Delegate No. : <span id="qr-result">None</span></h4>    -->
    </div>
    
    </div>
{% endblock %}
{% block bottomscript %}

    
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/jsqr@1.4.0/dist/jsQR.js"></script>
    <!--<script src="/static/js/qrcode-scanner.js"></script>-->
    <script>
        
        var url = "{{ url }}"
   
    
        $(document).ready(function() {
            
        const video = document.getElementById('video');
        const canvasElement = document.getElementById('canvas');
        const canvas = canvasElement.getContext('2d');
        const outputData = document.getElementById('qr-result');
    
        let scanning = false;
        let stream = null;


        
        // Start scanning
        $('#start').on('click', function() {
            startScanning();
            $("#video").show()
            // $('#start').prop('disabled', true);
            // $('#stop').prop('disabled', false);
            $('#start').hide()
            $('#stop').show()
        });
    
        // Stop scanning
        $('#stop').on('click', function() {
            stopScanning();
            $("#video").hide()
            // $('#start').prop('disabled', false);
            // $('#stop').prop('disabled', true);
            $('#start').show()
            $('#stop').hide()
        });
        
        function startScanning() {
            scanning = true;
            navigator.mediaDevices.getUserMedia({ video: { facingMode: "environment" } }).then(function(s) {
                stream = s;
                video.srcObject = stream;
                video.setAttribute("playsinline", true); // required to tell iOS safari we don't want fullscreen
                video.play();
                requestAnimationFrame(tick);
            });
        }
    
        function stopScanning() {
            scanning = false;
            if (stream) {
                stream.getTracks().forEach(track => track.stop());
            }
            video.srcObject = null;
            // outputData.innerText = "None";
        }
       function tick() {
        if (scanning) {
            if (video.readyState === video.HAVE_ENOUGH_DATA) {
                canvasElement.height = video.videoHeight;
                canvasElement.width = video.videoWidth;
                canvas.drawImage(video, 0, 0, canvasElement.width, canvasElement.height);
                const imageData = canvas.getImageData(0, 0, canvasElement.width, canvasElement.height);
                const code = jsQR(imageData.data, imageData.width, imageData.height, {
                    inversionAttempts: "dontInvert",
                });
                if (code) {
                    scan_val =  code.data;
                    // alert(scan_val)
                    // outputData.innerText = scan_val
                    stopScanning();
                    $('#start').prop('disabled', false);
                    $('#stop').prop('disabled', true);
                    
                    // url_new = url + scan_val // only delegate_no
                    url_new = scan_val //  url Scan value
                    
                    window.location.replace(url_new)
                    
                    
                }
            }
            requestAnimationFrame(tick);
        }
    }
});

    </script>

{% endblock %}

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists