const lineaSelect = document.getElementById('linea'); const modelloSelect = document.getElementById('modello'); const contentBackground = document.getElementById('content-background'); let allresults = []; const urlList="https://setaapi.serverissimo.freeddns.org/busesinservice"; //Reperire modelli e numeri linea const urlRoutes = 'https://setaapi.serverissimo.freeddns.org/routenumberslist'; //const urlRoutes = 'http://localhost:5001/stoplist'; const urlModels = 'https://setaapi.serverissimo.freeddns.org/busmodels'; //const urlModels = 'http://localhost:5001/stoplist'; //Fetch routes and models and fill the selects fetch(urlRoutes) .then(response => { if (!response.ok) throw new Error("Errore nel caricamento dei dati."); return response.json(); }) .then(data => { allresults = data; allresults.forEach(route => { const option = document.createElement('option'); option.value = route; option.textContent = route; lineaSelect.appendChild(option); }); }) .catch(error => console.error('Errore nel caricamento dei dati:', error)); fetch(urlModels) .then(response => { if (!response.ok) throw new Error("Errore nel caricamento dei dati."); return response.json(); }) .then(data => { allresults = data; allresults.forEach(model => { const option = document.createElement('option'); if( model!="CAM New Busotto"&& model!="Iveco Cityclass CNG"&& model!="Mercedes Integro O550 (Giallo)" ){ option.value = modelsDictionary(model); option.textContent = model; modelloSelect.appendChild(option); } }); }) .catch(error => console.error('Errore nel caricamento dei dati:', error)); function modelsDictionary(model){ if(model=="Irisbus Citelis CNG EEV"){ return "Irisbus Citelis CNG"; } if(model=="Irisbus Crossway"){ return "Irisbus Crossway"; } if(model=="Irisbus Crossway ex Esercito Tedesco"){ return "Irisbus Crossway Esercito"; } if(model=="Iveco Urbanway Mild Hybrid 2022"){ return "Iveco Urbanway Hybrid CNG"; } if(model=="MenariniBus Citymood LNG"){ return "Menarinibus Citymood LNG"; } if(model=="MenariniBus Citymood CNG"){ return "Menarinibus Citymood CNG"; } if(model=="Iveco Crossway LE 12 CNG"){ return "Iveco Crossway LE CNG"; } if(model=="Iveco Crossway LE"){ return "Iveco Crossway LE Diesel"; } if(model=="Iveco Crossway Line"){ return "Iveco Crossway Line"; } if(model=="Mercedes Integro O550"||model=="Mercedes Integro O550 (Giallo)"){ return "Mercedes Integro"; } if(model=="Scania Irizar i4 LNG"){ return "Irizar i4 LNG"; } if(model=="Solaris Urbino 12 III CNG"){ return "Solaris Urbino 12 CNG"; } if(model=="Iveco Crossway Line 12 CNG"){ return "Iveco Crossway Line CNG"; } if(model=="MAN Lion's Regio"){ return "MAN Lion's Regio"; } if(model=="Setra S415 LE 2p ex Bolzano"){ return "Setra ex Bolzano (2 porte)"; } if(model=="Setra S415 LE 3p ex Bolzano"){ return "Setra ex Bolzano (3 porte)"; } if(model=="Iveco Crossway LE 14"){ return "Iveco Crossway LE 14m"; } if(model=="Iveco Crossway LE 14"){ return "Iveco Crossway LE 14m"; } if(model=="Iveco Crossway LE 14"){ return "Iveco Crossway LE 14m"; } if(model=="Iveco Crossway LE 14"){ return "Iveco Crossway LE 14m"; } if(model=="Iveco Crossway LE 14"){ return "Iveco Crossway LE 14m"; } if(model=="Iveco Crossway LE 14"){ return "Iveco Crossway LE 14m"; } if(model=="Iveco Crossway LE 14"){ return "Iveco Crossway LE 14m"; } if(model=="Iveco Crossway LE 14"){ return "Iveco Crossway LE 14m"; } if(model=="Iveco Crossway LE 14"){ return "Iveco Crossway LE 14m"; } } caricadati(); var refreshGeneraleID=setInterval(caricadati, 60000); function caricadati(){ fetch(urlList) .then(response => { if (!response.ok) throw new Error("Errore nel caricamento dei dati."); return response.json(); }) .then(data => { item = data.features; }) .then(data => { const container = document.getElementById('tabella-container'); container.innerHTML = ''; // Creo tabella const table = document.createElement('table'); // Intestazione const thead = document.createElement('thead'); thead.innerHTML = ` Linea Direzione Veicolo Modello veicolo Ora si trova a `; table.appendChild(thead); // Corpo tabella const tbody = document.createElement('tbody'); item.forEach(item => { const element = item.properties; const tr = document.createElement('tr'); if(element.next_stop==null){ var posizione=""; }else{ var posizione=element.next_stop; } tr.innerHTML = ` ${element.linea} ${element.route_desc} ${element.vehicle_code} ${element.model} ${posizione} `; tbody.appendChild(tr); }); table.appendChild(tbody); container.appendChild(table); }) .catch(err => { console.error('Errore nel caricamento dati:', err); document.getElementById('tabella-container').textContent = 'Errore nel caricamento dati.'; }); } //FILTRI var intervalFiltrati = 0; //Filtro per linea lineaSelect.addEventListener('change', function(event) { if(intervalFiltrati!=undefined){ //alert("Non è possibile usare due filtri allo stesso momento") clearInterval(intervalFiltrati); } const selectedOption = event.target.value; caricaFiltratiLinea(selectedOption); intervalFiltrati = setInterval(function dummyFunc(){caricaFiltratiLinea(selectedOption);}, 60000); clearInterval(refreshGeneraleID); if(document.getElementById("reimposta-filtro")==undefined){ const reimpostaFiltro = document.createElement('p'); reimpostaFiltro.setAttribute("style","margin-bottom: 0; font-size: 14px;"); reimpostaFiltro.setAttribute("id","reimposta-filtro"); reimpostaFiltro.innerHTML = ` Reimposta il filtro `; contentBackground.appendChild(reimpostaFiltro); } }); //Filtro per modello modelloSelect.addEventListener('change', function(event) { if(intervalFiltrati!=undefined){ //alert("Non è possibile usare due filtri allo stesso momento") clearInterval(intervalFiltrati); } const selectedOption = event.target.value; caricaFiltratiModello(selectedOption); intervalFiltrati = setInterval(function dummyFunc(){caricaFiltratiModello(selectedOption);}, 60000); clearInterval(refreshGeneraleID); if(document.getElementById("reimposta-filtro")==undefined){ const reimpostaFiltro = document.createElement('p'); reimpostaFiltro.setAttribute("style","margin-bottom: 0; font-size: 14px;"); reimpostaFiltro.setAttribute("id","reimposta-filtro"); reimpostaFiltro.innerHTML = ` Reimposta il filtro `; contentBackground.appendChild(reimpostaFiltro); } }); function reloadFiltratiLinea(){ caricaFiltratiLinea(lineaSelect.value); } function caricaFiltratiLinea(selectedOption){ const container = document.getElementById('tabella-container'); container.innerHTML = 'Caricamento dati...'; fetch(urlList) .then(response => { if (!response.ok) throw new Error("Errore nel caricamento dei dati."); return response.json(); }) .then(data=>{ container.innerHTML = ''; //Sostituisco il pulsante aggiorna tutti col pulsante aggiorna filtrati const aggiornaNav = document.getElementById('nav-inservizio'); aggiornaNav.innerHTML = ` `; // Creo tabella const table = document.createElement('table'); // Intestazione const thead = document.createElement('thead'); thead.innerHTML = ` Linea Direzione Veicolo Modello veicolo Ora si trova a `; table.appendChild(thead); data.features.forEach(elements => { // Extract only the numeric part const number = elements.properties.linea.match(/\d+/g); if(number==selectedOption){ const tbody = document.createElement('tbody'); const element = elements.properties; const tr = document.createElement('tr'); if(element.next_stop==null){ var posizione=""; }else{ var posizione=element.next_stop; } tr.innerHTML = ` ${element.linea} ${element.route_desc} ${element.vehicle_code} ${element.model} ${posizione} `; tbody.appendChild(tr); table.appendChild(tbody); container.appendChild(table); console.log("Ricarico"); }else{ container.appendChild(table); } }); }); } function caricaFiltratiModello(selectedOption){ const container = document.getElementById('tabella-container'); container.innerHTML = 'Caricamento dati...'; fetch(urlList) .then(response => { if (!response.ok) throw new Error("Errore nel caricamento dei dati."); return response.json(); }) .then(data=>{ container.innerHTML = ''; //Sostituisco il pulsante aggiorna tutti col pulsante aggiorna filtrati const aggiornaNav = document.getElementById('nav-inservizio'); aggiornaNav.innerHTML = ` `; // Creo tabella const table = document.createElement('table'); // Intestazione const thead = document.createElement('thead'); thead.innerHTML = ` Linea Direzione Veicolo Modello veicolo Ora si trova a `; table.appendChild(thead); data.features.forEach(elements => { if(elements.properties.model==selectedOption){ const tbody = document.createElement('tbody'); const element = elements.properties; const tr = document.createElement('tr'); if(element.next_stop==null){ var posizione=""; }else{ var posizione=element.next_stop; } tr.innerHTML = ` ${element.linea} ${element.route_desc} ${element.vehicle_code} ${element.model} ${posizione} `; tbody.appendChild(tr); table.appendChild(tbody); container.appendChild(table); console.log("Ricarico"); }else{ container.appendChild(table); } }); }); } function reloadFiltratiModello(){ caricaFiltratiModello(lineaSelect.value); }