From bd3d63fe2f231d34d2f998a2c6c74ba71fe89036 Mon Sep 17 00:00:00 2001 From: T Loomis Date: Sat, 2 Dec 2023 01:09:18 +0000 Subject: [PATCH] Squashed commits '${title}' --- debian/changelog | 16 + gridtracker.spec | 16 +- package.nw/GridTracker.html | 26 +- package.nw/data/mh-root-prefixed.json | 211 +- package.nw/gt_chat.html | 15 +- package.nw/gt_conditions.html | 3 +- package.nw/gt_roster.html | 846 ++++---- package.nw/gt_update.odt | Bin 84440 -> 87099 bytes package.nw/gt_update.pdf | Bin 80633 -> 84613 bytes package.nw/i18n/cn-t.json | 14 +- package.nw/i18n/cn.json | 14 +- package.nw/i18n/de.json | 20 +- package.nw/i18n/en.json | 14 +- package.nw/i18n/es.json | 14 +- package.nw/i18n/fr.json | 12 +- package.nw/i18n/it.json | 12 +- package.nw/img/pota_icon_active.png | Bin 552 -> 0 bytes package.nw/img/pota_icon_inactive.png | Bin 2187 -> 0 bytes package.nw/lib/defaults.js | 3 + package.nw/lib/gt.js | 343 ++-- package.nw/lib/pota.js | 99 +- package.nw/lib/roster.js | 1698 ++++++++++------- .../lib/roster/prepareRosterSettings.js | 25 - .../lib/roster/processRosterFiltering.js | 45 +- package.nw/lib/roster/processRosterHunting.js | 176 +- package.nw/lib/roster/renderCompactRoster.js | 2 +- package.nw/lib/roster/renderRoster.js | 7 +- .../lib/roster/rosterColumnFunctions.js | 28 +- package.nw/lib/roster/rosterColumns.js | 19 +- package.nw/lib/style.css | 4 - package.nw/lib/style_roster.css | 350 +++- package.nw/package.json | 4 +- 32 files changed, 2430 insertions(+), 1606 deletions(-) delete mode 100644 package.nw/img/pota_icon_active.png delete mode 100644 package.nw/img/pota_icon_inactive.png diff --git a/debian/changelog b/debian/changelog index 1b0e277..d328350 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,19 @@ +gridtracker (1.23.1202) unstable; urgency=low + - BIGCTY - Update from November 29th + - System - Returned LoTW, eQSL and OQRS membership columns to log entries + - System - Fixed initial install window sizes + - Logbook Viewer - Added DXCC reset view button + - Call Roster + - New “Move Column Right” added to right-click Column header + - Fixed handling of compound callsigns + - Fixed saving of Ignored CQ zones and ITU zones + - New Settings Button (Ctrl-S) + - New Callsign / Message Watcher (Ctrl-W or Ctrl-O) + - New Exceptions Settings (Ctrl-E) + - New Ignores Editor / Viewer (Ctrl-I) + - New Columns Editor (Ctrl-C) +-- Tag Loomis Sat, 02 Dec 2023 00:00:00 -0000 + gridtracker (1.23.1112) unstable; urgency=low - Language - Added Français and Italiano (Special thanks to HB9TIH and HB9SNR) - Language - Added Español (Special thanks to KI2D and HI8O) diff --git a/gridtracker.spec b/gridtracker.spec index 2ff7465..a2fb969 100644 --- a/gridtracker.spec +++ b/gridtracker.spec @@ -1,6 +1,6 @@ Name: {{{ git_name name=gridtracker }}} Summary: GridTracker: An Amateur Radio Companion -Version: 1.23.1112 +Version: 1.23.1202 Release: 1%{?dist} BuildArch: noarch Source0: {{{ git_dir_pack }}} @@ -40,6 +40,20 @@ DESTDIR=${RPM_BUILD_ROOT} make clean %license %{_docdir}/%{name}/ %changelog +* Sat Dec 02 2023 Tag Loomis - 1.23.1202-1 + - BIGCTY - Update from November 29th + - System - Returned LoTW, eQSL and OQRS membership columns to log entries + - System - Fixed initial install window sizes + - Logbook Viewer - Added DXCC reset view button + - Call Roster + - New “Move Column Right” added to right-click Column header + - Fixed handling of compound callsigns + - Fixed saving of Ignored CQ zones and ITU zones + - New Settings Button (Ctrl-S) + - New Callsign / Message Watcher (Ctrl-W or Ctrl-O) + - New Exceptions Settings (Ctrl-E) + - New Ignores Editor / Viewer (Ctrl-I) + - New Columns Editor (Ctrl-C) * Sun Nov 12 2023 Tag Loomis - 1.23.1112-1 - Language - Added Français and Italiano (Special thanks to HB9TIH and HB9SNR) - Language - Added Español (Special thanks to KI2D and HI8O) diff --git a/package.nw/GridTracker.html b/package.nw/GridTracker.html index ccca4c7..40668cc 100644 --- a/package.nw/GridTracker.html +++ b/package.nw/GridTracker.html @@ -761,9 +761,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 5 Show US States Award Layer - T - Add TTS Alert - right-click
empty grid + + + 6 @@ -777,9 +777,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 7 Show US Counties Award Layer - V - Add PopUp Alert - right-click
empty grid + + + 8 @@ -910,9 +910,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - M - Add MapCenter Alert - right-click
empty grid + + + F10 Store Map Position 6 Shift-Key @@ -1444,9 +1444,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Text-to-speech Voice - -
- + @@ -3185,8 +3183,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
- +
+
diff --git a/package.nw/data/mh-root-prefixed.json b/package.nw/data/mh-root-prefixed.json index f68b2dc..e2668e7 100644 --- a/package.nw/data/mh-root-prefixed.json +++ b/package.nw/data/mh-root-prefixed.json @@ -1388,6 +1388,7 @@ "VA2VFT", "VA2VVV", "VA3ELE/2", + "VA3ELE/P", "VA3MPM/2", "VA3NA/2", "VA3QSL/1", @@ -1451,6 +1452,7 @@ "VE2NN", "VE2OTT", "VE2OV/P", + "VE2PID/3", "VE2PK/3", "VE2PRG", "VE2QIP/2", @@ -1515,7 +1517,7 @@ "VE9TEN/5", "VE9XX/6", "VE9ZP/4", - "VER20231103", + "VER20231129", "VF0X", "VF0X/M", "VO/DL2GF", @@ -1770,6 +1772,7 @@ "VE2AEJ/3": "04", "VE2MAM/3": "04", "VE2MW/3": "04", + "VE2PID/3": "04", "VE2PK/3": "04", "VE2QLF/3": "04", "VE2QV/3": "04", @@ -1847,6 +1850,7 @@ "VA2VFT": "04", "VA2VVV": "04", "VA3ELE/2": "04", + "VA3ELE/P": "04", "VA3NA/2": "04", "VB2C": "04", "VB2M": "04", @@ -1927,6 +1931,7 @@ "VE2AEJ/3": "04", "VE2MAM/3": "04", "VE2MW/3": "04", + "VE2PID/3": "04", "VE2PK/3": "04", "VE2QLF/3": "04", "VE2QV/3": "04", @@ -2006,6 +2011,7 @@ "VA2VFT": "02", "VA2VVV": "02", "VA3ELE/2": "02", + "VA3ELE/P": "02", "VA3NA/2": "02", "VB2C": "02", "VB2M": "02", @@ -2589,6 +2595,7 @@ "AJ6WA", "AK0O", "AK4CM", + "AK6DA", "K0BHC", "K0ESQ", "K1BZD", @@ -2702,7 +2709,6 @@ "KB7UBH", "KB7VFZ", "KB7YEC", - "KB7ZVZ", "KB8LJT", "KB8QKR", "KB8SBG", @@ -2871,7 +2877,6 @@ "KD8KQL", "KD8RMO", "KD8SOV", - "KD8WMX", "KD9QKS", "KD9TK", "KE0DYM", @@ -3006,6 +3011,7 @@ "KG7JVJ", "KG7MIK", "KG7OQC", + "KG7ORS", "KG7OUF", "KG7OYE", "KG7SEQ", @@ -3286,7 +3292,6 @@ "WA7USX", "WA7YXF", "WB0CMZ", - "WB1BR", "WB1GZL", "WB1ILS", "WB5EAA", @@ -3393,12 +3398,12 @@ "AF7MN", "KD2UVU", "KD8TFY", + "KG7ITH", "KH0WF", "KM4YJH", "KS6EL", "KS6FS", "NH0AA", - "W9CG", "WH6BAR", "WL7BMP" ], @@ -10528,6 +10533,7 @@ "R0QAW/P", "R0SDG/P", "R0UPOL", + "R0UT", "R0WA/P", "R0WX/P", "R100D", @@ -10560,6 +10566,7 @@ "R11QRP/8/P", "R11QRP/9", "R11UND", + "R120RAEM", "R120RB", "R120RDP", "R120RG", @@ -10637,6 +10644,7 @@ "R1DA/8/M", "R1DA/9/M", "R1FW/0", + "R1LK/4", "R1PN/8", "R1ZBH/0", "R1ZY/8", @@ -10718,12 +10726,15 @@ "R2CC/0", "R2DA/9", "R2DG/0", + "R2DUZ/0", "R2DWG/0", "R2DXU/8", "R2EA/8", "R2EC/9", "R2ET/9", + "R2FCE/9", "R2SD/9", + "R2ST/9", "R2VC/9", "R300EKB", "R300NT", @@ -10741,6 +10752,7 @@ "R35NP", "R375I", "R390I", + "R3AR/9", "R3ARS/9", "R3BY/0", "R3CA/0", @@ -10748,12 +10760,14 @@ "R3CA/8", "R3CA/9", "R3CG/8", + "R3DAJ/0", "R3HD/0", "R3HD/9", "R3LA/0", "R3RRC/0", "R3RRC/0/MM", "R3RRC/8", + "R3TIP/0", "R3UBL/9", "R3XX/9", "R3YAB/9/P", @@ -10773,7 +10787,9 @@ "R4FBJ/0/P", "R4FBJ/9/P", "R4WAB/9/P", + "R4WBS/9", "R4YA/8", + "R4YAC/8", "R4YAC/9", "R50CQM", "R50JNV", @@ -10792,6 +10808,7 @@ "R5AF/0", "R5QA/0", "R5QA/9", + "R5QA/M", "R5QA/P", "R63RRC", "R66IOTA", @@ -10825,6 +10842,7 @@ "R7LZ/9", "R7MR/0", "R800SAN", + "R8CDV/0", "R8CW/0", "R8FF/8", "R8JAJ/4", @@ -11069,6 +11087,7 @@ "RC0C", "RC0F", "RC0L", + "RC0W", "RC110RAEM", "RC18EK", "RC1M/8/M", @@ -11086,6 +11105,7 @@ "RC4W/9", "RC5A/0", "RC6AR/0", + "RC6N/0", "RC7LE/9", "RC85AO", "RC8I", @@ -11871,6 +11891,7 @@ "RU27WF", "RU27WN", "RU27WO", + "RU3ADA/9", "RU3BY/0", "RU3DX/0", "RU3FF/0", @@ -11928,6 +11949,7 @@ "RV6LGY/9", "RV6LGY/9/M", "RV6LGY/9/P", + "RV6LVT/9", "RV6MD/9", "RV6YM/9", "RV7AD/0", @@ -11953,6 +11975,7 @@ "RW0BG/9", "RW0CE/9", "RW0QJ/9", + "RW0UM", "RW0UM/0", "RW110RAEM", "RW1AC/9", @@ -11973,6 +11996,7 @@ "RW3GW/0", "RW3LG/0", "RW3SN/9", + "RW3XD/0", "RW3XN/0", "RW3XX/9", "RW3YC/0", @@ -11996,12 +12020,14 @@ "RW55YG", "RW6AHV/9", "RW6BA/9", + "RW6MD/8", "RW6MD/9", "RW80KEDR", "RW8T", "RW8W", "RW90WC", "RW95WJ", + "RW9AV", "RW9C", "RW9FWR/9/M", "RW9JZ/4", @@ -12049,6 +12075,7 @@ "RX6LMQ/0", "RX80SP", "RX95WN", + "RX9CC", "RX9J", "RX9O", "RX9SN/8", @@ -12153,6 +12180,7 @@ "UA0FCB/0/P", "UA0FCB/P", "UA0KBA/9", + "UA0KBG", "UA0KBG/0", "UA0KBG/9", "UA0KBG/9/P", @@ -12168,6 +12196,7 @@ "UA0SDX/0", "UA0SIK/0", "UA0SVD/0", + "UA0UV", "UA0W", "UA0WG/0", "UA0WG/P", @@ -12257,6 +12286,7 @@ "UA9CDC/M", "UA9CDC/P", "UA9CTT/0", + "UA9CTT/9", "UA9CTT/M", "UA9CTT/P", "UA9FL/0", @@ -12279,6 +12309,7 @@ "UA9MRA/9", "UA9MUY/0", "UA9MUY/9", + "UA9MW", "UA9MW/9", "UA9OAP/9/P", "UA9P", @@ -12310,6 +12341,7 @@ "UB2FCO/8", "UB2FCO/8/P", "UB40FSU", + "UB4HOO/9", "UB5O/0", "UB5O/4/M", "UB5O/8", @@ -15207,7 +15239,9 @@ "R34SP": "75", "RD1AL/0": "75", "RI18POL": "75", + "RW9AV": "21", "RW9C": "20", + "RX9CC": "20", "R0MQ/9": "31", "R135TU": "31", "R140TU": "31", @@ -15420,11 +15454,13 @@ "UA9SUV/8": "20", "UC7T/9": "20", "R9MA": "31", + "UA9MW": "31", "R0LY/9": "31", "R0QA/9": "31", "R100MP": "31", "R110RAEM": "31", "R111EK": "31", + "R120RAEM": "31", "R120RW": "31", "R125NSK": "31", "R15CWC/9": "31", @@ -15442,6 +15478,7 @@ "R27OUO": "31", "R2ET/9": "31", "R30SIB": "31", + "R5QA/M": "31", "R7AB/9": "31", "R8OA/9/P": "31", "R8SRR": "31", @@ -15748,6 +15785,7 @@ "UA4PT/0": "32", "UA6BTN/0": "32", "UA9CTT/0": "32", + "UA9CTT/9": "32", "UA9CTT/P": "32", "UA9UAX/9": "32", "UA9WDK/0": "32", @@ -15937,6 +15975,7 @@ "RV3MA/0": "25", "RZ6LL/0": "25", "RZ6MZ/0": "25", + "UA0KBG": "26", "UA1ORT/0": "25", "UA6LP/0": "25", "R01DTV/0": "34", @@ -15945,6 +15984,7 @@ "R150L": "34", "R17CWH": "34", "R195JV": "34", + "R1FW/0": "34", "R20RMP": "34", "R20RRC/0": "34", "R2CC/0": "34", @@ -16077,6 +16117,7 @@ "R4AK/0": "23", "R70ASIA": "23", "R73EPC/P": "23", + "R8CDV/0": "23", "R9OOO/0": "23", "RA/DK2AI/0": "23", "RA/DK2AI/M": "23", @@ -16192,6 +16233,7 @@ "R10RTRS/0": "31", "RA0AM/0": "31", "RA0W": "31", + "RC0W": "31", "RD0W": "31", "RK0W": "31", "RM0W": "31", @@ -16246,7 +16288,6 @@ "UE44Y/9": "32", "UE70Y": "32", "R120RI": "35", - "R1FW/0": "35", "R6MG/0": "35", "R750X": "35", "RD9U/0": "35", @@ -16272,6 +16313,7 @@ "UE23RRC/P": "35", "UE3ATV/0": "35", "UE44V": "35", + "R0UT": "33", "R120RQ": "32", "R16FRA": "32", "R20RCK": "32", @@ -16294,9 +16336,11 @@ "RN9A/0": "32", "RP0UWZ": "32", "RP0UZF": "32", + "RW0UM": "33", "RW0UM/0": "32", "RZ19NY": "32", "UA0DAR/P": "32", + "UA0UV": "33", "UA3AKO/0/M": "32", "UE15UWC": "32", "UE70UVV": "32", @@ -16313,14 +16357,21 @@ "R14CWC/0": "19", "R16KAZ": "18", "R18KDR/0": "19", + "R2DUZ/0": "19", "R2DWG/0": "19", + "R2FCE/9": "18", + "R2ST/9": "18", "R34SP": "40", + "R3DAJ/0": "19", + "R3TIP/0": "19", "R3UBL/9": "18", "R4CDO/9/M": "18", + "R4WBS/9": "18", "RA3TND/0": "19", "RA3TND/9": "18", "RA4AAJ/9": "18", "RC6AR/0": "19", + "RC6N/0": "19", "RD17CW": "19", "RD1AL/0": "40", "RD3ARX/0/P": "19", @@ -16331,13 +16382,17 @@ "RQ17CW": "18", "RQ4D/9": "18", "RU17NY": "18", + "RU3ADA/9": "18", + "RV6LVT/9": "18", "RW1AI/0": "19", + "RW3XD/0": "19", "RX17WG": "19", "RX55YG": "18", "RX80SP": "18", "RY1AAB/0/M": "19", "RY80SP": "19", "UA0ZDA/MM": "29", + "UB4HOO/9": "18", "UB8JDH/0": "19", "UE18U": "18", "UE18Z": "19", @@ -16393,6 +16448,7 @@ "R100MP": "18", "R110RAEM": "18", "R111EK": "18", + "R120RAEM": "18", "R120RW": "18", "R125NSK": "18", "R15CWC/9": "18", @@ -16410,6 +16466,7 @@ "R27OUO": "18", "R2ET/9": "18", "R30SIB": "18", + "R5QA/M": "18", "R7AB/9": "18", "R8OA/9/P": "18", "R8SRR": "18", @@ -16659,6 +16716,7 @@ "R150SU": "16", "R18KDR/4": "16", "R1BIP/9": "16", + "R1LK/4": "16", "R2013CG": "16", "R2015AS": "16", "R2015DS": "16", @@ -17001,6 +17059,7 @@ "UA4PT/0": "18", "UA6BTN/0": "18", "UA9CTT/0": "18", + "UA9CTT/9": "18", "UA9CTT/P": "18", "UA9UAX/9": "18", "UA9WDK/0": "18", @@ -17190,6 +17249,7 @@ "RV3MA/0": "19", "RZ6LL/0": "19", "RZ6MZ/0": "19", + "UA0KBG": "19", "UA1ORT/0": "19", "UA6LP/0": "19", "R01DTV/0": "19", @@ -17198,6 +17258,7 @@ "R150L": "19", "R17CWH": "19", "R195JV": "19", + "R1FW/0": "19", "R20RMP": "19", "R20RRC/0": "19", "R2CC/0": "19", @@ -17330,6 +17391,7 @@ "R4AK/0": "19", "R70ASIA": "19", "R73EPC/P": "19", + "R8CDV/0": "19", "R9OOO/0": "19", "RA/DK2AI/0": "19", "RA/DK2AI/M": "19", @@ -17445,6 +17507,7 @@ "R10RTRS/0": "18", "RA0AM/0": "18", "RA0W": "18", + "RC0W": "18", "RD0W": "18", "RK0W": "18", "RM0W": "18", @@ -17499,7 +17562,6 @@ "UE44Y/9": "23", "UE70Y": "23", "R120RI": "19", - "R1FW/0": "19", "R6MG/0": "19", "R750X": "19", "RD9U/0": "19", @@ -17525,6 +17587,7 @@ "UE23RRC/P": "19", "UE3ATV/0": "19", "UE44V": "19", + "R0UT": "18", "R120RQ": "18", "R16FRA": "18", "R20RCK": "18", @@ -17547,9 +17610,11 @@ "RN9A/0": "18", "RP0UWZ": "18", "RP0UZF": "18", + "RW0UM": "18", "RW0UM/0": "18", "RZ19NY": "18", "UA0DAR/P": "18", + "UA0UV": "18", "UA3AKO/0/M": "18", "UE15UWC": "18", "UE70UVV": "18", @@ -17831,6 +17896,7 @@ "EA6LU/P", "EA6URI/PAZ", "EA6URL/IF", + "EA6XQ/P", "EA7DUT/6", "EA9CI/6", "EA9CP/6", @@ -18047,7 +18113,6 @@ "EA1DAV/8", "EA1EHW/8", "EA1IT/8", - "EA1RCI/P", "EA1YO/8", "EA2EJO/8", "EA2EPY/8", @@ -18090,6 +18155,7 @@ "EB7A/8", "EC1KR/8", "EC2DX/8", + "EC5AHA", "EC7AKV/8", "EC8AFM/LH", "ED4R/8", @@ -19405,8 +19471,7 @@ "worked_modes": {}, "confirmed_modes": {}, "direct": [ - "ET3AA/YOTA", - "VERSION" + "ET3AA/YOTA" ], "prefixITU": {}, "prefixCQ": {}, @@ -20344,6 +20409,7 @@ "R01DTV/6", "R01DTV/7", "R0AAE/6", + "R0AAI/4", "R0AGD/6", "R0AI/3", "R0AI/M", @@ -20351,15 +20417,20 @@ "R0BM/6", "R0CAF/1", "R0CAF/3", + "R0CBK/3", "R0CDP/3", "R0CM/4", + "R0DAD/7", "R0IA/3", "R0IT/6", + "R0QAO/3", "R0QAW/3", "R0RA/7", "R0SBC/6", "R0UAR/6", + "R0UTC/6", "R0WAS/1/P", + "R0WBQ/3", "R0XAC/1", "R0XAD/6/P", "R0XAI/7", @@ -20380,6 +20451,8 @@ "R170SG", "R18ISL", "R18PER", + "R1AT", + "R1CAA", "R1CF/M", "R2014I", "R2014WOG", @@ -20438,7 +20511,6 @@ "R4WAN/P", "R50VAZ", "R5QA/1", - "R5QA/M", "R5QQ/1", "R5VAJ/N", "R65RKP", @@ -20521,6 +20593,7 @@ "R8FF/M", "R8FF/P", "R8FR/4/M", + "R8KBB/7", "R8MB/1", "R8MB/1/P", "R8QAN/4", @@ -20590,6 +20663,7 @@ "R9J/1", "R9JBF/1", "R9JBF/4", + "R9JBH/6", "R9JBH/7", "R9JBN/3/P", "R9JBN/4", @@ -20599,6 +20673,7 @@ "R9JO/6", "R9JQ/6", "R9KC/4/M", + "R9KC/6", "R9KC/6/M", "R9KC/8/M", "R9KD/6", @@ -20619,6 +20694,7 @@ "R9PA/4", "R9SAO/1", "R9UG/3", + "R9UGW/6", "R9UT/4", "R9WGM/6/M", "R9WI/4/P", @@ -20628,6 +20704,7 @@ "R9XC/1", "R9XC/4", "R9XD/6", + "R9XE/3", "R9XT/1", "R9XT/6", "R9XV/6", @@ -20705,9 +20782,12 @@ "RA9DF/6/P", "RA9FAA/4/M", "RA9FBV/1", + "RA9FDR/3", + "RA9FDR/4", "RA9FDR/4/P", "RA9FDR/M", "RA9FEU/M", + "RA9FLR/3", "RA9FNV/1", "RA9FR/4/M", "RA9FR/4/P", @@ -20743,6 +20823,7 @@ "RA9SC/4/P", "RA9SGI/1", "RA9ST/3/P", + "RA9UDK/1", "RA9UEZ/6", "RA9UF/4", "RA9ULL/6", @@ -20766,6 +20847,7 @@ "RA9XY/3", "RA9Y/4", "RA9YA/6", + "RC0XC/3", "RC18SA", "RC1O", "RC1Z", @@ -20782,12 +20864,14 @@ "RC8C/6", "RC8X", "RC9F", + "RC9WD/6", "RC9X", "RC9XM/1", "RC9YA/3/P", "RC9YA/4/M", "RD0L/3", "RD1A/M", + "RD1A/MM", "RD4CBQ/9", "RD4I", "RD80KF", @@ -20860,6 +20944,7 @@ "RL9AA/6", "RL9F", "RL9X", + "RL9Y/4", "RM0F/3", "RM0F/7", "RM0L/1", @@ -20885,6 +20970,7 @@ "RM8X/3", "RM90FA", "RM94AE", + "RM9J/4", "RM9T/4/P", "RM9WN/1", "RM9X", @@ -21096,6 +21182,7 @@ "RU0LM/4", "RU0ZW/3", "RU0ZW/6", + "RU1AC", "RU1ZC/ANT", "RU27FQ", "RU27FW", @@ -21122,6 +21209,7 @@ "RU80OW", "RU80SB", "RU80TO", + "RU8R/6", "RU8X", "RU8X/1", "RU90FA", @@ -21178,7 +21266,9 @@ "RV9LC/6", "RV9LM/3", "RV9LM/3/P", + "RV9MD/3", "RV9MD/4", + "RV9WB/3", "RV9WB/4", "RV9WB/6", "RV9WB/M", @@ -21289,6 +21379,7 @@ "RZ9HG/6", "RZ9HK/3/P", "RZ9HT/6", + "RZ9OL/3", "RZ9OL/3/M", "RZ9OL/3/P", "RZ9ON/6", @@ -21325,6 +21416,7 @@ "UA0KT/4", "UA0LEC/6", "UA0LLM/5", + "UA0LLM/6", "UA0LQQ/6/P", "UA0QBC/3", "UA0QBR/6", @@ -21332,11 +21424,14 @@ "UA0QJA/4", "UA0QJE/3", "UA0QNE/3", + "UA0QNE/6", "UA0QNI/3", "UA0QNU/3", "UA0QNV/3", "UA0QQJ/3", "UA0QQO/3", + "UA0QQX/3", + "UA0QQX/6", "UA0S/4", "UA0SC/4", "UA0SEP/6", @@ -21349,10 +21444,12 @@ "UA0ZED/6", "UA0ZL/6", "UA0ZS/6", + "UA1A", "UA1ADQ/ANT", "UA1BJ/ANT", "UA1CDA/LH", "UA1CIO/LH", + "UA1F", "UA1JJ/ANT", "UA1PAC/1/ANT", "UA1PAC/ANT", @@ -21452,6 +21549,8 @@ "UA9KAS/6", "UA9KAS/6/P", "UA9KB/6", + "UA9KBC/4", + "UA9KBC/6", "UA9KBF/4", "UA9KBF/4/N", "UA9KBF/6", @@ -21491,6 +21590,7 @@ "UA9UAX/7/M", "UA9UDX/1", "UA9VR/6", + "UA9WMN/4", "UA9WQK/6", "UA9XC/1", "UA9XC/6", @@ -21506,7 +21606,9 @@ "UA9XRP/1", "UA9XX/4", "UA9XZ/3", + "UB0ADL/4", "UB0ADL/6", + "UB0AHN/4", "UB0AJJ/3", "UB0AZR/3", "UB0IBA/7", @@ -21523,6 +21625,8 @@ "UB5O/M", "UB8ADI/5", "UB8ADI/6", + "UB8AFZ/3", + "UB8FCO/3", "UB8JAF/3", "UB9YUW/1", "UC0LAF/3", @@ -22327,6 +22431,11 @@ "RP8X": "30", "RU4SS/9": "30", "RU4WA/9": "30", + "R1AT": "19", + "RU1AC": "19", + "UA1A": "19", + "UA1F": "19", + "R1CAA": "19", "R01DTV/1": "19", "R100RK": "19", "R20RTP": "19", @@ -22445,6 +22554,7 @@ "R325Z": "19", "RA9CFH/1": "19", "RA9CFH/1/P": "19", + "RA9UDK/1": "19", "RC1Z": "19", "RJ1Z": "19", "RK21Z": "19", @@ -22713,7 +22823,6 @@ "UA9CGL/M": "30", "UA9CUA/4/M": "30", "UA9UAX/4": "30", - "UB5O/M": "30", "UC8F": "30", "UD8F": "30", "UE16SA": "30", @@ -22806,6 +22915,7 @@ "directCQ": { "R25EMW": "17", "RA3CQ/9/M": "17", + "RD1A/MM": "40", "RG50P": "17", "RG50P/9": "17", "RI0SP": "40", @@ -22880,7 +22990,6 @@ "UA9CGL/M": "17", "UA9CUA/4/M": "17", "UA9UAX/4": "17", - "UB5O/M": "17", "UC8F": "17", "UD8F": "17", "UE16SA": "17", @@ -23251,6 +23360,7 @@ "TO1A", "TO2A", "TO2BC", + "TO2FY", "TO5BR", "TO5G", "TO5NED", @@ -26483,6 +26593,8 @@ "LU6YBK/Y", "LU6YSG/Y", "LU7AA/D", + "LU7AA/GA", + "LU7AA/L", "LU7AA/U", "LU7AC/D", "LU7ADC/D", @@ -26501,6 +26613,7 @@ "LU7CAW/D", "LU7CC/D", "LU7CC/E", + "LU7CGL/D", "LU7CP/D", "LU7DAC/D", "LU7DAF/D", @@ -30777,6 +30890,8 @@ "N6GOZ", "N6IKX", "N6KB", + "N6LTM", + "N6LZL", "N6OM", "N6PJQ", "N6QBK", @@ -30799,7 +30914,6 @@ "N9GFL", "N9PPF", "N9SBL", - "NB6R", "ND1A", "NE7SO", "NH2CC", @@ -30850,6 +30964,7 @@ "W6AKL", "W6CWJ", "W6DSD", + "W6GKL", "W6KCH", "W6KEV", "W6KIT", @@ -31411,7 +31526,8 @@ "4U150ITU", "4U1ITU", "4U1WRC", - "4U2WRC" + "4U2WRC", + "VERSION" ], "prefixITU": {}, "prefixCQ": {}, @@ -31881,6 +31997,7 @@ "RP76KB", "RQ2K", "RT2F", + "RT9K/2", "RT9T/2", "RU2F", "RU3FS/2", @@ -36360,6 +36477,7 @@ "worked_modes": {}, "confirmed_modes": {}, "direct": [ + "8J130TAM/JD", "8N1OGA", "JQ1CJK/P", "JR7ISY/JD1/CM" @@ -36644,6 +36762,7 @@ "KB2TID", "KB2TSM", "KB2VHY", + "KB2VIC", "KB2WKT", "KB2YKJ", "KB3BPK", @@ -42472,6 +42591,7 @@ "GB2AST", "GB2AYR", "GB2BAJ", + "GB2BD", "GB2BHM", "GB2BHS", "GB2BMJ", @@ -43433,6 +43553,7 @@ "EA1RCI/ICA", "EA1RCI/JBN", "EA1RCI/KD", + "EA1RCI/P", "EA1RCI/PAZ", "EA1RCI/PCV", "EA1RCI/RCC", @@ -43493,7 +43614,6 @@ "EA6RC/4", "EA6SK/2", "EA6SK/7", - "EA6XQ/P", "EA7CFU/U", "EA7FC/FCJ", "EA7HZ/F", @@ -46073,9 +46193,11 @@ "KB7VUR", "KB7YNO", "KB7ZEM", + "KB7ZVZ", "KB8JUT", "KB8NRB", "KB8YYA", + "KB9EZX", "KB9KHC", "KB9LHT", "KB9OEC", @@ -46225,6 +46347,7 @@ "KD8LNA", "KD8MDW", "KD8QML", + "KD8WMX", "KD9LE", "KD9Q/M", "KD9TWW", @@ -46617,6 +46740,7 @@ "KH6JJN", "KH6JJN/P", "KH6JJS", + "KH6JKG", "KH6JKL", "KH6JKQ", "KH6JMK", @@ -47190,6 +47314,7 @@ "KL2LN", "KL2LT", "KL2LU", + "KL2LZ", "KL2MA", "KL2MB", "KL2MI", @@ -48349,6 +48474,7 @@ "N7TSV", "N7VWB", "N7VWD", + "N7VYQ", "N7YHF", "N7YPQ", "N7ZHK", @@ -48377,6 +48503,7 @@ "N9VHU", "N9ZP", "NA1AA", + "NB6R", "NC6A", "NC6W", "ND2Y", @@ -48467,6 +48594,7 @@ "NH6HX/4", "NH6HZ", "NH6IH", + "NH6IK", "NH6J", "NH6J/6", "NH6JX", @@ -48763,6 +48891,7 @@ "NL7WJ", "NL7WM", "NL7WY", + "NL7XK", "NL7XM", "NL7XM/B", "NL7XO", @@ -49132,6 +49261,7 @@ "W8WH", "W9AGH", "W9CCC", + "W9CG", "W9EL", "W9HJW", "W9IS", @@ -49171,6 +49301,7 @@ "WB0BNR", "WB0EST", "WB0YUL", + "WB1BR", "WB2AC", "WB3JIC", "WB4LMK", @@ -49422,6 +49553,7 @@ "WH6EKI", "WH6EKV", "WH6EKW", + "WH6ELE", "WH6ELG", "WH6ELM", "WH6EMF", @@ -49443,6 +49575,7 @@ "WH6EUA", "WH6EUH", "WH6EVP", + "WH6EVX", "WH6EWB", "WH6EWC", "WH6EWE", @@ -49459,6 +49592,7 @@ "WH6FEU", "WH6FGK", "WH6FGM", + "WH6FHF", "WH6FIR", "WH6FJR", "WH6FJZ", @@ -51368,6 +51502,7 @@ "KB0UNL": "07", "KB1GC": "07", "KB7ZEM": "07", + "KB9EZX": "07", "KC0GFG": "07", "KC0KWS": "07", "KC0RMR/AT": "07", @@ -51450,6 +51585,7 @@ "KL2BG": "07", "KL2FU": "07", "KL2GR": "07", + "KL2LZ": "07", "KL2NS": "07", "KL2QO": "07", "KL2SX": "07", @@ -51776,6 +51912,7 @@ "NH0H": "08", "NH2H": "08", "NH6IH": "08", + "NH6IK": "08", "NH6XW": "08", "NH6ZB": "08", "NH7FU": "08", @@ -51823,6 +51960,7 @@ "WA1BDA": "08", "WA1WCC/100RCA": "08", "WA1WCC/IMD": "08", + "WB1BR": "08", "WD0FPY/1/LH": "08", "WH0EWX": "08", "WH2B": "08", @@ -53818,6 +53956,7 @@ "WH6FAD": "07", "WH6FGK": "07", "WH6FGM": "07", + "WH6FHF": "07", "WH6FTZ": "07", "WH6FZ/5": "07", "WH6FZN": "07", @@ -54419,6 +54558,7 @@ "WH6EEZ": "06", "WH6EHY": "06", "WH6EKB": "06", + "WH6ELE": "06", "WH6ENG": "06", "WH6EUH": "06", "WH6EZW": "06", @@ -54715,6 +54855,7 @@ "KB7QEE": "06", "KB7RQP": "06", "KB7VUR": "06", + "KB7ZVZ": "06", "KB8YYA": "06", "KB9LHT": "06", "KC0ZER": "06", @@ -54832,6 +54973,7 @@ "KH6JIM": "06", "KH6JIM/7": "06", "KH6JJS": "06", + "KH6JKG": "06", "KH6JKL": "06", "KH6JMK": "06", "KH6JPJ": "06", @@ -55353,6 +55495,7 @@ "N7TOF": "06", "N7VWB": "06", "N7VWD": "06", + "N7VYQ": "06", "N7YHF": "06", "N7YPQ": "06", "N7ZHK": "06", @@ -55361,6 +55504,7 @@ "N9CRQ": "06", "N9QPQ/M": "06", "NA1AA": "06", + "NB6R": "06", "NG1T": "06", "NH0AD": "06", "NH0F": "06", @@ -55596,6 +55740,7 @@ "WH6EQH": "06", "WH6ESS": "06", "WH6ETO": "06", + "WH6EVX": "06", "WH6EWC": "06", "WH6EWE": "06", "WH6FCT": "06", @@ -55796,6 +55941,7 @@ "KC8DXI": "08", "KC8NMN": "08", "KD8CG/LH": "08", + "KD8WMX": "08", "KE6VNI": "08", "KH6BZF/8": "08", "KH6DHK": "08", @@ -56038,6 +56184,7 @@ "NP4ZI": "08", "NW9F": "08", "W3ED": "08", + "W9CG": "08", "W9EL": "08", "W9HJW": "08", "W9IS": "08", @@ -56230,6 +56377,7 @@ "NH7RE": "08", "NL7HH": "08", "NL7OE": "08", + "NL7XK": "08", "NL7YU": "08", "NP2KS": "08", "NP2PC": "08", @@ -56404,6 +56552,7 @@ "KB0UNL": "04", "KB1GC": "04", "KB7ZEM": "04", + "KB9EZX": "04", "KC0GFG": "04", "KC0KWS": "04", "KC0RMR/AT": "04", @@ -56486,6 +56635,7 @@ "KL2BG": "04", "KL2FU": "04", "KL2GR": "04", + "KL2LZ": "04", "KL2NS": "04", "KL2QO": "04", "KL2SX": "04", @@ -56812,6 +56962,7 @@ "NH0H": "05", "NH2H": "05", "NH6IH": "05", + "NH6IK": "05", "NH6XW": "05", "NH6ZB": "05", "NH7FU": "05", @@ -56859,6 +57010,7 @@ "WA1BDA": "05", "WA1WCC/100RCA": "05", "WA1WCC/IMD": "05", + "WB1BR": "05", "WD0FPY/1/LH": "05", "WH0EWX": "05", "WH2B": "05", @@ -58854,6 +59006,7 @@ "WH6FAD": "04", "WH6FGK": "04", "WH6FGM": "04", + "WH6FHF": "04", "WH6FTZ": "04", "WH6FZ/5": "04", "WH6FZN": "04", @@ -59455,6 +59608,7 @@ "WH6EEZ": "03", "WH6EHY": "03", "WH6EKB": "03", + "WH6ELE": "03", "WH6ENG": "03", "WH6EUH": "03", "WH6EZW": "03", @@ -59751,6 +59905,7 @@ "KB7QEE": "03", "KB7RQP": "03", "KB7VUR": "03", + "KB7ZVZ": "03", "KB8YYA": "03", "KB9LHT": "03", "KC0ZER": "03", @@ -59868,6 +60023,7 @@ "KH6JIM": "03", "KH6JIM/7": "03", "KH6JJS": "03", + "KH6JKG": "03", "KH6JKL": "03", "KH6JMK": "03", "KH6JPJ": "03", @@ -60389,6 +60545,7 @@ "N7TOF": "03", "N7VWB": "03", "N7VWD": "03", + "N7VYQ": "03", "N7YHF": "03", "N7YPQ": "03", "N7ZHK": "03", @@ -60397,6 +60554,7 @@ "N9CRQ": "03", "N9QPQ/M": "03", "NA1AA": "03", + "NB6R": "03", "NG1T": "03", "NH0AD": "03", "NH0F": "03", @@ -60632,6 +60790,7 @@ "WH6EQH": "03", "WH6ESS": "03", "WH6ETO": "03", + "WH6EVX": "03", "WH6EWC": "03", "WH6EWE": "03", "WH6FCT": "03", @@ -60832,6 +60991,7 @@ "KC8DXI": "04", "KC8NMN": "04", "KD8CG/LH": "04", + "KD8WMX": "04", "KE6VNI": "04", "KH6BZF/8": "04", "KH6DHK": "04", @@ -61074,6 +61234,7 @@ "NP4ZI": "04", "NW9F": "04", "W3ED": "04", + "W9CG": "04", "W9EL": "04", "W9HJW": "04", "W9IS": "04", @@ -61266,6 +61427,7 @@ "NH7RE": "04", "NL7HH": "04", "NL7OE": "04", + "NL7XK": "04", "NL7YU": "04", "NP2KS": "04", "NP2PC": "04", @@ -70744,6 +70906,7 @@ "confirmed_modes": {}, "direct": [ "K4CY/M", + "K4CY/P", "YI1IRQ/ND" ], "prefixITU": {}, @@ -72660,6 +72823,15 @@ "A60WARD/7", "A60WARD/8", "A60WARD/9", + "A60WRC/0", + "A60WRC/1", + "A60WRC/2", + "A60WRC/3", + "A60WRC/4", + "A60WRC/5", + "A60WRC/7", + "A60WRC/8", + "A60WRC/9", "A60WSW/1", "A60WSW/2", "A60WSW/3", @@ -76060,7 +76232,9 @@ "direct": [ "7O/DL7ZM", "7O2A", + "7O2WX", "7O6T", + "7O73T", "7O8AD", "7O8AE" ], @@ -76069,14 +76243,18 @@ "directITU": { "7O/DL7ZM": "48", "7O2A": "48", + "7O2WX": "48", "7O6T": "48", + "7O73T": "48", "7O8AD": "48", "7O8AE": "48" }, "directCQ": { "7O/DL7ZM": "37", "7O2A": "37", + "7O2WX": "37", "7O6T": "37", + "7O73T": "37", "7O8AD": "37", "7O8AE": "37" } @@ -76603,6 +76781,7 @@ "FO/AC4LN/M", "FO/DJ7RJ", "FO/DL5XU", + "FO/F5JRX", "FO/F6BFH/P", "FO/F6COW", "FO/F6EPY", diff --git a/package.nw/gt_chat.html b/package.nw/gt_chat.html index bfd50f3..8492033 100644 --- a/package.nw/gt_chat.html +++ b/package.nw/gt_chat.html @@ -76,14 +76,25 @@ wrapperDiv.style.display = "block"; } + document.addEventListener("keydown", handleEnter, false); document.addEventListener("keyup", handleKey, false); + function handleEnter(event) + { + if (event.key == "Enter") + { + event.preventDefault(); + return false; + } + return true; + } + function handleKey(event) { if (event.key == "Enter") { // Do work - var msg = messageInput.value.replace(/[\n\r]/g, ''); + var msg = messageInput.value.trim(); if (msg.length > 0 && g_currentId != 0 && g_currentId in window.opener.GT.gtFlagPins && window.opener.GT.gtFlagPins[g_currentId].canmsg == true) { var worker = ""; @@ -673,7 +684,7 @@
- +
diff --git a/package.nw/gt_roster.html b/package.nw/gt_roster.html index 3a14a40..3725d7a 100644 --- a/package.nw/gt_roster.html +++ b/package.nw/gt_roster.html @@ -44,17 +44,432 @@ +
+
+ +
+
+ + + + + +
+
+
+ + + + + + + +
Animate 'CQ GT'
+ +
+
+
+ + + + + + + +
Window Always On Top
+ +
+
+
+ + + + + + + + + + +
Roster Max Age
2m 0s
+ +
+
+
+
+ + + + + + + +
Clear Roster on Band change
+ +
+
+
+ + + + + + + + + + + +
Decode Delay On Focus
+ +
+ +
+
+
+
Compact Mode
+
+
+
+
+
+ + + + + + + + + + +
Window Filters
+
+ + + + + + + + + + +
Brightness
+ +
+
+
+ + + + + + + + + + +
Contrast
+ +
+
+
+ + + + + + + + + + +
Saturate
+ +
+
+
+
+ + + + + + + + + + +
Invert
+ +
+
+
+ + + + + + + + + + +
Sepia
+ +
+
+
+ + + + + + + + + + +
Hue Rotate
+ +
+
+
+
+
Reset Filters + (Ctrl-R)
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRegexInputStart
Date
UTCEnd
Date
UTCAuto
Delete
ClearSave
+ + + + + + + + + + + + + + + + + + 🛑
+
+
+
+
+
+
+ + +
+ +
+ + +

+ + +

+ +
+ + + -24 +

+ +

+ +
+ + + .5 +

+ +

+
+ + + 400 +

+ +

+
+ + + 3500 +

+ +

+
+ + + 3 +

+ + +

+
+ + +
+
+ + +
+
+
+
+
+
+
+ Entity  + + +
+ CQ "" + From + +
+ + + + + +
+
+
+
+
+
+
+
-
+
Waiting…
-
Halt Tx
+
Halt Tx
+
+
-
+
+
+ +
@@ -106,7 +521,7 @@ -
@@ -150,8 +565,7 @@

Wanted

- -
+
@@ -180,8 +594,6 @@
-
-
@@ -207,207 +619,34 @@
- - - - + +
- -
-

Exceptions

-
+
+

Exceptions

+
- +
- -
- - -
- -
- - - - -24 -
- -
- - - - .5 -
- -
- - - - 400 -
- -
- - - - - 3500 -
- -
- - - - - 3 -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
-
-
- - -
- -
- - - -
- -
- - - -
- -
- - - - + +
+
+ +
-
+
More
+ +
+
@@ -419,221 +658,8 @@
- + - -
-
- - - - - - - -
Window Always On Top
- -
-
-
- - - - - - - - - - -
Call Roster Max Age
2m 0s
- -
-
-
- - - - - - - -
Clear Call Roster on Band change
- -
-
-
-
-
-
- - - - - - - - - - - -
Call Roster Decode Delay On Focus
- -
- -
-
-
-
- - - - - - - - - - -
Window Filters
-
- - - - - - - - - - -
Brightness
- -
-
-
- - - - - - - - - - -
Contrast
- -
-
-
- - - - - - - - - - -
Saturate
- -
-
-
-
- - - - - - - - - - -
Invert
- -
-
-
- - - - - - - - - - -
Sepia
- -
-
-
- - - - - - - - - - -
Hue Rotate
- -
-
-
-
-
Reset Filters (Ctrl-R)
-
-
-
-
- -
-
diff --git a/package.nw/gt_update.odt b/package.nw/gt_update.odt index c75b633f8974791d61ddb6f44d15ea8430d79d21..98e67e356821db345750bcb78be1238f0e4d4465 100644 GIT binary patch delta 35218 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 O%#%@v&Doz3s0;ullPp{S delta 32517 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
"; worker += ""; worker += ""; - worker += "
"; + if (GT.filterDxcc != 0) + { + worker += "
"; + worker += ""; + } + else + { + worker += "
"; + } + worker += " "; worker += "" + $.i18n("gt.qsoPage.Station") + ""; worker += "" + $.i18n("gt.qsoPage.Grid") + ""; @@ -7981,6 +7969,9 @@ function showWorkedBox(sortIndex, nextPage, redraw) worker += "" + $.i18n("gt.qsoPage.DXCC") + ""; worker += "" + $.i18n("gt.qsoPage.Flag") + ""; worker += "" + $.i18n("gt.qsoPage.When") + ""; + if (GT.callsignLookups.lotwUseEnable == true) worker += "" + $.i18n("gt.qsoPage.LoTW") + ""; + if (GT.callsignLookups.eqslUseEnable == true) worker += "" + $.i18n("gt.qsoPage.eQSL") + ""; + if (GT.callsignLookups.oqrsUseEnable == true) worker += "" + $.i18n("gt.qsoPage.OQRS") + ""; worker += ""; var key = null; @@ -8024,6 +8015,27 @@ function showWorkedBox(sortIndex, nextPage, redraw) "" + userTimeString(key.time * 1000) + ""; + if (GT.callsignLookups.lotwUseEnable == true) + { + worker += + "" + + (key.DEcall in GT.lotwCallsigns ? "🙋🏻‍♂️" : "") + + ""; + } + if (GT.callsignLookups.eqslUseEnable == true) + { + worker += + "" + + (key.DEcall in GT.eqslCallsigns ? "🙋🏻‍♂️" : "") + + ""; + } + if (GT.callsignLookups.oqrsUseEnable == true) + { + worker += + "" + + (key.DEcall in GT.oqrsCallsigns ? "🙋🏻‍♂️" : "") + + ""; + } worker += ""; } @@ -8165,20 +8177,14 @@ function showWorkedBox(sortIndex, nextPage, redraw) function statsValidateCallByElement(elementString) { - if ( - GT.statsWindowHandle != null && - typeof GT.statsWindowHandle.window.validateCallByElement !== "undefined" - ) + if (GT.statsWindowHandle != null && typeof GT.statsWindowHandle.window.validateCallByElement !== "undefined") { GT.statsWindowHandle.window.validateCallByElement(elementString); } } function statsFocus(selection) { - if ( - GT.statsWindowHandle != null && - typeof GT.statsWindowHandle.window.statsFocus !== "undefined" - ) + if (GT.statsWindowHandle != null && typeof GT.statsWindowHandle.window.statsFocus !== "undefined") { GT.statsWindowHandle.window.statsFocus(selection); } @@ -8186,10 +8192,7 @@ function statsFocus(selection) function lookupValidateCallByElement(elementString) { - if ( - GT.lookupWindowHandle != null && GT.lookupWindowInitialized && - typeof GT.lookupWindowHandle.window.validateCallByElement !== "undefined" - ) + if (GT.lookupWindowHandle != null && GT.lookupWindowInitialized && typeof GT.lookupWindowHandle.window.validateCallByElement !== "undefined") { GT.lookupWindowHandle.window.validateCallByElement(elementString); } @@ -8197,10 +8200,7 @@ function lookupValidateCallByElement(elementString) function lookupFocus(selection) { - if ( - GT.lookupWindowHandle != null && GT.lookupWindowInitialized && - typeof GT.lookupWindowHandle.window.statsFocus !== "undefined" - ) + if (GT.lookupWindowHandle != null && GT.lookupWindowInitialized && typeof GT.lookupWindowHandle.window.statsFocus !== "undefined") { GT.lookupWindowHandle.window.statsFocus(selection); } @@ -8208,10 +8208,7 @@ function lookupFocus(selection) function statsAppendChild(elementString, object, onInputString, defaultValue) { - if ( - GT.statsWindowHandle != null && - typeof GT.statsWindowHandle.window.appendToChild !== "undefined" - ) + if (GT.statsWindowHandle != null && typeof GT.statsWindowHandle.window.appendToChild !== "undefined") { GT.statsWindowHandle.window.appendToChild( elementString, @@ -8682,6 +8679,11 @@ function openBaWindow(show = true) new_win.on("loaded", function () { GT.baWindowHandle.setMinimumSize(198, 52); + if (GT.firstRun) + { + GT.baWindowHandle.resizeTo(198, 52); + GT.baWindowHandle.moveTo(250, 250); + } }); new_win.on("close", function () { @@ -8794,6 +8796,11 @@ function openLookupWindow(show = false) { GT.lookupWindowHandle.setMinimumSize(680, 200); GT.lookupWindowHandle.setResizable(true); + if (GT.firstRun) + { + GT.lookupWindowHandle.resizeTo(680, 200); + GT.lookupWindowHandle.moveTo(75, 75); + } }); new_win.on("close", function () { @@ -9377,8 +9384,7 @@ function renderStatsBox() for (var band in stats[i][key].confirmed_bands) { - output[i].confirmed_bands[band] = - ~~output[i].confirmed_bands[band] + 1; + output[i].confirmed_bands[band] = ~~output[i].confirmed_bands[band] + 1; } for (var mode in stats[i][key].worked_modes) @@ -9388,8 +9394,7 @@ function renderStatsBox() for (var mode in stats[i][key].confirmed_modes) { - output[i].confirmed_modes[mode] = - ~~output[i].confirmed_modes[mode] + 1; + output[i].confirmed_modes[mode] = ~~output[i].confirmed_modes[mode] + 1; } for (var type in stats[i][key].worked_types) @@ -9399,8 +9404,7 @@ function renderStatsBox() for (var type in stats[i][key].confirmed_types) { - output[i].confirmed_types[type] = - ~~output[i].confirmed_types[type] + 1; + output[i].confirmed_types[type] = ~~output[i].confirmed_types[type] + 1; } } @@ -11505,16 +11509,6 @@ function workingDateChanged() var fields = workingDateValue.value.split("-"); var time = workingTimeValue.value.split(":"); - var date = new Date( - Date.UTC( - parseInt(fields[0]), - parseInt(fields[1]) - 1, - parseInt(fields[2]), - parseInt(time[0]), - parseInt(time[1]), - 0 - ) - ); GT.appSettings.workingDate = Date.UTC( parseInt(fields[0]), @@ -11748,7 +11742,8 @@ function loadMaidenHeadData() { GT.dxccToAltName[GT.dxccInfo[key].dxcc] = GT.dxccInfo[key].name; GT.dxccToADIFName[GT.dxccInfo[key].dxcc] = GT.dxccInfo[key].aname; - + GT.altNameToDXCC[GT.dxccInfo[key].name] = GT.dxccInfo[key].dxcc; + for (var x = 0; x < GT.dxccInfo[key].prefix.length; x++) { GT.prefixToMap[GT.dxccInfo[key].prefix[x]] = key; @@ -12777,7 +12772,7 @@ function initSpeech() { window.speechSynthesis.onvoiceschanged = function () { - nodeTimers.setTimeout(timedGetVoices, 500); + nodeTimers.setTimeout(timedGetVoices, 3000); }; var msg = new SpeechSynthesisUtterance("\n"); msg.lang = GT.localeString; @@ -14970,19 +14965,19 @@ function displayLookupObject(lookup, gridPass, fromCache = false) if (GT.callsignLookups.lotwUseEnable == true && thisCall in GT.lotwCallsigns) { lookup.ulotw = - "✔ (" + + "🙋🏻‍♂️ (" + userDayString(GT.lotwCallsigns[thisCall] * 86400 * 1000) + ")"; worker += makeRow("LoTW Member", lookup, "ulotw"); } if (GT.callsignLookups.eqslUseEnable == true && thisCall in GT.eqslCallsigns) { - lookup.ueqsl = "✔"; + lookup.ueqsl = "🙋🏻‍♂️"; worker += makeRow("eQSL Member", lookup, "ueqsl"); } if (GT.callsignLookups.oqrsUseEnable == true && thisCall in GT.oqrsCallsigns) { - lookup.uoqrs = "✔"; + lookup.uoqrs = "🙋🏻‍♂️"; worker += makeRow("ClubLog OQRS", lookup, "uoqrs"); } diff --git a/package.nw/lib/pota.js b/package.nw/lib/pota.js index 6ada095..8258693 100644 --- a/package.nw/lib/pota.js +++ b/package.nw/lib/pota.js @@ -47,20 +47,38 @@ GT.potaUnknownPark = { grid: "" }; -GT.gtParkIconActive = new ol.style.Icon({ - src: "./img/pota_icon_active.png", - anchorYUnits: "pixels", - anchorXUnits: "pixels", - anchor: [10, 19] +GT.gtParkOnInstance = new ol.style.Text({ + text: "🏕️", + font: "20px Verdana", + textAlign: "center", + justify: "center" }); -GT.gtParkIconInactive = new ol.style.Icon({ - src: "./img/pota_icon_inactive.png", - anchorYUnits: "pixels", - anchorXUnits: "pixels", - anchor: [10, 19] +GT.gtParkOffInstance = new ol.style.Text({ + text: "🌲", + font: "20px Verdana", + textAlign: "center", + justify: "center" }); +function iconText(center, iconObj, zIndex, propName) +{ + var feature = new ol.Feature({ + geometry: new ol.geom.Point(center), + textAlign: "center", + justify: "center", + prop: propName + }); + + var iconStyle = new ol.style.Style({ + zIndex: zIndex, + text: iconObj + }); + + feature.setStyle(iconStyle); + return feature; +} + function initPota() { potaEnabled.checked = (GT.appSettings.potaEnabled == 1); @@ -139,7 +157,18 @@ function makeParkFeatures() var report = GT.pota.parkSpots[park][call]; if (parkObj.feature == null && validateMapBandAndMode(report.band, report.mode) && Date.now() < report.expire) { - parkObj.feature = iconFeature(ol.proj.fromLonLat([Number(GT.pota.parks[park].longitude), Number(GT.pota.parks[park].latitude)]), GT.gtParkIconActive, 1, "parkFlag"); + let parkIcon = GT.gtParkOffInstance; + let zIndex = 1; + for (let instance in GT.instances) + { + if (GT.instances[instance].valid && GT.instances[instance].status.Band == report.band && GT.instances[instance].status.MO == report.mode) + { + parkIcon = GT.gtParkOnInstance; + zIndex = 2; + break; + } + } + parkObj.feature = iconText(ol.proj.fromLonLat([Number(GT.pota.parks[park].longitude), Number(GT.pota.parks[park].latitude)]), parkIcon, zIndex, "parkFlag"); parkObj.feature.key = park; parkObj.feature.size = 22; @@ -179,7 +208,6 @@ function potaSpotFromDecode(callObj) if (!(hash in GT.pota.rbnReportTimes) || Date.now() > GT.pota.rbnReportTimes[hash]) { GT.pota.rbnReportTimes[hash] = Date.now() + GT.pota.rbnFrequency; - // reportPotaRBN(GT.pota.parkSpots[park][callObj.DEcall]); } } else if (callObj.DEcall in GT.pota.callSchedule) @@ -205,7 +233,6 @@ function potaSpotFromDecode(callObj) if (!(hash in GT.pota.rbnReportTimes) || Date.now() > GT.pota.rbnReportTimes[hash]) { GT.pota.rbnReportTimes[hash] = Date.now() + GT.pota.rbnFrequency; - // reportPotaRBN(GT.pota.parkSpots[park][callObj.DEcall]); } } else @@ -245,39 +272,6 @@ function leftClickPota(parkId) } } -/* function reportPotaRBN(callSpot) -{ - if (Date.now() < callSpot.expire) - { - var report = { - activator: callSpot.activator, - spotter: GT.appSettings.myCall + "-#", - frequency: String(parseInt(callSpot.frequency * 1000)), - reference: callSpot.reference, - mode: callSpot.mode, - source: "RBN", - comments: callSpot.comments, - activatorGrid: callSpot.activatorGrid, - spotterGrid: callSpot.spotterGrid - }; - - if (Number(report.frequency) > 0) - { - getPostJSONBuffer( - "https://api.pota.app/spot", - rbnReportResult, - null, - "https", - 443, - report, - 10000, - null, - null - ); - } - } -} */ - function reportPotaQSO(record) { var report = { @@ -357,7 +351,18 @@ function addParkSpotFeature(park, report) if (parkObj.feature == null && validateMapBandAndMode(report.band, report.mode)) { - parkObj.feature = iconFeature(ol.proj.fromLonLat([Number(GT.pota.parks[park].longitude), Number(GT.pota.parks[park].latitude)]), GT.gtParkIconActive, 1, "parkFlag"); + let parkIcon = GT.gtParkOffInstance; + let zIndex = 1; + for (let instance in GT.instances) + { + if (GT.instances[instance].valid && GT.instances[instance].status.Band == report.band && GT.instances[instance].status.MO == report.mode) + { + parkIcon = GT.gtParkOnInstance; + zIndex = 2; + break; + } + } + parkObj.feature = iconText(ol.proj.fromLonLat([Number(GT.pota.parks[park].longitude), Number(GT.pota.parks[park].latitude)]), parkIcon, zIndex, "parkFlag"); parkObj.feature.key = park; parkObj.feature.size = 22; GT.layerSources.pota.addFeature(parkObj.feature); diff --git a/package.nw/lib/roster.js b/package.nw/lib/roster.js index 5f99086..83e53ed 100644 --- a/package.nw/lib/roster.js +++ b/package.nw/lib/roster.js @@ -9,6 +9,7 @@ CR.developerMode = process.versions["nw-flavor"] == "sdk"; CR.callRoster = {}; CR.blockedCalls = {}; CR.blockedCQ = {}; +CR.ignoredCQ = {}; CR.blockedDxcc = {}; CR.blockedCQz = {}; CR.blockedITUz = {}; @@ -25,29 +26,22 @@ CR.rosterSettings = {}; CR.day = 0; CR.dayAsString = "0"; CR.menu = null; +CR.columnMenu = null; +CR.columnMembers = {}; CR.callMenu = null; CR.ageMenu = null; CR.callingMenu = null; CR.compactMenu = null; -CR.menuItemForCurrentColumn = null; +CR.menuItemForMoveLeftColumn = null; +CR.menuItemForMoveRightColumn = null; CR.currentColumnName = null; CR.targetHash = ""; -CR.clearIgnores = null; -CR.clearIgnoresCall = null; CR.dxccMenu = null; CR.targetDxcc = -1; -CR.clearDxccIgnore = null; -CR.clearDxccIgnoreMainMenu = null; CR.CQMenu = null; +CR.MsgMenu = null; CR.targetCQ = ""; -CR.clearCQIgnore = null; -CR.clearCQIgnoreMainMenu = null; -CR.clearCQzIgnore = null; -CR.clearCQzIgnoreMainMenu = null; -CR.clearITUzIgnore = null; -CR.clearITUzIgnoreMainMenu = null; CR.timerInterval = null; -CR.typingInRoster = false; CR.awards = {}; CR.awardTypes = {}; CR.awardTracker = {}; @@ -64,12 +58,14 @@ CR.modeColors.QRA64 = "FF00FF"; CR.modeColors.MSK144 = "4949FF"; CR.rosterTimeout = null; CR.rosterFocus = false; +CR.watchers = null; CR.defaultSettings = { callsign: "all", hunting: "dxcc", huntNeed: "confirmed", requireGrid: false, + animateCQGT: true, wantMaxDT: false, wantMinDB: false, wantMinFreq: false, @@ -81,21 +77,13 @@ CR.defaultSettings = { maxFreq: 3500, noMyDxcc: false, onlyMyDxcc: false, - noMsg: false, - noMsgValue: "CQ RU", - onlyMsg: false, - onlyMsgValue: "CQ FD", - cqOnly: true, + cqOnly: false, usesLoTW: false, maxLoTW: 27, useseQSL: false, usesOQRS: false, onlySpot: false, allOnlyNew: false, - useRegex: false, - noUnknownDXCC: true, - callsignRegex: "", - huntRegexValue: "", realtime: true, wanted: { huntCallsign: false, @@ -104,14 +92,15 @@ CR.defaultSettings = { huntCQz: false, huntITUz: false, huntMarathon: false, - huntState: false, + huntState: true, huntCounty: false, huntCont: false, huntPX: false, huntPOTA: false, huntQRZ: true, huntOAMS: false, - huntRegex: false + huntRegex: false, + huntWatcher: false }, columns: { Callsign: true, @@ -131,7 +120,7 @@ CR.defaultSettings = { Freq: false, DT: false, Dist: false, - Azim: true, + Azim: false, CQz: false, ITUz: false, PX: false, @@ -149,7 +138,6 @@ CR.defaultSettings = { contrast: 100, saturate: 100, invert: 0, - grayscale: 0, sepia: 0, huerotate: 0 }, @@ -165,7 +153,8 @@ CR.defaultSettings = { rosterDelayOnFocus: false, rosterDelayTime: 1500, rosterTime: 120, - compactEntity: "DXCC" + compactEntity: "DXCC", + watchers: {} }; CR.def_displayFilters = { @@ -202,11 +191,16 @@ document.addEventListener("drop", function (event) window.addEventListener("message", receiveMessage, false); -if (typeof localStorage.blockedCQ == "undefined") +if (typeof localStorage.awardTracker == "undefined") { - localStorage.blockedCQ = "{}"; + localStorage.awardTracker = "{}"; + CR.rosterSettings = {}; + writeRosterSettings(); } +CR.awardTracker = JSON.parse(localStorage.awardTracker); + +// These two need to stay here because of an old bug. if (typeof localStorage.blockedCQz == "undefined") { localStorage.blockedCQz = "{}"; @@ -217,15 +211,6 @@ if (typeof localStorage.blockedITUz == "undefined") localStorage.blockedITUz = "{}"; } -if (typeof localStorage.awardTracker == "undefined") -{ - localStorage.awardTracker = "{}"; - CR.rosterSettings = {}; - writeRosterSettings(); -} - -CR.awardTracker = JSON.parse(localStorage.awardTracker); - if (typeof localStorage.blockedCalls != "undefined") { CR.blockedCalls = JSON.parse(localStorage.blockedCalls); @@ -234,14 +219,56 @@ if (typeof localStorage.blockedCalls != "undefined") CR.blockedCQz = JSON.parse(localStorage.blockedCQz); CR.blockedITUz = JSON.parse(localStorage.blockedITUz); } +else +{ + localStorage.blockedCalls = "{}"; + localStorage.blockedDxcc = "{}"; + localStorage.blockedCQz = "{}"; + localStorage.blockedITUz = "{}"; + localStorage.ignoredCQ = "{}"; +} -function storeBlocks() +if (typeof localStorage.ignoredCQ == "undefined") +{ + // CR.blockedCQ is deprecated, we don't clear it, we copy it + // This is protection against them rolling back to a previous version + // where keys are "CQ POTA from CountryString" + let shouldStore = false; + for (let key in CR.blockedCQ) + { + let test = key.split(" from "); + if (test.length == 2) + { + if (test[1] == "All") + { + CR.ignoredCQ[test[0]] = true; + } + else + { + CR.ignoredCQ[test[0] + ":" + window.opener.GT.altNameToDXCC[test[1]]] = true; + } + + shouldStore = true; + } + } + if (shouldStore) storeBlocks(false); +} +else +{ + CR.ignoredCQ = JSON.parse(localStorage.ignoredCQ); +} + +function storeBlocks(render = true) { localStorage.blockedCalls = JSON.stringify(CR.blockedCalls); - localStorage.blockedCQ = JSON.stringify(CR.blockedCQ); + localStorage.ignoredCQ = JSON.stringify(CR.ignoredCQ); localStorage.blockedDxcc = JSON.stringify(CR.blockedDxcc); localStorage.blockedCQz = JSON.stringify(CR.blockedCQz); localStorage.blockedITUz = JSON.stringify(CR.blockedITUz); + if (render) + { + renderIgnoresTab(); + } } function storeAwardTracker() @@ -261,6 +288,9 @@ function loadSettings() fixLegacySettings(); writeRosterSettings(); + + // Code reducder + CR.watchers = CR.rosterSettings.watchers; } function fixLegacySettings() @@ -288,6 +318,11 @@ function fixLegacySettings() function writeRosterSettings() { + for (let key in CR.rosterSettings.watchers) + { + CR.rosterSettings.watchers[key].test = null; + } + localStorage.rosterSettings = JSON.stringify(CR.rosterSettings); } @@ -851,7 +886,7 @@ function closeAwardPopup() function toggleMoreControls() { CR.rosterSettings.controlsExtended = !CR.rosterSettings.controlsExtended; - localStorage.rosterSettings = JSON.stringify(CR.rosterSettings); + writeRosterSettings(); setVisual(); } @@ -860,7 +895,7 @@ function setVisual() { huntNeed.style.display = "none"; stateSelect.style.display = "none"; - DXCCsSelect.style.display = "none"; + DxccSingleSelect.style.display = "none"; if (CR.rosterSettings.controls) { @@ -929,92 +964,18 @@ function setVisual() } if (huntMode.value == "dxccs") { - DXCCsSelect.style.display = ""; + DxccSingleSelect.style.display = ""; } } } - if (huntRegex.checked == true) - { - huntRegexValue.style.display = ""; - } - else - { - huntRegexValue.style.display = "none"; - } - - if (wantMaxDT.checked == true) - { - maxDT.style.display = ""; - maxDTView.style.display = ""; - } - else - { - maxDT.style.display = "none"; - maxDTView.style.display = "none"; - } - - if (wantMinDB.checked == true) - { - minDb.style.display = ""; - minDbView.style.display = ""; - } - else - { - minDb.style.display = "none"; - minDbView.style.display = "none"; - } - - if (wantMinFreq.checked == true) - { - minFreq.style.display = ""; - minFreqView.style.display = ""; - } - else - { - minFreq.style.display = "none"; - minFreqView.style.display = "none"; - } - - if (wantMaxFreq.checked == true) - { - maxFreq.style.display = ""; - maxFreqView.style.display = ""; - } - else - { - maxFreq.style.display = "none"; - maxFreqView.style.display = "none"; - } - - if (useRegex.checked == true) - { - callsignRegex.style.display = ""; - } - else - { - callsignRegex.style.display = "none"; - } - if (window.opener.GT.callsignLookups.lotwUseEnable == true) { usesLoTWDiv.style.display = ""; - if (CR.rosterSettings.usesLoTW == true) - { - maxLoTW.style.display = ""; - maxLoTWView.style.display = ""; - } - else - { - maxLoTW.style.display = "none"; - maxLoTWView.style.display = "none"; - } } else { usesLoTWDiv.style.display = "none"; - maxLoTW.style.display = "none"; - maxLoTWView.style.display = "none"; } if (window.opener.GT.callsignLookups.eqslUseEnable == true) @@ -1069,14 +1030,9 @@ function wantedChanged(element) if (t in CR.rosterSettings.columns) { CR.rosterSettings.columns[t] = true; - - for (const i in CR.menu.items) + if (t in CR.columnMembers) { - if ( - typeof CR.menu.items[i].checked != "undefined" && - CR.menu.items[i].label == t - ) - { CR.menu.items[i].checked = true; } + CR.columnMembers[t].checked = true; } } } @@ -1116,31 +1072,12 @@ function valuesChanged() CR.rosterSettings.cqOnly = cqOnly.checked; CR.rosterSettings.noMyDxcc = noMyDxcc.checked; CR.rosterSettings.onlyMyDxcc = onlyMyDxcc.checked; - if (noMsg.checked && onlyMsg.checked && noMsgValue.value == onlyMsgValue.value) - { - if (CR.rosterSettings.noMsg) - { - noMsg.checked = false; - } - else - { - onlyMsg.checked = false; - } - } - CR.rosterSettings.noMsg = noMsg.checked; - CR.rosterSettings.onlyMsg = onlyMsg.checked; - CR.rosterSettings.noMsgValue = noMsgValue.value; - CR.rosterSettings.onlyMsgValue = onlyMsgValue.value; CR.rosterSettings.usesLoTW = usesLoTW.checked; CR.rosterSettings.useseQSL = useseQSL.checked; CR.rosterSettings.usesOQRS = usesOQRS.checked; CR.rosterSettings.onlySpot = onlySpot.checked; CR.rosterSettings.reference = referenceNeed.value; CR.rosterSettings.allOnlyNew = allOnlyNew.checked; - CR.rosterSettings.useRegex = useRegex.checked; - CR.rosterSettings.callsignRegex = callsignRegex.value; - CR.rosterSettings.huntRegexValue = huntRegexValue.value; - CR.rosterSettings.noUnknownDXCC = noUnknownDXCC.checked; writeRosterSettings(); @@ -1306,41 +1243,131 @@ function stateChangedValue(what) function DXCCsChangedValue(what) { - CR.currentDXCCs = DXCCsSelect.value; + CR.currentDXCCs = DxccSingleSelect.value; viewRoster(); } -function initDXCCSelector() +function initSelectors() { + for (const column in ROSTER_COLUMNS) + { + if (column != "Callsign") + { + let option = newOption(column, column); + if (column == CR.rosterSettings.compactEntity) + { + option.selected = true; + } + compactEntitySelect.appendChild(option); + } + } + let items = Object.keys(window.opener.GT.dxccToAltName).sort(function (a, b) { return window.opener.GT.dxccToAltName[a].localeCompare( window.opener.GT.dxccToAltName[b] ); }); - let newSelect = document.getElementById("DXCCsSelect"); for (const i in items) { let key = items[i]; - - if ( - window.opener.GT.dxccInfo[key].geo != - "deleted" - ) + if (window.opener.GT.dxccInfo[key].geo != "deleted") { let option = document.createElement("option"); option.value = key; - option.text = - window.opener.GT.dxccToAltName[key] + - " (" + - window.opener.GT.dxccInfo[key].pp + - ")"; - - newSelect.appendChild(option); + option.text = window.opener.GT.dxccToAltName[key] + " (" + window.opener.GT.dxccInfo[key].pp + ")"; + DxccSingleSelect.appendChild(option); + // Note: do not use cloneNode on elements/nodes that have ids + ignoreCqDxccSelect.appendChild(option.cloneNode(true)); + ignoreDxccSelect.appendChild(option.cloneNode(true)); } } - newSelect.oninput = DXCCsChangedValue; + DxccSingleSelect.oninput = DXCCsChangedValue; + + items = Object.keys(window.opener.GT.cqZones).sort(); + for (const i in items) + { + let key = items[i]; + let option = document.createElement("option"); + option.value = key; + option.text = key + " - " + window.opener.GT.cqZones[key].name; + ignoreCqzSelect.appendChild(option); + } + + items = Object.keys(window.opener.GT.ituZones).sort(); + for (const i in items) + { + let key = items[i]; + let option = document.createElement("option"); + option.value = key; + option.text = key; + ignoreItuzSelect.appendChild(option); + } + + CR.ignoreTypeInputs = {}; + CR.ignoreTypeInputs.Callsign = ignoreCallsignValue; + CR.ignoreTypeInputs.CQ = ignoreCqDiv; + CR.ignoreTypeInputs.DXCC = ignoreDxccSelect; + CR.ignoreTypeInputs.CQz = ignoreCqzSelect; + CR.ignoreTypeInputs.ITUz = ignoreItuzSelect; + + ignoreTypeChanged("Callsign"); + watcherTypeChanged("Callsign"); +} + +function hideIgnoreElements() +{ + ignoreCallsignValue.style.display = "none"; + ignoreCqDiv.style.display = "none"; + ignoreDxccSelect.style.display = "none"; + ignoreCqzSelect.style.display = "none"; + ignoreItuzSelect.style.display = "none"; +} + +CR.ignoreType = "Callsign"; + +function ignoreTypeChanged(ignoreTypeValue) +{ + hideIgnoreElements(); + CR.ignoreTypeInputs[ignoreTypeValue].style.display = ""; + if (CR.ignoreType != ignoreTypeValue) + { + ingnoreAddResultLabel.innerHTML = ""; + CR.ignoreType = ignoreTypeValue; + } + ValidateTextInput(ignoreCallsignValue); + ValidateTextInput(ignoreCqCallsignValue); +} + +function addNewIgnore() +{ + if (CR.ignoreType == "Callsign") + { + if (ValidateTextInput(ignoreCallsignValue, ingnoreAddResultLabel)) + { + ignoreCallsign(ignoreCallsignValue.value); + } + } + else if (CR.ignoreType == "CQ") + { + if (ValidateTextInput(ignoreCqCallsignValue, ingnoreAddResultLabel)) + { + ignoreCQ("CQ " + ignoreCqCallsignValue.value, ignoreCqDxccSelect.value); + } + } + else if (CR.ignoreType == "DXCC") + { + ignoreDxcc(ignoreDxccSelect.value); + } + else if (CR.ignoreType == "CQz") + { + ignoreCQz(ignoreCqzSelect.value) + } + else if (CR.ignoreType == "ITUz") + { + ignoreITUz(ignoreItuzSelect.value); + } } function manifestResult(buffer, flag) @@ -1385,7 +1412,49 @@ function deleteCallsignIgnore(key) { delete CR.blockedCalls[key]; storeBlocks(); - openIgnoreEdit(); + viewRoster(); +} + +function ignoreCallsign(callsign) +{ + CR.blockedCalls[callsign] = true; + storeBlocks(); + viewRoster(); +} + +function ignoreDxcc(dxcc) +{ + CR.blockedDxcc[dxcc] = true; + storeBlocks(); + viewRoster(); +} + +function ignoreCQ(cq, dxcc) +{ + if (dxcc > 0) + { + CR.ignoredCQ[cq + ":" + dxcc] = true; + } + else + { + CR.ignoredCQ[cq] = true; + } + + storeBlocks(); + viewRoster(); +} + +function ignoreCQz(cqz) +{ + CR.blockedCQz[cqz] = true; + storeBlocks(); + viewRoster(); +} + +function ignoreITUz(ituz) +{ + CR.blockedITUz[ituz] = true; + storeBlocks(); viewRoster(); } @@ -1393,15 +1462,13 @@ function deleteDxccIgnore(key) { delete CR.blockedDxcc[key]; storeBlocks(); - openIgnoreEdit(); viewRoster(); } function deleteCQIgnore(key) { - delete CR.blockedCQ[key]; + delete CR.ignoredCQ[key]; storeBlocks(); - openIgnoreEdit(); viewRoster(); } @@ -1409,7 +1476,6 @@ function deleteCQzIgnore(key) { delete CR.blockedCQz[key]; storeBlocks(); - openIgnoreEdit(); viewRoster(); } @@ -1417,7 +1483,6 @@ function deleteITUzIgnore(key) { delete CR.blockedITUz[key]; storeBlocks(); - openIgnoreEdit(); viewRoster(); } @@ -1425,7 +1490,6 @@ function clearAllCallsignIgnores() { CR.blockedCalls = Object(); storeBlocks(); - openIgnoreEdit(); viewRoster(); } @@ -1433,15 +1497,13 @@ function clearAllDxccIgnores() { CR.blockedDxcc = Object(); storeBlocks(); - openIgnoreEdit(); viewRoster(); } function clearAllCQIgnores() { - CR.blockedCQ = Object(); + CR.ignoredCQ = Object(); storeBlocks(); - openIgnoreEdit(); viewRoster(); } @@ -1449,7 +1511,6 @@ function clearAllCQzIgnores() { CR.blockedCQz = Object(); storeBlocks(); - openIgnoreEdit(); viewRoster(); } @@ -1457,181 +1518,227 @@ function clearAllITUzIgnores() { CR.blockedITUz = Object(); storeBlocks(); - openIgnoreEdit(); viewRoster(); } function openSettings() { - MainCallRoster.style.display = "block"; - settingsDiv.style.display = "block"; - editView.style.display = "none"; + openInfoTab("generalbox", "generalSettingsDiv"); + settingsDiv.style.display = "inline-block"; +} + +function openWatcher() +{ + openInfoTab("watcherbox", "watcherBoxDiv", openWathcherTab); + settingsDiv.style.display = "inline-block"; +} + +function openExceptions() +{ + openInfoTab("exceptionsbox", "exceptionsBoxDiv"); + settingsDiv.style.display = "inline-block"; +} + +function openIgnores() +{ + openInfoTab("ingoresbox", "ignoresBoxDiv", renderIgnoresTab); + settingsDiv.style.display = "inline-block"; +} + +function openColumns() +{ + openInfoTab("columnsbox", "columnsBoxDiv", renderColumnsTab); + settingsDiv.style.display = "inline-block"; } function closeSettings() { - MainCallRoster.style.display = "block"; settingsDiv.style.display = "none"; - editView.style.display = "none"; } -function closeEditIgnores() +function renderIgnoresTab() { - MainCallRoster.style.display = "block"; - editView.style.display = "none"; -} - -function openIgnoreEdit() -{ - MainCallRoster.style.display = "none"; - editView.style.display = "inline-block"; let worker = ""; let clearString = "none"; - if (Object.keys(CR.blockedCalls).length > 0) { - clearString = - "Clear All"; + clearString = "Clear All"; + worker += "
" + clearString + ""; + Object.keys(CR.blockedCalls) + .sort() + .forEach(function (key, i) + { + worker += ""; + }); + worker += "
Callsigns
" + key + "
"; } - worker += - "
" + - clearString + - ""; - Object.keys(CR.blockedCalls) - .sort() - .forEach(function (key, i) - { - worker += - ""; - }); - worker += "
Callsigns
" + - key + - "
"; - clearString = "none"; - if (Object.keys(CR.blockedCQ).length > 0) + if (Object.keys(CR.ignoredCQ).length > 0) { - clearString = - "Clear All"; + clearString = "Clear All"; + worker += "
" + clearString + ""; + Object.keys(CR.ignoredCQ) + .sort() + .forEach(function (rawKey, i) + { + let split = rawKey.split(":"); + let key = split[0]; + let dxcc = -1; + if (split.length == 2) dxcc = parseInt(split[1]); + worker += ""; + }); + worker += "
CQ
" + key + " from " + (dxcc == -1 ? "All" : window.opener.GT.dxccToAltName[dxcc]) + "
"; } - worker += - "
" + - clearString + - ""; - Object.keys(CR.blockedCQ) - .sort() - .forEach(function (key, i) - { - worker += - ""; - }); - worker += "
CQ
" + - key + - "
"; - clearString = "none"; if (Object.keys(CR.blockedDxcc).length > 0) { - clearString = - "Clear All"; + clearString = "Clear All"; + worker += "
" + clearString + ""; + Object.keys(CR.blockedDxcc) + .sort() + .forEach(function (key, i) + { + worker += ""; + }); + worker += "
DXCC
" + window.opener.GT.dxccToAltName[key] + " (" + window.opener.GT.dxccInfo[key].pp + ")
"; } - worker += - "
" + - clearString + - ""; - Object.keys(CR.blockedDxcc) - .sort() - .forEach(function (key, i) - { - worker += - ""; - }); - worker += "
DXCCs
" + - window.opener.GT.dxccToAltName[key] + - " (" + - window.opener.GT.dxccInfo[key].pp + - ")
"; if (Object.keys(CR.blockedCQz).length > 0) { - clearString = - "Clear All"; + clearString = "Clear All"; + worker += "
" + clearString + ""; + Object.keys(CR.blockedCQz) + .sort() + .forEach(function (key, i) + { + worker += ""; + }); + worker += "
CQ Zones
" + key + "
"; } - worker += - "
" + - clearString + - ""; - Object.keys(CR.blockedCQz) - .sort() - .forEach(function (key, i) - { - worker += - ""; - }); - worker += "
CQ Zones
" + - key + - "
"; if (Object.keys(CR.blockedITUz).length > 0) { - clearString = - "Clear All"; + clearString = "Clear All"; + worker += "
" + clearString + ""; + Object.keys(CR.blockedITUz) + .sort() + .forEach(function (key, i) + { + worker += ""; + }); + worker += "
ITU Zones
" + key + "
"; } - worker += - "
" + - clearString + - ""; - Object.keys(CR.blockedITUz) - .sort() - .forEach(function (key, i) - { - worker += - ""; - }); - worker += "
ITU Zones
" + - key + - "
"; - editTables.innerHTML = worker; - editView.style.height = (window.innerHeight - 45) + "px"; + ignoresEditView.innerHTML = worker; + ignoresBoxDiv.style.height = (window.innerHeight - 50) + "px"; + + let elems = document.getElementsByClassName("ignoresTables"); + for (let x = 0; x < elems.length; x++) + { + let height = 110; + if (elems[x].offsetHeight > window.innerHeight - height) + { + elems[x].style.height = (window.innerHeight - height) + "px"; + } + } +} + +function renderColumnsTab() +{ + let worker = ""; + let renderHeight = 230; + worker += "
"; + worker += "
Enabled
"; + const columns = rosterColumnList(CR.rosterSettings.columns, { Callsign: false }); + let enabled = {}; + for (let x = 0; x != columns.length; x++) + { + let column = columns[x]; + enabled[column] = true; + worker += "
"; + if (x > 0) + { + worker += `
`; + } + else + { + worker += "
 
" + } + + worker += `
` + worker += "
" + column + "
"; + if (x + 1 != columns.length) + { + worker += `
`; + } + else + { + worker += "
 
"; + } + worker += "
"; + } + worker += "
"; + worker += "
"; + + let available = [...CR.rosterSettings.columnOrder]; + available.sort((a, b) => a.toLowerCase() < b.toLowerCase() ? -1 : 1); + for (let x = 0; x != available.length; x++) + { + let column = available[x]; + if (column == "Callsign") continue; + if (column == "eQSL" && window.opener.GT.callsignLookups.eqslUseEnable == false) continue; + if (column == "LoTW" && window.opener.GT.callsignLookups.lotwUseEnable == false) continue; + if (column == "OQRS" && window.opener.GT.callsignLookups.oqrsUseEnable == false) continue; + + if (!(column in enabled)) + { + worker += "
"; + worker += `
`; + worker += "
" + column + "
"; + worker += "
"; + } + } + worker += "
"; + + columnsEditView.innerHTML = worker; + renderHeight = Math.max(window.innerHeight - 200, 150); + columnEnabledView.style.height = renderHeight + "px"; + columnAvailableView.style.height = renderHeight + "px"; } function onMyKeyDown(event) { - if (!CR.typingInRoster) + if (event.keyCode == 27) { - if (event.code == "KeyS" && event.ctrlKey == true) + closeSettings(); + } + + if (event.ctrlKey == true) + { + if (event.code == "KeyS") { openSettings(); } - else if (event.code == "KeyR" && event.ctrlKey == true) + else if (event.code == "KeyW" || event.code == "KeyO") + { + openWatcher(); + } + else if (event.code == "KeyE") + { + openExceptions(); + } + else if (event.code == "KeyI") + { + openIgnores(); + } + else if (event.code == "KeyC") + { + openColumns(); + } + else if (event.code == "KeyR") { resetFilters(); } - else - { - window.opener.onMyKeyDown(event); - } } } @@ -1645,7 +1752,16 @@ function blurOnEnter(ele) function resize() { - if (editView.style.display == "inline-block") openIgnoreEdit(); + if (ignoresBoxDiv.style.display != "none") + { + renderIgnoresTab(); + } + if (columnsBoxDiv.style.display != "none") + { + renderColumnsTab(); + } + + wantRenderWatchersTab(); window.opener.goProcessRoster(); } @@ -1685,6 +1801,16 @@ function init() setRosterTop(); } +function toggleShowControls() +{ + CR.rosterSettings.controls = !CR.rosterSettings.controls; + let newLabel = CR.rosterSettings.controls ? $.i18n("roster.menu.HideControls") : $.i18n("roster.menu.ShowControls"); + CR.compactMenu.items[0].label = newLabel; + CR.menu.items[0].label = newLabel; + writeRosterSettings(); + setVisual(); +} + // From i18n.js function addControls() { @@ -1700,7 +1826,7 @@ function addControls() cnty: $.i18n("rosterColumns.Wanted.cnty"), wpx: $.i18n("rosterColumns.Wanted.wpx"), call: $.i18n("rosterColumns.Wanted.call"), - regex: $.i18n("rosterColumns.Wanted.regex"), + watcher: $.i18n("roster.watcher.label"), oams: $.i18n("rosterColumns.Wanted.oams"), pota: $.i18n("rosterColumns.Wanted.pota") } @@ -1722,19 +1848,7 @@ function addControls() label: CR.rosterSettings.controls ? hideControlsText : showControlsText, click: function () { - if (this.label == "Hide Controls") - { - this.label = showControlsText; - CR.rosterSettings.controls = false; - } - else - { - this.label = hideControlsText; - CR.rosterSettings.controls = true; - } - CR.compactMenu.items[0].label = CR.rosterSettings.controls ? hideControlsText : showControlsText; - localStorage.rosterSettings = JSON.stringify(CR.rosterSettings); - setVisual(); + toggleShowControls(); } }); CR.menu.append(item); @@ -1744,63 +1858,7 @@ function addControls() label: CR.rosterSettings.controls ? hideControlsText : showControlsText, click: function () { - if (this.label == hideControlsText) - { - this.label = showControlsText; - CR.rosterSettings.controls = false; - } - else - { - this.label = hideControlsText; - CR.rosterSettings.controls = true; - } - CR.menu.items[0].label = CR.rosterSettings.controls ? hideControlsText : showControlsText; - localStorage.rosterSettings = JSON.stringify(CR.rosterSettings); - setVisual(); - } - }); - CR.compactMenu.append(item); - - item = new nw.MenuItem({ - type: "normal", - label: $.i18n("roster.menu.Settings"), - click: function () - { - openSettings(); - } - }); - CR.menu.append(item); - - item = new nw.MenuItem({ - type: "normal", - label: $.i18n("roster.menu.Settings"), - click: function () - { - openSettings(); - } - }); - CR.compactMenu.append(item); - - item = new nw.MenuItem({ - type: "normal", - label: $.i18n("roster.menu.CompactMode"), - click: function () - { - CR.rosterSettings.compact = true; - localStorage.rosterSettings = JSON.stringify(CR.rosterSettings); - resize(); - } - }); - CR.menu.append(item); - - item = new nw.MenuItem({ - type: "normal", - label: $.i18n("roster.menu.RosterMode"), - click: function () - { - CR.rosterSettings.compact = false; - localStorage.rosterSettings = JSON.stringify(CR.rosterSettings); - resize(); + toggleShowControls(); } }); CR.compactMenu.append(item); @@ -1828,6 +1886,17 @@ function addControls() }); CR.callMenu.append(item); + item = new nw.MenuItem({ + type: "normal", + label: $.i18n("roster.add.watcher.label"), + click: function () + { + addWatcher(CR.callRoster[CR.targetHash].DEcall, "Callsign"); + } + }); + + CR.callMenu.append(item); + item = new nw.MenuItem({ type: "separator" }); CR.callMenu.append(item); @@ -1853,10 +1922,19 @@ function addControls() label: $.i18n("roster.menu.IgnoreCall"), click: function () { - let thisCall = CR.callRoster[CR.targetHash].DEcall; - CR.blockedCalls[thisCall] = true; - storeBlocks(); - viewRoster(); + ignoreCallsign(CR.callRoster[CR.targetHash].DEcall); + } + }); + + CR.callMenu.append(item); + + item = new nw.MenuItem({ + type: "normal", + label: $.i18n("roster.menu.EditIgnores"), + enabled: true, + click: function () + { + openIgnores(); } }); @@ -1885,9 +1963,23 @@ function addControls() CR.callingMenu.append(item); + item = new nw.MenuItem({ + type: "normal", + label: $.i18n("roster.add.watcher.label"), + click: function () + { + addWatcher(CR.callRoster[CR.targetHash].DXcall, "Callsign"); + } + }); + + CR.callingMenu.append(item); + item = new nw.MenuItem({ type: "separator" }); CR.menu.append(item); + item = new nw.MenuItem({ type: "separator" }); + CR.callingMenu.append(item); + if (window.opener.GT.pstrotatorSettings.enable) { item = new nw.MenuItem({ @@ -1900,9 +1992,6 @@ function addControls() } }); CR.callingMenu.append(item); - - item = new nw.MenuItem({ type: "separator" }); - CR.callingMenu.append(item); } item = new nw.MenuItem({ @@ -1918,10 +2007,9 @@ function addControls() }); CR.menu.append(item); - item = new nw.MenuItem({ type: "separator" }); - CR.menu.append(item); + CR.columnMenu = new nw.Menu(); - CR.menuItemForCurrentColumn = new nw.MenuItem({ + CR.menuItemForMoveLeftColumn = new nw.MenuItem({ type: "normal", label: $.i18n("roster.menu.MoveLeft"), click: function () @@ -1929,10 +2017,20 @@ function addControls() moveColumnLeft(CR.currentColumnName); } }) - CR.menu.append(CR.menuItemForCurrentColumn) + CR.columnMenu.append(CR.menuItemForMoveLeftColumn) + + CR.menuItemForMoveRightColumn = new nw.MenuItem({ + type: "normal", + label: $.i18n("roster.menu.MoveRight"), + click: function () + { + moveColumnRight(CR.currentColumnName); + } + }) + CR.columnMenu.append(CR.menuItemForMoveRightColumn) item = new nw.MenuItem({ type: "separator" }); - CR.menu.append(item); + CR.columnMenu.append(item); for (const columnIndex in CR.rosterSettings.columnOrder) { @@ -1945,62 +2043,47 @@ function addControls() checked: CR.rosterSettings.columns[key], click: function () { - CR.rosterSettings.columns[this.label] = this.checked; - if (this.label == "Spot") - { window.opener.setRosterSpot(CR.rosterSettings.columns.Spot); } - writeRosterSettings(); - viewRoster(); - resize(); + toggleColumn(this); } }); - CR.menu.append(itemx); + CR.columnMenu.append(itemx); + CR.columnMembers[key] = itemx; } } - item = new nw.MenuItem({ type: "separator" }); - CR.menu.append(item); + CR.MsgMenu = new nw.Menu(); - CR.clearIgnores = new nw.MenuItem({ + item = new nw.MenuItem({ type: "normal", - label: "Clear Call Ignore", - enabled: false, + label: $.i18n("roster.add.watcher.label"), click: function () { - CR.blockedCalls = Object(); - storeBlocks(); - viewRoster(); + addWatcher(CR.callRoster[CR.targetHash].callObj.msg, "Message"); } }); - CR.menu.append(CR.clearIgnores); - CR.clearIgnoresCall = new nw.MenuItem({ - type: "normal", - label: "Clear Ignore", - enabled: false, - click: function () - { - CR.blockedCalls = Object(); - storeBlocks(); - viewRoster(); - } - }); - CR.callMenu.append(CR.clearIgnoresCall); + CR.MsgMenu.append(item); CR.CQMenu = new nw.Menu(); + item = new nw.MenuItem({ + type: "normal", + label: $.i18n("roster.add.watcher.label"), + click: function () + { + addWatcher(CR.callRoster[CR.targetCQ].DXcall, "Calling"); + } + }); + + CR.CQMenu.append(item); + item = new nw.MenuItem({ type: "normal", label: "Ignore CQ from DXCC", click: function () { - CR.blockedCQ[ - CR.callRoster[CR.targetCQ].DXcall + - " from " + - window.opener.GT.dxccToAltName[CR.callRoster[CR.targetCQ].callObj.dxcc] - ] = true; - storeBlocks(); - viewRoster(); + ignoreCQ(CR.callRoster[CR.targetCQ].DXcall, CR.callRoster[CR.targetCQ].callObj.dxcc); } }); @@ -2011,100 +2094,32 @@ function addControls() label: "Ignore CQ from All", click: function () { - CR.blockedCQ[CR.callRoster[CR.targetCQ].DXcall + " from All"] = true; - storeBlocks(); - viewRoster(); + ignoreCQ(CR.callRoster[CR.targetCQ].DXcall, -1); } }); CR.CQMenu.append(item); - CR.clearCQIgnoreMainMenu = new nw.MenuItem({ - type: "normal", - label: "Clear CQ Ignore", - enabled: false, - click: function () - { - CR.blockedCQ = Object(); - storeBlocks(); - viewRoster(); - } - }); - CR.menu.append(CR.clearCQIgnoreMainMenu); - - CR.clearCQIgnore = new nw.MenuItem({ - type: "normal", - label: "Clear Ignore", - enabled: false, - click: function () - { - CR.blockedCQ = Object(); - storeBlocks(); - viewRoster(); - } - }); - CR.CQMenu.append(CR.clearCQIgnore); - - item = new nw.MenuItem({ - type: "normal", - label: "Edit Ignores", - enabled: true, - click: function () - { - openIgnoreEdit(); - } - }); - CR.CQMenu.append(item); - CR.CQzMenu = new nw.Menu(); item = new nw.MenuItem({ type: "normal", - label: "Ignore CQ Zone", + label: $.i18n("roster.menu.IgnoreCQZone"), click: function () { - CR.blockedCQz[CR.callRoster[CR.targetCQz].callObj.cqz] = true; - storeBlocks(); - viewRoster(); + ignoreCQz(CR.callRoster[CR.targetCQz].callObj.cqz); } }); CR.CQzMenu.append(item); - CR.clearCQzIgnoreMainMenu = new nw.MenuItem({ - type: "normal", - label: "Clear CQ Zone Ignore", - enabled: false, - click: function () - { - CR.blockedCQz = Object(); - storeBlocks(); - viewRoster(); - } - }); - - CR.clearCQzIgnore = new nw.MenuItem({ - type: "normal", - label: "Clear Ignore", - enabled: false, - click: function () - { - CR.blockedCQz = Object(); - storeBlocks(); - viewRoster(); - } - }); - CR.CQzMenu.append(CR.clearCQzIgnore); - - CR.CQzMenu.append(CR.clearCQzIgnoreMainMenu); - item = new nw.MenuItem({ type: "normal", - label: "Edit Ignores", + label: $.i18n("roster.menu.EditIgnores"), enabled: true, click: function () { - openIgnoreEdit(); + openIgnores(); } }); @@ -2114,52 +2129,22 @@ function addControls() item = new nw.MenuItem({ type: "normal", - label: "Ignore ITU Zone", + label: $.i18n("roster.menu.IgnoreITUZone"), click: function () { - CR.blockedITUz[CR.callRoster[CR.targetITUz].callObj.ituz] = true; - storeBlocks(); - viewRoster(); + ignoreITUz(CR.callRoster[CR.targetITUz].callObj.itu); } }); CR.ITUzMenu.append(item); - CR.clearITUzIgnoreMainMenu = new nw.MenuItem({ - type: "normal", - label: "Clear ITU Zone Ignore", - enabled: false, - click: function () - { - CR.blockedITUz = Object(); - storeBlocks(); - viewRoster(); - } - }); - - CR.ITUzMenu.append(CR.clearITUzIgnoreMainMenu); - - CR.clearITUzIgnore = new nw.MenuItem({ - type: "normal", - label: "Clear Ignore", - enabled: false, - click: function () - { - CR.blockedITUz = Object(); - storeBlocks(); - viewRoster(); - } - }); - - CR.ITUzMenu.append(CR.clearITUzIgnore); - item = new nw.MenuItem({ type: "normal", - label: "Edit Ignores", + label: $.i18n("roster.menu.EditIgnores"), enabled: true, click: function () { - openIgnoreEdit(); + openIgnores(); } }); @@ -2169,74 +2154,25 @@ function addControls() item = new nw.MenuItem({ type: "normal", - label: "Ignore DXCC", + label: $.i18n("roster.menu.IgnoreDXCC"), click: function () { - CR.blockedDxcc[CR.targetDxcc] = true; - storeBlocks(); - viewRoster(); + ignoreDxcc(CR.targetDxcc); } }); CR.dxccMenu.append(item); - CR.clearDxccIgnoreMainMenu = new nw.MenuItem({ - type: "normal", - label: "Clear DXCC Ignore", - enabled: false, - click: function () - { - CR.blockedDxcc = Object(); - storeBlocks(); - viewRoster(); - } - }); - CR.menu.append(CR.clearDxccIgnoreMainMenu); - - CR.clearDxccIgnore = new nw.MenuItem({ - type: "normal", - label: "Clear Ignore", - enabled: false, - click: function () - { - CR.blockedDxcc = Object(); - storeBlocks(); - viewRoster(); - } - }); - CR.dxccMenu.append(CR.clearDxccIgnore); - item = new nw.MenuItem({ type: "normal", - label: "Edit Ignores", + label: $.i18n("roster.menu.EditIgnores"), enabled: true, click: function () { - openIgnoreEdit(); + openIgnores(); } }); - CR.menu.append(item); - item = new nw.MenuItem({ - type: "normal", - label: "Edit Ignores", - enabled: true, - click: function () - { - openIgnoreEdit(); - } - }); - CR.callMenu.append(item); - - item = new nw.MenuItem({ - type: "normal", - label: "Edit Ignores", - enabled: true, - click: function () - { - openIgnoreEdit(); - } - }); CR.dxccMenu.append(item); callsignNeed.value = CR.rosterSettings.callsign; @@ -2262,11 +2198,6 @@ function addControls() noMyDxcc.checked = CR.rosterSettings.noMyDxcc; onlyMyDxcc.checked = CR.rosterSettings.onlyMyDxcc; - noMsg.checked = CR.rosterSettings.noMsg; - onlyMsg.checked = CR.rosterSettings.onlyMsg; - noMsgValue.value = CR.rosterSettings.noMsgValue; - onlyMsgValue.value = CR.rosterSettings.onlyMsgValue; - usesLoTW.checked = CR.rosterSettings.usesLoTW; useseQSL.checked = CR.rosterSettings.useseQSL; onlySpot.checked = CR.rosterSettings.onlySpot; @@ -2274,45 +2205,41 @@ function addControls() referenceNeed.value = CR.rosterSettings.reference; allOnlyNew.checked = CR.rosterSettings.allOnlyNew; - useRegex.checked = CR.rosterSettings.useRegex; - callsignRegex.value = CR.rosterSettings.callsignRegex; - huntRegexValue.value = CR.rosterSettings.huntRegexValue; - - noUnknownDXCC.checked = CR.rosterSettings.noUnknownDXCC; clearRosterOnBandChange.checked = CR.rosterSettings.clearRosterOnBandChange; rosterAlwaysOnTop.checked = CR.rosterSettings.rosterAlwaysOnTop; + animateCQGT.checked = CR.rosterSettings.animateCQGT; rosterDelayOnFocus.checked = CR.rosterSettings.rosterDelayOnFocus; displayDelayOnFocus(); rosterDelayTime.value = CR.rosterSettings.rosterDelayTime; rosterDelayTimeTd.innerHTML = rosterDelayTime.value + "ms"; setRosterTimeView(); - - for (const column in ROSTER_COLUMNS) - { - if (column != "Callsign") - { - let option = newOption(column, column); - if (column == CR.rosterSettings.compactEntity) - { - option.selected = true; - } - compactEntitySelect.appendChild(option); - } - } - + setCompactView(); + initSelectors(); setVisual(); document.addEventListener("keydown", onMyKeyDown, false); - - initDXCCSelector(); CR.timerInterval = nodeTimers.setInterval(realtimeRoster, 1000); - updateInstances(); } +function setCompactView() +{ + compactModeDiv.innerHTML = CR.rosterSettings.compact ? $.i18n("roster.menu.RosterMode") : $.i18n("roster.menu.CompactMode"); + compactEnityDiv.style.display = CR.rosterSettings.compact ? "" : "none"; + columnsBoxDiv.style.display = columnsbox.style.display = CR.rosterSettings.compact ? "none" : ""; +} +function compactModeChanged() +{ + CR.rosterSettings.compact = !CR.rosterSettings.compact; + writeRosterSettings(); + setCompactView(); + viewRoster(); +} + function compactEntityChanged() { CR.rosterSettings.compactEntity = compactEntitySelect.value; + writeRosterSettings(); viewRoster(); } @@ -2358,6 +2285,12 @@ function changeRosterTime() viewRoster(); } +function changeAnimateCQGT(butt) +{ + CR.rosterSettings.animateCQGT = butt.checked; + viewRoster(); +} + function changeRosterTop(butt) { CR.rosterSettings.rosterAlwaysOnTop = butt.checked; @@ -2377,100 +2310,12 @@ function setRosterTimeView() function handleContextMenu(ev) { - if (editView.style.display == "inline-block") return false; - let mouseX = Math.round(ev.x); let mouseY = Math.round(ev.y); - let len = Object.keys(CR.blockedCalls).length; - if (len > 0) - { - CR.clearIgnores.enabled = true; - CR.clearIgnores.label = - "Clear Call Ignore" + (len > 1 ? "s (" + len + ")" : ""); - CR.clearIgnoresCall.enabled = true; - CR.clearIgnoresCall.label = - "Clear Ignore" + (len > 1 ? "s (" + len + ")" : ""); - } - else - { - CR.clearIgnores.label = "Clear Call Ignore"; - CR.clearIgnores.enabled = false; - CR.clearIgnoresCall.label = "Clear Ignore"; - CR.clearIgnoresCall.enabled = false; - } - - len = Object.keys(CR.blockedDxcc).length; - if (len > 0) - { - CR.clearDxccIgnoreMainMenu.enabled = true; - CR.clearDxccIgnoreMainMenu.label = - "Clear DXCC Ignore" + (len > 1 ? "s (" + len + ")" : ""); - CR.clearDxccIgnore.enabled = true; - CR.clearDxccIgnore.label = - "Clear Ignore" + (len > 1 ? "s (" + len + ")" : ""); - } - else - { - CR.clearDxccIgnoreMainMenu.label = "Clear DXCC Ignore"; - CR.clearDxccIgnoreMainMenu.enabled = false; - CR.clearDxccIgnore.label = "Clear Ignore"; - CR.clearDxccIgnore.enabled = false; - } - - len = Object.keys(CR.blockedCQ).length; - if (len > 0) - { - CR.clearCQIgnoreMainMenu.enabled = true; - CR.clearCQIgnoreMainMenu.label = - "Clear CQ Ignore" + (len > 1 ? "s (" + len + ")" : ""); - CR.clearCQIgnore.enabled = true; - CR.clearCQIgnore.label = "Clear Ignore" + (len > 1 ? "s (" + len + ")" : ""); - } - else - { - CR.clearCQIgnoreMainMenu.label = "Clear CQ Ignore"; - CR.clearCQIgnoreMainMenu.enabled = false; - CR.clearCQIgnore.label = "Clear Ignore"; - CR.clearCQIgnore.enabled = false; - } - - len = Object.keys(CR.blockedCQz).length; - if (len > 0) - { - CR.clearCQzIgnoreMainMenu.enabled = true; - CR.clearCQzIgnoreMainMenu.label = - "Clear CQ Zone Ignore" + (len > 1 ? "s (" + len + ")" : ""); - CR.clearCQzIgnore.enabled = true; - CR.clearCQzIgnore.label = "Clear Ignore" + (len > 1 ? "s (" + len + ")" : ""); - } - else - { - CR.clearCQzIgnoreMainMenu.label = "Clear CQ Zone Ignore"; - CR.clearCQzIgnoreMainMenu.enabled = false; - CR.clearCQzIgnore.label = "Clear Ignore"; - CR.clearCQzIgnore.enabled = false; - } - - len = Object.keys(CR.blockedITUz).length; - if (len > 0) - { - CR.clearITUzIgnoreMainMenu.enabled = true; - CR.clearITUzIgnoreMainMenu.label = - "Clear ITU Zone Ignore" + (len > 1 ? "s (" + len + ")" : ""); - CR.clearITUzIgnore.enabled = true; - CR.clearITUzIgnore.label = "Clear Ignore" + (len > 1 ? "s (" + len + ")" : ""); - } - else - { - CR.clearITUzIgnoreMainMenu.label = "Clear ITU Zone Ignore"; - CR.clearITUzIgnoreMainMenu.enabled = false; - CR.clearITUzIgnore.label = "Clear Ignore"; - CR.clearITUzIgnore.enabled = false; - } - if (typeof ev.target != "undefined") { + if (ev.target.className == "inputTextValue") return true; if (CR.developerMode) { if ((ev.target.id == "ShowMoreControlsLink") || @@ -2483,37 +2328,52 @@ function handleContextMenu(ev) } let name = ""; - if (ev.target.tagName == "TD" || (CR.rosterSettings.compact && ev.target.tagName == "DIV")) + let target = ev.target; + let parent = ev.target.parentNode; + if (target.tagName == "SPAN") { - name = ev.target.getAttribute("name"); + target = ev.target.parentNode; + parent = target.parentNode; + } + if (target.tagName == "TD" || (CR.rosterSettings.compact && target.tagName == "DIV")) + { + name = target.getAttribute("name"); + } + if (CR.rosterSettings.compact && name != "Callsign") + { + parent = parent.parentNode; } - if (name == "Callsign") { - CR.targetHash = ev.target.parentNode.id; + CR.targetHash = parent.id; CR.callMenu.popup(mouseX, mouseY); } else if (name == "Calling") { - CR.targetHash = ev.target.parentNode.id; + CR.targetHash = parent.id; CR.callingMenu.popup(mouseX, mouseY); } + else if (name == "Msg") + { + CR.targetHash = parent.id; + CR.MsgMenu.popup(mouseX, mouseY); + } else if (name == "CQ") { - if (CR.callRoster[ev.target.parentNode.id].DXcall != "CQ") + if (CR.callRoster[parent.id].DXcall != "CQ") { - CR.targetCQ = ev.target.parentNode.id; + CR.targetCQ = parent.id; CR.CQMenu.popup(mouseX, mouseY); } } else if (name == "CQz") { - CR.targetCQz = ev.target.parentNode.id; + CR.targetCQz = parent.id; CR.CQzMenu.popup(mouseX, mouseY); } else if (name == "ITUz") { - CR.targetITUz = ev.target.parentNode.id; + CR.targetITUz = parent.id; CR.ITUzMenu.popup(mouseX, mouseY); } else if (name && name.startsWith("DXCC")) @@ -2531,18 +2391,35 @@ function handleContextMenu(ev) } else { - if (ev.target.tagName == "TH" && ev.target.getAttribute("name")) + if (target.tagName == "TH" && target.getAttribute("name")) { - CR.menuItemForCurrentColumn.enabled = true; - CR.currentColumnName = ev.target.getAttribute("name"); + CR.menuItemForMoveLeftColumn.enabled = true; + CR.menuItemForMoveRightColumn.enabled = true; + + CR.currentColumnName = target.getAttribute("name"); + + const columns = rosterColumnList(CR.rosterSettings.columns, { Callsign: true }); + const pos = columns.indexOf(CR.currentColumnName); + if (pos == 0) + { + CR.menuItemForMoveLeftColumn.enabled = false; + CR.menuItemForMoveRightColumn.enabled = false; + } + else if (pos == 1) + { + CR.menuItemForMoveLeftColumn.enabled = false; + } + if (pos + 1 == Object.keys(columns).length) + { + CR.menuItemForMoveRightColumn.enabled = false; + } + + CR.columnMenu.popup(mouseX, mouseY); } else { - CR.menuItemForCurrentColumn.enabled = false; - CR.currentColumnName = null; + CR.menu.popup(mouseX, mouseY); } - - CR.menu.popup(mouseX, mouseY); } } } @@ -3763,3 +3640,404 @@ function listShortInstances() } return shortInstances; } + +function openInfoTab(evt, tabName, callFunc, callObj) +{ + // Declare all variables + var i, infoTabcontent, infoTablinks; + // Get all elements with class="infoTabcontent" and hide them + infoTabcontent = document.getElementsByClassName("infoTabcontent"); + for (i = 0; i < infoTabcontent.length; i++) + { + infoTabcontent[i].style.display = "none"; + } + // Get all elements with class="infoTablinks" and remove the class "active" + infoTablinks = document.getElementsByClassName("infoTablinks"); + for (i = 0; i < infoTablinks.length; i++) + { + infoTablinks[i].className = infoTablinks[i].className.replace( + " active", + "" + ); + } + // Show the current tab, and add an "active" class to the button that opened the tab + + document.getElementById(tabName).style.display = "block"; + if (typeof evt == "string") + { + for (i = 0; i < infoTablinks.length; i++) + { + if (infoTablinks[i].id == evt) + { + infoTablinks[i].className += " active"; + } + } + } + else if (typeof evt.currentTarget != "undefined") + { + evt.currentTarget.className += " active"; + } + else + { + evt.className += " active"; + } + + if (callFunc) + { + if (typeof callFunc == "function") + { + if (callObj) callFunc(callObj); + else callFunc(); + } + } +} + +function ValidateTextInput(inputText, validDiv = null) +{ + if (inputText.value.length > 0) + { + var passed = false; + inputText.value = inputText.value.toUpperCase(); + if (/\d/.test(inputText.value) || /[A-Z]/.test(inputText.value)) + { + passed = true; + } + if (passed) + { + inputText.style.color = "#FF0"; + inputText.style.backgroundColor = "green"; + if (validDiv) validDiv.innerHTML = ""; + return true; + } + else + { + inputText.style.color = "#000"; + inputText.style.backgroundColor = "yellow"; + if (validDiv) validDiv.innerHTML = $.i18n("stats.Validate.Invalid"); + return false; + } + } + else + { + inputText.style.color = "#000"; + inputText.style.backgroundColor = "yellow"; + if (validDiv) validDiv.innerHTML = $.i18n("stats.Validate.Invalid"); + return false; + } +} + +function watcherOnName() +{ + watcherName.value = watcherName.value.replace(/[$%.'",<>]/g, ""); + watcherNameValidate(); +} + +function watcherNameValidate() +{ + if (watcherName.value.length == 0 || (watcherName.value in CR.watchers && watcherName.value != CR.watcherEditKey)) + { + watcherName.style.color = "#000"; + watcherName.style.backgroundColor = "red"; + return false; + } + else + { + watcherName.style.color = ""; + watcherName.style.backgroundColor = ""; + return true; + } +} + +function watcherTypeChanged(value) +{ + watcherType.value = value; + if (value == "Callsign") + { + // fix i18n + watcherTextTh.innerHTML = "Callsign"; + } + if (value == "Calling") + { + // fix i18n + watcherTextTh.innerHTML = "Calling"; + } + if (value == "Message") + { + watcherTextTh.innerHTML = $.i18n("gt.WSJTMessage.Message"); + } + + watcherStartDateEnable(watcherStartDateCheckbox.checked); + watcherEndDateEnable(watcherEndDateCheckbox.checked); +} + +function watcherRegexChanged(checked) +{ + watcherOnText(); +} + +function watcherOnText() +{ + var testCallsign = false; + if (watcherRegexCheckbox.checked == false) + { + if (watcherType.value == "Message") + { + watcherText.value = watcherText.value.toUpperCase().replace(/[^A-Z0-9/<>\s]+/g, ""); + } + else if (watcherType.value == "Calling") + { + testCallsign = true; + watcherText.value = watcherText.value.toUpperCase().replace(/[^A-Z0-9/\s]+/g, ""); + } + else + { + testCallsign = true; + watcherText.value = watcherText.value.toUpperCase().replace(/[^A-Z0-9/]+/g, ""); + } + } + watcherTextValidate(testCallsign); +} + +function watcherTextValidate(testCallsign = false) +{ + if (watcherText.value.length == 0) + { + watcherText.style.color = "#000"; + watcherText.style.backgroundColor = "red"; + return false; + } + else + { + if (testCallsign && !watcherText.value.match(CALLSIGN_REGEXP)) + { + watcherText.style.color = "#000"; + watcherText.style.backgroundColor = "yellow"; + } + else + { + watcherText.style.color = ""; + watcherText.style.backgroundColor = ""; + } + return true; + } +} + +function watcherStartDateEnable(checked) +{ + watcherStartDateTh.style.display = watcherStartDateTd.style.display = (checked ? "" : "none"); +} + +function watcherEndDateEnable(checked) +{ + watcherAutoDeleteTd.style.display = watcherAutoDeleteTh.style.display = watcherEndDateTh.style.display = watcherEndDateTd.style.display = (checked ? "" : "none"); +} + +function newWatcherEntry() +{ + let entry = Object(); + + entry.watch = true; + entry.type = "Callsign"; + entry.regex = false; + entry.text = ""; + entry.test = null; + entry.start = false; + entry.end = false; + entry.startTime = Date.now(); + entry.startTime -= (entry.startTime % 86400000); + entry.endTime = Date.now(); + entry.endTime -= (entry.endTime % 86400000); + entry.autoDelete = false; + + return entry; +} + +function saveWatcher() +{ + watcherName.value = watcherName.value.trim(); + watcherText.value = watcherText.value.trim(); + if (watcherNameValidate() == false || watcherTextValidate() == false) return; + + if (CR.watcherEditKey.length > 0 && CR.watcherEditKey in CR.watchers) + { + delete CR.watchers[CR.watcherEditKey]; + } + + let entry = newWatcherEntry(); + entry.watch = true; + entry.type = watcherType.value; + entry.regex = watcherRegexCheckbox.checked; + entry.text = watcherText.value; + entry.test = null; + entry.start = watcherStartDateCheckbox.checked; + entry.end = watcherEndDateCheckbox.checked; + entry.autoDelete = entry.end ? watcherAutoDeleteCheckbox.checked : false; + + if (entry.start) + { + if (watcherStartDate.value.length == 0) + { + entry.startTime = Date.now(); + } + else + { + entry.startTime = Date.parse(watcherStartDate.value + "Z"); + } + } + + if (entry.end) + { + if (watcherEndDate.value.length == 0) + { + entry.endTime = Date.now(); + } + else + { + entry.endTime = Date.parse(watcherEndDate.value + "Z"); + } + if (entry.start && entry.endTime <= entry.startTime) + { + // Good for a minute, least we can do :) + entry.endTime = entry.startTime + 60000; + } + } + CR.watchers[watcherName.value] = entry; + writeRosterSettings(); + openWathcherTab(); + window.opener.goProcessRoster(); +} + +function addWatcher(value, type) +{ + if (!(value in CR.watchers)) + { + let entry = newWatcherEntry(); + entry.watch = true; + entry.type = type; + entry.regex = false; + entry.text = value; + entry.test = null; + entry.autoDelete = false; + CR.watchers[value] = entry; + CR.rosterSettings.wanted.huntWatcher = huntWatcher.checked = true; + writeRosterSettings(); + window.opener.goProcessRoster(); + wantRenderWatchersTab(); + } +} + +function clearWatcher() +{ + CR.watcherEditKey = ""; + + watcherName.style.color = ""; + watcherName.style.backgroundColor = ""; + watcherText.style.color = ""; + watcherText.style.backgroundColor = ""; + + loadWatcherValues("", newWatcherEntry()); +} + +function toggleWatcher(key) +{ + CR.watchers[key].watch = !CR.watchers[key].watch; + writeRosterSettings(); + wantRenderWatchersTab(); + window.opener.goProcessRoster(); +} + +function deleteWatcher(key) +{ + delete CR.watchers[key]; + writeRosterSettings(); + wantRenderWatchersTab(); + window.opener.goProcessRoster(); +} + +CR.watcherEditKey = ""; + +function editWatcher(key) +{ + CR.watcherEditKey = key; + + loadWatcherValues(key, CR.watchers[key]); +} + +function loadWatcherValues(key, entry) +{ + watcherName.value = key; + watcherType.vale = entry.type; + watcherRegexCheckbox.checked = entry.regex; + watcherText.value = entry.text; + watcherStartDateCheckbox.checked = entry.start; + watcherEndDateCheckbox.checked = entry.end; + let date = new Date(entry.startTime); + watcherStartDate.value = date.toISOString().slice(0, 16); + date = new Date(entry.endTime); + watcherEndDate.value = date.toISOString().slice(0, 16); + watcherAutoDeleteCheckbox.checked = entry.autoDelete; + watcherTypeChanged(entry.type); +} + +function htmlEntities(str) +{ + return String(str) + .replace(/&/g, "&") + .replace(//g, ">") + .replace(/"/g, """); +} + +function openWathcherTab() +{ + clearWatcher(); + wantRenderWatchersTab(); +} + +function wantRenderWatchersTab() +{ + if (watcherBoxDiv.style.display != "none") + { + renderWatchersTab(); + } +} + +function renderWatchersTab() +{ + if (Object.keys(CR.watchers).length > 0) + { + let worker = "
"; + Object.keys(CR.watchers) + .sort((a, b) => a.toLowerCase() < b.toLowerCase() ? -1 : 1) + .forEach(function (key) + { + worker += ""; + worker += ""; + let text = htmlEntities(CR.watchers[key].text); + worker += ""; + worker += ""; + worker += ""; + worker += ""; + worker += ""; + }); + worker += "
👁️NameTypeRegexTextStart DateEnd DateEditDelete
" + (CR.watchers[key].watch ? "👀" : "🙈") + "" + key + "" + CR.watchers[key].type + "" + (CR.watchers[key].regex ? "☑️" : "") + "" + (CR.watchers[key].regex ? text : formatCallsign(text)) + "" + (CR.watchers[key].start ? window.opener.userTimeString(CR.watchers[key].startTime) : "") + "" + (CR.watchers[key].end ? window.opener.userTimeString(CR.watchers[key].endTime) : "") + "📝"; + worker += CR.watchers[key].autoDelete ? "🤖" : "🚮"; + worker += "
"; + + watcherEditView.innerHTML = worker; + let height = 40; + if (watcherBoxDiv.offsetHeight >= window.innerHeight - height) + { + watcherBoxDiv.style.height = (window.innerHeight - height) + "px"; + } + else + { + watcherBoxDiv.style.height = ""; + } + } + else + { + watcherBoxDiv.style.height = ""; + watcherEditView.innerHTML = ""; + } +} diff --git a/package.nw/lib/roster/prepareRosterSettings.js b/package.nw/lib/roster/prepareRosterSettings.js index 893078e..b48eb83 100644 --- a/package.nw/lib/roster/prepareRosterSettings.js +++ b/package.nw/lib/roster/prepareRosterSettings.js @@ -29,31 +29,6 @@ function prepareRosterSettings() window.opener.GT.appSettings.gtShareEnable == true && window.opener.GT.appSettings.gtMsgEnable == true; - // The following 3 sections deal with QSLing, do we break them out - // individually or lump them into a qslUser function that sets - // all three at the same time? - // this section is for LoTW users, can be a function - if (window.opener.GT.callsignLookups.lotwUseEnable == true) - { - usesLoTWDiv.style.display = ""; - if (CR.rosterSettings.usesLoTW == true) - { - maxLoTW.style.display = ""; - maxLoTWView.style.display = ""; - } - else - { - maxLoTW.style.display = "none"; - maxLoTWView.style.display = "none"; - } - } - else - { - usesLoTWDiv.style.display = "none"; - maxLoTW.style.display = "none"; - maxLoTWView.style.display = "none"; - } - if (CR.rosterSettings.huntNeed == "mixed") { rosterSettings.huntIndex = CR.confirmed; diff --git a/package.nw/lib/roster/processRosterFiltering.js b/package.nw/lib/roster/processRosterFiltering.js index b394fff..969a0e2 100644 --- a/package.nw/lib/roster/processRosterFiltering.js +++ b/package.nw/lib/roster/processRosterFiltering.js @@ -53,11 +53,6 @@ function processRosterFiltering(callRoster, rosterSettings) entry.tx = false; continue; } - if (CR.rosterSettings.noUnknownDXCC && callObj.dxcc == -1) - { - entry.tx = false; - continue; - } if (window.opener.GT.instances[callObj.instance].crEnable == false) { entry.tx = false; @@ -68,7 +63,7 @@ function processRosterFiltering(callRoster, rosterSettings) entry.tx = false; continue; } - if (entry.DXcall + " from All" in CR.blockedCQ || entry.DXcall + " from " + window.opener.GT.dxccToAltName[callObj.dxcc] in CR.blockedCQ) + if (entry.DXcall in CR.ignoredCQ || entry.DXcall + ":" + callObj.dxcc in CR.ignoredCQ) { entry.tx = false; continue; @@ -104,19 +99,6 @@ function processRosterFiltering(callRoster, rosterSettings) continue; } } - if (CR.rosterSettings.useRegex && CR.rosterSettings.callsignRegex.length > 0) - { - var regexObj = regexObj || new RegExp(CR.rosterSettings.callsignRegex, "i") - try - { - if (!call.match(regexObj)) - { - entry.tx = false; - continue; - } - } - catch (e) {} - } if (CR.rosterSettings.requireGrid == true && callObj.grid.length != 4) { entry.tx = false; @@ -143,31 +125,6 @@ function processRosterFiltering(callRoster, rosterSettings) continue; } - if (CR.rosterSettings.noMsg == true) - { - try - { - if (callObj.msg.match(CR.rosterSettings.noMsgValue)) - { - entry.tx = false; - continue; - } - } - catch (e) {} - } - if (CR.rosterSettings.onlyMsg == true) - { - try - { - if (!callObj.msg.match(CR.rosterSettings.onlyMsgValue)) - { - entry.tx = false; - continue; - } - } - catch (e) {} - } - if (callObj.dxcc == window.opener.GT.myDXCC) { if (CR.rosterSettings.noMyDxcc == true) diff --git a/package.nw/lib/roster/processRosterHunting.js b/package.nw/lib/roster/processRosterHunting.js index 10e783f..233e8c2 100644 --- a/package.nw/lib/roster/processRosterHunting.js +++ b/package.nw/lib/roster/processRosterHunting.js @@ -3,7 +3,6 @@ function processRosterHunting(callRoster, rosterSettings, awardTracker) // these lets, do they rely on anything between the top and here? // if not could they be put in the let list at the beginning? let hasGtPin = false; - let inversionAlpha = "DD"; let row = "#000000"; let bold = "#000000;font-weight: bold;"; @@ -18,6 +17,29 @@ function processRosterHunting(callRoster, rosterSettings, awardTracker) const potaEnabled = (window.opener.GT.appSettings.potaEnabled == 1); // TODO: Hunting results might be used to filter, based on the "Callsigns: Only Wanted" option, // so maybe we can move this loop first, and add a check to the filtering loop? + + // award tracker overrides + let awardTrackerOverrides = { + call: false, + grids: false, + dxcc: false, + states: false, + cnty: false, + cqz: false, + px: false, + cont: false + }; + + if (CR.rosterSettings.reference == LOGBOOK_AWARD_TRACKER) + { + for (let key in awardTracker) + { + if (awardTracker[key].enable) + { + awardTrackerOverrides[awardTracker[key].rule.type] = true; + } + } + } // Second loop, hunting and highlighting for (const callHash in callRoster) @@ -63,10 +85,12 @@ function processRosterHunting(callRoster, rosterSettings, awardTracker) let callsign = entry.DEcall; - callObj.hunting = {} - callObj.callFlags = {} - callObj.style = callObj.style || {} - callObj.DEcallHTML = callObj.DEcall + callObj.hunting = {}; + callObj.callFlags = {}; + callObj.style = callObj.style || {}; + callObj.DEcallHTML = null; + callObj.DXcallHTML = null; + callObj.msgHTML = null; let colorObject = Object(); @@ -95,11 +119,8 @@ function processRosterHunting(callRoster, rosterSettings, awardTracker) ""; let cntyPointer = (callObj.cnty && callObj.qual == false) ? "cursor: pointer;" : ""; - let didWork = false; - let hash = callsign + workHashSuffix; - let layeredHash = layeredHashSuffix && (callsign + layeredHashSuffix) // Call worked in current logbook settings, regardless of hunting mode if (hash in CR.worked.call) @@ -170,28 +191,6 @@ function processRosterHunting(callRoster, rosterSettings, awardTracker) } } - // award tracker overrides - let awardTrackerOverrides = { - call: false, - grids: false, - dxcc: false, - states: false, - cnty: false, - cqz: false, - px: false, - cont: false - }; - if (CR.rosterSettings.reference == LOGBOOK_AWARD_TRACKER) - { - for (let key in awardTracker) - { - if (awardTracker[key].enable) - { - awardTrackerOverrides[awardTracker[key].rule.type] = true; - } - } - } - // Hunting for callsigns if (huntCallsign.checked || awardTrackerOverrides.call) { @@ -251,25 +250,9 @@ function processRosterHunting(callRoster, rosterSettings, awardTracker) } } - if (huntRegex.checked == true && CR.rosterSettings.huntRegexValue.length > 0) + if (huntWatcher.checked) { - var huntRegexObj = huntRegexObj || new RegExp(CR.rosterSettings.huntRegexValue, "gi") - try - { - if (callsign.match(huntRegexObj)) - { - shouldAlert = true; - callObj.reason.push("regex"); - callObj.hunting.regex = "hunted"; - callObj.DEcallHTML = callsign.replace(huntRegexObj, (x, y) => `${x}`) - if (!callObj.hunting.call && !callObj.callFlags.worked) - { - callBg = `${call}${inversionAlpha};`; - call = bold; - } - } - } - catch (e) {} + shouldAlert = processWatchers(callObj); } // Hunting for "stations calling you" @@ -339,7 +322,7 @@ function processRosterHunting(callRoster, rosterSettings, awardTracker) } // Hunting for DXCC - if (huntDXCC.checked || awardTrackerOverrides.dxcc) + if (huntDXCC.checked || awardTrackerOverrides.dxcc || awardTrackerOverrides.dxcc2band) { let hash = String(callObj.dxcc) + "|" + workHashSuffix; let layeredHash = rosterSettings.layeredMode && (String(callObj.dxcc) + "|" + layeredHashSuffix) @@ -469,11 +452,7 @@ function processRosterHunting(callRoster, rosterSettings, awardTracker) if ((huntCounty.checked || awardTrackerOverrides.cnty) && window.opener.GT.callsignLookups.ulsUseEnable == true) { let finalDxcc = callObj.dxcc; - if ( - callObj.cnty && - (finalDxcc == 291 || finalDxcc == 110 || finalDxcc == 6 || finalDxcc == 202) && - callObj.cnty.length > 0 - ) + if (callObj.cnty && (finalDxcc == 291 || finalDxcc == 110 || finalDxcc == 6 || finalDxcc == 202) && callObj.cnty.length > 0) { let hash = callObj.cnty + (rosterSettings.layeredMode ? layeredHashSuffix : workHashSuffix); @@ -790,11 +769,25 @@ function processRosterHunting(callRoster, rosterSettings, awardTracker) } } + let huzzah = ""; + // Uncomment to test + // callObj.DXcall = "CQ GT"; + if (CR.rosterSettings.animateCQGT == true && callObj.CQ == true && (callObj.DXcall == "CQ GT" || callObj.DXcall == "GridTracker")) + { + huzzah = "class='huzzah' "; + callObj.DXcall = "GridTracker"; + calling = "white"; + } + else if (CR.rosterSettings.animateCQGT == false && callObj.DXcall == "GridTracker") + { + callObj.DXcall = "CQ GT"; + } + // Assemble all styles colorObject.call = "style='" + callConf + "background-color:" + callBg + ";color:" + call + ";" + callPointer + "'"; colorObject.grid = "style='" + gridConf + "background-color:" + gridBg + ";color:" + grid + ";cursor:pointer'"; - colorObject.calling = "style='" + callingConf + "background-color:" + callingBg + ";color:" + calling + "'"; + colorObject.calling = huzzah + "style='" + callingConf + "background-color:" + callingBg + ";color:" + calling + "'"; colorObject.dxcc = "style='" + dxccConf + "background-color:" + dxccBg + ";color:" + dxcc + "'"; colorObject.state = "style='" + stateConf + "background-color:" + stateBg + ";color:" + state + "'"; colorObject.cnty = "style='" + cntyConf + "background-color:" + cntyBg + ";color:" + cnty + ";" + cntyPointer + "'"; @@ -818,3 +811,76 @@ function processRosterHunting(callRoster, rosterSettings, awardTracker) } } } + +function buildWatcher(watcher) +{ + if (watcher.regex) + { + watcher.test = new RegExp(watcher.text, "gi"); + } + else + { + watcher.test = new RegExp("^" + watcher.text + "$", "gi"); + } + + if (watcher.type == "Callsign") + { + watcher.source = "DEcall"; + watcher.html = "DEcallHTML"; + } + else if (watcher.type == "Calling") + { + watcher.source = "DXcall"; + watcher.html = "DXcallHTML"; + } + else + { + watcher.source = "msg"; + watcher.html = "msgHTML"; + } + return watcher.test; +} + +function processWatchers(callObj) +{ + let now = Date.now(); + for (let key in CR.watchers) + { + let watcher = CR.watchers[key]; + if (watcher.watch) + { + if (watcher.start && now < watcher.startTime) continue; + if (watcher.end && now > watcher.endTime) + { + if (watcher.autoDelete) + { + // Don't call deleteWatcher() as it calls the roster renderer + delete CR.watchers[key]; + writeRosterSettings(); + wantRenderWatchersTab(); + } + else + { + watcher.watch = false; + wantRenderWatchersTab(); + } + continue; + } + watcher.test = watcher.test || buildWatcher(watcher); + try + { + if (callObj[watcher.source].match(watcher.test)) + { + callObj.reason.push("watcher"); + callObj.hunting.watcher = "hunted"; + callObj.watcherKey = key; + let htmlPrevent = htmlEntities(callObj[watcher.source]); + callObj[watcher.html] = htmlPrevent.replace(watcher.test, (x, y) => `${x}`); + return true; + } + } + catch (e) {} + } + } + return false; +} diff --git a/package.nw/lib/roster/renderCompactRoster.js b/package.nw/lib/roster/renderCompactRoster.js index ad75258..8ad4024 100644 --- a/package.nw/lib/roster/renderCompactRoster.js +++ b/package.nw/lib/roster/renderCompactRoster.js @@ -19,7 +19,7 @@ function renderCompactRosterRow(callObj, showBand) let wholeClick = (CR.isCompactCounty ? "" : onClick); let callsignClick = (CR.isCompactCounty ? onClick : ""); let worker = "
"; - worker += "
" + formatCallsign(callObj.DEcall) + bandView + "
"; + worker += "
" + formatCallsign(callObj.DEcallHTML || callObj.DEcall) + bandView + "
"; worker += "
"; worker += renderEntryForColumn(CR.rosterSettings.compactEntity, callObj, "div"); worker += "
"; diff --git a/package.nw/lib/roster/renderRoster.js b/package.nw/lib/roster/renderRoster.js index 7223dc9..446ea04 100644 --- a/package.nw/lib/roster/renderRoster.js +++ b/package.nw/lib/roster/renderRoster.js @@ -26,11 +26,12 @@ function renderRoster(callRoster, rosterSettings) if (window.opener.GT.callsignLookups.lotwUseEnable == true) { - // Do nothing + usesLoTWDiv.style.display = ""; } else { columnOverrides.LoTW = false; + usesLoTWDiv.style.display = "none"; } if (rosterSettings.canMsg == true) @@ -53,10 +54,6 @@ function renderRoster(callRoster, rosterSettings) columnOverrides.POTA = false; } - if (rosterSettings.isAwardTracker) - { - columnOverrides.Wanted = true; - } // dealing with spots if (CR.rosterSettings.columns.Spot == true) onlySpotDiv.style.display = ""; else onlySpotDiv.style.display = "none"; diff --git a/package.nw/lib/roster/rosterColumnFunctions.js b/package.nw/lib/roster/rosterColumnFunctions.js index f75be35..d7ae35e 100644 --- a/package.nw/lib/roster/rosterColumnFunctions.js +++ b/package.nw/lib/roster/rosterColumnFunctions.js @@ -131,7 +131,7 @@ function changeRosterColumnOrder(columns) function moveColumnLeft(column) { - const columns = rosterColumnList(CR.rosterSettings.columns, { Callsign: true, Grid: true }); + const columns = rosterColumnList(CR.rosterSettings.columns, { Callsign: true }); const pos = columns.indexOf(column); if (pos > 1) { @@ -140,3 +140,29 @@ function moveColumnLeft(column) } changeRosterColumnOrder(columns); } + +function moveColumnRight(column) +{ + const columns = rosterColumnList(CR.rosterSettings.columns, { Callsign: true }); + const pos = columns.indexOf(column); + if (pos > 0 && pos + 1 < Object.keys(columns).length) + { + columns[pos] = columns[pos + 1]; + columns[pos + 1] = column; + } + changeRosterColumnOrder(columns); +} + +function toggleColumn(target, column = null) +{ + let label = column || target.label; + CR.rosterSettings.columns[label] = target.checked; + CR.columnMembers[label].checked = target.checked; + if (label == "Spot") + { + window.opener.setRosterSpot(CR.rosterSettings.columns.Spot); + } + writeRosterSettings(); + viewRoster(); + resize(); +} diff --git a/package.nw/lib/roster/rosterColumns.js b/package.nw/lib/roster/rosterColumns.js index d667ae2..7e17d50 100644 --- a/package.nw/lib/roster/rosterColumns.js +++ b/package.nw/lib/roster/rosterColumns.js @@ -111,13 +111,16 @@ const ROSTER_COLUMNS = { tableData: (callObj) => ({ rawAttrs: callObj.style.calling, name: callObj.CQ ? "CQ" : "Calling", - html: (CR.rosterSettings.wantRRCQ && callObj.RR73) ? "RR73" : formatCallsign(callObj.DXcall) + html: (CR.rosterSettings.wantRRCQ && callObj.RR73) ? "RR73" : formatCallsign(callObj.DXcallHTML || callObj.DXcall) }) }, Msg: { compare: callObjLocaleComparer("DXcall"), - tableData: (callObj) => ({ html: callObj.msg }) + tableData: (callObj) => ({ + name: "Msg", + html: callObj.msgHTML || htmlEntities(callObj.msg) + }) }, DXCC: { @@ -272,7 +275,7 @@ const ROSTER_COLUMNS = { title: `${$.i18n("rosterColumns.LoTW.LastUpdate")}${ window.opener.userDayString(window.opener.GT.lotwCallsigns[callObj.DEcall] * 86400000) }`, - html: "✔" + html: "🙋🏻‍♂️" } } } @@ -284,7 +287,7 @@ const ROSTER_COLUMNS = { title: `${$.i18n("rosterColumns.LoTW.LastUpdate")}${ window.opener.userDayString(window.opener.GT.lotwCallsigns[callObj.DEcall] * 86400000) }`, - html: "✔" + html: "🙋🏻‍♂️" } } } @@ -302,7 +305,7 @@ const ROSTER_COLUMNS = { tableData: (callObj) => ({ style: "color: #0F0;", align: "center", - html: (callObj.DEcall in window.opener.GT.eqslCallsigns ? "✔" : " ") + html: (callObj.DEcall in window.opener.GT.eqslCallsigns ? "🙋🏻‍♂️" : " ") }) }, @@ -311,7 +314,7 @@ const ROSTER_COLUMNS = { tableData: (callObj) => ({ style: "color: #0F0;", align: "center", - html: (callObj.DEcall in window.opener.GT.oqrsCallsigns ? "✔" : " ") + html: (callObj.DEcall in window.opener.GT.oqrsCallsigns ? "🙋🏻‍♂️" : " ") }) }, @@ -449,7 +452,7 @@ function potaColumnHover(callObj) return value; } -WANTED_ORDER = ["call", "qrz", "regex", "cont", "dxcc", "cqz", "ituz", "dxccMarathon", "cqzMarathon", "state", "pota", "grid", "cnty", "wpx", "oams"]; +WANTED_ORDER = ["call", "qrz", "watcher", "cont", "dxcc", "cqz", "ituz", "dxccMarathon", "cqzMarathon", "state", "pota", "grid", "cnty", "wpx", "oams"]; WANTED_LABELS = {}; function wantedColumnParts(callObj, options) @@ -472,7 +475,7 @@ function wantedColumnParts(callObj, options) // else if (wanted == "caller") { parts.push("Called"); } else if (wanted == "hunted" && field == "qrz") { parts.push("Caller"); } else if (wanted == "hunted" && field == "oams") { parts.push("OAMS User"); } - else if (wanted == "hunted" && field == "regex") { parts.push("Regex match"); } + else if (wanted == "hunted" && field == "watcher") { parts.push(callObj.watcherKey); } else if (wanted == "hunted") { parts.push(`${options.html ? "" : ""}New ${WANTED_LABELS[field]}${options.html ? "" : ""}`); } else if (wanted == "worked") { parts.push(`Worked ${WANTED_LABELS[field]}`); } else if (wanted == "mixed") { parts.push(`${callObj.band} ${WANTED_LABELS[field]}`); } diff --git a/package.nw/lib/style.css b/package.nw/lib/style.css index 8ac20cc..225b87e 100644 --- a/package.nw/lib/style.css +++ b/package.nw/lib/style.css @@ -683,12 +683,8 @@ a { text-align: center; width: auto; border-top: 1px solid green; - vertical-align: top; - white-space: normal; - - /* animation: fadeEffect .3s; Fading effect takes 1 second */ } /* Style the tab content */ diff --git a/package.nw/lib/style_roster.css b/package.nw/lib/style_roster.css index 5c63c73..b406826 100644 --- a/package.nw/lib/style_roster.css +++ b/package.nw/lib/style_roster.css @@ -6,11 +6,16 @@ td { white-space: nowrap; font-family: Sans-Serif; text-align: auto; + vertical-align: baseline; padding: 0px; margin: 0px; top: 0; } +th { + vertical-align: bottom; +} + table, th, td, @@ -21,24 +26,20 @@ select, th, td { - padding-bottom: 2px; + padding-bottom: 1px; padding-right: 1px; - margin-right: 2px; - padding-left: 2px; + } input[type="checkbox"] { appearance: checkbox !important; margin: 0; + margin-top: -1px; margin-right: 1px; - vertical-align: middle; + vertical-align: top; position: relative; - top: 0px; -} -/* input[type="checkbox"]:checked { - appearance: checkbox !important; -} */ +} select { appearance: none; @@ -136,36 +137,42 @@ body.roster { min-height: 28px; margin-top: 4px; display: flex; - flex-direction: column; + flex-direction: row; align-items: stretch; justify-content: flex-start; } #RosterControls.normal #MainRosterControls { - margin-left: 180px; - margin-right: 100px; + margin-left: 1px; + margin-top: 3px; display: flex; - flex-direction: row; - align-items: center; - justify-content: space-evenly; } #TransmitControls { position: absolute; top: 3px; - left: 6px; - width: 180px; + left: 3px; + width: 246px; display: flex; flex-direction: row; + justify-content: center; } -#MoreLessControls { +#LessControls { position: absolute; top: 7px; + left: 50%; + text-align: center; +} + +#MoreControls { + position: absolute; + top: 5px; right: 6px; text-align: right; } + #RosterControls.normal #ShowFewerControlsLink { display: none; } @@ -174,10 +181,11 @@ body.roster { } #RosterControls.normal #MainRosterControls { - display: flex; - flex-direction: row; - align-items: center; - justify-content: space-evenly; + position: absolute; + top: 3px; + left: 250px; + text-align: left; + justify-content: left; } #RosterControls.extended { @@ -190,7 +198,7 @@ body.roster { #RosterControls.extended #MainRosterControls { margin-top: 30px; - min-width: 210px; + min-width: 250px; flex: 0; } @@ -232,13 +240,13 @@ body.roster { max-height: 142px; } -@media (max-width: 1050px) { +@media (max-width: 1000px) { #RosterControls.normal #HuntModeControls { display: none !important; } } -@media (max-width: 735px) { +@media (max-width: 800px) { #RosterControls.normal #CallsignsControls { display: none; } @@ -274,7 +282,7 @@ body.roster { flex-direction: row; align-items: flex-start; justify-content: flex-start; - margin-right: 8px; + margin-right: 1px; margin-bottom: 4px; } @@ -305,16 +313,16 @@ body.roster { .secondaryControlGroup { flex: 1; - margin-left: 8px; + margin-left: 4px; padding: 0px; } #huntingMatrixDiv { - flex: 0.75; + flex: .9; } #exceptionDiv { - flex: 1.25; + flex: .25; } .secondaryControlGroup h3 { @@ -328,51 +336,57 @@ body.roster { #huntingMatrixDiv h3 { color: #099; border-bottom: 2px solid #066; - margin-bottom: 2px; + margin-bottom: 3px; } #exceptionDiv h3 { - color: #944; - border-bottom: 2px solid #622; - margin-bottom: 2px; + color: rgb(206, 89, 89); + border-bottom: 2px solid rgba(253, 113, 113, 0.644); + margin-bottom: 3px; } .secondaryControlGroup .columns { /* column-count: 2; */ - max-height: 135px; + max-height: 100px; display: flex; flex-direction: column; flex-wrap: wrap; justify-content: flex-start; - align-items: stretch; + align-items: normal; } -@media (min-width: 1100px) { - .secondaryControlGroup .columns { - max-height: 80px; - } -} - -.secondaryControlGroup .columns > div { +.secondaryControlGroup .columns div { text-align: left; - margin-bottom: 2px; + vertical-align: bottom; + margin-top: 3px; + margin-right: 0px; } -.secondaryControlGroup input.slider { +input.slider { display: inline-block; - width: 75px; + width: max-content; } -.secondaryControlGroup input.inputTextValue { +.inputTextValue { + border-radius: 6px; + border: 1px solid #999; background-color: green; color: yellow; + outline: none; + margin: 0px; padding: 2px; + border-style: inset; } -.secondaryControlGroup .roundBorderValue { - padding: 2px; +.inputTextValue:hover { + border-color: #fff; + border-style: outset; } +.roundBorderValue { + padding: 3px; + font-size: larger; +} #instancesWrapper .button { display: inline-block; @@ -390,11 +404,12 @@ body.roster { #txrxdec { padding-left: 5px; padding-right: 5px; + width: 68px; } .link { cursor: hand; - color: #ffffaa; + color: #ffffaaa1; } .link:hover { @@ -419,13 +434,13 @@ table.awardTableCSS th { border-left: none; border-right: none; font-size: 12px; + vertical-align: baseline; } table.awardTableCSS tr { padding: 0px; margin: 0px; max-height: 16px; - bottom: 0; } table.awardTableCSS thead { @@ -487,7 +502,8 @@ table.rosterTable thead th:first-child { } .regexMatch { - text-decoration: underline; + background-color: #ffffff; + color: #000; } .dxCaller { @@ -569,3 +585,235 @@ table.rosterTable thead th:first-child { text-overflow: ellipsis; white-space: nowrap; } + +/* Style the tab */ +.infotab { + overflow: hidden; + background-color: black; +} + +/* Style the buttons that are used to open the tab content */ +.infotab button { + border: 1px solid lightblue; + padding: 3px; + font-weight: bold; + border-top-right-radius: 6px; + border-top-left-radius: 6px; + margin-left: 5px; + margin-right: 0px; + color: #eee; + background: black; + text-align: center; + cursor: pointer; + white-space: nowrap; + border-bottom-style: none; + transition: 0.1s; +} + +/* Create an active/current tablink class */ +.infotab button.active { + background-color: cyan; + color: black; +} +/* Style the tab content */ +.infoTabcontent { + margin: auto; + display: none; + background-color: black; + padding: 0; + padding-top: 4px; + text-align: center; + width: auto; + left:0; + right:0; + border-top: 1px solid lightblue; + vertical-align: top; + white-space: normal; + overflow:auto; + min-width: 480px; +} + +.exceptionTab { + display: grid; + grid-template-columns: repeat(auto-fill,minmax(150px, 1fr)); + justify-content:center; + align-items:center; +} + +.exceptionTab > div { + margin: 6px; + padding: 5px; + height: 35px; + width: 140px; + border-width: 1px; + border-color: #aaa; + border-style: inset; + vertical-align:baseline; + border-radius: 4px; + transition: border-color; +} + +p { + margin-top: 4px; + margin-bottom: 1px; + margin-left: 1px; + margin-right: 1px; +} + +.exceptionTab > div:hover { + border-color: #fff; +} + +.break { + flex-basis: 100%; +} + +:root { + accent-color: #4ab9f8; + color-scheme: dark; +} + +.columnEditView { + margin:5px; + padding:5px; + vertical-align:top; + display:inline-block; + overflow:auto; + overflow-x:hidden; + height: fit-content; +} + +.columnEditRow { + display:grid; + grid-template-columns: 1fr 1fr 1fr 1fr; + margin-top:2px; + margin-bottom: 5px; +} + +.columnEditRowHeader { + border: 1px solid #cecccc; + grid-row: 1 / span 4; + font-weight: bold; + margin-bottom: 5px; +} + +.columnEditRow:hover { + box-shadow: inset 0px 11px 6px -8px #888, inset 0px -11px 6px -8px #888; +} + +.columnAvailableRow { + display:grid; + grid-template-columns: 1fr 3fr; + margin-top:2px; + margin-bottom: 5px; +} + +.columnAvailableRow:hover { + box-shadow: inset 0px 11px 6px -8px #888, inset 0px -11px 6px -8px #888; +} + +.huzzah { + background: linear-gradient(135deg, #360000, #00580f, rgb(11, 0, 80)); + background-size: 500% 500%; + animation: AnimationHuzzah 5s alternate infinite; + text-shadow: black 0 0 6px; +} + +@keyframes AnimationHuzzah { + 0% { + background-position: 0% 50%; + } + 50% { + background-position: 100% 50%; + } + 100% { + background-position: 0% 50%; + } +} + +.rowBuilder { + border-width: 1px; + border-color: #aaa; + border-style: outset; + vertical-align: top; + border-radius: 4px; + display: flex; + flex-direction: row; + transition: border-color; + text-align: center; + vertical-align:middle; + justify-content:center; + align-items:center; + width: fit-content; + left:0; + right:0; + margin: auto; + padding: 4px; +} + +.rowBuilder:hover { + border-color: #fff; +} + +.rowBuilder > * { + margin-right: 4px; + padding: 2px; +} + +.flexButton { + border-radius: 4px; + cursor: pointer; + border-width: 1px; + border-color: #999; + border-style: outset; + color: #eee; + transition: border-style; + vertical-align: middle; + padding: 2px; + padding-bottom: 1px; + text-align: center; + width: fit-content; +} + +.flexButton:hover { + border-color: #fff; +} +.ignoresTables { + margin:10px; + padding:0px; + vertical-align:top; + display:inline-block; + margin-right:2px; + overflow:auto; + overflow-x:hidden; +} + +#watcherTable { + margin: auto; + left:0; + right:0; + width:fit-content; + padding:0px; + vertical-align:top; + display:inline-block; + margin-top:2px; + overflow:auto; + overflow-x:hidden; +} + +#settingsDiv { + padding: 3px; + overflow: hidden; + margin: auto; + top: 3px; + left:0; + right:0; + width: fit-content; + display:none; + padding: 1px; + text-align: center; + vertical-align: middle; + position: absolute; + z-index: 600; + border: 1px solid lightblue; +} \ No newline at end of file diff --git a/package.nw/package.json b/package.nw/package.json index 075a3cd..247dcf9 100644 --- a/package.nw/package.json +++ b/package.nw/package.json @@ -1,7 +1,7 @@ { "name": "GridTracker", "product_string_do_not_use": "gridtracker", - "version": "1.23.1112", + "version": "1.23.1202", "betaVersion": "", "description": "GridTracker: An Amateur Radio Companion", "author": "GridTracker.org", @@ -12,7 +12,7 @@ "icon": "gridview.png", "toolbar": false, "show": false, - "width": 800, + "width": 860, "height": 652 }, "webkit": {

9L%-JZH=-9l0Hvfx7PNjv!0TRLCylvOVMLx( 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 PQFH<9h`VwxgTVYh*bO@m diff --git a/package.nw/gt_update.pdf b/package.nw/gt_update.pdf index 587956de16262beac2e2382bfae419d45921af33..266cfbb6913fa7b25a5a3e7d6dc3c4e648b4a461 100644 GIT binary patch delta 67931 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 diff --git a/package.nw/i18n/cn-t.json b/package.nw/i18n/cn-t.json index d97b971..d1ecf53 100644 --- a/package.nw/i18n/cn-t.json +++ b/package.nw/i18n/cn-t.json @@ -165,6 +165,7 @@ "settings.Logging.label": "日志記錄", "settings.Alerts.label": "警報", "settings.CallRoster.label": "呼叫清單", + "settings.Columns.label": "表格列", "settings.OAMS.label": "OAMS", "settings.OAMS.simplepush.enable.label": "Simplepush.io Message Forwarding", "settings.OAMS.simplepush.apikey.label": "Simplepush API Key", @@ -436,7 +437,7 @@ "settings.alerts.CustomAlerts.new.repeat.exit": "直到退出", "settings.alerts.CustomAlerts.new.repeat.once": "一次", "settings.alerts.CustomAlerts.new.repeat.never": "從不", - "settings.alerts.CustomAlerts.new.addButton": "增加", + "settings.alerts.CustomAlerts.new.addButton": "添加", "settings.OAMS.message.enable.label": "啟用消息傳遞", "settings.OAMS.message.enable.hover": "啟用消息傳遞", "settings.OAMS.spotting.enable.label": "啟用定位", @@ -506,7 +507,7 @@ "lookup.title": "呼號信息查詢", "lookup.callsign.label": "呼號:", "lookup.callsign.button": "尋找", - "lookup.noinfo": "沒有要顯示的呼號信息
請嘗試其他呼號尋找!", + "lookup.noinfo": "沒有要顯示的呼號信息 請嘗試其他呼號尋找!", "COMMENT_gt_popup.html": "", "popup.title": "數據突破", "COMMENT_gt_roster.html": "", @@ -561,7 +562,7 @@ "roster.secondary.wanted.marathon": "Marathon", "roster.secondary.wanted.county": "縣", "roster.secondary.wanted cont": "續", - "roster.secondary.exceptions.label": "例外情況", + "roster.exceptions.label": "例外情況", "roster.secondary.exceptions.cqOnly": "僅限CQ", "roster.secondary.exceptions.hasGrid": "有網格", "roster.secondary.exceptions.minDB": "最小dB", @@ -584,8 +585,10 @@ "roster.secondary.excpetions.regex.label": "正則表達式", "roster.secondary.exceptions.regex.hover": "調用符號正則表達式", "roster.secondary.instances.label": "實例", - "roster.ignoresTable.title": "呼號, 忽略CQ和DXCC", - "roster.ignoresTable.close": "關閉", + "roster.ignores.label": "忽視", + "roster.close": "關閉", + "roster.watcher.label": "觀察者", + "roster.add.watcher.label": "添加觀察者", "COMMENT_gt_stats.html": "", "stats.title": "日志數據統計", "stats.tabs.logbook": "日志", @@ -1012,6 +1015,7 @@ "roster.menu.IgnoreCall": "忽視呼號", "roster.menu.Realtime": "實時", "roster.menu.MoveLeft": "列向左移動", + "roster.menu.MoveRight": "列向右移動", "roster.menu.ClearCallIgnore": "清除忽視呼號", "roster.menu.ClearIgnore": "清除忽視", "roster.menu.ClearCQFromDXCC": "清除來自 DXCC 的 CQ", diff --git a/package.nw/i18n/cn.json b/package.nw/i18n/cn.json index c127bd8..aa93a68 100644 --- a/package.nw/i18n/cn.json +++ b/package.nw/i18n/cn.json @@ -165,6 +165,7 @@ "settings.Logging.label": "日志记录", "settings.Alerts.label": "警报", "settings.CallRoster.label": "呼叫列表", + "settings.Columns.label": "表格列", "settings.OAMS.label": "OAMS", "settings.OAMS.simplepush.enable.label": "Simplepush.io Message Forwarding", "settings.OAMS.simplepush.apikey.label": "Simplepush API Key", @@ -436,7 +437,7 @@ "settings.alerts.CustomAlerts.new.repeat.exit": "直到退出", "settings.alerts.CustomAlerts.new.repeat.once": "一次", "settings.alerts.CustomAlerts.new.repeat.never": "从不", - "settings.alerts.CustomAlerts.new.addButton": "增加", + "settings.alerts.CustomAlerts.new.addButton": "添加", "settings.OAMS.message.enable.label": "启用消息传递", "settings.OAMS.message.enable.hover": "启用消息传递", "settings.OAMS.spotting.enable.label": "启用定位", @@ -506,7 +507,7 @@ "lookup.title": "呼号信息查询", "lookup.callsign.label": "呼号:", "lookup.callsign.button": "查找", - "lookup.noinfo": "没有要显示的呼号信息
请尝试其他呼号查找!", + "lookup.noinfo": "没有要显示的呼号信息 请尝试其他呼号查找!", "COMMENT_gt_popup.html": "", "popup.title": "数据突破", "COMMENT_gt_roster.html": "", @@ -561,7 +562,7 @@ "roster.secondary.wanted.marathon": "马拉松", "roster.secondary.wanted.county": "县", "roster.secondary.wanted cont": "续", - "roster.secondary.exceptions.label": "例外情况", + "roster.exceptions.label": "例外情况", "roster.secondary.exceptions.cqOnly": "仅限CQ", "roster.secondary.exceptions.hasGrid": "有网格", "roster.secondary.exceptions.minDB": "最小dB", @@ -584,8 +585,10 @@ "roster.secondary.excpetions.regex.label": "正则表达式", "roster.secondary.exceptions.regex.hover": "调用符号正则表达式", "roster.secondary.instances.label": "实例", - "roster.ignoresTable.title": "呼号, 忽略CQ和DXCC", - "roster.ignoresTable.close": "关闭", + "roster.ignores.label": "忽視", + "roster.close": "关闭", + "roster.watcher.label": "观察者", + "roster.add.watcher.label": "添加观察者", "COMMENT_gt_stats.html": "", "stats.title": "日志数据统计", "stats.tabs.logbook": "日志", @@ -1012,6 +1015,7 @@ "roster.menu.IgnoreCall": "忽略呼叫", "roster.menu.Realtime": "实时", "roster.menu.MoveLeft": "向左移动列", + "roster.menu.MoveRight": "向右移动列", "roster.menu.ClearCallIgnore": "清除已忽略的呼叫", "roster.menu.ClearIgnore": "清除忽略", "roster.menu.ClearCQFromDXCC": "从DXCC中清除CQ", diff --git a/package.nw/i18n/de.json b/package.nw/i18n/de.json index b011bdf..a8d60ca 100644 --- a/package.nw/i18n/de.json +++ b/package.nw/i18n/de.json @@ -46,7 +46,7 @@ "bandActivity.hover": "PSK-Reporter Band-Aktivität", "quickStats.hover": "Statistik", "quickStats.CallRX.hover": "Gehörte Rufzeichen", - "quickStats.CallRX.label": "Rx Rufzeichen", + "quickStats.CallRX.label": "Rx Calls", "quickStats.QSO.hover": "Gearbeitete Stationen", "quickStats.QSO.label": "QSO", "quickStats.DXCCRx.hover": "Gehörte DXCCs", @@ -54,9 +54,9 @@ "quickStats.QSL.hover": "QSL Liste", "quickStats.QSL.label": "QSL", "quickLoad.clearLive.hover": "GridTracker's Live-Daten zurücksetzen", - "quickLoad.clearLive.label": "Live zurücksetzen", + "quickLoad.clearLive.label": "Live löschen", "quickLoad.clearLog.hover": "Log-Daten zurücksetzen (löscht keine Dateien)", - "quickLoad.clearLog.label": "Log zurücksetzen", + "quickLoad.clearLog.label": "Log löschen", "quickLoad.loadLog.label": "Log laden", "mapFilter.title.hover": "Kartenansicht-Einstellungen", "mapFilter.title.label": "Kartenansicht-Filter", @@ -165,6 +165,7 @@ "settings.Logging.label": "Logging", "settings.Alerts.label": "Alarme", "settings.CallRoster.label": "Rufzeichenliste", + "settings.Columns.label": "Spalten", "settings.OAMS.label": "OAMS", "settings.OAMS.simplepush.enable.label": "Simplepush Nachrichtenweiterleitung", "settings.OAMS.simplepush.apikey.label": "Simplepush API Key", @@ -560,7 +561,7 @@ "roster.secondary.wanted.marathon": "Marathon", "roster.secondary.wanted.county": "Kreis", "roster.secondary.wanted.cont": "Kont", - "roster.secondary.exceptions.label": "Filter", + "roster.exceptions.label": "Filter", "roster.secondary.exceptions.cqOnly": "Nur CQ", "roster.secondary.exceptions.hasGrid": "Nur mit Locator", "roster.secondary.exceptions.minDB": "Min dB", @@ -573,7 +574,7 @@ "roster.secondary.exceptions.onlyMyDXCC": "Nur mein DXCC", "roster.secondary.exceptions.useseQSL":" Benutzt eQSL", "roster.secondary.exceptions.usesOQRS": "Benutzt OQRS", - "roster.secondary.exceptions.allOnlyNew": "Nur neue Rufzeichen", + "roster.secondary.exceptions.allOnlyNew": "Nur neue Calls", "roster.secondary.exceptions.wantRRCQ": "RR73 als CQ", "roster.secondary.exceptions.noUnknownDXCC": "Keine unbekannten DXCC", "roster.secondary.exceptions.noMsg.label": "Keine", @@ -583,8 +584,10 @@ "roster.secondary.exceptions.regex.label": "Regex", "roster.secondary.exceptions.regex.hover": "Rufzeichen RegEx", "roster.secondary.instances.label": "Instanzen", - "roster.ignoresTable.title": "Rufzeichen, CQ and DXCC Ausnahmen", - "roster.ignoresTable.close": "Schliessen", + "roster.ignores.label": "Ignoriert", + "roster.close": "Schliessen", + "roster.watcher.label": "Beobachten", + "roster.add.watcher.label": "Beobachter hinzufügen", "COMMENT_gt_stats.html": "", "stats.title": "Statistiken", "stats.tabs.logbook": "Logbücher", @@ -1027,15 +1030,18 @@ "roster.ignore.DXCCs": "DXCCs", "roster.ignore.CQZones": "CQ-Zonen", "roster.ignore.ITUZones": "ITU-Zonen", + "roster.menu.Settings": "Einstellungen", "roster.menu.HideControls": "Einstellungen ausblenden", "roster.menu.ShowControls": "Einstellungen anzeigen", "roster.menu.CompactMode": "Kompaktmodus", "roster.menu.RosterMode": "Rostermodus", "roster.menu.Lookup": "Nachschlagen", "roster.menu.GenMesg": "WSJT-X befüllen", + "roster.menu.AimRotator": "Rotor ausrichten", "roster.menu.IgnoreCall": "Rufzeichen ignorieren", "roster.menu.Realtime": "Echtzeit", "roster.menu.MoveLeft": "Spalte nach links verschieben", + "roster.menu.MoveRight": "Spalte nach rechts verschieben", "roster.menu.ClearCallIgnore": "Ignorierte Rufzeichen aufheben", "roster.menu.ClearIgnore": "Ignorierte aufheben", "roster.menu.ClearCQFromDXCC": "CQ von DXCC aufheben", diff --git a/package.nw/i18n/en.json b/package.nw/i18n/en.json index 655b0da..ba3f587 100644 --- a/package.nw/i18n/en.json +++ b/package.nw/i18n/en.json @@ -164,6 +164,7 @@ "settings.Logging.label": "Logging", "settings.Alerts.label": "Alerts", "settings.CallRoster.label": "Call Roster", + "settings.Columns.label": "Columns", "settings.OAMS.label": "OAMS", "settings.OAMS.simplepush.enable.label": "Simplepush.io Message Forwarding", "settings.OAMS.simplepush.apikey.label": "Simplepush API Key", @@ -373,7 +374,7 @@ "settings.logging.pstrotator.details.Port": "UDP Port", "settings.callroster.AlwaysOnTop.label": "Window Always On Top", "settings.callroster.AlwaysOnTop.hover": "Keep Call Roster Above Other Windows", - "settings.callroster.MaxAge.label": "Call Roster Max Age", + "settings.callroster.MaxAge.label": "Roster Max Age", "settings.callroster.MultiRig.label": "On QSO Reply", "settings.callroster.MultiRig.HaltTx.label": "Halt Tx On All Other Instances", "settings.callroster.MultiRig.SwitchView.label": "Switch View to Transmitting Instance", @@ -505,7 +506,7 @@ "lookup.title": "Callsign Lookup", "lookup.callsign.label": "Callsign", "lookup.callsign.button": "Lookup", - "lookup.noinfo": "No Callsign information to display
try a lookup!", + "lookup.noinfo": "No Callsign information to display, try a lookup!", "COMMENT_gt_popup.html": "", "popup.title": "Data Breakout", "COMMENT_gt_roster.html": "", @@ -561,7 +562,7 @@ "roster.secondary.wanted.marathon": "Marathon", "roster.secondary.wanted.county": "County", "roster.secondary.wanted.cont": "Continent", - "roster.secondary.exceptions.label": "Exceptions", + "roster.exceptions.label": "Exceptions", "roster.secondary.exceptions.cqOnly": "CQ Only", "roster.secondary.exceptions.hasGrid": "Has Grid", "roster.secondary.exceptions.minDB": "Min dB", @@ -584,8 +585,10 @@ "roster.secondary.exceptions.regex.label": "Regex", "roster.secondary.exceptions.regex.hover": "Callsign Regular Expression", "roster.secondary.instances.label": "Instances", - "roster.ignoresTable.title": "Callsign, CQ and DXCC Ignores", - "roster.ignoresTable.close": "Close", + "roster.ignores.label": "Ignores", + "roster.close": "Close", + "roster.watcher.label": "Watcher", + "roster.add.watcher.label": "Add Watcher", "COMMENT_gt_stats.html": "", "stats.title": "Statistics", "stats.tabs.logbook": "Logbook", @@ -1013,6 +1016,7 @@ "roster.menu.IgnoreCall": "Ignore Call", "roster.menu.Realtime": "Realtime", "roster.menu.MoveLeft": "Move Column Left", + "roster.menu.MoveRight": "Move Column Right", "roster.menu.ClearCallIgnore": "Clear Call Ignore", "roster.menu.ClearIgnore": "Clear Ignore", "roster.menu.ClearCQFromDXCC": "Clear CQ from DXCC", diff --git a/package.nw/i18n/es.json b/package.nw/i18n/es.json index 624ff8b..a79b481 100644 --- a/package.nw/i18n/es.json +++ b/package.nw/i18n/es.json @@ -164,6 +164,7 @@ "settings.Logging.label": "Registros", "settings.Alerts.label": "Alertas", "settings.CallRoster.label": "Lista de llamadas", + "settings.Columns.label": "Columnas", "settings.OAMS.label": "OAMS", "settings.OAMS.simplepush.enable.label": "Reenvío mensajes Simplepush.io", "settings.OAMS.simplepush.apikey.label": "Llave de API Simplepush", @@ -504,7 +505,7 @@ "lookup.title": "Búsqueda de Indicativo", "lookup.callsign.label": "Indicativo", "lookup.callsign.button": "Buscar", - "lookup.noinfo": "No hay información de indicativo para mostrar
intente una búsqueda", + "lookup.noinfo": "No hay información de indicativo para mostrar, intente una búsqueda", "COMMENT_gt_popup.html": "", "popup.title": "Desglose de Datos", "COMMENT_gt_roster.html": "", @@ -560,7 +561,7 @@ "roster.secondary.wanted.marathon": "Maratón", "roster.secondary.wanted.county": "Condado", "roster.secondary.wanted.cont": "Continente", - "roster.secondary.exceptions.label": "Excepciones", + "roster.exceptions.label": "Excepciones", "roster.secondary.exceptions.cqOnly": "Solo CQ", "roster.secondary.exceptions.hasGrid": "Tiene Grid", "roster.secondary.exceptions.minDB": "dB Mínimo", @@ -583,8 +584,10 @@ "roster.secondary.exceptions.regex.label": "Regex", "roster.secondary.exceptions.regex.hover": "Expresión Regular de Indicativo", "roster.secondary.instances.label": "Instancias", - "roster.ignoresTable.title": "Ignorar Indicativos de Llamada, CQ y DXCC", - "roster.ignoresTable.close": "Cerrar", + "roster.ignores.label": "Ignorar", + "roster.close": "Cerrar", + "roster.watcher.label": "Observador", + "roster.add.watcher.label": "Agregar observador", "COMMENT_gt_stats.html": "", "stats.title": "Estadísticas", "stats.tabs.logbook": "Libro de Guardia", @@ -1007,7 +1010,8 @@ "roster.menu.AimRotator": "Apuntar Rotador", "roster.menu.IgnoreCall": "Ignorar Llamada", "roster.menu.Realtime": "En Vivo", - "roster.menu.MoveLeft": "Mover Columna a la Izquierda", + "roster.menu.MoveLeft": "Mover Columna a la izquierda", + "roster.menu.MoveRight": "Mover Columna a la derecha", "roster.menu.ClearCallIgnore": "Borrar Ignorar Llamada", "roster.menu.ClearIgnore": "Borrar Ignorar", "roster.menu.ClearCQFromDXCC": "Borrar CQ de DXCC", diff --git a/package.nw/i18n/fr.json b/package.nw/i18n/fr.json index 27635f4..145b45a 100644 --- a/package.nw/i18n/fr.json +++ b/package.nw/i18n/fr.json @@ -164,6 +164,7 @@ "settings.Logging.label": "Enregistrement", "settings.Alerts.label": "Alertes", "settings.CallRoster.label": "Liste des appels", + "settings.Columns.label": "Colonnes", "settings.OAMS.label": "OAMS", "settings.OAMS.simplepush.enable.label": "Transfert de messages Simplepush.io", "settings.OAMS.simplepush.apikey.label": "Clé API Simplepush", @@ -505,7 +506,7 @@ "lookup.title": "Recherche d'un indicatif", "lookup.callsign.label": "Indicatif", "lookup.callsign.button": "Consulter", - "lookup.noinfo": "Pas d'information sur l'indicatif à afficher
essayez une recherche !", + "lookup.noinfo": "Pas d'information sur l'indicatif à afficher, essayez une recherche !", "COMMENT_gt_popup.html": "", "popup.title": "Répartition des données", "COMMENT_gt_roster.html": "", @@ -561,7 +562,7 @@ "roster.secondary.wanted.marathon": "Marathon", "roster.secondary.wanted.county": "Pays", "roster.secondary.wanted.cont": "Continent", - "roster.secondary.exceptions.label": "Exceptions", + "roster.exceptions.label": "Exceptions", "roster.secondary.exceptions.cqOnly": "CQ uniquement", "roster.secondary.exceptions.hasGrid": "Dispose d'une grille", "roster.secondary.exceptions.minDB": "Min dB", @@ -584,8 +585,10 @@ "roster.secondary.exceptions.regex.label": "Filtre", "roster.secondary.exceptions.regex.hover": "Recherche indicatifs (même partielle)", "roster.secondary.instances.label": "Instances", - "roster.ignoresTable.title": "Ignorer les indicatifs, les CQ et les DXCC", - "roster.ignoresTable.close": "Fermer", + "roster.ignores.label": "Ignorer", + "roster.close": "Fermer", + "roster.watcher.label": "Observateur", + "roster.add.watcher.label": "Ajouter observateur", "COMMENT_gt_stats.html": "", "stats.title": "Statistiques", "stats.tabs.logbook": "Journal de bord", @@ -1013,6 +1016,7 @@ "roster.menu.IgnoreCall": "Ignorer l'appel", "roster.menu.Realtime": "Temps réel", "roster.menu.MoveLeft": "Déplacer la colonne vers la gauche", + "roster.menu.MoveRight": "Déplacer la colonne vers la droite", "roster.menu.ClearCallIgnore": "Effacer l'appel Ignorer", "roster.menu.ClearIgnore": "Effacer Ignorer", "roster.menu.ClearCQFromDXCC": "Effacer le CQ du DXCC", diff --git a/package.nw/i18n/it.json b/package.nw/i18n/it.json index 7ea5e99..2417cb1 100644 --- a/package.nw/i18n/it.json +++ b/package.nw/i18n/it.json @@ -164,6 +164,7 @@ "settings.Logging.label": "Registrazione", "settings.Alerts.label": "Allarmi", "settings.CallRoster.label": "Elenco delle chiamate", + "settings.Columns.label": "Colonne", "settings.OAMS.label": "OAMS", "settings.OAMS.simplepush.enable.label": "Trasferimento di messaggi con Simplepush.io", "settings.OAMS.simplepush.apikey.label": "Chiave API Simplepush", @@ -505,7 +506,7 @@ "lookup.title": "Cerca un nominativo", "lookup.callsign.label": "Nominativo", "lookup.callsign.button": "Consultare", - "lookup.noinfo": "Non ci sono informazioni sul nominativo da visualizzare
prova a fare una ricerca!", + "lookup.noinfo": "Non ci sono informazioni sul nominativo da visualizzare, prova a fare una ricerca!", "COMMENT_gt_popup.html": "", "popup.title": "Distribuzione dei dati", "COMMENT_gt_roster.html": "", @@ -561,7 +562,7 @@ "roster.secondary.wanted.marathon": "Marathon", "roster.secondary.wanted.county": "Paese", "roster.secondary.wanted.cont": "Continente", - "roster.secondary.exceptions.label": "Eccezioni", + "roster.exceptions.label": "Eccezioni", "roster.secondary.exceptions.cqOnly": "Solo CQ", "roster.secondary.exceptions.hasGrid": "Ha una griglia", "roster.secondary.exceptions.minDB": "Min dB", @@ -584,8 +585,10 @@ "roster.secondary.exceptions.regex.label": "Filtro", "roster.secondary.exceptions.regex.hover": "Ricerca nominativo (anche parziale)", "roster.secondary.instances.label": "Enti", - "roster.ignoresTable.title": "Ignorare i nominativi, i CQ e i DXCC", - "roster.ignoresTable.close": "Chiudere", + "roster.ignores.label": "Ignorare", + "roster.close": "Chiudere", + "roster.watcher.label": "Osservatore", + "roster.add.watcher.label": "Aggiungi Osservatore", "COMMENT_gt_stats.html": "", "stats.title": "Statistiche", "stats.tabs.logbook": "Diario di bordo", @@ -1013,6 +1016,7 @@ "roster.menu.IgnoreCall": "Ignorare la chiamata", "roster.menu.Realtime": "Tempo reale", "roster.menu.MoveLeft": "Spostare la colonna a sinistra", + "roster.menu.MoveRight": "Sposta la colonna a destra", "roster.menu.ClearCallIgnore": "Eliminare la chiamata Ignorare", "roster.menu.ClearIgnore": "Elimina Ignora", "roster.menu.ClearCQFromDXCC": "Cancellare CQ da DXCC", diff --git a/package.nw/img/pota_icon_active.png b/package.nw/img/pota_icon_active.png deleted file mode 100644 index a952f4df901517cb729e99f5a13b94126a294a2d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 552 zcmV+@0@wYCP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0li5?K~y+Tjg&no zMo}1m&*#fuqKJfu!9so(WD*?~=q+UWgboTifHDiq| zwOvJ=JCpheDHy5YXTgj$QQS~Y>&%oaf=Wr4OABh0uOEim8SmW!0tECevQ1)mGQ?ow4RQYRM zJ>+JncvScBg0gopmIDi)>d$52pSd@DU1i-qv>aeEBLf5A3qF&TxtkO5|t#1#bl(0EtQk$INPkz0UUyYW}9_V zSq4tQ>9~^6@{#U_Mg%70d?YbI#1ZKPxQd9(*5e7;aS~Z}hAdEy%noJ-nK2-s!6_+h z)~K}x%*;pZx)^w;w^0PPQ>Y9+k|Ywt0#c8|0qg)a2MK1vL3+6Yix-CX8G{ucQBjl* zLs65-#5Vb{Nxc%~1_lPA93IN!u>gZ*$kI|$GfQjmr6n91LfjzJ6FQ0@wJ@zIO(%^M zA3*>P_lZ-4VnAJM=nEet0;Lg@%jTf3(s48K4mypzLD#8BiZrN5U4HkR9GfRL|;;0^XcUQ21%9 zNR@aju2oVhKEmVt3rHm7|K6vC)JD1zbF~CGnm1sQG=T9DKMn`w4q(Y|$LM5ZV#188 zlZ1o@*BXFszaIl&@;g8QsV4Oaps{g2;yA3o5||wmk#Yd}+5H%Rq67l5o>UNOfEnT= zLgA<|!3=KTj2SE*+aUwWh5=hbktLK;fW_m0?&JirI5Q1*pYCZm2v~?jSR`SfNPU)l%hBiw_+rP(u~ZZG4u@fToiVA5&O0B`=}Ea!hRf|? z0XYY1AQhBJs>ef=pu~J6M4=!+g|c8V-McWC&E>EIUbir*aC^4j6&u>;8A{)|m#zh& zZ#W-hC%ke=ft_OyTz)V`(Ec$37X5<=*MjMz2V=b_JbX9ZSIOWWtRdg{*g-kV2nUU;@@BI$N;+K!Hz zo*jErO5B*XjoG`7p%W*?JjZLi++D3#r~V#2Z}F}b>(;LKSYP^cNtE~62RTipvwppD zsQ8%nejJq_+j{c&Xqih7_tdhc;2?8nsb|20!MP8Wr=zNo+Gr1p=a<_~-S*lKx7;2% zYU@dS+mwyHFRmr>xp!D|O@D2~{Pp}ti91IfoH(*4+ll3&YAD=(JpSB|&)&BQ%%Y=R%*-d1 zpEiG7nhQb)AippYM zUHRB^E$Pk2=9F)ElzgN;xcg9Z@AdA7p(XJt7gM@&j2X4PXVXH)iz})OUBx~=IVFp} zS39$viui&0WY$@K zEo_~9zEqb4t*YuBXDo9n%*)snT=1UmgZlb8X)du0^tLg+!e!x$nH=rGQDdMusPouw z{<<+832tWCT#cK6TGs_p}K;u1Q*` zYVOc7SJ#Vw1T2pEK9y0=EVn%VC@lpk-qvZ8C?EK@NGlk*#n-nSfFhR4thuf4aq8n2 zR!`6EEwjvv?o^-4tLVJ+C$xmI`9x)+b>)cA&I-ZOq%vsYMfb{rI9Aiq-Lb2Kzm@!5 zTgEr{-mICBdoFy`Biy)ij=nXn45NZ@6 -1) const gui = require("nw.gui"); const win = gui.Window.get(); - +if (GT.firstRun) +{ + win.moveTo(2, 2); +} GT.developerMode = process.versions["nw-flavor"] == "sdk"; GT.popupWindowHandle = null; GT.callRosterWindowHandle = null; GT.conditionsWindowHandle = null; +GT.conditionsWindowInitialized = false; GT.chatWindowHandle = null; +GT.chatWindowInitialized = false; GT.statsWindowHandle = null; GT.lookupWindowHandle = null; GT.lookupWindowInitialized = false; @@ -455,6 +467,7 @@ GT.directCallToITUzone = {}; GT.prefixToCQzone = {}; GT.prefixToITUzone = {}; GT.dxccToAltName = {}; +GT.altNameToDXCC = {}; GT.dxccToADIFName = {}; GT.gridToDXCC = {}; @@ -552,17 +565,17 @@ GT.pskColors["2200m"] = "FF4500"; GT.pskColors["630m"] = "1E90FF"; GT.pskColors["160m"] = "7CFC00"; GT.pskColors["80m"] = "E550E5"; -GT.pskColors["60m"] = "0000FF"; -GT.pskColors["40m"] = "4949FF"; +GT.pskColors["60m"] = "99CCFF"; +GT.pskColors["40m"] = "00FFFF"; GT.pskColors["30m"] = "62FF62"; GT.pskColors["20m"] = "FFC40C"; GT.pskColors["17m"] = "F2F261"; GT.pskColors["15m"] = "CCA166"; -GT.pskColors["12m"] = "B22222"; +GT.pskColors["12m"] = "CB3D3D"; GT.pskColors["11m"] = "00FF00"; GT.pskColors["10m"] = "FF69B4"; GT.pskColors["8m"] = "8b00fb"; -GT.pskColors["6m"] = "FF0000"; +GT.pskColors["6m"] = "ff4d4d"; GT.pskColors["4m"] = "df0040"; GT.pskColors["2m"] = "FF1493"; GT.pskColors["1.25m"] = "beff00"; @@ -976,7 +989,7 @@ function getWpx(callsign) if (foundPrefix) prefix = callsign.substr(0, prefixEnd + 1); - return prefix; + return String(prefix); } function setState(details) @@ -1467,20 +1480,6 @@ function addDeDx( } } - // we don't need confirmations, worked is enough - /* if (finalPOTA) - { - GT.tracker.confirmed.pota[dayAsString + finalDXcall + finalPOTA] = true; - GT.tracker.confirmed.pota[dayAsString + finalDXcall + finalPOTA + mode] = true; - GT.tracker.confirmed.pota[dayAsString + finalDXcall + finalPOTA + band] = true; - GT.tracker.confirmed.pota[dayAsString + finalDXcall + finalPOTA + band + mode] = true; - if (isDigi == true) - { - GT.tracker.confirmed.pota[dayAsString + finalDXcall + finalPOTA + "dg"] = true; - GT.tracker.confirmed.pota[dayAsString + finalDXcall + finalPOTA + band + "dg"] = true; - } - } */ - GT.tracker.confirmed.call[finalDXcall + band + mode] = true; GT.tracker.confirmed.call[finalDXcall] = true; GT.tracker.confirmed.call[finalDXcall + mode] = true; @@ -2014,6 +2013,10 @@ function createTooltTipTable(toolElement) "" + $.i18n("gt.newCallList.LastMsg") + "" + "" + $.i18n("gt.newCallList.DXCC") + "" + "" + $.i18n("gt.newCallList.Time") + ""; + + if (GT.callsignLookups.lotwUseEnable == true) worker += "" + $.i18n("gt.qsoPage.LoTW") + ""; + if (GT.callsignLookups.eqslUseEnable == true) worker += "" + $.i18n("gt.qsoPage.eQSL") + ""; + if (GT.callsignLookups.oqrsUseEnable == true) worker += "" + $.i18n("gt.qsoPage.OQRS") + ""; worker += ""; } for (var KeyIsHash in toolElement.hashes) @@ -2127,30 +2130,28 @@ function createTooltTipTable(toolElement) ageString + ""; - if (toolElement.qso == false) + if (GT.callsignLookups.lotwUseEnable == true) { - if (GT.callsignLookups.lotwUseEnable == true) - { - worker += - "" + - (callsign.DEcall in GT.lotwCallsigns ? "✔" : "") + - ""; - } - if (GT.callsignLookups.eqslUseEnable == true) - { - worker += - "" + - (callsign.DEcall in GT.eqslCallsigns ? "✔" : "") + - ""; - } - if (GT.callsignLookups.oqrsUseEnable == true) - { - worker += - "" + - (callsign.DEcall in GT.oqrsCallsigns ? "✔" : "") + - ""; - } + worker += + "" + + (callsign.DEcall in GT.lotwCallsigns ? "🙋🏻‍♂️" : "") + + ""; } + if (GT.callsignLookups.eqslUseEnable == true) + { + worker += + "" + + (callsign.DEcall in GT.eqslCallsigns ? "🙋🏻‍♂️" : "") + + ""; + } + if (GT.callsignLookups.oqrsUseEnable == true) + { + worker += + "" + + (callsign.DEcall in GT.oqrsCallsigns ? "🙋🏻‍♂️" : "") + + ""; + } + worker += ""; } worker += ""; @@ -2167,12 +2168,11 @@ function createTooltTipTableLogbook(toolElement) { colspan += 2; } - else - { - if (GT.callsignLookups.lotwUseEnable == true) colspan++; - if (GT.callsignLookups.eqslUseEnable == true) colspan++; - if (GT.callsignLookups.oqrsUseEnable == true) colspan++; - } + + if (GT.callsignLookups.lotwUseEnable == true) colspan++; + if (GT.callsignLookups.eqslUseEnable == true) colspan++; + if (GT.callsignLookups.oqrsUseEnable == true) colspan++; + var worker = ""; - if (toolElement.qso == false) - { - if (GT.callsignLookups.lotwUseEnable == true) worker += ""; - if (GT.callsignLookups.eqslUseEnable == true) worker += ""; - if (GT.callsignLookups.oqrsUseEnable == true) worker += ""; - } + if (GT.callsignLookups.lotwUseEnable == true) worker += ""; + if (GT.callsignLookups.eqslUseEnable == true) worker += ""; + if (GT.callsignLookups.oqrsUseEnable == true) worker += ""; + worker += ""; var newCallList = Array(); @@ -2261,39 +2259,37 @@ function createTooltTipTableLogbook(toolElement) ageString + ""; - if (toolElement.qso == false) + if (GT.callsignLookups.lotwUseEnable == true) { - if (GT.callsignLookups.lotwUseEnable == true) + worker += + ""; + } + if (GT.callsignLookups.eqslUseEnable == true) + { + worker += + ""; + } + if (GT.callsignLookups.oqrsUseEnable == true) + { + if (callsign.DEcall in GT.oqrsCallsigns) { worker += - ""; + ""; } - if (GT.callsignLookups.eqslUseEnable == true) + else { worker += - ""; - } - if (GT.callsignLookups.oqrsUseEnable == true) - { - if (callsign.DEcall in GT.oqrsCallsigns) - { - worker += - ""; - } - else - { - worker += - ""; - } + ""; } } + worker += ""; } worker += "
" + $.i18n("gt.newCallList.DXCC") + "" + "" + $.i18n("gt.newCallList.Time") + "" + $.i18n("gt.newCallList.LoTW") + "" + $.i18n("gt.newCallList.eQSL") + "" + $.i18n("gt.newCallList.OQRS") + "" + $.i18n("gt.newCallList.LoTW") + "" + $.i18n("gt.newCallList.eQSL") + "" + $.i18n("gt.newCallList.OQRS") + "
" + + (callsign.DEcall in GT.lotwCallsigns ? "🙋🏻‍♂️" : "") + + "" + + (callsign.DEcall in GT.eqslCallsigns ? "🙋🏻‍♂️" : "") + + "" + - (callsign.DEcall in GT.lotwCallsigns ? "✔" : "") + - "" + + "🙋🏻‍♂️ 📬" + - (callsign.DEcall in GT.eqslCallsigns ? "✔" : "") + - "" + - "✔📬
"; @@ -2380,7 +2376,12 @@ function openConditionsWindow() GT.conditionsWindowHandle = new_win; new_win.on("loaded", function () { - GT.conditionsWindowHandle.setMinimumSize(490, 290); + GT.conditionsWindowHandle.setMinimumSize(490, 280); + if (GT.firstRun) + { + GT.conditionsWindowHandle.resizeTo(490, 280); + GT.conditionsWindowHandle.moveTo(100, 100); + } }); new_win.on("close", function () { @@ -2482,6 +2483,11 @@ function openCallRosterWindow(show = true) { GT.callRosterWindowHandle.setMinimumSize(390, 250); GT.callRosterWindowHandle.setResizable(true); + if (GT.firstRun) + { + GT.callRosterWindowHandle.resizeTo(1000, 500); + GT.callRosterWindowHandle.moveTo(15, 15); + } }); new_win.on("close", function () { @@ -2583,6 +2589,11 @@ function openStatsWindow(show = true) { GT.statsWindowHandle.setMinimumSize(620, 200); GT.statsWindowHandle.setResizable(true); + if (GT.firstRun) + { + GT.statsWindowHandle.resizeTo(640, 480); + GT.statsWindowHandle.moveTo(50, 50); + } }); new_win.on("close", function () { @@ -2638,6 +2649,11 @@ function showMessaging(show = true, cid) { GT.chatWindowHandle.setMinimumSize(450, 140); GT.chatWindowHandle.setResizable(true); + if (GT.firstRun) + { + GT.chatWindowHandle.resizeTo(640, 300); + GT.chatWindowHandle.moveTo(50, 50); + } }); GT.chatWindowHandle.on("close", function () { @@ -2788,48 +2804,6 @@ GT.tempGrids = Array(); function onMyKeyDown(event) { - if (GT.MyGridIsUp == true && GT.MyCurrentGrid.length == 4) - { - var processedAlert = false; - var mediaClip = ""; - var failedToAdd = GT.dirSeperator + "Balloon-deflating-1.mp3"; - if (event.code == "KeyM") - { - mediaClip = GT.dirSeperator + "Clicky-1.mp3"; - var valid = addAlert(GT.MyCurrentGrid, 2, 3, 2, "", ""); - if (!valid) - { - mediaClip = failedToAdd; - } - processedAlert = true; - } - else if (event.code == "KeyT") - { - mediaClip = GT.dirSeperator + "Ping-coin.mp3"; - var valid = addAlert(GT.MyCurrentGrid, 2, 1, 2, "", ""); - if (!valid) - { - mediaClip = failedToAdd; - } - processedAlert = true; - } - else if (event.code == "KeyV") - { - mediaClip = GT.dirSeperator + "Slide-ping.mp3"; - var valid = addAlert(GT.MyCurrentGrid, 2, 2, 2, "", ""); - if (!valid) - { - mediaClip = failedToAdd; - } - processedAlert = true; - } - if (processedAlert == true) - { - playAlertMediaFile(mediaClip); - } - return; - } - if (event.keyCode == 27) { rootSettingsDiv.style.display = "none"; @@ -2940,9 +2914,7 @@ function registerHotKeys() registerHotKey("KeyE", toggleMoonTrack); registerHotKey("KeyF", toggleSpotPaths); registerHotKey("KeyG", toggleGtMap); - // registerHotKey("KeyH", cycleSpotView); registerHotKey("KeyI", showRootInfoBox); - // registerHotKey("KeyJ", setTrophyOverlay, 8); registerHotKey("KeyK", makeScreenshots); registerHotKey("KeyL", adifLoadDialog); registerHotKey("KeyM", toggleAlertMute); @@ -2956,7 +2928,6 @@ function registerHotKeys() registerHotKey("KeyU", toggleMergeOverlay); registerHotKey("KeyW", toggleGridMode); registerHotKey("KeyX", toggleMouseTrack); - // registerHotKey("KeyY", toggleGlobalStrikes); registerHotKey("KeyZ", setCenterQTH); registerHotKey("Minus", toggleCRScript); @@ -6153,7 +6124,7 @@ function handleWsjtxStatus(newMessage) } } if (GT.pskBandActivityTimerHandle == null) pskGetBandActivity(); - if (bandChange || modeChange) + if (bandChange || modeChange || GT.startingUp) { removePaths(); goProcessRoster(); @@ -6168,6 +6139,7 @@ function handleWsjtxStatus(newMessage) updateChatWindow(); oamsBandActivityCheck(); GT.gtLiveStatusUpdate = true; + GT.startingUp = false; } GT.appSettings.myRawFreq = newMessage.Frequency; @@ -6547,10 +6519,17 @@ function finalWsjtxDecode(newMessage, isFox = false, foxMessage) for (const i in decodeWords) { decodeWords[i] = decodeWords[i].replace("<", "").replace(">", ""); - if (decodeWords[i].indexOf("...") != 1) + if (decodeWords[i].indexOf("...") != -1) { - // simply ignore <...> , we don't know who they are and we aint talking to them. - return; + if (i != 0) + { + // simply ignore <...> , we don't know who they are and we aint talking to them. + return; + } + else + { + decodeWords[0] = "UNKNOWN"; + } } } } @@ -7455,21 +7434,21 @@ function showCallsignBox(redraw) { worker += "" + - (thisCall in GT.lotwCallsigns ? "✔" : "") + + (thisCall in GT.lotwCallsigns ? "🙋🏻‍♂️" : "") + ""; } if (GT.callsignLookups.eqslUseEnable == true) { worker += "" + - (thisCall in GT.eqslCallsigns ? "✔" : "") + + (thisCall in GT.eqslCallsigns ? "🙋🏻‍♂️" : "") + ""; } if (GT.callsignLookups.oqrsUseEnable == true) { worker += "" + - (thisCall in GT.oqrsCallsigns ? "✔" : "") + + (thisCall in GT.oqrsCallsigns ? "🙋🏻‍♂️" : "") + ""; } worker += ""; @@ -7969,7 +7948,16 @@ function showWorkedBox(sortIndex, nextPage, redraw) worker += "