kopia lustrzana https://gitlab.com/gridtracker.org/gridtracker
Merge branch 'canada-plus' into 'master'
Fix log viewer, add canadian provinces See merge request gridtracker.org/gridtracker!307 If this is changing anything in the UI or operational behavior, please prepare to update the wiki!master v1.23.1226
commit
e318242e7a
|
@ -1,3 +1,11 @@
|
|||
gridtracker (1.23.1226) unstable; urgency=low
|
||||
- System - Improved Primary Administrative Area (State) detection
|
||||
- System - Added Canadian and Australian callsign databases
|
||||
- Map - Added 'Worked All Canadian Provinces' award layer (Key 9)
|
||||
- POTA - Map marker updated when park worked
|
||||
- Call Roster - Properly show POTA worked status
|
||||
- Logbook - Filter QSO by grid “Working Grid(s)”
|
||||
-- Tag Loomis <n0ttl@gridtracker.org> Tue, 26 Dec 2023 00:00:00 -0000
|
||||
gridtracker (1.23.1217) unstable; urgency=low
|
||||
- BIGCTY - Update from December 15th
|
||||
- System - Add QSO processing indicator
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
Name: {{{ git_name name=gridtracker }}}
|
||||
Summary: GridTracker: An Amateur Radio Companion
|
||||
Version: 1.23.1217
|
||||
Version: 1.23.1226
|
||||
Release: 1%{?dist}
|
||||
BuildArch: noarch
|
||||
Source0: {{{ git_dir_pack }}}
|
||||
|
@ -40,6 +40,13 @@ DESTDIR=${RPM_BUILD_ROOT} make clean
|
|||
%license %{_docdir}/%{name}/
|
||||
|
||||
%changelog
|
||||
* Tue Dec 26 2023 Tag Loomis <n0ttl@gridtracker.org> - 1.23.1226-1
|
||||
- System - Improved Primary Administrative Area (State) detection
|
||||
- System - Added Canadian and Australian callsign databases
|
||||
- Map - Added 'Worked All Canadian Provinces' award layer (Key 9)
|
||||
- POTA - Map marker updated when park worked
|
||||
- Call Roster - Properly show POTA worked status
|
||||
- Logbook - Filter QSO by grid “Working Grid(s)”
|
||||
* Sun Dec 17 2023 Tag Loomis <n0ttl@gridtracker.org> - 1.23.1217-1
|
||||
- BIGCTY - Update from December 15th
|
||||
- System - Add QSO processing indicator
|
||||
|
|
|
@ -715,7 +715,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||
<div id="printHotKeyDiv" style="border: 1px solid cyan; color: white; text-align: auto">
|
||||
<table align="center" class="darkTable">
|
||||
<tr>
|
||||
<th colspan="6">Hot Key List (v1.20.0825+)</th>
|
||||
<th colspan="6">Hot Key List (v1.23.1220+)</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Key</th>
|
||||
|
@ -791,7 +791,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||
</tr>
|
||||
<tr>
|
||||
<td>9</td>
|
||||
<td align="left">Toggle Timezone Overlay</td>
|
||||
<td align="left">Show CA Provinces Award Layer</td>
|
||||
<td></td>
|
||||
<td>X</td>
|
||||
<td align="left">Toggle Map Position Info</td>
|
||||
|
@ -870,8 +870,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||
<td>Shift-Key</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td align="left"></td>
|
||||
<td>H</td>
|
||||
<td align="left">Toggle Timezone Overlay</td>
|
||||
<td></td>
|
||||
<td>F8</td>
|
||||
<td align="left">Recall Map Position 4</td>
|
||||
|
@ -1374,13 +1374,29 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||
<th data-i18n="settings.lookup.Count.header">Count</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td data-i18n="settings.lookup.db.ULS">United States ULS</td>
|
||||
<td data-i18n="settings.lookup.db.ULS">US Callsigns</td>
|
||||
<td>
|
||||
<input type="checkbox" id="ulsUseEnable" onclick="ulsValuesChanged();" />
|
||||
</td>
|
||||
<td id="ulsUpdatedTd">Never</td>
|
||||
<td id="ulsCountTd">0</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Canada Callsigns</td>
|
||||
<td>
|
||||
<input type="checkbox" id="cacUseEnable" onclick="cacValuesChanged();" />
|
||||
</td>
|
||||
<td id="cacUpdatedTd">Never</td>
|
||||
<td id="cacCountTd">0</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Australia Callsigns</td>
|
||||
<td>
|
||||
<input type="checkbox" id="ausUseEnable" onclick="ausValuesChanged();" />
|
||||
</td>
|
||||
<td id="ausUpdatedTd">Never</td>
|
||||
<td id="ausCountTd">0</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td data-i18n="settings.lookup.db.LoTW">Logbook of The World</td>
|
||||
<td>
|
||||
|
@ -1552,7 +1568,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||
title="Filter Logbook QSOs to include these Callsigns only (comma separated)">
|
||||
<table align="center">
|
||||
<tr>
|
||||
<td data-i18n="settings.logbook.callsigns.label"><b>Working Callsign(s)</b></td>
|
||||
<td data-i18n="settings.logbook.callsigns.label">Working Callsign(s)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
|
@ -1569,8 +1585,38 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||
oninput="if ( ValidateCallsigns(this) ) workingCallsignsChanged(this);" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="qsoCallsignsFound"></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div style="padding: 5px" class="mapItem"
|
||||
title="Filter Logbook QSOs to include these Grids only (comma separated)">
|
||||
<table align="center">
|
||||
<tr>
|
||||
<td>Working Grid(s)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<label for="workingGridEnable">Enable?</label>
|
||||
<input title="Enable Filtering" type="checkbox" id="workingGridEnable"
|
||||
onclick="workingGridEnableChanged(this);" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="workingGridsTd">
|
||||
<label for="workingGridsValue">Grid(s)</label>
|
||||
<input id="workingGridsValue" type="text" class="inputTextValue" size="15"
|
||||
onkeypress="return validGridKeys(event.charCode);"
|
||||
oninput="if ( ValidateGrids(this) ) workingGridsChanged(this);" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="qsoGridsFound"></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<br />
|
||||
<div style="padding: 5px" class="mapItem" title="Filter Logbook QSOs from before this Date">
|
||||
<table align="center">
|
||||
<tr>
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -72,12 +72,8 @@
|
|||
<button id="itubox" class="infoTablinks" onclick="openInfoTab(event, 'ituzoneBoxDiv', 'showITUzoneBox')">
|
||||
ITU Zones
|
||||
</button>
|
||||
<button
|
||||
id="waswacbox"
|
||||
class="infoTablinks"
|
||||
onclick="openInfoTab(event, 'waswaczoneBoxDiv', 'showWASWACzoneBox')"
|
||||
>
|
||||
WAC / WAS
|
||||
<button id="waswacbox" class="infoTablinks" onclick="openInfoTab(event, 'waswaczoneBoxDiv', 'showWASWACzoneBox')">
|
||||
WAC / WAS / WACP
|
||||
</button>
|
||||
<button id="wpxbox" class="infoTablinks" onclick="openInfoTab(event, 'wpxBoxDiv', 'showWPXBox')">WPX</button>
|
||||
<button id="calbox" class="infoTablinks" onclick="openInfoTab(event, 'callsignBoxDiv', 'showCallsignBox')">
|
||||
|
|
Plik binarny nie jest wyświetlany.
Plik binarny nie jest wyświetlany.
|
@ -597,7 +597,7 @@
|
|||
"stats.tabs.DXCCs": "DXCCs",
|
||||
"stats.tabs.CQZones": "CQ分區",
|
||||
"stats.tabs.ITUZones": "ITU分區",
|
||||
"stats.tabs.WASWAC": "洲大陸/美國州",
|
||||
"stats.tabs.WASWAC": "洲大陸/美國州/加拿大省",
|
||||
"stats.tabs.live": "在線",
|
||||
"stats.noDecodes": "還沒有解碼",
|
||||
"stats.viewing": "檢視",
|
||||
|
@ -833,6 +833,7 @@
|
|||
"gt.ITUZoneBox.Worked": "曾通聯的 ITU分區",
|
||||
"gt.WASWACBox.WAC": "曾通聯的所有大洲",
|
||||
"gt.WASWACBox.WAS": "曾通聯的所有美國州份",
|
||||
"gt.WASWACBox.WACP": "Worked All Canadian Provinces",
|
||||
"gt.displayItemsList.Worked": "曾通聯",
|
||||
"gt.displayItemsList.Confirmed": "已確認",
|
||||
"gt.displayItemsList.Needed": "需要的",
|
||||
|
|
|
@ -597,7 +597,7 @@
|
|||
"stats.tabs.DXCCs": "DXCCs",
|
||||
"stats.tabs.CQZones": "CQ分区",
|
||||
"stats.tabs.ITUZones": "ITU分区",
|
||||
"stats.tabs.WASWAC": "洲大陆/美国州",
|
||||
"stats.tabs.WASWAC": "洲大陆/美国州/WACP",
|
||||
"stats.tabs.live": "实时",
|
||||
"stats.noDecodes": "还没有解码",
|
||||
"stats.viewing": "检视",
|
||||
|
@ -833,6 +833,7 @@
|
|||
"gt.ITUZoneBox.Worked": "通联过的 ITU分区",
|
||||
"gt.WASWACBox.WAC": "通联过的所有大洲",
|
||||
"gt.WASWACBox.WAS": "通联过的所有美国州",
|
||||
"gt.WASWACBox.WACP": "Worked All Canadian Provinces",
|
||||
"gt.displayItemsList.Worked": "通联过的",
|
||||
"gt.displayItemsList.Confirmed": "已确认的",
|
||||
"gt.displayItemsList.Needed": "需要的",
|
||||
|
|
|
@ -594,8 +594,8 @@
|
|||
"stats.tabs.scores": "Ergebnisse",
|
||||
"stats.tabs.DXCCs": "DXCCs",
|
||||
"stats.tabs.CQZones": "CQ-Zonen",
|
||||
"stats.tabs.ITUZones": "ITU-Zones",
|
||||
"stats.tabs.WASWAC": "WAC / WAS",
|
||||
"stats.tabs.ITUZones": "ITU-Zonen",
|
||||
"stats.tabs.WASWAC": "WAC / WAS / WACP",
|
||||
"stats.tabs.live": "Live",
|
||||
"stats.noDecodes": "Noch keine Nachrichten",
|
||||
"stats.viewing": "Ansicht",
|
||||
|
@ -857,7 +857,8 @@
|
|||
"gt.CQZoneBox.Worked": "Gearbeitete CQ-Zonen",
|
||||
"gt.ITUZoneBox.Worked": "Gearbeitete ITU-Zonen",
|
||||
"gt.WASWACBox.WAC": "Worked All Continents",
|
||||
"gt.WASWACBox.WAS": "Worked All States",
|
||||
"gt.WASWACBox.WAS": "Worked All US States",
|
||||
"gt.WASWACBox.WACP": "Worked All Canadian Provinces",
|
||||
"gt.displayItemsList.Worked": "Gearbeitet",
|
||||
"gt.displayItemsList.Confirmed": "Bestätigt",
|
||||
"gt.displayItemsList.Needed": "Benötigt",
|
||||
|
|
|
@ -226,7 +226,7 @@
|
|||
"settings.lookup.Enabled.header": "Enabled",
|
||||
"settings.lookup.LastDwnld.header": "Last Download",
|
||||
"settings.lookup.Count.header": "Count",
|
||||
"settings.lookup.db.ULS": "United States ULS",
|
||||
"settings.lookup.db.ULS": "US Callsigns",
|
||||
"settings.lookup.db.LoTW": "Logbook of The World",
|
||||
"settings.lookup.db.eQSL": "eQSL",
|
||||
"settings.lookup.db.OQRS": "ClubLog OQRS",
|
||||
|
@ -596,7 +596,7 @@
|
|||
"stats.tabs.DXCCs": "DXCCs",
|
||||
"stats.tabs.CQZones": "CQ Zones",
|
||||
"stats.tabs.ITUZones": "ITU Zones",
|
||||
"stats.tabs.WASWAC": "WAC / WAS",
|
||||
"stats.tabs.WASWAC": "WAC / WAS / WACP",
|
||||
"stats.tabs.live": "Live",
|
||||
"stats.noDecodes": "No decodes yet",
|
||||
"stats.viewing": "Viewing",
|
||||
|
@ -832,7 +832,8 @@
|
|||
"gt.CQZoneBox.Worked": "Worked CQ Zones",
|
||||
"gt.ITUZoneBox.Worked": "Worked ITU Zones",
|
||||
"gt.WASWACBox.WAC": "Worked All Continents",
|
||||
"gt.WASWACBox.WAS": "Worked All States",
|
||||
"gt.WASWACBox.WAS": "Worked All US States",
|
||||
"gt.WASWACBox.WACP": "Worked All Canadian Provinces",
|
||||
"gt.displayItemsList.Worked": "Worked",
|
||||
"gt.displayItemsList.Confirmed": "Confirmed",
|
||||
"gt.displayItemsList.Needed": "Needed",
|
||||
|
|
|
@ -595,7 +595,7 @@
|
|||
"stats.tabs.DXCCs": "DXCCs",
|
||||
"stats.tabs.CQZones": "Zonas CQ",
|
||||
"stats.tabs.ITUZones": "Zonas ITU",
|
||||
"stats.tabs.WASWAC": "WAC / WAS",
|
||||
"stats.tabs.WASWAC": "WAC / WAS / WACP",
|
||||
"stats.tabs.live": "En Vivo",
|
||||
"stats.noDecodes": "Sin decodificaciones",
|
||||
"stats.viewing": "Viendo",
|
||||
|
@ -828,6 +828,7 @@
|
|||
"gt.ITUZoneBox.Worked": "Zonas ITU Trabajadas",
|
||||
"gt.WASWACBox.WAC": "WAC - Continentes Trabajados",
|
||||
"gt.WASWACBox.WAS": "WAS - Estados Trabajados",
|
||||
"gt.WASWACBox.WACP": "WACP - Provincias canadienses",
|
||||
"gt.displayItemsList.Worked": "Trabajados",
|
||||
"gt.displayItemsList.Confirmed": "Confirmados",
|
||||
"gt.displayItemsList.Needed": "Necesarios",
|
||||
|
|
|
@ -596,7 +596,7 @@
|
|||
"stats.tabs.DXCCs": "DXCCs",
|
||||
"stats.tabs.CQZones": "CQ Zones",
|
||||
"stats.tabs.ITUZones": "ITU Zones",
|
||||
"stats.tabs.WASWAC": "WAC / WAS",
|
||||
"stats.tabs.WASWAC": "WAC / WAS / WACP",
|
||||
"stats.tabs.live": "Live",
|
||||
"stats.noDecodes": "Aucun décodage pour l'instant",
|
||||
"stats.viewing": "Visualisation",
|
||||
|
@ -832,7 +832,8 @@
|
|||
"gt.CQZoneBox.Worked": "Zones CQ travaillées",
|
||||
"gt.ITUZoneBox.Worked": "Zones ITU travaillées",
|
||||
"gt.WASWACBox.WAC": "Continents",
|
||||
"gt.WASWACBox.WAS": "États",
|
||||
"gt.WASWACBox.WAS": "États américains",
|
||||
"gt.WASWACBox.WACP": "Provinces canadiennes",
|
||||
"gt.displayItemsList.Worked": "Travaillé",
|
||||
"gt.displayItemsList.Confirmed": "Confirmé",
|
||||
"gt.displayItemsList.Needed": "Nécessaire",
|
||||
|
|
|
@ -596,7 +596,7 @@
|
|||
"stats.tabs.DXCCs": "DXCCs",
|
||||
"stats.tabs.CQZones": "CQ Zone",
|
||||
"stats.tabs.ITUZones": "ITU Zone",
|
||||
"stats.tabs.WASWAC": "WAC / WAS",
|
||||
"stats.tabs.WASWAC": "WAC / WAS / WACP",
|
||||
"stats.tabs.live": "Live",
|
||||
"stats.noDecodes": "Nessuna decodifica per il momento",
|
||||
"stats.viewing": "Visualizzazione",
|
||||
|
@ -832,7 +832,8 @@
|
|||
"gt.CQZoneBox.Worked": "Zona CQ lavorata",
|
||||
"gt.ITUZoneBox.Worked": "Zona ITU lavorata",
|
||||
"gt.WASWACBox.WAC": "Continenti",
|
||||
"gt.WASWACBox.WAS": "Stati",
|
||||
"gt.WASWACBox.WAS": "Stati Uniti",
|
||||
"gt.WASWACBox.WACP": "Province canadesi",
|
||||
"gt.displayItemsList.Worked": "Lavorato",
|
||||
"gt.displayItemsList.Confirmed": "Confermato",
|
||||
"gt.displayItemsList.Needed": "Necessario",
|
||||
|
|
Plik binarny nie jest wyświetlany.
Po Szerokość: | Wysokość: | Rozmiar: 5.1 KiB |
|
@ -170,6 +170,7 @@ function onAdiLoadComplete(adiBuffer)
|
|||
{
|
||||
finalDEcall = GT.appSettings.myCall;
|
||||
}
|
||||
GT.myQsoCalls[finalDEcall] = true;
|
||||
|
||||
if (GT.appSettings.workingCallsignEnable && !(finalDEcall in GT.appSettings.workingCallsigns))
|
||||
{
|
||||
|
@ -199,6 +200,19 @@ function onAdiLoadComplete(adiBuffer)
|
|||
}
|
||||
|
||||
var confirmed = false;
|
||||
|
||||
var myGrid = findAdiField(activeAdifArray[x], "MY_GRIDSQUARE").toUpperCase();
|
||||
if (myGrid.length > 3)
|
||||
{
|
||||
let finalMyGrid = myGrid.substr(0, 4);
|
||||
GT.myQsoGrids[finalMyGrid] = true;
|
||||
if (GT.appSettings.workingGridEnable && !(finalMyGrid in GT.appSettings.workingGrids))
|
||||
{
|
||||
// not in the working grids, move to next
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
var finalDXcall = findAdiField(activeAdifArray[x], "CALL").replace("_", "/");
|
||||
var finalGrid = findAdiField(activeAdifArray[x], "GRIDSQUARE").toUpperCase();
|
||||
var vuccGrids = findAdiField(activeAdifArray[x], "VUCC_GRIDS").toUpperCase();
|
||||
|
@ -514,6 +528,9 @@ function onAdiLoadComplete(adiBuffer)
|
|||
GT.fileSelector.value = null;
|
||||
}
|
||||
GT.fromDirectCallNoFileDialog = false;
|
||||
|
||||
qsoGridsFound.innerHTML = "Found: " + Object.keys(GT.myQsoGrids).join(",");
|
||||
qsoCallsignsFound.innerHTML = "Found: " + Object.keys(GT.myQsoCalls).join(",");
|
||||
}
|
||||
|
||||
function clubLogCallback(buffer, flag, cookie)
|
||||
|
@ -782,6 +799,7 @@ function grabLoTWQSO()
|
|||
lotwLogin.value +
|
||||
"&password=" +
|
||||
encodeURIComponent(lotwPassword.value) +
|
||||
((GT.appSettings.workingGridEnable == true) ? "&qso_mydetail=yes" : "") +
|
||||
"&qso_query=1&qso_qsl=no&qso_qsldetail=yes&qso_withown=yes" +
|
||||
lastQSLDateString,
|
||||
lotwCallback,
|
||||
|
@ -808,6 +826,7 @@ function grabLoTWQSL()
|
|||
lotwLogin.value +
|
||||
"&password=" +
|
||||
encodeURIComponent(lotwPassword.value) +
|
||||
((GT.appSettings.workingGridEnable == true) ? "&qso_mydetail=yes" : "") +
|
||||
"&qso_query=1&qso_qsl=yes&qso_qsldetail=yes&qso_withown=yes" +
|
||||
lastQSLDateString,
|
||||
lotwCallback,
|
||||
|
@ -1487,6 +1506,10 @@ function startupAdifLoadCheck()
|
|||
{
|
||||
logEventMedia.value = GT.alertSettings.logEventMedia;
|
||||
|
||||
loadWsjtLogFile();
|
||||
|
||||
if (loadGTCheckBox.checked == true) loadGtQSOLogFile();
|
||||
|
||||
if (loadAdifCheckBox.checked == true && GT.startupLogs.length > 0) startupAdifLoadFunction();
|
||||
|
||||
if (GT.mapSettings.offlineMode == false)
|
||||
|
@ -1496,13 +1519,7 @@ function startupAdifLoadCheck()
|
|||
if (loadQRZCheckBox.checked == true) grabQrzComLog(false);
|
||||
|
||||
if (loadClubCheckBox.checked == true) grabClubLog(false);
|
||||
|
||||
if (loadPsk24CheckBox.checked == true) grabPsk24();
|
||||
}
|
||||
|
||||
if (loadGTCheckBox.checked == true) loadGtQSOLogFile();
|
||||
|
||||
loadWsjtLogFile();
|
||||
}
|
||||
|
||||
function getABuffer(file_url, callback, flag, mode, port, imgToGray, stringOfFlag, timeoutX)
|
||||
|
@ -2029,6 +2046,16 @@ function finishSendingReport(record, localMode)
|
|||
}
|
||||
}
|
||||
report += "<EOR>";
|
||||
|
||||
var reportNoPotaNoStateNoCnty = "";
|
||||
for (const key in record)
|
||||
{
|
||||
if (key != "POTA" && key != "STATE" && key != "CNTY")
|
||||
{
|
||||
reportNoPotaNoStateNoCnty += "<" + key + ":" + Buffer.byteLength(record[key]) + ">" + record[key] + " ";
|
||||
}
|
||||
}
|
||||
reportNoPotaNoStateNoCnty += "<EOR>";
|
||||
|
||||
// this report is for internal use ONLY!
|
||||
var reportWithPota = "";
|
||||
|
@ -2099,7 +2126,7 @@ function finishSendingReport(record, localMode)
|
|||
|
||||
try
|
||||
{
|
||||
sendQrzLogEntry(report);
|
||||
sendQrzLogEntry(reportNoPotaNoStateNoCnty);
|
||||
}
|
||||
catch (e)
|
||||
{
|
||||
|
|
|
@ -6,15 +6,26 @@ GT.lotwCallsigns = Object();
|
|||
GT.lotwFile = "";
|
||||
GT.lotwWhenDate = 0;
|
||||
GT.lotwLoadTimer = null;
|
||||
|
||||
GT.eqslCallsigns = Object();
|
||||
GT.eqslFile = "";
|
||||
GT.eqslWhenDate = 0;
|
||||
GT.eqslLoadTimer = null;
|
||||
GT.ulsCallsignsCount = 0;
|
||||
|
||||
GT.ulsCallsignsCount = 0;
|
||||
GT.ulsWhenDate = 0;
|
||||
GT.ulsLoadTimer = null;
|
||||
|
||||
GT.cacCallsigns = Object();
|
||||
GT.cacFile = "";
|
||||
GT.cacWhenDate = 0;
|
||||
GT.cacLoadTimer = null;
|
||||
|
||||
GT.ausCallsigns = Object();
|
||||
GT.ausFile = "";
|
||||
GT.ausWhenDate = 0;
|
||||
GT.ausLoadTimer = null;
|
||||
|
||||
GT.oqrsCallsigns = Object();
|
||||
GT.oqrsFile = "";
|
||||
GT.oqrsWhenDate = 0;
|
||||
|
@ -54,6 +65,8 @@ function callsignServicesInit()
|
|||
GT.lotwFile = GT.NWappData + "lotw-ts-callsigns.json";
|
||||
GT.eqslFile = GT.NWappData + "eqsl-callsigns.json";
|
||||
GT.oqrsFile = GT.NWappData + "cloqrs-callsigns.json";
|
||||
GT.cacFile = GT.NWappData + "canada-callsigns.txt";
|
||||
GT.ausFile = GT.NWappData + "aus-callsigns.txt";
|
||||
|
||||
if (GT.callsignLookups.lotwUseEnable)
|
||||
{
|
||||
|
@ -67,6 +80,14 @@ function callsignServicesInit()
|
|||
{
|
||||
ulsLoadCallsigns();
|
||||
}
|
||||
if (GT.callsignLookups.cacUseEnable)
|
||||
{
|
||||
cacLoadCallsigns();
|
||||
}
|
||||
if (GT.callsignLookups.ausUseEnable)
|
||||
{
|
||||
ausLoadCallsigns();
|
||||
}
|
||||
if (GT.callsignLookups.oqrsUseEnable)
|
||||
{
|
||||
oqrsLoadCallsigns();
|
||||
|
@ -75,6 +96,8 @@ function callsignServicesInit()
|
|||
lotwSettingsDisplay();
|
||||
eqslSettingsDisplay();
|
||||
ulsSettingsDisplay();
|
||||
cacSettingsDisplay();
|
||||
ausSettingsDisplay();
|
||||
oqrsSettingsDisplay();
|
||||
}
|
||||
|
||||
|
@ -218,6 +241,227 @@ function processLotwCallsigns(result, flag)
|
|||
lotwSettingsDisplay();
|
||||
}
|
||||
|
||||
function cacLoadCallsigns()
|
||||
{
|
||||
var now = timeNowSec();
|
||||
if (now - GT.callsignLookups.cacLastUpdate > 86400 * 7)
|
||||
{ GT.callsignLookups.cacLastUpdate = 0; }
|
||||
else
|
||||
{
|
||||
var cacWhenTimer = 86400 * 7 - (now - GT.callsignLookups.cacLastUpdate);
|
||||
GT.cacWhenDate = now + cacWhenTimer;
|
||||
GT.cacLoadTimer = nodeTimers.setTimeout(cacDownload, cacWhenTimer * 1000);
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
if (!fs.existsSync(GT.cacFile))
|
||||
{
|
||||
GT.callsignLookups.cacLastUpdate = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
parseCacCallsigns(fs.readFileSync(GT.cacFile, "UTF-8"));
|
||||
}
|
||||
if (GT.callsignLookups.cacLastUpdate == 0)
|
||||
{
|
||||
cacDownload();
|
||||
}
|
||||
}
|
||||
catch (e)
|
||||
{
|
||||
GT.callsignLookups.cacLastUpdate = 0;
|
||||
cacDownload();
|
||||
}
|
||||
}
|
||||
|
||||
function parseCacCallsigns(data)
|
||||
{
|
||||
let callsignRows = data.split("\n");
|
||||
for (let x = 0; x < callsignRows.length; x++)
|
||||
{
|
||||
if (callsignRows[x].length > 1)
|
||||
{
|
||||
GT.cacCallsigns[callsignRows[x].substr(8)] = callsignRows[x].substr(6, 2);
|
||||
}
|
||||
}
|
||||
fs.writeFileSync(GT.cacFile, data, "UTF-8");
|
||||
updateQSO();
|
||||
}
|
||||
|
||||
function processCacCallsigns(buffer, flag)
|
||||
{
|
||||
let data = (typeof buffer == "object") ? String(buffer) : buffer;
|
||||
parseCacCallsigns(data);
|
||||
|
||||
GT.callsignLookups.cacLastUpdate = timeNowSec();
|
||||
|
||||
var now = timeNowSec();
|
||||
if (GT.cacLoadTimer != null) nodeTimers.clearTimeout(GT.cacLoadTimer);
|
||||
|
||||
var cacWhenTimer = 86400 * 7 - (now - GT.callsignLookups.cacLastUpdate);
|
||||
GT.cacWhenDate = now + cacWhenTimer;
|
||||
GT.cacLoadTimer = nodeTimers.setTimeout(cacDownload, cacWhenTimer * 1000);
|
||||
|
||||
cacSettingsDisplay();
|
||||
}
|
||||
|
||||
function cacDownload(fromSettings)
|
||||
{
|
||||
cacUpdatedTd.innerHTML = "<b><i>Downloading...</i></b>";
|
||||
getBuffer(
|
||||
"https://storage.googleapis.com/gt_app/canada.txt",
|
||||
processCacCallsigns,
|
||||
null,
|
||||
"http",
|
||||
80
|
||||
);
|
||||
}
|
||||
|
||||
function cacSettingsDisplay()
|
||||
{
|
||||
cacUseEnable.checked = GT.callsignLookups.cacUseEnable;
|
||||
|
||||
if (GT.callsignLookups.cacLastUpdate == 0)
|
||||
{
|
||||
cacUpdatedTd.innerHTML = "Never";
|
||||
}
|
||||
else
|
||||
{
|
||||
cacUpdatedTd.innerHTML = userTimeString(GT.callsignLookups.cacLastUpdate * 1000);
|
||||
}
|
||||
|
||||
if (!GT.callsignLookups.cacUseEnable)
|
||||
{
|
||||
if (GT.cacLoadTimer != null) nodeTimers.clearTimeout(GT.cacLoadTimer);
|
||||
GT.cacLoadTimer = null;
|
||||
GT.cacCallsigns = Object();
|
||||
}
|
||||
cacCountTd.innerHTML = Object.keys(GT.cacCallsigns).length;
|
||||
}
|
||||
|
||||
function cacValuesChanged()
|
||||
{
|
||||
GT.callsignLookups.cacUseEnable = cacUseEnable.checked;
|
||||
saveCallsignSettings();
|
||||
if (GT.callsignLookups.cacUseEnable == true)
|
||||
{
|
||||
cacLoadCallsigns();
|
||||
}
|
||||
cacSettingsDisplay();
|
||||
}
|
||||
|
||||
function ausLoadCallsigns()
|
||||
{
|
||||
var now = timeNowSec();
|
||||
if (now - GT.callsignLookups.ausLastUpdate > 86400 * 7)
|
||||
{ GT.callsignLookups.ausLastUpdate = 0; }
|
||||
else
|
||||
{
|
||||
var ausWhenTimer = 86400 * 7 - (now - GT.callsignLookups.ausLastUpdate);
|
||||
GT.ausWhenDate = now + ausWhenTimer;
|
||||
GT.ausLoadTimer = nodeTimers.setTimeout(ausDownload, ausWhenTimer * 1000);
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
if (!fs.existsSync(GT.ausFile))
|
||||
{
|
||||
GT.callsignLookups.ausLastUpdate = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
parseAusCallsigns(fs.readFileSync(GT.ausFile, "UTF-8"));
|
||||
}
|
||||
if (GT.callsignLookups.ausLastUpdate == 0)
|
||||
{
|
||||
ausDownload();
|
||||
}
|
||||
}
|
||||
catch (e)
|
||||
{
|
||||
GT.callsignLookups.ausLastUpdate = 0;
|
||||
ausDownload();
|
||||
}
|
||||
}
|
||||
|
||||
function parseAusCallsigns(data)
|
||||
{
|
||||
let callsignRows = data.split("\n");
|
||||
for (let x = 0; x < callsignRows.length; x++)
|
||||
{
|
||||
let parts = callsignRows[x].split(",");
|
||||
if (parts.length == 2)
|
||||
{
|
||||
GT.ausCallsigns[parts[1].trim()] = parts[0].trim();
|
||||
}
|
||||
}
|
||||
fs.writeFileSync(GT.ausFile, data, "UTF-8");
|
||||
updateQSO();
|
||||
}
|
||||
|
||||
function processAusCallsigns(buffer, flag)
|
||||
{
|
||||
let data = (typeof buffer == "object") ? String(buffer) : buffer;
|
||||
parseAusCallsigns(data);
|
||||
|
||||
GT.callsignLookups.ausLastUpdate = timeNowSec();
|
||||
|
||||
var now = timeNowSec();
|
||||
if (GT.ausLoadTimer != null) nodeTimers.clearTimeout(GT.ausLoadTimer);
|
||||
|
||||
var ausWhenTimer = 86400 * 7 - (now - GT.callsignLookups.ausLastUpdate);
|
||||
GT.ausWhenDate = now + ausWhenTimer;
|
||||
GT.ausLoadTimer = nodeTimers.setTimeout(ausDownload, ausWhenTimer * 1000);
|
||||
|
||||
ausSettingsDisplay();
|
||||
}
|
||||
|
||||
function ausDownload(fromSettings)
|
||||
{
|
||||
ausUpdatedTd.innerHTML = "<b><i>Downloading...</i></b>";
|
||||
getBuffer(
|
||||
"https://storage.googleapis.com/gt_app/aus.txt",
|
||||
processAusCallsigns,
|
||||
null,
|
||||
"http",
|
||||
80
|
||||
);
|
||||
}
|
||||
|
||||
function ausSettingsDisplay()
|
||||
{
|
||||
ausUseEnable.checked = GT.callsignLookups.ausUseEnable;
|
||||
|
||||
if (GT.callsignLookups.ausLastUpdate == 0)
|
||||
{
|
||||
ausUpdatedTd.innerHTML = "Never";
|
||||
}
|
||||
else
|
||||
{
|
||||
ausUpdatedTd.innerHTML = userTimeString(GT.callsignLookups.ausLastUpdate * 1000);
|
||||
}
|
||||
|
||||
if (!GT.callsignLookups.ausUseEnable)
|
||||
{
|
||||
if (GT.ausLoadTimer != null) nodeTimers.clearTimeout(GT.ausLoadTimer);
|
||||
GT.ausLoadTimer = null;
|
||||
GT.ausCallsigns = Object();
|
||||
}
|
||||
ausCountTd.innerHTML = Object.keys(GT.ausCallsigns).length;
|
||||
}
|
||||
|
||||
function ausValuesChanged()
|
||||
{
|
||||
GT.callsignLookups.ausUseEnable = ausUseEnable.checked;
|
||||
saveCallsignSettings();
|
||||
if (GT.callsignLookups.ausUseEnable == true)
|
||||
{
|
||||
ausLoadCallsigns();
|
||||
}
|
||||
ausSettingsDisplay();
|
||||
}
|
||||
|
||||
function oqrsLoadCallsigns()
|
||||
{
|
||||
var now = timeNowSec();
|
||||
|
@ -454,44 +698,66 @@ function ulsLoadCallsigns()
|
|||
|
||||
function updateQSO()
|
||||
{
|
||||
if (GT.ulsCallsignsCount > 0)
|
||||
if (GT.ulsCallsignsCount > 0 && GT.callsignLookups.ulsUseEnable)
|
||||
{
|
||||
for (hash in GT.QSOhash)
|
||||
for (let hash in GT.QSOhash)
|
||||
{
|
||||
var details = GT.QSOhash[hash];
|
||||
var lookupCall = false;
|
||||
|
||||
if ((details.cnty == null || details.state == null) && isKnownCallsignDXCC(details.dxcc))
|
||||
let details = GT.QSOhash[hash];
|
||||
if (isKnownCallsignUSplus(details.dxcc))
|
||||
{
|
||||
// Do County Lookup
|
||||
lookupCall = true;
|
||||
}
|
||||
else if (details.cnty != null && isKnownCallsignUSplus(details.dxcc))
|
||||
{
|
||||
if (!(details.cnty in GT.cntyToCounty))
|
||||
let lookupCall = false;
|
||||
if ((details.cnty == null || details.state == null))
|
||||
{
|
||||
if (details.cnty.indexOf(",") == -1)
|
||||
// Do County Lookup
|
||||
lookupCall = true;
|
||||
}
|
||||
else if (details.cnty != null)
|
||||
{
|
||||
if (!(details.cnty in GT.cntyToCounty))
|
||||
{
|
||||
if (!(details.state + "," + details.cnty in GT.cntyToCounty))
|
||||
if (details.cnty.indexOf(",") == -1)
|
||||
{
|
||||
if (!(details.state + "," + details.cnty in GT.cntyToCounty))
|
||||
{
|
||||
lookupCall = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
lookupCall = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
lookupCall = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (lookupCall)
|
||||
{
|
||||
if (GT.callsignLookups.ulsUseEnable)
|
||||
if (lookupCall)
|
||||
{
|
||||
lookupUsCallsign(details, true);
|
||||
lookupKnownCallsign(details, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (GT.callsignLookups.cacUseEnable || GT.callsignLookups.ausUseEnable)
|
||||
{
|
||||
for (let hash in GT.QSOhash)
|
||||
{
|
||||
let details = GT.QSOhash[hash];
|
||||
if (details.dxcc == 1 && details.state == null)
|
||||
{
|
||||
if (details.DEcall in GT.cacCallsigns)
|
||||
{
|
||||
details.state = "CA-" + GT.cacCallsigns[details.DEcall];
|
||||
}
|
||||
}
|
||||
else if (details.dxcc == 150 && details.state == null)
|
||||
{
|
||||
if (details.DEcall in GT.ausCallsigns)
|
||||
{
|
||||
details.state = "AU-" + GT.ausCallsigns[details.DEcall];
|
||||
}
|
||||
}
|
||||
}
|
||||
refreshQSOs();
|
||||
}
|
||||
}
|
||||
|
||||
function updateCallsignCount()
|
||||
|
@ -751,7 +1017,7 @@ function processulsCallsigns(data, flag, cookies, starting, finished)
|
|||
return Buffer(returnBuffer); // eslint-disable-line node/no-deprecated-api
|
||||
}
|
||||
|
||||
function lookupUsCallsign(object, writeState = false)
|
||||
function lookupKnownCallsign(object, writeState = false)
|
||||
{
|
||||
GT.ulsDatabase.transaction(function (tx)
|
||||
{
|
||||
|
@ -765,14 +1031,7 @@ function lookupUsCallsign(object, writeState = false)
|
|||
{
|
||||
if (object.state == null)
|
||||
{
|
||||
if (object.dxcc == 1)
|
||||
{
|
||||
object.state = "CA-" + results.rows[0].state;
|
||||
}
|
||||
else
|
||||
{
|
||||
object.state = "US-" + results.rows[0].state;
|
||||
}
|
||||
object.state = "US-" + results.rows[0].state;
|
||||
if (writeState)
|
||||
{
|
||||
refreshQSOs();
|
||||
|
|
|
@ -98,6 +98,8 @@ var def_appSettings = {
|
|||
wsjtUdpPort: 0,
|
||||
workingCallsignEnable: false,
|
||||
workingCallsigns: {},
|
||||
workingGridEnable: false,
|
||||
workingGrids: {},
|
||||
workingDateEnable: false,
|
||||
workingDate: 0,
|
||||
qsoItemsPerPage: 100,
|
||||
|
@ -267,6 +269,12 @@ var def_callsignLookups = {
|
|||
ulsUseEnable: true,
|
||||
ulsWeeklyEnable: true,
|
||||
ulsLastUpdate: 0,
|
||||
cacUseEnable: true,
|
||||
cacWeeklyEnable: true,
|
||||
cacLastUpdate: 0,
|
||||
ausUseEnable: true,
|
||||
ausWeeklyEnable: true,
|
||||
ausLastUpdate: 0,
|
||||
oqrsUseEnable: false,
|
||||
oqrsWeeklyEnable: false,
|
||||
oqrsLastUpdate: 0
|
||||
|
|
Plik diff jest za duży
Load Diff
|
@ -54,6 +54,13 @@ GT.gtParkOnInstance = new ol.style.Text({
|
|||
justify: "center"
|
||||
});
|
||||
|
||||
GT.gtParkWorkedOnInstance = new ol.style.Text({
|
||||
text: "🌄",
|
||||
font: "20px Verdana",
|
||||
textAlign: "center",
|
||||
justify: "center"
|
||||
});
|
||||
|
||||
GT.gtParkOffInstance = new ol.style.Text({
|
||||
text: "🌲",
|
||||
font: "20px Verdana",
|
||||
|
@ -147,6 +154,10 @@ function makeParkFeatures()
|
|||
{
|
||||
try
|
||||
{
|
||||
let now = timeNowSec();
|
||||
let day = parseInt(now / 86400);
|
||||
let dayAsString = String(day);
|
||||
|
||||
for (const park in GT.pota.parkSpots)
|
||||
{
|
||||
if (park in GT.pota.parks)
|
||||
|
@ -163,7 +174,15 @@ function makeParkFeatures()
|
|||
{
|
||||
if (GT.instances[instance].valid && GT.instances[instance].status.Band == report.band && GT.instances[instance].status.MO == report.mode)
|
||||
{
|
||||
parkIcon = GT.gtParkOnInstance;
|
||||
let hash = dayAsString + park + report.band + report.mode;
|
||||
if (hash in GT.tracker.worked.pota)
|
||||
{
|
||||
parkIcon = GT.gtParkWorkedOnInstance;
|
||||
}
|
||||
else
|
||||
{
|
||||
parkIcon = GT.gtParkOnInstance;
|
||||
}
|
||||
zIndex = 2;
|
||||
break;
|
||||
}
|
||||
|
@ -353,11 +372,24 @@ function addParkSpotFeature(park, report)
|
|||
{
|
||||
let parkIcon = GT.gtParkOffInstance;
|
||||
let zIndex = 1;
|
||||
|
||||
let now = timeNowSec();
|
||||
let day = parseInt(now / 86400);
|
||||
let dayAsString = String(day);
|
||||
|
||||
for (let instance in GT.instances)
|
||||
{
|
||||
if (GT.instances[instance].valid && GT.instances[instance].status.Band == report.band && GT.instances[instance].status.MO == report.mode)
|
||||
{
|
||||
parkIcon = GT.gtParkOnInstance;
|
||||
let hash = dayAsString + park + report.band + report.mode;
|
||||
if (hash in GT.tracker.worked.pota)
|
||||
{
|
||||
parkIcon = GT.gtParkWorkedOnInstance;
|
||||
}
|
||||
else
|
||||
{
|
||||
parkIcon = GT.gtParkOnInstance;
|
||||
}
|
||||
zIndex = 2;
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -42,6 +42,20 @@ function processRosterFiltering(callRoster, rosterSettings)
|
|||
continue;
|
||||
}
|
||||
|
||||
if (CR.rosterSettings.columns.Spot == true)
|
||||
{
|
||||
callObj.spot = window.opener.getSpotTime(callObj.DEcall + callObj.mode + callObj.band);
|
||||
if (CR.rosterSettings.onlySpot == true && (callObj.spot.when == 0 || (timeNowSec() - callObj.spot.when > window.opener.GT.receptionSettings.viewHistoryTimeSec)))
|
||||
{
|
||||
entry.tx = false;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
callObj.spot = { when: 0, snr: 0 };
|
||||
}
|
||||
|
||||
if (rosterSettings.now - callObj.age > CR.rosterSettings.rosterTime)
|
||||
{
|
||||
entry.tx = false;
|
||||
|
@ -146,24 +160,6 @@ function processRosterFiltering(callRoster, rosterSettings)
|
|||
continue;
|
||||
}
|
||||
|
||||
if (CR.rosterSettings.columns.Spot == true)
|
||||
{
|
||||
callObj.spot = window.opener.getSpotTime(callObj.DEcall + callObj.mode + callObj.band);
|
||||
if (callObj.spot == null)
|
||||
{
|
||||
callObj.spot = { when: 0, snr: 0 };
|
||||
}
|
||||
if (CR.rosterSettings.onlySpot == true && (callObj.spot.when == 0 || (timeNowSec() - callObj.spot.when > window.opener.GT.receptionSettings.viewHistoryTimeSec)))
|
||||
{
|
||||
entry.tx = false;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
callObj.spot = { when: 0, snr: 0 };
|
||||
}
|
||||
|
||||
let usesOneOf = 0;
|
||||
let checkUses = 0;
|
||||
|
||||
|
|
|
@ -392,57 +392,53 @@ function processRosterHunting(callRoster, rosterSettings, awardTracker)
|
|||
}
|
||||
}
|
||||
|
||||
// Hunting for US States
|
||||
if ((huntState.checked || awardTrackerOverrides.states) && window.opener.GT.callsignLookups.ulsUseEnable == true)
|
||||
// Hunting for Known States
|
||||
if (huntState.checked || awardTrackerOverrides.states)
|
||||
{
|
||||
let stateSearch = callObj.state;
|
||||
let finalDxcc = callObj.dxcc;
|
||||
if (finalDxcc == 291 || finalDxcc == 110 || finalDxcc == 6)
|
||||
if (stateSearch in window.opener.GT.StateData)
|
||||
{
|
||||
if (stateSearch in window.opener.GT.StateData)
|
||||
let hash = stateSearch + workHashSuffix;
|
||||
let layeredHash = rosterSettings.layeredMode && (stateSearch + layeredHashSuffix)
|
||||
|
||||
if (rosterSettings.huntIndex && !(hash in rosterSettings.huntIndex.state))
|
||||
{
|
||||
let hash = stateSearch + workHashSuffix;
|
||||
let layeredHash = rosterSettings.layeredMode && (stateSearch + layeredHashSuffix)
|
||||
shouldAlert = true;
|
||||
callObj.reason.push("state");
|
||||
|
||||
if (rosterSettings.huntIndex && !(hash in rosterSettings.huntIndex.state))
|
||||
if (rosterSettings.workedIndex && hash in rosterSettings.workedIndex.state)
|
||||
{
|
||||
shouldAlert = true;
|
||||
callObj.reason.push("state");
|
||||
|
||||
if (rosterSettings.workedIndex && hash in rosterSettings.workedIndex.state)
|
||||
if (rosterSettings.layeredMode && layeredHash in rosterSettings.huntIndex.state)
|
||||
{
|
||||
if (rosterSettings.layeredMode && layeredHash in rosterSettings.huntIndex.state)
|
||||
{
|
||||
callObj.hunting.state = "worked-and-mixed";
|
||||
stateConf = `${layeredUnconf}${state}${layeredUnconfAlpha};`;
|
||||
stateBg = `${state}${layeredInversionAlpha}`;
|
||||
state = bold;
|
||||
}
|
||||
else
|
||||
{
|
||||
callObj.hunting.state = "worked";
|
||||
stateConf = `${unconf}${state}${inversionAlpha};`;
|
||||
}
|
||||
callObj.hunting.state = "worked-and-mixed";
|
||||
stateConf = `${layeredUnconf}${state}${layeredUnconfAlpha};`;
|
||||
stateBg = `${state}${layeredInversionAlpha}`;
|
||||
state = bold;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (rosterSettings.layeredMode && layeredHash in rosterSettings.huntIndex.state)
|
||||
{
|
||||
callObj.hunting.state = "mixed";
|
||||
stateBg = `${state}${layeredAlpha};`;
|
||||
state = bold;
|
||||
}
|
||||
else if (rosterSettings.layeredMode && layeredHash in rosterSettings.workedIndex.state)
|
||||
{
|
||||
callObj.hunting.state = "mixed-worked";
|
||||
stateConf = `${unconf}${state}${layeredAlpha};`;
|
||||
}
|
||||
else
|
||||
{
|
||||
callObj.hunting.state = "hunted";
|
||||
stateBg = `${state}${inversionAlpha};`;
|
||||
state = bold;
|
||||
}
|
||||
callObj.hunting.state = "worked";
|
||||
stateConf = `${unconf}${state}${inversionAlpha};`;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (rosterSettings.layeredMode && layeredHash in rosterSettings.huntIndex.state)
|
||||
{
|
||||
callObj.hunting.state = "mixed";
|
||||
stateBg = `${state}${layeredAlpha};`;
|
||||
state = bold;
|
||||
}
|
||||
else if (rosterSettings.layeredMode && layeredHash in rosterSettings.workedIndex.state)
|
||||
{
|
||||
callObj.hunting.state = "mixed-worked";
|
||||
stateConf = `${unconf}${state}${layeredAlpha};`;
|
||||
}
|
||||
else
|
||||
{
|
||||
callObj.hunting.state = "hunted";
|
||||
stateBg = `${state}${inversionAlpha};`;
|
||||
state = bold;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -504,16 +500,26 @@ function processRosterHunting(callRoster, rosterSettings, awardTracker)
|
|||
if (potaEnabled && huntPOTA.checked == true && callObj.pota)
|
||||
{
|
||||
let hash = CR.dayAsString + callsign + callObj.pota + (rosterSettings.layeredMode ? layeredHashSuffix : workHashSuffix);
|
||||
|
||||
let parkHash = callObj.pota + (rosterSettings.layeredMode ? layeredHashSuffix : workHashSuffix);
|
||||
// POTA is only in the worked list
|
||||
if (!(hash in CR.worked.pota))
|
||||
{
|
||||
shouldAlert = true;
|
||||
callObj.reason.push("pota");
|
||||
|
||||
callObj.hunting.pota = "hunted";
|
||||
potaBg = `${pota}${inversionAlpha};`;
|
||||
pota = bold;
|
||||
if (parkHash in CR.worked.pota)
|
||||
{
|
||||
potaConf = `${unconf}${pota}${inversionAlpha};`;
|
||||
}
|
||||
else
|
||||
{
|
||||
potaBg = `${pota}${inversionAlpha};`;
|
||||
pota = bold;
|
||||
}
|
||||
}
|
||||
else if (parkHash in CR.worked.pota)
|
||||
{
|
||||
potaConf = `${unconf}${pota}${inversionAlpha};`;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -148,7 +148,8 @@ const ROSTER_COLUMNS = {
|
|||
tableData: (callObj) => ({
|
||||
align: "center",
|
||||
rawAttrs: callObj.style.state,
|
||||
html: callObj.state ? callObj.state.substr(3) : " "
|
||||
html: callObj.state ? callObj.state.substr(3) : " ",
|
||||
title: (callObj.state in window.opener.GT.StateData) ? window.opener.GT.StateData[callObj.state].name : null
|
||||
})
|
||||
},
|
||||
|
||||
|
|
|
@ -125,10 +125,16 @@ function validateCallByElement(elementString)
|
|||
|
||||
function init()
|
||||
{
|
||||
openInfoTab(event, "workedBoxDiv", "showWorkedBox");
|
||||
openInfoTab(qsobox, "workedBoxDiv", "showWorkedBox");
|
||||
loadChildWindowI18n();
|
||||
}
|
||||
|
||||
function searchWorked(dxcc, band, mode)
|
||||
{
|
||||
openInfoTab(qsobox, "workedBoxDiv", "showWorkedBox");
|
||||
window.opener.searchWorked(dxcc, band, mode);
|
||||
}
|
||||
|
||||
function addTextToClipboard(data)
|
||||
{
|
||||
navigator.clipboard.writeText(data);
|
||||
|
|
|
@ -677,7 +677,7 @@ a {
|
|||
font-weight: bold;
|
||||
border-top-right-radius: 6px;
|
||||
border-top-left-radius: 6px;
|
||||
margin-left: 5px;
|
||||
margin-left: 0px;
|
||||
margin-right: 0px;
|
||||
color: #eee;
|
||||
background: black;
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "GridTracker",
|
||||
"product_string_do_not_use": "gridtracker",
|
||||
"version": "1.23.1217",
|
||||
"version": "1.23.1226",
|
||||
"betaVersion": "",
|
||||
"description": "GridTracker: An Amateur Radio Companion",
|
||||
"author": "GridTracker.org",
|
||||
|
|
Ładowanie…
Reference in New Issue