You've already forked fm-dx-webserver
mirror of
https://github.com/KubaPro010/fm-dx-webserver.git
synced 2026-02-26 22:13:53 +01:00
Multi TX search tweaks
Order the match list by score, clean up of matches panel HTML and show score in DOM as data element
This commit is contained in:
@@ -421,7 +421,8 @@ function handleData(wss, receivedData, rdsWss) {
|
|||||||
id: currentTx.id,
|
id: currentTx.id,
|
||||||
pi: currentTx.pi,
|
pi: currentTx.pi,
|
||||||
reg: currentTx.reg,
|
reg: currentTx.reg,
|
||||||
otherMatches: currentTx.others
|
otherMatches: currentTx.others,
|
||||||
|
score: currentTx.score,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -191,10 +191,12 @@ async function fetchTx(freq, piCode, rdsPs) {
|
|||||||
for (loc of filteredLocations) {
|
for (loc of filteredLocations) {
|
||||||
loc.score = evaluateStation(loc);
|
loc.score = evaluateStation(loc);
|
||||||
}
|
}
|
||||||
match = filteredLocations.reduce((max, obj) => obj.score > max.score ? obj : max, filteredLocations[0]);
|
filteredLocations.sort((a, b) => b.score - a.score);
|
||||||
multiMatches = filteredLocations.filter(obj => obj !== match);
|
match = filteredLocations[0];
|
||||||
|
multiMatches = filteredLocations.slice(1);
|
||||||
} else if (filteredLocations.length === 1) {
|
} else if (filteredLocations.length === 1) {
|
||||||
match = filteredLocations[0];
|
match = filteredLocations[0];
|
||||||
|
match.score = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (match) {
|
if (match) {
|
||||||
@@ -218,6 +220,7 @@ async function fetchTx(freq, piCode, rdsPs) {
|
|||||||
pi: match.pi,
|
pi: match.pi,
|
||||||
foundStation: true,
|
foundStation: true,
|
||||||
reg: match.detectedByPireg,
|
reg: match.detectedByPireg,
|
||||||
|
score: match.score,
|
||||||
others: multiMatches,
|
others: multiMatches,
|
||||||
};
|
};
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -290,7 +290,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="panel-33 hover-brighten tooltip no-bg-phone" style="min-height: 91px;" data-tooltip="This panel contains the current TX info when RDS is loaded.<br><strong>Clicking on this panel copies the info into the clipboard.</strong>">
|
<div class="panel-33 hover-brighten tooltip no-bg-phone" style="min-height: 91px;" data-tooltip="This panel contains the current TX info when RDS is loaded.<br><strong>Clicking on this panel copies the info into the clipboard.</strong>">
|
||||||
<div id="data-station-container">
|
<div id="data-station-container" data-score="0">
|
||||||
<h2 style="margin-top: 0;" class="mb-0">
|
<h2 style="margin-top: 0;" class="mb-0">
|
||||||
<span id="data-station-name"></span>
|
<span id="data-station-name"></span>
|
||||||
</h2>
|
</h2>
|
||||||
|
|||||||
@@ -918,13 +918,11 @@ function throttle(fn, wait) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function buildAltTxList(txList) {
|
function buildAltTxList(txList) {
|
||||||
const wrapper = '<div class="panel-100-real m-0" style="background:none;backdrop-filter:none;">';
|
|
||||||
let outString = '';
|
let outString = '';
|
||||||
outString += wrapper;
|
|
||||||
for (let i = 0; i < txList.length; i++) {
|
for (let i = 0; i < txList.length; i++) {
|
||||||
const tx = txList[i];
|
const tx = txList[i];
|
||||||
outString += `<div class="panel-100-real m-0 hover-brighten no-bg-phone m-0 br-0 p-10" style="min-height: 72px;padding-left: 20px;">
|
outString += `<div class="panel-100-real m-0 hover-brighten no-bg-phone m-0 br-0 p-10" style="min-height: 72px;padding-left: 20px;">
|
||||||
<div id="data-station-container-${i}" style="display: block;" class="text-left">
|
<div id="data-station-container-${i}" style="display: block;" class="text-left" data-score="${tx.score}">
|
||||||
<h2 style="margin-top: 0;" class="mb-0">
|
<h2 style="margin-top: 0;" class="mb-0">
|
||||||
<span id="data-station-name-${i}">${tx.station.replace("R.", "Radio ").replace(/%/g, '%25')}</span>
|
<span id="data-station-name-${i}">${tx.station.replace("R.", "Radio ").replace(/%/g, '%25')}</span>
|
||||||
</h2>
|
</h2>
|
||||||
@@ -935,11 +933,7 @@ function buildAltTxList(txList) {
|
|||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>`;
|
</div>`;
|
||||||
if (i % 2 !== 0) {
|
|
||||||
outString += `</div>${wrapper}`;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
outString += '</div>';
|
|
||||||
return outString;
|
return outString;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -955,6 +949,12 @@ function updateHtmlIfChanged($element, newHtml) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function updateDatasetValIfChanged($element, dataLabel, newVal) {
|
||||||
|
if ($element.attr(dataLabel) !== newVal) {
|
||||||
|
$element.attr(dataLabel, newVal);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Main function to update data elements, optimized
|
// Main function to update data elements, optimized
|
||||||
const updateDataElements = throttle(function(parsedData) {
|
const updateDataElements = throttle(function(parsedData) {
|
||||||
updateTextIfChanged($dataFrequency, parsedData.freq);
|
updateTextIfChanged($dataFrequency, parsedData.freq);
|
||||||
@@ -1015,6 +1015,7 @@ const updateDataElements = throttle(function(parsedData) {
|
|||||||
updateTextIfChanged($('#data-station-pol'), parsedData.txInfo.pol);
|
updateTextIfChanged($('#data-station-pol'), parsedData.txInfo.pol);
|
||||||
updateHtmlIfChanged($('#data-station-azimuth'), parsedData.txInfo.azi + '°');
|
updateHtmlIfChanged($('#data-station-azimuth'), parsedData.txInfo.azi + '°');
|
||||||
updateHtmlIfChanged($('#data-station-others'), parsedData.txInfo.otherMatches.length > 0 ? ('<span>+' + parsedData.txInfo.otherMatches.length +'</span>') : '');
|
updateHtmlIfChanged($('#data-station-others'), parsedData.txInfo.otherMatches.length > 0 ? ('<span>+' + parsedData.txInfo.otherMatches.length +'</span>') : '');
|
||||||
|
updateDatasetValIfChanged($('#data-station-container'), "data-score", parsedData.txInfo.score);
|
||||||
const txDistance = localStorage.getItem('imperialUnits') == "true" ? (Number(parsedData.txInfo.dist) * 0.621371192).toFixed(0) + " mi" : parsedData.txInfo.dist + " km";
|
const txDistance = localStorage.getItem('imperialUnits') == "true" ? (Number(parsedData.txInfo.dist) * 0.621371192).toFixed(0) + " mi" : parsedData.txInfo.dist + " km";
|
||||||
const altTxInfo = buildAltTxList(parsedData.txInfo.otherMatches);
|
const altTxInfo = buildAltTxList(parsedData.txInfo.otherMatches);
|
||||||
updateHtmlIfChanged($('#alternative-txes'), altTxInfo);
|
updateHtmlIfChanged($('#alternative-txes'), altTxInfo);
|
||||||
|
|||||||
Reference in New Issue
Block a user