From c8ce0eca2c4ffd3e78bbf62adb14aaa0f6f9bb06 Mon Sep 17 00:00:00 2001 From: Marcin Haba Date: Sun, 18 Aug 2019 10:51:17 +0200 Subject: [PATCH] baculum: Tweak running job progress bar improvements --- gui/baculum/protected/Web/JavaScript/misc.js | 35 +++++++++++++------ .../protected/Web/Pages/ClientView.page | 12 +++++-- .../protected/Web/Pages/JobHistoryView.page | 12 +++++-- 3 files changed, 45 insertions(+), 14 deletions(-) diff --git a/gui/baculum/protected/Web/JavaScript/misc.js b/gui/baculum/protected/Web/JavaScript/misc.js index 866828114..0128f5379 100644 --- a/gui/baculum/protected/Web/JavaScript/misc.js +++ b/gui/baculum/protected/Web/JavaScript/misc.js @@ -869,16 +869,31 @@ function estimate_job(jobs, job, level) { counter++; } } - var bytes_slope = ((counter * bytes_xy) - (time * bytes)) / (counter * x2 - Math.pow(time, 2)); - var files_slope = ((counter * files_xy) - (time * files)) / (counter * x2 - Math.pow(time, 2)); - var bytes_intercept = (bytes / counter) - (bytes_slope * (time / counter)); - var files_intercept = (files / counter) - (files_slope * (time / counter)); - var est_bytes = bytes_intercept + (bytes_slope * parseInt((new Date).getTime() / 1000, 10)); - var est_files = files_intercept + (files_slope * parseInt((new Date).getTime() / 1000, 10)); - return { - est_bytes: est_bytes, - est_files: est_files - }; + var est; + if (counter < 2) { + est = { + est_bytes: bytes, + est_files: files + }; + } else if (counter === 2) { + est = { + est_bytes: (bytes / 2), + est_files: (files / 2) + } + } else { + var divisor = (counter * x2 - Math.pow(time, 2)); + var bytes_slope = ((counter * bytes_xy) - (time * bytes)) / divisor; + var files_slope = ((counter * files_xy) - (time * files)) / divisor; + var bytes_intercept = (bytes / counter) - (bytes_slope * (time / counter)); + var files_intercept = (files / counter) - (files_slope * (time / counter)); + var est_bytes = bytes_intercept + (bytes_slope * parseInt((new Date).getTime() / 1000, 10)); + var est_files = files_intercept + (files_slope * parseInt((new Date).getTime() / 1000, 10)); + est = { + est_bytes: est_bytes, + est_files: est_files + }; + } + return est; }; function get_url_param (name) { diff --git a/gui/baculum/protected/Web/Pages/ClientView.page b/gui/baculum/protected/Web/Pages/ClientView.page index e90297273..bd681622a 100644 --- a/gui/baculum/protected/Web/Pages/ClientView.page +++ b/gui/baculum/protected/Web/Pages/ClientView.page @@ -324,7 +324,11 @@ var oGraphicalClientStatus = { bytes_progress.title = '<%[ Progress bar displays estimated values ]%>'; var bytes_label = document.createElement('DIV'); bytes_label.className = 'progressbar-label'; - bytes_label.textContent = Units.get_formatted_size(bytes) + ' / <%[ est. ]%> ' + Units.get_formatted_size(est.est_bytes) + ' (' + ((100 * bytes) / est.est_bytes).toFixed(1) + '%' + ')'; + var bytes_perc = ((100 * bytes) / est.est_bytes); + if (bytes_perc > 100) { + bytes_perc = 100; + } + bytes_label.textContent = Units.get_formatted_size(bytes) + ' / <%[ est. ]%> ' + Units.get_formatted_size(est.est_bytes) + ' (' + bytes_perc.toFixed(1) + '%' + ')'; bytes_progress.style.width = '70%'; bytes_progress.appendChild(bytes_label); var bytes_bar = $(bytes_progress); @@ -346,7 +350,11 @@ var oGraphicalClientStatus = { files_progress.title = '<%[ Progress bar displays estimated values ]%>'; var files_label = document.createElement('DIV'); files_label.className = 'progressbar-label'; - files_label.textContent = files + ' / <%[ est. ]%> ' + parseInt(est.est_files, 10) + ' (' + ((100 * files) / est.est_files).toFixed(1) + '%' + ')'; + var files_perc = ((100 * files) / est.est_files); + if (files_perc > 100) { + files_perc = 100; + } + files_label.textContent = files + ' / <%[ est. ]%> ' + parseInt(est.est_files, 10) + ' (' + files_perc.toFixed(1) + '%' + ')'; files_progress.style.width = '70%'; files_progress.appendChild(files_label); var files_bar = $(files_progress); diff --git a/gui/baculum/protected/Web/Pages/JobHistoryView.page b/gui/baculum/protected/Web/Pages/JobHistoryView.page index e19037f04..61bb4d697 100644 --- a/gui/baculum/protected/Web/Pages/JobHistoryView.page +++ b/gui/baculum/protected/Web/Pages/JobHistoryView.page @@ -255,7 +255,11 @@ var oRunningJobStatus = { bytes_progress.title = '<%[ Progress bar displays estimated values ]%>'; var bytes_label = document.createElement('DIV'); bytes_label.className = 'progressbar-label'; - bytes_label.textContent = Units.get_formatted_size(bytes) + ' / <%[ est. ]%> ' + Units.get_formatted_size(est.est_bytes) + ' (' + ((100 * bytes) / est.est_bytes).toFixed(1) + '%' + ')'; + var bytes_perc = ((100 * bytes) / est.est_bytes); + if (bytes_perc > 100) { + bytes_perc = 100; + } + bytes_label.textContent = Units.get_formatted_size(bytes) + ' / <%[ est. ]%> ' + Units.get_formatted_size(est.est_bytes) + ' (' + bytes_perc.toFixed(1) + '%' + ')'; bytes_progress.style.width = '70%'; bytes_progress.appendChild(bytes_label); var bytes_bar = $(bytes_progress); @@ -277,7 +281,11 @@ var oRunningJobStatus = { files_progress.title = '<%[ Progress bar displays estimated values ]%>'; var files_label = document.createElement('DIV'); files_label.className = 'progressbar-label'; - files_label.textContent = files + ' / <%[ est. ]%> ' + parseInt(est.est_files, 10) + ' (' + ((100 * files) / est.est_files).toFixed(1) + '%' + ')'; + var files_perc = ((100 * files) / est.est_files); + if (files_perc > 100) { + files_perc = 100; + } + files_label.textContent = files + ' / <%[ est. ]%> ' + parseInt(est.est_files, 10) + ' (' + files_perc.toFixed(1) + '%' + ')'; files_progress.style.width = '70%'; files_progress.appendChild(files_label); var files_bar = $(files_progress); -- 2.47.3