From 7830deabc92b3deab371c7b9a2d28d34203bd3de Mon Sep 17 00:00:00 2001 From: NoobishSVK Date: Thu, 29 Aug 2024 21:42:14 +0200 Subject: [PATCH] bugfix pack --- package.json | 2 +- server/datahandler.js | 40 ++++----- server/tx_search.js | 2 +- web/css/buttons.css | 2 + web/favicon.png | Bin 7834 -> 6567 bytes web/index.ejs | 2 +- web/js/chat.js | 184 ++++++++++++++++++++++-------------------- web/js/init.js | 15 +++- web/js/main.js | 2 +- web/js/settings.js | 9 +-- 10 files changed, 141 insertions(+), 117 deletions(-) diff --git a/package.json b/package.json index 03732ae..cf25cea 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fm-dx-webserver", - "version": "1.2.6", + "version": "1.2.7", "description": "FM DX Webserver", "main": "index.js", "scripts": { diff --git a/server/datahandler.js b/server/datahandler.js index 11c6a69..b06cec3 100644 --- a/server/datahandler.js +++ b/server/datahandler.js @@ -292,6 +292,10 @@ function handleData(wss, receivedData, rdsWss) { initialData.freq = (parsedValue / 1000).toFixed(3); dataToSend.freq = (parsedValue / 1000).toFixed(3); dataToSend.pi = '?'; + + rdsWss.clients.forEach((client) => { + client.send("G:\r\nRESET-------\r\n\r\n"); + }); } break; case receivedLine.startsWith('Z'): // Antenna @@ -352,31 +356,31 @@ function handleData(wss, receivedData, rdsWss) { modifiedData += errorsNew.toString(16).padStart(2, '0'); } - rdsWss.clients.forEach((client) => { - let dataString = modifiedData.toString(); - let lastTwoChars = dataString.slice(-2); - let lastByteValue = parseInt(lastTwoChars, 16); + rdsWss.clients.forEach((client) => { + let dataString = modifiedData.toString(); + let lastTwoChars = dataString.slice(-2); + let lastByteValue = parseInt(lastTwoChars, 16); - let truncatedString = dataString.slice(0, -2); + let truncatedString = dataString.slice(0, -2); - if ((lastByteValue & 0x03) !== 0) { - truncatedString = truncatedString.slice(0, 4) + '----' + truncatedString.slice(8); - } + if ((lastByteValue & 0x03) !== 0) { + truncatedString = truncatedString.slice(0, 4) + '----' + truncatedString.slice(8); + } - if ((lastByteValue & 0x30) !== 0) { - truncatedString = truncatedString.slice(0, 8) + '----' + truncatedString.slice(12); - } + if ((lastByteValue & 0x30) !== 0) { + truncatedString = truncatedString.slice(0, 8) + '----' + truncatedString.slice(12); + } - if ((lastByteValue & 0x0C) !== 0) { - truncatedString = truncatedString.slice(0, 12) + '----'; - } + if ((lastByteValue & 0x0C) !== 0) { + truncatedString = truncatedString.slice(0, 12) + '----'; + } - let newDataString = "G:\r\n" + truncatedString + "\r\n\r\n"; + let newDataString = "G:\r\n" + truncatedString + "\r\n\r\n"; - let finalBuffer = Buffer.from(newDataString, 'utf-8'); + let finalBuffer = Buffer.from(newDataString, 'utf-8'); - client.send(finalBuffer); - }); + client.send(finalBuffer); + }); rdsparser.parse_string(rds, modifiedData); legacyRdsPiBuffer = null; diff --git a/server/tx_search.js b/server/tx_search.js index ed8651e..3a20dcc 100644 --- a/server/tx_search.js +++ b/server/tx_search.js @@ -30,7 +30,7 @@ function fetchTx(freq, piCode, rdsPs) { return processData(cachedData[freq], piCode, rdsPs); } - const url = "https://maps.fmdx.pl/api?freq=" + freq; + const url = "https://maps.fmdx.org/api?freq=" + freq; return fetch(url) .then(response => response.json()) diff --git a/web/css/buttons.css b/web/css/buttons.css index 92ffda6..cf9abfe 100644 --- a/web/css/buttons.css +++ b/web/css/buttons.css @@ -79,6 +79,7 @@ input[type="text"], textarea, input[type="password"] { color: var(--color-text); background-color: var(--color-1); font-family: 'Titillium Web', sans-serif; + caret-color: var(--color-4); } #tune-buttons input[type="text"] { @@ -92,6 +93,7 @@ input[type="text"], textarea, input[type="password"] { color: var(--color-text); background-color: var(--color-1-transparent); font-family: 'Titillium Web', sans-serif; + caret-color: var(--color-4); } #tune-buttons input[type="text"]:not(.no-bg):not(.no-filter) { diff --git a/web/favicon.png b/web/favicon.png index 966184a6183d8a45565f7891c840198eca37679b..5d3c0930cd0148e13cc0c17f820ab57e30ac3b9b 100644 GIT binary patch delta 6559 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 literal 7834 zcmeAS@N?(olHy`uVBq!ia0y~yU}OMc4mJh`hM1xiX$%YuoCO|{#S9GG!XV7ZFl&wk z0|SFXvPY0F14ET614BbI1H;e%3=9n~85l|p7#Ln9FfdrnU|pA>)8je$W+>aVRnhIC(I%2naDKwy-!17?-m_z==tr zWdZ|-q6&i(2Ti$3Vxp0`GYr-AzeZ&Hv*b z^WwjKhUJa9|9PkJ$9LcL-5GoO-`D(WZ-U&_pT1%Ldi&g~Pa5AJmOYKqi@R-~5uX0E zY}IS$xBnNsITCldJlp)*Ev^SX54sO5kNGckeSdL7bdO>G)05{^7$Ofv-R9mQYmpoN zmhl(!{PO+zk=g2!$^Rl;re9~b;E`bBVPe~z{fhYw_Z5cNhOF>?k~bJlm|ovq<g` z!#<5^J@f0X74`r53⁡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 diff --git a/web/index.ejs b/web/index.ejs index d8af171..142d7b9 100644 --- a/web/index.ejs +++ b/web/index.ejs @@ -12,7 +12,7 @@ - + diff --git a/web/js/chat.js b/web/js/chat.js index 50405cf..9236500 100644 --- a/web/js/chat.js +++ b/web/js/chat.js @@ -1,90 +1,100 @@ $(document).ready(function() { - const protocol = window.location.protocol === 'https:' ? 'wss:' : 'ws:'; - const chatSocket = new WebSocket(`${protocol}//${window.location.host}${window.location.pathname}chat`); - let chatMessageCount = 0; - const chatMessages = $('#chat-chatbox'); - const chatMessagesCount = $('.chat-messages-count'); - const chatButton = $('.chatbutton'); - const chatSendInput = $('#chat-send-message'); - const chatIdentityNickname = $('#chat-identity-nickname'); - const chatNicknameInput = $('#chat-nickname'); - const chatNicknameSave = $('#chat-nickname-save'); + const protocol = window.location.protocol === 'https:' ? 'wss:' : 'ws:'; + const chatSocket = new WebSocket(`${protocol}//${window.location.host}${window.location.pathname}chat`); + let chatMessageCount = 0; + const chatMessages = $('#chat-chatbox'); + const chatMessagesCount = $('.chat-messages-count'); + const chatButton = $('.chatbutton'); + const chatSendInput = $('#chat-send-message'); + const chatIdentityNickname = $('#chat-identity-nickname'); + const chatNicknameInput = $('#chat-nickname'); + const chatNicknameSave = $('#chat-nickname-save'); - chatSocket.onmessage = function(event) { - const messageData = JSON.parse(event.data); - const isAdmin = messageData.admin ? '[ADMIN]' : ''; - - if (messageData.type === 'clientIp') { - chatIdentityNickname.html(isAdmin + " " + (savedNickname?.length > 0 ? savedNickname : 'Anonymous User')); - chatIdentityNickname.attr('title', messageData.ip); - } else { - const chatMessage = ` - [${messageData.time}] - ${isAdmin} ${messageData.nickname}: - ${$('
').text(messageData.message).html()}
- `; - chatMessages.append(chatMessage); - - if (chatMessages.is(':visible')) { - setTimeout(function() { - chatMessages.scrollTop(chatMessages[0].scrollHeight); - }, 100); - } else { - if (!messageData.history) { - chatMessageCount++; - chatMessagesCount.text(chatMessageCount); - chatMessagesCount.attr("aria-label", "Chat (" + chatMessageCount + " unread)"); - chatButton.removeClass('bg-color-2').addClass('bg-color-4'); - } - } - } - }; - - $('.chat-send-message-btn').click(sendMessage); - chatNicknameSave.click(function() { - const currentNickname = chatNicknameInput.val(); - localStorage.setItem('nickname', currentNickname); - chatIdentityNickname.text(currentNickname.length > 0 ? currentNickname : 'Anonymous User'); - chatNicknameInput.blur(); - }); - - chatButton.click(function() { - chatMessageCount = 0; - chatMessagesCount.text(chatMessageCount); - chatButton.removeClass('bg-color-4').addClass('bg-color-2'); - chatSendInput.focus(); - - setTimeout(function() { - chatMessages.scrollTop(chatMessages[0].scrollHeight); - }, 100); - }); - - chatNicknameInput.keypress(function(event) { - if (event.which === 13) { - chatNicknameSave.trigger('click'); - } - }); - - chatSendInput.keypress(function(event) { - if (event.which === 13) { - sendMessage(); - } - }); - - // Load nickname from localStorage on page load - const savedNickname = localStorage.getItem('nickname'); - if (savedNickname) { - chatNicknameInput.val(savedNickname); - } - - function sendMessage() { - const nickname = savedNickname || 'Anonymous user'; - const message = chatSendInput.val().trim(); - - if (message) { - const messageData = { nickname, message }; - chatSocket.send(JSON.stringify(messageData)); - chatSendInput.val(''); + // Function to generate a random string + function generateRandomString(length) { + const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; + let result = ''; + for (let i = 0; i < length; i++) { + result += characters.charAt(Math.floor(Math.random() * characters.length)); + } + return result; } - } -}); \ No newline at end of file + + // Load nickname from localStorage on page load + let savedNickname = localStorage.getItem('nickname') || `Anonymous User ${generateRandomString(5)}`; + chatNicknameInput.val(savedNickname); + chatIdentityNickname.text(savedNickname); + + chatSocket.onmessage = function(event) { + const messageData = JSON.parse(event.data); + const isAdmin = messageData.admin ? '[ADMIN]' : ''; + + if (messageData.type === 'clientIp') { + chatIdentityNickname.html(isAdmin + " " + savedNickname); + chatIdentityNickname.attr('title', messageData.ip); + } else { + const chatMessage = ` + [${messageData.time}] + ${isAdmin} ${messageData.nickname}: + ${$('
').text(messageData.message).html()}
+ `; + chatMessages.append(chatMessage); + + if (chatMessages.is(':visible')) { + setTimeout(function() { + chatMessages.scrollTop(chatMessages[0].scrollHeight); + }, 100); + } else { + if (!messageData.history) { + chatMessageCount++; + chatMessagesCount.text(chatMessageCount); + chatMessagesCount.attr("aria-label", "Chat (" + chatMessageCount + " unread)"); + chatButton.removeClass('bg-color-2').addClass('bg-color-4'); + } + } + } + }; + + $('.chat-send-message-btn').click(sendMessage); + chatNicknameSave.click(function() { + const currentNickname = chatNicknameInput.val().trim() || `Anonymous User ${generateRandomString(5)}`; + localStorage.setItem('nickname', currentNickname); + savedNickname = currentNickname; // Update the savedNickname variable + chatIdentityNickname.text(savedNickname); + chatNicknameInput.blur(); + }); + + chatButton.click(function() { + chatMessageCount = 0; + chatMessagesCount.text(chatMessageCount); + chatButton.removeClass('bg-color-4').addClass('bg-color-2'); + chatSendInput.focus(); + + setTimeout(function() { + chatMessages.scrollTop(chatMessages[0].scrollHeight); + }, 100); + }); + + chatNicknameInput.keypress(function(event) { + if (event.which === 13) { + chatNicknameSave.trigger('click'); + } + }); + + chatSendInput.keypress(function(event) { + if (event.which === 13) { + sendMessage(); + } + }); + + function sendMessage() { + const nickname = savedNickname || `Anonymous User ${generateRandomString(5)}`; + const message = chatSendInput.val().trim(); + + if (message) { + const messageData = { nickname, message }; + chatSocket.send(JSON.stringify(messageData)); + chatSendInput.val(''); + } + } +}); diff --git a/web/js/init.js b/web/js/init.js index 89c2615..acf9648 100644 --- a/web/js/init.js +++ b/web/js/init.js @@ -1,11 +1,12 @@ -var currentDate = new Date('Aug 1, 2024 20:00:00'); +var currentDate = new Date('Aug 28, 2024 22:00:00'); var day = currentDate.getDate(); var month = currentDate.getMonth() + 1; // Months are zero-indexed, so add 1 var year = currentDate.getFullYear(); var formattedDate = day + '/' + month + '/' + year; -var currentVersion = 'v1.2.6a [' + formattedDate + ']'; +var currentVersion = 'v1.2.7 [' + formattedDate + ']'; getInitialSettings(); +removeUrlParameters(); // Call this function to remove URL parameters function getInitialSettings() { $.ajax({ @@ -26,4 +27,12 @@ function getInitialSettings() { console.error('Error:', error); } }); -} \ No newline at end of file +} + +function removeUrlParameters() { + // Get the current URL without the query parameters + var urlWithoutParams = window.location.protocol + "//" + window.location.host + window.location.pathname; + + // Replace the current URL with the new one, without reloading the page + window.history.replaceState({ path: urlWithoutParams }, '', urlWithoutParams); +} diff --git a/web/js/main.js b/web/js/main.js index 88fd336..2ef47e6 100644 --- a/web/js/main.js +++ b/web/js/main.js @@ -605,7 +605,7 @@ function findOnMaps() { var latitude = localStorage.getItem('qthLongitude'); var longitude = localStorage.getItem('qthLatitude'); - var url = `https://maps.fmdx.pl/#qth=${longitude},${latitude}&freq=${frequency}&findPi=${pi}`; + var url = `https://maps.fmdx.org/#qth=${longitude},${latitude}&freq=${frequency}&findPi=${pi}`; window.open(url, "_blank"); } diff --git a/web/js/settings.js b/web/js/settings.js index ff72451..d156332 100644 --- a/web/js/settings.js +++ b/web/js/settings.js @@ -56,11 +56,10 @@ $(document).ready(() => { const signalSelector = $('#signal-selector'); const signalParameter = getQueryParameter('signalUnits'); - if(signalParameter) { - signalSelector.find('input').val($(signalParameter).text()); - } - - if (localStorage.getItem('signalUnit')) { + if(signalParameter && !localStorage.getItem('signalUnit')) { + signalSelector.find('input').val(signalSelector.find('.option[data-value="' + signalParameter + '"]').text()); + localStorage.setItem('signalUnit', signalParameter); + } else { signalSelector.find('input').val(signalSelector.find('.option[data-value="' + savedUnit + '"]').text()); }