File size: 2,618 Bytes
8655d70
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
{% extends "layout.html" %}

{% block title %}प्रोसेसिंग...{% endblock %}

{% block styles %}
    body{display:flex;align-items:center;justify-content:center;min-height:100vh}
    #log-output{white-space:pre-wrap;background-color:rgba(0,0,0,.3);font-family:monospace;max-height:400px;overflow-y:auto;border-radius:8px;border:1px solid var(--border-color)}
    .progress-bar{background:var(--gradient)}
    .progress{height:25px;border-radius:8px;background-color:rgba(0,0,0,.3)}
{% endblock %}

{% block content %}
<div class="card p-4 p-md-5 w-100">
    <h2 class="text-center">मिशन कंट्रोल</h2>
    <p id="status-text" class="text-center text-muted">प्रक्रिया शुरू हो रही है...</p>
    <div class="progress mb-3" role="progressbar">
        <div class="progress-bar progress-bar-striped progress-bar-animated" id="progress-bar" style="width:0%">0%</div>
    </div>
    <pre id="log-output" class="p-3"></pre>
</div>
{% endblock %}

{% block scripts %}
<script>
    const taskId = "{{ task_id }}";
    const progressBar = document.getElementById("progress-bar");
    const statusText = document.getElementById("status-text");
    const logOutput = document.getElementById("log-output");
    
    const pollingInterval = setInterval(async () => {
        try {
            const response = await fetch(`/progress/${taskId}`);
            const data = await response.json();
            const lastLog = data.log.trim().split("\n").pop();
            
            statusText.innerText = lastLog || "प्रतीक्षा में...";
            progressBar.style.width = data.progress + "%";
            progressBar.innerText = data.progress + "%";
            logOutput.innerText = data.log;
            logOutput.scrollTop = logOutput.scrollHeight;
            
            if (data.status === "complete") {
                clearInterval(pollingInterval);
                window.location.href = `/result/${data.output_filename}`;
            } else if (data.status === "error") {
                clearInterval(pollingInterval);
                statusText.innerText = "कोई त्रुटि हुई! विवरण के लिए लॉग देखें।";
                progressBar.classList.remove("bg-success");
                progressBar.classList.add("bg-danger");
            }
        } catch (error) {
            clearInterval(pollingInterval);
            statusText.innerText = "सर्वर से कनेक्शन टूट गया।";
        }
    }, 1500);
</script>
{% endblock %}