2019-09-05 01:34:28 -06:00
|
|
|
var repeat;
|
|
|
|
|
|
|
|
moment.relativeTimeThreshold('m', 120);
|
|
|
|
|
|
|
|
function maketable(str, arr)
|
|
|
|
{
|
|
|
|
var table=d3.select(str);
|
|
|
|
table.html("");
|
|
|
|
var thead=table.append("thead");
|
|
|
|
var tbody=table.append("tbody");
|
|
|
|
|
|
|
|
var rows=tbody.selectAll("tr").
|
|
|
|
data(arr).
|
|
|
|
enter().
|
|
|
|
append("tr");
|
|
|
|
|
2019-09-16 06:33:06 -06:00
|
|
|
var columns = ["sv", "best-tle", "best-tle-dist", "best-tle-norad", "best-tle-int-desig", "eph-ecefX", "eph-ecefY", "eph-ecefZ", "tle-ecefX", "tle-ecefY", "tle-ecefZ", "eph-latitude", "eph-longitude", "tle-latitude", "tle-longitude", "tle-eciX", "tle-eciY", "tle-eciZ", "t0e", "t"];
|
2019-09-05 01:34:28 -06:00
|
|
|
|
|
|
|
// append the header row
|
|
|
|
thead.append("tr")
|
|
|
|
.selectAll("th")
|
|
|
|
.data(columns)
|
|
|
|
.enter()
|
|
|
|
.append("th")
|
|
|
|
.text(function(column) {
|
2019-09-16 06:33:06 -06:00
|
|
|
if(column == "delta_hz_corr")
|
|
|
|
return "ΔHz";
|
2019-09-05 01:34:28 -06:00
|
|
|
else
|
|
|
|
return column;
|
|
|
|
});
|
|
|
|
|
|
|
|
var cells = rows.selectAll("td").
|
|
|
|
data(function(row) {
|
|
|
|
return columns.map(function(column) {
|
|
|
|
var ret={};
|
|
|
|
ret.column = column;
|
|
|
|
ret.color=null;
|
2019-09-16 06:33:06 -06:00
|
|
|
if(row[column] != null && column != "sv" && column != "best-tle" && column != "best-tle-norad" && column != "best-tle-int-desig")
|
2019-09-05 01:34:28 -06:00
|
|
|
ret.value = row[column].toFixed(1);
|
|
|
|
else
|
|
|
|
ret.value = row[column];
|
|
|
|
return ret;
|
|
|
|
})
|
|
|
|
})
|
|
|
|
.enter().append("td").html(function(d) { return d.value; }).attr("align", "right").style("background-color", function(d) {
|
|
|
|
return d.color;
|
|
|
|
});
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
var sats={};
|
|
|
|
var lastseen=null;
|
|
|
|
function update()
|
|
|
|
{
|
|
|
|
var seconds = 2;
|
|
|
|
clearTimeout(repeat);
|
|
|
|
repeat=setTimeout(update, 1000.0*seconds);
|
|
|
|
|
|
|
|
if(lastseen != null)
|
|
|
|
d3.select("#freshness").html(lastseen.fromNow());
|
2019-09-22 08:42:23 -06:00
|
|
|
d3.json("global.json", function(d) {
|
2019-09-05 01:34:28 -06:00
|
|
|
lastseen = moment(1000*d["last-seen"]);
|
|
|
|
d3.select("#freshness").html(lastseen.fromNow());
|
|
|
|
});
|
|
|
|
|
|
|
|
|
2019-09-22 08:42:23 -06:00
|
|
|
d3.json("almanac.json", function(d) {
|
2019-09-05 01:34:28 -06:00
|
|
|
// put data in an array
|
|
|
|
sats=d;
|
|
|
|
var arr=[];
|
|
|
|
Object.keys(d).forEach(function(e) {
|
|
|
|
var o = d[e];
|
|
|
|
o.sv=e;
|
|
|
|
arr.push(o);
|
|
|
|
});
|
|
|
|
|
|
|
|
// sort it on SV
|
|
|
|
arr.sort(function(a, b) {
|
|
|
|
if(Number(a.sv) < Number(b.sv))
|
|
|
|
return -1;
|
|
|
|
if(Number(b.sv) < Number(a.sv))
|
|
|
|
return 1;
|
|
|
|
return 0;
|
|
|
|
});
|
|
|
|
|
|
|
|
var livearr=[];
|
|
|
|
for(n = 0 ; n < arr.length; n++)
|
|
|
|
{
|
|
|
|
livearr.push(arr[n]);
|
|
|
|
}
|
|
|
|
|
|
|
|
maketable("#svs", livearr);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
repeat=update();
|
|
|
|
|
|
|
|
|