spdxl/www-sq7br/predict.js

110 wiersze
3.1 KiB
JavaScript

//require moment.js
var predicts=[];
class Predict {
constructor(){
this.spa="unknown";
this.type='burst';
this.burstAlt=0.0;
this.latitude=0.0;
this.longitude=0.0;
this.altitude=0.0;
this.time="";
this.marker= null;
}
parseCSV(predictCsv) {
var predict=predictCsv.split(",");
this.type=predict[0];
this.spa=predict[1].trim();
this.burstAlt=predict[2];
this.time=predict[3];
this.latitude=predict[4];
this.longitude=predict[5];
this.altitude=predict[6];
}
getLastFrameTime(){
return moment(this.time).format("DD HH:mm:ss");
}
getId(){
return this.spa+"_"+this.type+"_"+this.burstAlt;
}
}
function getPredictData(mymap){
nocache = "&nocache="+ Math.random() * 1000000;
var request = new XMLHttpRequest();
request.onreadystatechange = function(){
if (this.readyState == 4){
if (this.status == 200){
if (this.responseText != null){
//document.getElementById("mapmenu").innerHTML = this.responseText;
var csvData=this.responseText.split("\n");
csvData.splice(-1);
menuInner="";
//sondeLayer=null;
for(line in csvData ) {
//if (line>9) break;
var predictPar=new Predict();
predictPar.parseCSV(csvData[line]);
if(typeof predicts[predictPar.getId()] === 'undefined') {
predicts[predictPar.getId()]=predictPar;
var iconP=touchdownIcon;
if (predictPar.type == 'burst') iconP=burstIcon;
predictPar.marker= predictMarker=L.marker([predictPar.latitude, predictPar.longitude],{icon: iconP})
.bindPopup("<b>"+predictPar.spa+"</b><br />"+predictPar.type+" "+predictPar.burstAlt+" "+predictPar.time).addTo(mymap);
updatePredictList(predictPar);
} //if typeof
} //for
} //if response
} //if status 200
}
}
request.open("GET", "getcsvpred.php", true);
request.send(null);
}
function updatePredictList(predictPar){
var idItem="predict_item_"+predictPar.getId();
var div = document.getElementById(idItem);
item= "<div id=\""+idItem+"\">"
+"<button "
+"onclick=\"predictOnMapJump('"+predictPar.getId()+"')\">" +predictPar.getId()+"</button>"
+"</div>";
if (div === null) {
var newItem=document.createElement("div");
newItem.id=idItem;
newItem.innerHTML=item;
var controlPredict=document.getElementsByClassName('Predict leaflet-control')[0];
//menu.insertBefore(newItem,menu.childNodes[0]);
controlPredict.appendChild(newItem);
}
/*else
{
//sondeDetail.innerHTML=getSondeDetailContent(sondePar);
}
*/
}
function cleanOldPredicts(){
//for (i=predict.length-1;i>=0,i--) {
//if predict[i].time
//}
}