From eaf02771d767e4745572d9b00e71e138ee030e60 Mon Sep 17 00:00:00 2001 From: Mitch Riedstra Date: Thu, 4 Mar 2021 17:54:03 -0500 Subject: Switch go go 1.16 and use Embed --- cmd/web/static/main.js | 84 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 cmd/web/static/main.js (limited to 'cmd/web/static/main.js') diff --git a/cmd/web/static/main.js b/cmd/web/static/main.js new file mode 100644 index 0000000..55edf0c --- /dev/null +++ b/cmd/web/static/main.js @@ -0,0 +1,84 @@ +// pretty print duration when given in seconds +function formatDuration(dur) { + var out = ""; + + var hours = 0; + var minutes = 0; + + if(dur > (60*60)){ + hours = Math.trunc(dur/(60*60)) + out = out + hours + " hours " + } + + if(dur > 60){ + minutes = Math.trunc((dur-(hours*60*60))/60) + out = out + minutes + " minutes " + } + + seconds = Math.trunc(dur - ( (hours*60*60) + (minutes*60) )) + out = out + seconds + " seconds " + + return out; +} + +function setStatus(stat) { + var elem = document.getElementById("installBar"); + var msg = document.getElementById("message"); + + // console.log(stat) + + if(stat.Running) { + percent = Math.round((stat.Transferred/stat.Size)*10000)/100; + + var t = Date.parse(stat.Start); + // var n = Date.now(); + var elapsed = Date.now() - t; + var trans = (stat.Transferred/1024/1024); + + console.log(trans) + console.log(elapsed / 1000) + + var rate = Math.round(trans / (elapsed / 1000)) + + elem.style.width = percent + "%"; + elem.innerHTML = percent + "%"; + elem.style.display = ""; + + // in seconds + var eta = Math.round(((stat.Size - trans)/1024/1024) / rate); + + msg.innerHTML = "Installing: " + stat.Url + + "\nRate: " + rate + "mb/s" + + "\nEta: " + formatDuration(eta); + msg.style.display = ""; + } + + if(!stat.Running && stat.Transferred >= 50 && stat.Error == null) { + elem.style.width = 100 + "%"; + elem.innerHTML = 100 + "%"; + msg.innerHTML = "Completed install for: " + stat.Url; + elem.style.display = ""; + msg.style.display = ""; + } + + if(stat.Error != null) { + msg.innerHTML = "Errors encountered while installing from: \n\n" + + stat.Url + "\n\n" + + JSON.stringify(stat.Error, undefined, 2); + elem.style.display = "hidden"; + msg.style.display = ""; + } +} + +function updateStatus() { +window.fetch('/status') + .then(function(response){ + return response.json(); + }).then(function(json){ + return setStatus(json); + }); +} + +document.addEventListener("DOMContentLoaded",function(){ + setInterval(updateStatus, 750); +}); -- cgit v1.2.3