Bug 34364: Fix progress bar progress update
[koha.git] / koha-tmpl / intranet-tmpl / prog / js / job_progress.js
1 function updateProgress(job_id, callback) {
2     $.getJSON('/api/v1/jobs/' + job_id, function(job){
3         let recheck = true;
4
5         if ( job.status == "new" ) {
6             $('#job-percent-' + job_id).text(0);
7             $('#job-status-' + job_id).text(JOB_PROGRESS_NOT_STARTED);
8             $('#progress-bar-' + job_id).attr('aria-valuenow', 0).css("width", "100%");
9         } else if ( job.status == "started" ) {
10             const progress = job["progress"];
11             const size = job["size"];
12             const percent = progress > 0 ? ( progress / size ) * 100 : 0;
13             $('#job-percent-' + job_id).text(percent.toFixed(2));
14             $('#job-status-' + job_id).text(JOB_PROGRESS_STARTED);
15             $('#progress-bar-' + job_id).attr('aria-valuenow', percent);
16             $('#progress-bar-' + job_id).width(Math.floor(percent) +"%");
17         } else if ( job.status == "finished" ) {
18             $('#job-percent-' + job_id).text(100);
19             $('#job-status-' + job_id).text(JOB_PROGRESS_FINISHED);
20             $('#progress-bar-' + job_id).addClass("progress-bar-success");
21             $('#progress-bar-' + job_id).attr('aria-valuenow', 100).css("width", "100%");
22             recheck = false;
23             callback();
24         } else if ( job.status == "failed" ) {
25             $('#job-percent-' + job_id).text(0);
26             $('#job-status-' + job_id).text(JOB_PROGRESS_FAILED);
27             $('#progress-bar-' + job_id).addClass("progress-bar-danger");
28             $('#progress-bar-' + job_id).attr('aria-valuenow', 0).css("width", "100%");
29             recheck = false;
30         }
31
32         if ( recheck ) {
33             setTimeout(function(){updateProgress(job_id, callback)}, 1 * 1000);
34         }
35     });
36 }