From 5261f95dfe9c8cd0079ef3a1bab61a8dac05e358 Mon Sep 17 00:00:00 2001 From: NoobishSVK Date: Wed, 11 Sep 2024 23:48:46 +0200 Subject: [PATCH] toasts, freq bugfixes, ui changes --- server/datahandler.js | 4 ++- server/endpoints.js | 61 ++++++++++++++++++++++++++++++++++++++++- server/tx_search.js | 5 ++-- web/css/breadcrumbs.css | 1 - web/css/dropdown.css | 7 ++++- web/css/entry.css | 1 + web/index.ejs | 22 ++++++++------- web/js/dropdown.js | 2 +- web/js/main.js | 43 +++++++++++++++++++++++++---- web/js/settings.js | 10 ++++--- web/js/webserver.js | 3 +- web/setup.ejs | 1 + web/wizard.ejs | 1 + 13 files changed, 134 insertions(+), 27 deletions(-) diff --git a/server/datahandler.js b/server/datahandler.js index b06cec3..6bfbf91 100644 --- a/server/datahandler.js +++ b/server/datahandler.js @@ -109,7 +109,8 @@ const callbacks = { ), 'callback_af*'), ecc: koffi.register(rds => ( - value = rdsparser.get_ecc(rds) + value = rdsparser.get_ecc(rds), + dataToSend.ecc = value ), 'callback_ecc*'), country: koffi.register(rds => ( @@ -218,6 +219,7 @@ var dataToSend = { ta: 0, ms: -1, pty: 0, + ecc: null, af: [], rt0: '', rt1: '', diff --git a/server/endpoints.js b/server/endpoints.js index 5e71f3f..2d4adb4 100644 --- a/server/endpoints.js +++ b/server/endpoints.js @@ -4,6 +4,7 @@ const router = express.Router(); const fs = require('fs'); const { SerialPort } = require('serialport') const path = require('path'); +const https = require('https'); // File Imports const { parseAudioDevice } = require('./stream/parser'); @@ -124,7 +125,7 @@ router.get('/setup', (req, res) => { }); router.get('/rds', (req, res) => { - res.send('Please connect using a WebSocket compatible app to obtain RDS stream.'); + res.send('Please c onnect using a WebSocket compatible app to obtain RDS stream.'); }); router.get('/rdsspy', (req, res) => { @@ -258,5 +259,63 @@ router.get('/ping', (req, res) => { res.send('pong'); }); +router.get('/log_fmlist', (req, res) => { + const clientIp = req.headers['x-forwarded-for'] || req.connection.remoteAddress; + const postData = JSON.stringify({ + station: { + freq: dataHandler.dataToSend.freq, + pi: dataHandler.dataToSend.pi, + id: dataHandler.dataToSend.txInfo.id, + rds_ps: dataHandler.dataToSend.ps, + signal: dataHandler.dataToSend.sig, + tp: dataHandler.dataToSend.tp, + ta: dataHandler.dataToSend.ta, + af_list: dataHandler.dataToSend.af, + }, + server: { + uuid: serverConfig.identification.token, + latitude: serverConfig.identification.lat, + longitude: serverConfig.identification.lon, + address: serverConfig.identification.proxyIp.length > 1 ? serverConfig.identification.proxyIp : ('Matches request IP with port ' + serverConfig.webserver.port), + webserver_name: serverConfig.identification.tunerName, + }, + client: { + request_ip: clientIp + }, + log_msg: `PS: ${dataHandler.dataToSend.ps}, PI: ${dataHandler.dataToSend.pi}, Signal: ${dataHandler.dataToSend.sig.toFixed(0)} dBf` + }); + + const options = { + hostname: 'api.fmlist.org', + path: '/fmdx.org/slog.php', + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'Content-Length': postData.length, + } + }; + + const request = https.request(options, (response) => { + let data = ''; + + response.on('data', (chunk) => { // Collect the response data + data += chunk; + }); + + response.on('end', () => { + res.status(200).send(data); + }); + }); + + request.on('error', (error) => { + console.error('Error sending POST request:', error); + res.status(500).send(error); + }); + + request.write(postData); + request.end(); +}); + + module.exports = router; diff --git a/server/tx_search.js b/server/tx_search.js index 3a20dcc..c03f872 100644 --- a/server/tx_search.js +++ b/server/tx_search.js @@ -61,7 +61,8 @@ function processData(data, piCode, rdsPs) { if (esMode && (distance.distanceKm > 500)) { weightDistance = Math.abs(distance.distanceKm-1500); } - const score = (10*Math.log10(station.erp*1000)) / weightDistance; // Calculate score + let erp = (station.erp && station.erp > 0) ? station.erp : 1; + const score = (10*Math.log10(erp*1000)) / weightDistance; // Calculate score if (score > maxScore) { maxScore = score; txAzimuth = distance.azimuth; @@ -78,7 +79,7 @@ function processData(data, piCode, rdsPs) { return { station: matchingStation.station.replace("R.", "Radio "), pol: matchingStation.pol.toUpperCase(), - erp: matchingStation.erp, + erp: (matchingStation.erp && matchingStation.erp > 0) ? matchingStation.erp : '?', city: matchingCity.name, itu: matchingCity.itu, distance: maxDistance.toFixed(0), diff --git a/web/css/breadcrumbs.css b/web/css/breadcrumbs.css index d3e1c65..0338bec 100644 --- a/web/css/breadcrumbs.css +++ b/web/css/breadcrumbs.css @@ -63,7 +63,6 @@ label { font-weight: bold; text-transform: uppercase; display: block; - text-align: left; color: var(--color-4); } diff --git a/web/css/dropdown.css b/web/css/dropdown.css index 86657cf..d6e133c 100644 --- a/web/css/dropdown.css +++ b/web/css/dropdown.css @@ -4,6 +4,7 @@ background: var(--color-4); position: relative; margin-right: 20px; + border-radius: 15px; /*border-bottom: 4px solid var(--color-2);*/ } @media (max-width: 400px) { @@ -47,9 +48,13 @@ background-color: var(--color-main-bright); } - .dropdown.opened > input { + .dropdown.opened.dropdown-up > input { border-radius: 0 0 15px 15px; } + + .dropdown.opened > input { + border-radius: 15px 15px 0 0; + } .dropdown input:focus { outline: none; } diff --git a/web/css/entry.css b/web/css/entry.css index f08ac8d..cfb7f69 100644 --- a/web/css/entry.css +++ b/web/css/entry.css @@ -3,6 +3,7 @@ @import url("main.css"); /* Root stuff that affects the entire webpage (body, wrapper etc.) */ @import url("breadcrumbs.css"); /* Stuff that applies to random elements only once/twice */ @import url("buttons.css"); /* Buttons, inputs, select boxes, checkboxes... */ +@import url("toast.css"); /* Toast notifications */ @import url("dropdown.css"); /* Custom dropdown menus */ @import url("panels.css"); /* Different panels and their sizes */ @import url("modal.css"); /* Modal window */ diff --git a/web/index.ejs b/web/index.ejs index 142d7b9..82236da 100644 --- a/web/index.ejs +++ b/web/index.ejs @@ -124,7 +124,7 @@ <% if (antennas.enabled == true) { %> -