gridtracker/package.nw/lib/alerts.js

1295 wiersze
34 KiB
JavaScript
Czysty Zwykły widok Historia

2021-12-12 22:34:02 +00:00
// GridTracker Copyright © 2022 GridTracker.org
// All rights reserved.
// See LICENSE for more information.
2020-08-19 16:55:41 +00:00
var g_alerts = Object();
var g_classicAlerts = Object();
var g_phonetics = Object();
var g_enums = Object();
var g_speechSettings = Object();
var g_audioSettings = Object();
var g_speechAvailable = false;
var g_alertSettings = Object();
2020-12-14 02:10:27 +00:00
function loadAlerts()
{
if (typeof localStorage.classicAlertsVersion == "undefined")
{
g_classicAlerts = {
huntCallsign: false,
huntGrid: false,
huntDXCC: false,
huntCQz: false,
huntITUz: false,
huntStates: false,
huntCallsignNeed: "worked",
huntGridNeed: "confirmed",
huntDXCCNeed: "confirmed",
huntCQzNeed: "confirmed",
huntITUzNeed: "confirmed",
huntStatesNeed: "confirmed",
huntCallsignNotify: "1",
huntGridNotify: "1",
huntDXCCNotify: "1",
huntCQzNotify: "1",
huntITUzNotify: "1",
huntStatesNotify: "1",
huntCallsignNotifyWord: "Wanted Call",
huntGridNotifyWord: "Wanted Grid",
huntDXCCNotifyWord: "Wanted DXCC",
huntCQzNotifyWord: "Wanted CQ Zone",
huntITUzNotifyWord: "Wanted I-T-U Zone",
huntStatesNotifyWord: "Wanted State",
huntCallsignNotifyMedia: "none",
huntGridNotifyMedia: "none",
huntDXCCNotifyMedia: "none",
huntCQzNotifyMedia: "none",
huntITUzNotifyMedia: "none",
2020-12-14 02:10:27 +00:00
huntStatesNotifyMedia: "none"
};
localStorage.classicAlerts = JSON.stringify(g_classicAlerts);
g_alertSettings = Object();
g_alertSettings.requireGrid = true;
g_alertSettings.wantMaxDT = false;
g_alertSettings.wantMinDB = false;
g_alertSettings.wantMinFreq = false;
g_alertSettings.wantMaxFreq = false;
g_alertSettings.maxDT = 0.5;
g_alertSettings.minDb = -24;
g_alertSettings.minFreq = 400;
g_alertSettings.maxFreq = 3500;
g_alertSettings.noMyDxcc = false;
g_alertSettings.onlyMyDxcc = false;
g_alertSettings.noRoundUp = false;
g_alertSettings.onlyRoundUp = false;
g_alertSettings.cqOnly = true;
g_alertSettings.usesLoTW = false;
g_alertSettings.useseQSL = false;
g_alertSettings.reference = 0;
g_alertSettings.logEventMedia = "Ping-coin.mp3";
localStorage.alertSettings = JSON.stringify(g_alertSettings);
localStorage.classicAlertsVersion = gtVersion;
2020-12-14 02:10:27 +00:00
}
else
{
g_classicAlerts = JSON.parse(localStorage.classicAlerts);
g_alertSettings = JSON.parse(localStorage.alertSettings);
}
2020-12-14 02:10:27 +00:00
if (typeof g_alertSettings.reference == "undefined")
{
g_alertSettings.reference = 0;
localStorage.alertSettings = JSON.stringify(g_alertSettings);
}
2020-12-14 02:10:27 +00:00
if (typeof g_alertSettings.logEventMedia == "undefined")
{
g_alertSettings.logEventMedia = "Ping-coin.mp3";
localStorage.alertSettings = JSON.stringify(g_alertSettings);
}
2020-12-14 02:10:27 +00:00
if (typeof g_classicAlerts.huntRoster == "undefined")
{
g_classicAlerts.huntRoster = false;
g_classicAlerts.huntRosterNotify = 1;
g_classicAlerts.huntRosterNotifyWord = "New hit";
g_classicAlerts.huntRosterNotifyMedia = "none";
localStorage.classicAlerts = JSON.stringify(g_classicAlerts);
}
loadClassicAlertView();
2020-12-14 02:10:27 +00:00
if (typeof localStorage.savedAlerts == "undefined")
{
g_alerts = {
popup: {
value: "QRZ",
type: "4",
notify: "2",
repeat: "2",
filename: "",
shortname: "",
lastMessage: "",
lastTime: 0,
fired: 0,
2020-12-14 02:10:27 +00:00
needAck: 0
}
};
g_speechSettings = Object();
g_audioSettings = Object();
g_speechSettings.rate = 1;
g_speechSettings.pitch = 1;
g_speechSettings.volume = 1;
g_speechSettings.voice = 0;
g_speechSettings.phonetics = true;
g_audioSettings.volume = 1;
saveAlerts();
2020-12-14 02:10:27 +00:00
}
else
{
g_alerts = JSON.parse(localStorage.savedAlerts);
2020-12-14 02:10:27 +00:00
for (var key in g_alerts)
{
if (
g_alerts[key].type != 0 &&
g_alerts[key].type != 2 &&
g_alerts[key].type != 4 &&
g_alerts[key].type != 5 &&
g_alerts[key].type != 6
)
2020-12-14 02:10:27 +00:00
{ delete g_alerts[key]; }
if (g_alerts[key].repeat == 3) delete g_alerts[key];
}
g_speechSettings = JSON.parse(localStorage.speechSettings);
g_audioSettings = JSON.parse(localStorage.audioSettings);
}
2020-12-14 02:10:27 +00:00
if (g_speechSettings.voice > 0)
{
alertVoiceInput.value = g_speechSettings.voice - 1;
}
speechVolume.value = g_speechSettings.volume;
speechPitch.value = g_speechSettings.pitch;
speechRate.value = g_speechSettings.rate;
speechPhonetics.checked = g_speechSettings.phonetics;
speechVolumeTd.innerText = speechVolume.value;
speechPitchTd.innerText = speechPitch.value;
speechRateTd.innerText = speechRate.value;
audioVolume.value = g_audioSettings.volume;
audioVolumeTd.innerText = parseInt(audioVolume.value * 100) + "%";
wantGrid.checked = g_alertSettings.requireGrid;
wantMaxDT.checked = g_alertSettings.wantMaxDT;
wantMinDB.checked = g_alertSettings.wantMinDB;
wantMinFreq.checked = g_alertSettings.wantMinFreq;
wantMaxFreq.checked = g_alertSettings.wantMaxFreq;
maxDTView.innerHTML = maxDT.value = g_alertSettings.maxDT;
minDbView.innerHTML = minDb.value = g_alertSettings.minDb;
minFreqView.innerHTML = minFreq.value = g_alertSettings.minFreq;
maxFreqView.innerHTML = maxFreq.value = g_alertSettings.maxFreq;
cqOnly.checked = g_alertSettings.cqOnly;
noMyDxcc.checked = g_alertSettings.noMyDxcc;
onlyMyDxcc.checked = g_alertSettings.onlyMyDxcc;
noRoundUp.checked = g_alertSettings.noRoundUp;
onlyRoundUp.checked = g_alertSettings.onlyRoundUp;
usesLoTW.checked = g_alertSettings.usesLoTW;
useseQSL.checked = g_alertSettings.useseQSL;
referenceNeed.value = g_alertSettings.reference;
logEventMedia.value = g_alertSettings.logEventMedia;
setAlertVisual();
2020-08-19 16:55:41 +00:00
}
2020-12-14 02:10:27 +00:00
function newLogEventSetting(obj)
{
g_alertSettings.logEventMedia = obj.value;
localStorage.alertSettings = JSON.stringify(g_alertSettings);
2020-08-19 16:55:41 +00:00
}
2020-12-14 02:10:27 +00:00
function exceptionValuesChanged()
{
setAlertVisual();
2020-09-28 19:28:09 +00:00
g_alertSettings.requireGrid = wantGrid.checked;
2020-09-28 19:28:09 +00:00
g_alertSettings.wantMaxDT = wantMaxDT.checked;
g_alertSettings.wantMinDB = wantMinDB.checked;
g_alertSettings.wantMinFreq = wantMinFreq.checked;
g_alertSettings.wantMaxFreq = wantMaxFreq.checked;
2020-09-28 19:28:09 +00:00
maxDTView.innerHTML = g_alertSettings.maxDT = maxDT.value;
minDbView.innerHTML = g_alertSettings.minDb = minDb.value;
minFreqView.innerHTML = g_alertSettings.minFreq = minFreq.value;
maxFreqView.innerHTML = g_alertSettings.maxFreq = maxFreq.value;
2020-09-28 19:28:09 +00:00
g_alertSettings.cqOnly = cqOnly.checked;
g_alertSettings.noMyDxcc = noMyDxcc.checked;
g_alertSettings.onlyMyDxcc = onlyMyDxcc.checked;
g_alertSettings.noRoundUp = noRoundUp.checked;
g_alertSettings.onlyRoundUp = onlyRoundUp.checked;
g_alertSettings.usesLoTW = usesLoTW.checked;
g_alertSettings.useseQSL = useseQSL.checked;
2020-09-28 19:28:09 +00:00
g_alertSettings.reference = referenceNeed.value;
2020-09-28 19:28:09 +00:00
localStorage.alertSettings = JSON.stringify(g_alertSettings);
2020-08-19 16:55:41 +00:00
}
2020-12-14 02:10:27 +00:00
function hashMaker(band, mode)
{
// "Current Band & Mode"
if (g_alertSettings.reference == 0) return band + mode;
2020-09-28 19:28:09 +00:00
2020-12-14 02:10:27 +00:00
// "Current Band, Any Mode"
if (g_alertSettings.reference == 1) return band;
2020-09-28 19:28:09 +00:00
2020-12-14 02:10:27 +00:00
// "Current Band, Any Digi Mode"
if (g_alertSettings.reference == 2) return band + "dg";
2020-09-28 19:28:09 +00:00
2020-12-14 02:10:27 +00:00
// "Current Mode, Any Band"
if (g_alertSettings.reference == 3) return mode;
2020-08-19 16:55:41 +00:00
2020-12-14 02:10:27 +00:00
// "Any Band, Any Mode"
if (g_alertSettings.reference == 4) return "";
2020-09-28 19:28:09 +00:00
2020-12-14 02:10:27 +00:00
// "Any Band, Any Digit Mode"
if (g_alertSettings.reference == 5) return "dg";
2020-08-19 16:55:41 +00:00
}
2020-12-14 02:10:27 +00:00
function setAlertVisual()
{
if (wantMaxDT.checked == true)
{
maxDT.style.display = "block";
maxDTView.style.display = "block";
2020-12-14 02:10:27 +00:00
}
else
{
maxDT.style.display = "none";
maxDTView.style.display = "none";
}
2020-12-14 02:10:27 +00:00
if (wantMinDB.checked == true)
{
minDb.style.display = "block";
minDbView.style.display = "block";
2020-12-14 02:10:27 +00:00
}
else
{
minDb.style.display = "none";
minDbView.style.display = "none";
}
2020-12-14 02:10:27 +00:00
if (wantMinFreq.checked == true)
{
minFreq.style.display = "block";
minFreqView.style.display = "block";
2020-12-14 02:10:27 +00:00
}
else
{
minFreq.style.display = "none";
minFreqView.style.display = "none";
}
2020-12-14 02:10:27 +00:00
if (wantMaxFreq.checked == true)
{
maxFreq.style.display = "block";
maxFreqView.style.display = "block";
2020-12-14 02:10:27 +00:00
}
else
{
maxFreq.style.display = "none";
maxFreqView.style.display = "none";
}
if (g_callsignLookups.lotwUseEnable == true)
2020-12-14 02:10:27 +00:00
{ usesLoTWDiv.style.display = "block"; }
else usesLoTWDiv.style.display = "none";
if (g_callsignLookups.eqslUseEnable == true)
2020-12-14 02:10:27 +00:00
{ useseQSLDiv.style.display = "block"; }
else useseQSLDiv.style.display = "none";
2020-08-19 16:55:41 +00:00
}
2020-12-14 02:10:27 +00:00
function saveAlertSettings()
{
localStorage.speechSettings = JSON.stringify(g_speechSettings);
localStorage.audioSettings = JSON.stringify(g_audioSettings);
2020-08-19 16:55:41 +00:00
}
2020-12-14 02:10:27 +00:00
function saveAlerts()
{
localStorage.savedAlerts = JSON.stringify(g_alerts);
2020-09-28 19:28:09 +00:00
saveAlertSettings();
2020-08-19 16:55:41 +00:00
}
var g_testAudioTimer = null;
2020-12-14 02:10:27 +00:00
function changeAudioValues()
{
if (g_testAudioTimer) nodeTimers.clearTimeout(g_testAudioTimer);
2020-09-28 19:28:09 +00:00
g_audioSettings.volume = audioVolume.value;
audioVolumeTd.innerText = parseInt(audioVolume.value * 100) + "%";
2020-09-28 19:28:09 +00:00
g_testAudioTimer = nodeTimers.setTimeout(playTestFile, 200);
saveAlertSettings();
2020-08-19 16:55:41 +00:00
}
2020-12-14 02:10:27 +00:00
function playTestFile()
{
playAlertMediaFile("Sysenter-7.mp3");
2020-08-19 16:55:41 +00:00
}
2020-12-14 02:10:27 +00:00
function changeSpeechValues()
{
chrome.tts.stop();
2020-08-19 16:55:41 +00:00
g_speechSettings.volume = speechVolume.value;
g_speechSettings.pitch = speechPitch.value;
g_speechSettings.rate = speechRate.value;
g_speechSettings.phonetics = speechPhonetics.checked;
2020-09-28 19:28:09 +00:00
speechVolumeTd.innerText = speechVolume.value;
speechPitchTd.innerText = speechPitch.value;
speechRateTd.innerText = speechRate.value;
2020-08-19 16:55:41 +00:00
saveAlertSettings();
2020-08-19 16:55:41 +00:00
}
2020-12-14 02:10:27 +00:00
function addNewAlert()
{
var error = "<font color='green'>Added</font>";
var valid = true;
var filename = "";
var shortname = "";
2020-12-14 02:10:27 +00:00
if (alertNotifySelect.value == 0)
{
if (alertMediaSelect.value == "none")
{
valid = false;
Squashed commit of the following: commit afb25f406b51a9d52d35e25cebb78547c964884a Author: Christian Bayer <chrbayer84@googlemail.com> Date: Mon Sep 5 21:45:16 2022 -0400 WIP german translation commit 3abbf5cd5fe89fbe474ade395a1ad2d0ddd8c1b0 Author: Christian Bayer <chrbayer84@googlemail.com> Date: Sat Sep 3 15:06:47 2022 -0400 WIP german translation and some programmatic translation from CR commit 4c8fcc656b4085e88151cb5a3ce9f6c5e5bf3a21 Author: Matthew Chambers <nr0q@gridtracker.org> Date: Mon Aug 15 22:14:16 2022 -0500 progress so far, fixed what got broke in CR and fixed being able to close and reopen CR. still need to get i18n figured out commit 78aaaed2ade1094add163d5850bef6ab1b2226fb Author: Matthew Chambers <nr0q@gridtracker.org> Date: Mon Aug 15 20:19:09 2022 -0500 one step forward, 2 steps backwards commit 903319452bf0c5ed8a2da879281d8b08ef7ff05e Author: Christian Bayer <chrbayer84@googlemail.com> Date: Mon Aug 15 23:23:51 2022 +0200 WIP translating strings in js: roster.js commit 934f619af63a97363dcff19ef2343b3e12e269ee Author: Matthew Chambers <nr0q@gridtracker.org> Date: Mon Aug 15 00:06:13 2022 -0500 add JA because may have a JA contributor commit 8c7bd091acf83b45a8e0957e4990c4660f3673a2 Author: Matthew Chambers <nr0q@gridtracker.org> Date: Sun Aug 14 23:41:29 2022 -0500 all JS files have been passed through, may need another pass through all files though commit 835892b70b7b229fe0d353831271b21fc2fa716a Author: Matthew Chambers <nr0q@gridtracker.org> Date: Sun Aug 14 20:03:18 2022 -0500 Finished gt.js tags commit 404dd1a2477e27b2c665dc3ecaba77dafcc7be20 Author: Matthew Chambers <nr0q@gridtracker.org> Date: Sun Aug 14 18:10:34 2022 -0500 progress so far (up to line 9871 in gt.js) commit c59473f8986fab8b2b336f212b0ead9d10617899 Author: Matthew Chambers <nr0q@gridtracker.org> Date: Sun Aug 14 12:43:01 2022 -0500 add comment between adif and alerts js files in en.json commit 80cb9d5178a255dcc1a15482b0bcabce1555aa61 Author: Matthew Chambers <nr0q@gridtracker.org> Date: Sun Aug 14 12:42:27 2022 -0500 Fix Chinese label to a more proper one commit 08a00eeae86d7d9a97cf17aa6029468024bf6784 Author: Christian Bayer <chrbayer84@googlemail.com> Date: Sun Aug 14 16:54:32 2022 +0200 moved scripts commit 8c9569b1c5f6b4d1b4b92db1ce7806b7246862fe Author: Christian Bayer <chrbayer84@googlemail.com> Date: Sun Aug 14 16:51:10 2022 +0200 started german translation commit b857ecf91e97bed0479ca759eddf234da65c5313 Author: Matthew Chambers <nr0q@gridtracker.org> Date: Sun Aug 14 01:37:39 2022 -0500 tags for adif and alerts js files commit 9c328de842bbe773746beddaeec0d2ea81225752 Author: Christian Bayer <chrbayer84@googlemail.com> Date: Sun Aug 14 08:23:51 2022 +0200 fixed cn.json additonal keys commit 7bc459195f8738cf77835329acf962274cd9cc38 Author: Christian Bayer <chrbayer84@googlemail.com> Date: Sun Aug 14 08:20:22 2022 +0200 Revert "fixed CN.json" This reverts commit f2f71c94dbb8f270aff76223a5d30769d8819b1a. commit 236bea23bd13324f25cbcdbd39c3ec008a679f10 Author: Matthew Chambers <nr0q@gridtracker.org> Date: Sat Aug 13 19:02:49 2022 -0500 cleanup and lint commit a78d32ed1bb5457be0d7e227492cdd1c3e77c431 Author: Matthew Chambers <nr0q@gridtracker.org> Date: Sat Aug 13 19:01:47 2022 -0500 THis works! commit edc0d40256b32f81a135f5efc3819c04018774d6 Author: Matthew Chambers <nr0q@gridtracker.org> Date: Sat Aug 13 18:17:15 2022 -0500 more tweaks trying to make it work commit f2f71c94dbb8f270aff76223a5d30769d8819b1a Author: Matthew Chambers <nr0q@gridtracker.org> Date: Sat Aug 13 17:09:39 2022 -0500 fixed CN.json commit 9b90cf4b142f0c52bd0e4ba7ce926ad145f90ecd Author: Matthew Chambers <nr0q@gridtracker.org> Date: Sat Aug 13 16:33:09 2022 -0500 language change so far commit dd60fc5012fa8f7a8655dacc9b8e0c0237e33f4e Author: Christian Bayer <chrbayer84@googlemail.com> Date: Sat Aug 13 22:19:25 2022 +0200 added missing keys to cn.json commit fc5e25c81a7541d2fe03ed9b79950c4ddbd71abb Author: Matthew Chambers <nr0q@gridtracker.org> Date: Sat Aug 13 15:18:54 2022 -0500 Fixed linting` commit 485adc6da114a28f58e2d112f5f83f7541af9843 Author: Matthew Chambers <nr0q@gridtracker.org> Date: Sat Aug 13 14:57:30 2022 -0500 slight cleanup commit dada794ccdf699fe4eaf179b2cfef2a96e6a82fb Author: Christian Bayer <chrbayer84@googlemail.com> Date: Sat Aug 13 21:55:55 2022 +0200 fixed cn json commit 82809c0458e0b99159e87e1d22eba4cde6339015 Author: Matthew Chambers <nr0q@gridtracker.org> Date: Sat Aug 13 14:45:21 2022 -0500 added dropdown for language in settings commit 3159040b514f497a23b7169fb9512b032ee8b942 Author: Christian Bayer <chrbayer84@googlemail.com> Date: Fri Aug 12 22:29:51 2022 +0200 added raw output of the i18n extractor. needs cleanup commit 8f31e9e757f6c6a29678f0c0bddad1c6dc360df4 Author: Christian Bayer <chrbayer84@googlemail.com> Date: Thu Aug 11 22:29:12 2022 +0200 added i18n generator script based off of a patch file commit de81e35754dd2bb4c838aa6c7bf12a2025b1ded1 Author: Christian Bayer <chrbayer84@googlemail.com> Date: Mon Aug 8 22:20:47 2022 +0200 added cascading install for nested package.json commit bf7ecfeb4f44b0c65bbea0c5a43eb0e809652384 Author: Christian Bayer <chrbayer84@googlemail.com> Date: Mon Aug 8 22:11:18 2022 +0200 added pota key commit e14bca8172272d4a4f53eb5282d3d5576e057a2a Merge: f8c7232 91145aa Author: Matthew Chambers <nr0q@gridtracker.org> Date: Sun Aug 7 18:39:40 2022 +0000 Merge branch 'master' into 'cbayer-i18n' Master See merge request gridtracker.org/gridtracker!182 If this is changing anything in the UI or operational behavior, please prepare to update the wiki! commit f8c7232c38ea4194fa8f69fe5721a74689b7ef2a Author: Matthew Chambers <nr0q@gridtracker.org> Date: Sun Aug 7 12:54:04 2022 -0500 add jquery to npm depends commit 734e972d9e3a66ca8d85debbe1a8f75c6f824020 Author: Matthew Chambers <nr0q@gridtracker.org> Date: Sun Aug 7 12:53:24 2022 -0500 wip, i18n debugging commit 013d9c8ebfc67f0f4ce8a4df8bea86bf812fd880 Author: Christian Bayer <chrbayer84@googlemail.com> Date: Sun Aug 7 10:34:19 2022 +0200 small fixes commit 8da135bb6db8e15069eefb07397c9ceeee6d8bac Merge: 0183434 c1f7f1b Author: Christian Bayer <chrbayer84@googlemail.com> Date: Sat Aug 6 22:39:24 2022 +0200 Merge branch 'master' into cbayer-i18n commit 0183434bba0d7c6b7652b3b8700bac3630902737 Author: Christian Bayer <chrbayer84@googlemail.com> Date: Sat Aug 6 22:27:35 2022 +0200 removed banana import commit 670001a6db028dc93bc56ddb8b29d2e897974ffa Merge: c120df0 236ff10 Author: Matthew Chambers <nr0q@gridtracker.org> Date: Tue May 17 18:38:11 2022 -0500 Merge branch 'master' into cbayer-i18n commit c120df0e3ba77a985fdbd8c9a76028aee9a8d8d0 Author: Matthew Chambers <nr0q@gridtracker.org> Date: Thu Dec 16 15:15:21 2021 -0600 the linter lints commit 2243beddb2aaa1a163b1ba142a95fce60774e2e7 Author: Matthew Chambers <nr0q@gridtracker.org> Date: Thu Dec 16 14:39:00 2021 -0600 mostly finished with gridtracker.html file's i18n commit 33d69c950145dc398d10723f56102dbec77ba0b5 Author: Matthew Chambers <nr0q@gridtracker.org> Date: Thu Dec 16 14:36:34 2021 -0600 add functions to get acks json off website and overwrite file commit 98170dce4f1313cbf42bd0ae4bf5d1c490a077da Author: Matthew Chambers <nr0q@gridtracker.org> Date: Thu Dec 16 15:02:46 2021 -0600 Initial workup for LoTW throttling & diff fetching commit 655c0416635c5cafecaa612f8f6fd9a20db21f58 Author: Matthew Chambers <nr0q@gridtracker.org> Date: Thu Dec 16 14:31:19 2021 -0600 WIP banana i18n commit 26495c1f1436e5b99c317d8305101dbecd8f2b95 Author: Matthew Chambers <nr0q@gridtracker.org> Date: Wed Dec 15 11:52:08 2021 -0600 update rpm spec 1.21.1212 commit e00269304da44ea6da20362f96714584164ba8b2 Author: Matthew Chambers <nr0q@gridtracker.org> Date: Thu Dec 16 14:47:50 2021 -0600 Trigger COPR and AUR repos and build .deb commit 2b2e660108ca4f000a6ac31c347f80010e7b11b8 Author: Matthew Chambers <nr0q@gridtracker.org> Date: Wed Dec 15 11:46:41 2021 -0600 updated changelog / release notes commit 0265f75fd85509081d5992db0d729149521254f5 Author: Matthew Chambers <nr0q@gridtracker.org> Date: Mon Dec 13 20:48:27 2021 -0600 update changelog commit cd28c73c8a1dcb569fe3629e03b8d9646c832e5f Author: Matthew Chambers <nr0q@gridtracker.org> Date: Mon Dec 13 19:04:23 2021 -0600 update changelog commit 058dbea415898134f345653532a3789ee7855ef0 Author: Matthew Chambers <nr0q@gridtracker.org> Date: Mon Dec 13 19:03:46 2021 -0600 Fix #76 commit f50ea44466328d0d632955b8a8725bf780417068 Author: Matthew Chambers <nr0q@gridtracker.org> Date: Mon Dec 13 16:18:51 2021 -0600 update changelog to recent bug fixes commit 3b0c9b5acc8cf3c57a2b0526451edf8250c11b89 Author: Matthew Chambers <nr0q@gridtracker.org> Date: Mon Dec 13 16:18:37 2021 -0600 Fix #91 commit d906ee7d5f18e682ab0b47277474170dd89622de Author: Matthew Chambers <nr0q@gridtracker.org> Date: Mon Dec 13 15:54:51 2021 -0600 Fixes #107 commit 8252ca3f82843758edf5594d804989c3c4a1d6f0 Author: Matthew Chambers <nr0q@gridtracker.org> Date: Mon Dec 13 12:13:23 2021 -0600 fix hunting commit c1f3ae9e1c7605a31635bad8ed5e793f8a5d39d1 Author: Sebastian Delmont <sd@notso.net> Date: Mon Dec 13 13:09:46 2021 -0500 Really fix roster counts commit 0054993dc8ab1406da8b0b4644382f453f9b4584 Author: Sebastian Delmont <sd@notso.net> Date: Mon Dec 13 11:54:19 2021 -0500 Fix roster counts commit 69e1152e7883369b3a818f516f3302681800c241 Author: Matthew Chambers <nr0q@gridtracker.org> Date: Mon Dec 13 10:09:19 2021 -0600 update check for bad dxcc commit a0b2595e9ea38e0a936fb97e691aaa7a7bb2d31e Author: Sebastian Delmont <sd@notso.net> Date: Mon Dec 13 11:04:53 2021 -0500 Fixed spot sorting in refactored code commit 298e8cfbd7b9ee9b4560cb6c66e642e14abcae87 Author: Matthew Chambers <nr0q@gridtracker.org> Date: Sun Dec 12 16:37:52 2021 -0600 update changelog commit eb793d5607721231574a301fe1a4ea577628abf8 Author: Matthew Chambers <nr0q@gridtracker.org> Date: Thu Dec 16 14:47:21 2021 -0600 Update Copyright for 2022 commit 0eb2fac9a0efa2e1b97389a5a09cba4ba83ccfa1 Author: Matthew Chambers <nr0q@gridtracker.org> Date: Thu Dec 16 14:46:52 2021 -0600 change vars to lets per Tag's suggestion commit c78ea075b4f948dc88c91447ff66e471b21cc192 Author: Matthew Chambers <nr0q@gridtracker.org> Date: Sun Dec 12 15:46:17 2021 -0600 RC build commit 0c5cde472bffa1d2e2fe502449164aca153dd159 Author: Matthew Chambers <nr0q@gridtracker.org> Date: Tue Nov 16 04:11:44 2021 +0000 Update .gitlab-ci.yml file commit 492b791bc058555e49a16616ecb32c3cd9dd4ca4 Author: Matthew Chambers <nr0q@gridtracker.org> Date: Tue Nov 16 04:10:31 2021 +0000 Update .gitlab-ci.yml commit e77b9922ed1eea9c0ecd00860a4755b2523dba5b Author: Matthew Chambers <nr0q@gridtracker.org> Date: Tue Nov 16 03:56:53 2021 +0000 Update .gitlab-ci.yml - include security scanning commit 13c1236f7bf50c60756f1688b061f56d14f3afb9 Author: Matthew Chambers <nr0q@gridtracker.org> Date: Thu Dec 16 14:46:20 2021 -0600 Fix acknowledgement icons commit 28772768e8253edfb6b14b3a97908bf8102ad239 Author: Matthew Chambers <nr0q@gridtracker.org> Date: Thu Dec 16 14:45:31 2021 -0600 Add support for Apple Silicon Macs, by hardcoding x64 mode in Phoenix commit 0cec076dbb43d513ec93a63aaf51cf1423a9ebbb Author: Matthew Chambers <nr0q@gridtracker.org> Date: Thu Dec 16 14:45:05 2021 -0600 allow package-lock to be uploaded to repo commit 8b23a4ef25d12c417747b663334b046b723d703a Author: Matthew Chambers <nr0q@gridtracker.org> Date: Sun Dec 12 09:11:24 2021 -0600 beta III of call roster testing commit cc476c84ed84cb7e55e68cf6d482bfdd569f78a0 Author: Matthew Chambers <nr0q@gridtracker.org> Date: Sun Dec 12 09:09:57 2021 -0600 if dxcc = -1, no roster commit ca5a4db664876a48b7d8a5ffaff28d7b067d99d0 Author: nr0q <nr0q@gridtracker.org> Date: Thu Dec 9 20:59:15 2021 -0600 beta version for testing fix to CR commit 5556bbfee08d0d1480d987dc396130cceed6cf20 Author: nr0q <nr0q@gridtracker.org> Date: Thu Dec 9 14:31:02 2021 -0600 a few of SD's roster tweaks commit 2b65f293a788b5c083efd04cfd4c803796df1b03 Author: nr0q <nr0q@gridtracker.org> Date: Thu Dec 9 13:53:20 2021 -0600 could this cure the free text messages breaking the CR? commit 43ea47a09d1058baa6bee5a109d7454cab6218c8 Author: nr0q <nr0q@gridtracker.org> Date: Mon Oct 25 20:43:48 2021 -0500 roll v for beta build commit f1d9db2e6fd14362a4fbf4d742be9a95ee871f0e Author: nr0q <nr0q@gridtracker.org> Date: Mon Oct 25 15:17:33 2021 -0500 better handling of /MM so that it doesn't tear a hole in space-time commit 9fed1b4aca10997081f32e5e1777b52a3072d3d6 Author: nr0q <nr0q@gridtracker.org> Date: Mon Oct 25 14:00:29 2021 -0500 remove the exception handler for callObj.style because need to fix the root cause commit 7a73c988dac34545da26fd4a736a964215ebc872 Author: nr0q <nr0q@gridtracker.org> Date: Mon Oct 25 13:31:15 2021 -0500 handle undefined callObj.style commit 71a2df7e20e8e424aa0ec90ea5d8d9d3492487ff Author: nr0q <nr0q@gridtracker.org> Date: Mon Oct 25 12:42:58 2021 -0500 handle bug line 114 commit 8d5117b76b6844df4eeced0e9f0e01d1e28be2e2 Author: nr0q <nr0q@gridtracker.org> Date: Sun Oct 24 20:36:10 2021 -0500 inc v for beta 2 commit b199c4c4fad3558843d6d21958761ef6b9996fa7 Author: christian <christian_bay@gmx.de> Date: Sun Oct 24 21:23:40 2021 -0400 fixed linting commit 7830e52978f964c5da015b1bb0928f56028c260b Author: nr0q <nr0q@gridtracker.org> Date: Sun Oct 24 20:15:07 2021 -0500 cleaned up linting commit ac51710ff3fb3d296ddd4edeeff4957e677fb6ec Author: Christian Bayer <christian_bay@gmx.de> Date: Sun Oct 24 20:56:21 2021 -0400 fixed reference error on huntedCount commit 66f7ad87b3d91397cab29bc8c0bcca9e137e682e Author: Matthew Chambers <nr0q@gridtracker.org> Date: Thu Dec 16 14:44:39 2021 -0600 fix pack.json and changelog to reflect test V# commit 7a43853533e364cf85e70262b6573afe47542fbc Author: Matthew Chambers <nr0q@gridtracker.org> Date: Thu Dec 16 14:44:14 2021 -0600 add settings.json to gitignore commit 4f2ce9d89099b674fed2c5053cc80f7f9866f325 Author: Matthew Chambers <nr0q@gridtracker.org> Date: Thu Oct 21 00:41:12 2021 +0000 Update package.json commit dbc297a00c6405971219ccba4ad27416ef321282 Author: Matthew Chambers <nr0q@gridtracker.org> Date: Thu Dec 16 14:43:52 2021 -0600 Update package.json commit 6c68a190dbd73b385fbaea9878f513ba0684dc2c Author: Matthew Chambers <nr0q@gridtracker.org> Date: Thu Dec 16 14:43:31 2021 -0600 Update changelog commit 3125b01a17f9fa4c44ec139a4a58fcd8effbf3cd Author: christian <christian@t530> Date: Wed Jul 7 15:08:03 2021 -0400 clear call roster on band change: option added commit 6f4c15c157ff956352bebd9e20a06610ef3d3196 Author: christian <christian@t530> Date: Sun Jul 4 23:07:51 2021 -0400 unknown dxxc filter for roster commit a444d163cae7fd3256992571a2f95b6ac5b921a1 Author: christian <christian@t530> Date: Thu Jul 1 21:39:50 2021 -0400 fixed other sorts commit cb73f21a937c95541ca756ee9988d54f8056fd16 Author: christian <christian@t530> Date: Wed Jun 30 20:37:27 2021 -0400 fixed alert script call commit 2226f707bd41ab4f271ca3b2c8c72f8028735894 Author: christian <christian@t530> Date: Wed Jun 30 07:52:36 2021 -0400 fixed dxcc sorting commit d395b8dd0e0df8fcee8d8da9701428803ef0c5af Author: Matthew Chambers <nr0q@gridtracker.org> Date: Mon Jun 28 23:18:43 2021 -0500 tweak for compact mode commit 86fb507d5a45a3418ae7f98d828e91f74f5af9a9 Author: Matthew Chambers <nr0q@gridtracker.org> Date: Mon Jun 28 23:08:13 2021 -0500 IT WORKS! commit d55ac551d1c1d923b184c121af69d065ccc3eb70 Author: Matthew Chambers <nr0q@gridtracker.org> Date: Mon Jun 28 22:51:52 2021 -0500 fix grid commit 0a85e764931371591899a503609bcafb35babb30 Author: Matthew Chambers <nr0q@gridtracker.org> Date: Mon Jun 28 22:50:49 2021 -0500 bunch of stuff moved to the right places commit 68f81c62003e0826f2766b5065f464d008b95db7 Author: Matthew Chambers <nr0q@gridtracker.org> Date: Mon Jun 28 22:37:49 2021 -0500 fix some small stuff commit db738a4230fd6d6f79c122643ba48d687da783b7 Author: Matthew Chambers <nr0q@gridtracker.org> Date: Mon Jun 28 22:26:40 2021 -0500 lost show bands/modes on render call rows commit 68f7544b1a2e8dfca87bbfc3708aa30aae4b2b31 Author: Matthew Chambers <nr0q@gridtracker.org> Date: Mon Jun 28 22:24:32 2021 -0500 fix line 73 commit 95920077bd64eea14a6dee6f4d112f4f65031450 Author: Matthew Chambers <nr0q@gridtracker.org> Date: Mon Jun 28 22:21:19 2021 -0500 fix line 34 commit 84059439c1108a083f52aed5b2302adca2bb7ead Author: Matthew Chambers <nr0q@gridtracker.org> Date: Mon Jun 28 22:18:32 2021 -0500 fix broken array commit 817e9c5e18868bee13b7dfa029b4bbc008ded300 Author: Matthew Chambers <nr0q@gridtracker.org> Date: Mon Jun 28 22:12:23 2021 -0500 fix sendAlerts undefined object commit 7a0b16d262f77dfbaf56bdeb678637f67f4c45a0 Author: Matthew Chambers <nr0q@gridtracker.org> Date: Mon Jun 28 22:08:06 2021 -0500 more broke fixed commit 6a9896ce4112b3b84fb9f1429285885ed5f8085b Author: Matthew Chambers <nr0q@gridtracker.org> Date: Mon Jun 28 22:00:27 2021 -0500 re-added r_sortFunction that somehow wondered off commit 856a49b720f41c68b91cb38ca135b82cb5a36e09 Author: Matthew Chambers <nr0q@gridtracker.org> Date: Mon Jun 28 21:58:05 2021 -0500 fix some more broken stuff commit 076a7e5eec824af2db9edf8e083807d0dff4fb8d Author: Matthew Chambers <nr0q@gridtracker.org> Date: Mon Jun 28 20:42:07 2021 -0500 fixed a bunch of broken refs to rosterSettings commit 443409b90253c2e45d7d080819286a9b6dd39e88 Author: Matthew Chambers <nr0q@gridtracker.org> Date: Mon Jun 28 19:19:26 2021 -0500 refactor so far commit 1f452992861643d61caf5bcf85739c199a28582b Author: Matthew Chambers <nr0q@gridtracker.org> Date: Mon Jun 28 17:26:44 2021 -0500 big roster refactor - starting Co-authored-by: Sebastian Delmont <sd@notso.net> Matthew Chambers <nr0q@gridtracker.org> commit 4ed8b2c3cbd7e1f850256d4589c7cc6621825eed Author: Matthew Chambers <nr0q@gridtracker.org> Date: Thu Jun 24 18:46:42 2021 -0500 missing comma line 422 commit b089caf50ad28215280b343eca43e816d0e8aaad Author: Matthew Chambers <nr0q@gridtracker.org> Date: Thu Jun 24 18:04:46 2021 -0500 add array with exception test function names, need to create functions yet commit 0b27feb3677218b7a3185ecb8c187384572451eb Author: Matthew Chambers <nr0q@gridtracker.org> Date: Thu Jun 24 11:06:31 2021 -0500 some notes that might aid in refactoring commit 0518d6e40caf7cede1b1a3ecced412d910f3bdeb Author: Matthew Chambers <nr0q@gridtracker.org> Date: Thu Dec 16 14:42:44 2021 -0600 add functions to get acks json off website and overwrite file commit 268459833bdd6bfbb84cd8d05df2a649ab34f1cc Author: Matthew Chambers <nr0q@gridtracker.org> Date: Thu Dec 16 14:41:03 2021 -0600 Initial workup for LoTW throttling & diff fetching commit 9330df84f38f9705d8c6f8ff56bd2479cacd108a Author: nr0q <nr0q@gridtracker.org> Date: Sun Oct 24 12:59:29 2021 -0500 save work so far commit 0761163ddd2b851c617ca6d4cc497f32063c2bf6 Author: nr0q <nr0q@gridtracker.org> Date: Tue Oct 19 21:54:26 2021 -0500 adding i18n to other html files, need to call scripts I think to make them "work" commit 3a00b5b3d0bbbdbb494bd90ba8638f9be0434e6a Author: nr0q <nr0q@gridtracker.org> Date: Tue Oct 19 21:16:02 2021 -0500 i18n chat html and format chat.css commit 220fc036b8b6d200ffbe79a5e293770b9a17d88c Author: nr0q <nr0q@gridtracker.org> Date: Tue Oct 19 20:57:05 2021 -0500 refactor chat css into it's own css file, fix linting in gt.js start adding i18n in chat and bandactivity htmls commit fceaaaa4aa8076ae5dbb544bbe63eef812606503 Author: nr0q <nr0q@gridtracker.org> Date: Tue Oct 19 19:39:21 2021 -0500 update all except hover/title elements with i18n in GridTracker.html commit 215bc2c55c770575a5594a48872b1fb28bb160b1 Author: nr0q <nr0q@gridtracker.org> Date: Tue Oct 19 18:28:48 2021 -0500 mostly finished with gridtracker.html file's i18n commit 9a63953b7d407530cebd9c341ddda3dd08346750 Author: nr0q <nr0q@gridtracker.org> Date: Tue Oct 19 17:58:13 2021 -0500 all through Audio Alerts done commit bbe38ea60d0c7ba8359a4a599ecc2d4e8e8537f7 Author: nr0q <nr0q@gridtracker.org> Date: Tue Oct 19 17:05:47 2021 -0500 check in everything up to mid alert settings commit 99d89f68fca24ded7d4080942aa8303898a3d86c Author: nr0q <nr0q@gridtracker.org> Date: Tue Oct 19 13:00:00 2021 -0500 fix badly broken HTML commit 934f097b7019c9d02e220bd26ab4e2dbf96d252c Author: nr0q <nr0q@gridtracker.org> Date: Tue Oct 19 12:39:04 2021 -0500 update through to Lookup tab commit efd03b85aee05e489a558d3d9769bf524340f769 Author: chrbayer84 <christian_bay@gmx.de> Date: Wed Sep 29 18:04:22 2021 +0000 Update README.md commit ac5299cbb516fefce635a5cd99c72048e4bb678d Author: nr0q <nr0q@gridtracker.org> Date: Wed Sep 29 12:26:50 2021 -0500 add Getting GridTracker to readme commit 8f3a7f81ae27b6d7382ac4b75e89f5582c79c4d2 Author: nr0q <nr0q@gridtracker.org> Date: Tue Sep 28 14:58:22 2021 -0500 copy of NWJS's license commit 645b2222b084b575b8b0b4fb8ea61be8c972b010 Author: T Loomis <tag.loomis@gmail.com> Date: Tue Sep 28 19:09:45 2021 +0000 Removed OAMS messaging pop-up reset commit 17035c84a092be7cabeff4648f9827bc87cf445e Author: Matthew Chambers <nr0q@gridtracker.org> Date: Mon Sep 27 18:04:00 2021 +0000 updated arm to NWJS 0.54.2 with 64 bit capability rolled to v1.21.0928 commit 75421054f92497a4a8f7466eefa4c30684206ac2 Author: Matthew Chambers <nr0q@gridtracker.org> Date: Mon Sep 27 18:00:48 2021 +0000 Treat adif record values as byte length vs string length commit 44d54dd5dfecb3389317f3c6a88793c38c78f7ff Author: Matthew Chambers <NR0Q@gridtracker.org> Date: Thu Sep 16 20:37:04 2021 -0500 updated V-num for beta build commit 50c65ac2c4bdc10da679d495f794e4424981f935 Author: jangliss <jon+gh@netdork.net> Date: Thu Sep 16 20:27:21 2021 -0500 Remove looking at fetched records for last fetch date for LoTW. Use only header commit 421601e36d3bde33c13ae7646f12d4cc1c617eff Author: Matthew Chambers <NR0Q@gridtracker.org> Date: Sun Aug 29 14:39:18 2021 -0500 new donors yay commit 3eb3fa4b21f6ab580ed6f1f8cf348b1e6e1fbe2d Author: Matthew Chambers <NR0Q@gridtracker.org> Date: Sat Aug 28 13:06:48 2021 -0500 acks data update commit cdb524a887cbabfeac288fad2d04f6126665b601 Author: Matthew Chambers <NR0Q@gridtracker.org> Date: Wed Aug 25 14:38:51 2021 -0500 data update commit f91cc0968cdb25164894739693c8bfc15aa7af9d Author: Matthew Chambers <nr0q@gridtracker.org> Date: Mon Jul 5 11:47:16 2021 -0500 acks update 5-july-2021 commit 0ca37bf71eaef8c7423944a478f9b3836d7320c7 Author: Matthew Chambers <nr0q@gridtracker.org> Date: Tue Jun 29 16:41:47 2021 -0500 ack update 29 July 2021 commit 53f6168e2363e26c548d108f735805dcfba8330e Author: Matthew Chambers <nr0q@gridtracker.org> Date: Tue Jun 22 11:49:53 2021 -0500 update acknowledgements.json for 6/22/2021 commit 2b79d75f0989c1fcb35ea90d72266e9238bd285e Author: Matthew Chambers <nr0q@gridtracker.org> Date: Sun Jun 20 13:13:40 2021 -0500 update acknowledgements.json commit c30d004c69824a71d8391129cf38ece5a84dc3a7 Author: Matthew Chambers <nr0q@gridtracker.org> Date: Sat Jun 19 16:19:52 2021 -0500 update acknowledgements.json commit c3bef85eabb56709833ac36fd299cbb90e07aa4f Author: Matthew Chambers <nr0q@gridtracker.org> Date: Sat Jun 19 20:58:02 2021 +0000 Update acks json commit 260e4bc9bc3d15d02b45e5efe0c955c5beaddd27 Author: Matthew Chambers <nr0q@gridtracker.org> Date: Sat Jun 19 12:01:43 2021 -0500 general updates for new general release commit fc742c95a868269ff691b0579aef3c61d6643591 Author: Matthew Chambers <nr0q@gridtracker.org> Date: Sat Jun 19 14:36:13 2021 -0500 fix line 15581 commit 6a04b9cb7bc2c11f458cae3aad8e9569ae7a0a58 Author: Matthew Chambers <nr0q@gridtracker.org> Date: Sat Jun 19 13:44:44 2021 -0500 more better commit 229efb099a1688b00af4469d9d5f3b15f067d84a Author: Matthew Chambers <nr0q@gridtracker.org> Date: Sat Jun 19 13:26:06 2021 -0500 better get acks code (Thanks Tag) commit 7b30fb3093212e034ea57f42090f72ec768f6320 Author: Matthew Chambers <nr0q@gridtracker.org> Date: Sat Jun 19 11:43:05 2021 -0500 fix missing " around http line 11141 commit 24e180ffdcb34c8f26dcf183607c83f704168695 Author: Matthew Chambers <nr0q@gridtracker.org> Date: Sat Jun 19 11:33:04 2021 -0500 call checkForNewAcks when checkForNewVersion commit e9d9f8b24a3bf927040bd7f77227edcaafd631e8 Author: Matthew Chambers <nr0q@gridtracker.org> Date: Sat Jun 19 11:17:29 2021 -0500 add functions to get acks json off website and overwrite file commit 56e4d5816918078152fb74ca8a542179d87b6077 Author: jangliss <jon+gh@netdork.net> Date: Fri Jun 18 20:28:25 2021 -0500 Date.parse behavior to local time instead of UTC commit 74db81d764f165d1c45aab54cd24137062e7a204 Author: jangliss <jon+gh@netdork.net> Date: Thu Jun 17 17:56:37 2021 -0500 More LoTW Fixes to do diff fetching commit cedeef59f878ca42e6190b41d8774ee4ce4eb640 Author: jangliss <jon+gh@netdork.net> Date: Tue Jun 15 21:03:15 2021 -0500 Initial workup for LoTW throttling & diff fetching commit 4576c519c85b0445dad7ba655e2d22b387c9a26f Author: Santiago Mejia <santiago.hi8smx@gmail.com> Date: Wed Jun 16 19:59:05 2021 +0000 Upload New File commit f79010707a3fac0e29c63ef1b741a737bcab522c Author: jangliss <jon+gh@netdork.net> Date: Sat Jun 19 15:44:51 2021 -0500 Fix linting warning commit 9b31e8c1a859fe94109f295f6376d4cffd87a1c2 Author: Matthew Chambers <nr0q@gridtracker.org> Date: Sat Jun 12 22:13:03 2021 -0500 update changelog etc for v1.21.0613 commit 3706978e8b45855f70e4c5723898d0797e7066b5 Author: Matthew Chambers <nr0q@gridtracker.org> Date: Sun Jun 13 03:27:38 2021 +0000 Update acks json commit bbd17c1e32dc2685a57871a446ee8e3d5bc5b3c9 Author: jangliss <jon+gh@netdork.net> Date: Sat Jun 12 22:20:32 2021 -0500 Linting hates me. Remove space on comment. commit 80466b0edab9b138fd78c45ef270ce8a7b644fc1 Author: jangliss <jon+gh@netdork.net> Date: Sat Jun 12 22:08:47 2021 -0500 Fix npm wanting a space after comment syntax commit 5791ba583e4c04de01058807a61af9fb49599114 Author: jangliss <jon+gh@netdork.net> Date: Sat Jun 12 21:55:50 2021 -0500 Temporarily disable LoTW full downloads on startup commit d5478ee4ab7730af7eac637f839a05348558b517 Author: nr0q <nr0q@gridtracker.org> Date: Mon Oct 18 17:17:41 2021 -0500 small fixes in typos in data-i18n tags commit ec541a5a835eec2233d752a88b809ff0dbc9e78b Author: nr0q <nr0q@gridtracker.org> Date: Mon Oct 18 14:08:50 2021 -0500 it all works and created es file for Santiago to start on commit 6c14637639be2e5ff7535c26c5c4f3db07c5add2 Author: nr0q <nr0q@gridtracker.org> Date: Mon Oct 18 13:51:09 2021 -0500 loading the local file helps, added a statup function to do that commit 635431735822ad0385fd713c8def0ffd094fd2ec Author: nr0q <nr0q@gridtracker.org> Date: Wed Oct 13 16:25:07 2021 -0500 add .vscode to gitignore commit 27cc542b65cf486a25ba93fb06901ff7b0a888d8 Author: nr0q <nr0q@gridtracker.org> Date: Wed Oct 13 10:20:55 2021 -0500 finished i18n tags through map vew filters commit ef4683c8ea3235670509a17b4a2b6108c7d27bab Author: nr0q <nr0q@gridtracker.org> Date: Tue Oct 12 20:23:12 2021 -0500 added data-i18n tags up through mapFilter.mode commit 0aa862afbe239cd062902804de9ccad95e354839 Author: nr0q <nr0q@gridtracker.org> Date: Tue Oct 12 16:49:03 2021 -0500 more data-i18n tags commit bbd39a640fd5b31366b141bb687fad04b27c64fd Author: nr0q <nr0q@gridtracker.org> Date: Tue Oct 12 16:07:39 2021 -0500 adding data-i18n fields to tags commit 603c8c039d6ba6113cd2de62c994d8c5bba42e08 Author: nr0q <nr0q@gridtracker.org> Date: Mon Oct 11 17:37:11 2021 -0500 all HTML files done commit 7e97e9d2af6db22b95205ace9a00887b493a2be8 Author: nr0q <nr0q@gridtracker.org> Date: Mon Oct 11 16:08:52 2021 -0500 i18n up to the about tab commit 0c65ab8f3ae0b54f80be894067547bbc5674f5d5 Author: nr0q <nr0q@gridtracker.org> Date: Mon Oct 11 13:51:09 2021 -0500 i18n en strings through audio settings commit 39152109a5156f08f4984364a0f7488cd617dd18 Author: nr0q <nr0q@gridtracker.org> Date: Mon Oct 11 13:18:35 2021 -0500 cleaner keys commit 59a93e3f30cabdc7529aef005b085c3a9e582ecf Author: nr0q <nr0q@gridtracker.org> Date: Mon Oct 11 11:46:28 2021 -0500 i18n through control panel commit 17be5a28434dda24fff0fb7e198cc89ac0bbfb5c Author: nr0q <nr0q@gridtracker.org> Date: Mon Oct 11 10:43:25 2021 -0500 check in what I have so far commit aa65ad9936c7c37ada7b5d8b7263adddf60dec8f Author: christian <christian@t530> Date: Sun Jun 13 14:21:43 2021 -0400 added jquery.i18n commit 9d31645823b45417f393d68951a18b4d05bb8e93 Author: christian <christian@t530> Date: Wed Jun 9 21:29:23 2021 -0400 i18n hook for main gt.html commit 7e9e5b9cfe1bdbbee391565f1fda282a27f0bb55 Author: christian <christian@t530> Date: Mon May 24 21:08:15 2021 -0400 WIP banana i18n
2022-09-06 01:57:15 +00:00
error = $.i18n("alerts.addNew.SelectFile");
2020-12-14 02:10:27 +00:00
}
else
{
filename = alertMediaSelect.value;
shortname = alertMediaSelect.selectedOptions[0].innerText;
}
}
2020-12-14 02:10:27 +00:00
if (valid)
{
if (alertTypeSelect.value == 0 || alertTypeSelect.value == 5)
{
valid = ValidateCallsign(alertValueInput, null);
2020-12-14 02:10:27 +00:00
if (!valid)
{
error = "Invalid Callsign";
}
}
}
2020-12-14 02:10:27 +00:00
if (valid)
{
valid = addAlert(
alertValueInput.value,
alertTypeSelect.value,
alertNotifySelect.value,
alertRepeatSelect.value,
filename,
shortname
);
2020-12-14 02:10:27 +00:00
if (!valid)
{
error = "Duplicate!";
}
}
addError.innerHTML = error;
displayAlerts();
2020-08-19 16:55:41 +00:00
}
2020-12-14 02:10:27 +00:00
function addAlert(value, type, notify, repeat, filename, shortname)
{
var newKey = unique(value + type + notify + repeat + filename);
2020-12-14 02:10:27 +00:00
if (!g_alerts.hasOwnProperty(newKey))
{
var alertItem = Object();
alertItem.value = value;
alertItem.type = type;
alertItem.notify = notify;
alertItem.repeat = repeat;
alertItem.filename = filename;
alertItem.shortname = shortname;
alertItem.lastMessage = "";
alertItem.lastTime = 0;
alertItem.fired = 0;
alertItem.needAck = 0;
g_alerts[newKey] = alertItem;
saveAlerts();
return true;
}
return false; // we have this alert already
2020-08-19 16:55:41 +00:00
}
2020-12-14 02:10:27 +00:00
function deleteAlert(key)
{
delete g_alerts[key];
saveAlerts();
displayAlerts();
2020-08-19 16:55:41 +00:00
}
2020-12-14 02:10:27 +00:00
function resetAlert(key)
{
g_alerts[key].lastMessage = "";
g_alerts[key].lastTime = 0;
g_alerts[key].fired = 0;
g_alerts[key].needAck = 0;
displayAlerts();
2020-08-19 16:55:41 +00:00
}
2020-12-14 02:10:27 +00:00
function processAlertMessage(decodeWords, message, band, mode)
{
if (Object.keys(g_alerts).length == 0)
{
// no alerts, don't bother
return false;
}
else
{
var CQ = false;
var validQTH = false;
var theirGrid = null;
var msgDEcallsign = "";
var found_callsign = null;
// Grab the last word in the decoded message
var grid = decodeWords[decodeWords.length - 1].trim();
2020-12-14 02:10:27 +00:00
if (grid.length == 4)
{
// maybe it's a grid
var LETTERS = grid.substr(0, 2);
var NUMBERS = grid.substr(2, 2);
2020-12-14 02:10:27 +00:00
if (/^[A-R]+$/.test(LETTERS) && /^[0-9]+$/.test(NUMBERS))
{
theirGrid = LETTERS + NUMBERS;
2020-12-14 02:10:27 +00:00
if (theirGrid != "RR73")
{
validQTH = true;
2020-12-14 02:10:27 +00:00
}
else
{
theirGrid = null;
validQTH = false;
}
}
}
if (validQTH) msgDEcallsign = decodeWords[decodeWords.length - 2].trim();
if (validQTH == false && decodeWords.length == 3)
2020-12-14 02:10:27 +00:00
{ msgDEcallsign = decodeWords[decodeWords.length - 2].trim(); }
if (validQTH == false && decodeWords.length == 2)
2020-12-14 02:10:27 +00:00
{ msgDEcallsign = decodeWords[decodeWords.length - 1].trim(); }
if (decodeWords[0] == "CQ")
{
CQ = true;
}
2020-12-14 02:10:27 +00:00
if (decodeWords.length >= 3 && CQ == true && validQTH == false)
{
if (validateNumAndLetter(decodeWords[decodeWords.length - 1].trim()))
2020-12-14 02:10:27 +00:00
{ msgDEcallsign = decodeWords[decodeWords.length - 1].trim(); }
else msgDEcallsign = decodeWords[decodeWords.length - 2].trim();
2020-08-19 16:55:41 +00:00
}
2020-12-14 02:10:27 +00:00
if (decodeWords.length >= 4 && CQ == false)
{
msgDEcallsign = decodeWords[1];
}
2020-12-14 02:10:27 +00:00
var okayToAlert = true;
if (msgDEcallsign + band + mode in g_liveCallsigns)
2020-12-14 02:10:27 +00:00
{ found_callsign = g_liveCallsigns[msgDEcallsign + band + mode]; }
if (okayToAlert == true)
2020-12-14 02:10:27 +00:00
{ return checkAlerts(msgDEcallsign, theirGrid, message, found_callsign); }
}
return false;
2020-08-19 16:55:41 +00:00
}
function checkAlerts(
DEcallsign,
grid,
originalMessage,
callsignRecord,
band,
mode
2020-12-14 02:10:27 +00:00
)
{
var hadAlert = false;
2020-12-14 02:10:27 +00:00
for (var key in g_alerts)
{
var nalert = g_alerts[key];
2020-12-14 02:10:27 +00:00
if (nalert.type == 0)
{
// callsign exatch match
2020-12-14 02:10:27 +00:00
if (DEcallsign == nalert.value)
{
handleAlert(nalert, DEcallsign, originalMessage, callsignRecord);
hadAlert = true;
}
2020-12-14 02:10:27 +00:00
}
else if (grid && nalert.type == 2)
{
// gridsquare
if (
!(DEcallsign + band + mode in g_tracker.worked.call) &&
grid.indexOf(nalert.value) == 0
2020-12-14 02:10:27 +00:00
)
{
handleAlert(nalert, DEcallsign, originalMessage, callsignRecord, grid);
hadAlert = true;
}
2020-12-14 02:10:27 +00:00
}
else if (nalert.type == 4)
{
// QRZ
2020-12-14 02:10:27 +00:00
if (myDEcall.length > 0 && originalMessage.indexOf(myDEcall + " ") == 0)
{
handleAlert(nalert, DEcallsign, originalMessage, callsignRecord);
hadAlert = true;
}
2020-12-14 02:10:27 +00:00
}
else if (nalert.type == 5)
{
// callsign partial
if (
!(DEcallsign + band + mode in g_tracker.worked.call) &&
DEcallsign.indexOf(nalert.value) == 0
2020-12-14 02:10:27 +00:00
)
{
handleAlert(nalert, DEcallsign, originalMessage, callsignRecord);
hadAlert = true;
}
2020-12-14 02:10:27 +00:00
}
else if (nalert.type == 6)
{
// callsign regex
2020-12-14 02:10:27 +00:00
try
{
if (
!(DEcallsign + band + mode in g_tracker.worked.call) &&
DEcallsign.match(nalert.value)
2020-12-14 02:10:27 +00:00
)
{
handleAlert(nalert, DEcallsign, originalMessage, callsignRecord);
hadAlert = true;
}
2020-12-14 02:10:27 +00:00
}
catch (e) {}
}
}
2020-12-14 02:10:27 +00:00
if (hadAlert)
{
displayAlerts();
return true;
}
return false;
2020-08-19 16:55:41 +00:00
}
2020-12-14 02:10:27 +00:00
function handleAlert(nAlert, target, lastMessage, callsignRecord, grid)
{
if (nAlert.fired > 0 && nAlert.repeat == 0) return;
if (nAlert.fired == 1 && nAlert.repeat == 1) return;
nAlert.lastMessage = lastMessage;
nAlert.lastTime = timeNowSec();
2020-12-14 02:10:27 +00:00
if (callsignRecord != null)
{
if (
typeof callsignRecord.rect != "undefined" &&
callsignRecord.rect != null &&
nAlert.notify == 3
2020-12-14 02:10:27 +00:00
)
{
// Fix me
g_map
.getView()
.setCenter(
ol.extent.getCenter(callsignRecord.rect.getGeometry().getExtent())
);
}
}
if (nAlert.notify == 2) nAlert.needAck = 1;
2020-12-14 02:10:27 +00:00
if (nAlert.type == 0 || nAlert.type == 5 || nAlert.type == 6)
{
if (nAlert.notify == 0) playAlertMediaFile(nAlert.filename);
if (nAlert.notify == 1) speakAlertString("Callsign", target, null);
if (nAlert.notify == 2) displayAlertPopUp("Seeking", target, null);
}
2020-12-14 02:10:27 +00:00
if (nAlert.type == 2)
{
if (nAlert.notify == 0) playAlertMediaFile(nAlert.filename);
if (nAlert.notify == 1) speakAlertString("Grid square", grid, null);
if (nAlert.notify == 2) displayAlertPopUp("Gridsquare", grid, target);
}
2020-12-14 02:10:27 +00:00
if (nAlert.type == 4)
{
if (nAlert.notify == 0) playAlertMediaFile(nAlert.filename);
if (nAlert.notify == 1) speakQRZString(target, "Calling", myDEcall);
if (nAlert.notify == 2) displayAlertPopUp("QRZ", null, null);
}
nAlert.fired++;
2020-08-19 16:55:41 +00:00
}
2020-12-14 02:10:27 +00:00
function playAlertMediaFile(filename, overrideMute)
{
if (g_appSettings.alertMute && !overrideMute) return;
// check if this is an alert stored with an older version of GT
// which has a full file path given.
2021-04-03 16:56:39 +00:00
if (path.isAbsolute(filename) && !fs.existsSync(filename))
{
// full alert file name stored with old GT version referencing
// the user media dir. determine basename of the file and try
// constructing the path
filename = path.basename(filename);
}
// construct the path from the user media dir or
// fall back on the global media dir
var fpath = path.join(g_userMediaDir, filename);
if (!fs.existsSync(fpath)) fpath = path.join(g_gtMediaDir, filename);
var audio = document.createElement("audio");
audio.src = "file://" + fpath;
audio.setSinkId(g_soundCard);
audio.volume = g_audioSettings.volume;
audio.play();
2020-08-19 16:55:41 +00:00
}
2020-12-14 02:10:27 +00:00
function stringToPhonetics(string)
{
var newMsg = "";
2020-12-14 02:10:27 +00:00
for (var x = 0; x < string.length; x++)
{
if (g_speechSettings.phonetics == true)
2020-12-14 02:10:27 +00:00
{ newMsg += g_phonetics[string.substr(x, 1)]; }
else
{
if (string.substr(x, 1) == " ") newMsg += ", ";
else newMsg += string.substr(x, 1);
}
2020-08-19 16:55:41 +00:00
if (x != string.length - 1) newMsg += " ";
}
return newMsg;
2020-08-19 16:55:41 +00:00
}
2020-12-14 02:10:27 +00:00
function speakQRZString(caller, words, you)
{
if (g_appSettings.alertMute == 0)
{
var sCaller = "";
var sYou = "";
if (caller) sCaller = stringToPhonetics(caller);
if (you) sYou = stringToPhonetics(you);
2020-12-14 02:10:27 +00:00
if (g_speechAvailable)
{
var speak = sCaller.trim() + ", " + words.trim() + ", " + sYou.trim();
var msg = new SpeechSynthesisUtterance(speak);
msg.lang = g_localeString;
if (g_speechSettings.voice > 0)
2020-12-14 02:10:27 +00:00
{ msg.voice = g_voices[g_speechSettings.voice - 1]; }
msg.rate = g_speechSettings.rate;
msg.pitch = g_speechSettings.pitch;
msg.volume = g_speechSettings.volume;
window.speechSynthesis.speak(msg);
}
}
2020-08-19 16:55:41 +00:00
}
2020-12-14 02:10:27 +00:00
function speakAlertString(what, message, target)
{
if (g_appSettings.alertMute == 0)
{
var sMsg = "";
var sTarget = "";
if (message) sMsg = stringToPhonetics(message);
if (target) sTarget = stringToPhonetics(target);
2020-12-14 02:10:27 +00:00
if (g_speechAvailable)
{
var speak = what.trim() + ", " + sMsg.trim() + ", " + sTarget.trim();
var msg = new SpeechSynthesisUtterance(speak);
msg.lang = g_localeString;
if (g_speechSettings.voice > 0)
2020-12-14 02:10:27 +00:00
{ msg.voice = g_voices[g_speechSettings.voice - 1]; }
msg.rate = g_speechSettings.rate;
msg.pitch = g_speechSettings.pitch;
msg.volume = g_speechSettings.volume;
window.speechSynthesis.speak(msg);
}
}
2020-08-19 16:55:41 +00:00
}
var g_alertFlasher = null;
2020-12-14 02:10:27 +00:00
function unflashAlertPopUp()
{
var worker = "";
var acount = 0;
alertsPopDiv.style.backgroundColor = "#000";
2020-08-19 16:55:41 +00:00
2020-12-14 02:10:27 +00:00
if (Object.keys(g_alerts).length > 0)
{
for (var key in g_alerts)
{
if (g_alerts[key].needAck) acount++;
}
2020-08-19 16:55:41 +00:00
worker +=
"<div style='padding-right:8px;overflow:auto;overflow-x:hidden;height:" +
Math.min(acount * 24 + 23, 500) +
"px;'>";
worker += "<table align='center' class='darkTable' >";
worker += "<tr>";
worker += "<th>Type</th>";
worker += "<th>Value</th>";
worker += "<th>Notify</th>";
worker += "<th>Repeat</th>";
worker += "<th>Filename</th>";
worker += "<th>Alerted</th>";
worker += "<th>Last Message</th>";
worker += "<th>When</th>";
worker += "</tr>";
2020-12-14 02:10:27 +00:00
for (var key in g_alerts)
{
if (g_alerts[key].needAck)
{
worker += "<tr>";
worker += "<td>" + g_alertTypeOptions[g_alerts[key].type] + "</td>";
if (g_alerts[key].type == 0)
2020-12-14 02:10:27 +00:00
{ worker += "<td style='color:yellow'>" + g_alerts[key].value + "</td>"; }
if (g_alerts[key].type == 2)
2020-12-14 02:10:27 +00:00
{ worker += "<td style='color:red'>" + g_alerts[key].value + "</td>"; }
if (g_alerts[key].type == 4)
2020-12-14 02:10:27 +00:00
{ worker += "<td style='color:cyan'>" + myDEcall + "</td>"; }
if (g_alerts[key].type == 5)
2020-12-14 02:10:27 +00:00
{
worker +=
"<td style='color:lightgreen'>" + g_alerts[key].value + "*</td>";
2020-12-14 02:10:27 +00:00
}
if (g_alerts[key].type == 6)
2020-12-14 02:10:27 +00:00
{ worker += "<td style='color:pink'>" + g_alerts[key].value + "</td>"; }
worker += "<td>" + g_alertValueOptions[g_alerts[key].notify] + "</td>";
worker += "<td>" + g_alertRepeatOptions[g_alerts[key].repeat] + "</td>";
worker +=
"<td>" +
(g_alerts[key].shortname.length > 0 ? g_alerts[key].shortname : "-") +
"</td>";
worker += "<td>" + (g_alerts[key].fired > 0 ? "Yes" : "No") + "</td>";
worker +=
"<td style='color:cyan'>" +
(g_alerts[key].lastMessage.length > 0
? g_alerts[key].lastMessage
: "-") +
"</td>";
ageString = userTimeString(g_alerts[key].lastTime * 1000);
worker +=
"<td>" + (g_alerts[key].lastTime > 0 ? ageString : "-") + "</td>";
worker += "</tr>";
}
}
worker += "</table>";
worker += "</div>";
}
alertPopListDiv.style.height = "auto";
alertPopListDiv.innerHTML = worker;
g_alertFlasher = null;
2020-08-19 16:55:41 +00:00
}
2020-12-14 02:10:27 +00:00
function displayAlertPopUp(what, message, target)
{
if (g_alertFlasher) nodeTimers.clearTimeout(g_alertFlasher);
2020-08-19 16:55:41 +00:00
alertPopListDiv.innerHTML =
"<font color='red'><h2>Gathering Alerts<h2></font>";
alertsPopDiv.style.backgroundColor = "#FFF";
alertsPopDiv.style.display = "inline-block";
g_alertFlasher = nodeTimers.setTimeout(unflashAlertPopUp, 100);
2020-08-19 16:55:41 +00:00
}
2020-12-14 02:10:27 +00:00
function ackAlerts()
{
alertsPopDiv.style.display = "none";
2020-12-14 02:10:27 +00:00
for (var key in g_alerts)
{
g_alerts[key].needAck = 0;
}
}
2020-08-19 16:55:41 +00:00
2020-12-14 02:10:27 +00:00
function alertTypeChanged()
{
addError.innerHTML = "";
2020-12-14 02:10:27 +00:00
if (alertTypeSelect.value == 0 || alertTypeSelect.value == 5)
{
alertValueSelect.innerHTML = "";
alertValueSelect.innerHTML =
2020-12-14 02:10:27 +00:00
"<input id=\"alertValueInput\" type=\"text\" class=\"inputTextValue\" maxlength=\"12\" size=\"5\" oninput=\"ValidateCallsign(this,null);\" / >";
ValidateCallsign(alertValueInput, null);
2020-12-14 02:10:27 +00:00
}
else if (alertTypeSelect.value == 2)
{
alertValueSelect.innerHTML = "";
alertValueSelect.innerHTML =
2020-12-14 02:10:27 +00:00
"<input id=\"alertValueInput\" type=\"text\" class=\"inputTextValue\" maxlength=\"6\" size=\"3\" oninput=\"ValidateGridsquareOnly4(this,null);\" / >";
ValidateGridsquareOnly4(alertValueInput, null);
2020-12-14 02:10:27 +00:00
}
else if (alertTypeSelect.value == 4)
{
alertValueSelect.innerHTML =
2020-12-14 02:10:27 +00:00
"<input id=\"alertValueInput\" disabled=\"true\" type=\"text\" class=\"inputTextValue\" value=\"" +
myDEcall +
2020-12-14 02:10:27 +00:00
"\" maxlength=\"12\" size=\"5\" oninput=\"ValidateCallsign(this,null);\" / >";
ValidateCallsign(alertValueInput, null);
2020-12-14 02:10:27 +00:00
}
else if (alertTypeSelect.value == 6)
{
alertValueSelect.innerHTML = "";
alertValueSelect.innerHTML =
2020-12-14 02:10:27 +00:00
"<input id=\"alertValueInput\" type=\"text\" class=\"inputTextValue\" size=\"12\" value=\"^\" oninput=\"ValidateText(this);\" / >";
ValidateText(alertValueInput);
}
}
2020-08-19 16:55:41 +00:00
2020-12-14 02:10:27 +00:00
function alertNotifyChanged(who = "")
{
addError.innerHTML = "";
2020-08-19 16:55:41 +00:00
2020-12-14 02:10:27 +00:00
if (alertNotifySelect.value == 0)
{
alertMediaSelect.style.display = "block";
2020-12-14 02:10:27 +00:00
if (who == "media")
{
playAlertMediaFile(alertMediaSelect.value);
}
2020-12-14 02:10:27 +00:00
}
else
{
alertMediaSelect.style.display = "none";
}
2020-08-19 16:55:41 +00:00
}
g_alertTypeOptions = Array();
g_alertTypeOptions["0"] = "Call (exact)";
g_alertTypeOptions["1"] = "Deprecated";
g_alertTypeOptions["2"] = "Grid";
g_alertTypeOptions["3"] = "Deprecated";
g_alertTypeOptions["4"] = "QRZ";
g_alertTypeOptions["5"] = "Call (partial)";
g_alertTypeOptions["6"] = "Call (regex)";
2020-08-19 16:55:41 +00:00
g_alertValueOptions = Array();
g_alertValueOptions["0"] =
"<img title='Audio File' style='margin:-1px;margin-bottom:-4px;padding:0px' src='/img/icon_audio_16.png'>";
g_alertValueOptions["1"] = "TTS";
g_alertValueOptions["2"] = "PopUp";
g_alertValueOptions["3"] = "MapCenter";
2020-08-19 16:55:41 +00:00
g_alertRepeatOptions = Array();
g_alertRepeatOptions["0"] = "No";
g_alertRepeatOptions["1"] = "Once";
g_alertRepeatOptions["2"] = "Inf";
g_alertRepeatOptions["3"] = "Inf(Session)";
2020-12-14 02:10:27 +00:00
function displayAlerts()
{
var worker = "";
2020-12-14 02:10:27 +00:00
if (Object.keys(g_alerts).length > 0)
{
worker +=
"<div style='padding-right:8px;overflow:auto;overflow-x:hidden;height:" +
Math.min(Object.keys(g_alerts).length * 24 + 23, 312) +
"px;'>";
worker += "<table align='center' class='darkTable' >";
worker += "<tr>";
worker += "<th>Type</th>";
worker += "<th>Value</th>";
worker += "<th>Notify</th>";
worker += "<th>Repeat</th>";
worker += "<th>Filename</th>";
worker += "<th>Alerted</th>";
worker += "<th>Last Message</th>";
worker += "<th>When</th>";
worker += "<th>Reset</th>";
worker += "<th>Delete</th>";
worker += "</tr>";
2020-12-14 02:10:27 +00:00
for (var key in g_alerts)
{
worker += "<tr>";
worker += "<td>" + g_alertTypeOptions[g_alerts[key].type] + "</td>";
if (g_alerts[key].type == 0)
2020-12-14 02:10:27 +00:00
{ worker += "<td style='color:yellow'>" + g_alerts[key].value + "</td>"; }
if (g_alerts[key].type == 2)
2020-12-14 02:10:27 +00:00
{ worker += "<td style='color:red'>" + g_alerts[key].value + "</td>"; }
if (g_alerts[key].type == 4)
2020-12-14 02:10:27 +00:00
{ worker += "<td style='color:cyan'>" + myDEcall + "</td>"; }
if (g_alerts[key].type == 5)
2020-12-14 02:10:27 +00:00
{
worker +=
"<td style='color:lightgreen'>" + g_alerts[key].value + "*</td>";
2020-12-14 02:10:27 +00:00
}
if (g_alerts[key].type == 6)
2020-12-14 02:10:27 +00:00
{ worker += "<td style='color:pink'>" + g_alerts[key].value + "</td>"; }
worker += "<td>" + g_alertValueOptions[g_alerts[key].notify] + "</td>";
worker += "<td>" + g_alertRepeatOptions[g_alerts[key].repeat] + "</td>";
worker +=
"<td>" +
(g_alerts[key].shortname.length > 0 ? g_alerts[key].shortname : "-") +
"</td>";
worker += "<td>" + (g_alerts[key].fired > 0 ? "Yes" : "No") + "</td>";
worker +=
"<td style='color:cyan'>" +
(g_alerts[key].lastMessage.length > 0
? g_alerts[key].lastMessage
: "-") +
"</td>";
ageString = userTimeString(g_alerts[key].lastTime * 1000);
worker +=
"<td>" + (g_alerts[key].lastTime > 0 ? ageString : "-") + "</td>";
worker +=
"<td style='cursor:pointer' onclick='resetAlert(\"" +
key +
"\")'><img src='/img/reset_24x48.png' style='height:17px;margin:-1px;margin-bottom:-3px;padding:0px' ></td>";
worker +=
"<td style='cursor:pointer' onclick='deleteAlert(\"" +
key +
"\")'><img src='/img/trash_24x48.png' style='height:17px;margin:-1px;margin-bottom:-3px;padding:0px'></td>";
worker += "</tr>";
}
worker += "</table>";
worker += "</div>";
}
alertListDiv.innerHTML = worker;
2020-08-19 16:55:41 +00:00
}
2020-12-14 02:10:27 +00:00
function loadClassicAlertView()
{
for (node in g_classicAlerts)
{
what = document.getElementById(node);
2020-12-14 02:10:27 +00:00
if (what != null)
{
if (what.type == "select-one" || what.type == "text")
{
what.value = g_classicAlerts[node];
2020-12-14 02:10:27 +00:00
if (what.id.endsWith("Notify"))
{
var mediaNode = document.getElementById(what.id + "Media");
var wordNode = document.getElementById(what.id + "Word");
2020-12-14 02:10:27 +00:00
if (what.value == "0")
{
mediaNode.style.display = "block";
wordNode.style.display = "none";
2020-12-14 02:10:27 +00:00
}
else
{
mediaNode.style.display = "none";
wordNode.style.display = "block";
}
}
2020-12-14 02:10:27 +00:00
if (what.type == "text")
{
ValidateText(what);
}
2020-12-14 02:10:27 +00:00
}
else if (what.type == "checkbox")
{
what.checked = g_classicAlerts[node];
}
}
}
2020-08-19 16:55:41 +00:00
}
2020-12-14 02:10:27 +00:00
function wantedChanged(what)
{
if (what.type == "select-one" || what.type == "text")
{
g_classicAlerts[what.id] = what.value;
2020-12-14 02:10:27 +00:00
if (what.id.endsWith("Notify"))
{
var mediaNode = document.getElementById(what.id + "Media");
var wordNode = document.getElementById(what.id + "Word");
2020-12-14 02:10:27 +00:00
if (what.value == "0")
{
mediaNode.style.display = "block";
wordNode.style.display = "none";
2020-12-14 02:10:27 +00:00
}
else
{
mediaNode.style.display = "none";
wordNode.style.display = "block";
}
}
2020-12-14 02:10:27 +00:00
if (what.id.endsWith("Media"))
{
if (what.value != "none") playAlertMediaFile(what.value);
}
2020-12-14 02:10:27 +00:00
}
else if (what.type == "checkbox")
{
g_classicAlerts[what.id] = what.checked;
}
localStorage.classicAlerts = JSON.stringify(g_classicAlerts);
2020-08-19 16:55:41 +00:00
}
var g_classic_alert_count_template = {
huntCallsign: 0,
huntGrid: 0,
huntDXCC: 0,
huntCQz: 0,
huntITUz: 0,
2020-12-14 02:10:27 +00:00
huntStates: 0
2020-08-19 16:55:41 +00:00
};
var g_classic_alert_counts = Object.assign({}, g_classic_alert_count_template);
2020-08-19 16:55:41 +00:00
var g_classic_alert_functions = {
huntCallsign: alertCheckCallsign,
huntGrid: alertCheckGrid,
huntDXCC: alertCheckDXCC,
huntCQz: alertCheckCQz,
huntITUz: alertCheckITUz,
2020-12-14 02:10:27 +00:00
huntStates: alertCheckStates
2020-08-19 16:55:41 +00:00
};
var g_classic_alert_words = {
huntCallsign: "Call",
huntGrid: "Grid",
huntDXCC: "DXCC",
huntCQz: "CQ Zone",
huntITUz: "I-T-U Zone",
2020-12-14 02:10:27 +00:00
huntStates: "State"
2020-08-19 16:55:41 +00:00
};
2020-12-14 02:10:27 +00:00
function processClassicAlerts()
{
for (key in g_classic_alert_counts)
{
if (
document.getElementById(key).checked == true &&
g_classic_alert_counts[key] > 0
2020-12-14 02:10:27 +00:00
)
{
var notify = document.getElementById(key + "Notify").value;
2020-12-14 02:10:27 +00:00
if (notify == "0")
{
var media = document.getElementById(key + "Notify" + "Media").value;
if (media != "none") playAlertMediaFile(media);
2020-12-14 02:10:27 +00:00
}
else if (notify == "1")
{
speakAlertString(
document.getElementById(key + "Notify" + "Word").value
);
}
}
}
g_classic_alert_counts = Object.assign({}, g_classic_alert_count_template);
2020-08-19 16:55:41 +00:00
}
2020-12-14 02:10:27 +00:00
function checkClassicAlerts(CQ, callObj, message, DXcall)
{
var didAlert = false;
if (g_alertSettings.cqOnly == true && CQ == false) return didAlert;
if (g_alertSettings.requireGrid == true && callObj.grid.length != 4)
2020-12-14 02:10:27 +00:00
{ return didAlert; }
if (g_alertSettings.wantMinDB == true && message.SR < g_alertSettings.minDb)
2020-12-14 02:10:27 +00:00
{ return didAlert; }
if (
g_alertSettings.wantMaxDT == true &&
Math.abs(message.DT) > g_alertSettings.maxDT
)
2020-12-14 02:10:27 +00:00
{ return didAlert; }
if (
g_alertSettings.wantMinFreq == true &&
message.DF < g_alertSettings.minFreq
)
2020-12-14 02:10:27 +00:00
{ return didAlert; }
if (
g_alertSettings.wantMaxFreq == true &&
message.DF > g_alertSettings.maxFreq
)
2020-12-14 02:10:27 +00:00
{ return didAlert; }
2020-12-14 02:10:27 +00:00
if (DXcall == "CQ RU")
{
if (g_alertSettings.noRoundUp == true) return didAlert;
2020-12-14 02:10:27 +00:00
}
else
{
if (g_alertSettings.onlyRoundUp == true) return didAlert;
}
2020-12-14 02:10:27 +00:00
if (callObj.dxcc == g_myDXCC)
{
if (g_alertSettings.noMyDxcc == true) return didAlert;
2020-12-14 02:10:27 +00:00
}
else
{
if (g_alertSettings.onlyMyDxcc == true) return didAlert;
}
if (
g_callsignLookups.lotwUseEnable == true &&
g_alertSettings.usesLoTW == true
2020-12-14 02:10:27 +00:00
)
{
if (!(callObj.DEcall in g_lotwCallsigns)) return didAlert;
}
if (
g_callsignLookups.eqslUseEnable == true &&
g_alertSettings.useseQSL == true
2020-12-14 02:10:27 +00:00
)
{
if (!(callObj.DEcall in g_eqslCallsigns)) return didAlert;
}
if (DXcall == "CQ DX" && callObj.dxcc == g_myDXCC) return didAlert;
if (
callObj.DEcall + hashMaker(callObj.band, callObj.mode) in
g_tracker.worked.call
)
2020-12-14 02:10:27 +00:00
{ return didAlert; }
2020-12-14 02:10:27 +00:00
for (key in g_classic_alert_functions)
{
if (document.getElementById(key).checked == true)
{
var alerted = g_classic_alert_functions[key](key, callObj);
if (alerted == true) didAlert = true;
g_classic_alert_counts[key] += alerted;
}
}
2020-09-28 19:28:09 +00:00
return didAlert;
2020-08-19 16:55:41 +00:00
}
2020-12-14 02:10:27 +00:00
function alertCheckCallsign(key, callObj)
{
var status = document.getElementById(key + "Need").value;
if (
status == "worked" &&
callObj.DEcall + hashMaker(callObj.band, callObj.mode) in
g_tracker.worked.call
)
2020-12-14 02:10:27 +00:00
{ return 0; }
if (
status == "confirmed" &&
callObj.DEcall + hashMaker(callObj.band, callObj.mode) in
g_tracker.confirmed.call
)
2020-12-14 02:10:27 +00:00
{ return 0; }
return 1;
2020-08-19 16:55:41 +00:00
}
2020-12-14 02:10:27 +00:00
function alertCheckGrid(key, callObj)
{
var status = document.getElementById(key + "Need").value;
if (callObj.grid.length == 0) return 0;
if (
status == "worked" &&
callObj.grid + hashMaker(callObj.band, callObj.mode) in
g_tracker.worked.grid
)
2020-12-14 02:10:27 +00:00
{ return 0; }
if (
status == "confirmed" &&
callObj.grid + hashMaker(callObj.band, callObj.mode) in
g_tracker.confirmed.grid
)
2020-12-14 02:10:27 +00:00
{ return 0; }
return 1;
2020-08-19 16:55:41 +00:00
}
2020-12-14 02:10:27 +00:00
function alertCheckDXCC(key, callObj)
{
var status = document.getElementById(key + "Need").value;
if (
status == "worked" &&
String(callObj.dxcc) + "|" + hashMaker(callObj.band, callObj.mode) in
g_tracker.worked.dxcc
)
2020-12-14 02:10:27 +00:00
{ return 0; }
if (
status == "confirmed" &&
String(callObj.dxcc) + "|" + hashMaker(callObj.band, callObj.mode) in
g_tracker.confirmed.dxcc
)
2020-12-14 02:10:27 +00:00
{ return 0; }
return 1;
}
2020-08-19 16:55:41 +00:00
2020-12-14 02:10:27 +00:00
function alertCheckCQz(key, callObj)
{
var status = document.getElementById(key + "Need").value;
2022-10-07 23:44:11 +00:00
if (status == "worked" && callObj.cqz + "|" + hashMaker(callObj.band, callObj.mode) in g_tracker.worked.cqz) return 0;
2020-09-28 19:28:09 +00:00
2022-10-07 23:44:11 +00:00
if (status == "confirmed" && callObj.cqz + "|" + hashMaker(callObj.band, callObj.mode) in g_tracker.confirmed.cqz) return 0;
2020-09-28 19:28:09 +00:00
return 1;
2020-08-19 16:55:41 +00:00
}
2020-12-14 02:10:27 +00:00
function alertCheckITUz(key, callObj)
{
var status = document.getElementById(key + "Need").value;
2020-08-19 16:55:41 +00:00
2022-10-07 23:44:11 +00:00
if (status == "worked" && callObj.ituz + "|" + hashMaker(callObj.band, callObj.mode) in g_tracker.worked.ituz) return 0;
if (status == "confirmed" && callObj.ituz + "|" + hashMaker(callObj.band, callObj.mode) in g_tracker.confirmed.ituz) return 0;
2020-09-28 19:28:09 +00:00
return 1;
2020-08-19 16:55:41 +00:00
}
2020-12-14 02:10:27 +00:00
function alertCheckStates(key, callObj)
{
if (callObj.dxcc == 291 || callObj.dxcc == 110 || callObj.dxcc == 6)
{
if (callObj.state in g_StateData)
{
var hash = callObj.state + hashMaker(callObj.band, callObj.mode);
var status = document.getElementById(key + "Need").value;
2020-09-28 19:28:09 +00:00
if (status == "worked" && hash in g_tracker.worked.state) return 0;
2020-08-19 16:55:41 +00:00
if (status == "confirmed" && hash in g_tracker.confirmed.state) return 0;
2020-09-28 19:28:09 +00:00
return 1;
}
return 0;
}
return 0;
2020-08-19 16:55:41 +00:00
}