Very good features added, many taks added for buses and many bulk searches.
This commit is contained in:
BIN
client/bus.png
Normal file
BIN
client/bus.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 481 B |
@ -1,113 +1,158 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>TLT Location Finder</title>
|
<title>TLT Location Finder</title>
|
||||||
<link rel="icon" type="image/x-icon" href="/favicon.ico">
|
<link rel="icon" type="image/x-icon" href="/favicon.ico">
|
||||||
<style>
|
<style>
|
||||||
#map {
|
#map {
|
||||||
height: 1000px;
|
height: 1000px;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
<picture>
|
|
||||||
<img src="http://assets.velend.eu:2052/assets/velend_eu-tltmap/velendeulogo.jpg" alt="velendeulogojpg" style="float: right; margin-left: 15px; width: 25%;">
|
|
||||||
</picture>
|
|
||||||
<h2>TLT Location Finder</h2>
|
|
||||||
<form id="search-form">
|
|
||||||
<label for="bus-id">Enter TAK:</label>
|
|
||||||
<input type="text" id="bus-id" name="bus-id">
|
|
||||||
<button type="submit">Search</button>
|
|
||||||
</form>
|
|
||||||
<form id="bulk-search">
|
|
||||||
<p>Bulk searches:</p>
|
|
||||||
<button type="click" id="electricbusSearch">Urbino Electric</button>
|
|
||||||
<button type="press" id="pesaSearch">Pesa Twist</button>
|
|
||||||
</form>
|
|
||||||
<form id="recievedData">
|
|
||||||
<p id="type">Type: UNFETCHED</p>
|
|
||||||
<p id="line">Current line: UNFETCHED</p>
|
|
||||||
<p id="lat">Latitude: UNFETCHED</p>
|
|
||||||
<p id="long">Longitude: UNFETCHED</p>
|
|
||||||
<p id="latlong">Coordinates (Merged): UNFETCHED</p>
|
|
||||||
<p id="tak">TAK: UNFETCHED</p>
|
|
||||||
<p id="vehicleInfo">Vehicle info: UNFETCHED</p>
|
|
||||||
</form>
|
|
||||||
|
|
||||||
<div id="demoMap" style="height:512px"></div>
|
|
||||||
|
|
||||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.7.1/leaflet.js"></script>
|
|
||||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.7.1/leaflet.css" />
|
|
||||||
<script src="OpenLayers.js"></script>
|
|
||||||
<script src="/socket.io/socket.io.js"></script>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
var socket = io();//
|
|
||||||
|
|
||||||
// Stuff for the map
|
|
||||||
map = new OpenLayers.Map("demoMap");
|
|
||||||
var mapnik = new OpenLayers.Layer.OSM();
|
|
||||||
var fromProjection = new OpenLayers.Projection("EPSG:4326"); // Transform from WGS 1984
|
|
||||||
var toProjection = new OpenLayers.Projection("EPSG:900913"); // to Spherical Mercator Projection
|
|
||||||
var position = new OpenLayers.LonLat(24.7536, 59.4370).transform(fromProjection, toProjection);
|
|
||||||
var zoom = 12;
|
|
||||||
|
|
||||||
map.addLayer(mapnik);
|
|
||||||
map.setCenter(position, zoom);
|
|
||||||
|
|
||||||
// Function to handle form submission
|
|
||||||
document.getElementById('search-form').addEventListener('submit', function (event) {
|
|
||||||
event.preventDefault();
|
|
||||||
var tak = document.getElementById('bus-id').value.trim();
|
|
||||||
socket.emit('takSearch', tak);
|
|
||||||
});
|
|
||||||
document.getElementById('bulk-search').addEventListener('submit', function (event) {
|
|
||||||
event.preventDefault();
|
|
||||||
});
|
|
||||||
document.getElementById('electricbusSearch').addEventListener('click', function () {
|
|
||||||
socket.emit('electricBusBulkSearch');
|
|
||||||
});
|
|
||||||
document.getElementById('pesaSearch').addEventListener('click', function () {
|
|
||||||
console.log("bruh");
|
|
||||||
socket.emit('pesaTramBulkSearch');
|
|
||||||
});
|
|
||||||
|
|
||||||
oldMarker = "1";
|
|
||||||
socket.on('takResults', (typeR, lineR, latR, longR, takR, latlongR, vehicleTypeR) => {
|
|
||||||
console.log("Datafetch success");
|
|
||||||
console.log("Transport Type:", typeR);
|
|
||||||
console.log("Line Number:", lineR);
|
|
||||||
console.log("Latitude:", latR);
|
|
||||||
console.log("Longitude:", longR);
|
|
||||||
console.log("Lat long MERGE:", latlongR);
|
|
||||||
console.log("TAK:", takR);
|
|
||||||
console.log("Vehicle info: ", vehicleTypeR);
|
|
||||||
var markerLonLat = new OpenLayers.LonLat(longR, latR).transform(fromProjection, toProjection); // Set marker location
|
|
||||||
document.getElementById("type").innerHTML = "Type: " + typeR;
|
|
||||||
document.getElementById("line").innerHTML = "Current line: " + lineR;
|
|
||||||
document.getElementById("lat").innerHTML = "Latitude: " + latR;
|
|
||||||
document.getElementById("long").innerHTML = "Longitude: " + longR;
|
|
||||||
document.getElementById("latlong").innerHTML = "Coordinates (Merged): " + latlongR;
|
|
||||||
document.getElementById("tak").innerHTML = "TAK: " + takR;
|
|
||||||
document.getElementById("vehicleInfo").innerHTML = "Vehicle info: " + vehicleTypeR;
|
|
||||||
// Add marker
|
|
||||||
var markers = new OpenLayers.Layer.Markers("Markers");
|
|
||||||
map.addLayer(markers);
|
|
||||||
if (oldMarker != "1") {
|
|
||||||
markers.removeMarker(oldMarker)
|
|
||||||
}
|
}
|
||||||
newMarker = new OpenLayers.Marker(markerLonLat)
|
</style>
|
||||||
markers.addMarker(newMarker);
|
</head>
|
||||||
oldMarker = newMarker;
|
|
||||||
});
|
|
||||||
|
|
||||||
</script>
|
<body>
|
||||||
|
<picture>
|
||||||
|
<img src="http://assets.velend.eu:2052/assets/velend_eu-tltmap/velendeulogo.jpg" alt="velendeulogojpg" style="float: right; margin-left: 15px; width: 25%;">
|
||||||
|
</picture>
|
||||||
|
<h2>TLT Location Finder</h2>
|
||||||
|
<form id="search-form">
|
||||||
|
<label for="bus-id">Enter TAK:</label>
|
||||||
|
<input type="text" id="bus-id" name="bus-id">
|
||||||
|
<button type="submit">Search</button>
|
||||||
|
</form>
|
||||||
|
<form id="bulk-search">
|
||||||
|
<p>Bulk searches:</p>
|
||||||
|
<div>
|
||||||
|
<button type="press" id="pesaSearch">Pesa Twist</button>
|
||||||
|
<button type="click" id="cafSearch">CAF Urbos</button>
|
||||||
|
<button type="click" id="tatraSearch">Tatra trams</button>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<button type="click" id="a40Search">MAN a40</button>
|
||||||
|
<button type="click" id="a78Search">MAN a78</button>
|
||||||
|
<button type="click" id="a21Search">MAN a21</button>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<button type="click" id="volvo7900Search">Volvo 7900H</button>
|
||||||
|
<button type="click" id="electricbusSearch">Urbino Electric</button>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<button type="click" id="tramSearch">Show all trams</button>
|
||||||
|
<button type="click" id="busSearch">Show all buses</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
<form id="recievedData">
|
||||||
|
<p id="type">Type: UNFETCHED</p>
|
||||||
|
<p id="line">Current line: UNFETCHED</p>
|
||||||
|
<p id="lat">Latitude: UNFETCHED</p>
|
||||||
|
<p id="long">Longitude: UNFETCHED</p>
|
||||||
|
<p id="latlong">Coordinates (Merged): UNFETCHED</p>
|
||||||
|
<p id="tak">TAK: UNFETCHED</p>
|
||||||
|
<p id="vehicleInfo">Vehicle info: UNFETCHED</p>
|
||||||
|
</form>
|
||||||
|
|
||||||
</body>
|
<div id="map" style="height:512px"></div>
|
||||||
|
|
||||||
</html>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.7.1/leaflet.js"></script>
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.7.1/leaflet.css" />
|
||||||
|
<script src="/socket.io/socket.io.js"></script>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
var socket = io();
|
||||||
|
|
||||||
|
var map = L.map('map').setView([59.43041, 24.75924], 13);
|
||||||
|
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
|
||||||
|
attribution: '© OpenStreetMap contributors | tlt-bus-map made by eetnaviation, velend.eu'
|
||||||
|
}).addTo(map);
|
||||||
|
|
||||||
|
var markers = {};
|
||||||
|
|
||||||
|
document.getElementById('search-form').addEventListener('submit', function (event) {
|
||||||
|
event.preventDefault();
|
||||||
|
var tak = document.getElementById('bus-id').value.trim();
|
||||||
|
socket.emit('takSearch', tak);
|
||||||
|
});
|
||||||
|
|
||||||
|
document.getElementById('bulk-search').addEventListener('submit', function (event) {
|
||||||
|
event.preventDefault();
|
||||||
|
});
|
||||||
|
|
||||||
|
document.getElementById('electricbusSearch').addEventListener('click', function () {
|
||||||
|
socket.emit('electricBusBulkSearch');
|
||||||
|
});
|
||||||
|
|
||||||
|
document.getElementById('pesaSearch').addEventListener('click', function () {
|
||||||
|
socket.emit('pesaTramBulkSearch');
|
||||||
|
});
|
||||||
|
|
||||||
|
document.getElementById('tramSearch').addEventListener('click', function () {
|
||||||
|
socket.emit('tramBulkSearch');
|
||||||
|
});
|
||||||
|
|
||||||
|
document.getElementById('busSearch').addEventListener('click', function () {
|
||||||
|
socket.emit('busBulkSearch');
|
||||||
|
});
|
||||||
|
|
||||||
|
document.getElementById('cafSearch').addEventListener('click', function () {
|
||||||
|
socket.emit('cafBulkSearch');
|
||||||
|
});
|
||||||
|
|
||||||
|
document.getElementById('tatraSearch').addEventListener('click', function () {
|
||||||
|
socket.emit('tatraBulkSearch');
|
||||||
|
});
|
||||||
|
|
||||||
|
document.getElementById('volvo7900Search').addEventListener('click', function () {
|
||||||
|
socket.emit('volvo7900BulkSearch');
|
||||||
|
});
|
||||||
|
|
||||||
|
document.getElementById('a78Search').addEventListener('click', function () {
|
||||||
|
socket.emit('a78BulkSearch');
|
||||||
|
});
|
||||||
|
|
||||||
|
document.getElementById('a21Search').addEventListener('click', function () {
|
||||||
|
socket.emit('a21BulkSearch');
|
||||||
|
});
|
||||||
|
|
||||||
|
document.getElementById('a40Search').addEventListener('click', function () {
|
||||||
|
socket.emit('a40BulkSearch');
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
socket.on('takResults', (typeR, lineR, latR, longR, takR, latlongR, vehicleTypeR) => {
|
||||||
|
console.log("Data fetch success");
|
||||||
|
console.log("Transport Type:", typeR);
|
||||||
|
console.log("Line Number:", lineR);
|
||||||
|
console.log("Latitude:", latR);
|
||||||
|
console.log("Longitude:", longR);
|
||||||
|
console.log("Coordinates (Merged):", latlongR);
|
||||||
|
console.log("TAK:", takR);
|
||||||
|
console.log("Vehicle info:", vehicleTypeR);
|
||||||
|
|
||||||
|
document.getElementById("type").innerHTML = "Type: " + typeR;
|
||||||
|
document.getElementById("line").innerHTML = "Current line: " + lineR;
|
||||||
|
document.getElementById("lat").innerHTML = "Latitude: " + latR;
|
||||||
|
document.getElementById("long").innerHTML = "Longitude: " + longR;
|
||||||
|
document.getElementById("latlong").innerHTML = "Coordinates (Merged): " + latlongR;
|
||||||
|
document.getElementById("tak").innerHTML = "TAK: " + takR;
|
||||||
|
document.getElementById("vehicleInfo").innerHTML = "Vehicle info: " + vehicleTypeR;
|
||||||
|
|
||||||
|
const iconUrl = typeR == "BUS" ? 'bus.png' : (typeR == "TROLL" ? 'troll.png' : 'tram.png');
|
||||||
|
|
||||||
|
const markerPosition = [latR, longR];
|
||||||
|
|
||||||
|
if (!markers[takR]) {
|
||||||
|
markers[takR] = L.marker(markerPosition, {
|
||||||
|
icon: L.icon({ iconUrl: iconUrl })
|
||||||
|
}).bindPopup(`<b>Line:</b> ${lineR}<br><b>TAK:</b> ${takR}<br><b>Vehicle info:</b>${vehicleTypeR}`)
|
||||||
|
.addTo(map);
|
||||||
|
} else {
|
||||||
|
markers[takR].setLatLng(markerPosition);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
BIN
client/tram.png
Normal file
BIN
client/tram.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 379 B |
BIN
client/troll.png
Normal file
BIN
client/troll.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 375 B |
394
main.js
394
main.js
@ -22,6 +22,39 @@ let kt4tmrTramArray = ["136", "138", "140", "141", "142", "168"];
|
|||||||
let kt4dTramArray = ["157", "161", "170", "172", "173", "176", "177", "178", "179", "180"];
|
let kt4dTramArray = ["157", "161", "170", "172", "173", "176", "177", "178", "179", "180"];
|
||||||
let kt4tmTramArray = ["181", "182"];
|
let kt4tmTramArray = ["181", "182"];
|
||||||
|
|
||||||
|
let volvohybridTakArray = [
|
||||||
|
"1160", "1161", "1162", "1163", "1164", "1165", "1166", "1167", "1168", "1169",
|
||||||
|
"1170", "1171", "1710", "1740", "1742", "1744", "1747", "1759", "1772", "1774",
|
||||||
|
"1829", "1861", "2126", "2140", "2181", "2188", "2189", "2194", "2198", "2199",
|
||||||
|
"2498", "2721", "2722", "2723", "2724", "2725", "2726", "2727", "2728", "2729",
|
||||||
|
"2730", "2731", "2732", "2896"
|
||||||
|
];
|
||||||
|
|
||||||
|
let a40TakArray = [
|
||||||
|
"1012", "1013", "1014", "1018", "1020", "1021", "1023", "1024", "1029", "1030",
|
||||||
|
"1031", "1037", "1038", "1491", "1492", "1493", "1494", "2237", "2246", "2247",
|
||||||
|
"2252", "2255", "2257", "2284", "2286", "2287", "2673", "2695", "2705", "2706",
|
||||||
|
"2707", "3086", "3206", "3207", "3250", "3395", "3400", "3507", "3509", "3551",
|
||||||
|
"3579", "3582", "3583", "3584", "3201", "3391", "3392", "3540", "3541", "3544",
|
||||||
|
"3547", "3548", "3549", "3550", "3581"
|
||||||
|
];
|
||||||
|
|
||||||
|
let a78TakArray = [
|
||||||
|
"3298", "3378", "3379", "3380", "3388", "3394", "3429", "3432", "3433", "3434",
|
||||||
|
"3435", "3436", "3437", "3531", "3532", "3539", "3571", "3572", "1047", "1107",
|
||||||
|
"1108", "1109", "1110", "1112", "1113", "1114", "1115", "1118", "1119", "1120",
|
||||||
|
"1121", "1141", "1142", "1143", "1144", "1226", "1227", "1408", "1473", "1474",
|
||||||
|
"1475", "1476", "1477", "1478", "1568", "2200", "2208", "2209", "2212", "2221",
|
||||||
|
"2224", "2228", "2234", "2290", "2291", "2292", "2293", "2294", "2307", "2311",
|
||||||
|
"2323", "2324", "2325", "2329", "2330", "2331", "2333", "2334", "2618", "2632",
|
||||||
|
"2648", "2650", "2660", "3381", "3389", "3393", "3430", "3431", "3499", "3528",
|
||||||
|
"3529", "3530", "3535", "3538", "3573", "3574", "3577", "3575"
|
||||||
|
];
|
||||||
|
|
||||||
|
let a21TakArray = [
|
||||||
|
"1145", "2700", "2701", "3585", "3586"
|
||||||
|
];
|
||||||
|
|
||||||
let requestedType = "Unfetched";
|
let requestedType = "Unfetched";
|
||||||
let requestedLine = "Unfetched";
|
let requestedLine = "Unfetched";
|
||||||
let requestedLat = "Unfetched";
|
let requestedLat = "Unfetched";
|
||||||
@ -84,6 +117,18 @@ io.on('connection', (socket) => {
|
|||||||
console.log("Running bulk electric bus search!");
|
console.log("Running bulk electric bus search!");
|
||||||
saveRequestLogs(socket, "ElectricBusBulkSearch");
|
saveRequestLogs(socket, "ElectricBusBulkSearch");
|
||||||
try {
|
try {
|
||||||
|
if (isRequestMode) {
|
||||||
|
const currentTime = Date.now();
|
||||||
|
if (currentTime - lastFetchTime >= requestModeInterval) {
|
||||||
|
await fetchAndSaveData("Request Mode");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
await fetchAndSaveData("Request Mode");
|
||||||
|
}
|
||||||
|
if (isRequestMode) {
|
||||||
|
clearInterval(requestModeIntervalId);
|
||||||
|
}
|
||||||
|
startRequestModeFetch();
|
||||||
electricBusTakArray.forEach((takToSearch) => {
|
electricBusTakArray.forEach((takToSearch) => {
|
||||||
fetchDataFromLocalFile(takToSearch, socket);
|
fetchDataFromLocalFile(takToSearch, socket);
|
||||||
});
|
});
|
||||||
@ -93,10 +138,122 @@ io.on('connection', (socket) => {
|
|||||||
writeToLog('errors_log.txt', caughtError);
|
writeToLog('errors_log.txt', caughtError);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
socket.on('a40BulkSearch', async () => {
|
||||||
|
console.log("Running bulk a40 bus search!");
|
||||||
|
saveRequestLogs(socket, "A40BulkSearch");
|
||||||
|
try {
|
||||||
|
if (isRequestMode) {
|
||||||
|
const currentTime = Date.now();
|
||||||
|
if (currentTime - lastFetchTime >= requestModeInterval) {
|
||||||
|
await fetchAndSaveData("Request Mode");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
await fetchAndSaveData("Request Mode");
|
||||||
|
}
|
||||||
|
if (isRequestMode) {
|
||||||
|
clearInterval(requestModeIntervalId);
|
||||||
|
}
|
||||||
|
startRequestModeFetch();
|
||||||
|
a40TakArray.forEach((takToSearch) => {
|
||||||
|
fetchDataFromLocalFile(takToSearch, socket);
|
||||||
|
});
|
||||||
|
} catch (error) {
|
||||||
|
var caughtError = "Error processing a40BulkSearch: ", error;
|
||||||
|
console.error(caughtError);
|
||||||
|
writeToLog('errors_log.txt', caughtError);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
socket.on('a21BulkSearch', async () => {
|
||||||
|
console.log("Running bulk a21 bus search!");
|
||||||
|
saveRequestLogs(socket, "A21BulkSearch");
|
||||||
|
try {
|
||||||
|
if (isRequestMode) {
|
||||||
|
const currentTime = Date.now();
|
||||||
|
if (currentTime - lastFetchTime >= requestModeInterval) {
|
||||||
|
await fetchAndSaveData("Request Mode");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
await fetchAndSaveData("Request Mode");
|
||||||
|
}
|
||||||
|
if (isRequestMode) {
|
||||||
|
clearInterval(requestModeIntervalId);
|
||||||
|
}
|
||||||
|
startRequestModeFetch();
|
||||||
|
a21TakArray.forEach((takToSearch) => {
|
||||||
|
fetchDataFromLocalFile(takToSearch, socket);
|
||||||
|
});
|
||||||
|
} catch (error) {
|
||||||
|
var caughtError = "Error processing a21BulkSearch: ", error;
|
||||||
|
console.error(caughtError);
|
||||||
|
writeToLog('errors_log.txt', caughtError);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
socket.on('a78BulkSearch', async () => {
|
||||||
|
console.log("Running bulk a78 bus search!");
|
||||||
|
saveRequestLogs(socket, "A78BulkSearch");
|
||||||
|
try {
|
||||||
|
if (isRequestMode) {
|
||||||
|
const currentTime = Date.now();
|
||||||
|
if (currentTime - lastFetchTime >= requestModeInterval) {
|
||||||
|
await fetchAndSaveData("Request Mode");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
await fetchAndSaveData("Request Mode");
|
||||||
|
}
|
||||||
|
if (isRequestMode) {
|
||||||
|
clearInterval(requestModeIntervalId);
|
||||||
|
}
|
||||||
|
startRequestModeFetch();
|
||||||
|
a78TakArray.forEach((takToSearch) => {
|
||||||
|
fetchDataFromLocalFile(takToSearch, socket);
|
||||||
|
});
|
||||||
|
} catch (error) {
|
||||||
|
var caughtError = "Error processing a78BulkSearch: ", error;
|
||||||
|
console.error(caughtError);
|
||||||
|
writeToLog('errors_log.txt', caughtError);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
socket.on('volvo7900BulkSearch', async () => {
|
||||||
|
console.log("Running bulk volvo 7900 bus search!");
|
||||||
|
saveRequestLogs(socket, "7900BulkSearch");
|
||||||
|
try {
|
||||||
|
if (isRequestMode) {
|
||||||
|
const currentTime = Date.now();
|
||||||
|
if (currentTime - lastFetchTime >= requestModeInterval) {
|
||||||
|
await fetchAndSaveData("Request Mode");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
await fetchAndSaveData("Request Mode");
|
||||||
|
}
|
||||||
|
if (isRequestMode) {
|
||||||
|
clearInterval(requestModeIntervalId);
|
||||||
|
}
|
||||||
|
startRequestModeFetch();
|
||||||
|
volvohybridTakArray.forEach((takToSearch) => {
|
||||||
|
fetchDataFromLocalFile(takToSearch, socket);
|
||||||
|
});
|
||||||
|
} catch (error) {
|
||||||
|
var caughtError = "Error processing volvo7900BulkSearch: ", error;
|
||||||
|
console.error(caughtError);
|
||||||
|
writeToLog('errors_log.txt', caughtError);
|
||||||
|
}
|
||||||
|
});
|
||||||
socket.on('pesaTramBulkSearch', async () => {
|
socket.on('pesaTramBulkSearch', async () => {
|
||||||
console.log("Running bulk pesa tram search!");
|
console.log("Running bulk pesa tram search!");
|
||||||
saveRequestLogs(socket, "PesaTramBulkSearch");
|
saveRequestLogs(socket, "PesaTramBulkSearch");
|
||||||
try {
|
try {
|
||||||
|
if (isRequestMode) {
|
||||||
|
const currentTime = Date.now();
|
||||||
|
if (currentTime - lastFetchTime >= requestModeInterval) {
|
||||||
|
await fetchAndSaveData("Request Mode");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
await fetchAndSaveData("Request Mode");
|
||||||
|
}
|
||||||
|
if (isRequestMode) {
|
||||||
|
clearInterval(requestModeIntervalId);
|
||||||
|
}
|
||||||
|
startRequestModeFetch();
|
||||||
pesaTramTakArray.forEach((takToSearch) => {
|
pesaTramTakArray.forEach((takToSearch) => {
|
||||||
fetchDataFromLocalFile(takToSearch, socket);
|
fetchDataFromLocalFile(takToSearch, socket);
|
||||||
});
|
});
|
||||||
@ -106,6 +263,114 @@ io.on('connection', (socket) => {
|
|||||||
writeToLog('errors_log.txt', caughtError);
|
writeToLog('errors_log.txt', caughtError);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
socket.on('tramBulkSearch', async () => {
|
||||||
|
console.log("Running bulk tram search!");
|
||||||
|
saveRequestLogs(socket, "TramBulkSearch");
|
||||||
|
try {
|
||||||
|
if (isRequestMode) {
|
||||||
|
const currentTime = Date.now();
|
||||||
|
if (currentTime - lastFetchTime >= requestModeInterval) {
|
||||||
|
await fetchAndSaveData("Request Mode");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
await fetchAndSaveData("Request Mode");
|
||||||
|
}
|
||||||
|
if (isRequestMode) {
|
||||||
|
clearInterval(requestModeIntervalId);
|
||||||
|
}
|
||||||
|
startRequestModeFetch();
|
||||||
|
fetchDataFromLocalFileByTransportType("TRAM", socket);
|
||||||
|
} catch (error) {
|
||||||
|
var caughtError = "Error processing TramBulkSearch: ", error;
|
||||||
|
console.error(caughtError);
|
||||||
|
writeToLog('errors_log.txt', caughtError);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
socket.on('cafBulkSearch', async () => {
|
||||||
|
console.log("Running bulk CAF tram search!");
|
||||||
|
saveRequestLogs(socket, "CafBulkSearch");
|
||||||
|
try {
|
||||||
|
if (isRequestMode) {
|
||||||
|
const currentTime = Date.now();
|
||||||
|
if (currentTime - lastFetchTime >= requestModeInterval) {
|
||||||
|
await fetchAndSaveData("Request Mode");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
await fetchAndSaveData("Request Mode");
|
||||||
|
}
|
||||||
|
if (isRequestMode) {
|
||||||
|
clearInterval(requestModeIntervalId);
|
||||||
|
}
|
||||||
|
startRequestModeFetch();
|
||||||
|
cafTramTakArray.forEach((takToSearch) => {
|
||||||
|
fetchDataFromLocalFile(takToSearch, socket);
|
||||||
|
});
|
||||||
|
} catch (error) {
|
||||||
|
var caughtError = "Error processing cafBulkSearch: ", error;
|
||||||
|
console.error(caughtError);
|
||||||
|
writeToLog('errors_log.txt', caughtError);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
socket.on('tatraBulkSearch', async () => {
|
||||||
|
console.log("Running bulk tatra tram search!");
|
||||||
|
saveRequestLogs(socket, "TatraBulkSearch");
|
||||||
|
try {
|
||||||
|
if (isRequestMode) {
|
||||||
|
const currentTime = Date.now();
|
||||||
|
if (currentTime - lastFetchTime >= requestModeInterval) {
|
||||||
|
await fetchAndSaveData("Request Mode");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
await fetchAndSaveData("Request Mode");
|
||||||
|
}
|
||||||
|
if (isRequestMode) {
|
||||||
|
clearInterval(requestModeIntervalId);
|
||||||
|
}
|
||||||
|
startRequestModeFetch();
|
||||||
|
kt6tmTramArray.forEach((takToSearch) => {
|
||||||
|
fetchDataFromLocalFile(takToSearch, socket);
|
||||||
|
});
|
||||||
|
kt4suTramArray.forEach((takToSearch) => {
|
||||||
|
fetchDataFromLocalFile(takToSearch, socket);
|
||||||
|
});
|
||||||
|
kt4tmrTramArray.forEach((takToSearch) => {
|
||||||
|
fetchDataFromLocalFile(takToSearch, socket);
|
||||||
|
});
|
||||||
|
kt4dTramArray.forEach((takToSearch) => {
|
||||||
|
fetchDataFromLocalFile(takToSearch, socket);
|
||||||
|
});
|
||||||
|
kt4tmTramArray.forEach((takToSearch) => {
|
||||||
|
fetchDataFromLocalFile(takToSearch, socket);
|
||||||
|
});
|
||||||
|
} catch (error) {
|
||||||
|
var caughtError = "Error processing tatraBulkSearch: ", error;
|
||||||
|
console.error(caughtError);
|
||||||
|
writeToLog('errors_log.txt', caughtError);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
socket.on('busBulkSearch', async () => {
|
||||||
|
console.log("Running bulk bus search!");
|
||||||
|
saveRequestLogs(socket, "BusBulkSearch");
|
||||||
|
try {
|
||||||
|
if (isRequestMode) {
|
||||||
|
const currentTime = Date.now();
|
||||||
|
if (currentTime - lastFetchTime >= requestModeInterval) {
|
||||||
|
await fetchAndSaveData("Request Mode");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
await fetchAndSaveData("Request Mode");
|
||||||
|
}
|
||||||
|
if (isRequestMode) {
|
||||||
|
clearInterval(requestModeIntervalId);
|
||||||
|
}
|
||||||
|
startRequestModeFetch();
|
||||||
|
fetchDataFromLocalFileByTransportType("BUS", socket);
|
||||||
|
} catch (error) {
|
||||||
|
var caughtError = "Error processing busBulkSearch: ", error;
|
||||||
|
console.error(caughtError);
|
||||||
|
writeToLog('errors_log.txt', caughtError);
|
||||||
|
}
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
function saveRequestLogs(socket, takInput) {
|
function saveRequestLogs(socket, takInput) {
|
||||||
@ -241,7 +506,15 @@ async function fetchDataFromLocalFile(takInput, socket) {
|
|||||||
} else if (transportTypeDecoded === "BUS") {
|
} else if (transportTypeDecoded === "BUS") {
|
||||||
if (electricBusTakArray.includes(tak)) {
|
if (electricBusTakArray.includes(tak)) {
|
||||||
vehicleType = "Solaris Urbino IV 12 Electric";
|
vehicleType = "Solaris Urbino IV 12 Electric";
|
||||||
}
|
} else if (volvohybridTakArray.includes(tak)) {
|
||||||
|
vehicleType = "Volvo 7900 Hybrid";
|
||||||
|
} else if (a40TakArray.includes(tak)) {
|
||||||
|
vehicleType = "MAN a40";
|
||||||
|
} else if (a78TakArray.includes(tak)) {
|
||||||
|
vehicleType = "MAN a78";
|
||||||
|
} else if (a21TakArray.includes(tak)) {
|
||||||
|
vehicleType = "MAN a21";
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
vehicleType = "-- Info unavailable --";
|
vehicleType = "-- Info unavailable --";
|
||||||
}
|
}
|
||||||
@ -252,23 +525,114 @@ async function fetchDataFromLocalFile(takInput, socket) {
|
|||||||
requestedLong = longitude;
|
requestedLong = longitude;
|
||||||
requestedLatLong = `${latitude} ${longitude}`;
|
requestedLatLong = `${latitude} ${longitude}`;
|
||||||
requestedTak = tak;
|
requestedTak = tak;
|
||||||
console.log("Requested data fetched:");
|
console.log("[Data fetch complete!] Type:", transportTypeDecoded, "Line number:", lineNumber, "Lat:", latitude, "Long:", longitude, "Coords merge:", requestedLatLong, "TAK:", tak);
|
||||||
console.log("Transport Type:", transportTypeDecoded);
|
|
||||||
console.log("Line Number:", lineNumber);
|
|
||||||
console.log("Latitude:", latitude);
|
|
||||||
console.log("Longitude:", longitude);
|
|
||||||
console.log("Merged coordinates:", requestedLatLong);
|
|
||||||
console.log("TAK:", tak);
|
|
||||||
console.log();
|
|
||||||
socket.emit('takResults', requestedType, requestedLine, requestedLat, requestedLong, requestedTak, requestedLatLong, vehicleType);
|
socket.emit('takResults', requestedType, requestedLine, requestedLat, requestedLong, requestedTak, requestedLatLong, vehicleType);
|
||||||
} else if (tak !== takInput && takFound !== 1) {
|
} else if (tak !== takInput && takFound !== 1) {
|
||||||
takFound = 0;
|
takFound = 0;
|
||||||
const busNotFoundText = "VEHICLE NOT FOUND!";
|
const vehicleNotFoundText = "VEHICLE NOT FOUND!";
|
||||||
requestedType = busNotFoundText;
|
requestedType = vehicleNotFoundText;
|
||||||
requestedLine = busNotFoundText;
|
requestedLine = vehicleNotFoundText;
|
||||||
requestedLat = busNotFoundText;
|
requestedLat = vehicleNotFoundText;
|
||||||
requestedLong = busNotFoundText;
|
requestedLong = vehicleNotFoundText;
|
||||||
requestedTak = busNotFoundText;
|
requestedTak = vehicleNotFoundText;
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.log("Invalid data format!", line);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch (error) {
|
||||||
|
console.error("Error reading local file:", error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async function fetchDataFromLocalFileByTransportType(transportTypeInput, socket) {
|
||||||
|
try {
|
||||||
|
const data = fs.readFileSync(localFilePath, 'utf8');
|
||||||
|
const lines = data.split('\n');
|
||||||
|
let transportTypeFound = 0;
|
||||||
|
lines.forEach(line => {
|
||||||
|
if (line) {
|
||||||
|
const data = line.split(',');
|
||||||
|
if (data.length >= 9) {
|
||||||
|
try {
|
||||||
|
const transportType = parseInt(data[0]);
|
||||||
|
const lineNumber = parseInt(data[1]);
|
||||||
|
const longitude = parseFloat(data[2]) / 1000000;
|
||||||
|
const latitude = parseFloat(data[3]) / 1000000;
|
||||||
|
const tak = data[6];
|
||||||
|
|
||||||
|
let transportTypeDecoded;
|
||||||
|
|
||||||
|
switch (transportType) {
|
||||||
|
case 1:
|
||||||
|
transportTypeDecoded = "TROLL";
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
transportTypeDecoded = "BUS";
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
transportTypeDecoded = "TRAM";
|
||||||
|
break;
|
||||||
|
case 7:
|
||||||
|
transportTypeDecoded = "NIGHTBUS";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
transportTypeDecoded = "Unknown";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (transportTypeDecoded === transportTypeInput) {
|
||||||
|
if (transportTypeDecoded === "TRAM") {
|
||||||
|
if (cafTramTakArray.includes(tak)) {
|
||||||
|
vehicleType = "CAF Urbos AXL";
|
||||||
|
} else if (pesaTramTakArray.includes(tak)) {
|
||||||
|
vehicleType = "PESA Twist 147N";
|
||||||
|
} else if (kt6tmTramArray.includes(tak)) {
|
||||||
|
vehicleType = "Tatra KT6 TM";
|
||||||
|
} else if (kt4suTramArray.includes(tak)) {
|
||||||
|
vehicleType = "Tatra KT4 SU";
|
||||||
|
} else if (kt4tmrTramArray.includes(tak)) {
|
||||||
|
vehicleType = "Tatra KT4 TMR";
|
||||||
|
} else if (kt4dTramArray.includes(tak)) {
|
||||||
|
vehicleType = "Tatra KT4 D";
|
||||||
|
} else if (kt4tmTramArray.includes(tak)) {
|
||||||
|
vehicleType = "Tatra KT4 TM";
|
||||||
|
} else {
|
||||||
|
vehicleType = "-- Info unavailable --";
|
||||||
|
}
|
||||||
|
} else if (transportTypeDecoded === "BUS") {
|
||||||
|
if (electricBusTakArray.includes(tak)) {
|
||||||
|
vehicleType = "Solaris Urbino IV 12 Electric";
|
||||||
|
} else if (volvohybridTakArray.includes(tak)) {
|
||||||
|
vehicleType = "Volvo 7900 Hybrid";
|
||||||
|
} else if (a40TakArray.includes(tak)) {
|
||||||
|
vehicleType = "MAN a40";
|
||||||
|
} else if (a78TakArray.includes(tak)) {
|
||||||
|
vehicleType = "MAN a78";
|
||||||
|
} else if (a21TakArray.includes(tak)) {
|
||||||
|
vehicleType = "MAN a21";
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
vehicleType = "-- Info unavailable --";
|
||||||
|
}
|
||||||
|
transportTypeFound = 1;
|
||||||
|
requestedType = transportTypeDecoded;
|
||||||
|
requestedLine = lineNumber;
|
||||||
|
requestedLat = latitude;
|
||||||
|
requestedLong = longitude;
|
||||||
|
requestedLatLong = `${latitude} ${longitude}`;
|
||||||
|
requestedTak = tak;
|
||||||
|
console.log("[Data fetch complete!] Type:", transportTypeDecoded, "Line number:", lineNumber, "Lat:", latitude, "Long:", longitude, "Coords merge:", requestedLatLong, "TAK:", tak);
|
||||||
|
socket.emit('takResults', requestedType, requestedLine, requestedLat, requestedLong, requestedTak, requestedLatLong, vehicleType);
|
||||||
|
} else if (transportTypeDecoded !== transportTypeInput && transportTypeFound !== 1) {
|
||||||
|
transportTypeFound = 0;
|
||||||
|
const vehicleNotFoundText = "VEHICLE NOT FOUND!";
|
||||||
|
requestedType = vehicleNotFoundText;
|
||||||
|
requestedLine = vehicleNotFoundText;
|
||||||
|
requestedLat = vehicleNotFoundText;
|
||||||
|
requestedLong = vehicleNotFoundText;
|
||||||
|
requestedTak = vehicleNotFoundText;
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.log("Invalid data format!", line);
|
console.log("Invalid data format!", line);
|
||||||
|
Reference in New Issue
Block a user