kopia lustrzana https://gitlab.com/gridtracker.org/gridtracker
Merge branch 'lotw-diff-fetch' into 'master'
Lotw diff fetch Closes #101 See merge request gridtracker.org/gridtracker!125rich-presence
commit
eb2d6dacf6
|
@ -86,6 +86,36 @@ function onAdiLoadComplete(adiBuffer, saveAdifFile, adifFileName, newFile)
|
||||||
{
|
{
|
||||||
let finalMode = "";
|
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_qsl = appLoTW_RXQSL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (activeAdifArray[x].length > 3)
|
if (activeAdifArray[x].length > 3)
|
||||||
{
|
{
|
||||||
if (activeAdifLogMode)
|
if (activeAdifLogMode)
|
||||||
|
@ -572,6 +602,20 @@ function lotwCallback(buffer, flag)
|
||||||
var shouldAppend = false;
|
var shouldAppend = false;
|
||||||
g_fromDirectCallNoFileDialog = true;
|
g_fromDirectCallNoFileDialog = true;
|
||||||
|
|
||||||
|
// Extract header showing last fetched date from call
|
||||||
|
var lotwQSHeader = rawAdiBuffer.match(/^<APP_LoTW_LAST(QSL|QSORX):\d+>(\d{4}-\d{2}-\d{2}\s+\d{2}:\d{2}:\d{2})/m);
|
||||||
|
if (lotwQSHeader !== null)
|
||||||
|
{
|
||||||
|
if (lotwQSHeader[1].toUpperCase() == "QSORX")
|
||||||
|
{
|
||||||
|
g_adifLogSettings.lastFetch.lotw_qso = lotwQSHeader[2]
|
||||||
|
}
|
||||||
|
else if (lotwQSHeader[1].toUpperCase() == "QSL")
|
||||||
|
{
|
||||||
|
g_adifLogSettings.lastFetch.lotw_qsl = lotwQSHeader[2];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
rawAdiBuffer = cleanAndPrepADIF(
|
rawAdiBuffer = cleanAndPrepADIF(
|
||||||
"lotw.adif",
|
"lotw.adif",
|
||||||
rawAdiBuffer,
|
rawAdiBuffer,
|
||||||
|
@ -623,16 +667,14 @@ var g_isGettingLOTW = false;
|
||||||
|
|
||||||
function grabLOtWLog(test)
|
function grabLOtWLog(test)
|
||||||
{
|
{
|
||||||
if (g_isGettingLOTW == false)
|
var lastQSLDateString = "";
|
||||||
{
|
|
||||||
var lastQSLDateString =
|
if (test == true && g_isGettingLOTW == false)
|
||||||
"&qso_qsorxsince=1945-01-01&qso_qslsince=1945-01-01";
|
|
||||||
if (test == true)
|
|
||||||
{
|
{
|
||||||
lotwTestResult.innerHTML = "Testing";
|
lotwTestResult.innerHTML = "Testing";
|
||||||
lastQSLDateString = "&qso_qsosince=2100-01-01";
|
lastQSLDateString = "&qso_qsosince=2100-01-01";
|
||||||
}
|
|
||||||
|
|
||||||
|
// Fetch Test Results
|
||||||
getABuffer(
|
getABuffer(
|
||||||
"https://lotw.arrl.org/lotwuser/lotwreport.adi?login=" +
|
"https://lotw.arrl.org/lotwuser/lotwreport.adi?login=" +
|
||||||
lotwLogin.value +
|
lotwLogin.value +
|
||||||
|
@ -646,6 +688,65 @@ function grabLOtWLog(test)
|
||||||
443,
|
443,
|
||||||
lotwLogImg,
|
lotwLogImg,
|
||||||
"g_isGettingLOTW",
|
"g_isGettingLOTW",
|
||||||
|
150000
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (test == false)
|
||||||
|
{
|
||||||
|
setTimeout(grabLoTWQSO, 500);
|
||||||
|
setTimeout(grabLoTWQSL, 10000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function grabLoTWQSO()
|
||||||
|
{
|
||||||
|
var dLoTWQSO = Date.parse(dateToISO8601(g_adifLogSettings.lastFetch.lotw_qso, "Z"));
|
||||||
|
var tmpDate = ((new Date().getTime()) - 300);
|
||||||
|
|
||||||
|
if ((g_isGettingLOTW == false) && ((isNaN(dLoTWQSO) == false) && (dLoTWQSO < tmpDate)))
|
||||||
|
{
|
||||||
|
// Fetch QSOs
|
||||||
|
lastQSLDateString = "&qso_qsorxsince=" + g_adifLogSettings.lastFetch.lotw_qso;
|
||||||
|
getABuffer(
|
||||||
|
"https://lotw.arrl.org/lotwuser/lotwreport.adi?login=" +
|
||||||
|
lotwLogin.value +
|
||||||
|
"&password=" +
|
||||||
|
encodeURIComponent(lotwPassword.value) +
|
||||||
|
"&qso_query=1&qso_qsl=no&qso_qsldetail=yes&qso_withown=yes" +
|
||||||
|
lastQSLDateString,
|
||||||
|
lotwCallback,
|
||||||
|
false,
|
||||||
|
"https",
|
||||||
|
443,
|
||||||
|
lotwLogImg,
|
||||||
|
"g_isGettingLOTW",
|
||||||
|
120000
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function grabLoTWQSL()
|
||||||
|
{
|
||||||
|
var dLoTWQSL = Date.parse(dateToISO8601(g_adifLogSettings.lastFetch.lotw_qsl, "Z"));
|
||||||
|
var tmpDate = ((new Date().getTime()) - 300);
|
||||||
|
|
||||||
|
if ((g_isGettingLOTW == false) && ((isNaN(dLoTWQSL) == false) && (dLoTWQSL < tmpDate)))
|
||||||
|
{
|
||||||
|
lastQSLDateString = "&qso_qslsince=" + g_adifLogSettings.lastFetch.lotw_qsl;
|
||||||
|
getABuffer(
|
||||||
|
"https://lotw.arrl.org/lotwuser/lotwreport.adi?login=" +
|
||||||
|
lotwLogin.value +
|
||||||
|
"&password=" +
|
||||||
|
encodeURIComponent(lotwPassword.value) +
|
||||||
|
"&qso_query=1&qso_qsl=yes&qso_qsldetail=yes&qso_withown=yes" +
|
||||||
|
lastQSLDateString,
|
||||||
|
lotwCallback,
|
||||||
|
false,
|
||||||
|
"https",
|
||||||
|
443,
|
||||||
|
lotwLogImg,
|
||||||
|
"g_isGettingLOTW",
|
||||||
120000
|
120000
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -1005,6 +1106,22 @@ function loadGtQSOLogFile()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var lotwLogLoaded = false;
|
||||||
|
function loadLoTWLogFile()
|
||||||
|
{
|
||||||
|
var fs = require("fs");
|
||||||
|
|
||||||
|
if (fs.existsSync(g_LoTWLogFile))
|
||||||
|
{
|
||||||
|
var rawAdiBuffer = fs.readFileSync(g_LoTWLogFile);
|
||||||
|
|
||||||
|
g_fromDirectCallNoFileDialog = true;
|
||||||
|
|
||||||
|
onAdiLoadComplete(rawAdiBuffer, false);
|
||||||
|
lotwLogLoaded = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function loadWsjtLogFile()
|
function loadWsjtLogFile()
|
||||||
{
|
{
|
||||||
var fs = require("fs");
|
var fs = require("fs");
|
||||||
|
@ -1297,8 +1414,11 @@ function startupAdifLoadCheck()
|
||||||
{
|
{
|
||||||
if (g_appSettings.gtFlagImgSrc == 1) showGtFlags();
|
if (g_appSettings.gtFlagImgSrc == 1) showGtFlags();
|
||||||
|
|
||||||
// Commented out to stop execution on startup
|
if (loadLOTWCheckBox.checked == true)
|
||||||
// if (loadLOTWCheckBox.checked == true) grabLOtWLog(false);
|
{
|
||||||
|
loadLoTWLogFile();
|
||||||
|
grabLOtWLog(false);
|
||||||
|
}
|
||||||
|
|
||||||
if (loadQRZCheckBox.checked == true) grabQrzComLog(false);
|
if (loadQRZCheckBox.checked == true) grabQrzComLog(false);
|
||||||
|
|
||||||
|
@ -1367,11 +1487,6 @@ function getABuffer(
|
||||||
})
|
})
|
||||||
.on("end", function ()
|
.on("end", function ()
|
||||||
{
|
{
|
||||||
if (typeof callback === "function")
|
|
||||||
{
|
|
||||||
// Call it, since we have confirmed it is callable
|
|
||||||
callback(fileBuffer, flag, cookies);
|
|
||||||
}
|
|
||||||
if (typeof stringOfFlag != "undefined")
|
if (typeof stringOfFlag != "undefined")
|
||||||
{
|
{
|
||||||
window[stringOfFlag] = false;
|
window[stringOfFlag] = false;
|
||||||
|
@ -1381,6 +1496,11 @@ function getABuffer(
|
||||||
imgToGray.parentNode.style.background = "";
|
imgToGray.parentNode.style.background = "";
|
||||||
imgToGray.style.webkitFilter = "";
|
imgToGray.style.webkitFilter = "";
|
||||||
}
|
}
|
||||||
|
if (typeof callback === "function")
|
||||||
|
{
|
||||||
|
// Call it, since we have confirmed it is callable
|
||||||
|
callback(fileBuffer, flag, cookies);
|
||||||
|
}
|
||||||
})
|
})
|
||||||
.on("error", function ()
|
.on("error", function ()
|
||||||
{
|
{
|
||||||
|
|
|
@ -175,7 +175,11 @@ var def_adifLogSettings = {
|
||||||
eQSLPassword: "",
|
eQSLPassword: "",
|
||||||
eQSLNickname: ""
|
eQSLNickname: ""
|
||||||
},
|
},
|
||||||
downloads: {}
|
downloads: {},
|
||||||
|
lastFetch: {
|
||||||
|
lotw_qso: "1970-01-01",
|
||||||
|
lotw_qsl: "1970-01-01"
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
var def_msgSettings = {
|
var def_msgSettings = {
|
||||||
|
|
|
@ -237,6 +237,11 @@ function saveLegendColors()
|
||||||
localStorage.legendColors = JSON.stringify(g_legendColors);
|
localStorage.legendColors = JSON.stringify(g_legendColors);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function saveAdifSettings()
|
||||||
|
{
|
||||||
|
localStorage.adifLogSettings = JSON.stringify(g_adifLogSettings);
|
||||||
|
}
|
||||||
|
|
||||||
function saveStartupLogs()
|
function saveStartupLogs()
|
||||||
{
|
{
|
||||||
localStorage.startupLogs = JSON.stringify(g_startupLogs);
|
localStorage.startupLogs = JSON.stringify(g_startupLogs);
|
||||||
|
@ -306,6 +311,7 @@ function saveAndCloseApp()
|
||||||
}
|
}
|
||||||
|
|
||||||
saveAppSettings();
|
saveAppSettings();
|
||||||
|
saveAdifSettings();
|
||||||
saveMapSettings();
|
saveMapSettings();
|
||||||
saveLegendColors();
|
saveLegendColors();
|
||||||
|
|
||||||
|
@ -504,6 +510,7 @@ var g_NWappData = "";
|
||||||
var g_screenshotDir = "";
|
var g_screenshotDir = "";
|
||||||
var g_scriptDir = "";
|
var g_scriptDir = "";
|
||||||
var g_qsoLogFile = "";
|
var g_qsoLogFile = "";
|
||||||
|
var g_LoTWLogFile = "";
|
||||||
var g_userMediaDir = "";
|
var g_userMediaDir = "";
|
||||||
var g_gtMediaDir = path.resolve("./media");
|
var g_gtMediaDir = path.resolve("./media");
|
||||||
var g_localeString = navigator.language;
|
var g_localeString = navigator.language;
|
||||||
|
@ -903,6 +910,28 @@ function userTimeString(Msec)
|
||||||
return dateToString(dateTime);
|
return dateToString(dateTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function dateToISO8601(dString, tZone)
|
||||||
|
{
|
||||||
|
var retDate = "";
|
||||||
|
var tZone = (typeof tZone !== "undefined") ? tZone : "Z";
|
||||||
|
var dateParts = dString.match(/(\d{4}-\d{2}-\d{2})(\s+(\d{2}:\d{2}:\d{2}))?/);
|
||||||
|
|
||||||
|
if (dateParts !== null)
|
||||||
|
{
|
||||||
|
retDate = dateParts[1]
|
||||||
|
if ((typeof dateParts[3]) !== "undefined")
|
||||||
|
{
|
||||||
|
retDate += "T" + dateParts[3] + ".000" + tZone;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
retDate += "T00:00:00.000" + tZone;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return retDate;
|
||||||
|
}
|
||||||
|
|
||||||
function getWpx(callsign)
|
function getWpx(callsign)
|
||||||
{
|
{
|
||||||
var prefix = null;
|
var prefix = null;
|
||||||
|
@ -5130,7 +5159,9 @@ function clearLogFilesAndCounts()
|
||||||
tryToDeleteLog("qrz.adif");
|
tryToDeleteLog("qrz.adif");
|
||||||
tryToDeleteLog("clublog.adif");
|
tryToDeleteLog("clublog.adif");
|
||||||
g_adifLogSettings.downloads = {};
|
g_adifLogSettings.downloads = {};
|
||||||
localStorage.adifLogSettings = JSON.stringify(g_adifLogSettings);
|
g_adifLogSettings.lastFetch.lotw_qso = "1940-01-01";
|
||||||
|
g_adifLogSettings.lastFetch.lotw_qsl = "1940-01-01";
|
||||||
|
saveAdifSettings();
|
||||||
}
|
}
|
||||||
|
|
||||||
function getCurrentBandModeHTML()
|
function getCurrentBandModeHTML()
|
||||||
|
@ -12174,7 +12205,8 @@ function callsignToDxcc(insign)
|
||||||
var end = parts.length - 1;
|
var end = parts.length - 1;
|
||||||
if (ancPrefixes.includes(parts[end]))
|
if (ancPrefixes.includes(parts[end]))
|
||||||
{
|
{
|
||||||
if (parts[end].toUpperCase() == "MM") {
|
if (parts[end].toUpperCase() == "MM")
|
||||||
|
{
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
parts.pop();
|
parts.pop();
|
||||||
|
@ -15852,6 +15884,7 @@ function mediaCheck()
|
||||||
g_scriptDir += g_dirSeperator;
|
g_scriptDir += g_dirSeperator;
|
||||||
|
|
||||||
g_qsoLogFile = path.join(g_appData, "GridTracker_QSO.adif");
|
g_qsoLogFile = path.join(g_appData, "GridTracker_QSO.adif");
|
||||||
|
g_LoTWLogFile = path.join(g_appData, "lotw.adif");
|
||||||
|
|
||||||
logEventMedia.appendChild(newOption("none", "None"));
|
logEventMedia.appendChild(newOption("none", "None"));
|
||||||
msgAlertMedia.appendChild(newOption("none", "Select File"));
|
msgAlertMedia.appendChild(newOption("none", "Select File"));
|
||||||
|
|
Ładowanie…
Reference in New Issue