blob: 0d54fabcf934b86a24fca5b698d50d8500022598 (
plain) (
blame)
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
|
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)
}
}
|