From 29ab42c343231dead25e70c6a68f4590b5a50c7b Mon Sep 17 00:00:00 2001 From: eetnaviation Date: Thu, 5 Dec 2024 20:10:49 +0200 Subject: [PATCH] Very good features added, many taks added for buses and many bulk searches. --- client/bus.png | Bin 0 -> 481 bytes client/index.html | 259 +++++++++++++++++------------- client/tram.png | Bin 0 -> 379 bytes client/troll.png | Bin 0 -> 375 bytes main.js | 394 ++++++++++++++++++++++++++++++++++++++++++++-- 5 files changed, 531 insertions(+), 122 deletions(-) create mode 100644 client/bus.png create mode 100644 client/tram.png create mode 100644 client/troll.png diff --git a/client/bus.png b/client/bus.png new file mode 100644 index 0000000000000000000000000000000000000000..7bf9d387dfd3784526fd1ec02a0a683a8f47525e GIT binary patch literal 481 zcmV<70UrK|P)Px$n@L1LR5(wiQol<=Q4~JM;7LOe1Z^#^K-VU>oC*TP!ZoM&ciGrhXgXw0{sYlg z1Uk9c4{EZ^Txlaw8dI;Wo?m6H6eq5%1e!Mte>?Wf7-eH}Kw}}itpGmaBLObi* z)H^y~>et@1P`Ihd>*U=B?1+7sgh-f4|2MN6ba#A_&S7DOu-uL7evVd@zXcq|{Vrrk&7J=+xxp>w}_9 zM31g - + - - - - TLT Location Finder - - - - - - - velendeulogojpg - -

TLT Location Finder

-
- - - -
- -
-

Type: UNFETCHED

-

Current line: UNFETCHED

-

Latitude: UNFETCHED

-

Longitude: UNFETCHED

-

Coordinates (Merged): UNFETCHED

-

TAK: UNFETCHED

-

Vehicle info: UNFETCHED

-
- -
- - - - - - - + + + velendeulogojpg + +

TLT Location Finder

+
+ + + +
+ +
+

Type: UNFETCHED

+

Current line: UNFETCHED

+

Latitude: UNFETCHED

+

Longitude: UNFETCHED

+

Coordinates (Merged): UNFETCHED

+

TAK: UNFETCHED

+

Vehicle info: UNFETCHED

+
- +
- + + + + + + + \ No newline at end of file diff --git a/client/tram.png b/client/tram.png new file mode 100644 index 0000000000000000000000000000000000000000..701977cd399d3911240e8b8a07f45365b185e566 GIT binary patch literal 379 zcmV->0fhdEP)Px$HAzH4R5(wiQ!x^QFbuQa03&Sh{|A)~M*0T#WZ6mD-gPMhB*B&?*@6A}pz`l! zcdgw3nDg6C%n*^V>3p;to#gXeH+P32voe=>5yZVfw3)6$koU5=0?^UG`aMgS0ny&v z&DQ}um(2@37?3<*^FZ}pcQ==`04iyKfz&NIkfR5j&_{n+h!n-6;s`+VNICV7+CRlp zibG;qh>Vf}e-K{jWtwUg;~>x(zzhTl_mi9SXPTUmiZC^;&JM8cj7J$%ns0hCbRbxf zstbHR;cjb!rb?mDWzbxtBf^ za1ELE(zEVfZTXz_aTcUqrgP+{^U!n?ASu{%yIKLK%A=Cw&a40c002ovPDHLkV1mJAsNnzr literal 0 HcmV?d00001 diff --git a/client/troll.png b/client/troll.png new file mode 100644 index 0000000000000000000000000000000000000000..14b6e702b0451142a1b2c52e439bfbda1ae0bd68 GIT binary patch literal 375 zcmV--0f_#IP)Px$F-b&0R5(wiQ!$c*Kn%0qbg7|*7l#&V@+M~_*(}LSs-pW=NW z)Q^cY%l1vWIg&(t&wn`Te`MSw>6;X_k=}8e`RkG7a)r5eUf+WU*&oSIfZp6{_69Nj VyzvaMx?2DM002ovPDHLkV1iPZtg`?B literal 0 HcmV?d00001 diff --git a/main.js b/main.js index 27e5a89..eb66385 100644 --- a/main.js +++ b/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 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 requestedLine = "Unfetched"; let requestedLat = "Unfetched"; @@ -84,6 +117,18 @@ io.on('connection', (socket) => { console.log("Running bulk electric bus search!"); saveRequestLogs(socket, "ElectricBusBulkSearch"); 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) => { fetchDataFromLocalFile(takToSearch, socket); }); @@ -93,10 +138,122 @@ io.on('connection', (socket) => { 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 () => { console.log("Running bulk pesa tram search!"); saveRequestLogs(socket, "PesaTramBulkSearch"); 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) => { fetchDataFromLocalFile(takToSearch, socket); }); @@ -106,6 +263,114 @@ io.on('connection', (socket) => { 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) { @@ -241,7 +506,15 @@ async function fetchDataFromLocalFile(takInput, socket) { } 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 --"; } @@ -252,23 +525,114 @@ async function fetchDataFromLocalFile(takInput, socket) { requestedLong = longitude; requestedLatLong = `${latitude} ${longitude}`; requestedTak = tak; - console.log("Requested data fetched:"); - 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(); + 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 (tak !== takInput && takFound !== 1) { takFound = 0; - const busNotFoundText = "VEHICLE NOT FOUND!"; - requestedType = busNotFoundText; - requestedLine = busNotFoundText; - requestedLat = busNotFoundText; - requestedLong = busNotFoundText; - requestedTak = busNotFoundText; + const vehicleNotFoundText = "VEHICLE NOT FOUND!"; + requestedType = vehicleNotFoundText; + requestedLine = vehicleNotFoundText; + requestedLat = vehicleNotFoundText; + requestedLong = vehicleNotFoundText; + 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) { console.log("Invalid data format!", line);