kopia lustrzana https://gitlab.com/gridtracker.org/gridtracker
Squashed commits '${title}'
rodzic
c345f5482f
commit
37f1a19d25
|
@ -2,7 +2,7 @@
|
||||||
# see https://docs.gitlab.com/ee/ci/yaml/README.html for all available options
|
# see https://docs.gitlab.com/ee/ci/yaml/README.html for all available options
|
||||||
|
|
||||||
variables:
|
variables:
|
||||||
DEFAULT_IMAGE: registry.gitlab.com/gridtracker.org/gtbuilder:v1-0
|
DEFAULT_IMAGE: registry.gitlab.com/gridtracker.org/gtbuilder:v1-3
|
||||||
APT_CACHE_DIR: $CI_PROJECT_DIR/.cache/apt
|
APT_CACHE_DIR: $CI_PROJECT_DIR/.cache/apt
|
||||||
NPM_CONFIG_CACHE: $CI_PROJECT_DIR/.cache/npm
|
NPM_CONFIG_CACHE: $CI_PROJECT_DIR/.cache/npm
|
||||||
|
|
||||||
|
@ -16,13 +16,6 @@ variables:
|
||||||
NR0Q_SERVER_ADDRESS: ""
|
NR0Q_SERVER_ADDRESS: ""
|
||||||
NR0Q_SERVER_PASSWORD: ""
|
NR0Q_SERVER_PASSWORD: ""
|
||||||
|
|
||||||
#
|
|
||||||
# Because it's getting to be that kind of world, we're going to have to
|
|
||||||
# sign our packages/exectuables with a signing key.
|
|
||||||
# That signing chain and spec file will be stored in a Gitlab CI Variable and protected,
|
|
||||||
# here's a placeholder for the script
|
|
||||||
G_CODE_SIGNING_CHAIN: ""
|
|
||||||
|
|
||||||
# nothing in this file ill be allowed to run automatically except for:
|
# nothing in this file ill be allowed to run automatically except for:
|
||||||
# 1. merge requests
|
# 1. merge requests
|
||||||
# 2. manual tagging
|
# 2. manual tagging
|
||||||
|
@ -86,7 +79,7 @@ win:package:
|
||||||
mkdir -p artifacts
|
mkdir -p artifacts
|
||||||
echo -e "\e[0Ksection_start:`date +%s`:apt_get[collapsed=true]\r\e[0KGetting Build Dependencies"
|
echo -e "\e[0Ksection_start:`date +%s`:apt_get[collapsed=true]\r\e[0KGetting Build Dependencies"
|
||||||
apt-get update && apt-get upgrade -y
|
apt-get update && apt-get upgrade -y
|
||||||
apt-get install p7zip -y
|
apt-get install curl p7zip -y
|
||||||
wget https://nsis.sourceforge.io/mediawiki/images/4/47/Registry.zip
|
wget https://nsis.sourceforge.io/mediawiki/images/4/47/Registry.zip
|
||||||
unzip -bj Registry.zip Desktop/Plugin/registry.dll -d /usr/share/nsis/Plugins/x86-unicode/
|
unzip -bj Registry.zip Desktop/Plugin/registry.dll -d /usr/share/nsis/Plugins/x86-unicode/
|
||||||
unzip -bj Registry.zip Desktop/Include/Registry.nsh -d /usr/share/nsis/Include/
|
unzip -bj Registry.zip Desktop/Include/Registry.nsh -d /usr/share/nsis/Include/
|
||||||
|
@ -94,6 +87,7 @@ win:package:
|
||||||
7zr e NsProcess.zip -y -o/usr/share/nsis/Include/ Include/nsProcess.nsh
|
7zr e NsProcess.zip -y -o/usr/share/nsis/Include/ Include/nsProcess.nsh
|
||||||
7zr e NsProcess.zip -y -o/usr/share/nsis/Plugins/x86-unicode/ Plugin/nsProcessW.dll
|
7zr e NsProcess.zip -y -o/usr/share/nsis/Plugins/x86-unicode/ Plugin/nsProcessW.dll
|
||||||
mv /usr/share/nsis/Plugins/x86-unicode/nsProcessW.dll /usr/share/nsis/Plugins/x86-unicode/nsProcess.dll
|
mv /usr/share/nsis/Plugins/x86-unicode/nsProcessW.dll /usr/share/nsis/Plugins/x86-unicode/nsProcess.dll
|
||||||
|
curl --silent "https://gitlab.com/gitlab-org/incubation-engineering/mobile-devops/download-secure-files/-/raw/main/installer" | bash
|
||||||
script:
|
script:
|
||||||
- |
|
- |
|
||||||
# Making our Windows packages
|
# Making our Windows packages
|
||||||
|
@ -111,7 +105,7 @@ win:package:
|
||||||
rm dist/*-win-*/locales/*.info
|
rm dist/*-win-*/locales/*.info
|
||||||
# Now we need to sign the executable before it get's stuffed into Nullsoft
|
# Now we need to sign the executable before it get's stuffed into Nullsoft
|
||||||
# using mono signcode
|
# using mono signcode
|
||||||
## signcode -spc codecert.spc -t http://time.certum.pl/ -a sha256 dist/GridTracker-*-win-*/*.exe
|
echo $SIGN_PASS | signcode -spc .secure_files/beau-gunderson.spc -v .secure_files/beau-gunderson.pvk dist/GridTracker-*-win-*/*.exe
|
||||||
# Now the executable should be signed
|
# Now the executable should be signed
|
||||||
sed "s#<versionplaceholder>#`node version.js`#g" windows/win_installer.nsi > windows/setup.nsi.tmp.1
|
sed "s#<versionplaceholder>#`node version.js`#g" windows/win_installer.nsi > windows/setup.nsi.tmp.1
|
||||||
sed "s#<buildplaceholder>#`pwd`#g" windows/setup.nsi.tmp.1 > windows/setup.nsi
|
sed "s#<buildplaceholder>#`pwd`#g" windows/setup.nsi.tmp.1 > windows/setup.nsi
|
||||||
|
@ -119,7 +113,7 @@ win:package:
|
||||||
# clean up generated files
|
# clean up generated files
|
||||||
rm windows/setup.nsi
|
rm windows/setup.nsi
|
||||||
rm windows/setup.nsi.tmp.1
|
rm windows/setup.nsi.tmp.1
|
||||||
## signcode -spc codecert.spc -t http://time.certum.pl/ -a sha256 dist/GridTracker-Installer.*.exe
|
echo $SIGN_PASS | signcode -spc .secure_files/beau-gunderson.spc -v .secure_files/beau-gunderson.pvk dist/GridTracker-Installer.*.exe
|
||||||
(cd dist ; mv GridTracker-Installer.*.exe ../artifacts)
|
(cd dist ; mv GridTracker-Installer.*.exe ../artifacts)
|
||||||
echo -e "\e[0Ksection_end:`date +%s`:native_build\e[0K"
|
echo -e "\e[0Ksection_end:`date +%s`:native_build\e[0K"
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,14 @@
|
||||||
gridtracker (1.23.1009) unstable; urgency=low
|
gridtracker (1.23.1014) unstable; urgency=low
|
||||||
|
- Call Roster - Fixed "All Traffic/Only Wanted" filtering
|
||||||
|
- Call Roster - Fixed POTA wanted same-day issue
|
||||||
|
- Call Roster - Added optional "Rig" column
|
||||||
- System – Support digital mode Q65
|
- System – Support digital mode Q65
|
||||||
- System – BIGCTY update from October 7th
|
- System – BIGCTY update from October 7th
|
||||||
- System – Push notification services Simplepush.io and Pushover.net added (OAMS tab)
|
- System – Push notification services Simplepush.io and Pushover.net added (OAMS tab)
|
||||||
|
- System – Swaziland renamed to Eswatini
|
||||||
- Logging – HamZone.cn service is now HamCQ.cn
|
- Logging – HamZone.cn service is now HamCQ.cn
|
||||||
- Maps – Toner (online), Terrain, Watercolor and Geography Class no longer public access
|
- Maps – Toner (online), Terrain, Watercolor and Geography Class no longer public access
|
||||||
-- Tag Loomis <n0ttl@gridtracker.org> Mon, 09 OCt 2023 00:00:00 -0000
|
-- Tag Loomis <n0ttl@gridtracker.org> Sat, 14 Oct 2023 00:00:00 -0000
|
||||||
|
|
||||||
gridtracker (1.23.0402) unstable; urgency=low
|
gridtracker (1.23.0402) unstable; urgency=low
|
||||||
- Roster - fixed Hunting mode not saving
|
- Roster - fixed Hunting mode not saving
|
||||||
|
|
|
@ -40,10 +40,14 @@ DESTDIR=${RPM_BUILD_ROOT} make clean
|
||||||
%license %{_docdir}/%{name}/
|
%license %{_docdir}/%{name}/
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
* Mon Oct 09 2023 Tag Loomis <n0ttl@gridtracker.org> - 1.23.1009-1
|
* Sat Oct 14 2023 Tag Loomis <n0ttl@gridtracker.org> - 1.23.1014-1
|
||||||
|
- Call Roster - Fixed "All Traffic/Only Wanted" filtering
|
||||||
|
- Call Roster - Fixed POTA wanted same-day issue
|
||||||
|
- Call Roster - Added optional "Rig" column
|
||||||
- System – Support digital mode Q65
|
- System – Support digital mode Q65
|
||||||
- System – BIGCTY update from October 7th
|
- System – BIGCTY update from October 7th
|
||||||
- System – Push notification services Simplepush.io and Pushover.net added (OAMS tab)
|
- System – Push notification services Simplepush.io and Pushover.net added (OAMS tab)
|
||||||
|
- System – Swaziland renamed to Eswatini
|
||||||
- Logging – HamZone.cn service is now HamCQ.cn
|
- Logging – HamZone.cn service is now HamCQ.cn
|
||||||
- Maps – Toner (online), Terrain, Watercolor and Geography Class no longer public access
|
- Maps – Toner (online), Terrain, Watercolor and Geography Class no longer public access
|
||||||
* Sun Apr 02 2023 Tag Loomis <n0ttl@gridtracker.org> - 1.23.0402-1
|
* Sun Apr 02 2023 Tag Loomis <n0ttl@gridtracker.org> - 1.23.0402-1
|
||||||
|
|
|
@ -2267,14 +2267,14 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
<br />
|
<br />
|
||||||
<label data-i18n="settings.logging.CloudLog.details.API" for="CloudlogAPI">API Key</label>
|
<label data-i18n="settings.logging.CloudLog.details.API" for="CloudlogAPI">API Key</label>
|
||||||
<input id="CloudlogAPI" type="password" class="inputTextValue" size="12"
|
<input id="CloudlogAPI" type="password" class="inputTextValue" size="12"
|
||||||
oninput=" ValidateText(this); adifTextValueChange(this);" />
|
oninput="ValidateText(this); adifTextValueChange(this);" />
|
||||||
<br />
|
<br />
|
||||||
Station Profile ID<input id="CloudlogStationProfileID" type="text" class="inputTextValue" size="12"
|
Station Profile ID<input id="CloudlogStationProfileID" type="text" class="inputTextValue" size="12"
|
||||||
oninput=" ValidateText(this); adifTextValueChange(this);" />
|
oninput="ValidateText(this); adifTextValueChange(this);" />
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<div data-i18n="settings.logging.CloudLog.test.button" class="button"
|
<div data-i18n="settings.logging.CloudLog.test.button" class="button"
|
||||||
onclick="if ( ValidateText(CloudlogURL) && ValidateText(CloudlogAPI) ) ClublogTest(true);">
|
onclick="CloudlogTest(true);">
|
||||||
Test
|
Test
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
|
|
|
@ -359,7 +359,7 @@
|
||||||
"462": ["South Africa", "ZA", "za.png"],
|
"462": ["South Africa", "ZA", "za.png"],
|
||||||
"464": ["Namibia", "NA", "na.png"],
|
"464": ["Namibia", "NA", "na.png"],
|
||||||
"466": ["Sudan", "SD", "sd.png"],
|
"466": ["Sudan", "SD", "sd.png"],
|
||||||
"468": ["Swaziland", "SZ", "sz.png"],
|
"468": ["Eswatini", "SZ", "sz.png"],
|
||||||
"470": ["Tanzania", "TZ", "tz.png"],
|
"470": ["Tanzania", "TZ", "tz.png"],
|
||||||
"474": ["Tunisia", "TN", "tn.png"],
|
"474": ["Tunisia", "TN", "tn.png"],
|
||||||
"478": ["Egypt", "EG", "eg.png"],
|
"478": ["Egypt", "EG", "eg.png"],
|
||||||
|
|
Plik binarny nie jest wyświetlany.
Plik binarny nie jest wyświetlany.
|
@ -574,9 +574,9 @@
|
||||||
"roster.secondary.execptions.onlyMyDXCC": "我需要的DXCC",
|
"roster.secondary.execptions.onlyMyDXCC": "我需要的DXCC",
|
||||||
"roster.secondary.exceptions.useseQSL": "eQSL用戶",
|
"roster.secondary.exceptions.useseQSL": "eQSL用戶",
|
||||||
"roster.secondary.exceptions.usesOQRS": "OQRS用戶",
|
"roster.secondary.exceptions.usesOQRS": "OQRS用戶",
|
||||||
|
"roster.secondary.exceptions.allOnlyNew": "僅限新呼號",
|
||||||
"roster.secondary.exceptions.wantRRCQ": "RR73 as CQ",
|
"roster.secondary.exceptions.wantRRCQ": "RR73 as CQ",
|
||||||
"roster.secondary.exceptions.noUnknownDXCC": "No Unknown DXCC",
|
"roster.secondary.exceptions.noUnknownDXCC": "No Unknown DXCC",
|
||||||
"roster.secondary.exceptions.allOnlyNew": "僅限新呼號",
|
|
||||||
"roster.secondary.exceptions.noMsg.label": "不包含",
|
"roster.secondary.exceptions.noMsg.label": "不包含",
|
||||||
"roster.secondary.exceptions.noMsg.hover": "不包含解碼...",
|
"roster.secondary.exceptions.noMsg.hover": "不包含解碼...",
|
||||||
"roster.secondary.exceptions.onlyMsg.label": "只包含",
|
"roster.secondary.exceptions.onlyMsg.label": "只包含",
|
||||||
|
|
|
@ -312,7 +312,7 @@
|
||||||
"462": "South Africa",
|
"462": "South Africa",
|
||||||
"464": "Namibia",
|
"464": "Namibia",
|
||||||
"466": "Sudan",
|
"466": "Sudan",
|
||||||
"468": "Swaziland",
|
"468": "Eswatini",
|
||||||
"470": "Tanzania",
|
"470": "Tanzania",
|
||||||
"474": "Tunisia",
|
"474": "Tunisia",
|
||||||
"478": "Egypt",
|
"478": "Egypt",
|
||||||
|
|
|
@ -574,9 +574,9 @@
|
||||||
"roster.secondary.exceptions.onlyMyDXCC": "Only My DXCC",
|
"roster.secondary.exceptions.onlyMyDXCC": "Only My DXCC",
|
||||||
"roster.secondary.exceptions.useseQSL":" Uses eQSL",
|
"roster.secondary.exceptions.useseQSL":" Uses eQSL",
|
||||||
"roster.secondary.exceptions.usesOQRS": "Uses OQRS",
|
"roster.secondary.exceptions.usesOQRS": "Uses OQRS",
|
||||||
|
"roster.secondary.exceptions.allOnlyNew": "Only New Calls",
|
||||||
"roster.secondary.exceptions.wantRRCQ": "RR73 as CQ",
|
"roster.secondary.exceptions.wantRRCQ": "RR73 as CQ",
|
||||||
"roster.secondary.exceptions.noUnknownDXCC": "No Unknown DXCC",
|
"roster.secondary.exceptions.noUnknownDXCC": "No Unknown DXCC",
|
||||||
"roster.secondary.exceptions.allOnlyNew": "Only New Calls",
|
|
||||||
"roster.secondary.exceptions.noMsg.label": "No",
|
"roster.secondary.exceptions.noMsg.label": "No",
|
||||||
"roster.secondary.exceptions.noMsg.hover": "No Decodes Containing...",
|
"roster.secondary.exceptions.noMsg.hover": "No Decodes Containing...",
|
||||||
"roster.secondary.exceptions.onlyMsg.label": "Only",
|
"roster.secondary.exceptions.onlyMsg.label": "Only",
|
||||||
|
|
|
@ -2784,24 +2784,31 @@ function hrdCredentialTest(test)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function ClublogTest(test)
|
function CloudlogTest(test)
|
||||||
{
|
{
|
||||||
if (test && test == true)
|
if (test && test == true)
|
||||||
{
|
{
|
||||||
CloudlogTestResult.innerHTML = "Testing";
|
if (ValidateText(CloudlogURL) && ValidateText(CloudlogAPI) && ValidateText(CloudlogStationProfileID))
|
||||||
|
{
|
||||||
|
CloudlogTestResult.innerHTML = "Testing";
|
||||||
|
|
||||||
var postData = { key: CloudlogAPI.value, type: "adif", string: "<eor>" };
|
var postData = { key: CloudlogAPI.value, station_profile_id: CloudlogStationProfileID.value, type: "adif", string: "<eor>" };
|
||||||
getPostJSONBuffer(
|
getPostJSONBuffer(
|
||||||
CloudlogURL.value,
|
CloudlogURL.value,
|
||||||
CloudlogSendLogResult,
|
CloudlogSendLogResult,
|
||||||
test,
|
test,
|
||||||
"https",
|
"https",
|
||||||
80,
|
80,
|
||||||
postData,
|
postData,
|
||||||
10000,
|
10000,
|
||||||
CloudUrlErrorCallback,
|
CloudUrlErrorCallback,
|
||||||
"No Response<br/>or</br>Timeout"
|
"No Response<br/>or</br>Timeout"
|
||||||
);
|
);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
CloudlogTestResult.innerHTML = "Missing Fields</br>Test Aborted";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -12493,7 +12493,7 @@ function getPostBuffer(
|
||||||
});
|
});
|
||||||
req.on("error", function (err) // eslint-disable-line node/handle-callback-err
|
req.on("error", function (err) // eslint-disable-line node/handle-callback-err
|
||||||
{
|
{
|
||||||
if (typeof timeoutCallback != "undefined")
|
if (typeof timeoutCallback == "function")
|
||||||
{
|
{
|
||||||
timeoutCallback(
|
timeoutCallback(
|
||||||
file_url,
|
file_url,
|
||||||
|
|
|
@ -570,7 +570,11 @@ function htmlEntities(str)
|
||||||
function sendSimplePushMessage(jsmesg)
|
function sendSimplePushMessage(jsmesg)
|
||||||
{
|
{
|
||||||
const url = "https://api.simplepush.io/send";
|
const url = "https://api.simplepush.io/send";
|
||||||
let data = { key: GT.msgSettings.msgSimplepushApiKey, title: "GridTracker Chat Message", msg: jsmesg.call + ": " + jsmesg.msg };
|
let data = {
|
||||||
|
key: GT.msgSettings.msgSimplepushApiKey,
|
||||||
|
title: "GT Chat - " + formatCallsign(GT.appSettings.myCall),
|
||||||
|
msg: formatCallsign(jsmesg.call) + ": " + jsmesg.msg
|
||||||
|
};
|
||||||
getPostBuffer(
|
getPostBuffer(
|
||||||
url,
|
url,
|
||||||
null, // callback,
|
null, // callback,
|
||||||
|
@ -578,9 +582,7 @@ function sendSimplePushMessage(jsmesg)
|
||||||
"https",
|
"https",
|
||||||
443,
|
443,
|
||||||
data,
|
data,
|
||||||
5000, // timeoutMs,
|
5000
|
||||||
null, // timeoutCallback,
|
|
||||||
"simplepush"
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -591,8 +593,8 @@ function sendPushOverMessage(jsmesg, test = false)
|
||||||
user: GT.msgSettings.msgPushoverUserKey,
|
user: GT.msgSettings.msgPushoverUserKey,
|
||||||
token: GT.msgSettings.msgPushoverToken,
|
token: GT.msgSettings.msgPushoverToken,
|
||||||
title:
|
title:
|
||||||
"GridTracker Chat Message",
|
"GT Chat - " + formatCallsign(GT.appSettings.myCall),
|
||||||
message: jsmesg.call + ": " + jsmesg.msg
|
message: formatCallsign(jsmesg.call) + ": " + jsmesg.msg
|
||||||
};
|
};
|
||||||
getPostBuffer(
|
getPostBuffer(
|
||||||
url,
|
url,
|
||||||
|
@ -601,9 +603,7 @@ function sendPushOverMessage(jsmesg, test = false)
|
||||||
"https",
|
"https",
|
||||||
443,
|
443,
|
||||||
data,
|
data,
|
||||||
5000, // timeoutMs,
|
5000 // timeoutMs,
|
||||||
null, // timeoutCallback,
|
|
||||||
"pushover"
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -118,6 +118,7 @@ CR.defaultSettings = {
|
||||||
Band: false,
|
Band: false,
|
||||||
Mode: false,
|
Mode: false,
|
||||||
Calling: true,
|
Calling: true,
|
||||||
|
Rig: false,
|
||||||
Grid: true,
|
Grid: true,
|
||||||
Msg: false,
|
Msg: false,
|
||||||
DXCC: true,
|
DXCC: true,
|
||||||
|
|
|
@ -417,12 +417,6 @@ function processRosterFiltering(callRoster, rosterSettings)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
let didWork = (baseHash in CR.worked.call);
|
|
||||||
if (allOnlyNew.checked && didWork && !callObj.qrz)
|
|
||||||
{
|
|
||||||
callObj.shouldAlert = false;
|
|
||||||
tx = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
entry.tx = tx;
|
entry.tx = tx;
|
||||||
}
|
}
|
||||||
|
|
|
@ -72,8 +72,6 @@ function processRosterHunting(callRoster, rosterSettings, awardTracker)
|
||||||
|
|
||||||
let callPointer = callObj.CQ == true ? "cursor:pointer" : "";
|
let callPointer = callObj.CQ == true ? "cursor:pointer" : "";
|
||||||
|
|
||||||
let didWork = false;
|
|
||||||
|
|
||||||
let call = "#FFFF00";
|
let call = "#FFFF00";
|
||||||
let grid = "#00FFFF";
|
let grid = "#00FFFF";
|
||||||
let calling = "#90EE90";
|
let calling = "#90EE90";
|
||||||
|
@ -98,6 +96,8 @@ function processRosterHunting(callRoster, rosterSettings, awardTracker)
|
||||||
|
|
||||||
let cntyPointer = (callObj.cnty && callObj.qual == false) ? "cursor: pointer;" : "";
|
let cntyPointer = (callObj.cnty && callObj.qual == false) ? "cursor: pointer;" : "";
|
||||||
|
|
||||||
|
let didWork = false;
|
||||||
|
|
||||||
let hash = callsign + workHashSuffix;
|
let hash = callsign + workHashSuffix;
|
||||||
let layeredHash = layeredHashSuffix && (callsign + layeredHashSuffix)
|
let layeredHash = layeredHashSuffix && (callsign + layeredHashSuffix)
|
||||||
|
|
||||||
|
@ -149,7 +149,6 @@ function processRosterHunting(callRoster, rosterSettings, awardTracker)
|
||||||
entry.tx = false;
|
entry.tx = false;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Special Calls
|
// Special Calls
|
||||||
if (callObj.DEcall.match("^[A-Z][0-9][A-Z](/w+)?$"))
|
if (callObj.DEcall.match("^[A-Z][0-9][A-Z](/w+)?$"))
|
||||||
{
|
{
|
||||||
|
@ -524,14 +523,10 @@ function processRosterHunting(callRoster, rosterSettings, awardTracker)
|
||||||
// Hunting for POTAs
|
// Hunting for POTAs
|
||||||
if (potaEnabled && huntPOTA.checked == true && callObj.pota)
|
if (potaEnabled && huntPOTA.checked == true && callObj.pota)
|
||||||
{
|
{
|
||||||
let huntTotal = 1;
|
|
||||||
let workedFound = 0;
|
|
||||||
|
|
||||||
let hash = CR.dayAsString + callsign + callObj.pota + (rosterSettings.layeredMode ? layeredHashSuffix : workHashSuffix);
|
let hash = CR.dayAsString + callsign + callObj.pota + (rosterSettings.layeredMode ? layeredHashSuffix : workHashSuffix);
|
||||||
|
|
||||||
if (rosterSettings.workedIndex && hash in rosterSettings.workedIndex.pota) workedFound++;
|
// POTA is only in the worked list
|
||||||
|
if (!(hash in CR.worked.pota))
|
||||||
if (workedFound != huntTotal)
|
|
||||||
{
|
{
|
||||||
shouldAlert = true;
|
shouldAlert = true;
|
||||||
callObj.reason.push("pota");
|
callObj.reason.push("pota");
|
||||||
|
@ -809,11 +804,7 @@ function processRosterHunting(callRoster, rosterSettings, awardTracker)
|
||||||
colorObject.ituz = "style='" + ituzConf + "background-color:" + ituzBg + ";color:" + ituz + "'";
|
colorObject.ituz = "style='" + ituzConf + "background-color:" + ituzBg + ";color:" + ituz + "'";
|
||||||
colorObject.px = "style='" + wpxConf + "background-color:" + wpxBg + ";color:" + wpx + "'";
|
colorObject.px = "style='" + wpxConf + "background-color:" + wpxBg + ";color:" + wpx + "'";
|
||||||
|
|
||||||
// Just in case, don't alert if we worked this callsign alread
|
|
||||||
if (didWork && shouldAlert) shouldAlert = false;
|
|
||||||
|
|
||||||
// callObj.shouldAlert ||= shouldAlert; // eslint doesn't like this, why?
|
// callObj.shouldAlert ||= shouldAlert; // eslint doesn't like this, why?
|
||||||
|
|
||||||
// If alert was set (award tracker), don't clear it
|
// If alert was set (award tracker), don't clear it
|
||||||
if (!callObj.shouldAlert)
|
if (!callObj.shouldAlert)
|
||||||
{
|
{
|
||||||
|
|
|
@ -73,7 +73,7 @@ function renderRoster(callRoster, rosterSettings)
|
||||||
for (const entry in callRoster)
|
for (const entry in callRoster)
|
||||||
{
|
{
|
||||||
// entry should populate in general
|
// entry should populate in general
|
||||||
if (callRoster[entry].tx)
|
if (callRoster[entry].tx == true)
|
||||||
{
|
{
|
||||||
visibleCallList.push(callRoster[entry]);
|
visibleCallList.push(callRoster[entry]);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
const DEFAULT_COLUMN_ORDER = [
|
const DEFAULT_COLUMN_ORDER = [
|
||||||
"Callsign", "Band", "Mode", "Calling", "Wanted", "Grid", "Msg",
|
"Callsign", "Band", "Mode", "Calling", "Rig", "Wanted", "Grid", "Msg",
|
||||||
"POTA", "DXCC", "Flag", "State", "County", "Cont",
|
"POTA", "DXCC", "Flag", "State", "County", "Cont",
|
||||||
"dB", "Freq", "DT", "Dist", "Azim",
|
"dB", "Freq", "DT", "Dist", "Azim",
|
||||||
"CQz", "ITUz", "PX",
|
"CQz", "ITUz", "PX",
|
||||||
|
@ -74,6 +74,13 @@ const ROSTER_COLUMNS = {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
Rig: {
|
||||||
|
compare: callObjSimpleComparer("instance"),
|
||||||
|
tableData: (callObj) => ({
|
||||||
|
html: callObj.instance
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
Band: {
|
Band: {
|
||||||
compare: callObjSimpleComparer("band"),
|
compare: callObjSimpleComparer("band"),
|
||||||
tableData: (callObj) => ({
|
tableData: (callObj) => ({
|
||||||
|
@ -451,7 +458,8 @@ function wantedColumnParts(callObj, options)
|
||||||
|
|
||||||
if (Object.keys(callObj.hunting).length == 0)
|
if (Object.keys(callObj.hunting).length == 0)
|
||||||
{
|
{
|
||||||
return [" "];
|
let sendBlank = (typeof options.html != "undefined" && options.html == true);
|
||||||
|
return [(sendBlank ? " " : "")];
|
||||||
}
|
}
|
||||||
|
|
||||||
let parts = [];
|
let parts = [];
|
||||||
|
|
|
@ -128,7 +128,7 @@ function sendSimplePushMessage(message)
|
||||||
const url = "https://api.simplepush.io/send";
|
const url = "https://api.simplepush.io/send";
|
||||||
let data = {
|
let data = {
|
||||||
key: window.opener.GT.msgSettings.msgSimplepushApiKey,
|
key: window.opener.GT.msgSettings.msgSimplepushApiKey,
|
||||||
title: "GridTracker Alert " + window.opener.GT.appSettings.myCall,
|
title: "GT Alert - " + formatCallsign(window.opener.GT.appSettings.myCall),
|
||||||
msg: message
|
msg: message
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -139,9 +139,7 @@ function sendSimplePushMessage(message)
|
||||||
"https",
|
"https",
|
||||||
443,
|
443,
|
||||||
data,
|
data,
|
||||||
500, // timeoutMs,
|
5000
|
||||||
null, // timeoutCallback,
|
|
||||||
"simplepush"
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -151,7 +149,7 @@ function sendPushOverAlert(message)
|
||||||
let data = {
|
let data = {
|
||||||
user: window.opener.GT.msgSettings.msgPushoverUserKey,
|
user: window.opener.GT.msgSettings.msgPushoverUserKey,
|
||||||
token: window.opener.GT.msgSettings.msgPushoverToken,
|
token: window.opener.GT.msgSettings.msgPushoverToken,
|
||||||
title: "GridTracker Alert " + window.opener.GT.appSettings.myCall,
|
title: "GT Alert - " + formatCallsign(window.opener.GT.appSettings.myCall),
|
||||||
message: message
|
message: message
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -162,9 +160,7 @@ function sendPushOverAlert(message)
|
||||||
"https",
|
"https",
|
||||||
443,
|
443,
|
||||||
data,
|
data,
|
||||||
500, // timeoutMs,
|
5000
|
||||||
null, // timeoutCallback,
|
|
||||||
"pushover"
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -175,15 +171,17 @@ function parseCRJson(data)
|
||||||
{
|
{
|
||||||
if (data[callsign].shouldAlert === true && data[callsign].alerted === false)
|
if (data[callsign].shouldAlert === true && data[callsign].alerted === false)
|
||||||
{
|
{
|
||||||
|
let wanted = " (" + wantedColumnParts(data[callsign]) + ")";
|
||||||
|
|
||||||
if (data[callsign].grid)
|
if (data[callsign].grid)
|
||||||
{
|
{
|
||||||
if (data[callsign].state)
|
if (data[callsign].state)
|
||||||
{
|
{
|
||||||
message = message + callsign + ", " + data[callsign].dxccName + ", " + data[callsign].RSTsent.toString() + ", " + data[callsign].grid + ", " + data[callsign].band + ", " + data[callsign].state + "\n";
|
message = message + formatCallsign(callsign) + ", " + data[callsign].dxccName + ", " + data[callsign].RSTsent.toString() + ", " + data[callsign].grid + ", " + data[callsign].band + ", " + data[callsign].state + wanted + "\n";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
message = message + callsign + ", " + data[callsign].dxccName + ", " + data[callsign].RSTsent.toString() + ", " + data[callsign].grid + ", " + data[callsign].band + "\n";
|
message = message + formatCallsign(callsign) + ", " + data[callsign].dxccName + ", " + data[callsign].RSTsent.toString() + ", " + data[callsign].grid + ", " + data[callsign].band + wanted + "\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -192,11 +190,11 @@ function parseCRJson(data)
|
||||||
{
|
{
|
||||||
if (data[callsign].state)
|
if (data[callsign].state)
|
||||||
{
|
{
|
||||||
message = message + callsign + ", " + data[callsign].dxccName + ", " + data[callsign].RSTsent.toString() + ", " + data[callsign].band + ", " + data[callsign].state + "\n";
|
message = message + formatCallsign(callsign) + ", " + data[callsign].dxccName + ", " + data[callsign].RSTsent.toString() + ", " + data[callsign].band + ", " + data[callsign].state + wanted + "\n";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
message = message + callsign + ", " + data[callsign].dxccName + ", " + data[callsign].RSTsent.toString() + ", " + data[callsign].band + "\n";
|
message = message + formatCallsign(callsign) + ", " + data[callsign].dxccName + ", " + data[callsign].RSTsent.toString() + ", " + data[callsign].band + wanted + "\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"name": "GridTracker",
|
"name": "GridTracker",
|
||||||
"product_string_do_not_use": "gridtracker",
|
"product_string_do_not_use": "gridtracker",
|
||||||
"version": "1.23.1009",
|
"version": "1.23.1014",
|
||||||
"betaVersion": "",
|
"betaVersion": "",
|
||||||
"description": "GridTracker, an amateur radio companion",
|
"description": "GridTracker, an amateur radio companion",
|
||||||
"author": "GridTracker.org",
|
"author": "GridTracker.org",
|
||||||
|
|
|
@ -64,7 +64,7 @@ VIAddVersionKey ProductVersion "${VERSION}"
|
||||||
VIAddVersionKey CompanyName "${COMPANY}"
|
VIAddVersionKey CompanyName "${COMPANY}"
|
||||||
VIAddVersionKey CompanyWebsite "${URL}"
|
VIAddVersionKey CompanyWebsite "${URL}"
|
||||||
VIAddVersionKey FileVersion "${VERSION}"
|
VIAddVersionKey FileVersion "${VERSION}"
|
||||||
VIAddVersionKey FileDescription "An Amateur Radio Companion"
|
VIAddVersionKey FileDescription "GridTracker"
|
||||||
VIAddVersionKey LegalCopyright "2023 GridTracker.org"
|
VIAddVersionKey LegalCopyright "2023 GridTracker.org"
|
||||||
InstallDirRegKey HKLM "${REGKEY}" Path
|
InstallDirRegKey HKLM "${REGKEY}" Path
|
||||||
ShowUninstDetails nevershow
|
ShowUninstDetails nevershow
|
||||||
|
|
|
@ -34,7 +34,7 @@ VIAddVersionKey ProductVersion "${VERSION}"
|
||||||
VIAddVersionKey CompanyName "${COMPANY}"
|
VIAddVersionKey CompanyName "${COMPANY}"
|
||||||
VIAddVersionKey CompanyWebsite "${URL}"
|
VIAddVersionKey CompanyWebsite "${URL}"
|
||||||
VIAddVersionKey FileVersion "${VERSION}"
|
VIAddVersionKey FileVersion "${VERSION}"
|
||||||
VIAddVersionKey FileDescription "An Amateur Radio Companion"
|
VIAddVersionKey FileDescription "GridTracker"
|
||||||
VIAddVersionKey LegalCopyright "${CPYEAR} Gridtracker.org"
|
VIAddVersionKey LegalCopyright "${CPYEAR} Gridtracker.org"
|
||||||
|
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue