async function getTimes(stopCode){
var result = await fetch('https://data.mobilites-m.fr/api/routers/default/index/clusters/' + stopCode + '/stoptimes', {
method: 'GET',
headers: {
'Origin': 'LiveTAG'
}
});
result = await result.json();
result.forEach(function (res){
var lineId = res.pattern.id.split(':');
res.lineName = lineId[1];
});
return result;
}
function calcul(tpsattente){
var heureactuelle = new Date();
heureactuelle = heureactuelle.getHours() * 3600 + heureactuelle.getMinutes() * 60 + heureactuelle.getSeconds();
tpsattente = tpsattente - heureactuelle;
return tpsattente / 60;
}
function apiCall(stop_id, box){
stopName.innerHTML = box.parentElement.querySelector('p').innerHTML;
timesDialogContent.innerHTML = '
Aucun passage prévu
'; } else { result.sort(function(a, b) { return a.lineName.localeCompare(b.lineName); }); // On récupère les terminus var terminus = getTerminus(result); var final = ""; for (var i = 0; i < result.length; i++) { if (result[i].times.length < 2) { var len = result[i].times.length; } else { var len = 2; } for (var j = 0; j < len; j++) { var tpsattente = result[i].times[j].realtimeArrival; var ligne = result[i].lineName; var direction = result[i].pattern.lastStopName; // On split avec la virgule pour récupérer le nom du terminus direction = direction.split(', '); direction = direction = 'Ligne ' + ligne + ' - Direction : ' + direction[1]; var attente = calcul(tpsattente); attente = Math.round(attente); if (result[i].times[j].realtime) { if (advancedMode) { let line_delay = Math.floor(result[i].times[j].arrivalDelay / 60); if (line_delay < 0) { var realTime = ' (A' + Math.abs(line_delay) + ')'; } else if (line_delay > 1) { var realTime = ' (R' + line_delay + ')'; } else { var realTime = ' (A l\'heure)'; } } else { var realTime = ''; } } else { var realTime = '*'; } if (attente < 1) { var tps = "<1 min" + realTime; } else if (attente > 59) { var tps = "> 1h" + realTime; } else { var tps = attente + " min" + realTime; } // On ajoute le temps d'attente au tableau associatif terminus[direction].push(tps); } } // On ordonne les temps d'attente (attention, le <1 min doit être en premier et le > 1h en dernier), on limite le nombre de temps d'attente à 2 for (var key in terminus) { terminus[key].sort(function (a, b) { if (a == "<1 min") { return -1; } else if (b == "<1 min") { return 1; } else if (a == "> 1h") { return 1; } else if (b == "> 1h") { return -1; } else { return a - b; } }); terminus[key] = terminus[key].slice(0, 2); } // On affiche les terminus et les temps d'attente final = current_stop; for (var key in terminus) { final += '
' + key + ' : ' + terminus[key].join(' - ') + '
'; } timesDialogContent.innerHTML = final; timesDialog.setAttribute('open', ''); } }); } function timesDisplay(box_id, stop_id) { if(current_box != undefined){ current_box.innerHTML = ''; } var boxid = 'times_' + box_id; var box = document.getElementById(boxid); box.innerHTML = ""; current_boxid = box_id; current_stopid = stop_id; current_box = box; apiCall(stop_id, box); } function getTerminus(result){ var final = []; for(var i = 0; i < result.length; i++){ var direction = result[i].pattern.lastStopName; var ligne = result[i].lineName; // On split avec la virgule pour récupérer le nom du terminus direction = direction.split(', '); direction = 'Ligne ' + ligne + ' - Direction : ' + direction[1]; // direction sera une clé associée à un tableau final[direction] = []; } return final; } function calcul(tpsattente){ var heureactuelle = new Date(); heureactuelle = heureactuelle.getHours() * 3600 + heureactuelle.getMinutes() * 60 + heureactuelle.getSeconds(); tpsattente = tpsattente - heureactuelle; return tpsattente / 60; } function reloadTimes(){ if(current_stopid != ""){ apiCall(current_stopid, current_box); } } const timesDialog = document.getElementById("times"); const timesDialogContent = document.getElementById("timesContent"); const stopName = document.getElementById("stopName"); var current_stop = ""; var current_stopid = ""; var current_box = ""; var current_boxid = "";