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