Bug fixes and code clean up

merge-requests/254/head
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
- WSPR decoding corrupting QSO data fix!
-- 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}/
%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
- WSPR decoding corrupting QSO data fix!
* 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>
</div>
<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"
id="applyCallsignsAndDateDiv" class="button" onclick="applyCallsignsAndDates();"
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
// All rights reserved.
// See LICENSE for more information.
var g_fromDirectCallNoFileDialog = false;
var selectStartupLink = null;
function dragOverHandler(ev)
@ -83,13 +83,14 @@ function findAdiField(row, field)
function onAdiLoadComplete(adiBuffer, saveAdifFile, adifFileName, newFile)
{
let rawAdiBuffer = "";
var rawAdiBuffer = "";
if (typeof adiBuffer == "object") rawAdiBuffer = String(adiBuffer);
else rawAdiBuffer = adiBuffer;
let activeAdifArray = Array();
let activeAdifLogMode = true;
let eQSLfile = false;
var activeAdifArray = Array();
var activeAdifLogMode = true;
var eQSLfile = false;
var lotwTimestampUpdated = false;
if (rawAdiBuffer.indexOf("PSKReporter") > -1) activeAdifLogMode = false;
@ -97,174 +98,61 @@ function onAdiLoadComplete(adiBuffer, saveAdifFile, adifFileName, newFile)
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);
}
let dateTime = new Date();
let dupes = 0;
for (let x = 0; x < activeAdifArray.length; x++)
for (var 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 (activeAdifLogMode)
{
let confirmed = false;
let finalGrid = findAdiField(
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
var appLoTW_RXQSO = findAdiField(activeAdifArray[x], "APP_LOTW_RXQSO");
if (appLoTW_RXQSO != "")
{
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");
if (subMode == "FT4" && (finalMode == "MFSK" || finalMode == "DATA"))
{ finalMode = "FT4"; }
if (subMode == "JS8" && finalMode == "MFSK") finalMode = "JS8";
if (finalBand == "oob" || finalBand == "")
var appLoTW_RXQSL = findAdiField(activeAdifArray[x], "APP_LOTW_RXQSL");
if (appLoTW_RXQSL != "")
{
finalBand = Number(
findAdiField(activeAdifArray[x], "FREQ")
).formatBand();
var dRXQSL = Date.parse(appLoTW_RXQSL);
var dLastLOTW_QSL = Date.parse(g_adifLogSettings.lastFetch.lotw_qsl);
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");
let finalQslMsg = findAdiField(activeAdifArray[x], "QSLMSG");
let finalQslMsgIntl = findAdiField(activeAdifArray[x], "QSLMSG_INTL");
if (finalQslMsg.length > 1) finalMsg = finalQslMsg;
if (finalQslMsgIntl.length > 1 && finalMsg == "")
{ finalMsg = finalQslMsgIntl; }
var finalDEcall = findAdiField(activeAdifArray[x], "STATION_CALLSIGN").replace("_", "/");
if (finalDEcall == "")
{
finalDEcall = myDEcall;
}
let finalDxcc = Number(findAdiField(activeAdifArray[x], "DXCC"));
if (finalDxcc == 0) finalDxcc = Number(callsignToDxcc(finalDXcall));
if (g_appSettings.workingCallsignEnable && !(finalDEcall in g_appSettings.workingCallsigns))
{
// not in the working callsigns, move to next
continue;
}
if (!(finalDxcc in g_dxccInfo))
{ finalDxcc = Number(callsignToDxcc(finalDXcall)); }
// 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(
var dateVal = findAdiField(activeAdifArray[x], "QSO_DATE");
var timeVal = findAdiField(activeAdifArray[x], "TIME_ON");
var dateTime = new Date(
Date.UTC(
dateVal.substr(0, 4),
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 (
g_appSettings.workingDateEnable &&
finalTime < g_appSettings.workingDate
)
{ continue; }
if (g_appSettings.workingDateEnable && finalTime < g_appSettings.workingDate)
{
// Not after our working date
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);
if (!validateGridFromString(finalGrid)) finalGrid = "";
@ -291,8 +278,8 @@ function onAdiLoadComplete(adiBuffer, saveAdifFile, adifFileName, newFile)
finalGrid = finalVucc[0];
finalVucc.shift();
}
let isDigital = false;
let isPhone = false;
var isDigital = false;
var isPhone = false;
if (finalMode in g_modes)
{
isDigital = g_modes[finalMode];
@ -302,7 +289,7 @@ function onAdiLoadComplete(adiBuffer, saveAdifFile, adifFileName, newFile)
isPhone = g_modes_phone[finalMode];
}
// 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)
{
finalPOTA = null;
@ -340,25 +327,25 @@ function onAdiLoadComplete(adiBuffer, saveAdifFile, adifFileName, newFile)
}
else
{
let finalMyGrid = findAdiField(
var finalMyGrid = findAdiField(
activeAdifArray[x],
"MY_GRIDSQUARE"
).toUpperCase();
let finalGrid = findAdiField(
var finalGrid = findAdiField(
activeAdifArray[x],
"GRIDSQUARE"
).toUpperCase();
let finalDXcall = findAdiField(activeAdifArray[x], "CALL");
let finalDEcall = findAdiField(activeAdifArray[x], "OPERATOR");
let finalRSTsent = findAdiField(activeAdifArray[x], "APP_PSKREP_SNR");
let dateVal = findAdiField(activeAdifArray[x], "QSO_DATE");
let timeVal = findAdiField(activeAdifArray[x], "TIME_ON");
let finalMode = findAdiField(activeAdifArray[x], "MODE");
let finalBand = Number(
var finalDXcall = findAdiField(activeAdifArray[x], "CALL");
var finalDEcall = findAdiField(activeAdifArray[x], "OPERATOR");
var finalRSTsent = findAdiField(activeAdifArray[x], "APP_PSKREP_SNR");
var dateVal = findAdiField(activeAdifArray[x], "QSO_DATE");
var timeVal = findAdiField(activeAdifArray[x], "TIME_ON");
var finalMode = findAdiField(activeAdifArray[x], "MODE");
var finalBand = Number(
findAdiField(activeAdifArray[x], "FREQ")
).formatBand();
let finalMsg = "-";
let finalDxcc = Number(findAdiField(activeAdifArray[x], "DXCC"));
var finalMsg = "-";
var finalDxcc = Number(findAdiField(activeAdifArray[x], "DXCC"));
if (finalDxcc == 0)
{
if (finalDXcall == myDEcall) finalDxcc = callsignToDxcc(finalDEcall);
@ -367,7 +354,7 @@ function onAdiLoadComplete(adiBuffer, saveAdifFile, adifFileName, newFile)
finalGrid = finalGrid.substr(0, 6);
let dateTime = new Date(
var dateTime = new Date(
Date.UTC(
dateVal.substr(0, 4),
parseInt(dateVal.substr(4, 2)) - 1,
@ -377,7 +364,7 @@ function onAdiLoadComplete(adiBuffer, saveAdifFile, adifFileName, newFile)
timeVal.substr(4, 2)
)
);
let finalTime = parseInt(dateTime.getTime() / 1000);
var finalTime = parseInt(dateTime.getTime() / 1000);
if (
finalGrid != "" &&
finalDXcall != "" &&
@ -455,6 +442,11 @@ function onAdiLoadComplete(adiBuffer, saveAdifFile, adifFileName, newFile)
}
}
if (lotwTimestampUpdated)
{
saveLogSettings();
}
redrawGrids();
updateCountStats();
updateLogbook();
@ -906,9 +898,7 @@ function ValidateText(inputText)
function pskCallback(buffer, flag)
{
g_fromDirectCallNoFileDialog = true;
var rawAdiBuffer = String(buffer);
onAdiLoadComplete(rawAdiBuffer, false);
onAdiLoadComplete(buffer, false);
}
var g_isGettingPsk = false;
@ -1012,7 +1002,7 @@ fileSelector.onchange = function ()
{
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);
var reader = new FileReader();
@ -1056,7 +1046,7 @@ startupFileSelector.onchange = function ()
g_startupLogs.push(newObject);
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);
setAdifStartup(loadAdifCheckBox);
@ -1139,11 +1129,8 @@ function loadGtQSOLogFile()
if (fs.existsSync(g_qsoLogFile))
{
var rawAdiBuffer = fs.readFileSync(g_qsoLogFile);
g_fromDirectCallNoFileDialog = true;
onAdiLoadComplete(rawAdiBuffer, false);
onAdiLoadComplete(fs.readFileSync(g_qsoLogFile), false);
}
}
@ -1153,11 +1140,8 @@ function loadLoTWLogFile()
if (fs.existsSync(g_LoTWLogFile))
{
var rawAdiBuffer = fs.readFileSync(g_LoTWLogFile);
g_fromDirectCallNoFileDialog = true;
onAdiLoadComplete(rawAdiBuffer, false);
onAdiLoadComplete(fs.readFileSync(g_LoTWLogFile), false);
}
}
@ -1166,9 +1150,8 @@ function loadWsjtLogFile()
var fs = require("fs");
if (fs.existsSync(g_workingIniPath + "wsjtx_log.adi"))
{
var rawAdiBuffer = fs.readFileSync(g_workingIniPath + "wsjtx_log.adi");
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))
{
var rawAdiBuffer = fs.readFileSync(g_startupLogs[i].file);
g_fromDirectCallNoFileDialog = true;
onAdiLoadComplete(rawAdiBuffer, false);
onAdiLoadComplete(fs.readFileSync(g_startupLogs[i].file), false);
}
}
catch (e) {}
@ -1478,10 +1460,10 @@ function getABuffer(
timeoutX
)
{
let url = require("url");
let http = require(mode);
let fileBuffer = null;
let options = null;
var url = require("url");
var http = require(mode);
var fileBuffer = null;
var options = null;
options = {
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)";
}
let req = http.request(options, function (res)
var req = http.request(options, function (res)
{
let fsize = res.headers["content-length"];
let cookies = null;
var fsize = res.headers["content-length"];
var cookies = null;
if (typeof res.headers["set-cookie"] != "undefined")
{ cookies = res.headers["set-cookie"]; }
@ -1513,7 +1495,7 @@ function getABuffer(
if (typeof imgToGray != "undefined")
{
let percent = 0;
var percent = 0;
if (fsize > 0) percent = parseInt((fileBuffer.length / fsize) * 100);
else percent = parseInt(((fileBuffer.length / 100000) * 100) % 100);
imgToGray.parentNode.style.background =
@ -1882,16 +1864,16 @@ var g_adifLookupMap = {
function sendToLogger(ADIF)
{
let regex = new RegExp("<EOH>", "i");
let record = parseADIFRecord(ADIF.split(regex)[1]);
let localMode = record.MODE;
var regex = new RegExp("<EOH>", "i");
var record = parseADIFRecord(ADIF.split(regex)[1]);
var localMode = record.MODE;
if (localMode == "MFSK" && "SUBMODE" in record)
{
localMode = record.SUBMODE;
}
let localHash = record.CALL + record.BAND + localMode;
var localHash = record.CALL + record.BAND + localMode;
if (
(!("GRIDSQUARE" in record) || record.GRIDSQUARE.length == 0) &&
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)
{
let pota = g_liveCallsigns[localHash].pota[0];
var pota = g_liveCallsigns[localHash].pota[0];
if (pota != "?-????")
{
record.POTA = pota;
@ -1934,7 +1916,7 @@ function sendToLogger(ADIF)
if (!("DXCC" in record))
{
let dxcc = callsignToDxcc(record.CALL);
var dxcc = callsignToDxcc(record.CALL);
if (dxcc == -1) dxcc = 0;
record.DXCC = String(dxcc);
}
@ -1947,7 +1929,7 @@ function sendToLogger(ADIF)
if (g_appSettings.lookupMerge == true)
{
let request = g_Idb
var request = g_Idb
.transaction(["lookups"], "readwrite")
.objectStore("lookups")
.get(record.CALL);
@ -1956,8 +1938,8 @@ function sendToLogger(ADIF)
{
if (request.result)
{
let lookup = request.result;
for (let key in lookup)
var lookup = request.result;
for (var key in lookup)
{
if (key in g_adifLookupMap)
{
@ -1998,7 +1980,7 @@ function sendToLogger(ADIF)
function finishSendingReport(record, localMode)
{
let report = "";
var report = "";
for (const key in record)
{
if (key != "POTA")
@ -2009,7 +1991,7 @@ function finishSendingReport(record, localMode)
report += "<EOR>";
// this report is for internal use ONLY!
let reportWithPota = "";
var reportWithPota = "";
for (const key in record)
{
reportWithPota += "<" + key + ":" + Buffer.byteLength(record[key]) + ">" + record[key] + " ";

Wyświetl plik

@ -186,8 +186,8 @@ var def_adifLogSettings = {
},
downloads: {},
lastFetch: {
lotw_qso: "1970-01-01",
lotw_qsl: "1970-01-01"
lotw_qso: "1940-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.
// See LICENSE for more information.
const pjson = require("./package.json");
@ -275,13 +275,13 @@ function saveAndCloseApp()
{
var data = {};
data.version = gtVersion;
data.tracker = g_tracker;
for (var key in g_QSOhash) g_QSOhash[key].rect = null;
data.g_QSOhash = g_QSOhash;
data.version = gtVersion;
fs.writeFileSync(g_NWappData + "internal_qso.json", JSON.stringify(data));
saveScreenSettings();
@ -386,8 +386,6 @@ var g_liveGrids = {};
var g_qsoGrids = {};
var g_liveCallsigns = {};
var g_lastCallsignCount = 0;
var g_flightPaths = Array();
var g_flightPathOffset = 0;
var g_flightPathLineDash = [9, 3, 3];
@ -434,17 +432,13 @@ g_pathIgnore.CQ = true;
var g_replaceCQ = {};
g_replaceCQ.ASIA = "AS";
var g_searchBand = "dummy";
var g_myDXCC = -1;
var g_QSOhash = {};
var g_QSLcount = 0;
var g_QSOcount = 0;
var g_ignoreMessages = 0;
var g_lastTimeSinceMessageInSeconds = timeNowSec();
var g_loadQSOs = false;
var g_fromDirectCallNoFileDialog = false;
var g_mainBorderColor = "#222222FF";
var g_pushPinMode = false;
var g_pskBandActivityTimerHandle = null;
@ -775,7 +769,7 @@ function qsoTriangleGrid(i)
function setGridViewMode(mode)
{
g_appSettings.gridViewMode = mode;
g_appSettings.gridViewMode = Number(mode);
gridViewButton.innerHTML = g_gridViewArray[g_appSettings.gridViewMode];
redrawGrids();
goProcessRoster();
@ -5146,17 +5140,7 @@ function clearOrLoadQSOs()
function clearAndLoadQSOs()
{
initQSOdata();
g_QSOhash = {};
g_QSLcount = 0;
g_QSOcount = 0;
setTrophyOverlay(g_currentOverlay);
redrawGrids();
updateLogbook();
updateRosterWorked();
goProcessRoster();
clearQSOs();
startupAdifLoadCheck();
}
@ -5190,18 +5174,8 @@ function clearLogFilesAndCounts()
function getCurrentBandModeHTML()
{
var band =
g_appSettings.gtBandFilter == "auto"
? 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;
var band = g_appSettings.gtBandFilter == "auto" ? 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 (
"<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 +
@ -5211,13 +5185,9 @@ function getCurrentBandModeHTML()
);
}
var displayTimeInterval = null;
var g_currentDay = 0;
var g_nightTime = false;
var g_currentNightState = false;
var g_timeNow = timeNowSec();
function displayTime()
@ -5294,13 +5264,6 @@ function timeNowSec()
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)
{
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.eqslUseEnable == true) worker += "<th>eQSL</th>";
if (g_callsignLookups.oqrsUseEnable == true) worker += "<th>OQRS</th>";
g_lastCallsignCount = g_newCallsignCount;
for (var x in g_liveCallsigns)
{
if (g_liveCallsigns[x].dxcc != -1)
@ -13432,7 +13394,9 @@ function startupEventsAndTimers()
{
document.addEventListener("keydown", onMyKeyDown, true);
document.addEventListener("keyup", onMyKeyUp, false);
displayTimeInterval = nodeTimers.setInterval(displayTime, 1000);
// Clock timer update every second
nodeTimers.setInterval(displayTime, 1000);
}
var g_finishedLoading = false;
@ -15674,7 +15638,7 @@ function mediaCheck()
{
var data = JSON.parse(fs.readFileSync(g_NWappData + "internal_qso.json"));
if (g_startVersion == data.version)
if (gtVersion == data.version)
{
g_tracker = data.tracker;

Wyświetl plik

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