You've already forked fm-dx-webserver
mirror of
https://github.com/KubaPro010/fm-dx-webserver.git
synced 2026-02-27 06:23:53 +01:00
Merge branch 'main' into Bkram/audio-proxying
This commit is contained in:
9
index.js
9
index.js
@@ -146,6 +146,7 @@ function connectToXdrd() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (authFlags.authMsg && authFlags.firstClient) {
|
if (authFlags.authMsg && authFlags.firstClient) {
|
||||||
|
client.write('x\n');
|
||||||
client.write('T87500\n');
|
client.write('T87500\n');
|
||||||
client.write('A0\n');
|
client.write('A0\n');
|
||||||
client.write('G00\n');
|
client.write('G00\n');
|
||||||
@@ -231,9 +232,13 @@ app.get('/static_data', (req, res) => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
app.get('/server_time', (req, res) => {
|
app.get('/server_time', (req, res) => {
|
||||||
const serverTime = new Date().toISOString();
|
/*const serverTime = new Date().toISOString(); // Get server time in ISO format
|
||||||
|
const serverTimezoneOffset = new Date().getTimezoneOffset(); // Get server timezone offset in minutes*/
|
||||||
|
|
||||||
|
const serverTime = new Date(); // Get current server time
|
||||||
|
const serverTimeUTC = new Date(serverTime.getTime() - (serverTime.getTimezoneOffset() * 60000)); // Adjust server time to UTC
|
||||||
res.json({
|
res.json({
|
||||||
serverTime
|
serverTime: serverTimeUTC,
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,9 @@
|
|||||||
<meta property="og:type" content="website">
|
<meta property="og:type" content="website">
|
||||||
<meta property="og:image" content="favicon2.png">
|
<meta property="og:image" content="favicon2.png">
|
||||||
<meta property="og:description" content="Server description: <%= tunerDesc %>.">
|
<meta property="og:description" content="Server description: <%= tunerDesc %>.">
|
||||||
|
|
||||||
|
<script src="js/init.js"></script>
|
||||||
|
|
||||||
<!-- 3LAS Scripts for Audio streaming -->
|
<!-- 3LAS Scripts for Audio streaming -->
|
||||||
<script src="js/3las/util/3las.helpers.js"></script>
|
<script src="js/3las/util/3las.helpers.js"></script>
|
||||||
<script src="js/3las/util/3las.logging.js"></script>
|
<script src="js/3las/util/3las.logging.js"></script>
|
||||||
@@ -268,7 +270,7 @@
|
|||||||
|
|
||||||
<div class="version-info">
|
<div class="version-info">
|
||||||
<p class="text-small">FM-DX WebServer <br>by <a href="https://noobish.eu" target="_blank">Noobish</a> & the OpenRadio community.</p>
|
<p class="text-small">FM-DX WebServer <br>by <a href="https://noobish.eu" target="_blank">Noobish</a> & the OpenRadio community.</p>
|
||||||
<span style="color: var(--color-3);">v1.0.7 [18/2/2024]</span>
|
<span style="color: var(--color-3);">v1.0.8 [19/2/2024]</span>
|
||||||
<p class="text-small bottom-50">
|
<p class="text-small bottom-50">
|
||||||
<span class="text-smaller">librds & maps.fmdx.pl by <a href="https://fmdx.pl" target="_blank">Konrad Kosmatka</a></span><br>
|
<span class="text-smaller">librds & maps.fmdx.pl by <a href="https://fmdx.pl" target="_blank">Konrad Kosmatka</a></span><br>
|
||||||
<span class="text-smaller">3LAS by <a href="https://github.com/JoJoBond/3LAS" target="_blank">JoJoBond</a></span><br>
|
<span class="text-smaller">3LAS by <a href="https://github.com/JoJoBond/3LAS" target="_blank">JoJoBond</a></span><br>
|
||||||
|
|||||||
@@ -150,7 +150,7 @@ var AudioFormatReader = /** @class */ (function () {
|
|||||||
// Theoretical minimum is 2.
|
// Theoretical minimum is 2.
|
||||||
// Recommended value is 3 or higher.
|
// Recommended value is 3 or higher.
|
||||||
if (isAndroid)
|
if (isAndroid)
|
||||||
settings["mpeg"]["MinDecodeFrames"] = 17;
|
settings["mpeg"]["MinDecodeFrames"] = 3;
|
||||||
else
|
else
|
||||||
settings["mpeg"]["MinDecodeFrames"] = 3;
|
settings["mpeg"]["MinDecodeFrames"] = 3;
|
||||||
return settings;
|
return settings;
|
||||||
|
|||||||
18
web/js/init.js
Normal file
18
web/js/init.js
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
getInitialSettings();
|
||||||
|
|
||||||
|
function getInitialSettings() {
|
||||||
|
$.ajax({
|
||||||
|
url: './static_data',
|
||||||
|
dataType: 'json',
|
||||||
|
success: function (data) {
|
||||||
|
// Use the received data (data.qthLatitude, data.qthLongitude) as needed
|
||||||
|
localStorage.setItem('qthLatitude', data.qthLatitude);
|
||||||
|
localStorage.setItem('qthLongitude', data.qthLongitude);
|
||||||
|
localStorage.setItem('audioPort', data.audioPort);
|
||||||
|
localStorage.setItem('streamEnabled', data.streamEnabled);
|
||||||
|
},
|
||||||
|
error: function (error) {
|
||||||
|
console.error('Error:', error);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
@@ -24,7 +24,6 @@ $(document).ready(function () {
|
|||||||
canvas.width = canvas.parentElement.clientWidth;
|
canvas.width = canvas.parentElement.clientWidth;
|
||||||
canvas.height = canvas.parentElement.clientHeight;
|
canvas.height = canvas.parentElement.clientHeight;
|
||||||
|
|
||||||
getInitialSettings();
|
|
||||||
// Start updating the canvas
|
// Start updating the canvas
|
||||||
initCanvas();
|
initCanvas();
|
||||||
|
|
||||||
@@ -156,47 +155,45 @@ $(document).ready(function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
function getInitialSettings() {
|
|
||||||
$.ajax({
|
|
||||||
url: './static_data',
|
|
||||||
dataType: 'json',
|
|
||||||
success: function (data) {
|
|
||||||
// Use the received data (data.qthLatitude, data.qthLongitude) as needed
|
|
||||||
localStorage.setItem('qthLatitude', data.qthLatitude);
|
|
||||||
localStorage.setItem('qthLongitude', data.qthLongitude);
|
|
||||||
localStorage.setItem('audioPort', data.audioPort);
|
|
||||||
localStorage.setItem('streamEnabled', data.streamEnabled);
|
|
||||||
},
|
|
||||||
error: function (error) {
|
|
||||||
console.error('Error:', error);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function getLocalizedTime(serverTime) {
|
|
||||||
const serverDate = new Date(serverTime);
|
|
||||||
|
|
||||||
// Format server time using options for local time formatting
|
|
||||||
const options = { year: 'numeric', month: 'short', day: 'numeric', hour: '2-digit', minute: '2-digit', hour12: false };
|
|
||||||
const formattedServerTime = serverDate.toLocaleString(navigator.language ? navigator.language : 'en-US', options);
|
|
||||||
|
|
||||||
return formattedServerTime;
|
|
||||||
}
|
|
||||||
|
|
||||||
function getServerTime() {
|
function getServerTime() {
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: './server_time',
|
url: "/server_time",
|
||||||
dataType: 'json',
|
dataType: "json",
|
||||||
success: function (data) {
|
success: function(data) {
|
||||||
$('#server-time').text(getLocalizedTime(data.serverTime));
|
const serverTimeUtc = data.serverTime;
|
||||||
$('#client-time').text(getLocalizedTime(new Date()));
|
|
||||||
},
|
const options = {
|
||||||
error: function (error) {
|
year: 'numeric',
|
||||||
console.error('Error:', error);
|
month: 'short',
|
||||||
}
|
day: 'numeric',
|
||||||
|
hour: '2-digit',
|
||||||
|
minute: '2-digit',
|
||||||
|
hour12: false
|
||||||
|
};
|
||||||
|
|
||||||
|
const serverOptions = {
|
||||||
|
...options,
|
||||||
|
timeZone: 'Etc/UTC' // Add timeZone only for server time
|
||||||
|
};
|
||||||
|
|
||||||
|
const formattedServerTime = new Date(serverTimeUtc).toLocaleString(navigator.language ? navigator.language : 'en-US', serverOptions);
|
||||||
|
|
||||||
|
$("#server-time").text(formattedServerTime);
|
||||||
|
|
||||||
|
// Get and format user's local time directly without specifying timeZone:
|
||||||
|
const localTime = new Date();
|
||||||
|
const formattedLocalTime = new Date(localTime).toLocaleString(navigator.language ? navigator.language : 'en-US', options);
|
||||||
|
|
||||||
|
// Display client time:
|
||||||
|
$("#client-time").text(formattedLocalTime);
|
||||||
|
},
|
||||||
|
error: function(jqXHR, textStatus, errorThrown) {
|
||||||
|
console.error("Error fetching server time:", errorThrown);
|
||||||
|
// Handle error gracefully (e.g., display a fallback message)
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function sendPingRequest() {
|
function sendPingRequest() {
|
||||||
const startTime = new Date().getTime();
|
const startTime = new Date().getTime();
|
||||||
|
|
||||||
@@ -596,7 +593,6 @@ function updateDataElements(parsedData) {
|
|||||||
$('.data-st').html("<span class='opacity-half'>ST</span>");
|
$('.data-st').html("<span class='opacity-half'>ST</span>");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
console.log(parsedData.st, parsedData.st_forced);
|
|
||||||
|
|
||||||
$('#data-rt0').html(processString(parsedData.rt0, parsedData.rt0_errors));
|
$('#data-rt0').html(processString(parsedData.rt0, parsedData.rt0_errors));
|
||||||
$('#data-rt1').html(processString(parsedData.rt1, parsedData.rt1_errors));
|
$('#data-rt1').html(processString(parsedData.rt1, parsedData.rt1_errors));
|
||||||
|
|||||||
Reference in New Issue
Block a user