kopia lustrzana https://gitlab.com/gridtracker.org/gridtracker
Merge branch 'mh-root-extended' into 'master'
Mh root extended See merge request gridtracker.org/gridtracker!226 If this is changing anything in the UI or operational behavior, please prepare to update the wiki!merge-requests/227/merge v1.22.1008
commit
b82c1a432d
|
@ -1,4 +1,4 @@
|
|||
gridtracker (1.22.1007) unstable; urgency=low
|
||||
gridtracker (1.22.1008) unstable; urgency=low
|
||||
- Fix missing callsigns in mh-root when importing BIGCTY
|
||||
|
||||
-- Matthew Chambers <nr0q@gridtracker.org> Fri, 07 Oct 2022 17:19:00 -0000
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
Name: {{{ git_name name=gridtracker }}}
|
||||
Summary: GridTracker: An amateur radio companion to WSJT-X or JTDX
|
||||
Version: {{{ git_version lead=1.22.1007 }}}
|
||||
Version: {{{ git_version lead=1.22.1008 }}}
|
||||
Release: 1%{?dist}
|
||||
BuildArch: noarch
|
||||
Source0: {{{ git_dir_pack }}}
|
||||
|
@ -40,7 +40,7 @@ DESTDIR=${RPM_BUILD_ROOT} make clean
|
|||
%license %{_docdir}/%{name}/
|
||||
|
||||
%changelog
|
||||
* Fri Oct 07 2022 Matthew Chambers <nr0q@gridtracker.org> - 1.22.1007-1
|
||||
* Sat Oct 08 2022 Matthew Chambers <nr0q@gridtracker.org> - 1.22.1008-1
|
||||
- Fix missing callsigns in mh-root when importing BIGCTY
|
||||
* Fri Oct 07 2022 Matthew Chambers <nr0q@gridtracker.org> - 1.22.1006-1
|
||||
- Main App:
|
||||
|
|
Plik diff jest za duży
Load Diff
Plik binarny nie jest wyświetlany.
Plik binarny nie jest wyświetlany.
|
@ -1253,44 +1253,22 @@ function alertCheckDXCC(key, callObj)
|
|||
|
||||
function alertCheckCQz(key, callObj)
|
||||
{
|
||||
var workedTotal = (confirmedTotal = callObj.cqza.length);
|
||||
if (workedTotal == 0) return 0;
|
||||
|
||||
var workedFound = (confirmedFound = 0);
|
||||
for (index in callObj.cqza)
|
||||
{
|
||||
var hash = callObj.cqza[index] + "|" + hashMaker(callObj.band, callObj.mode);
|
||||
if (hash in g_tracker.worked.cqz) workedFound++;
|
||||
|
||||
if (hash in g_tracker.confirmed.cqz) confirmedFound++;
|
||||
}
|
||||
|
||||
var status = document.getElementById(key + "Need").value;
|
||||
if (status == "worked" && workedFound == workedTotal) return 0;
|
||||
|
||||
if (status == "worked" && callObj.cqz + "|" + hashMaker(callObj.band, callObj.mode) in g_tracker.worked.cqz) return 0;
|
||||
|
||||
if (status == "confirmed" && confirmedFound == confirmedTotal) return 0;
|
||||
if (status == "confirmed" && callObj.cqz + "|" + hashMaker(callObj.band, callObj.mode) in g_tracker.confirmed.cqz) return 0;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
function alertCheckITUz(key, callObj)
|
||||
{
|
||||
var workedTotal = (confirmedTotal = callObj.ituza.length);
|
||||
if (workedTotal == 0) return 0;
|
||||
|
||||
var workedFound = (confirmedFound = 0);
|
||||
for (index in callObj.ituza)
|
||||
{
|
||||
var hash = callObj.ituza[index] + "|" + hashMaker(callObj.band, callObj.mode);
|
||||
if (hash in g_tracker.worked.ituz) workedFound++;
|
||||
|
||||
if (hash in g_tracker.confirmed.ituz) confirmedFound++;
|
||||
}
|
||||
|
||||
var status = document.getElementById(key + "Need").value;
|
||||
if (status == "worked" && workedFound == workedTotal) return 0;
|
||||
|
||||
if (status == "confirmed" && confirmedFound == confirmedTotal) return 0;
|
||||
if (status == "worked" && callObj.ituz + "|" + hashMaker(callObj.band, callObj.mode) in g_tracker.worked.ituz) return 0;
|
||||
|
||||
if (status == "confirmed" && callObj.ituz + "|" + hashMaker(callObj.band, callObj.mode) in g_tracker.confirmed.ituz) return 0;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
|
|
@ -829,7 +829,7 @@ function downloadCtyDat()
|
|||
{
|
||||
ctyDatStatus.innerHTML = "<b><i>Downloading...</i></b>";
|
||||
getBuffer(
|
||||
"https://storage.googleapis.com/gt_app/ctydat.json",
|
||||
"https://storage.googleapis.com/gt_app/ctydat.json?cb=" + Date.now(),
|
||||
processCtyDat,
|
||||
null,
|
||||
"https",
|
||||
|
@ -851,42 +851,103 @@ function processCtyDat(buffer)
|
|||
var worldGeoData = JSON.parse(fileBuf);
|
||||
for (const key in worldGeoData)
|
||||
{
|
||||
worldGeoData[key].ituzone = null;
|
||||
worldGeoData[key].cqzone = null;
|
||||
worldGeoData[key].prefixITU = {};
|
||||
worldGeoData[key].prefixCQ = {};
|
||||
worldGeoData[key].directITU = {};
|
||||
worldGeoData[key].directCQ = {};
|
||||
|
||||
if (worldGeoData[key].dxcc in ctydata)
|
||||
{
|
||||
worldGeoData[key].cqzone = Number(ctydata[worldGeoData[key].dxcc].cqzone).pad(2);
|
||||
worldGeoData[key].ituzone = Number(ctydata[worldGeoData[key].dxcc].ituzone).pad(2);
|
||||
|
||||
// Skip Guantanamo Bay, hand crafted with love
|
||||
if (worldGeoData[key].dxcc != "105")
|
||||
{
|
||||
worldGeoData[key].prefix = [];
|
||||
|
||||
worldGeoData[key].direct = [];
|
||||
|
||||
var arr = ctydata[worldGeoData[key].dxcc].prefix.substr(0, ctydata[worldGeoData[key].dxcc].prefix.length - 1).split(" ");
|
||||
for (const x in arr)
|
||||
{
|
||||
var test = arr[x];
|
||||
var i = arr[x].indexOf("(");
|
||||
var direct = false;
|
||||
var cq = null;
|
||||
var itu = null;
|
||||
|
||||
if (test.charAt(0) == "=")
|
||||
{
|
||||
direct = true;
|
||||
test = test.substr(1);
|
||||
}
|
||||
var cqTest = test.match(/\((.*)\)/);
|
||||
if (cqTest)
|
||||
{
|
||||
cq = Number(cqTest[1]).pad(2);
|
||||
}
|
||||
var ituTest = test.match(/\[(.*)\]/);
|
||||
if (ituTest)
|
||||
{
|
||||
itu = Number(ituTest[1]).pad(2);
|
||||
}
|
||||
|
||||
var i = test.indexOf("(");
|
||||
if (i > -1)
|
||||
{
|
||||
test = test.substr(0, i);
|
||||
}
|
||||
i = arr[x].indexOf("[");
|
||||
i = test.indexOf("[");
|
||||
if (i > -1)
|
||||
{
|
||||
test = test.substr(0, i);
|
||||
}
|
||||
i = arr[x].indexOf("<");
|
||||
i = test.indexOf("<");
|
||||
if (i > -1)
|
||||
{
|
||||
test = test.substr(0, i);
|
||||
}
|
||||
i = arr[x].indexOf("{");
|
||||
i = test.indexOf("{");
|
||||
if (i > -1)
|
||||
{
|
||||
test = test.substr(0, i);
|
||||
}
|
||||
|
||||
worldGeoData[key].prefix.push(test);
|
||||
i = test.indexOf("~");
|
||||
if (i > -1)
|
||||
{
|
||||
test = test.substr(0, i);
|
||||
}
|
||||
|
||||
if (direct)
|
||||
{
|
||||
worldGeoData[key].direct.push(test);
|
||||
if (cq)
|
||||
{
|
||||
worldGeoData[key].directCQ[test] = cq;
|
||||
}
|
||||
if (itu)
|
||||
{
|
||||
worldGeoData[key].directITU[test] = itu;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
worldGeoData[key].prefix.push(test);
|
||||
if (cq)
|
||||
{
|
||||
worldGeoData[key].prefixCQ[test] = cq;
|
||||
}
|
||||
if (itu)
|
||||
{
|
||||
worldGeoData[key].prefixITU[test] = itu;
|
||||
}
|
||||
}
|
||||
}
|
||||
worldGeoData[key].prefix = uniqueArrayFromArray(worldGeoData[key].prefix);
|
||||
worldGeoData[key].prefix.sort();
|
||||
worldGeoData[key].direct = uniqueArrayFromArray(worldGeoData[key].direct);
|
||||
worldGeoData[key].direct.sort();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -438,12 +438,15 @@ var g_workingIniPath = "";
|
|||
var g_worldGeoData = {};
|
||||
var g_prefixToMap = {};
|
||||
var g_directCallToDXCC = {};
|
||||
var g_directCallToCQzone = {};
|
||||
var g_directCallToITUzone = {};
|
||||
var g_prefixToCQzone = {};
|
||||
var g_prefixToITUzone = {};
|
||||
var g_dxccToAltName = {};
|
||||
var g_dxccToADIFName = {};
|
||||
var g_dxccToGeoData = {};
|
||||
var g_gridToDXCC = {};
|
||||
var g_gridToCQZone = {};
|
||||
var g_gridToITUZone = {};
|
||||
|
||||
var g_gridToState = {};
|
||||
var g_StateData = {};
|
||||
var g_cqZones = {};
|
||||
|
@ -1221,15 +1224,11 @@ function addDeDx(
|
|||
g_tracker.worked.grid[fourGrid + band + "dg"] = true;
|
||||
}
|
||||
}
|
||||
if (
|
||||
details.ituz.length == 0 &&
|
||||
fourGrid in g_gridToITUZone &&
|
||||
g_gridToITUZone[fourGrid].length == 1
|
||||
)
|
||||
if (!details.ituz || details.ituz.length == 0)
|
||||
{
|
||||
details.ituz = g_gridToITUZone[fourGrid][0];
|
||||
details.ituz = ituZoneFromCallsign(finalDXcall, details.dxcc);
|
||||
}
|
||||
if (details.ituz.length > 0)
|
||||
if (details.ituz)
|
||||
{
|
||||
g_tracker.worked.ituz[details.ituz + "|" + band + mode] = true;
|
||||
g_tracker.worked.ituz[details.ituz + "|"] = true;
|
||||
|
@ -1241,15 +1240,13 @@ function addDeDx(
|
|||
g_tracker.worked.ituz[details.ituz + "|" + band + "dg"] = true;
|
||||
}
|
||||
}
|
||||
if (
|
||||
details.cqz.length == 0 &&
|
||||
fourGrid in g_gridToCQZone &&
|
||||
g_gridToCQZone[fourGrid].length == 1
|
||||
)
|
||||
|
||||
if (!details.cqz || details.cqz.length == 0)
|
||||
{
|
||||
details.cqz = g_gridToCQZone[fourGrid][0];
|
||||
details.cqz = cqZoneFromCallsign(finalDXcall, details.dxcc);
|
||||
}
|
||||
if (details.cqz.length > 0)
|
||||
|
||||
if (details.cqz)
|
||||
{
|
||||
g_tracker.worked.cqz[details.cqz + "|" + band + mode] = true;
|
||||
g_tracker.worked.cqz[details.cqz + "|"] = true;
|
||||
|
@ -7096,13 +7093,12 @@ function handleWsjtxDecode(newMessage)
|
|||
);
|
||||
}
|
||||
|
||||
newCallsign.cont =
|
||||
g_worldGeoData[g_dxccToGeoData[newCallsign.dxcc]].continent;
|
||||
newCallsign.cont = g_worldGeoData[g_dxccToGeoData[newCallsign.dxcc]].continent;
|
||||
if (newCallsign.dxcc == 390 && newCallsign.zone == 1) { details.cont = "EU"; }
|
||||
}
|
||||
|
||||
newCallsign.ituza = Array();
|
||||
newCallsign.cqza = Array();
|
||||
newCallsign.ituz = ituZoneFromCallsign(newCallsign.DEcall, newCallsign.dxcc);
|
||||
newCallsign.cqz = cqZoneFromCallsign(newCallsign.DEcall, newCallsign.dxcc);
|
||||
newCallsign.distance = 0;
|
||||
newCallsign.heading = 0;
|
||||
|
||||
|
@ -7198,15 +7194,6 @@ function handleWsjtxDecode(newMessage)
|
|||
LL.la2 - (LL.la2 - LL.la1) / 2,
|
||||
LL.lo2 - (LL.lo2 - LL.lo1) / 2
|
||||
);
|
||||
|
||||
if (callsign.grid in g_gridToITUZone)
|
||||
{
|
||||
callsign.ituza = g_gridToITUZone[callsign.grid];
|
||||
}
|
||||
if (callsign.grid in g_gridToCQZone)
|
||||
{
|
||||
callsign.cqza = g_gridToCQZone[callsign.grid];
|
||||
}
|
||||
}
|
||||
|
||||
if (g_appSettings.potaEnabled == 1)
|
||||
|
@ -7847,10 +7834,8 @@ function showCallsignBox(redraw)
|
|||
{
|
||||
if (newCallList[x].DEcall == myRawCall) continue;
|
||||
var grid = newCallList[x].rect ? newCallList[x].rect.qth : "-";
|
||||
var cqzone =
|
||||
grid in g_gridToCQZone ? g_gridToCQZone[grid].join(", ") : "-";
|
||||
var ituzone =
|
||||
grid in g_gridToITUZone ? g_gridToITUZone[grid].join(", ") : "-";
|
||||
var cqzone = newCallList[x].cqz ? newCallList[x].cqz : "-";
|
||||
var ituzone = newCallList[x].ituz ? newCallList[x].ituz : "-";
|
||||
var geo = g_worldGeoData[g_dxccToGeoData[newCallList[x].dxcc]];
|
||||
var thisCall = newCallList[x].DEcall.formatCallsign();
|
||||
worker +=
|
||||
|
@ -9696,51 +9681,25 @@ function renderStatsBox()
|
|||
);
|
||||
}
|
||||
|
||||
if (cqz.length > 0)
|
||||
{
|
||||
var name = g_cqZones[cqz].name;
|
||||
if (!(name in cqZones)) cqZones[name] = newStatObject();
|
||||
|
||||
workObject(cqZones[name], false, band, mode, type, didConfirm);
|
||||
}
|
||||
|
||||
if (ituz.length > 0)
|
||||
{
|
||||
if (!(ituz in ituZones)) ituZones[ituz] = newStatObject();
|
||||
|
||||
workObject(ituZones[ituz], false, band, mode, type, didConfirm);
|
||||
}
|
||||
|
||||
if (finalGrid.length > 0)
|
||||
{
|
||||
var gridCheck = finalGrid.substr(0, 4);
|
||||
|
||||
if (cqz.length > 0)
|
||||
{
|
||||
var name = g_cqZones[cqz].name;
|
||||
if (!(name in cqZones)) cqZones[name] = newStatObject();
|
||||
|
||||
workObject(cqZones[name], false, band, mode, type, didConfirm);
|
||||
}
|
||||
else if (gridCheck in g_gridToCQZone)
|
||||
{
|
||||
if (g_gridToCQZone[gridCheck].length == 1)
|
||||
{
|
||||
var name = g_cqZones[g_gridToCQZone[gridCheck][0]].name;
|
||||
if (!(name in cqZones)) cqZones[name] = newStatObject();
|
||||
|
||||
workObject(cqZones[name], false, band, mode, type, didConfirm);
|
||||
}
|
||||
}
|
||||
|
||||
if (ituz.length > 0)
|
||||
{
|
||||
if (!(ituz in ituZones)) ituZones[ituz] = newStatObject();
|
||||
|
||||
workObject(ituZones[ituz], false, band, mode, type, didConfirm);
|
||||
}
|
||||
else if (gridCheck in g_gridToITUZone)
|
||||
{
|
||||
if (g_gridToITUZone[gridCheck].length == 1)
|
||||
{
|
||||
if (!(g_gridToITUZone[gridCheck][0] in ituZones)) { ituZones[g_gridToITUZone[gridCheck][0]] = newStatObject(); }
|
||||
|
||||
workObject(
|
||||
ituZones[g_gridToITUZone[gridCheck][0]],
|
||||
false,
|
||||
band,
|
||||
mode,
|
||||
type,
|
||||
didConfirm
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (!(gridCheck in gridData)) gridData[gridCheck] = newStatObject();
|
||||
|
||||
workObject(gridData[gridCheck], false, band, mode, type, didConfirm);
|
||||
|
@ -10676,41 +10635,7 @@ function redrawGrids()
|
|||
~~g_cqZones[cqz].confirmed_modes[mode] + 1;
|
||||
}
|
||||
}
|
||||
else if (gridCheck in g_gridToCQZone)
|
||||
{
|
||||
if (g_gridToCQZone[gridCheck].length == 1)
|
||||
{
|
||||
if (g_cqZones[g_gridToCQZone[gridCheck][0]].worked == false)
|
||||
{
|
||||
g_cqZones[g_gridToCQZone[gridCheck][0]].worked = worked;
|
||||
}
|
||||
if (worked)
|
||||
{
|
||||
g_cqZones[g_gridToCQZone[gridCheck][0]].worked_bands[band] =
|
||||
~~g_cqZones[g_gridToCQZone[gridCheck][0]].worked_bands[band] +
|
||||
1;
|
||||
g_cqZones[g_gridToCQZone[gridCheck][0]].worked_modes[mode] =
|
||||
~~g_cqZones[g_gridToCQZone[gridCheck][0]].worked_modes[mode] +
|
||||
1;
|
||||
}
|
||||
if (g_cqZones[g_gridToCQZone[gridCheck][0]].confirmed == false)
|
||||
{
|
||||
g_cqZones[g_gridToCQZone[gridCheck][0]].confirmed = didConfirm;
|
||||
}
|
||||
if (didConfirm)
|
||||
{
|
||||
g_cqZones[g_gridToCQZone[gridCheck][0]].confirmed_bands[band] =
|
||||
~~g_cqZones[g_gridToCQZone[gridCheck][0]].confirmed_bands[
|
||||
band
|
||||
] + 1;
|
||||
g_cqZones[g_gridToCQZone[gridCheck][0]].confirmed_modes[mode] =
|
||||
~~g_cqZones[g_gridToCQZone[gridCheck][0]].confirmed_modes[
|
||||
mode
|
||||
] + 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (ituz.length > 0)
|
||||
{
|
||||
if (g_ituZones[ituz].worked == false)
|
||||
|
@ -10736,40 +10661,6 @@ function redrawGrids()
|
|||
~~g_ituZones[ituz].confirmed_modes[mode] + 1;
|
||||
}
|
||||
}
|
||||
else if (gridCheck in g_gridToITUZone)
|
||||
{
|
||||
if (g_gridToITUZone[gridCheck].length == 1)
|
||||
{
|
||||
if (g_ituZones[g_gridToITUZone[gridCheck][0]].worked == false)
|
||||
{
|
||||
g_ituZones[g_gridToITUZone[gridCheck][0]].worked = worked;
|
||||
}
|
||||
if (worked)
|
||||
{
|
||||
g_ituZones[g_gridToITUZone[gridCheck][0]].worked_bands[band] =
|
||||
~~g_ituZones[g_gridToITUZone[gridCheck][0]].worked_bands[band] +
|
||||
1;
|
||||
g_ituZones[g_gridToITUZone[gridCheck][0]].worked_modes[mode] =
|
||||
~~g_ituZones[g_gridToITUZone[gridCheck][0]].worked_modes[mode] +
|
||||
1;
|
||||
}
|
||||
if (g_ituZones[g_gridToITUZone[gridCheck][0]].confirmed == false)
|
||||
{
|
||||
g_ituZones[g_gridToITUZone[gridCheck][0]].confirmed = didConfirm;
|
||||
}
|
||||
if (didConfirm)
|
||||
{
|
||||
g_ituZones[g_gridToITUZone[gridCheck][0]].confirmed_bands[band] =
|
||||
~~g_ituZones[g_gridToITUZone[gridCheck][0]].confirmed_bands[
|
||||
band
|
||||
] + 1;
|
||||
g_ituZones[g_gridToITUZone[gridCheck][0]].confirmed_modes[mode] =
|
||||
~~g_ituZones[g_gridToITUZone[gridCheck][0]].confirmed_modes[
|
||||
mode
|
||||
] + 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (var key in g_QSOhash[i].vucc_grids)
|
||||
|
@ -12047,6 +11938,60 @@ function callsignToDxcc(insign)
|
|||
return -1;
|
||||
}
|
||||
|
||||
function cqZoneFromCallsign(insign, dxcc)
|
||||
{
|
||||
var callsign = insign;
|
||||
|
||||
if (!/\d/.test(callsign) || !/[a-zA-Z]/.test(callsign))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
if (callsign in g_directCallToCQzone) { return g_directCallToCQzone[callsign]; }
|
||||
|
||||
for (var x = callsign.length; x > 0; x--)
|
||||
{
|
||||
if (callsign.substr(0, x) in g_prefixToCQzone)
|
||||
{
|
||||
return g_prefixToCQzone[callsign.substr(0, x)];
|
||||
}
|
||||
}
|
||||
|
||||
if (dxcc > 0)
|
||||
{
|
||||
return g_worldGeoData[g_dxccToGeoData[dxcc]].cqzone;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
function ituZoneFromCallsign(insign, dxcc)
|
||||
{
|
||||
var callsign = insign;
|
||||
|
||||
if (!/\d/.test(callsign) || !/[a-zA-Z]/.test(callsign))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
if (callsign in g_directCallToITUzone) { return g_directCallToITUzone[callsign]; }
|
||||
|
||||
for (var x = callsign.length; x > 0; x--)
|
||||
{
|
||||
if (callsign.substr(0, x) in g_prefixToITUzone)
|
||||
{
|
||||
return g_prefixToITUzone[callsign.substr(0, x)];
|
||||
}
|
||||
}
|
||||
|
||||
if (dxcc > 0)
|
||||
{
|
||||
return g_worldGeoData[g_dxccToGeoData[dxcc]].ituzone;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
function loadMaidenHeadData()
|
||||
{
|
||||
var file = "./data/mh-root-prefixed.json";
|
||||
|
@ -12068,14 +12013,40 @@ function loadMaidenHeadData()
|
|||
|
||||
for (var x = 0; x < g_worldGeoData[key].prefix.length; x++)
|
||||
{
|
||||
if (g_worldGeoData[key].prefix[x].charAt(0) == "=")
|
||||
{
|
||||
g_directCallToDXCC[g_worldGeoData[key].prefix[x].substr(1)] =
|
||||
g_worldGeoData[key].dxcc;
|
||||
}
|
||||
else g_prefixToMap[g_worldGeoData[key].prefix[x]] = key;
|
||||
g_prefixToMap[g_worldGeoData[key].prefix[x]] = key;
|
||||
}
|
||||
delete g_worldGeoData[key].prefix;
|
||||
|
||||
for (var x = 0; x < g_worldGeoData[key].direct.length; x++)
|
||||
{
|
||||
g_directCallToDXCC[g_worldGeoData[key].direct[x]] = g_worldGeoData[key].dxcc;
|
||||
}
|
||||
delete g_worldGeoData[key].direct;
|
||||
|
||||
for (var val in g_worldGeoData[key].prefixCQ)
|
||||
{
|
||||
g_prefixToCQzone[val] = g_worldGeoData[key].prefixCQ[val];
|
||||
}
|
||||
delete g_worldGeoData[key].prefixCQ;
|
||||
|
||||
for (var val in g_worldGeoData[key].prefixITU)
|
||||
{
|
||||
g_prefixToITUzone[val] = g_worldGeoData[key].prefixITU[val];
|
||||
}
|
||||
delete g_worldGeoData[key].prefixITU;
|
||||
|
||||
for (var val in g_worldGeoData[key].directCQ)
|
||||
{
|
||||
g_directCallToCQzone[val] = g_worldGeoData[key].directCQ[val];
|
||||
}
|
||||
delete g_worldGeoData[key].directCQ;
|
||||
|
||||
for (var val in g_worldGeoData[key].directITU)
|
||||
{
|
||||
g_directCallToITUzone[val] = g_worldGeoData[key].directITU[val];
|
||||
}
|
||||
delete g_worldGeoData[key].directITU;
|
||||
|
||||
for (var x = 0; x < g_worldGeoData[key].mh.length; x++)
|
||||
{
|
||||
if (!(g_worldGeoData[key].mh[x] in g_gridToDXCC)) { g_gridToDXCC[g_worldGeoData[key].mh[x]] = Array(); }
|
||||
|
@ -12270,11 +12241,6 @@ function loadMaidenHeadData()
|
|||
|
||||
for (var key in g_cqZones)
|
||||
{
|
||||
for (var x = 0; x < g_cqZones[key].mh.length; x++)
|
||||
{
|
||||
if (!(g_cqZones[key].mh[x] in g_gridToCQZone)) { g_gridToCQZone[g_cqZones[key].mh[x]] = Array(); }
|
||||
g_gridToCQZone[g_cqZones[key].mh[x]].push(String(key));
|
||||
}
|
||||
delete g_cqZones[key].mh;
|
||||
}
|
||||
|
||||
|
@ -12283,11 +12249,6 @@ function loadMaidenHeadData()
|
|||
|
||||
for (var key in g_ituZones)
|
||||
{
|
||||
for (var x = 0; x < g_ituZones[key].mh.length; x++)
|
||||
{
|
||||
if (!(g_ituZones[key].mh[x] in g_gridToITUZone)) { g_gridToITUZone[g_ituZones[key].mh[x]] = Array(); }
|
||||
g_gridToITUZone[g_ituZones[key].mh[x]].push(String(key));
|
||||
}
|
||||
delete g_ituZones[key].mh;
|
||||
}
|
||||
|
||||
|
|
|
@ -1891,7 +1891,7 @@ function init()
|
|||
label: "Ignore CQ Zone",
|
||||
click: function ()
|
||||
{
|
||||
g_blockedCQz[callRoster[g_targetCQz].callObj.cqza] = true;
|
||||
g_blockedCQz[callRoster[g_targetCQz].callObj.cqz] = true;
|
||||
storeBlocks();
|
||||
window.opener.goProcessRoster();
|
||||
}
|
||||
|
@ -1945,7 +1945,7 @@ function init()
|
|||
label: "Ignore ITU Zone",
|
||||
click: function ()
|
||||
{
|
||||
g_blockedITUz[callRoster[g_targetITUz].callObj.ituza] = true;
|
||||
g_blockedITUz[callRoster[g_targetITUz].callObj.ituz] = true;
|
||||
storeBlocks();
|
||||
window.opener.goProcessRoster();
|
||||
}
|
||||
|
@ -2259,7 +2259,7 @@ function handleContextMenu(ev)
|
|||
g_targetITUz = ev.target.parentNode.id;
|
||||
g_ITUzMenu.popup(mouseX, mouseY);
|
||||
}
|
||||
else if (name.startsWith("DXCC"))
|
||||
else if (name && name.startsWith("DXCC"))
|
||||
{
|
||||
let dxcca = name.split("(");
|
||||
let dxcc = parseInt(dxcca[1]);
|
||||
|
@ -3151,14 +3151,9 @@ function scoreAcqz(award, obj)
|
|||
|
||||
function testAcqz(award, obj, baseHash)
|
||||
{
|
||||
if (obj.cqza)
|
||||
if (obj.cqz)
|
||||
{
|
||||
let x = 0;
|
||||
for (const z in obj.cqza)
|
||||
{
|
||||
if (obj.cqza[z] + "|" + baseHash in g_tracker[award.test.look].cqz) x++;
|
||||
}
|
||||
if (obj.cqza.length == x) return false;
|
||||
if (obj.cqz + "|" + baseHash in g_tracker[award.test.look].cqz) return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -45,12 +45,12 @@ function processRosterFiltering(callRoster, rosterSettings)
|
|||
entry.tx = false;
|
||||
continue;
|
||||
}
|
||||
if (callObj.ituza in g_blockedITUz)
|
||||
if (callObj.ituz in g_blockedITUz)
|
||||
{
|
||||
entry.tx = false;
|
||||
continue;
|
||||
}
|
||||
if (callObj.cqza in g_blockedCQz)
|
||||
if (callObj.cqz in g_blockedCQz)
|
||||
{
|
||||
entry.tx = false;
|
||||
continue;
|
||||
|
@ -274,53 +274,39 @@ function processRosterFiltering(callRoster, rosterSettings)
|
|||
|
||||
if (g_rosterSettings.hunting == "cq")
|
||||
{
|
||||
let huntTotal = callObj.cqza.length;
|
||||
if (huntTotal == 0 || !rosterSettings.huntIndex)
|
||||
if (callObj.cqz == null || !rosterSettings.huntIndex)
|
||||
{
|
||||
entry.tx = false;
|
||||
continue;
|
||||
}
|
||||
let huntFound = 0;
|
||||
for (index in callObj.cqza)
|
||||
{
|
||||
let hash = hashMaker(callObj.cqza[index] + "|", callObj, g_rosterSettings.reference);
|
||||
|
||||
if (hash in rosterSettings.huntIndex.cqz) huntFound++;
|
||||
}
|
||||
if (huntFound == huntTotal)
|
||||
let hash = hashMaker(callObj.cqz + "|", callObj, g_rosterSettings.reference);
|
||||
|
||||
if (hash in rosterSettings.huntIndex.cqz)
|
||||
{
|
||||
entry.tx = false;
|
||||
continue;
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
if (g_rosterSettings.hunting == "itu")
|
||||
{
|
||||
let huntTotal = callObj.ituza.length;
|
||||
if (huntTotal == 0 || !rosterSettings.huntIndex)
|
||||
{
|
||||
entry.tx = false;
|
||||
continue;
|
||||
}
|
||||
let huntFound = 0;
|
||||
for (index in callObj.ituza)
|
||||
{
|
||||
let hash = hashMaker(callObj.ituza[index] + "|", callObj, g_rosterSettings.reference);
|
||||
|
||||
if (hash in rosterSettings.huntIndex.ituz) huntFound++;
|
||||
}
|
||||
if (huntFound == huntTotal)
|
||||
if (callObj.ituz == null || !rosterSettings.huntIndex)
|
||||
{
|
||||
entry.tx = false;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (callObj.grid.length == 0)
|
||||
let hash = hashMaker(callObj.ituz + "|", callObj, g_rosterSettings.reference);
|
||||
|
||||
if (hash in rosterSettings.huntIndex.ituz)
|
||||
{
|
||||
entry.tx = false;
|
||||
continue;
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
|
@ -501,27 +501,24 @@ function processRosterHunting(callRoster, rosterSettings, awardTracker)
|
|||
}
|
||||
|
||||
// Hunting for CQ Zones
|
||||
if (huntCQz.checked)
|
||||
if (huntCQz.checked && callObj.cqz)
|
||||
{
|
||||
let huntTotal = callObj.cqza.length;
|
||||
let huntTotal = 1;
|
||||
let huntFound = 0, layeredFound = 0, workedFound = 0, layeredWorkedFound = 0, marathonFound = 0;
|
||||
let hash = callObj.cqz + "|" + workHashSuffix;
|
||||
let layeredHash = rosterSettings.layeredMode && (callObj.cqz + "|" + layeredHashSuffix);
|
||||
let marathonHash = huntMarathon.checked && `${callObj.cqz}-${currentYear}`;
|
||||
|
||||
for (const index in callObj.cqza)
|
||||
if (rosterSettings.huntIndex && hash in rosterSettings.huntIndex.cqz) huntFound++;
|
||||
if (rosterSettings.layeredMode && layeredHash in rosterSettings.huntIndex.cqz) layeredFound++;
|
||||
if (rosterSettings.workedIndex && hash in rosterSettings.workedIndex.cqz) workedFound++;
|
||||
if (rosterSettings.layeredMode && layeredHash in rosterSettings.workedIndex.cqz) layeredWorkedFound++;
|
||||
if (marathonHash)
|
||||
{
|
||||
let hash = callObj.cqza[index] + "|" + workHashSuffix;
|
||||
let layeredHash = rosterSettings.layeredMode && (callObj.cqza[index] + "|" + layeredHashSuffix);
|
||||
let marathonHash = huntMarathon.checked && `${callObj.cqza[index]}-${currentYear}`;
|
||||
|
||||
if (rosterSettings.huntIndex && hash in rosterSettings.huntIndex.cqz) huntFound++;
|
||||
if (rosterSettings.layeredMode && layeredHash in rosterSettings.huntIndex.cqz) layeredFound++;
|
||||
if (rosterSettings.workedIndex && hash in rosterSettings.workedIndex.cqz) workedFound++;
|
||||
if (rosterSettings.layeredMode && layeredHash in rosterSettings.workedIndex.cqz) layeredWorkedFound++;
|
||||
if (marathonHash)
|
||||
{
|
||||
if (rosterSettings.huntIndex && marathonHash in rosterSettings.huntIndex.cqz) marathonFound++;
|
||||
else if (rosterSettings.workedIndex && marathonHash in rosterSettings.workedIndex.cqz) marathonFound++;
|
||||
}
|
||||
if (rosterSettings.huntIndex && marathonHash in rosterSettings.huntIndex.cqz) marathonFound++;
|
||||
else if (rosterSettings.workedIndex && marathonHash in rosterSettings.workedIndex.cqz) marathonFound++;
|
||||
}
|
||||
|
||||
if (huntFound != huntTotal)
|
||||
{
|
||||
shouldAlert = true;
|
||||
|
@ -583,21 +580,18 @@ function processRosterHunting(callRoster, rosterSettings, awardTracker)
|
|||
}
|
||||
|
||||
// Hunting for ITU Zones
|
||||
if (huntITUz.checked == true)
|
||||
if (huntITUz.checked == true && callObj.ituz)
|
||||
{
|
||||
let huntTotal = callObj.ituza.length;
|
||||
let huntTotal = 1;
|
||||
let huntFound = 0, layeredFound = 0, workedFound = 0, layeredWorkedFound = 0;
|
||||
let hash = callObj.ituz + "|" + workHashSuffix;
|
||||
let layeredHash = rosterSettings.layeredMode && (callObj.ituz + "|" + layeredHashSuffix)
|
||||
|
||||
for (const index in callObj.ituza)
|
||||
{
|
||||
let hash = callObj.ituza[index] + "|" + workHashSuffix;
|
||||
let layeredHash = rosterSettings.layeredMode && (callObj.ituza[index] + "|" + layeredHashSuffix)
|
||||
|
||||
if (rosterSettings.huntIndex && hash in rosterSettings.huntIndex.ituz) huntFound++;
|
||||
if (rosterSettings.layeredMode && layeredHash in rosterSettings.huntIndex.ituz) layeredFound++;
|
||||
if (rosterSettings.workedIndex && hash in rosterSettings.workedIndex.ituz) workedFound++;
|
||||
if (rosterSettings.layeredMode && layeredHash in rosterSettings.workedIndex.ituz) layeredWorkedFound++;
|
||||
}
|
||||
if (rosterSettings.huntIndex && hash in rosterSettings.huntIndex.ituz) huntFound++;
|
||||
if (rosterSettings.layeredMode && layeredHash in rosterSettings.huntIndex.ituz) layeredFound++;
|
||||
if (rosterSettings.workedIndex && hash in rosterSettings.workedIndex.ituz) workedFound++;
|
||||
if (rosterSettings.layeredMode && layeredHash in rosterSettings.workedIndex.ituz) layeredWorkedFound++;
|
||||
|
||||
if (huntFound != huntTotal)
|
||||
{
|
||||
shouldAlert = true;
|
||||
|
|
|
@ -218,7 +218,7 @@ const ROSTER_COLUMNS = {
|
|||
tableData: (callObj) => ({
|
||||
name: "CQz",
|
||||
rawAttrs: callObj.style.cqz,
|
||||
html: [callObj.cqza.join(","), callObj.cqzSuffix].join(" ")
|
||||
html: [callObj.cqz, callObj.cqzSuffix].join(" ")
|
||||
})
|
||||
},
|
||||
|
||||
|
@ -227,7 +227,7 @@ const ROSTER_COLUMNS = {
|
|||
tableData: (callObj) => ({
|
||||
name: "ITUz",
|
||||
rawAttrs: callObj.style.ituz,
|
||||
html: callObj.ituza.join(",")
|
||||
html: callObj.ituz
|
||||
})
|
||||
},
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "GridTracker",
|
||||
"product_string_do_not_use": "gridtracker",
|
||||
"version": "1.22.1007",
|
||||
"version": "1.22.1008",
|
||||
"betaVersion": "",
|
||||
"description": "GridTracker, an amateur radio companion",
|
||||
"author": "GridTracker.org",
|
||||
|
|
Ładowanie…
Reference in New Issue