package main import ( // "io/ioutil" "net/http" ) func jsHandler(w http.ResponseWriter, r *http.Request) { w.Header().Add("Content-type", "application/javascript") _, err := w.Write([]byte(` // 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); }); `)) /* b, err := ioutil.ReadFile("C:\\Users\\mitch\\Documents\\my.js") if err != nil { Logger.Printf("While reading js: %s", err) return } _, err = w.Write(b) */ if err != nil { Logger.Printf("While sending js: %s", err) } }