Bug fixes and code clean up

merge-requests/237/merge
Tag 2022-11-22 19:44:37 -08:00
rodzic 14350815b6
commit e39b29ff14
10 zmienionych plików z 223 dodań i 267 usunięć

6
debian/changelog vendored
Wyświetl plik

@ -1,3 +1,9 @@
gridtracker (1.22.1123) unstable; urgency=low
- LoTW QSL downloading issue fixed
- CQ Only in Call Roster fixed
- Failure to start on some installs
-- Tag Loomis <n0ttl@gridtracker.org> Wed, 23 Nov 2022 00:00:00 -0000
gridtracker (1.22.1122) unstable; urgency=low gridtracker (1.22.1122) unstable; urgency=low
- WSPR decoding corrupting QSO data fix! - WSPR decoding corrupting QSO data fix!
-- Tag Loomis <n0ttl@gridtracker.org> Tue, 22 Nov 2022 00:00:00 -0000 -- Tag Loomis <n0ttl@gridtracker.org> Tue, 22 Nov 2022 00:00:00 -0000

Wyświetl plik

@ -40,6 +40,10 @@ DESTDIR=${RPM_BUILD_ROOT} make clean
%license %{_docdir}/%{name}/ %license %{_docdir}/%{name}/
%changelog %changelog
* Wed Nov 23 2022 Tag Loomis <n0ttl@gridtracker.org> - 1.22.1123-1
- LoTW QSL downloading issue fixed
- CQ Only in Call Roster fixed
- Failure to start on some installs
* Tue Nov 22 2022 Tag Loomis <n0ttl@gridtracker.org> - 1.22.1122-1 * Tue Nov 22 2022 Tag Loomis <n0ttl@gridtracker.org> - 1.22.1122-1
- WSPR decoding corrupting QSO data fix! - WSPR decoding corrupting QSO data fix!
* Sat Nov 19 2022 Tag Loomis <n0ttl@gridtracker.org> - 1.22.1119-1 * Sat Nov 19 2022 Tag Loomis <n0ttl@gridtracker.org> - 1.22.1119-1

Wyświetl plik

@ -1571,7 +1571,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</table> </table>
</div> </div>
<br /> <br />
<div data-i18n="settings.apply.label" <div data-i18n="settings.logbook.apply.label"
style="padding: 5px; display: none; font-size: larger; font-weight: bold; color: cyan" style="padding: 5px; display: none; font-size: larger; font-weight: bold; color: cyan"
id="applyCallsignsAndDateDiv" class="button" onclick="applyCallsignsAndDates();" id="applyCallsignsAndDateDiv" class="button" onclick="applyCallsignsAndDates();"
title="Apply Changes and Re-Import Logbook(s)"> title="Apply Changes and Re-Import Logbook(s)">

Plik binarny nie jest wyświetlany.

Plik binarny nie jest wyświetlany.

Plik binarny nie jest wyświetlany.

Wyświetl plik

@ -1,7 +1,7 @@
// GridTracker Copyright © 2022 GridTracker.org // GridTracker Copyright © 2022 GridTracker.org
// All rights reserved. // All rights reserved.
// See LICENSE for more information. // See LICENSE for more information.
var g_fromDirectCallNoFileDialog = false;
var selectStartupLink = null; var selectStartupLink = null;
function dragOverHandler(ev) function dragOverHandler(ev)
@ -83,13 +83,14 @@ function findAdiField(row, field)
function onAdiLoadComplete(adiBuffer, saveAdifFile, adifFileName, newFile) function onAdiLoadComplete(adiBuffer, saveAdifFile, adifFileName, newFile)
{ {
let rawAdiBuffer = ""; var rawAdiBuffer = "";
if (typeof adiBuffer == "object") rawAdiBuffer = String(adiBuffer); if (typeof adiBuffer == "object") rawAdiBuffer = String(adiBuffer);
else rawAdiBuffer = adiBuffer; else rawAdiBuffer = adiBuffer;
let activeAdifArray = Array(); var activeAdifArray = Array();
let activeAdifLogMode = true; var activeAdifLogMode = true;
let eQSLfile = false; var eQSLfile = false;
var lotwTimestampUpdated = false;
if (rawAdiBuffer.indexOf("PSKReporter") > -1) activeAdifLogMode = false; if (rawAdiBuffer.indexOf("PSKReporter") > -1) activeAdifLogMode = false;
@ -97,174 +98,61 @@ function onAdiLoadComplete(adiBuffer, saveAdifFile, adifFileName, newFile)
if (rawAdiBuffer.length > 1) if (rawAdiBuffer.length > 1)
{ {
let regex = new RegExp("<EOR>", "i"); var regex = new RegExp("<EOH>", "ig");
rawAdiBuffer = rawAdiBuffer.replaceAll(regex, "");
}
if (rawAdiBuffer.length > 1)
{
var regex = new RegExp("<EOR>", "i");
activeAdifArray = rawAdiBuffer.split(regex); activeAdifArray = rawAdiBuffer.split(regex);
} }
let dateTime = new Date(); for (var x = 0; x < activeAdifArray.length; x++)
let dupes = 0;
for (let x = 0; x < activeAdifArray.length; x++)
{ {
let finalMode = "";
let appLoTW_RXQSO = findAdiField(
activeAdifArray[x],
"APP_LoTW_RXQSO"
);
if (appLoTW_RXQSO != "")
{
let dRXQSO = Date.parse(appLoTW_RXQSO);
let dLastLOTW_QSO = Date.parse(g_adifLogSettings.lastFetch.lotw_qso);
if ((isNaN(dRXQSO) == false) && (isNaN(dLastLOTW_QSO) == false) && (dRXQSO > dLastLOTW_QSO))
{
g_adifLogSettings.lastFetch.lotw_qso = appLoTW_RXQSO;
}
}
let appLoTW_RXQSL = findAdiField(
activeAdifArray[x],
"APP_LoTW_RXQSL"
);
if (appLoTW_RXQSL != "")
{
let dRXQSL = Date.parse(appLoTW_RXQSL);
let dLastLOTW_QSL = Date.parse(g_adifLogSettings.lastFetch.lotw_qsl);
if ((isNaN(dRXQSL) == false) && (isNaN(dLastLOTW_QSL) == false) && (dRXQSL > dLastLOTW_QSL))
{
g_adifLogSettings.lastFetch.lotw_qso = appLoTW_RXQSO;
}
}
if (activeAdifArray[x].length > 3) if (activeAdifArray[x].length > 3)
{ {
if (activeAdifLogMode) if (activeAdifLogMode)
{ {
let confirmed = false; var appLoTW_RXQSO = findAdiField(activeAdifArray[x], "APP_LOTW_RXQSO");
let finalGrid = findAdiField( if (appLoTW_RXQSO != "")
activeAdifArray[x],
"GRIDSQUARE"
).toUpperCase();
let vuccGrids = findAdiField(
activeAdifArray[x],
"VUCC_GRIDS"
).toUpperCase();
let finalVucc = [];
let finalDXcall = findAdiField(activeAdifArray[x], "CALL").replace(
"_",
"/"
);
let finalDEcall = findAdiField(
activeAdifArray[x],
"STATION_CALLSIGN"
).replace("_", "/");
if (finalDEcall == "") finalDEcall = myDEcall;
if (
g_appSettings.workingCallsignEnable &&
!(finalDEcall in g_appSettings.workingCallsigns)
)
{ continue; }
let finalRSTsent = findAdiField(activeAdifArray[x], "RST_SENT");
let finalRSTrecv = findAdiField(activeAdifArray[x], "RST_RCVD");
let finalBand = findAdiField(activeAdifArray[x], "BAND").toLowerCase();
let dateVal = findAdiField(activeAdifArray[x], "QSO_DATE");
let timeVal = findAdiField(activeAdifArray[x], "TIME_ON");
let finalState = findAdiField(
activeAdifArray[x],
"STATE"
).toUpperCase();
if (finalState.length == 0) finalState = null;
let finalPropMode = findAdiField(
activeAdifArray[x],
"PROP_MODE"
).toUpperCase();
let finalSatName = findAdiField(
activeAdifArray[x],
"SAT_NAME"
).toUpperCase();
let finalCont = findAdiField(activeAdifArray[x], "CONT").toUpperCase();
if (finalCont.length == 0) finalCont = null;
let finalCnty = findAdiField(activeAdifArray[x], "CNTY").toUpperCase();
if (finalCnty.length == 0) finalCnty = null;
else
{ {
finalCnty = finalCnty.replaceAll(" ", ""); var dRXQSO = Date.parse(appLoTW_RXQSO);
var dLastLOTW_QSO = Date.parse(g_adifLogSettings.lastFetch.lotw_qso);
if ((isNaN(dRXQSO) == false) && (isNaN(dLastLOTW_QSO) == false) && (dRXQSO > dLastLOTW_QSO))
{
g_adifLogSettings.lastFetch.lotw_qso = appLoTW_RXQSO;
lotwTimestampUpdated = true;
}
} }
let finalMode = findAdiField(activeAdifArray[x], "MODE").toUpperCase();
let subMode = findAdiField(activeAdifArray[x], "SUBMODE"); var appLoTW_RXQSL = findAdiField(activeAdifArray[x], "APP_LOTW_RXQSL");
if (subMode == "FT4" && (finalMode == "MFSK" || finalMode == "DATA")) if (appLoTW_RXQSL != "")
{ finalMode = "FT4"; }
if (subMode == "JS8" && finalMode == "MFSK") finalMode = "JS8";
if (finalBand == "oob" || finalBand == "")
{ {
finalBand = Number( var dRXQSL = Date.parse(appLoTW_RXQSL);
findAdiField(activeAdifArray[x], "FREQ") var dLastLOTW_QSL = Date.parse(g_adifLogSettings.lastFetch.lotw_qsl);
).formatBand(); if ((isNaN(dRXQSL) == false) && (isNaN(dLastLOTW_QSL) == false) && (dRXQSL > dLastLOTW_QSL))
{
g_adifLogSettings.lastFetch.lotw_qsl = appLoTW_RXQSL;
lotwTimestampUpdated = true;
}
} }
let finalMsg = findAdiField(activeAdifArray[x], "COMMENT"); var finalDEcall = findAdiField(activeAdifArray[x], "STATION_CALLSIGN").replace("_", "/");
let finalQslMsg = findAdiField(activeAdifArray[x], "QSLMSG"); if (finalDEcall == "")
let finalQslMsgIntl = findAdiField(activeAdifArray[x], "QSLMSG_INTL"); {
if (finalQslMsg.length > 1) finalMsg = finalQslMsg; finalDEcall = myDEcall;
if (finalQslMsgIntl.length > 1 && finalMsg == "") }
{ finalMsg = finalQslMsgIntl; }
let finalDxcc = Number(findAdiField(activeAdifArray[x], "DXCC")); if (g_appSettings.workingCallsignEnable && !(finalDEcall in g_appSettings.workingCallsigns))
if (finalDxcc == 0) finalDxcc = Number(callsignToDxcc(finalDXcall)); {
// not in the working callsigns, move to next
continue;
}
if (!(finalDxcc in g_dxccInfo)) var dateVal = findAdiField(activeAdifArray[x], "QSO_DATE");
{ finalDxcc = Number(callsignToDxcc(finalDXcall)); } var timeVal = findAdiField(activeAdifArray[x], "TIME_ON");
var dateTime = new Date(
// If my callsign isn't present, it must be for me anyway
let finalCqZone = findAdiField(activeAdifArray[x], "CQZ");
if (finalCqZone.length == 1) finalCqZone = "0" + finalCqZone;
if (parseInt(finalCqZone) < 1 || parseInt(finalCqZone) > 40)
{ finalCqZone = ""; }
finalCqZone = String(finalCqZone);
let finalItuZone = findAdiField(activeAdifArray[x], "ITUZ");
if (finalItuZone.length == 1) finalItuZone = "0" + finalItuZone;
if (parseInt(finalItuZone) < 1 || parseInt(finalItuZone) > 90)
{ finalItuZone = ""; }
finalItuZone = String(finalItuZone);
let finalIOTA = findAdiField(activeAdifArray[x], "IOTA").toUpperCase();
let qrzConfirmed = findAdiField(
activeAdifArray[x],
"APP_QRZLOG_STATUS"
).toUpperCase();
let lotwConfirmed1 = findAdiField(
activeAdifArray[x],
"QSL_RCVD"
).toUpperCase();
let lotw_qsl_rcvd = findAdiField(
activeAdifArray[x],
"LOTW_QSL_RCVD"
).toUpperCase();
let eqsl_qsl_rcvd = findAdiField(
activeAdifArray[x],
"EQSL_QSL_RCVD"
).toUpperCase();
if (
qrzConfirmed == "C" ||
lotw_qsl_rcvd == "Y" ||
lotw_qsl_rcvd == "V" ||
lotwConfirmed1 == "Y" ||
eqsl_qsl_rcvd == "Y" ||
eqsl_qsl_rcvd == "V" ||
eQSLfile == true
)
{ confirmed = true; }
let dateTime = new Date(
Date.UTC( Date.UTC(
dateVal.substr(0, 4), dateVal.substr(0, 4),
parseInt(dateVal.substr(4, 2)) - 1, parseInt(dateVal.substr(4, 2)) - 1,
@ -275,13 +163,112 @@ function onAdiLoadComplete(adiBuffer, saveAdifFile, adifFileName, newFile)
) )
); );
let finalTime = parseInt(dateTime.getTime() / 1000); var finalTime = parseInt(dateTime.getTime() / 1000);
if ( if (g_appSettings.workingDateEnable && finalTime < g_appSettings.workingDate)
g_appSettings.workingDateEnable && {
finalTime < g_appSettings.workingDate // Not after our working date
) continue;
{ continue; } }
var confirmed = false;
var finalDXcall = findAdiField(activeAdifArray[x], "CALL").replace("_", "/");
var finalGrid = findAdiField(activeAdifArray[x], "GRIDSQUARE").toUpperCase();
var vuccGrids = findAdiField(activeAdifArray[x], "VUCC_GRIDS").toUpperCase();
var finalVucc = [];
var finalRSTsent = findAdiField(activeAdifArray[x], "RST_SENT");
var finalRSTrecv = findAdiField(activeAdifArray[x], "RST_RCVD");
var finalBand = findAdiField(activeAdifArray[x], "BAND").toLowerCase();
if (finalBand == "" || finalBand == "oob")
{
finalBand = Number(findAdiField(activeAdifArray[x], "FREQ")).formatBand();
}
var finalState = findAdiField(activeAdifArray[x], "STATE").toUpperCase();
if (finalState.length == 0) finalState = null;
var finalPropMode = findAdiField(activeAdifArray[x], "PROP_MODE").toUpperCase();
var finalSatName = findAdiField(activeAdifArray[x], "SAT_NAME").toUpperCase();
var finalCont = findAdiField(activeAdifArray[x], "CONT").toUpperCase();
if (finalCont.length == 0)
{
finalCont = null;
}
var finalCnty = findAdiField(activeAdifArray[x], "CNTY").toUpperCase();
if (finalCnty.length == 0)
{
finalCnty = null;
}
else
{
// GT references internally with NO spaces, this is important
finalCnty = finalCnty.replaceAll(" ", "");
}
var finalMode = findAdiField(activeAdifArray[x], "MODE").toUpperCase();
var subMode = findAdiField(activeAdifArray[x], "SUBMODE");
if (subMode == "FT4" && (finalMode == "MFSK" || finalMode == "DATA"))
{
// Internal assigment only
finalMode = "FT4"
}
if (subMode == "JS8" && finalMode == "MFSK")
{
// Internal assigment only
finalMode = "JS8";
}
var finalMsg = findAdiField(activeAdifArray[x], "COMMENT");
var finalQslMsg = findAdiField(activeAdifArray[x], "QSLMSG");
var finalQslMsgIntl = findAdiField(activeAdifArray[x], "QSLMSG_INTL");
if (finalQslMsg.length > 1)
{
finalMsg = finalQslMsg;
}
if (finalQslMsgIntl.length > 1 && finalMsg == "")
{
finalMsg = finalQslMsgIntl;
}
var finalDxcc = Number(findAdiField(activeAdifArray[x], "DXCC"));
if (finalDxcc == 0)
{
finalDxcc = Number(callsignToDxcc(finalDXcall));
}
if (!(finalDxcc in g_dxccInfo))
{
finalDxcc = Number(callsignToDxcc(finalDXcall));
}
// If my callsign isn't present, it must be for me anyway
var finalCqZone = findAdiField(activeAdifArray[x], "CQZ");
if (finalCqZone.length == 1)
{
finalCqZone = "0" + finalCqZone;
}
if (parseInt(finalCqZone) < 1 || parseInt(finalCqZone) > 40)
{
finalCqZone = "";
}
finalCqZone = String(finalCqZone);
var finalItuZone = findAdiField(activeAdifArray[x], "ITUZ");
if (finalItuZone.length == 1) finalItuZone = "0" + finalItuZone;
if (parseInt(finalItuZone) < 1 || parseInt(finalItuZone) > 90)
{ finalItuZone = ""; }
finalItuZone = String(finalItuZone);
var finalIOTA = findAdiField(activeAdifArray[x], "IOTA").toUpperCase();
var qrzConfirmed = findAdiField(activeAdifArray[x], "APP_QRZLOG_STATUS").toUpperCase();
var lotwConfirmed1 = findAdiField(activeAdifArray[x], "QSL_RCVD").toUpperCase();
var lotw_qsl_rcvd = findAdiField(activeAdifArray[x], "LOTW_QSL_RCVD").toUpperCase();
var eqsl_qsl_rcvd = findAdiField(activeAdifArray[x], "EQSL_QSL_RCVD").toUpperCase();
if (qrzConfirmed == "C" || lotw_qsl_rcvd == "Y" || lotw_qsl_rcvd == "V" || lotwConfirmed1 == "Y" || eqsl_qsl_rcvd == "Y" || eqsl_qsl_rcvd == "V" || eQSLfile == true)
{
confirmed = true;
}
finalGrid = finalGrid.substr(0, 6); finalGrid = finalGrid.substr(0, 6);
if (!validateGridFromString(finalGrid)) finalGrid = ""; if (!validateGridFromString(finalGrid)) finalGrid = "";
@ -291,8 +278,8 @@ function onAdiLoadComplete(adiBuffer, saveAdifFile, adifFileName, newFile)
finalGrid = finalVucc[0]; finalGrid = finalVucc[0];
finalVucc.shift(); finalVucc.shift();
} }
let isDigital = false; var isDigital = false;
let isPhone = false; var isPhone = false;
if (finalMode in g_modes) if (finalMode in g_modes)
{ {
isDigital = g_modes[finalMode]; isDigital = g_modes[finalMode];
@ -302,7 +289,7 @@ function onAdiLoadComplete(adiBuffer, saveAdifFile, adifFileName, newFile)
isPhone = g_modes_phone[finalMode]; isPhone = g_modes_phone[finalMode];
} }
// TODO: Revisit when we support more than one park ID // TODO: Revisit when we support more than one park ID
let finalPOTA = findAdiField(activeAdifArray[x], "POTA").toUpperCase(); var finalPOTA = findAdiField(activeAdifArray[x], "POTA").toUpperCase();
if (finalPOTA.length == 0) if (finalPOTA.length == 0)
{ {
finalPOTA = null; finalPOTA = null;
@ -340,25 +327,25 @@ function onAdiLoadComplete(adiBuffer, saveAdifFile, adifFileName, newFile)
} }
else else
{ {
let finalMyGrid = findAdiField( var finalMyGrid = findAdiField(
activeAdifArray[x], activeAdifArray[x],
"MY_GRIDSQUARE" "MY_GRIDSQUARE"
).toUpperCase(); ).toUpperCase();
let finalGrid = findAdiField( var finalGrid = findAdiField(
activeAdifArray[x], activeAdifArray[x],
"GRIDSQUARE" "GRIDSQUARE"
).toUpperCase(); ).toUpperCase();
let finalDXcall = findAdiField(activeAdifArray[x], "CALL"); var finalDXcall = findAdiField(activeAdifArray[x], "CALL");
let finalDEcall = findAdiField(activeAdifArray[x], "OPERATOR"); var finalDEcall = findAdiField(activeAdifArray[x], "OPERATOR");
let finalRSTsent = findAdiField(activeAdifArray[x], "APP_PSKREP_SNR"); var finalRSTsent = findAdiField(activeAdifArray[x], "APP_PSKREP_SNR");
let dateVal = findAdiField(activeAdifArray[x], "QSO_DATE"); var dateVal = findAdiField(activeAdifArray[x], "QSO_DATE");
let timeVal = findAdiField(activeAdifArray[x], "TIME_ON"); var timeVal = findAdiField(activeAdifArray[x], "TIME_ON");
let finalMode = findAdiField(activeAdifArray[x], "MODE"); var finalMode = findAdiField(activeAdifArray[x], "MODE");
let finalBand = Number( var finalBand = Number(
findAdiField(activeAdifArray[x], "FREQ") findAdiField(activeAdifArray[x], "FREQ")
).formatBand(); ).formatBand();
let finalMsg = "-"; var finalMsg = "-";
let finalDxcc = Number(findAdiField(activeAdifArray[x], "DXCC")); var finalDxcc = Number(findAdiField(activeAdifArray[x], "DXCC"));
if (finalDxcc == 0) if (finalDxcc == 0)
{ {
if (finalDXcall == myDEcall) finalDxcc = callsignToDxcc(finalDEcall); if (finalDXcall == myDEcall) finalDxcc = callsignToDxcc(finalDEcall);
@ -367,7 +354,7 @@ function onAdiLoadComplete(adiBuffer, saveAdifFile, adifFileName, newFile)
finalGrid = finalGrid.substr(0, 6); finalGrid = finalGrid.substr(0, 6);
let dateTime = new Date( var dateTime = new Date(
Date.UTC( Date.UTC(
dateVal.substr(0, 4), dateVal.substr(0, 4),
parseInt(dateVal.substr(4, 2)) - 1, parseInt(dateVal.substr(4, 2)) - 1,
@ -377,7 +364,7 @@ function onAdiLoadComplete(adiBuffer, saveAdifFile, adifFileName, newFile)
timeVal.substr(4, 2) timeVal.substr(4, 2)
) )
); );
let finalTime = parseInt(dateTime.getTime() / 1000); var finalTime = parseInt(dateTime.getTime() / 1000);
if ( if (
finalGrid != "" && finalGrid != "" &&
finalDXcall != "" && finalDXcall != "" &&
@ -455,6 +442,11 @@ function onAdiLoadComplete(adiBuffer, saveAdifFile, adifFileName, newFile)
} }
} }
if (lotwTimestampUpdated)
{
saveLogSettings();
}
redrawGrids(); redrawGrids();
updateCountStats(); updateCountStats();
updateLogbook(); updateLogbook();
@ -906,9 +898,7 @@ function ValidateText(inputText)
function pskCallback(buffer, flag) function pskCallback(buffer, flag)
{ {
g_fromDirectCallNoFileDialog = true; g_fromDirectCallNoFileDialog = true;
var rawAdiBuffer = String(buffer); onAdiLoadComplete(buffer, false);
onAdiLoadComplete(rawAdiBuffer, false);
} }
var g_isGettingPsk = false; var g_isGettingPsk = false;
@ -1012,7 +1002,7 @@ fileSelector.onchange = function ()
{ {
if (this.files && this.files[0]) if (this.files && this.files[0])
{ {
let path = this.value.replace(this.files[0].name, ""); var path = this.value.replace(this.files[0].name, "");
fileSelector.setAttribute("nwworkingdir", path); fileSelector.setAttribute("nwworkingdir", path);
var reader = new FileReader(); var reader = new FileReader();
@ -1056,7 +1046,7 @@ startupFileSelector.onchange = function ()
g_startupLogs.push(newObject); g_startupLogs.push(newObject);
localStorage.startupLogs = JSON.stringify(g_startupLogs); localStorage.startupLogs = JSON.stringify(g_startupLogs);
let path = this.value.replace(this.files[0].name, ""); var path = this.value.replace(this.files[0].name, "");
startupFileSelector.setAttribute("nwworkingdir", path); startupFileSelector.setAttribute("nwworkingdir", path);
setAdifStartup(loadAdifCheckBox); setAdifStartup(loadAdifCheckBox);
@ -1139,11 +1129,8 @@ function loadGtQSOLogFile()
if (fs.existsSync(g_qsoLogFile)) if (fs.existsSync(g_qsoLogFile))
{ {
var rawAdiBuffer = fs.readFileSync(g_qsoLogFile);
g_fromDirectCallNoFileDialog = true; g_fromDirectCallNoFileDialog = true;
onAdiLoadComplete(fs.readFileSync(g_qsoLogFile), false);
onAdiLoadComplete(rawAdiBuffer, false);
} }
} }
@ -1153,11 +1140,8 @@ function loadLoTWLogFile()
if (fs.existsSync(g_LoTWLogFile)) if (fs.existsSync(g_LoTWLogFile))
{ {
var rawAdiBuffer = fs.readFileSync(g_LoTWLogFile);
g_fromDirectCallNoFileDialog = true; g_fromDirectCallNoFileDialog = true;
onAdiLoadComplete(fs.readFileSync(g_LoTWLogFile), false);
onAdiLoadComplete(rawAdiBuffer, false);
} }
} }
@ -1166,9 +1150,8 @@ function loadWsjtLogFile()
var fs = require("fs"); var fs = require("fs");
if (fs.existsSync(g_workingIniPath + "wsjtx_log.adi")) if (fs.existsSync(g_workingIniPath + "wsjtx_log.adi"))
{ {
var rawAdiBuffer = fs.readFileSync(g_workingIniPath + "wsjtx_log.adi");
g_fromDirectCallNoFileDialog = true; g_fromDirectCallNoFileDialog = true;
onAdiLoadComplete(rawAdiBuffer, false); onAdiLoadComplete(fs.readFileSync(g_workingIniPath + "wsjtx_log.adi"), false);
} }
} }
@ -1357,9 +1340,8 @@ function startupAdifLoadFunction()
{ {
if (fs.existsSync(g_startupLogs[i].file)) if (fs.existsSync(g_startupLogs[i].file))
{ {
var rawAdiBuffer = fs.readFileSync(g_startupLogs[i].file);
g_fromDirectCallNoFileDialog = true; g_fromDirectCallNoFileDialog = true;
onAdiLoadComplete(rawAdiBuffer, false); onAdiLoadComplete(fs.readFileSync(g_startupLogs[i].file), false);
} }
} }
catch (e) {} catch (e) {}
@ -1478,10 +1460,10 @@ function getABuffer(
timeoutX timeoutX
) )
{ {
let url = require("url"); var url = require("url");
let http = require(mode); var http = require(mode);
let fileBuffer = null; var fileBuffer = null;
let options = null; var options = null;
options = { options = {
host: url.parse(file_url).host, // eslint-disable-line node/no-deprecated-api host: url.parse(file_url).host, // eslint-disable-line node/no-deprecated-api
@ -1498,10 +1480,10 @@ function getABuffer(
imgToGray.style.webkitFilter = "invert(100%) grayscale(1)"; imgToGray.style.webkitFilter = "invert(100%) grayscale(1)";
} }
let req = http.request(options, function (res) var req = http.request(options, function (res)
{ {
let fsize = res.headers["content-length"]; var fsize = res.headers["content-length"];
let cookies = null; var cookies = null;
if (typeof res.headers["set-cookie"] != "undefined") if (typeof res.headers["set-cookie"] != "undefined")
{ cookies = res.headers["set-cookie"]; } { cookies = res.headers["set-cookie"]; }
@ -1513,7 +1495,7 @@ function getABuffer(
if (typeof imgToGray != "undefined") if (typeof imgToGray != "undefined")
{ {
let percent = 0; var percent = 0;
if (fsize > 0) percent = parseInt((fileBuffer.length / fsize) * 100); if (fsize > 0) percent = parseInt((fileBuffer.length / fsize) * 100);
else percent = parseInt(((fileBuffer.length / 100000) * 100) % 100); else percent = parseInt(((fileBuffer.length / 100000) * 100) % 100);
imgToGray.parentNode.style.background = imgToGray.parentNode.style.background =
@ -1882,16 +1864,16 @@ var g_adifLookupMap = {
function sendToLogger(ADIF) function sendToLogger(ADIF)
{ {
let regex = new RegExp("<EOH>", "i"); var regex = new RegExp("<EOH>", "i");
let record = parseADIFRecord(ADIF.split(regex)[1]); var record = parseADIFRecord(ADIF.split(regex)[1]);
let localMode = record.MODE; var localMode = record.MODE;
if (localMode == "MFSK" && "SUBMODE" in record) if (localMode == "MFSK" && "SUBMODE" in record)
{ {
localMode = record.SUBMODE; localMode = record.SUBMODE;
} }
let localHash = record.CALL + record.BAND + localMode; var localHash = record.CALL + record.BAND + localMode;
if ( if (
(!("GRIDSQUARE" in record) || record.GRIDSQUARE.length == 0) && (!("GRIDSQUARE" in record) || record.GRIDSQUARE.length == 0) &&
localHash in g_liveCallsigns localHash in g_liveCallsigns
@ -1902,7 +1884,7 @@ function sendToLogger(ADIF)
if (g_appSettings.potaEnabled == 1 && localHash in g_liveCallsigns && g_liveCallsigns[localHash].pota.length > 0) if (g_appSettings.potaEnabled == 1 && localHash in g_liveCallsigns && g_liveCallsigns[localHash].pota.length > 0)
{ {
let pota = g_liveCallsigns[localHash].pota[0]; var pota = g_liveCallsigns[localHash].pota[0];
if (pota != "?-????") if (pota != "?-????")
{ {
record.POTA = pota; record.POTA = pota;
@ -1934,7 +1916,7 @@ function sendToLogger(ADIF)
if (!("DXCC" in record)) if (!("DXCC" in record))
{ {
let dxcc = callsignToDxcc(record.CALL); var dxcc = callsignToDxcc(record.CALL);
if (dxcc == -1) dxcc = 0; if (dxcc == -1) dxcc = 0;
record.DXCC = String(dxcc); record.DXCC = String(dxcc);
} }
@ -1947,7 +1929,7 @@ function sendToLogger(ADIF)
if (g_appSettings.lookupMerge == true) if (g_appSettings.lookupMerge == true)
{ {
let request = g_Idb var request = g_Idb
.transaction(["lookups"], "readwrite") .transaction(["lookups"], "readwrite")
.objectStore("lookups") .objectStore("lookups")
.get(record.CALL); .get(record.CALL);
@ -1956,8 +1938,8 @@ function sendToLogger(ADIF)
{ {
if (request.result) if (request.result)
{ {
let lookup = request.result; var lookup = request.result;
for (let key in lookup) for (var key in lookup)
{ {
if (key in g_adifLookupMap) if (key in g_adifLookupMap)
{ {
@ -1998,7 +1980,7 @@ function sendToLogger(ADIF)
function finishSendingReport(record, localMode) function finishSendingReport(record, localMode)
{ {
let report = ""; var report = "";
for (const key in record) for (const key in record)
{ {
if (key != "POTA") if (key != "POTA")
@ -2009,7 +1991,7 @@ function finishSendingReport(record, localMode)
report += "<EOR>"; report += "<EOR>";
// this report is for internal use ONLY! // this report is for internal use ONLY!
let reportWithPota = ""; var reportWithPota = "";
for (const key in record) for (const key in record)
{ {
reportWithPota += "<" + key + ":" + Buffer.byteLength(record[key]) + ">" + record[key] + " "; reportWithPota += "<" + key + ":" + Buffer.byteLength(record[key]) + ">" + record[key] + " ";

Wyświetl plik

@ -186,8 +186,8 @@ var def_adifLogSettings = {
}, },
downloads: {}, downloads: {},
lastFetch: { lastFetch: {
lotw_qso: "1970-01-01", lotw_qso: "1940-01-01",
lotw_qsl: "1970-01-01" lotw_qsl: "1940-01-01"
} }
}; };

Wyświetl plik

@ -1,4 +1,4 @@
// GridTracker Copyright © 2022 GridTracker.org // GridTracker Copyright © 2022 GridTracker.org
// All rights reserved. // All rights reserved.
// See LICENSE for more information. // See LICENSE for more information.
const pjson = require("./package.json"); const pjson = require("./package.json");
@ -275,13 +275,13 @@ function saveAndCloseApp()
{ {
var data = {}; var data = {};
data.version = gtVersion;
data.tracker = g_tracker; data.tracker = g_tracker;
for (var key in g_QSOhash) g_QSOhash[key].rect = null; for (var key in g_QSOhash) g_QSOhash[key].rect = null;
data.g_QSOhash = g_QSOhash; data.g_QSOhash = g_QSOhash;
data.version = gtVersion;
fs.writeFileSync(g_NWappData + "internal_qso.json", JSON.stringify(data)); fs.writeFileSync(g_NWappData + "internal_qso.json", JSON.stringify(data));
saveScreenSettings(); saveScreenSettings();
@ -386,8 +386,6 @@ var g_liveGrids = {};
var g_qsoGrids = {}; var g_qsoGrids = {};
var g_liveCallsigns = {}; var g_liveCallsigns = {};
var g_lastCallsignCount = 0;
var g_flightPaths = Array(); var g_flightPaths = Array();
var g_flightPathOffset = 0; var g_flightPathOffset = 0;
var g_flightPathLineDash = [9, 3, 3]; var g_flightPathLineDash = [9, 3, 3];
@ -434,17 +432,13 @@ g_pathIgnore.CQ = true;
var g_replaceCQ = {}; var g_replaceCQ = {};
g_replaceCQ.ASIA = "AS"; g_replaceCQ.ASIA = "AS";
var g_searchBand = "dummy";
var g_myDXCC = -1; var g_myDXCC = -1;
var g_QSOhash = {}; var g_QSOhash = {};
var g_QSLcount = 0; var g_QSLcount = 0;
var g_QSOcount = 0; var g_QSOcount = 0;
var g_ignoreMessages = 0; var g_ignoreMessages = 0;
var g_lastTimeSinceMessageInSeconds = timeNowSec(); var g_lastTimeSinceMessageInSeconds = timeNowSec();
var g_loadQSOs = false; var g_loadQSOs = false;
var g_fromDirectCallNoFileDialog = false;
var g_mainBorderColor = "#222222FF"; var g_mainBorderColor = "#222222FF";
var g_pushPinMode = false; var g_pushPinMode = false;
var g_pskBandActivityTimerHandle = null; var g_pskBandActivityTimerHandle = null;
@ -775,7 +769,7 @@ function qsoTriangleGrid(i)
function setGridViewMode(mode) function setGridViewMode(mode)
{ {
g_appSettings.gridViewMode = mode; g_appSettings.gridViewMode = Number(mode);
gridViewButton.innerHTML = g_gridViewArray[g_appSettings.gridViewMode]; gridViewButton.innerHTML = g_gridViewArray[g_appSettings.gridViewMode];
redrawGrids(); redrawGrids();
goProcessRoster(); goProcessRoster();
@ -5146,17 +5140,7 @@ function clearOrLoadQSOs()
function clearAndLoadQSOs() function clearAndLoadQSOs()
{ {
initQSOdata(); clearQSOs();
g_QSOhash = {};
g_QSLcount = 0;
g_QSOcount = 0;
setTrophyOverlay(g_currentOverlay);
redrawGrids();
updateLogbook();
updateRosterWorked();
goProcessRoster();
startupAdifLoadCheck(); startupAdifLoadCheck();
} }
@ -5190,18 +5174,8 @@ function clearLogFilesAndCounts()
function getCurrentBandModeHTML() function getCurrentBandModeHTML()
{ {
var band = var band = g_appSettings.gtBandFilter == "auto" ? myBand + " (Auto)" : g_appSettings.gtBandFilter.length == 0 ? "Mixed Bands" : g_appSettings.gtBandFilter;
g_appSettings.gtBandFilter == "auto" var mode = g_appSettings.gtModeFilter == "auto" ? myMode + " (Auto)" : g_appSettings.gtModeFilter.length == 0 ? "Mixed Modes" : g_appSettings.gtModeFilter;
? myBand + " (Auto)"
: g_appSettings.gtBandFilter.length == 0
? "Mixed Bands"
: g_appSettings.gtBandFilter;
var mode =
g_appSettings.gtModeFilter == "auto"
? myMode + " (Auto)"
: g_appSettings.gtModeFilter.length == 0
? "Mixed Modes"
: g_appSettings.gtModeFilter;
return ( return (
"<div style='vertical-align:top;display:inline-block;margin-bottom:3px;color:lightgreen;font-weight:bold;font-size:larger'>Viewing: <text style='color:yellow'>" + "<div style='vertical-align:top;display:inline-block;margin-bottom:3px;color:lightgreen;font-weight:bold;font-size:larger'>Viewing: <text style='color:yellow'>" +
band + band +
@ -5211,13 +5185,9 @@ function getCurrentBandModeHTML()
); );
} }
var displayTimeInterval = null;
var g_currentDay = 0; var g_currentDay = 0;
var g_nightTime = false; var g_nightTime = false;
var g_currentNightState = false; var g_currentNightState = false;
var g_timeNow = timeNowSec(); var g_timeNow = timeNowSec();
function displayTime() function displayTime()
@ -5294,13 +5264,6 @@ function timeNowSec()
return parseInt(Date.now() / 1000); return parseInt(Date.now() / 1000);
} }
var g_geo = null;
var g_feats = null;
var g_liveHoverInteraction = null;
var g_gtFlagHoverInteraction = null;
var g_trophyHoverInteraction = null;
function createGlobalHeatmapLayer(name, radius, blur) function createGlobalHeatmapLayer(name, radius, blur)
{ {
g_layerSources[name] = new ol.source.Vector({}); g_layerSources[name] = new ol.source.Vector({});
@ -7827,7 +7790,6 @@ function showCallsignBox(redraw)
if (g_callsignLookups.lotwUseEnable == true) worker += "<th>LoTW</th>"; if (g_callsignLookups.lotwUseEnable == true) worker += "<th>LoTW</th>";
if (g_callsignLookups.eqslUseEnable == true) worker += "<th>eQSL</th>"; if (g_callsignLookups.eqslUseEnable == true) worker += "<th>eQSL</th>";
if (g_callsignLookups.oqrsUseEnable == true) worker += "<th>OQRS</th>"; if (g_callsignLookups.oqrsUseEnable == true) worker += "<th>OQRS</th>";
g_lastCallsignCount = g_newCallsignCount;
for (var x in g_liveCallsigns) for (var x in g_liveCallsigns)
{ {
if (g_liveCallsigns[x].dxcc != -1) if (g_liveCallsigns[x].dxcc != -1)
@ -13432,7 +13394,9 @@ function startupEventsAndTimers()
{ {
document.addEventListener("keydown", onMyKeyDown, true); document.addEventListener("keydown", onMyKeyDown, true);
document.addEventListener("keyup", onMyKeyUp, false); document.addEventListener("keyup", onMyKeyUp, false);
displayTimeInterval = nodeTimers.setInterval(displayTime, 1000);
// Clock timer update every second
nodeTimers.setInterval(displayTime, 1000);
} }
var g_finishedLoading = false; var g_finishedLoading = false;
@ -15674,7 +15638,7 @@ function mediaCheck()
{ {
var data = JSON.parse(fs.readFileSync(g_NWappData + "internal_qso.json")); var data = JSON.parse(fs.readFileSync(g_NWappData + "internal_qso.json"));
if (g_startVersion == data.version) if (gtVersion == data.version)
{ {
g_tracker = data.tracker; g_tracker = data.tracker;

Wyświetl plik

@ -1,7 +1,7 @@
{ {
"name": "GridTracker", "name": "GridTracker",
"product_string_do_not_use": "gridtracker", "product_string_do_not_use": "gridtracker",
"version": "1.22.1122", "version": "1.22.1123",
"betaVersion": "", "betaVersion": "",
"description": "GridTracker, an amateur radio companion", "description": "GridTracker, an amateur radio companion",
"author": "GridTracker.org", "author": "GridTracker.org",