Merge branch '162-statistics-counts-inaccurate-2' into 'master'

DXCC of none ie: /MM not counted in score card or Stats ->DXCCs

Closes #162

See merge request gridtracker.org/gridtracker!219

If this is changing anything in the UI or operational behavior, please prepare to update the wiki!
merge-requests/201/merge
T Loomis 2022-10-06 16:55:06 +00:00
commit f9dbd23ae2
4 zmienionych plików z 177 dodań i 131 usunięć

Wyświetl plik

@ -9685,7 +9685,7 @@
], ],
"cont": "EU", "cont": "EU",
"count": [ "count": [
67 66
], ],
"endorse": [ "endorse": [
"Mixed" "Mixed"
@ -9700,6 +9700,75 @@
"sponsor": "QRZ", "sponsor": "QRZ",
"tooltip": "Master of Europe" "tooltip": "Master of Europe"
}, },
"MRCAS": {
"name": "MRCAS - Master of Asia",
"rule": {
"band": [
"Mixed"
],
"cont": "AS",
"count": [
54
],
"endorse": [
"Mixed"
],
"mode": [
"Mixed",
"Digital",
"Phone"
],
"type": "dxcc"
},
"sponsor": "QRZ",
"tooltip": "Master of Asia"
},
"MRCAF": {
"name": "MRCAF - Master of Africa",
"rule": {
"band": [
"Mixed"
],
"cont": "AF",
"count": [
76
],
"endorse": [
"Mixed"
],
"mode": [
"Mixed",
"Digital",
"Phone"
],
"type": "dxcc"
},
"sponsor": "QRZ",
"tooltip": "Master of Africa"
},
"MRCNA": {
"name": "MRCNA - Master of North America",
"rule": {
"band": [
"Mixed"
],
"cont": "NA",
"count": [
49
],
"endorse": [
"Mixed"
],
"mode": [
"Mixed",
"Digital",
"Phone"
],
"type": "dxcc"
},
"sponsor": "QRZ",
"tooltip": "Master of North America"
},
"MRCSA": { "MRCSA": {
"name": "MRCSA - Master of South America", "name": "MRCSA - Master of South America",
"rule": { "rule": {
@ -9723,6 +9792,29 @@
"sponsor": "QRZ", "sponsor": "QRZ",
"tooltip": "Master of South America" "tooltip": "Master of South America"
}, },
"MRCOC": {
"name": "MRCOC - Master of Oceania",
"rule": {
"band": [
"Mixed"
],
"cont": "OC",
"count": [
60
],
"endorse": [
"Mixed"
],
"mode": [
"Mixed",
"Digital",
"Phone"
],
"type": "dxcc"
},
"sponsor": "QRZ",
"tooltip": "Master of Oceania"
},
"USA": { "USA": {
"name": "USA - United States", "name": "USA - United States",
"rule": { "rule": {

Wyświetl plik

@ -1,49 +0,0 @@
<option value="Auto">Auto</option>
<option value="All">All</option>
<option value="AM">AM</option>
<option value="ARDOP">ARDOP</option>
<option value="ATV">ATV</option>
<option value="C4FM">C4FM</option>
<option value="CHIP">CHIP</option>
<option value="CLO">CLO</option>
<option value="CONTESTI">CONTESTI</option>
<option value="CW">CW</option>
<option value="DIGITALVOICE">DIGITALVOICE</option>
<option value="DOMINO">DOMINO</option>
<option value="DSTAR">DSTAR</option>
<option value="FAX">FAX</option>
<option value="FM">FM</option>
<option value="FSK441">FSK441</option>
<option value="FT8">FT8</option>
<option value="HELL">HELL</option>
<option value="ISCAT">ISCAT</option>
<option value="JT4">JT4</option>
<option value="JT6M">JT6M</option>
<option value="JT9">JT9</option>
<option value="JT44">JT44</option>
<option value="JT65">JT65</option>
<option value="MFSK">MFSK</option>
<option value="MSK144">MSK144</option>
<option value="MT63">MT63</option>
<option value="OLIVIA">OLIVIA</option>
<option value="OPERA">OPERA</option>
<option value="PAC">PAC</option>
<option value="PAX">PAX</option>
<option value="PKT">PKT</option>
<option value="PSK">PSK</option>
<option value="PSK2K">PSK2K</option>
<option value="Q15">Q15</option>
<option value="QRA64">QRA64</option>
<option value="ROS">ROS</option>
<option value="RTTY">RTTY</option>
<option value="RTTYM">RTTYM</option>
<option value="SSB">SSB</option>
<option value="SSTV">SSTV</option>
<option value="T10">T10</option>
<option value="THOR">THOR</option>
<option value="THRB">THRB</option>
<option value="TOR">TOR</option>
<option value="V4">V4</option>
<option value="VOI">VOI</option>
<option value="WINMOR">WINMOR</option>
<option value="WSPR">WSPR</option>

File diff suppressed because one or more lines are too long

Wyświetl plik

@ -1149,7 +1149,7 @@ function addDeDx(
if (details.px) { details.zone = Number(details.px.charAt(details.px.length - 1)); } if (details.px) { details.zone = Number(details.px.charAt(details.px.length - 1)); }
} }
let fourGrid = details.grid.substr(0, 4); var fourGrid = details.grid.substr(0, 4);
if ( if (
details.state == null && details.state == null &&
isKnownCallsignUSplus(finalDxcc) && isKnownCallsignUSplus(finalDxcc) &&
@ -2539,7 +2539,7 @@ function insertMessageInRoster(
g_rosterUpdateTimer = null; g_rosterUpdateTimer = null;
} }
let now = timeNowSec(); var now = timeNowSec();
if (!(hash in g_callRoster)) if (!(hash in g_callRoster))
{ {
g_callRoster[hash] = {}; g_callRoster[hash] = {};
@ -3948,13 +3948,13 @@ function mouseOverDataItem(mouseEvent, fromHover)
g_lastDataGridUp = mouseEvent; g_lastDataGridUp = mouseEvent;
let isFlag = false; var isFlag = false;
let callListLength = createTooltTipTable(mouseEvent); var callListLength = createTooltTipTable(mouseEvent);
let positionInfo = myTooltip.getBoundingClientRect(); var positionInfo = myTooltip.getBoundingClientRect();
let windowWidth = window.innerWidth; var windowWidth = window.innerWidth;
let top = 0; var top = 0;
let noRoomLeft = false; var noRoomLeft = false;
let noRoomRight = false; var noRoomRight = false;
if ( if (
typeof mouseEvent.spot != "undefined" && typeof mouseEvent.spot != "undefined" &&
g_receptionReports.spots[mouseEvent.spot].bearing > 180 g_receptionReports.spots[mouseEvent.spot].bearing > 180
@ -3984,11 +3984,11 @@ function mouseOverDataItem(mouseEvent, fromHover)
function mouseMoveDataItem(mouseEvent) function mouseMoveDataItem(mouseEvent)
{ {
let positionInfo = myTooltip.getBoundingClientRect(); var positionInfo = myTooltip.getBoundingClientRect();
let windowWidth = window.innerWidth; var windowWidth = window.innerWidth;
let top = 0; var top = 0;
let noRoomLeft = false; var noRoomLeft = false;
let noRoomRight = false; var noRoomRight = false;
if ( if (
typeof mouseEvent.spot != "undefined" && typeof mouseEvent.spot != "undefined" &&
g_receptionReports.spots[mouseEvent.spot].bearing > 180 g_receptionReports.spots[mouseEvent.spot].bearing > 180
@ -4152,12 +4152,12 @@ function squareToLatLong(qth)
function iconFeature(center, iconObj, zIndex) function iconFeature(center, iconObj, zIndex)
{ {
let feature = new ol.Feature({ var feature = new ol.Feature({
geometry: new ol.geom.Point(center), geometry: new ol.geom.Point(center),
name: "pin" name: "pin"
}); });
let iconStyle = new ol.style.Style({ var iconStyle = new ol.style.Style({
zIndex: zIndex, zIndex: zIndex,
image: iconObj image: iconObj
}); });
@ -5399,10 +5399,10 @@ function toggleStrikeGlobal()
g_mapSettings.strikesGlobal = g_mapSettings.strikesGlobal == false; g_mapSettings.strikesGlobal = g_mapSettings.strikesGlobal == false;
saveMapSettings(); saveMapSettings();
let msg = "Local Strikes"; var msg = "Local Strikes";
if (g_mapSettings.strikesGlobal == true) msg = "Global Strikes"; if (g_mapSettings.strikesGlobal == true) msg = "Global Strikes";
let worker = var worker =
"<font color='yellow'>Strike Distance Changed<br/>" + msg + "</font>"; "<font color='yellow'>Strike Distance Changed<br/>" + msg + "</font>";
if (g_mapSettings.strikes == false) { worker += "<br/><font color='red'>Detection is not enabled!</font>"; } if (g_mapSettings.strikes == false) { worker += "<br/><font color='red'>Detection is not enabled!</font>"; }
addLastTraffic(worker); addLastTraffic(worker);
@ -5412,10 +5412,10 @@ function toggleStrikeGlobal()
function handleStrike(strike) function handleStrike(strike)
{ {
let index = Date.now(); var index = Date.now();
while (index in g_bolts) index++; while (index in g_bolts) index++;
let inRange = true; var inRange = true;
if (myRawGrid.length < 4 || Math.abs(strike.o - g_myLon) > g_strikeRange) inRange = false; if (myRawGrid.length < 4 || Math.abs(strike.o - g_myLon) > g_strikeRange) inRange = false;
@ -5439,7 +5439,7 @@ function handleStrike(strike)
{ {
playStrikeAlert(); playStrikeAlert();
let dist = var dist =
parseInt( parseInt(
MyCircle.distance( MyCircle.distance(
g_myLat, g_myLat,
@ -5451,12 +5451,12 @@ function handleStrike(strike)
).toLocaleString() + ).toLocaleString() +
" " + " " +
distanceUnit.value.toLowerCase(); distanceUnit.value.toLowerCase();
let azim = var azim =
parseInt( parseInt(
MyCircle.bearing(g_myLat, g_myLon, strike.a, strike.o) MyCircle.bearing(g_myLat, g_myLon, strike.a, strike.o)
).toLocaleString() + "&deg;"; ).toLocaleString() + "&deg;";
let worker = var worker =
"<font style='color:yellow;font-weight:bold'>Lighting Strike Detected!</font><br/>"; "<font style='color:yellow;font-weight:bold'>Lighting Strike Detected!</font><br/>";
worker += worker +=
"<font style='color:white'>" + userTimeString(null) + "</font><br/>"; "<font style='color:white'>" + userTimeString(null) + "</font><br/>";
@ -5494,12 +5494,12 @@ function initMap()
if (g_maps) if (g_maps)
{ {
let saveSettings = false; var saveSettings = false;
g_maps = Object.keys(g_maps).sort().reduce((obj, key) => { obj[key] = g_maps[key]; return obj; }, {}); g_maps = Object.keys(g_maps).sort().reduce((obj, key) => { obj[key] = g_maps[key]; return obj; }, {});
if (typeof Number(g_mapSettings.mapIndex) == "number") if (typeof Number(g_mapSettings.mapIndex) == "number")
{ {
let foundKey = null; var foundKey = null;
for (const key in g_maps) for (const key in g_maps)
{ {
if (g_maps[key].oldIndex == g_mapSettings.mapIndex) if (g_maps[key].oldIndex == g_mapSettings.mapIndex)
@ -5518,7 +5518,7 @@ function initMap()
if (typeof Number(g_mapSettings.nightMapIndex) == "number") if (typeof Number(g_mapSettings.nightMapIndex) == "number")
{ {
let foundKey = null; var foundKey = null;
for (const key in g_maps) for (const key in g_maps)
{ {
if (g_maps[key].oldIndex == g_mapSettings.nightMapIndex) if (g_maps[key].oldIndex == g_mapSettings.nightMapIndex)
@ -5541,7 +5541,7 @@ function initMap()
for (const key in g_maps) for (const key in g_maps)
{ {
g_mapsLayer[key] = new ol.source.XYZ(g_maps[key]); g_mapsLayer[key] = new ol.source.XYZ(g_maps[key]);
let option = document.createElement("option"); var option = document.createElement("option");
option.value = key; option.value = key;
option.text = key; option.text = key;
mapSelect.appendChild(option); mapSelect.appendChild(option);
@ -6911,17 +6911,17 @@ var g_spotDetailsCollector = {};
function handleWsjtxDecode(newMessage) function handleWsjtxDecode(newMessage)
{ {
if (g_ignoreMessages == 1 || g_map == null) return; if (g_ignoreMessages == 1 || g_map == null) return;
let didAlert = false; var didAlert = false;
let didCustomAlert = false; var didCustomAlert = false;
let validQTH = false; var validQTH = false;
let CQ = false; var CQ = false;
let DEDX = false; var DEDX = false;
let RR73 = false; var RR73 = false;
let msgDEcallsign = ""; var msgDEcallsign = "";
let msgDXcallsign = ""; var msgDXcallsign = "";
let theirQTH = ""; var theirQTH = "";
let countryName = ""; var countryName = "";
let newF; var newF;
if (newMessage.OF > 0) if (newMessage.OF > 0)
{ {
newF = Number((newMessage.OF + newMessage.DF) / 1000).formatMhz(3, 3); newF = Number((newMessage.OF + newMessage.DF) / 1000).formatMhz(3, 3);
@ -6930,12 +6930,12 @@ function handleWsjtxDecode(newMessage)
{ {
newF = newMessage.DF; newF = newMessage.DF;
} }
let theTimeStamp = var theTimeStamp =
timeNowSec() - (timeNowSec() % 86400) + parseInt(newMessage.TM / 1000); timeNowSec() - (timeNowSec() % 86400) + parseInt(newMessage.TM / 1000);
let messageColor = "white"; var messageColor = "white";
// Break up the decoded message // Break up the decoded message
let decodeWords = newMessage.Msg.split(" ").slice(0, 5); var decodeWords = newMessage.Msg.split(" ").slice(0, 5);
while (decodeWords[decodeWords.length - 1] == "") decodeWords.pop(); while (decodeWords[decodeWords.length - 1] == "") decodeWords.pop();
if (decodeWords.length > 1 && newMessage.Msg.indexOf("<...>") == -1) if (decodeWords.length > 1 && newMessage.Msg.indexOf("<...>") == -1)
@ -6948,13 +6948,13 @@ function handleWsjtxDecode(newMessage)
} }
} }
let rect = null; var rect = null;
// Grab the last word in the decoded message // Grab the last word in the decoded message
let qth = decodeWords[decodeWords.length - 1].trim(); var qth = decodeWords[decodeWords.length - 1].trim();
if (qth.length == 4) if (qth.length == 4)
{ {
let LETTERS = qth.substr(0, 2); var LETTERS = qth.substr(0, 2);
let NUMBERS = qth.substr(2, 2); var NUMBERS = qth.substr(2, 2);
if (/^[A-R]+$/.test(LETTERS) && /^[0-9]+$/.test(NUMBERS)) if (/^[A-R]+$/.test(LETTERS) && /^[0-9]+$/.test(NUMBERS))
{ {
theirQTH = LETTERS + NUMBERS; theirQTH = LETTERS + NUMBERS;
@ -7004,9 +7004,9 @@ function handleWsjtxDecode(newMessage)
RR73 = true; RR73 = true;
} }
let callsign = null; var callsign = null;
let hash = msgDEcallsign + newMessage.OB + newMessage.OM; var hash = msgDEcallsign + newMessage.OB + newMessage.OM;
if (hash in g_liveCallsigns) callsign = g_liveCallsigns[hash]; if (hash in g_liveCallsigns) callsign = g_liveCallsigns[hash];
if (theirQTH == "" && msgDEcallsign in g_gtCallsigns && g_gtCallsigns[msgDEcallsign] in g_gtFlagPins) if (theirQTH == "" && msgDEcallsign in g_gtCallsigns && g_gtCallsigns[msgDEcallsign] in g_gtFlagPins)
@ -7018,7 +7018,7 @@ function handleWsjtxDecode(newMessage)
} }
} }
let canPath = false; var canPath = false;
if ( if (
(g_appSettings.gtBandFilter.length == 0 || (g_appSettings.gtBandFilter.length == 0 ||
(g_appSettings.gtBandFilter == "auto" && newMessage.OB == myBand) || (g_appSettings.gtBandFilter == "auto" && newMessage.OB == myBand) ||
@ -7219,8 +7219,8 @@ function handleWsjtxDecode(newMessage)
} }
else if (callsign.DEcall in g_pota.callSchedule) else if (callsign.DEcall in g_pota.callSchedule)
{ {
let now = Date.now(); var now = Date.now();
for (let i in g_pota.callSchedule[callsign.DEcall]) for (var i in g_pota.callSchedule[callsign.DEcall])
{ {
if (now < g_pota.callSchedule[callsign.DEcall][i].end && now >= g_pota.callSchedule[callsign.DEcall][i].start) if (now < g_pota.callSchedule[callsign.DEcall][i].end && now >= g_pota.callSchedule[callsign.DEcall][i].start)
{ {
@ -7280,7 +7280,7 @@ function handleWsjtxDecode(newMessage)
if (g_appSettings.gtSpotEnable === true && callsign.DEcall in g_gtCallsigns) if (g_appSettings.gtSpotEnable === true && callsign.DEcall in g_gtCallsigns)
{ {
let key = g_gtCallsigns[callsign.DEcall]; var key = g_gtCallsigns[callsign.DEcall];
if (key in g_gtFlagPins && g_gtFlagPins[key].o == 1) if (key in g_gtFlagPins && g_gtFlagPins[key].o == 1)
{ {
g_spotCollector[key] = callsign.RSTsent; g_spotCollector[key] = callsign.RSTsent;
@ -7594,7 +7594,7 @@ function handleWsjtxClear(newMessage)
function goProcessRoster(isRealtime = false) function goProcessRoster(isRealtime = false)
{ {
let now = timeNowSec(); var now = timeNowSec();
for (const call in g_callRoster) for (const call in g_callRoster)
{ {
if (now - g_callRoster[call].callObj.age > 300) if (now - g_callRoster[call].callObj.age > 300)
@ -7704,7 +7704,7 @@ function setCenterQTH()
{ {
g_appSettings.centerGridsquare = homeQTHInput.value; g_appSettings.centerGridsquare = homeQTHInput.value;
// Grab home QTH Gridsquare from Center QTH // Grab home QTH Gridsquare from Center QTH
let LL = squareToLatLong(homeQTHInput.value); var LL = squareToLatLong(homeQTHInput.value);
g_map g_map
.getView() .getView()
@ -8693,7 +8693,7 @@ function showDXCCsBox()
var ListNotWorked = {}; var ListNotWorked = {};
for (var key in g_worldGeoData) for (var key in g_worldGeoData)
{ {
if (key != -1) if (key != -1 && Number(g_worldGeoData[key].dxcc) > 0)
{ {
if (g_worldGeoData[key].worked == true) if (g_worldGeoData[key].worked == true)
{ {
@ -9680,16 +9680,19 @@ function renderStatsBox()
} }
} }
if (!(g_dxccToAltName[finalDxcc] in worldGeoData)) { worldGeoData[g_dxccToAltName[finalDxcc]] = newStatObject(); } if (finalDxcc > 0)
{
if (!(g_dxccToAltName[finalDxcc] in worldGeoData)) { worldGeoData[g_dxccToAltName[finalDxcc]] = newStatObject(); }
workObject( workObject(
worldGeoData[g_dxccToAltName[finalDxcc]], worldGeoData[g_dxccToAltName[finalDxcc]],
false, false,
band, band,
mode, mode,
type, type,
didConfirm didConfirm
); );
}
if (finalGrid.length > 0) if (finalGrid.length > 0)
{ {
@ -13003,7 +13006,7 @@ function changeMapValues()
function setLegendColor(name, newColor) function setLegendColor(name, newColor)
{ {
let legendBox = document.getElementById("LegendDiv" + name); var legendBox = document.getElementById("LegendDiv" + name);
legendBox.style.backgroundColor = newColor; legendBox.style.backgroundColor = newColor;
legendBox.style.color = pickTextColorBasedOnBgColorAdvanced(newColor, "#EEEEEE", "#222222"); legendBox.style.color = pickTextColorBasedOnBgColorAdvanced(newColor, "#EEEEEE", "#222222");
} }
@ -13015,7 +13018,7 @@ function setLegendGrid(name, newColor)
function setLegendAndGridSettings() function setLegendAndGridSettings()
{ {
for (let key in g_legendColors) for (var key in g_legendColors)
{ {
setLegendColor(key, g_legendColors[key]); setLegendColor(key, g_legendColors[key]);
setLegendGrid(key, g_legendColors[key]); setLegendGrid(key, g_legendColors[key]);
@ -13024,7 +13027,7 @@ function setLegendAndGridSettings()
function resetLegendColors() function resetLegendColors()
{ {
for (let key in def_legendColors) for (var key in def_legendColors)
{ {
g_legendColors[key] = def_legendColors[key]; g_legendColors[key] = def_legendColors[key];
} }
@ -13037,9 +13040,9 @@ function resetLegendColors()
var g_redrawFromLegendTimeoutHandle = null; var g_redrawFromLegendTimeoutHandle = null;
function changeLegendColor(source) function changeLegendColor(source)
{ {
let newColor = source.value; var newColor = source.value;
let name = source.id.replace("gridValue", ""); var name = source.id.replace("gridValue", "");
setLegendColor(name, newColor); setLegendColor(name, newColor);
g_legendColors[name] = newColor; g_legendColors[name] = newColor;
@ -15052,7 +15055,7 @@ function cacheLookupObject(lookup, gridPass, cacheable = false)
if (lookup.hasOwnProperty("state") && lookup.hasOwnProperty("county")) if (lookup.hasOwnProperty("state") && lookup.hasOwnProperty("county"))
{ {
let foundCounty = false; var foundCounty = false;
if (lookup.cnty == null) if (lookup.cnty == null)
{ {
@ -15280,7 +15283,7 @@ function displayLookupObject(lookup, gridPass, fromCache = false)
distanceUnit.value distanceUnit.value
) * MyCircle.validateRadius(distanceUnit.value) ) * MyCircle.validateRadius(distanceUnit.value)
) + distanceUnit.value.toLowerCase() + "</td></tr>"; ) + distanceUnit.value.toLowerCase() + "</td></tr>";
let bearing = parseInt(MyCircle.bearing(g_myLat, g_myLon, Number(lookup.lat), Number(lookup.lon))); var bearing = parseInt(MyCircle.bearing(g_myLat, g_myLon, Number(lookup.lat), Number(lookup.lon)));
worker += "<tr><td>Azimuth</td><td style='color:yellow'>" + bearing + "&deg;</td></tr>"; worker += "<tr><td>Azimuth</td><td style='color:yellow'>" + bearing + "&deg;</td></tr>";
} }
worker += makeRow("Grid", lookup, "grid", true); worker += makeRow("Grid", lookup, "grid", true);
@ -16036,10 +16039,10 @@ function addNewOAMSSpot(cid, db, frequency, band, mode)
g_oamsSpotTimeout = null; g_oamsSpotTimeout = null;
} }
let report; var report;
let call = g_gtFlagPins[cid].call; var call = g_gtFlagPins[cid].call;
let grid = g_gtFlagPins[cid].grid.substr(0, 6); var grid = g_gtFlagPins[cid].grid.substr(0, 6);
let hash = call + mode + band + grid.substr(0, 4); var hash = call + mode + band + grid.substr(0, 4);
if (hash in g_receptionReports.spots) if (hash in g_receptionReports.spots)
{ {
@ -16059,7 +16062,7 @@ function addNewOAMSSpot(cid, db, frequency, band, mode)
report.snr = Number(db); report.snr = Number(db);
report.freq = frequency; report.freq = frequency;
let SNR = parseInt((parseInt(report.snr) + 25) * 9); var SNR = parseInt((parseInt(report.snr) + 25) * 9);
if (SNR > 255) SNR = 255; if (SNR > 255) SNR = 255;
if (SNR < 0) SNR = 0; if (SNR < 0) SNR = 0;
report.color = SNR; report.color = SNR;
@ -16173,25 +16176,25 @@ function createSpot(report, key, fromPoint, addToLayer = true)
function redrawSpots() function redrawSpots()
{ {
let shouldSave = false; var shouldSave = false;
let now = timeNowSec(); var now = timeNowSec();
g_spotTotalCount = 0; g_spotTotalCount = 0;
g_layerSources["psk-spots"].clear(); g_layerSources["psk-spots"].clear();
g_layerSources["psk-flights"].clear(); g_layerSources["psk-flights"].clear();
g_layerSources["psk-hop"].clear(); g_layerSources["psk-hop"].clear();
g_layerSources["psk-heat"].clear(); g_layerSources["psk-heat"].clear();
let fromPoint = getPoint(myRawGrid); var fromPoint = getPoint(myRawGrid);
if (g_receptionSettings.mergeSpots == false) if (g_receptionSettings.mergeSpots == false)
{ {
let spot = iconFeature(fromPoint, g_gtFlagIcon, 100); var spot = iconFeature(fromPoint, g_gtFlagIcon, 100);
g_layerSources["psk-spots"].addFeature(spot); g_layerSources["psk-spots"].addFeature(spot);
g_layerSources["psk-heat"].addFeature(spot); g_layerSources["psk-heat"].addFeature(spot);
} }
for (let key in g_receptionReports.spots) for (var key in g_receptionReports.spots)
{ {
report = g_receptionReports.spots[key]; report = g_receptionReports.spots[key];