diff --git a/debian/changelog b/debian/changelog index d328350..3881768 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +gridtracker (1.23.1207) unstable; urgency=high + - BIGCTY - Update from December 5th + - System - LoTW, eQSL and OQRS membership columns icon updated + - System - Fixed major bug in how confirmation (QSL) records were handled + - Call Roster - Returned non-slider based exceptions to the exceptions control area + - Language - Updates to Chinese simplified and traditional translations + -- Tag Loomis Thu, 07 Dec 2023 00:00:00 -0000 gridtracker (1.23.1202) unstable; urgency=low - BIGCTY - Update from November 29th - System - Returned LoTW, eQSL and OQRS membership columns to log entries diff --git a/gridtracker.spec b/gridtracker.spec index a2fb969..3975e37 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.1202 +Version: 1.23.1207 Release: 1%{?dist} BuildArch: noarch Source0: {{{ git_dir_pack }}} @@ -40,6 +40,12 @@ DESTDIR=${RPM_BUILD_ROOT} make clean %license %{_docdir}/%{name}/ %changelog +* Thu Dec 07 2023 Tag Loomis - 1.23.1207-1 + - BIGCTY - Update from December 5th + - System - LoTW, eQSL and OQRS membership columns icon updated + - System - Fixed major bug in how confirmation (QSL) records were handled + - Call Roster - Returned non-slider based exceptions to the exceptions control area + - Language - Updates to Chinese simplified and traditional translations * 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 diff --git a/package.nw/data/mh-root-prefixed.json b/package.nw/data/mh-root-prefixed.json index e2668e7..c096aa1 100644 --- a/package.nw/data/mh-root-prefixed.json +++ b/package.nw/data/mh-root-prefixed.json @@ -1517,7 +1517,7 @@ "VE9TEN/5", "VE9XX/6", "VE9ZP/4", - "VER20231129", + "VER20231205", "VF0X", "VF0X/M", "VO/DL2GF", @@ -3034,7 +3034,6 @@ "KI4SET", "KI4SOM", "KI4YRQ", - "KI5HPI", "KI5KBN", "KI6BGR", "KI6DES", @@ -3101,6 +3100,7 @@ "KL7D/M", "KL7NC/IMD", "KM4AGL", + "KM4GHR", "KM4KWS", "KM4KX", "KM4NIC", @@ -6888,6 +6888,7 @@ "DP1POL", "DP1POL/P", "EM1/UW5EHR", + "EM1EHR", "EM1HO", "EM1KCC", "EM1KGG", @@ -7217,6 +7218,7 @@ "RI30ANT": "70", "SM/OH2FFP": "67", "EM1/UW5EHR": "73", + "EM1EHR": "73", "EM1HO": "73", "EM1KCC": "73", "EM1KGG": "73", @@ -23478,7 +23480,9 @@ "confirmed_bands": {}, "worked_modes": {}, "confirmed_modes": {}, - "direct": [], + "direct": [ + "VERSION" + ], "prefixITU": {}, "prefixCQ": {}, "directITU": {}, @@ -30361,6 +30365,7 @@ "AI5EA", "AJ0M", "AJ8HT", + "AK0S", "AK2J", "AK4RA", "AL3U", @@ -30407,7 +30412,6 @@ "K6GUY", "K6HI", "K6HNL", - "K6JAE", "K6KCW", "K6KKW", "K6RHJ", @@ -30543,7 +30547,6 @@ "KC9KEX", "KC9NJG", "KC9SBG", - "KC9WIB", "KD0JNO", "KD0OLJ", "KD0OXU", @@ -30583,6 +30586,7 @@ "KD7TZ", "KD7UV", "KD7WJM", + "KD7ZAP", "KD8GVO", "KD8LYB", "KD9IAH", @@ -30802,7 +30806,6 @@ "KK4KXS", "KK4QAX", "KK4RNF", - "KK6BRW", "KK6CSE", "KK6DIT", "KK6DWS", @@ -31526,8 +31529,7 @@ "4U150ITU", "4U1ITU", "4U1WRC", - "4U2WRC", - "VERSION" + "4U2WRC" ], "prefixITU": {}, "prefixCQ": {}, @@ -36917,6 +36919,7 @@ "KP4VP/LH", "KR4SQ", "KU4JI", + "KX4GB", "N0XAR", "N1CN", "N1HRV", @@ -46034,6 +46037,7 @@ "K6H", "K6HWK", "K6IJ", + "K6JAE", "K6K", "K6KUS", "K6LN", @@ -46296,6 +46300,7 @@ "KC9HYY/LUS100", "KC9HYY/MMD", "KC9JDB", + "KC9WIB", "KD0EBY", "KD0ETC/LH", "KD0FDP", @@ -47025,6 +47030,7 @@ "KI4WOI", "KI5DQL", "KI5EEE", + "KI5HPI", "KI5MKH", "KI6FPL", "KI6GIG", @@ -47044,6 +47050,7 @@ "KJ6SKC", "KJ7FX", "KK4YIT", + "KK6BRW", "KK6DLH", "KK6QAI", "KK6Z", @@ -48446,6 +48453,7 @@ "N6RMQ", "N6SCW", "N6SEG", + "N6SIW", "N6SPP", "N6TSM", "N6TYB", @@ -49638,10 +49646,12 @@ "WH6GNA", "WH6GOZ", "WH6GQ", + "WH6GRC", "WH6GRE", "WH6GSX", "WH6GSY", "WH6GTV", + "WH6GUP", "WH6GV", "WH6GWN", "WH6HA", @@ -52114,6 +52124,7 @@ "N2QMT": "08", "N2SEX/LH": "08", "N2VXF": "08", + "N6SIW": "08", "ND2Y": "08", "NH2DC": "08", "NH7NA": "08", @@ -52481,6 +52492,7 @@ "AL7HW": "08", "AL7HW/4": "08", "AL7IS": "08", + "AL7JP": "08", "AL7LH": "08", "AL7LJ": "08", "AL7NL": "08", @@ -53245,8 +53257,10 @@ "WH6GJD": "08", "WH6GKB": "08", "WH6GMZ": "08", + "WH6GRC": "08", "WH6GSX": "08", "WH6GSY": "08", + "WH6GUP": "08", "WH6GV": "08", "WH6HA": "08", "WH6IF": "08", @@ -53544,7 +53558,6 @@ "AL7IM": "07", "AL7J": "07", "AL7JJ": "07", - "AL7JP": "07", "AL7L/5": "07", "AL7MQ": "07", "AL7PB": "07", @@ -54811,6 +54824,7 @@ "K2ICW": "06", "K2NMA": "06", "K6HWK": "06", + "K6JAE": "06", "K6MW": "06", "K6SAX": "06", "K6WBZ": "06", @@ -55059,6 +55073,7 @@ "KH8E": "06", "KH9AA": "06", "KI0HM": "06", + "KI5HPI": "06", "KI6HOG": "06", "KI7FJW": "06", "KI7FJX": "06", @@ -56093,6 +56108,7 @@ "KC9HYY/EOI": "08", "KC9HYY/LUS100": "08", "KC9HYY/MMD": "08", + "KC9WIB": "08", "KD9Q/M": "08", "KD9TWW": "08", "KE5DDD": "08", @@ -56300,6 +56316,7 @@ "KI4IGB": "08", "KI6PS": "08", "KJ6HF": "08", + "KK6BRW": "08", "KK9W": "08", "KL0AH": "08", "KL0BX": "08", @@ -57164,6 +57181,7 @@ "N2QMT": "05", "N2SEX/LH": "05", "N2VXF": "05", + "N6SIW": "05", "ND2Y": "05", "NH2DC": "05", "NH7NA": "05", @@ -57531,6 +57549,7 @@ "AL7HW": "05", "AL7HW/4": "05", "AL7IS": "05", + "AL7JP": "05", "AL7LH": "05", "AL7LJ": "05", "AL7NL": "05", @@ -58295,8 +58314,10 @@ "WH6GJD": "05", "WH6GKB": "05", "WH6GMZ": "05", + "WH6GRC": "05", "WH6GSX": "05", "WH6GSY": "05", + "WH6GUP": "05", "WH6GV": "05", "WH6HA": "05", "WH6IF": "05", @@ -58594,7 +58615,6 @@ "AL7IM": "04", "AL7J": "04", "AL7JJ": "04", - "AL7JP": "04", "AL7L/5": "04", "AL7MQ": "04", "AL7PB": "04", @@ -59861,6 +59881,7 @@ "K2ICW": "03", "K2NMA": "03", "K6HWK": "03", + "K6JAE": "03", "K6MW": "03", "K6SAX": "03", "K6WBZ": "03", @@ -60109,6 +60130,7 @@ "KH8E": "03", "KH9AA": "03", "KI0HM": "03", + "KI5HPI": "03", "KI6HOG": "03", "KI7FJW": "03", "KI7FJX": "03", @@ -61143,6 +61165,7 @@ "KC9HYY/EOI": "04", "KC9HYY/LUS100": "04", "KC9HYY/MMD": "04", + "KC9WIB": "04", "KD9Q/M": "04", "KD9TWW": "04", "KE5DDD": "04", @@ -61350,6 +61373,7 @@ "KI4IGB": "04", "KI6PS": "04", "KJ6HF": "04", + "KK6BRW": "04", "KK9W": "04", "KL0AH": "04", "KL0BX": "04", @@ -75385,7 +75409,8 @@ "ZS71SIG", "ZS75PTA", "ZS80VT", - "ZS85SARL" + "ZS85SARL", + "ZS85VDAM" ], "prefixITU": {}, "prefixCQ": {}, diff --git a/package.nw/gt_roster.html b/package.nw/gt_roster.html index 3725d7a..df62b98 100644 --- a/package.nw/gt_roster.html +++ b/package.nw/gt_roster.html @@ -320,19 +320,6 @@
-
- - -
- -
- - -

- - -

-
@@ -348,7 +335,6 @@ oninput="valuesChanged();" />
-
@@ -636,15 +622,29 @@
- - + + +
+
+ +
+
+ + +
+ +
- +
-
More
- +
+ + +
+
 . . . 
+
diff --git a/package.nw/gt_stats.html b/package.nw/gt_stats.html index 3b750a9..284142f 100644 --- a/package.nw/gt_stats.html +++ b/package.nw/gt_stats.html @@ -32,7 +32,7 @@ - +
未找到。", "documents.Div2": "沒有存檔目錄, GridTracker將無法繼續。", "documents.Div3": "請選擇一個目錄, 以便GridTracker可以存儲重要檔案。", "legend.title": "圖例", "legend.QSO.hover": "您曾經通過的電臺網格", - "legend.QSO.label": "QSO", + "legend.QSO.label": "通聯", "legend.QSL.hover": "您曾經通過並確認的電臺網格", - "legend.QSL.label": "QSL", + "legend.QSL.label": "確認", "legend.QSX.hover": "其他正在通聯帶網格的電臺", "legend.QSX.label": "QSX", "legend.CQ.hover": "網格內的電臺正在呼叫CQ", @@ -49,16 +49,16 @@ "quickStats.CallRX.hover": "聽到的呼號", "quickStats.CallRX.label": "接收的呼叫", "quickStats.QSO.hover": "通聯的電臺", - "quickStats.QSO.label": "QSO", + "quickStats.QSO.label": "通聯", "quickStats.DXCCRx.hover": "聽到的DXCC", "quickStats.DXCCRx.label": "接收的DXCC", "quickStats.QSL.hover": "顯示確認清單", - "quickStats.QSL.label": "QSL", + "quickStats.QSL.label": "確認", "quickLoad.clearLive.hover": "清除GridTracker接收的實時數據", "quickLoad.clearLive.label": "清除實時數據", - "quickLoad.clearLog.hover": "清除或重新加載日志數據(不刪除日志檔案)", - "quickLoad.clearLog.label": "清除日志", - "quickLoad.loadLog.label": "加載日志", + "quickLoad.clearLog.hover": "清除或重新加載日誌數據(不刪除日誌檔案)", + "quickLoad.clearLog.label": "清除日誌", + "quickLoad.loadLog.label": "加載日誌", "mapFilter.title.hover": "地圖視圖控制面板", "mapFilter.title.label": "地圖視圖過濾器", "mapFilter.band.hover": "選擇波段(自動跟蹤WSJT-X)", @@ -85,6 +85,7 @@ "mapFilter.band.2m": "2m", "mapFilter.band.1_25m": "1.25m", "mapFilter.band.70cm": "70cm", + "mapFilter.band.33cm": "33cm", "mapFilter.band.23cm": "23cm", "mapFilter.band.13cm": "13cm", "mapFilter.band.9cm": "9cm", @@ -125,8 +126,8 @@ "mapFilter.prop.TransEquatorial": "跨赤道", "mapFilter.prop.TropoDuct": "對流層管道", "mapFilter.data.label": "數據", - "mapFilter.data.LogLive": "日志+實時", - "mapFilter.data.Logbook": "日志數據", + "mapFilter.data.LogLive": "日誌 & 實時", + "mapFilter.data.Logbook": "日誌數據", "mapFilter.data.Live": "實時信號", "controlPanel.CallRoster.hover": "打開呼叫清單", "controlPanel.PushPin.hover": "切換圖釘模式(P)", @@ -137,20 +138,19 @@ "controlPanel.MapLegend.hover": "切換地圖圖例", "controlPanel.Share.hover": "讓其他GridTracker用戶看到您的在線狀態", "controlPanel.Help.hover": "打開熱鍵清單(F1)", - "controlPanel.Trophy.hover": "循環顯示獎狀圖層(=)", - + "controlPanel.Trophy.hover": "循環顯示獎狀圖層(=)", "controlPanel.Moon.hover": "顯示月球位置(D)", "controlPanel.MaidenheadWidth.hover": "切換梅登黑德網格位數(W)", "controlPanel.Settings.hover": "設定(S)", - "controlPanel.LoadADIF.hover": "載入本地ADIF日志(L)", + "controlPanel.LoadADIF.hover": "載入本地ADIF日誌(L)", "controlPanel.CurrentCNDX.hover": "查看當前空間數據(C)", "controlPanel.DonateMoney.hover": "使用PayPal捐款", "controlPanel.AudioMute.hover": "切換靜音狀態(M)", "controlPanel.Spots.hover": "顯示Spot信息報告(O)", "controlPanel.PSK24.hover": "您24小時的PSK報告", - "controlPanel.QRZ.hover": "從QRZ.com下載日志", - "controlPanel.LOTW.hover": "從LOTW下載日志", - "controlPanel.ClubLog.hover": "從ClubLog下載日志", + "controlPanel.QRZ.hover": "從QRZ.com下載日誌", + "controlPanel.LOTW.hover": "從LOTW下載日誌", + "controlPanel.ClubLog.hover": "從ClubLog下載日誌", "controlPanel.LocalAIDF.hover": "重新載入本地ADIF檔案", "controlPanel.Timezone.hover": "顯示時區圖層", "controlPanel.Radar.hover": "顯示美國地區氣象雷達圖層(數字0)", @@ -162,22 +162,22 @@ "settings.Audio.label": "音頻", "settings.Map.label": "地圖", "settings.Grids.label": "網格", - "settings.Logging.label": "日志記錄", + "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", - "settings.OAMS.simplepush.test": "Test", - "settings.OAMS.pushover.enable.label": "Pushover.net Message Forwarding", - "settings.OAMS.pushover.credentials.label": "Pushover Credentials", - "settings.OAMS.pushover.userkey.label": "User Key", - "settings.OAMS.pushover.token.label": "API Token", - "settings.OAMS.pushover.test": "Test", - "settings.OAMS.forward.chat": "Forward Chat Messages", - "settings.OAMS.forward.roster": "Forward Roster Alerts", - "settings.Logbook.label": "日志", + "settings.OAMS.simplepush.enable.label": "簡單推送 .io消息 轉發", + "settings.OAMS.simplepush.apikey.label": "簡單推送 API密鑰", + "settings.OAMS.simplepush.test": "測試", + "settings.OAMS.pushover.enable.label": "推送 .Net消息 轉發", + "settings.OAMS.pushover.credentials.label": "推送憑據", + "settings.OAMS.pushover.userkey.label": "用戶密鑰", + "settings.OAMS.pushover.token.label": "API 密鑰", + "settings.OAMS.pushover.test": "測試", + "settings.OAMS.forward.chat": "轉發聊天消息", + "settings.OAMS.forward.roster": "轉發名單警報", + "settings.Logbook.label": "日誌", "settings.Update.label": "更新", "settings.About.label": "關於", "settings.general.AppStatus.label": "應用軟件狀態", @@ -188,7 +188,7 @@ "settings.general.UDP.Port.label": "埠號", "settings.general.Fwd.Messages.label1": "轉發UDP數據", "settings.general.Fwd.Messages.label2": "例如,另一台主機上的GridTracker", - "settings.general.Fwd.IP.label": "IP", + "settings.general.Fwd.IP.label": "IP地址", "settings.general.Fwd.Port.label": "埠號", "settings.general.Fwd.Enabled.label": "啟用?", "settings.general.CenterGrid.label": "所在網格", @@ -199,7 +199,7 @@ "settings.general.Distance.dg": "度", "settings.general.DecodeWaterfall.label": "右下角信息欄", "settings.general.CheckNewVersion.label": "檢查新版本", - "settings.general.Language.label": "語言", + "settings.general.Language.label": "語言(重新啟動)", "settings.general.ClearAllSettings.label": "清除所有設定!", "settings.general.ClearSettingSure.label": "是的,我肯定!", "settings.general.ExportSettings.label": "匯出設定", @@ -212,19 +212,19 @@ "settings.lookup.Username.label": "用戶名", "settings.lookup.Password.label": "密碼", "settings.lookup.QRZTest": "測試", - "settings.lookup.AddData.label": "將尋找得到的資料增加至QSO日志紀錄中", - "settings.lookup.AddData.hover": "當完成一個QSO時... 增加來自尋找得到的額外數據", - "settings.lookup.AddGrid.label": "如果缺少QSO網格則增加尋找到的網格數據", - "settings.lookup.AddGrid.hover": "如果缺少QSO網格則增加尋找到的網格數據", + "settings.lookup.AddData.label": "將尋找得到的資料增加至通聯日誌紀錄中", + "settings.lookup.AddData.hover": "當完成一個通聯時... 增加來自尋找得到的額外數據", + "settings.lookup.AddGrid.label": "如果缺少通聯網格則增加尋找到的網格數據", + "settings.lookup.AddGrid.hover": "如果缺少通聯網格則增加尋找到的網格數據", "settings.lookup.OpenOnTx.label": "在傳輸時打開尋找", "settings.lookup.OpenOnTx.hover": "發送時打開尋找視窗", - "settings.lookup.CloseOnLog.label": "記錄日志後關閉尋找", - "settings.lookup.CloseOnLog.hover": "記錄日志後關閉尋找", + "settings.lookup.CloseOnLog.label": "記錄日誌後關閉尋找", + "settings.lookup.CloseOnLog.hover": "記錄日誌後關閉尋找", "settings.lookup.CallookFirst.label": "在使用其他服務之前優先使用Callook平台", "settings.lookup.CallookFirst.hover": "在使用其他服務之前使用Callook平台,因為免費Callook比免費QRZ.com可以獲取更多數據。", "settings.lookup.Databases.label": "全球呼號數據庫", "settings.lookup.Databases.header": "數據庫平台 (如果啟用代表您支持此平台的QSL)", - "settings.lookup.Enabled.header": "已啟用", + "settings.lookup.Enabled.header": "啟用", "settings.lookup.LastDwnld.header": "最後下載", "settings.lookup.Count.header": "數量", "settings.lookup.db.ULS": "美國ULS", @@ -239,17 +239,17 @@ "settings.audio.Speech.Phonetics.hover": "以語音方式播出呼號和網格", "settings.audio.Device.label": "音頻播放設備", "settings.audio.File.Volume.label": "音頻檔案音量", - "settings.audio.QSOLogEventFile.label": "QSO日志記錄通知音頻", - "settings.logbook.callsigns.hover": "QSO日志以僅包含這些呼號的數據(逗號分隔)", + "settings.audio.QSOLogEventFile.label": "通聯日誌記錄通知音頻", + "settings.logbook.callsigns.hover": "通聯日誌以僅包含這些呼號的數據(逗號分隔)", "settings.logbook.callsigns.label": "過濾通聯呼號", "settings.logbook.callsigns.enable": "啟用?", "settings.logbook.callsigns.callsigns": "呼號(可多選)", - "settings.logbook.date.hover": "在此日期之前過濾日志QSO", + "settings.logbook.date.hover": "在此日期之前過濾通聯日誌", "settings.logbook.date.label": "通聯日期", "settings.logbook.date.enable": "啟用?", - "settings.logbook.date.date": "Date", - "settings.logbook.date.time": "Time", - "settings.logbook.apply.hover": "套用更改並重新匯入日志", + "settings.logbook.date.date": "日期", + "settings.logbook.date.time": "時間", + "settings.logbook.apply.hover": "套用更改並重新匯入日誌", "settings.logbook.apply.label": "套用更改", "settings.grids.reset.title": "網格顏色", "settings.grids.reset.hover": "將網格顏色重置為預設值", @@ -264,7 +264,7 @@ "settings.grids.spotsOverGrids.label": "RX-Spots在網格之上", "settings.grids.spotsoverGrids.hover": "在網格層上放置接收點", "settings.grids.opacity.label": "網格不透明度", - "settings.grids.splitQSL.label": "分解QSL網格", + "settings.grids.splitQSL.label": "分開QSL網格", "settings.grids.splitQSL.hover": "使用活動網格切換分解QSL網格", "settings.grids.AutoMouseOver.label": "自動鼠標懸停在網格上", "settings.grids.AutoMouseOver.hover": "在網格表上切換自動鼠標", @@ -303,7 +303,7 @@ "settings.map.NightRXSpot.color.label": "夜間RX-Spot路徑顏色", "settings.map.NightRXSpot.color.default": "RX-Spot調色板", "settings.map.NightBrightness.label": "夜間地圖區域亮度", - "settings.logging.tableheader.source": "日志平台/同步", + "settings.logging.tableheader.source": "日誌平台/同步", "settings.logging.tableheader.menu": "選單?", "settings.logging.tableheader.startup": "啟動?", "settings.logging.tableheader.log": "記錄?", @@ -311,10 +311,10 @@ "settings.logging.tableheader.test": "測試", "settings.logging.tableheader.result": "結果", "settings.logging.gridtracker.source": "GridTracker", - "settings.logging.gridtracker.details": "GridTracker QSO日志檔案", + "settings.logging.gridtracker.details": "GridTracker 通聯日誌檔案", "settings.logging.LocalFiles.source": "本地檔案(s)", - "settings.logging.LocalFiles.details.add": "添加日志檔案", - "settings.logging.LocalFiles.details.noFiles": "未選擇日志檔案", + "settings.logging.LocalFiles.details.add": "添加日誌檔案", + "settings.logging.LocalFiles.details.noFiles": "未選擇日誌檔案", "settings.logging.PSKReporter.source": "PSK-Reporter", "settings.logging.PSKReporter.details": "上傳24小時Spot歷史數據", "settings.logging.QRZcom.source": "QRZ.com", @@ -376,7 +376,7 @@ "settings.callroster.AlwaysOnTop.label": "視窗始終在最上層", "settings.callroster.AlwaysOnTop.hover": "將呼叫清單置於其他視窗之上", "settings.callroster.MaxAge.label": "呼叫清單最大時效", - "settings.callroster.MultiRig.label": "在QSO回覆時", + "settings.callroster.MultiRig.label": "在通聯回覆時", "settings.callroster.MultiRig.HaltTx.label": "在所有其他實例上停止發送", "settings.callroster.MultiRig.SwitchView.label": "將視圖切換到傳輸實例", "settings.callroster.AudioAlert.label": "開啟聲音警報", @@ -426,7 +426,7 @@ "settings.alerts.CustomAlerts.new.repeat.label": "重覆", "settings.alerts.CustomAlerts.new.type.callsign.exact": "呼號(準確)", "settings.alerts.CustomAlerts.new.type.callsign.partial": "呼號(局部)", - "settings.alerts.CustomAlerts.new.type.callsign.regex": "呼號(正則表達式)", + "settings.alerts.CustomAlerts.new.type.callsign.regex": "呼號匹配", "settings.alerts.CustomAlerts.new.type.gridsquare": "網格", "settings.alerts.CustomAlerts.new.type.QRZ": "QRZ", "settings.alerts.CustomAlerts.new.notify.textToSpeech": "文字朗讀", @@ -436,16 +436,16 @@ "settings.alerts.CustomAlerts.new.repeat.deleted": "直到刪除", "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.repeat.never": "永不重複", + "settings.alerts.CustomAlerts.new.addButton": "增加", "settings.OAMS.message.enable.label": "啟用消息傳遞", "settings.OAMS.message.enable.hover": "啟用消息傳遞", "settings.OAMS.spotting.enable.label": "啟用定位", "settings.OAMS.spotting.enable.hover": "通過OAMS網絡發送和接收現場報告", - "settings.OAMS.BandActivity.enable.label": "Band Activity", - "settings.OAMS.BandActivity.enable.hover": "Receive Band Activity Reports through the OAMS network", - "settings.OAMS.BandActivity.neighbor.enable.label": "Neighboring Grids", - "settings.OAMS.BandActivity.neighbor.enable.hover": "Include your 8 neighboring grids in report", + "settings.OAMS.BandActivity.enable.label": "波段活動", + "settings.OAMS.BandActivity.enable.hover": "通過OAMS網絡接收波段活動報告", + "settings.OAMS.BandActivity.neighbor.enable.label": "相鄰網格", + "settings.OAMS.BandActivity.neighbor.enable.hover": "在報告中包括您的8個相鄰網格", "settings.OAMS.message.newAlert.label": "新消息警報", "settings.OAMS.message.newAlert.hover": "收到新消息時發出警報。", "settings.OAMS.message.newAlert.none": "None", @@ -466,16 +466,16 @@ "settings.OAMS.message.awayMode": "離開模式", "settings.OAMS.message.NotAway": "不離開", "settings.OAMS.message.AmAway": "離開", - "settings.OAMS.message.awayText": "拿走文字", + "settings.OAMS.message.awayText": "離開文本", "settings.about.AppVersion": "GridTracker", "settings.about.Brief": "GridTracker是一個以易於使用的界面呈現的業餘無線電信息倉庫", "settings.about.FeatureList1": "來自實時通聯數據解碼", - "settings.about.FeatureList2": "日志", + "settings.about.FeatureList2": "日誌", "settings.about.FeatureList3": "實時通聯報告", "settings.about.FeatureList4": "天氣", "settings.about.FeatureList5": "當前的太陽和空間條件和更多!", "settings.about.HomepageLink": "了解更多關於", - "settings.about.Copyright": "版權所有;2023 GridTracker.org", + "settings.about.Copyright": "版權所有 © 2023 GridTracker.org", "alertPopup.title": "新警報!!!", "alertPopup.dismiss": "解除", "updatePopup.newUpdate": "GridTracker已有新的版本!", @@ -495,11 +495,11 @@ "chat.noHistory": "無信息歷史記錄", "chat.notice.para1": "通知", "chat.notice.para2": "永遠不要提供密碼、信用卡號、安全組合或任何你不想讓壞人知道的個人信息,因為那里有一些非常壞的人。", - "chat.notice.para3": "但不是我們。雖然GridTracker是免費的,但與其他一些免費應用程序不同,我們不會存儲、保存、出售、窺視或以其他方式對聊天進行任何違反您信任的操作。我們不保存日志。我們不存儲元數據。我們只是不這樣做。", + "chat.notice.para3": "但不是我們。雖然GridTracker是免費的,但與其他一些免費應用程序不同,我們不會存儲、保存、出售、窺視或以其他方式對聊天進行任何違反您信任的操作。我們不保存日誌。我們不存儲元數據。我們只是不這樣做。", "chat.notice.para4": "關閉GridTracker,丟失文字。所以寫下你想保存的任何東西。因為當它消失時,它就永遠消失了。", "chat.notice.agree": "單擊此處確認上述內容並啟用信息傳遞", - "chat.filter.band": "波段", - "chat.filter.mode": "模式", + "chat.filter.band": "波段: ", + "chat.filter.mode": "模式: ", "chat.stationCount": "電臺計算", "COMMENT_gt_conditions.html": "", "conditions.title": "當前條件", @@ -507,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": "", @@ -515,7 +515,7 @@ "roster.haltTX": "停止發送", "roster.controls.more": "打開控件欄", "roster.controls.less": "關閉控件欄", - "roster.controls.logbook.label": "日志", + "roster.controls.logbook.label": "日誌", "roster.controls.logbook.awardTracker": "獎勵追蹤", "roster.controls.logbook.liveBandMode": "實時波段和模式", "roster.controls.logbook.liveBandMixMode": "實時波段, 混合模式", @@ -552,16 +552,17 @@ "roster.secondary.wanted.callsign": "呼號", "roster.secondary.wanted.grid": "網格", "roster.secondary.wanted.dxcc": "DXCC", - "roster.secodnary.wanted.qrz": "QRZ", + "roster.secondary.wanted.qrz": "QRZ", "roster.secondary.wanted.wpx": "WPX", "roster.secondary.wanted.pota": "POTA", "roster.secondary.wanted.OAMS": "OAMS", - "roster.secondary.wanted.cqzone": "CQz", - "roster.secondary.wanted.ituzone": "ITUz", - "roster.secondary.wanted.state": "狀態", - "roster.secondary.wanted.marathon": "Marathon", - "roster.secondary.wanted.county": "縣", - "roster.secondary.wanted cont": "續", + "roster.secondary.wanted.cqzone": "CQ分區", + "roster.secondary.wanted.ituzone": "ITU分區", + "roster.secondary.wanted.regex": "呼號匹配", + "roster.secondary.wanted.state": "美國州", + "roster.secondary.wanted.marathon": "馬拉松", + "roster.secondary.wanted.county": "美國縣", + "roster.secondary.wanted.cont": "洲大陸", "roster.exceptions.label": "例外情況", "roster.secondary.exceptions.cqOnly": "僅限CQ", "roster.secondary.exceptions.hasGrid": "有網格", @@ -571,35 +572,35 @@ "roster.secondary.exceptions.maxFreq": "最高頻率", "roster.secondary.exceptions.usesLoTW": "LoTW用戶", "roster.secondary.exceptions.spottedMe": "發報自己", - "roster.secondary.execptions.noMyDXCC": "我不需要的DXCC", - "roster.secondary.execptions.onlyMyDXCC": "我需要的DXCC", + "roster.secondary.exceptions.noMyDXCC": "我不需要的DXCC", + "roster.secondary.exceptions.onlyMyDXCC": "我需要的DXCC", "roster.secondary.exceptions.useseQSL": "eQSL用戶", "roster.secondary.exceptions.usesOQRS": "OQRS用戶", "roster.secondary.exceptions.allOnlyNew": "僅限新呼號", - "roster.secondary.exceptions.wantRRCQ": "RR73 as CQ", - "roster.secondary.exceptions.noUnknownDXCC": "No Unknown DXCC", + "roster.secondary.exceptions.wantRRCQ": "RR73當作CQ", + "roster.secondary.exceptions.noUnknownDXCC": "禁止不明DXCC", "roster.secondary.exceptions.noMsg.label": "不包含", "roster.secondary.exceptions.noMsg.hover": "不包含解碼...", - "roster.secondary.exceptions.onlyMsg.label": "只包含", + "roster.secondary.exceptions.onlyMsg.label": "僅包含", "roster.secondary.exceptions.onlyMsg.hover": "僅包含解碼...", - "roster.secondary.excpetions.regex.label": "正則表達式", - "roster.secondary.exceptions.regex.hover": "調用符號正則表達式", + "roster.secondary.exceptions.regex.label": "呼號匹配", + "roster.secondary.exceptions.regex.hover": "調用呼號匹配", "roster.secondary.instances.label": "實例", - "roster.ignores.label": "忽視", + "roster.ignores.label": "忽略呼號", "roster.close": "關閉", - "roster.watcher.label": "觀察者", - "roster.add.watcher.label": "添加觀察者", + "roster.watcher.label": "監察", + "roster.add.watcher.label": "添加監察", "COMMENT_gt_stats.html": "", - "stats.title": "日志數據統計", - "stats.tabs.logbook": "日志", + "stats.title": "日誌數據統計", + "stats.tabs.logbook": "日誌", "stats.tabs.scores": "分數", "stats.tabs.DXCCs": "DXCCs", "stats.tabs.CQZones": "CQ 分區", "stats.tabs.ITUZones": "ITU 分區", - "stats.tabs.WASWAC": "WAC/WAS", + "stats.tabs.WASWAC": "洲大陸/美國州", "stats.tabs.live": "在線", "stats.noDecodes": "還沒有解碼", - "stats.viewing": "Viewing", + "stats.viewing": "檢視", "COMMENT_adif.js": "", "adif.TestResult.invalid": "測試無效", "adif.TestResult.error": "未知錯誤", @@ -633,7 +634,7 @@ "adif.FaileQSLNick": "登錄 eQSL.cc (暱稱)失敗", "adif.FaileQSLDupe": "登錄 eQSL.cc (日誌重複)失敗", "adif.LoggedeQSL": "已記錄到 eQSL.cc", - "adif.FailedeQSL": "記錄到 eQSL.cc (?)失敗", + "adif.FailedeQSL": "記錄到 eQSL.cc 失敗(?)", "adif.Offline": "目前
離線", "adif.TestUpload": "測試上傳", "adif.ErrorEncountered": "遇到錯誤", @@ -641,18 +642,18 @@ "adif.MissingTQSL": "沒有安裝 TrustedQSL", "adif.TQSLPassword": "TQSL 失去密碼", "adif.TQSLStation": "選擇電臺", - "adif.TQSLFailed": "記錄到 TQSL 時失敗", + "adif.TQSLFailed": "記錄到 TQSL 失敗", "adif.TQSLLogged": "已記錄到 TQSL", "adif.CloudLogAPIKey": "API 密鑰無效", "adif.CloudLogLogged": "已記錄到 Cloudlog", - "adif.CloudLogFailed": "記錄到 Cloudlog 時失敗", - "adif.QRZFailedAlert": "將 QSO 上傳到 QRZ.com 時失敗", - "adif.QRZFailed": "登錄到 QRZ.com 時失敗", + "adif.CloudLogFailed": "記錄到 Cloudlog 失敗", + "adif.QRZFailedAlert": "將通聯上傳到 QRZ.com 失敗", + "adif.QRZFailed": "登錄到 QRZ.com 失敗", "adif.QRZLogged": "已登錄到 QRZ.com", - "adif.QRZNoResponse": "將 QSO 上傳到 QRZ.com 時出錯(無回應)", + "adif.QRZNoResponse": "上傳到 QRZ.com 失敗(無回應)", "adif.ClubLogLogged": "已登錄到 ClubLog.org", "adif.HRDLogNetLogged": "已登錄到 HRDLOG.net", - "adif.HRDLogNetFailed": "登錄到 HRDLOG.net 時失敗", + "adif.HRDLogNetFailed": "登錄到 HRDLOG.net 失敗", "COMMENT_alerts.js": "", "alerts.addNew.Added": "增加", "alerts.addNew.SelectFile": "選擇檔案!", @@ -660,8 +661,8 @@ "alerts.addnew.Duplicate": "重複!", "alerts.callsign.speech": "呼號", "alerts.callsign.popup": "尋找", - "alerts.gridsquare.speech": "格網方格", - "alerts.gridsquare.popup": "格網方格", + "alerts.gridsquare.speech": "網格", + "alerts.gridsquare.popup": "網格", "alerts.QRZ.speech": "呼叫中", "alerts.QRZ.popup": "QRZ", "alerts.AlertPop.Type": "類型", @@ -678,8 +679,8 @@ "alerts.TypesArray.CallExact": "呼叫 (精確)", "alerts.TypesArray.Grid": "網格", "alerts.TypesArray.QRZ": "QRZ", - "alerts.TypesArray.CallPartial": "呼叫 (局部)", - "alerts.TypesArray.CallRegex": "呼叫 (匹配)", + "alerts.TypesArray.CallPartial": "呼號 (局部)", + "alerts.TypesArray.CallRegex": "呼號 (匹配)", "alerts.ValueArray.AudioFile": "音頻檔案", "alerts.ValueArray.TextToSpeech": "朗讀", "alerts.ValueArray.PopUp": "彈出", @@ -701,8 +702,8 @@ "alerts.ClassicWords.callsign": "呼叫", "alerts.ClassicWords.grid": "網格", "alerts.ClassicWords.DXCC": "DXCC", - "alerts.ClassicWords.CQz": "C-Q 分區", - "alerts.ClassicWords.ITUz": "I-T-U 分區", + "alerts.ClassicWords.CQz": "C-Q分區", + "alerts.ClassicWords.ITUz": "I-T-U分區", "alerts.ClassicWords.State": "國家地區", "COMMENT_callsigns.js": "", "callsigns.Downloading": "下載中...", @@ -713,28 +714,28 @@ "gt.gridView.logbook": "日誌", "gt.gridView.logLive": "日誌 & 實時", "gt.viewInfo.qsoGrids": "網格", - "gt.viewInfo.cqZones": "CQ 分區", - "gt.viewInfo.ituZones": "ITU 分區", + "gt.viewInfo.cqZones": "CQ分區", + "gt.viewInfo.ituZones": "ITU分區", "gt.viewInfo.wacZones": "各大洲", "gt.viewInfo.wasZones": "美國各州", "gt.viewInfo.worldGeoData": "DXCCs", "gt.viewInfo.countyData": "美國各縣", - "gt.viewInfo.us48Data": "美國大陸網格", + "gt.viewInfo.us48Data": "美國大陸48網格", "gt.ignoreMessages.receive": "接收", "gt.ignoremessages.ignore": "忽略", "gt.timeoutSetUdpPort": "等待信息...", - "gt.setUdpPort": "...setting...", + "gt.setUdpPort": "...設置中...", "gt.changeGridDecay": "無衰減", "gt.spotTable.RXSpot": "RX Spot", "gt.spotTable.Age": "距今", "gt.spotTable.db": "分貝", - "gt.spotTable.Call": "呼叫", + "gt.spotTable.Call": "被呼叫", "gt.spottable.Dxcc": "DXCC", "gt.spotTable.Grid": "網格", "gt.spotTable.Freq": "頻率", "gt.spotTable.Band": "波段", "gt.spotTable.Mode": "模式", - "gt.newCallList.Call": "呼號", + "gt.newCallList.Call": "主叫", "gt.newCallList.Freq": "頻率", "gt.newCallList.Sent": "發出", "gt.newCallList.Rcvd": "接收", @@ -748,7 +749,7 @@ "gt.newCallList.LoTW": "LoTW", "gt.newCallList.eQSL": "eQSL", "gt.newCallList.OQRS": "OQRS", - "gt.TitleInfo.GridTracker": "GridTracker", + "gt.TitleInfo.GridTracker": "GridTracker網格追蹤助手", "gt.TitleInfo.Band": "波段:", "gt.TitleInfo.Mode": "模式:", "gt.TitleInfo.Worked": "曾通聯", @@ -757,8 +758,8 @@ "gt.moonOver.Moon": "月球", "gt.moonOver.Azimuth": "角度", "gt.moonOver.Elevation": "仰角", - "gt.Trophy.CQZone": "CQ 分區", - "gt.Trohpy.ITUZone": "ITU 分區", + "gt.Trophy.CQZone": "CQ分區", + "gt.Trohpy.ITUZone": "ITU分區", "gt.Trophy.WAC": "各大洲", "gt.Trohpy.WAS": "美國各州", "gt.Trophy.DXCC": "DXCC", @@ -800,8 +801,8 @@ "gt.callsignBox.CQ": "CQ", "gt.callsignBox.ITU": "ITU", "gt.callsignBox.Flag": "旗幟", - "gt.callsignBox.QSO": "QSO", - "gt.callsignBox.QSL": "確認卡", + "gt.callsignBox.QSO": "通聯", + "gt.callsignBox.QSL": "確認", "gt.callsignBox.When": "當", "gt.callsignBox.LoTW": "LoTW", "gt.callsignBox.eQSL": "eQSL", @@ -813,10 +814,10 @@ "gt.qsoPage.Grid": "網格", "gt.qsoPage.Band": "波段", "gt.qsoPage.Mode": "模式", - "gt.qsoPage.QSL": "確認卡", - "gt.qsoPage.Sent": "Sent", - "gt.qsoPage.Rcvd": "Rcvd", + "gt.qsoPage.QSL": "確認", "gt.qsoPage.DXCC": "DXCC", + "gt.qsoPage.Sent": "我收對方", + "gt.qsoPage.Rcvd": "對方收我", "gt.qsoPage.Flag": "旗幟", "gt.qsoPage.When": "當", "gt.qsoPage.LoTW": "LoTW", @@ -828,17 +829,17 @@ "gt.dxccBox.DXCC": "DXCC", "gt.dxccBox.Confirmed": "已確認", "gt.dxccBox.Needed": "需要的", - "gt.CQZoneBox.Worked": "曾通聯的 CQ 分區", - "gt.ITUZoneBox.Worked": "曾通聯的 ITU 分區", + "gt.CQZoneBox.Worked": "曾通聯的 CQ分區", + "gt.ITUZoneBox.Worked": "曾通聯的 ITU分區", "gt.WASWACBox.WAC": "曾通聯的所有大洲", - "gt.WASWACBox.WAS": "曾通聯的所有州份", + "gt.WASWACBox.WAS": "曾通聯的所有美國州份", "gt.displayItemsList.Worked": "曾通聯", "gt.displayItemsList.Confirmed": "已確認", "gt.displayItemsList.Needed": "需要的", "gt.WPXBox.worked": "曾通聯的前綴", "gt.WPXBox.confirmed": "已確認的前綴", - "gt.statBox.Parsing": "...解析日誌項...", - "gt.statBox.NoEntries": "沒有可用的日誌條目, 請加載一個或多個ADIF日誌", + "gt.statBox.Parsing": "...分析日誌資料...", + "gt.statBox.NoEntries": "沒有可用的日誌資料, 請加載一個或多個ADIF日誌", "gt.typeNames.Mixed": "混合", "gt.typeNames.Digital": "數據", "gt.typeNames.Phone": "語音", @@ -849,12 +850,12 @@ "gt.awardNames.DXCC": "DXCCs", "gt.awardNames.CQ": "CQ 分區", "gt.awardNames.ITU": "ITU 分區", - "gt.awardNames.WAC": "大洲", + "gt.awardNames.WAC": "各大洲", "gt.awardNames.WAS": "美國各州", "gt.awardNames.USC": "美國各縣", "gt.awardNames.WPX": "前綴", - "gt.logbook.title": "日志", - "gt.logbook.scoreCard": "Score Card", + "gt.logbook.title": "日誌", + "gt.logbook.scoreCard": "單項統計表", "gt.logbook.callsign": "呼號", "gt.logbook.firstContact": "首次通聯", "gt.logbook.lastContact": "最後通聯", @@ -878,7 +879,7 @@ "gt.stationsTable.Rcvd": "接收", "gt.stationsTable.Mode": "模式", "gt.stationsTable.Band": "波段", - "gt.stationsTable.QSL": "確認卡", + "gt.stationsTable.QSL": "已確認", "gt.stationsTable.Comments": "注釋", "gt.stationsTable.DXCC": "DXCC", "gt.stationsTable.Time": "時間", @@ -894,8 +895,8 @@ "gt.statTable.Types": "類型", "gt.bandActivity.Score": "分數:", "gt.bandActivity.Sptos": "Spots:", - "gt.bandActivity.Tx": "Tx:", - "gt.bandActivity.Rx": "Rx:", + "gt.bandActivity.Tx": "發射:", + "gt.bandActivity.Rx": "接收:", "gt.bandActivity.NoData": "..還沒有數據..", "gt.N1MMAlert": "N1MM Logger+ 啟用相同設定, 停止 GridTracker N1MM logger", "gt.NoLocationAlert": "網格位置不可用!\n要么啟動 WSJT-X/JTDX 或在設定中輸入網格位置", @@ -909,7 +910,7 @@ "gt.SpotMaxAge": "最大時效:", "gt.tqslPermissionError": "由於操作系統許可權限, 無法訪問 LoTW TrustedQSL (TQSL) \n已禁用登入到 LoTW\n或以管理員身分運行, 若果問題仍然存在時允許檔案訪問 GridTracker", "gt.startupTable.versionCheck": "版本檢查已完成", - "gt.startupTable.loadi18n": "加載語言", + "gt.startupTable.loadi18n": "加載語言完成", "gt.startupTable.qsoBackup": "通聯備份已初始化", "gt.startupTable.callsigns": "呼號服務已初始化", "gt.startupTable.mapSettings": "地圖設定已初始化", @@ -921,7 +922,7 @@ "gt.startupTable.newWindows": "載入新窗口", "gt.startupTable.maidenheadData": "載入 Maidenhead 數据集", "gt.startupTable.renderGrids": "渲染所有 Maidenhead 網格", - "gt.startupTable.updateProcesses": "已更新正在運行的進程", + "gt.startupTable.updateProcesses": "更新正在運行的進程", "gt.startupTable.updateINI": "更新自 WSJT-X/JTDX", "gt.startupTable.loadADIF": "載入 ADIF 設定", "gt.startupTable.initButtons": "按鈕和輸入已初始化", @@ -932,7 +933,7 @@ "gt.startupTable.eventTimers": "設定事件和計時器", "gt.startupTable.regHotkeys": "注册熱鍵", "gt.startupTable.initOams": "對話系統已初始化", - "gt.startupTable.loadPOTA": "載入 POTA Database", + "gt.startupTable.loadPOTA": "載入 POTA 資料庫", "gt.startupTable.potaSpots": "啟動 POTA Spots 加速器", "gt.startupTable.getAcks": "貢獻者致谢已載入", "gt.startupTable.postInit": "系統已完成", @@ -942,12 +943,12 @@ "gt.lookup.lookingUp1": "正在查詢 ", "gt.lookup.lookingUp2": "請等候...", "gt.callookDX1": "C A L L O O K", - "gt.callookDX2": "毫無意義的業餘無線電美國呼號査詢", - "gt.callookDX3":"僅限於美國和美國領土", - "gt.callookDX4": "這呼號", - "gt.callookDX5": "請求來自", - "gt.callookDX6": "您可能需要考慮使用 QRZ.com, 他們擁有免費會員資料, 提供大多數呼號有限數據", - "gt.callookDX7": "他們亦有付費會員的詳細資訊", + "gt.callookDX2": "嚴肅的業餘無線電美國呼號査詢", + "gt.callookDX3": "請求來自", + "gt.callookDX4": "僅限於美國和美國領土", + "gt.callookDX5": "呼號", + "gt.callookDX6": "您可能需要考慮使用 QRZ.com付費會員的詳細資訊", + "gt.callookDX7": "他們亦有免費資料, 提供大多數呼號有限數據", "gt.QRZhamQTH.valid": "有效", "gt.QRZhamQTH.invalid": "無效回應", "gt.QRZhamQTH.error": "未知錯誤", @@ -955,7 +956,7 @@ "gt.dbInit.error1": "資料庫錯誤:", "gt.dbInit.error2": ": GridTracker 會有問題", "gt.addLookup.Error": "查找寫入問題", - "gt.lookup.getAddress": "按一下以將地址複製到剪貼板", + "gt.lookup.getAddress": "按一下複製到剪貼板", "gt.lookup.details": "詳情", "gt.lookup.website": "網站", "gt.lookup.biography": "簡介", @@ -992,7 +993,7 @@ "roster.award.Select": "選擇獎項", "roster.award.name": "名稱", "roster.award.Award": "獎項", - "roster.": "獲獎軌跡", + "roster.award.Track": "獲獎軌跡", "roster.award.ToggleTracking": "切換跟蹤", "roster.award.Remove": "移除跟蹤器", "roster.award.addName": "選擇獎項", @@ -1002,9 +1003,9 @@ "roster.ignore.none": "沒有", "roster.ignore.CQ": "CQ", "roster.ignore.DXCCs": "DXCCs", - "roster.ignore.CQZones": "CQ 分區", - "roster.ignore.ITUZones": "ITU 分區", - "roster.menu.Settings": "Settings", + "roster.ignore.CQZones": "CQ分區", + "roster.ignore.ITUZones": "ITU分區", + "roster.menu.Settings": "設定", "roster.menu.HideControls": "隱藏控件", "roster.menu.ShowControls": "顯示控件", "roster.menu.CompactMode": "緊密模式", @@ -1022,10 +1023,10 @@ "roster.menu.ClearCQFromAll": "清除所有的 CQ", "roster.menu.ClearCQIgnore": "清除忽視的 CQ", "roster.menu.EditIgnores": "編輯忽視", - "roster.menu.IgnoreCQZone": "忽視的 CQ 分區", - "roster.menu.ClearCQZoneIgnore": "清除忽視的 CQ 分區", + "roster.menu.IgnoreCQZone": "忽視的 CQ分區", + "roster.menu.ClearCQZoneIgnore": "清除忽視的 CQ分區", "roster.menu.IgnoreITUZone": "忽視的 ITU 分區", - "roster.menu.ClearITUZoneIgnore": "清除忽視的 ITU 分區", + "roster.menu.ClearITUZoneIgnore": "清除忽視的 ITU分區", "roster.menu.IgnoreDXCC": "忽視的 DXCC", "roster.menu.ClearDXCCIgnore": "清除忽視的 DXCC", "roster.AwardTypes.IOTA": "島嶼電臺已在電波上", @@ -1036,7 +1037,7 @@ "roster.AwardTypes.cont": "大洲", "roster.AwardTypes.cont5": "五大洲", "roster.AwardTypes.cont52band": "五大洲每個波段", - "roster.AwardTypes.cqz": "CQ 分區", + "roster.AwardTypes.cqz": "CQ分區", "roster.AwardTypes.dxcc": "DXCC", "roster.AwardTypes.grids": "網格", "roster.AwradTypes.numsfx": "本身呼叫地區 + 後綴", @@ -1044,11 +1045,11 @@ "roster.AwardTypes.pxa": "前綴", "roster.AwardTypes.pxplus": "特別呼號", "roster.AwardTypes.sfx": "後綴", - "roster.AwardTypes.states": "各州", + "roster.AwardTypes.states": "美國各州", "roster.AwardTypes.cont2band": "每個波段的大洲", "roster.AwardTypes.calls2band": "每個波段的電臺", "roster.AwardTypes.dxcc2band": "每個波段的 DXCC", - "roster.AwardTypes.states2band": "每個波段的州", + "roster.AwardTypes.states2band": "每個波段的美國州", "COMMENT_stats.js": "", "stats.Validate.Valid": "有效!", "stats.Validate.Invalid": "無效!", @@ -1060,15 +1061,16 @@ "rosterColumns.LoTW.LastUpdate": "最後上傳 ", "rosterColumns.OAMS.user": "離線信息用戶", "rosterColumns.Wanted.cont": "大洲", - "rosterColumns.Wanted.cqz": "CQ 分區", - "rosterColumns.Wanted.ituz": "ITU 分區", + "rosterColumns.Wanted.cqz": "CQ分區", + "rosterColumns.Wanted.ituz": "ITU分區", "rosterColumns.Wanted.dxcc": "DXCC", "rosterColumns.Wanted.dxccMarathon": "馬拉松 DXCC", - "rosterColumns.Wanted.cqzMarathon": "馬拉松 CQ 分區", - "rosterColumns.Wanted.state": "各州", + "rosterColumns.Wanted.cqzMarathon": "馬拉松 CQ分區", + "rosterColumns.Wanted.state": "美國各州", "rosterColumns.Wanted.grid": "網格", - "rosterColumns.Wanted.cnty": "縣", + "rosterColumns.Wanted.cnty": "美國縣", "rosterColumns.Wanted.wpx": "WPX", + "rosterColumns.Wanted.regex": "呼號匹配", "rosterColumns.Wanted.call": "呼號", "rosterColumns.Wanted.oams": "OAMS", "rosterColumns.Wanted.pota": "POTA", diff --git a/package.nw/i18n/cn.json b/package.nw/i18n/cn.json index aa93a68..ac54a22 100644 --- a/package.nw/i18n/cn.json +++ b/package.nw/i18n/cn.json @@ -4,24 +4,24 @@ "The GridTracker Team", "BD3OOX" ], - "last-updated": "2022-09-11", + "last-updated": "2023-12-02", "locale": "cn", "message-documentation": "Simplified Chinese: BD3OOX" }, "COMMENT_GridTracker.html": "", - "appname-title": "GridTracker", - "sidebarNoMessages": "waiting for message", - "sidebarNoDataYet": "...no data yet...", - "appname-sub-title": "Grid网格追踪助手", + "appname-title": "单击隐藏菜单", + "sidebarNoMessages": "等待信息", + "sidebarNoDataYet": "...还没有数据...", + "appname-sub-title": "GridTracker网格追踪助手", "statupStatusDiv": "初始化启动", - "documents.Div1": "您的存档目录
未找到。", - "documents.Div2": "没有存档目录,GridTracker将无法继续。", - "documents.Div3": "请选择一个目录,以便GridTracker可以存储重要文件。", + "documents.Div1": "您的存档目录
未找到.", + "documents.Div2": "没有存档目录, GridTracker将无法继续.", + "documents.Div3": "请选择一个目录, 以便GridTracker可以存储重要文件.", "legend.title": "图例", - "legend.QSO.hover": "您曾经通过的电台网格", - "legend.QSO.label": "QSO", + "legend.QSO.hover": "您曾经通联的电台网格", + "legend.QSO.label": "通联", "legend.QSL.hover": "您曾经通过并确认的电台网格", - "legend.QSL.label": "QSL", + "legend.QSL.label": "确认", "legend.QSX.hover": "其他正在通联带网格的电台", "legend.QSX.label": "QSX", "legend.CQ.hover": "网格内的电台正在呼叫CQ", @@ -38,7 +38,7 @@ "info.WsjtMode.hover": "模式", "info.CurrentTime.hover": "切换本地/UTC时间", "info.DXcall.hover": "您正在呼叫或上次呼叫的人", - "info.DXGrid.hover": "他们的Grid网格", + "info.DXGrid.hover": "他们的网格", "info.DXReport.hover": "最后已知的SNR", "info.DXCountry.hover": "DXCC", "info.DXDistance.hover": "距离", @@ -49,11 +49,11 @@ "quickStats.CallRX.hover": "听到的呼号", "quickStats.CallRX.label": "接收的呼叫", "quickStats.QSO.hover": "工作的电台", - "quickStats.QSO.label": "QSO", + "quickStats.QSO.label": "通联", "quickStats.DXCCRx.hover": "听到的DXCC", "quickStats.DXCCRx.label": "接收的DXCC", "quickStats.QSL.hover": "显示确认列表", - "quickStats.QSL.label": "QSL", + "quickStats.QSL.label": "确认", "quickLoad.clearLive.hover": "清除GridTracker接收的实时数据", "quickLoad.clearLive.label": "清除实时数据", "quickLoad.clearLog.hover": "清除或重新加载日志数据(不删除日志文件)", @@ -156,7 +156,7 @@ "controlPanel.Radar.hover": "显示美国地区气象雷达图层(数字0)", "controlPanel.AllGrids.hover": "显示网格图层(B)", "controlPanel.GTFlags.hover": "切换查看GridTracker用户", - "controlPanel.Chat.hover": "切换查看GridTracker在线用户(G)", + "controlPanel.Chat.hover": "查看离线信息(G)", "settings.General.label": "常规", "settings.Lookups.label": "查找", "settings.Audio.label": "音频", @@ -167,21 +167,21 @@ "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", - "settings.OAMS.simplepush.test": "Test", - "settings.OAMS.pushover.enable.label": "Pushover.net Message Forwarding", - "settings.OAMS.pushover.credentials.label": "Pushover Credentials", - "settings.OAMS.pushover.userkey.label": "User Key", - "settings.OAMS.pushover.token.label": "API Token", - "settings.OAMS.pushover.test": "Test", - "settings.OAMS.forward.chat": "Forward Chat Messages", - "settings.OAMS.forward.roster": "Forward Roster Alerts", + "settings.OAMS.simplepush.enable.label": "简单推送 .io消息 转发", + "settings.OAMS.simplepush.apikey.label": "简单推送 API 钥匙", + "settings.OAMS.simplepush.test": "测试", + "settings.OAMS.pushover.enable.label": "推送 .net 消息转发", + "settings.OAMS.pushover.credentials.label": "推送凭证", + "settings.OAMS.pushover.userkey.label": "User 钥匙", + "settings.OAMS.pushover.token.label": "API 钥匙", + "settings.OAMS.pushover.test": "测试", + "settings.OAMS.forward.chat": "转发聊天消息", + "settings.OAMS.forward.roster": "转发名单提醒", "settings.Logbook.label": "日志", "settings.Update.label": "更新", "settings.About.label": "关于", "settings.general.AppStatus.label": "应用软件状态", - "settings.general.AppStatus.status": "WSJT-X或JTDX均未运行", + "settings.general.AppStatus.status": "WSJT-X或JTDX均未运行.", "settings.general.UDP.Messages.label": "接收UDP数据", "settings.general.UDP.Multicast.label": "组播?", "settings.general.UDP.IP.label": "IP", @@ -199,7 +199,7 @@ "settings.general.Distance.dg": "度", "settings.general.DecodeWaterfall.label": "右下角信息栏", "settings.general.CheckNewVersion.label": "检查新版本", - "settings.general.Language.label": "语言", + "settings.general.Language.label": "语言(重新启动)", "settings.general.ClearAllSettings.label": "清除所有设置!", "settings.general.ClearSettingSure.label": "是的,我肯定!", "settings.general.ExportSettings.label": "导出设置", @@ -212,10 +212,10 @@ "settings.lookup.Username.label": "用户名", "settings.lookup.Password.label": "密码", "settings.lookup.QRZTest": "测试", - "settings.lookup.AddData.label": "将寻找得到的资料增加至QSO日志纪录中", - "settings.lookup.AddData.hover": "当完成一个QSO时... 增加来自查找得到的额外数据", - "settings.lookup.AddGrid.label": "如果缺少QSO网格则增加查找到的网格数据", - "settings.lookup.AddGrid.hover": "如果缺少QSO网格则增加查找到的网格数据", + "settings.lookup.AddData.label": "将寻找得到的资料增加至通联日志纪录中", + "settings.lookup.AddData.hover": "当完成一个通联时... 增加来自查找得到的额外数据", + "settings.lookup.AddGrid.label": "如果缺少通联网格则增加查找到的网格数据", + "settings.lookup.AddGrid.hover": "如果缺少通联网格则增加查找到的网格数据", "settings.lookup.OpenOnTx.label": "在传输时打开查找", "settings.lookup.OpenOnTx.hover": "发送时打开查找窗口", "settings.lookup.CloseOnLog.label": "记录日志后关闭查找", @@ -239,20 +239,20 @@ "settings.audio.Speech.Phonetics.hover": "以语音方式播出呼号和网格", "settings.audio.Device.label": "音频播放设备", "settings.audio.File.Volume.label": "音频文件音量", - "settings.audio.QSOLogEventFile.label": "QSO日志记录通知音频", - "settings.logbook.callsigns.hover": "QSO日志以仅包含这些呼号的数据(逗号分隔)", + "settings.audio.QSOLogEventFile.label": "通联日志记录通知音频", + "settings.logbook.callsigns.hover": "通联日志以仅包含这些呼号的数据(逗号分隔)", "settings.logbook.callsigns.label": "过滤通联呼号", "settings.logbook.callsigns.enable": "启用?", "settings.logbook.callsigns.callsigns": "呼号(可多选)", - "settings.logbook.date.hover": "在此日期之前过滤日志QSO", + "settings.logbook.date.hover": "在此日期之前过滤通联日志", "settings.logbook.date.label": "通联日期", "settings.logbook.date.enable": "启用?", - "settings.logbook.date.date": "Date", - "settings.logbook.date.time": "Time", + "settings.logbook.date.date": "日期", + "settings.logbook.date.time": "时间", "settings.logbook.apply.hover": "应用更改并重新导入日志", "settings.logbook.apply.label": "应用更改", "settings.grids.reset.title": "网格颜色", - "settings.grids.reset.hover": "将Grid网格颜色重置为默认值", + "settings.grids.reset.hover": "将网格颜色重置为默认值", "settings.grids.reset.label": "重置颜色", "settings.grids.QSO.label": "QSO/曾经通联", "settings.grids.QSL.label": "QSL/已经确认", @@ -311,7 +311,7 @@ "settings.logging.tableheader.test": "测试", "settings.logging.tableheader.result": "结果", "settings.logging.gridtracker.source": "GridTracker", - "settings.logging.gridtracker.details": "GridTracker QSO日志文件", + "settings.logging.gridtracker.details": "GridTracker 通联日志文件", "settings.logging.LocalFiles.source": "本地文件(s)", "settings.logging.LocalFiles.details.add": "添加日志文件", "settings.logging.LocalFiles.details.noFiles": "未选择日志文件", @@ -376,7 +376,7 @@ "settings.callroster.AlwaysOnTop.label": "窗口始终在最上层", "settings.callroster.AlwaysOnTop.hover": "将呼叫列表置于其他窗口之上", "settings.callroster.MaxAge.label": "呼叫列表最大时效", - "settings.callroster.MultiRig.label": "在QSO回复时", + "settings.callroster.MultiRig.label": "在通联回复时", "settings.callroster.MultiRig.HaltTx.label": "在所有其他实例上停止发送", "settings.callroster.MultiRig.SwitchView.label": "将视图切换到传输实例", "settings.callroster.AudioAlert.label": "开启声音警报", @@ -409,8 +409,8 @@ "settings.alerts.AudioAlert.Exceptions.label": "例外情况", "settings.alerts.AudioAlert.Exceptions.CQOnly": "仅限CQ", "settings.alerts.AudioAlert.Exceptions.ReqGrid": "需要网格", - "settings.alerts.AudioAlert.Exceptions.MinDB": "最小dB", - "settings.alerts.AudioAlert.Exceptions.MaxDT": "最大DT", + "settings.alerts.AudioAlert.Exceptions.MinDB": "最小分贝", + "settings.alerts.AudioAlert.Exceptions.MaxDT": "最大时差", "settings.alerts.AudioAlert.Exceptions.MinFreq": "最低频率", "settings.alerts.AudioAlert.Exceptions.MaxFreq": "最高频率", "settings.alerts.AudioAlert.Exceptions.NotMyDXCC": "不是我的DXCC", @@ -426,7 +426,7 @@ "settings.alerts.CustomAlerts.new.repeat.label": "重复", "settings.alerts.CustomAlerts.new.type.callsign.exact": "呼号(准确)", "settings.alerts.CustomAlerts.new.type.callsign.partial": "呼号(局部)", - "settings.alerts.CustomAlerts.new.type.callsign.regex": "呼号(正则表达式)", + "settings.alerts.CustomAlerts.new.type.callsign.regex": "呼号(匹配)", "settings.alerts.CustomAlerts.new.type.gridsquare": "网格", "settings.alerts.CustomAlerts.new.type.QRZ": "QRZ", "settings.alerts.CustomAlerts.new.notify.textToSpeech": "文本朗读", @@ -437,15 +437,15 @@ "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": "启用定位", "settings.OAMS.spotting.enable.hover": "通过OAMS网络发送和接收现场报告", - "settings.OAMS.BandActivity.enable.label": "Band Activity", - "settings.OAMS.BandActivity.enable.hover": "Receive Band Activity Reports through the OAMS network", - "settings.OAMS.BandActivity.neighbor.enable.label": "Neighboring Grids", - "settings.OAMS.BandActivity.neighbor.enable.hover": "Include your 8 neighboring grids in report", + "settings.OAMS.BandActivity.enable.label": "波段活动", + "settings.OAMS.BandActivity.enable.hover": "通过OAMS网络接收波段活动报告", + "settings.OAMS.BandActivity.neighbor.enable.label": "相邻网格", + "settings.OAMS.BandActivity.neighbor.enable.hover": "在报告中包括您的8个相邻网格", "settings.OAMS.message.newAlert.label": "新消息警报", "settings.OAMS.message.newAlert.hover": "收到新消息时发出警报。", "settings.OAMS.message.newAlert.none": "None", @@ -466,7 +466,7 @@ "settings.OAMS.message.awayMode": "离开模式", "settings.OAMS.message.NotAway": "不离开", "settings.OAMS.message.AmAway": "离开", - "settings.OAMS.message.awayText": "Away Text", + "settings.OAMS.message.awayText": "离开文本", "settings.about.AppVersion": "GridTracker", "settings.about.Brief": "GridTracker是一个以易于使用的界面呈现的业余无线电信息仓库", "settings.about.FeatureList1": "来自实时通联数据解码", @@ -475,7 +475,7 @@ "settings.about.FeatureList4": "天气", "settings.about.FeatureList5": "当前的太阳和空间条件和更多!", "settings.about.HomepageLink": "了解更多关于", - "settings.about.Copyright": "版权所有;2023 GridTracker.org", + "settings.about.Copyright": "版权所有 © 2023 GridTracker.org", "alertPopup.title": "新警报!!!", "alertPopup.dismiss": "解除", "updatePopup.newUpdate": "GridTracker已有新的版本!", @@ -507,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": "", @@ -552,43 +552,44 @@ "roster.secondary.wanted.callsign": "呼号", "roster.secondary.wanted.grid": "网格", "roster.secondary.wanted.dxcc": "DXCC", - "roster.secodnary.wanted.qrz": "QRZ", + "roster.secondary.wanted.qrz": "QRZ", "roster.secondary.wanted.wpx": "WPX", "roster.secondary.wanted.pota": "POTA", "roster.secondary.wanted.OAMS": "OAMS", - "roster.secondary.wanted.cqzone": "CQz", - "roster.secondary.wanted.ituzone": "ITUz", - "roster.secondary.wanted.state": "状态", + "roster.secondary.wanted.cqzone": "CQ分区", + "roster.secondary.wanted.ituzone": "ITU分区", + "roster.secondary.wanted.regex": "呼号匹配", + "roster.secondary.wanted.state": "美国州", "roster.secondary.wanted.marathon": "马拉松", - "roster.secondary.wanted.county": "县", - "roster.secondary.wanted cont": "续", + "roster.secondary.wanted.county": "美国县", + "roster.secondary.wanted.cont": "洲大陆", "roster.exceptions.label": "例外情况", "roster.secondary.exceptions.cqOnly": "仅限CQ", "roster.secondary.exceptions.hasGrid": "有网格", - "roster.secondary.exceptions.minDB": "最小dB", - "roster.secondary.exceptions.maxDT": "最大DT", + "roster.secondary.exceptions.minDB": "最小分贝", + "roster.secondary.exceptions.maxDT": "最大时差", "roster.secondary.exceptions.minFreq": "最低频率", "roster.secondary.exceptions.maxFreq": "最高频率", "roster.secondary.exceptions.usesLoTW": "在用LoTW", "roster.secondary.exceptions.spottedMe": "发报自己", - "roster.secondary.execptions.noMyDXCC": "我不需要的DXCC", - "roster.secondary.execptions.onlyMyDXCC": "我需要的DXCC", + "roster.secondary.exceptions.noMyDXCC": "我不需要的DXCC", + "roster.secondary.exceptions.onlyMyDXCC": "我需要的DXCC", "roster.secondary.exceptions.useseQSL": "在用eQSL", "roster.secondary.exceptions.usesOQRS": "在用OQRS", "roster.secondary.exceptions.allOnlyNew": "仅限新呼号", - "roster.secondary.exceptions.wantRRCQ": "RR73 as CQ", - "roster.secondary.exceptions.noUnknownDXCC": "No Unknown DXCC", + "roster.secondary.exceptions.wantRRCQ": "RR73当作CQ", + "roster.secondary.exceptions.noUnknownDXCC": "禁止不明DXCC", "roster.secondary.exceptions.noMsg.label": "不包含", "roster.secondary.exceptions.noMsg.hover": "不包含解码...", - "roster.secondary.exceptions.onlyMsg.label": "只包含", - "roster.secondary.exceptions.onlyMsg.hover": "仅包含解码...", - "roster.secondary.excpetions.regex.label": "正则表达式", - "roster.secondary.exceptions.regex.hover": "调用符号正则表达式", + "roster.secondary.exceptions.onlyMsg.label": "仅限", + "roster.secondary.exceptions.onlyMsg.hover": "仅限包含的解码...", + "roster.secondary.exceptions.regex.label": "呼号匹配", + "roster.secondary.exceptions.regex.hover": "调用呼号匹配", "roster.secondary.instances.label": "实例", - "roster.ignores.label": "忽視", + "roster.ignores.label": "忽略呼号", "roster.close": "关闭", - "roster.watcher.label": "观察者", - "roster.add.watcher.label": "添加观察者", + "roster.watcher.label": "监察", + "roster.add.watcher.label": "添加监察", "COMMENT_gt_stats.html": "", "stats.title": "日志数据统计", "stats.tabs.logbook": "日志", @@ -596,10 +597,10 @@ "stats.tabs.DXCCs": "DXCCs", "stats.tabs.CQZones": "CQ分区", "stats.tabs.ITUZones": "ITU分区", - "stats.tabs.WASWAC": "WAC/WAS", + "stats.tabs.WASWAC": "洲大陆/美国州", "stats.tabs.live": "实时", "stats.noDecodes": "还没有解码", - "stats.viewing": "Viewing", + "stats.viewing": "检视", "COMMENT_adif.js": "", "adif.TestResult.invalid": "测试失败", "adif.TestResult.error": "未知错误", @@ -629,9 +630,9 @@ "adif.UnknownCall": "未知
呼号", "adif.QTHNickname": "需要
QTH昵称", "adif.UnknownError": "未知
错误", - "adif.FaileQSLCreds": "保存失败 eQSL.cc (credentials)", - "adif.FaileQSLNick": "保存失败 eQSL.cc (nickname)", - "adif.FaileQSLDupe": "保存失败 eQSL.cc (dupe)", + "adif.FaileQSLCreds": "保存失败 eQSL.cc (认证)", + "adif.FaileQSLNick": "保存失败 eQSL.cc (昵称)", + "adif.FaileQSLDupe": "保存失败 eQSL.cc (重复)", "adif.LoggedeQSL": "已保存到 eQSL.cc", "adif.FailedeQSL": "保存失败 eQSL.cc (?)", "adif.Offline": "当前
离线", @@ -646,10 +647,10 @@ "adif.CloudLogAPIKey": "API 密匙无效", "adif.CloudLogLogged": "已保存到 Cloudlog", "adif.CloudLogFailed": "保存失败 Cloudlog", - "adif.QRZFailedAlert": "将QSO上传到QRZ.com时出错", + "adif.QRZFailedAlert": "将通联上传到QRZ.com时出错", "adif.QRZFailed": "保存失败 QRZ.com", "adif.QRZLogged": "已保存到 QRZ.com", - "adif.QRZNoResponse": "将QSO上传到QRZ.com时出错(无响应)", + "adif.QRZNoResponse": "将通联上传到QRZ.com时出错(无响应)", "adif.ClubLogLogged": "已保存到 ClubLog.org", "adif.HRDLogNetLogged": "已保存到 HRDLOG.net", "adif.HRDLogNetFailed": "保存失败 HRDLOG.net", @@ -657,11 +658,11 @@ "alerts.addNew.Added": "增加", "alerts.addNew.SelectFile": "选择文件!", "alerts.addNew.InvalidCall": "无效的呼号", - "alerts.addnew.Duplicate": "Duplicate!", + "alerts.addnew.Duplicate": "重复!", "alerts.callsign.speech": "呼号", "alerts.callsign.popup": "寻找中", - "alerts.gridsquare.speech": "Grid 网格", - "alerts.gridsquare.popup": "Grid 网格", + "alerts.gridsquare.speech": "网格", + "alerts.gridsquare.popup": "网格", "alerts.QRZ.speech": "呼叫中", "alerts.QRZ.popup": "QRZ", "alerts.AlertPop.Type": "类型", @@ -671,18 +672,18 @@ "alerts.AlertPop.Filename": "文件名", "alerts.AlertPop.Alerted": "已提醒", "alerts.AlertPop.LastMessage": "最后一条消息", - "alerts.AlertPop.When": "When", + "alerts.AlertPop.When": "当", "alerts.AlertPop.Yes": "是", "alerts.AlertPop.No": "否", "alerts.AlertPop.Gathering": "收集警报", "alerts.TypesArray.CallExact": "呼号 (标准)", - "alerts.TypesArray.Grid": "Grid", + "alerts.TypesArray.Grid": "网格", "alerts.TypesArray.QRZ": "QRZ", "alerts.TypesArray.CallPartial": "呼号 (局部)", - "alerts.TypesArray.CallRegex": "呼号 (正则表达式)", + "alerts.TypesArray.CallRegex": "呼号 (匹配)", "alerts.ValueArray.AudioFile": "音频文件", - "alerts.ValueArray.TextToSpeech": "TTS", - "alerts.ValueArray.PopUp": "PopUp", + "alerts.ValueArray.TextToSpeech": "朗读", + "alerts.ValueArray.PopUp": "弹出", "alerts.ValueArray.MapCenter": "地图中心", "alerts.RepeatArray.No": "否", "alerts.RepeatArray.Once": "一次", @@ -695,7 +696,7 @@ "alerts.Display.Filename": "文件名", "alerts.Display.Alerted": "已提醒", "alerts.Display.LastMessage": "最后一条消息", - "alerts.Display.When": "When", + "alerts.Display.When": "当", "alerts.Display.Reset": "重置", "alerts.Display.Delete": "删除", "alerts.ClassicWords.callsign": "呼号", @@ -706,7 +707,7 @@ "alerts.ClassicWords.State": "美国", "COMMENT_callsigns.js": "", "callsigns.Downloading": "下载中...", - "callsigns.never": "Never", + "callsigns.never": "从不", "callsigns.processing": "处理中...", "COMMENT_gt.js": "", "gt.gridView.live": "实时数据", @@ -725,30 +726,30 @@ "gt.timeoutSetUdpPort": "正在等待消息...", "gt.setUdpPort": "...设置中...", "gt.changeGridDecay": "没有衰减", - "gt.spotTable.RXSpot": "RX Spot", + "gt.spotTable.RXSpot": "接收 Spot", "gt.spotTable.Age": "距今", - "gt.spotTable.db": "dB", - "gt.spotTable.Call": "被呼叫", + "gt.spotTable.db": "分贝", + "gt.spotTable.Call": "呼号", "gt.spottable.Dxcc": "DXCC", - "gt.spotTable.Grid": "Grid", + "gt.spotTable.Grid": "网格", "gt.spotTable.Freq": "频率", "gt.spotTable.Band": "波段", "gt.spotTable.Mode": "模式", - "gt.newCallList.Call": "被呼叫", + "gt.newCallList.Call": "呼号", "gt.newCallList.Freq": "频率", "gt.newCallList.Sent": "发射", "gt.newCallList.Rcvd": "接收", "gt.newCallList.Station": "主叫", "gt.newCallList.Mode": "模式", "gt.newCallList.Band": "波段", - "gt.newCallList.QSL": "QSL", + "gt.newCallList.QSL": "确认", "gt.newCallList.LastMsg": "备注信息", "gt.newCallList.DXCC": "DXCC", "gt.newCallList.Time": "时间", "gt.newCallList.LoTW": "LoTW", "gt.newCallList.eQSL": "eQSL", "gt.newCallList.OQRS": "OQRS", - "gt.TitleInfo.GridTracker": "Grid网格追踪助手", + "gt.TitleInfo.GridTracker": "GridTracker网格追踪助手", "gt.TitleInfo.Band": "波段:", "gt.TitleInfo.Mode": "模式:", "gt.TitleInfo.Worked": "已通联", @@ -783,8 +784,8 @@ "gt.WSJTMessage.Decode": "解码", "gt.WSJTMessage.DecodedMsg": "解码信息", "gt.WSJTMessage.Time": "时间", - "gt.WSJTMessage.dB": "dB", - "gt.WSJTMessage.DT": "DT", + "gt.WSJTMessage.dB": "分贝", + "gt.WSJTMessage.DT": "时差", "gt.WSJTMessage.Freq": "频率", "gt.WSJTMessage.Mode": "模式", "gt.WSJTMessage.Message": "信息", @@ -795,34 +796,34 @@ "gt.importSettings.Mismatch": "设置版本不匹配!", "gt.callsignBox.title": "呼号和DXCC字头", "gt.callsignBox.callsign": "呼号", - "gt.callsignBox.Grid": "Grid", + "gt.callsignBox.Grid": "网格", "gt.callsignBox.DXCC": "DXCC", "gt.callsignBox.CQ": "CQ", "gt.callsignBox.ITU": "ITU", "gt.callsignBox.Flag": "国旗", - "gt.callsignBox.QSO": "QSO", - "gt.callsignBox.QSL": "QSL", - "gt.callsignBox.When": "When", + "gt.callsignBox.QSO": "通联", + "gt.callsignBox.QSL": "确认", + "gt.callsignBox.When": "当", "gt.callsignBox.LoTW": "LoTW", "gt.callsignBox.eQSL": "eQSL", "gt.callsignBox.OQRS": "OQRS", - "gt.callsignBox.Name": "Name", - "gt.callsignBox.Calls": "Calls", + "gt.callsignBox.Name": "名称", + "gt.callsignBox.Calls": "呼号", "gt.qsoPage.head": "日志记录数量", "gt.qsoPage.Station": "站台", "gt.qsoPage.Grid": "网格", "gt.qsoPage.Band": "波段", "gt.qsoPage.Mode": "模式", - "gt.qsoPage.QSL": "QSL", + "gt.qsoPage.QSL": "确认", + "gt.qsoPage.Sent": "我收对方", + "gt.qsoPage.Rcvd": "对方收我", "gt.qsoPage.DXCC": "DXCC", - "gt.qsoPage.Sent": "Sent", - "gt.qsoPage.Rcvd": "Rcvd", "gt.qsoPage.Flag": "国旗", - "gt.qsoPage.When": "When", + "gt.qsoPage.When": "当", "gt.qsoPage.LoTW": "LoTW", "gt.qsoPage.eQSL": "eQSL", "gt.qsoPage.OQRS": "OQRS", - "gt.dxccBox.Worked": "通联过的", + "gt.dxccBox.Worked": "已通联", "gt.dxccBox.Name": "名称", "gt.dxccBox.Flag": "国旗", "gt.dxccBox.DXCC": "DXCC", @@ -831,7 +832,7 @@ "gt.CQZoneBox.Worked": "通联过的 CQ分区", "gt.ITUZoneBox.Worked": "通联过的 ITU分区", "gt.WASWACBox.WAC": "通联过的所有大洲", - "gt.WASWACBox.WAS": "通联过的所有州", + "gt.WASWACBox.WAS": "通联过的所有美国州", "gt.displayItemsList.Worked": "通联过的", "gt.displayItemsList.Confirmed": "已确认的", "gt.displayItemsList.Needed": "需要的", @@ -853,12 +854,11 @@ "gt.awardNames.WAS": "美国各州", "gt.awardNames.USC": "美国各县", "gt.awardNames.WPX": "前缀", - "gt.logbook.title": "Logbook", - "gt.logbook.scoreCard": "Score Card", + "gt.logbook.title": "日志", + "gt.logbook.scoreCard": "单项统计表", "gt.logbook.callsign": "呼号", - "gt.logbook.firstContact": "第一歌通联的", - "gt.logbook.firstContact": "第一歌通联的2", - "gt.logbook.lastContact": "最后一个通联的", + "gt.logbook.firstContact": "第一个通联", + "gt.logbook.lastContact": "最后一个通联", "gt.logbook.topScore": "最高得分", "gt.logbook.worked": "通联过的", "gt.logbook.confirmed": "已确认的", @@ -873,13 +873,13 @@ "gt.GTUsers": "GT用户", "gt.GTUsersOnline": "已运行的GridTracker工作站
立即联机", "gt.scorecardError": "生成统计信息时出错
请截屏并发送至team@gridtracker.org", - "gt.stationsTable.Call": "被呼叫", - "gt.stationsTable.Grid": "Grid", + "gt.stationsTable.Call": "呼号", + "gt.stationsTable.Grid": "网格", "gt.stationsTable.Sent": "发射", "gt.stationsTable.Rcvd": "接收", "gt.stationsTable.Mode": "模式", "gt.stationsTable.Band": "波段", - "gt.stationsTable.QSL": "QSL", + "gt.stationsTable.QSL": "确认", "gt.stationsTable.Comments": "备注", "gt.stationsTable.DXCC": "DXCC", "gt.stationsTable.Time": "时间", @@ -899,7 +899,7 @@ "gt.bandActivity.Rx": "接收:", "gt.bandActivity.NoData": "..还没有数据传入..", "gt.N1MMAlert": "使用相同的设置启用了N1MM Logger+,禁用了GridTracker N1MM记录器", - "gt.NoLocationAlert": "位置不可用!启动WSJT-X/JTDX或在设置中输入Grid网格", + "gt.NoLocationAlert": "位置不可用!启动WSJT-X/JTDX或在设置中输入网格", "gt.validate.Valid": "有效的!", "gt.validate.Invalid": "无效的!", "gt.NewVersion.Release": "新版本", @@ -907,11 +907,11 @@ "gt.newVersion.Text2": "可供下载
现在去下载?", "gt.GetVoices.title": "选择语音", "gt.GetAudioDev.title": "选择声卡", - "gt.SpotMaxAge": "最大寿命:", + "gt.SpotMaxAge": "最大时效:", "gt.tqslPermissionError": "由于操作系统权限,无法访问LoTW TrustedQSL(TQSL)\n此会话已禁用登录到LoTW \n如果问题仍然存在,请以管理员身份运行或允许对GridTracker进行文件访问", "gt.startupTable.versionCheck": "已完成版本检查", "gt.startupTable.loadi18n": "载入区域信息", - "gt.startupTable.qsoBackup": "QSO备份已初始化", + "gt.startupTable.qsoBackup": "通联备份已初始化", "gt.startupTable.callsigns": "呼号服务已初始化", "gt.startupTable.mapSettings": "地图设置已初始化", "gt.startupTable.loadMap": "载入地图", @@ -943,12 +943,12 @@ "gt.lookup.lookingUp1": "先前查找 ", "gt.lookup.lookingUp2": "请稍等...", "gt.callookDX1": "C A L L O O K", - "gt.callookDX2": "NO-NONSENSE AMATEUR RADIO U.S.A. CALLSIGN LOOKUPS", - "gt.callookDX3": "are limited to United States and United States Territories Only", - "gt.callookDX4": "呼号", - "gt.callookDX5": "请求来自", - "gt.callookDX6": "您可能想考虑使用QRZ。com,他有免费服务,为大多数呼号提供有限的数据查询功能", - "gt.callookDX7": "付费会员的详细信息", + "gt.callookDX2": "严肃的美国业余无线电呼号查询", + "gt.callookDX3": "请求来自", + "gt.callookDX4": "仅限于美国和美国领土", + "gt.callookDX5": "呼号", + "gt.callookDX6": "您可能想考虑使用QRZ.com付费会员的详细信息", + "gt.callookDX7": "他有免费服务, 为大多数呼号提供有限的数据查询功能", "gt.QRZhamQTH.valid": "有效的", "gt.QRZhamQTH.invalid": "无效响应", "gt.QRZhamQTH.error": "未知错误", @@ -966,9 +966,9 @@ "gt.lookup.azmuth": "方位角", "gt.lookup.cachedRecord": "缓存的记录", "gt.lookup.genMessages": "生成消息(JTDX无效)", - "gt.makeYesNo.yes": "Yes", - "gt.makeYesNo.no": "No", - "gt.lookup.acks": "GridTracker would like to acknowledge", + "gt.makeYesNo.yes": "确定", + "gt.makeYesNo.no": "否", + "gt.lookup.acks": "GridTracker 想要感谢", "gt.lookup.worked": "已通联", "gt.lookup.confirmed": "已确认", "gt.lookup.lastQSO": "最后通联", @@ -976,7 +976,7 @@ "gt.documents.error2": "文件夹\r\n权限受限,GT无法继续", "gt.spots.refreshing": "...刷新中...", "gt.spots.noTX": "最近没有发射", - "gt.spots.refresh": "剩余刷新:", + "gt.spots.refresh": "刷新:", "gt.spots.count": "Spots:", "gt.spots.maxAge": "最大时效:", "gt.crScript.enabled": "呼叫列表启动", @@ -987,7 +987,7 @@ "gtws.corrupt": "接收的信息已损坏", "gtws.awaySent": "离线消息", "COMMENT_roster.js": "", - "roster.process.Decode": "解码众", + "roster.process.Decode": "解码中", "roster.process.Receive": "接收中", "roster.process.Transmit": "发射中", "roster.award.Select": "选择奖状", @@ -1005,17 +1005,18 @@ "roster.ignore.DXCCs": "DXCCs", "roster.ignore.CQZones": "CQ分区", "roster.ignore.ITUZones": "ITU分区", - "roster.menu.Settings": "Settings", + "roster.menu.Settings": "设置", "roster.menu.HideControls": "隐藏控件栏", "roster.menu.ShowControls": "显示控件栏", "roster.menu.CompactMode": "紧凑模式", "roster.menu.RosterMode": "列表模式", "roster.menu.Lookup": "查找", "roster.menu.GenMesg": "生成信息", + "roster.menu.AimRotator": "瞄准名单", "roster.menu.IgnoreCall": "忽略呼叫", "roster.menu.Realtime": "实时", - "roster.menu.MoveLeft": "向左移动列", - "roster.menu.MoveRight": "向右移动列", + "roster.menu.MoveLeft": "列向左移动", + "roster.menu.MoveRight": "列向右移动", "roster.menu.ClearCallIgnore": "清除已忽略的呼叫", "roster.menu.ClearIgnore": "清除忽略", "roster.menu.ClearCQFromDXCC": "从DXCC中清除CQ", @@ -1038,7 +1039,7 @@ "roster.AwardTypes.cont52band": "每个波段5个大陆", "roster.AwardTypes.cqz": "CQ分区", "roster.AwardTypes.dxcc": "DXCC", - "roster.AwardTypes.grids": "Grids", + "roster.AwardTypes.grids": "网格", "roster.AwradTypes.numsfx": "呼叫区域+后缀", "roster.AwardTypes.px": "前缀", "roster.AwardTypes.pxa": "前缀", @@ -1056,7 +1057,7 @@ "rosterFilter.POTA.Unknown": "未知的公园", "COMMENT_rosterColumns.js": "", "rosterColumns.County.title": "匹配到哪多个县,单击以进行完整查找", - "rosterColumns.LoTW.NoUpdate": "尚未更新中的QSO", + "rosterColumns.LoTW.NoUpdate": "尚未更新的通联", "rosterColumns.LoTW.LastUpdate": "最后上传 ", "rosterColumns.OAMS.user": "非广播消息用户", "rosterColumns.Wanted.cont": "大洲", @@ -1064,11 +1065,12 @@ "rosterColumns.Wanted.ituz": "ITU分区", "rosterColumns.Wanted.dxcc": "DXCC", "rosterColumns.Wanted.dxccMarathon": "马拉松DXCC", - "rosterColumns.Wanted.cqzMarathon": "马拉松CQ分区", + "rosterColumns.Wanted.cqzMarathon": "马拉松 CQ分区", "rosterColumns.Wanted.state": "美国州", - "rosterColumns.Wanted.grid": "Grid", + "rosterColumns.Wanted.grid": "网格", "rosterColumns.Wanted.cnty": "美国县", "rosterColumns.Wanted.wpx": "WPX", + "rosterColumns.Wanted.regex": "呼号匹配", "rosterColumns.Wanted.call": "呼号", "rosterColumns.Wanted.oams": "OAMS", "rosterColumns.Wanted.pota": "POTA", diff --git a/package.nw/i18n/en.json b/package.nw/i18n/en.json index ba3f587..9edc7c9 100644 --- a/package.nw/i18n/en.json +++ b/package.nw/i18n/en.json @@ -575,7 +575,7 @@ "roster.secondary.exceptions.onlyMyDXCC": "Only My DXCC", "roster.secondary.exceptions.useseQSL":" Uses eQSL", "roster.secondary.exceptions.usesOQRS": "Uses OQRS", - "roster.secondary.exceptions.allOnlyNew": "Only New Calls", + "roster.secondary.exceptions.allOnlyNew": "New Calls", "roster.secondary.exceptions.wantRRCQ": "RR73 as CQ", "roster.secondary.exceptions.noUnknownDXCC": "No Unknown DXCC", "roster.secondary.exceptions.noMsg.label": "No", diff --git a/package.nw/i18n/es.json b/package.nw/i18n/es.json index a79b481..fe09267 100644 --- a/package.nw/i18n/es.json +++ b/package.nw/i18n/es.json @@ -574,7 +574,7 @@ "roster.secondary.exceptions.onlyMyDXCC": "Solo Mi DXCC", "roster.secondary.exceptions.useseQSL": "Usa eQSL", "roster.secondary.exceptions.usesOQRS": "Usa OQRS", - "roster.secondary.exceptions.allOnlyNew": "Solo Nuevas Llamadas", + "roster.secondary.exceptions.allOnlyNew": "Nuevas Llamadas", "roster.secondary.exceptions.wantRRCQ": "RR73 como CQ", "roster.secondary.exceptions.noUnknownDXCC": "No DXCC Desconocido", "roster.secondary.exceptions.noMsg.label": "Excluir", diff --git a/package.nw/i18n/fr.json b/package.nw/i18n/fr.json index 145b45a..862335e 100644 --- a/package.nw/i18n/fr.json +++ b/package.nw/i18n/fr.json @@ -413,7 +413,7 @@ "settings.alerts.AudioAlert.Exceptions.MinFreq": "Min Freq", "settings.alerts.AudioAlert.Exceptions.MaxFreq": "Max Freq", "settings.alerts.AudioAlert.Exceptions.NotMyDXCC": "Pas mon DXCC", - "settings.alerts.AudioAlert.Exceptions.OnlyMyDXCC": "Seulement mon DXCC", + "settings.alerts.AudioAlert.Exceptions.OnlyMyDXCC": "Juste mon DXCC", "settings.alerts.AudioAlert.Exceptions.NoRoundUp": "Pas de Round-Up", "settings.alerts.AudioAlert.Exceptions.OnlyRoundUp": "Seulement Round-Up", "settings.alerts.AudioAlert.Exceptions.UsesLoTW": "Utilisations LoTW", @@ -572,11 +572,11 @@ "roster.secondary.exceptions.usesLoTW": "Utilise LoTW", "roster.secondary.exceptions.spottedMe": "Je suis repéré", "roster.secondary.exceptions.noMyDXCC": "Pas mon DXCC", - "roster.secondary.exceptions.onlyMyDXCC": "Seulement mon DXCC", + "roster.secondary.exceptions.onlyMyDXCC": "Juste mon DXCC", "roster.secondary.exceptions.useseQSL":" Utilise eQSL", "roster.secondary.exceptions.usesOQRS": "Utilise OQRS", - "roster.secondary.exceptions.allOnlyNew": "Uniquement nouveaux appels", - "roster.secondary.exceptions.wantRRCQ": "RR73 as CQ", + "roster.secondary.exceptions.allOnlyNew": "Nouveaux appels", + "roster.secondary.exceptions.wantRRCQ": "RR73 comme CQ", "roster.secondary.exceptions.noUnknownDXCC": " DXCC Inconnu", "roster.secondary.exceptions.noMsg.label": "Non", "roster.secondary.exceptions.noMsg.hover": "Aucun décodeur ne contenant...", diff --git a/package.nw/i18n/it.json b/package.nw/i18n/it.json index 2417cb1..bb2831f 100644 --- a/package.nw/i18n/it.json +++ b/package.nw/i18n/it.json @@ -575,8 +575,8 @@ "roster.secondary.exceptions.onlyMyDXCC": "Solo il mio DXCC", "roster.secondary.exceptions.useseQSL":" Utilizza eQSL", "roster.secondary.exceptions.usesOQRS": "Utilizza OQRS", - "roster.secondary.exceptions.allOnlyNew": "Solo nuove chiamate", - "roster.secondary.exceptions.wantRRCQ": "RR73 as CQ", + "roster.secondary.exceptions.allOnlyNew": "Nuove chiamate", + "roster.secondary.exceptions.wantRRCQ": "RR73 come CQ", "roster.secondary.exceptions.noUnknownDXCC": " DXCC Sconosciuto", "roster.secondary.exceptions.noMsg.label": "No", "roster.secondary.exceptions.noMsg.hover": "Nessun decoder contenente...", diff --git a/package.nw/lib/adif.js b/package.nw/lib/adif.js index c6b9897..9fba4e5 100644 --- a/package.nw/lib/adif.js +++ b/package.nw/lib/adif.js @@ -81,7 +81,7 @@ function findAdiField(row, field) return value; } -function onAdiLoadComplete(adiBuffer, saveAdifFile, adifFileName, newFile) +function onAdiLoadComplete(adiBuffer) { var rawAdiBuffer = ""; if (typeof adiBuffer == "object") rawAdiBuffer = String(adiBuffer); @@ -114,6 +114,7 @@ function onAdiLoadComplete(adiBuffer, saveAdifFile, adifFileName, newFile) { if (activeAdifLogMode) { + // let object = parseADIFRecord(activeAdifArray[x]); var appLoTW_RXQSO = findAdiField(activeAdifArray[x], "APP_LOTW_RXQSO"); if (appLoTW_RXQSO != "") { @@ -191,8 +192,7 @@ function onAdiLoadComplete(adiBuffer, saveAdifFile, adifFileName, newFile) { finalBand = formatBand(Number(findAdiField(activeAdifArray[x], "FREQ"))); } - var finalState = findAdiField(activeAdifArray[x], "STATE").toUpperCase(); - if (finalState.length == 0) finalState = null; + var finalPropMode = findAdiField(activeAdifArray[x], "PROP_MODE").toUpperCase(); var finalSatName = findAdiField(activeAdifArray[x], "SAT_NAME").toUpperCase(); var finalCont = findAdiField(activeAdifArray[x], "CONT").toUpperCase(); @@ -251,6 +251,13 @@ function onAdiLoadComplete(adiBuffer, saveAdifFile, adifFileName, newFile) finalDxcc = Number(callsignToDxcc(finalDXcall)); } + var finalState = findAdiField(activeAdifArray[x], "STATE").toUpperCase(); + if (finalState.length == 0) finalState = null; + else if (finalDxcc > 0) + { + finalState = GT.dxccToCountryCode[finalDxcc] + "-" + finalState; + } + // If my callsign isn't present, it must be for me anyway var finalCqZone = findAdiField(activeAdifArray[x], "CQZ"); @@ -310,7 +317,7 @@ function onAdiLoadComplete(adiBuffer, saveAdifFile, adifFileName, newFile) if (finalDXcall != "") { - addDeDx( + addQSO( finalGrid, finalDXcall, finalDEcall, @@ -320,7 +327,6 @@ function onAdiLoadComplete(adiBuffer, saveAdifFile, adifFileName, newFile) finalMode, finalBand, confirmed, - true, finalRSTrecv, finalDxcc, finalState, @@ -384,7 +390,7 @@ function onAdiLoadComplete(adiBuffer, saveAdifFile, adifFileName, newFile) { if (finalDXcall == GT.appSettings.myCall) { - addDeDx( + addLiveCallsign( finalMyGrid, finalDEcall, finalDXcall, @@ -406,7 +412,7 @@ function onAdiLoadComplete(adiBuffer, saveAdifFile, adifFileName, newFile) } else if (finalDEcall == GT.appSettings.myCall) { - addDeDx( + addLiveCallsign( finalGrid, finalDXcall, "-", @@ -428,7 +434,7 @@ function onAdiLoadComplete(adiBuffer, saveAdifFile, adifFileName, newFile) } else { - addDeDx( + addLiveCallsign( finalGrid, finalDXcall, finalDEcall, @@ -458,8 +464,7 @@ function onAdiLoadComplete(adiBuffer, saveAdifFile, adifFileName, newFile) saveLogSettings(); } - redrawGrids(); - updateCountStats(); + refreshQSOs(); updateLogbook(); if (GT.fromDirectCallNoFileDialog == false) @@ -470,9 +475,6 @@ function onAdiLoadComplete(adiBuffer, saveAdifFile, adifFileName, newFile) GT.fileSelector.value = null; } GT.fromDirectCallNoFileDialog = false; - - updateRosterWorked(); - goProcessRoster(); } function clubLogCallback(buffer, flag, cookie) @@ -497,7 +499,7 @@ function clubLogCallback(buffer, flag, cookie) tryToWriteAdifToDocFolder("clublog.adif", rawAdiBuffer); - onAdiLoadComplete(rawAdiBuffer, true, "clublog.adif", true); + onAdiLoadComplete(rawAdiBuffer); } } } @@ -646,7 +648,7 @@ function lotwCallback(buffer, flag, cookies, url) shouldAppend ); - onAdiLoadComplete(rawAdiBuffer, true, adiFileName, true); + onAdiLoadComplete(rawAdiBuffer); if (url.indexOf("qso_qsl=no") != -1) { @@ -798,7 +800,7 @@ function qrzCallback(buffer, flag) tryToWriteAdifToDocFolder("qrz.adif", htmlString); - onAdiLoadComplete(htmlString, true, "qrz.adif", true); + onAdiLoadComplete(htmlString); } } } @@ -888,7 +890,7 @@ function ValidateText(inputText) function pskCallback(buffer, flag) { GT.fromDirectCallNoFileDialog = true; - onAdiLoadComplete(buffer, false); + onAdiLoadComplete(buffer); } GT.isGettingPsk = false; @@ -1000,7 +1002,7 @@ GT.fileSelector.onchange = function () { if (e.target.error == null) { - onAdiLoadComplete(e.target.result, false); + onAdiLoadComplete(e.target.result); } }; @@ -1117,7 +1119,7 @@ function loadGtQSOLogFile() if (fs.existsSync(GT.qsoLogFile)) { GT.fromDirectCallNoFileDialog = true; - onAdiLoadComplete(fs.readFileSync(GT.qsoLogFile), false); + onAdiLoadComplete(fs.readFileSync(GT.qsoLogFile)); } } @@ -1136,7 +1138,7 @@ function loadLoTWLogFile() if (fs.existsSync(GT.LoTWLogFile) && getFilesizeInBytes(GT.LoTWLogFile) > 0) { GT.fromDirectCallNoFileDialog = true; - onAdiLoadComplete(fs.readFileSync(GT.LoTWLogFile), false); + onAdiLoadComplete(fs.readFileSync(GT.LoTWLogFile)); } else { @@ -1163,7 +1165,7 @@ function loadWsjtLogFile() if (fs.existsSync(GT.workingIniPath + "wsjtx_log.adi")) { GT.fromDirectCallNoFileDialog = true; - onAdiLoadComplete(fs.readFileSync(GT.workingIniPath + "wsjtx_log.adi"), false); + onAdiLoadComplete(fs.readFileSync(GT.workingIniPath + "wsjtx_log.adi")); } } @@ -1353,7 +1355,7 @@ function startupAdifLoadFunction() if (fs.existsSync(GT.startupLogs[i].file)) { GT.fromDirectCallNoFileDialog = true; - onAdiLoadComplete(fs.readFileSync(GT.startupLogs[i].file), false); + onAdiLoadComplete(fs.readFileSync(GT.startupLogs[i].file)); } } catch (e) {} @@ -1862,8 +1864,8 @@ GT.adifLookupMap = { cqzone: "CQZ", ituzone: "ITUZ", email: "EMAIL", - county: "CNTY", - state: "STATE" + state: "STATE", + county: "CNTY" }; function sendToLogger(ADIF) @@ -1878,10 +1880,7 @@ function sendToLogger(ADIF) } var localHash = record.CALL + record.BAND + localMode; - if ( - (!("GRIDSQUARE" in record) || record.GRIDSQUARE.length == 0) && - localHash in GT.liveCallsigns - ) + if ((!("GRIDSQUARE" in record) || record.GRIDSQUARE.length == 0) && localHash in GT.liveCallsigns) { record.GRIDSQUARE = GT.liveCallsigns[localHash].grid.substr(0, 4); } @@ -1951,18 +1950,12 @@ function sendToLogger(ADIF) } if ("GRIDSQUARE" in record && "grid" in lookup) { - if ( - record.GRIDSQUARE.substr(0, 4) == lookup.grid.substr(0, 4) - ) + if (record.GRIDSQUARE.substr(0, 4) == lookup.grid.substr(0, 4)) { record.GRIDSQUARE = lookup.grid; } } - if ( - GT.appSettings.lookupMissingGrid && - "grid" in lookup && - (!("GRIDSQUARE" in record) || record.GRIDSQUARE.length == 0) - ) + if (GT.appSettings.lookupMissingGrid && "grid" in lookup && (!("GRIDSQUARE" in record) || record.GRIDSQUARE.length == 0)) { record.GRIDSQUARE = lookup.grid; } @@ -3218,9 +3211,6 @@ function parseADIFRecord(adif) var line = newLine[0].trim(); // Catch the naughty case of someone sending two records at the same time var record = {}; - // because strings are not escaped for adif.. ie: :'s and <'s .. we have to walk from left to right - // cheesy, but damn i'm tired of parsing things - var x = 0; while (line.length > 0) { while (line.charAt(0) != "<" && line.length > 0) diff --git a/package.nw/lib/callsigns.js b/package.nw/lib/callsigns.js index 9cf021e..f341abe 100644 --- a/package.nw/lib/callsigns.js +++ b/package.nw/lib/callsigns.js @@ -773,25 +773,24 @@ function lookupUsCallsign(object, writeState = false) { object.state = "US-" + results.rows[0].state; } - if (writeState) { - setState(object); + refreshQSOs(); } } object.zipcode = String(results.rows[0].zip); if (object.cnty == null) { let request = GT.Idb.transaction(["lookups"], "readwrite").objectStore("lookups").get(object.DEcall); - request.onsuccess = function (event) { - if (request.result) + let save = false; + if (request.result && object.cnty == null) { object.cnty = request.result.cnty; object.qual = true; + save = true; } - if (object.cnty == null && object.zipcode in GT.zipToCounty) { var counties = GT.zipToCounty[object.zipcode]; @@ -804,30 +803,13 @@ function lookupUsCallsign(object, writeState = false) object.qual = true; } object.cnty = counties[0]; + save = true; } - else + if (writeState && save) { - object.qual = false; - } - - if (writeState) - { - setState(object); + refreshQSOs(); } }; - - request.onerror = function (event) - { - object.qual = false; - if (writeState) - { - setState(object); - } - }; - } - if (writeState) - { - setState(object); } } }, diff --git a/package.nw/lib/gt.js b/package.nw/lib/gt.js index 1f4196d..33ac3da 100644 --- a/package.nw/lib/gt.js +++ b/package.nw/lib/gt.js @@ -68,6 +68,7 @@ GT.conditionsWindowInitialized = false; GT.chatWindowHandle = null; GT.chatWindowInitialized = false; GT.statsWindowHandle = null; +GT.statsWindowInitialized = false; GT.lookupWindowHandle = null; GT.lookupWindowInitialized = false; GT.baWindowHandle = null; @@ -467,6 +468,7 @@ GT.directCallToITUzone = {}; GT.prefixToCQzone = {}; GT.prefixToITUzone = {}; GT.dxccToAltName = {}; +GT.dxccToCountryCode = {}; GT.altNameToDXCC = {}; GT.dxccToADIFName = {}; GT.gridToDXCC = {}; @@ -513,7 +515,6 @@ function initQSOdata() GT.tracker.confirmed.px = {}; GT.tracker.confirmed.cnty = {}; GT.tracker.confirmed.cont = {}; - // Not referenced but included for consistency GT.tracker.confirmed.pota = {}; } @@ -992,69 +993,306 @@ function getWpx(callsign) return String(prefix); } -function setState(details) +GT.qsoRefreshTimer = null; + +function refreshQSOs() { - if (details.state != null && details.state.length > 0) + if (GT.qsoRefreshTimer != null) { - var isDigi = details.digital; + nodeTimers.clearTimeout(GT.qsoRefreshTimer); + } + GT.qsoRefreshTimer = nodeTimers.setTimeout(processQSOs, 500); +} - if (details.state.substr(0, 2) != "US") { details.state = "US-" + details.state; } +function processQSOs() +{ + GT.qsoRefreshTimer = null; + initQSOdata(); + var currentYear = new Date().getFullYear(); + for (let hash in GT.QSOhash) + { + let details = GT.QSOhash[hash]; + let qsoDate = new Date(1970, 0, 1); qsoDate.setSeconds(details.time); + let isCurrentYear = (qsoDate.getFullYear() == currentYear); + let dayAsString = String(parseInt(details.time / 86400)); + let fourGrid = details.grid.substr(0, 4); + let isDigi = details.digital; + let isPhone = details.phone; + + GT.tracker.worked.call[details.DXcall + details.band + details.mode] = true; + GT.tracker.worked.call[details.DXcall] = true; + GT.tracker.worked.call[details.DXcall + details.mode] = true; + GT.tracker.worked.call[details.DXcall + details.band] = true; - GT.tracker.worked.state[details.state + details.band + details.mode] = true; - GT.tracker.worked.state[details.state] = true; - GT.tracker.worked.state[details.state + details.mode] = true; - GT.tracker.worked.state[details.state + details.band] = true; - if (isDigi) + if (isDigi == true) { - GT.tracker.worked.state[details.state + "dg"] = true; - GT.tracker.worked.state[details.state + details.band + "dg"] = true; + GT.tracker.worked.call[details.DXcall + "dg"] = true; + GT.tracker.worked.call[details.DXcall + details.band + "dg"] = true; } - if (details.confirmed) + if (fourGrid != "") { - GT.tracker.confirmed.state[ - details.state + details.band + details.mode - ] = true; - GT.tracker.confirmed.state[details.state] = true; - GT.tracker.confirmed.state[details.state + details.mode] = true; - GT.tracker.confirmed.state[details.state + details.band] = true; + GT.tracker.worked.grid[fourGrid] = true; + GT.tracker.worked.grid[fourGrid + details.mode] = true; + GT.tracker.worked.grid[fourGrid + details.band] = true; + GT.tracker.worked.grid[fourGrid + details.band + details.mode] = true + if (isDigi == true) + { + GT.tracker.worked.grid[fourGrid + "dg"] = true; + GT.tracker.worked.grid[fourGrid + details.band + "dg"] = true; + } + } + + if (details.ituz) + { + GT.tracker.worked.ituz[details.ituz + "|" + details.band + details.mode] = true; + GT.tracker.worked.ituz[details.ituz + "|"] = true; + GT.tracker.worked.ituz[details.ituz + "|" + details.mode] = true; + GT.tracker.worked.ituz[details.ituz + "|" + details.band] = true; + if (isDigi == true) + { + GT.tracker.worked.ituz[details.ituz + "|dg"] = true; + GT.tracker.worked.ituz[details.ituz + "|" + details.band + "dg"] = true; + } + } + + if (details.cqz) + { + GT.tracker.worked.cqz[details.cqz + "|" + details.band + details.mode] = true; + GT.tracker.worked.cqz[details.cqz + "|"] = true; + GT.tracker.worked.cqz[details.cqz + "|" + details.mode] = true; + GT.tracker.worked.cqz[details.cqz + "|" + details.band] = true; + if (isDigi == true) + { + GT.tracker.worked.cqz[details.cqz + "|dg"] = true; + GT.tracker.worked.cqz[details.cqz + "|" + details.band + "dg"] = true; + } + if (isCurrentYear) + { + GT.tracker.worked.cqz[`${details.cqz}-${currentYear}`] = true; + } + } + + if (details.dxcc > 0) + { + var sDXCC = String(details.dxcc); + GT.tracker.worked.dxcc[sDXCC + "|" + details.band + details.mode] = true; + GT.tracker.worked.dxcc[sDXCC + "|"] = true; + GT.tracker.worked.dxcc[sDXCC + "|" + details.mode] = true; + GT.tracker.worked.dxcc[sDXCC + "|" + details.band] = true; + if (isDigi == true) + { + GT.tracker.worked.dxcc[sDXCC + "|dg"] = true; + GT.tracker.worked.dxcc[sDXCC + "|" + details.band + "dg"] = true; + } + if (isCurrentYear) + { + GT.tracker.worked.dxcc[`${sDXCC}-${currentYear}`] = true; + } + } + + if (details.px) + { + GT.tracker.worked.px[details.px + details.band + details.mode] = true; + // store the last one + GT.tracker.worked.px[details.px] = hash; + GT.tracker.worked.px[details.px + details.mode] = true; + GT.tracker.worked.px[details.px + details.band] = true; + if (isDigi == true) + { + GT.tracker.worked.px[details.px + "dg"] = true; + GT.tracker.worked.px[details.px + details.band + "dg"] = true; + } + if (isPhone == true) + { + GT.tracker.worked.px[details.px + "ph"] = true; + GT.tracker.worked.px[details.px + details.band + "ph"] = true; + } + } + + if (details.cont) + { + GT.tracker.worked.cont[details.cont + details.band + details.mode] = true; + // store the last one + GT.tracker.worked.cont[details.cont] = hash; + GT.tracker.worked.cont[details.cont + details.mode] = true; + GT.tracker.worked.cont[details.cont + details.band] = true; + if (isDigi == true) + { + GT.tracker.worked.cont[details.cont + "dg"] = true; + GT.tracker.worked.cont[details.cont + details.band + "dg"] = true; + } + } + + if (details.state) + { + GT.tracker.worked.state[details.state] = true; + GT.tracker.worked.state[details.state + details.mode] = true; + GT.tracker.worked.state[details.state + details.band] = true; + GT.tracker.worked.state[details.state + details.band + details.mode] = true; + if (isDigi) { - GT.tracker.confirmed.state[details.state + "dg"] = true; - GT.tracker.confirmed.state[details.state + details.band + "dg"] = true; - } - } - } - - if (details.cnty != null && details.cnty.length > 0) - { - var isDigi = details.digital; - - GT.tracker.worked.cnty[details.cnty + details.band + details.mode] = true; - GT.tracker.worked.cnty[details.cnty] = true; - GT.tracker.worked.cnty[details.cnty + details.mode] = true; - GT.tracker.worked.cnty[details.cnty + details.band] = true; - if (isDigi) - { - GT.tracker.worked.cnty[details.cnty + "dg"] = true; - GT.tracker.worked.cnty[details.cnty + details.band + "dg"] = true; - } - - if (details.confirmed) - { - GT.tracker.confirmed.cnty[ - details.cnty + details.band + details.mode - ] = true; - GT.tracker.confirmed.cnty[details.cnty] = true; - GT.tracker.confirmed.cnty[details.cnty + details.mode] = true; - GT.tracker.confirmed.cnty[details.cnty + details.band] = true; - if (isDigi) - { - GT.tracker.confirmed.cnty[details.cnty + "dg"] = true; - GT.tracker.confirmed.cnty[details.cnty + details.band + "dg"] = true; + GT.tracker.worked.state[details.state + "dg"] = + GT.tracker.worked.state[details.state + details.band + "dg"] = true; + } + } + + if (details.cnty) + { + GT.tracker.worked.cnty[details.cnty] = true; + GT.tracker.worked.cnty[details.cnty + details.mode] = true; + GT.tracker.worked.cnty[details.cnty + details.band] = true; + GT.tracker.worked.cnty[details.cnty + details.band + details.mode] = true; + + if (isDigi) + { + GT.tracker.worked.cnty[details.cnty + "dg"] = true; + GT.tracker.worked.cnty[details.cnty + details.band + "dg"] = true; + } + } + + if (details.pota) + { + GT.tracker.worked.pota[dayAsString + details.DXcall + details.pota] = true; + GT.tracker.worked.pota[dayAsString + details.DXcall + details.pota + details.mode] = true; + GT.tracker.worked.pota[dayAsString + details.DXcall + details.pota + details.band] = true; + GT.tracker.worked.pota[dayAsString + details.DXcall + details.pota + details.band + details.mode] = true; + if (isDigi == true) + { + GT.tracker.worked.pota[dayAsString + details.DXcall + details.pota + "dg"] = true; + GT.tracker.worked.pota[dayAsString + details.DXcall + details.pota + details.band + "dg"] = true; + } + } + + if (details.confirmed == true) + { + GT.tracker.confirmed.call[details.DXcall + details.band + details.mode] = true; + GT.tracker.confirmed.call[details.DXcall] = true; + GT.tracker.confirmed.call[details.DXcall + details.mode] = true; + GT.tracker.confirmed.call[details.DXcall + details.band] = true; + if (isDigi == true) + { + GT.tracker.confirmed.call[details.DXcall + "dg"] = true; + GT.tracker.confirmed.call[details.DXcall + details.band + "dg"] = true; + } + + if (fourGrid != "") + { + GT.tracker.confirmed.grid[fourGrid + details.band + details.mode] = true; + GT.tracker.confirmed.grid[fourGrid] = true; + GT.tracker.confirmed.grid[fourGrid + details.mode] = true; + GT.tracker.confirmed.grid[fourGrid + details.band] = true; + if (isDigi == true) + { + GT.tracker.confirmed.grid[fourGrid + "dg"] = true; + GT.tracker.confirmed.grid[fourGrid + details.band + "dg"] = true; + } + } + if (details.ituz && details.ituz.length > 0) + { + GT.tracker.confirmed.ituz[details.ituz + "|" + details.band + details.mode] = true; + GT.tracker.confirmed.ituz[details.ituz + "|"] = true; + GT.tracker.confirmed.ituz[details.ituz + "|" + details.mode] = true; + GT.tracker.confirmed.ituz[details.ituz + "|" + details.band] = true; + if (isDigi == true) + { + GT.tracker.confirmed.ituz[details.ituz + "|dg"] = true; + GT.tracker.confirmed.ituz[details.ituz + "|" + details.band + "dg"] = true; + } + } + if (details.cqz && details.cqz.length > 0) + { + GT.tracker.confirmed.cqz[details.cqz + "|" + details.band + details.mode] = true; + GT.tracker.confirmed.cqz[details.cqz + "|"] = true; + GT.tracker.confirmed.cqz[details.cqz + "|" + details.mode] = true; + GT.tracker.confirmed.cqz[details.cqz + "|" + details.band] = true; + if (isDigi == true) + { + GT.tracker.confirmed.cqz[details.cqz + "|dg"] = true; + GT.tracker.confirmed.cqz[details.cqz + "|" + details.band + "dg"] = true; + } + } + + if (details.dxcc > 0) + { + var sDXCC = String(details.dxcc); + GT.tracker.confirmed.dxcc[sDXCC + "|" + details.band + details.mode] = true; + GT.tracker.confirmed.dxcc[sDXCC + "|"] = true; + GT.tracker.confirmed.dxcc[sDXCC + "|" + details.mode] = true; + GT.tracker.confirmed.dxcc[sDXCC + "|" + details.band] = true; + if (isDigi == true) + { + GT.tracker.confirmed.dxcc[sDXCC + "|dg"] = true; + GT.tracker.confirmed.dxcc[sDXCC + "|" + details.band + "dg"] = true; + } + } + + if (details.state) + { + GT.tracker.confirmed.state[details.state] = true; + GT.tracker.confirmed.state[details.state + details.mode] = true; + GT.tracker.confirmed.state[details.state + details.band] = true; + GT.tracker.confirmed.state[details.state + details.band + details.mode] = true; + + if (isDigi) + { + GT.tracker.confirmed.state[details.state + "dg"] = true; + GT.tracker.confirmed.state[details.state + details.band + "dg"] = true; + } + } + + if (details.cnty) + { + GT.tracker.confirmed.cnty[details.cnty] = true; + GT.tracker.confirmed.cnty[details.cnty + details.mode] = true; + GT.tracker.confirmed.cnty[details.cnty + details.band] = true; + GT.tracker.confirmed.cnty[details.cnty + details.band + details.mode] = true; + + if (isDigi) + { + GT.tracker.confirmed.cnty[details.cnty + "dg"] = true; + GT.tracker.confirmed.cnty[details.cnty + details.band + "dg"] = true; + } + } + + if (details.px) + { + GT.tracker.confirmed.px[details.px + details.band + details.mode] = true; + // store the last one + GT.tracker.confirmed.px[details.px] = hash; + GT.tracker.confirmed.px[details.px + details.mode] = true; + GT.tracker.confirmed.px[details.px + details.band] = true; + if (isDigi == true) + { + GT.tracker.confirmed.px[details.px + "dg"] = true; + GT.tracker.confirmed.px[details.px + details.band + "dg"] = true; + } + if (isPhone == true) + { + GT.tracker.confirmed.px[details.px + "ph"] = true; + GT.tracker.confirmed.px[details.px + details.band + "ph"] = true; + } + } + + if (details.cont) + { + GT.tracker.confirmed.cont[details.cont + details.band + details.mode] = true; + // store the last one + GT.tracker.confirmed.cont[details.cont] = hash; + GT.tracker.confirmed.cont[details.cont + details.mode] = true; + GT.tracker.confirmed.cont[details.cont + details.band] = true; + if (isDigi == true) + { + GT.tracker.confirmed.cont[details.cont + "dg"] = true; + GT.tracker.confirmed.cont[details.cont + details.band + "dg"] = true; + } } } } + updateRosterWorked(); + goProcessRoster(); + redrawGrids(); } function isKnownCallsignDXCC(dxcc) @@ -1075,7 +1313,188 @@ function isKnownCallsignUSplus(dxcc) return false; } -function addDeDx( +function addQSO( + finalGrid, + finalDXcall, + finalDEcall, + finalRSTsent, + finalTime, + ifinalMsg, + mode, + band, + confirmed, + finalRSTrecv, + finalDxcc, + finalState, + finalCont, + finalCnty, + finalCqZone, + finalItuZone, + finalVucc = [], + finalPropMode = "", + finalDigital = false, + finalPhone = false, + finalIOTA = "", + finalSatName = "", + finalPOTA = null +) +{ + let hash = ""; + let finalMsg = ifinalMsg.trim(); + if (finalMsg.length > 40) finalMsg = finalMsg.substring(0, 40) + "..."; + + let details = null; + let timeMod = finalTime - (finalTime % 360) + 180; + hash = unique(mode + band + finalDXcall + timeMod); + + let lookupCall = false; + + if (hash in GT.QSOhash) + { + details = GT.QSOhash[hash]; + if (finalGrid.length > 0 && finalGrid != details.grid) + { + // only touch the grid if it's larger than the last grid && the 4wide is the same + if (details.grid.length < 6 && (details.grid.substr(0, 4) == finalGrid.substr(0, 4) || details.grid.length == 0)) + { + details.grid = finalGrid; + } + else if (details.grid.length != 0 && confirmed == true) + { + details.grid = finalGrid; + } + } + + if (finalRSTsent.length > 0) details.RSTsent = finalRSTsent; + if (finalRSTrecv.length > 0) details.RSTrecv = finalRSTrecv; + if (finalCqZone.length > 0) details.cqz = finalCqZone; + if (finalItuZone.length > 0) details.ituz = finalItuZone; + if (details.state != null && finalState != null && details.state != finalState && confirmed == true) + { + details.state = finalState; + } + else if (details.state == null && finalState != null) details.state = finalState; + if (finalDxcc < 1 && details.dxcc > 0) finalDxcc = details.dxcc; + if (finalCont == null && details.cont) finalCont = details.cont; + if (details.cnty != null && finalCnty != null && details.cnty != finalCnty && confirmed == true) + { + details.qual = true; + details.cnty = finalCnty; + } + else if (details.cnty == null && details.cnty != null) details.cnty = finalCnty; + if (finalPropMode.length > 0) details.propMode = finalPropMode; + if (finalVucc.length > 0) details.vucc_grids = finalVucc; + if (finalIOTA.length > 0) details.IOTA = finalIOTA; + if (finalSatName.length > 0) details.satName = finalSatName; + if (finalPOTA) details.pota = finalPOTA; + details.confirmed |= confirmed; + } + else + { + details = {}; + details.grid = finalGrid; + details.RSTsent = finalRSTsent; + details.RSTrecv = finalRSTrecv; + details.msg = "-"; + details.band = band; + details.mode = mode; + details.DEcall = finalDXcall; + details.DXcall = finalDEcall; + details.cqz = finalCqZone; + details.ituz = finalItuZone; + details.delta = -1; + details.time = finalTime; + details.state = finalState; + details.zipcode = null; + details.qso = true; + details.px = null; + details.zone = null; + details.cont = null; + details.cnty = finalCnty; + details.vucc_grids = finalVucc; + details.propMode = finalPropMode; + details.digital = finalDigital; + details.phone = finalPhone; + details.IOTA = finalIOTA; + details.satName = finalSatName; + details.pota = finalPOTA; + details.worked = true; + details.confirmed = confirmed; + } + + if (finalDxcc < 1) finalDxcc = callsignToDxcc(finalDXcall); + details.dxcc = finalDxcc; + + if (details.dxcc > 0 && details.px == null) + { + details.px = getWpx(finalDXcall); + if (details.px) { details.zone = Number(details.px.charAt(details.px.length - 1)); } + } + + var fourGrid = details.grid.substr(0, 4); + + details.cont = finalCont; + if (finalDxcc > 0) + { + details.cont = GT.dxccInfo[finalDxcc].continent; + if (details.dxcc == 390 && details.zone == 1) details.cont = "EU"; + } + + if (details.cnty && confirmed == true) + { + details.qual = true; + } + + if (isKnownCallsignUSplus(finalDxcc)) + { + if (details.state == null && fourGrid.length > 0) + { + if (fourGrid in GT.gridToState && GT.gridToState[fourGrid].length == 1) + { + details.state = GT.gridToState[fourGrid][0]; + } + if (details.state == null) + { + lookupCall = true; + } + } + + if (details.cnty == null) + { + lookupCall = true; + } + else + { + if (!(details.cnty in GT.cntyToCounty)) + { + lookupCall = true; + } + } + } + + if (!details.cqz || details.cqz.length == 0) + { + details.cqz = cqZoneFromCallsign(finalDXcall, details.dxcc); + } + if (!details.ituz || details.ituz.length == 0) + { + details.ituz = ituZoneFromCallsign(finalDXcall, details.dxcc); + } + + if (finalMsg.length > 0) details.msg = finalMsg; + + GT.QSOhash[hash] = details; + + if (lookupCall) + { + if (GT.callsignLookups.ulsUseEnable) + { + lookupUsCallsign(details, true); + } + } +} + +function addLiveCallsign( finalGrid, finalDXcall, finalDEcall, @@ -1102,442 +1521,37 @@ function addDeDx( finalPOTA = null ) { - var currentYear = new Date().getFullYear(); - var qsoDate = new Date(1970, 0, 1); qsoDate.setSeconds(finalTime); - var isCurrentYear = (qsoDate.getFullYear() == currentYear); - var dayAsString = String(parseInt(finalTime / 86400)); - var callsign = null; var rect = null; - var worked = false; - var didConfirm = false; var wspr = mode == "WSPR" ? parseInt(band) * 2 : null; var hash = ""; - var locked = false; var finalMsg = ifinalMsg.trim(); if (finalMsg.length > 40) finalMsg = finalMsg.substring(0, 40) + "..."; - var details = null; - if (isQSO) - { - var timeMod = finalTime - (finalTime % 360) + 180; - hash = unique(mode + band + finalDXcall + timeMod); - - var lookupCall = false; - - if (hash in GT.QSOhash) - { - details = GT.QSOhash[hash]; - if (finalGrid.length > 0 && finalGrid != details.grid) - { - // only touch the grid if it's larger than the last grid && the 4wide is the same - if ( - details.grid.length < 6 && - (details.grid.substr(0, 4) == finalGrid.substr(0, 4) || - details.grid.length == 0) - ) - { - details.grid = finalGrid; - } - } - if (finalRSTsent.length > 0) details.RSTsent = finalRSTsent; - if (finalRSTrecv.length > 0) details.RSTrecv = finalRSTrecv; - if (finalCqZone.length > 0) details.cqz = finalCqZone; - if (finalItuZone.length > 0) details.ituz = finalItuZone; - if (finalState != null) details.state = finalState; - if (finalState == null && details.state) finalState = details.state; - if (finalDxcc < 1 && details.dxcc > 0) finalDxcc = details.dxcc; - if (finalCont == null && details.cont) finalCont = details.cont; - if (finalCnty == null && details.cnty) finalCnty = details.cnty; - if (finalPropMode.length > 0) details.propMode = finalPropMode; - if (finalVucc.length > 0) details.vucc_grids = finalVucc; - if (finalIOTA.length > 0) details.IOTA = finalIOTA; - if (finalSatName.length > 0) details.satName = finalSatName; - if (finalPOTA) details.POTA = finalPOTA; - } - else - { - details = {}; - details.grid = finalGrid; - details.RSTsent = finalRSTsent; - details.RSTrecv = finalRSTrecv; - details.msg = "-"; - details.band = band; - details.mode = mode; - details.DEcall = finalDXcall; - details.DXcall = finalDEcall; - details.cqz = finalCqZone; - details.ituz = finalItuZone; - details.delta = -1; - details.time = finalTime; - details.state = finalState; - details.zipcode = null; - details.qso = true; - details.px = null; - details.zone = null; - details.cont = null; - details.cnty = finalCnty; - details.vucc_grids = finalVucc; - details.propMode = finalPropMode; - details.digital = finalDigital; - details.phone = finalPhone; - details.IOTA = finalIOTA; - details.satName = finalSatName; - details.pota = finalPOTA; - } - - if (finalDxcc < 1) finalDxcc = callsignToDxcc(finalDXcall); - details.dxcc = finalDxcc; - - if (details.dxcc > 0 && details.px == null) - { - details.px = getWpx(finalDXcall); - if (details.px) { details.zone = Number(details.px.charAt(details.px.length - 1)); } - } - - var fourGrid = details.grid.substr(0, 4); - if ( - details.state == null && - isKnownCallsignUSplus(finalDxcc) && - fourGrid.length > 0 - ) - { - if (fourGrid in GT.gridToState && GT.gridToState[fourGrid].length == 1) - { - details.state = GT.gridToState[fourGrid][0]; - } - lookupCall = true; - } - - details.cont = finalCont; - if (finalDxcc > 0) - { - details.cont = GT.dxccInfo[finalDxcc].continent; - if (details.dxcc == 390 && details.zone == 1) details.cont = "EU"; - } - - details.cnty = finalCnty; - if (details.cnty) - { - details.qual = true; - } - - if (isKnownCallsignUSplus(finalDxcc)) - { - if (details.cnty == null) - { - lookupCall = true; - } - else - { - if (!(details.cnty in GT.cntyToCounty)) - { - lookupCall = true; - } - } - } - - var isDigi = details.digital; - var isPhone = details.phone; - - details.wspr = wspr; - if (finalMsg.length > 0) details.msg = finalMsg; - - GT.tracker.worked.call[finalDXcall + band + mode] = true; - GT.tracker.worked.call[finalDXcall] = true; - GT.tracker.worked.call[finalDXcall + mode] = true; - GT.tracker.worked.call[finalDXcall + band] = true; - - if (isDigi == true) - { - GT.tracker.worked.call[finalDXcall + "dg"] = true; - GT.tracker.worked.call[finalDXcall + band + "dg"] = true; - } - - if (fourGrid != "") - { - GT.tracker.worked.grid[fourGrid + band + mode] = true; - GT.tracker.worked.grid[fourGrid] = true; - GT.tracker.worked.grid[fourGrid + mode] = true; - GT.tracker.worked.grid[fourGrid + band] = true; - if (isDigi == true) - { - GT.tracker.worked.grid[fourGrid + "dg"] = true; - GT.tracker.worked.grid[fourGrid + band + "dg"] = true; - } - } - if (!details.ituz || details.ituz.length == 0) - { - details.ituz = ituZoneFromCallsign(finalDXcall, details.dxcc); - } - if (details.ituz) - { - GT.tracker.worked.ituz[details.ituz + "|" + band + mode] = true; - GT.tracker.worked.ituz[details.ituz + "|"] = true; - GT.tracker.worked.ituz[details.ituz + "|" + mode] = true; - GT.tracker.worked.ituz[details.ituz + "|" + band] = true; - if (isDigi == true) - { - GT.tracker.worked.ituz[details.ituz + "|dg"] = true; - GT.tracker.worked.ituz[details.ituz + "|" + band + "dg"] = true; - } - } - - if (!details.cqz || details.cqz.length == 0) - { - details.cqz = cqZoneFromCallsign(finalDXcall, details.dxcc); - } - - if (details.cqz) - { - GT.tracker.worked.cqz[details.cqz + "|" + band + mode] = true; - GT.tracker.worked.cqz[details.cqz + "|"] = true; - GT.tracker.worked.cqz[details.cqz + "|" + mode] = true; - GT.tracker.worked.cqz[details.cqz + "|" + band] = true; - if (isDigi == true) - { - GT.tracker.worked.cqz[details.cqz + "|dg"] = true; - GT.tracker.worked.cqz[details.cqz + "|" + band + "dg"] = true; - } - if (isCurrentYear) - { - GT.tracker.worked.cqz[`${details.cqz}-${currentYear}`] = true; - } - } - - if (details.dxcc > 0) - { - var sDXCC = String(details.dxcc); - GT.tracker.worked.dxcc[sDXCC + "|" + band + mode] = true; - GT.tracker.worked.dxcc[sDXCC + "|"] = true; - GT.tracker.worked.dxcc[sDXCC + "|" + mode] = true; - GT.tracker.worked.dxcc[sDXCC + "|" + band] = true; - if (isDigi == true) - { - GT.tracker.worked.dxcc[sDXCC + "|dg"] = true; - GT.tracker.worked.dxcc[sDXCC + "|" + band + "dg"] = true; - } - if (isCurrentYear) - { - GT.tracker.worked.dxcc[`${sDXCC}-${currentYear}`] = true; - } - } - - if (details.px) - { - GT.tracker.worked.px[details.px + band + mode] = true; - // store the last one - GT.tracker.worked.px[details.px] = hash; - GT.tracker.worked.px[details.px + mode] = true; - GT.tracker.worked.px[details.px + band] = true; - if (isDigi == true) - { - GT.tracker.worked.px[details.px + "dg"] = true; - GT.tracker.worked.px[details.px + band + "dg"] = true; - } - if (isPhone == true) - { - GT.tracker.worked.px[details.px + "ph"] = true; - GT.tracker.worked.px[details.px + band + "ph"] = true; - } - } - - if (details.cont) - { - GT.tracker.worked.cont[details.cont + band + mode] = true; - // store the last one - GT.tracker.worked.cont[details.cont] = hash; - GT.tracker.worked.cont[details.cont + mode] = true; - GT.tracker.worked.cont[details.cont + band] = true; - if (isDigi == true) - { - GT.tracker.worked.cont[details.cont + "dg"] = true; - GT.tracker.worked.cont[details.cont + band + "dg"] = true; - } - if (isPhone == true) - { - GT.tracker.worked.cont[details.cont + "ph"] = true; - GT.tracker.worked.cont[details.cont + band + "ph"] = true; - } - } - - if (finalPOTA) - { - GT.tracker.worked.pota[dayAsString + finalDXcall + finalPOTA] = true; - GT.tracker.worked.pota[dayAsString + finalDXcall + finalPOTA + mode] = true; - GT.tracker.worked.pota[dayAsString + finalDXcall + finalPOTA + band] = true; - GT.tracker.worked.pota[dayAsString + finalDXcall + finalPOTA + band + mode] = true; - if (isDigi == true) - { - GT.tracker.worked.pota[dayAsString + finalDXcall + finalPOTA + "dg"] = true; - GT.tracker.worked.pota[dayAsString + finalDXcall + finalPOTA + band + "dg"] = true; - } - if (isPhone == true) - { - GT.tracker.worked.pota[dayAsString + finalDXcall + finalPOTA + "ph"] = true; - GT.tracker.worked.pota[dayAsString + finalDXcall + finalPOTA + band + "ph"] = true; - } - } - - worked = true; - locked = true; - details.worked = worked; - if (typeof details.confirmed == "undefined" || details.confirmed == false) - { - details.confirmed = confirmed; - } - - GT.QSOhash[hash] = details; - - setState(details); - - if (lookupCall) - { - if (GT.callsignLookups.ulsUseEnable) - { - lookupUsCallsign(details, true); - } - } - - if (confirmed == true) - { - if (fourGrid != "") - { - GT.tracker.confirmed.grid[fourGrid + band + mode] = true; - GT.tracker.confirmed.grid[fourGrid] = true; - GT.tracker.confirmed.grid[fourGrid + mode] = true; - GT.tracker.confirmed.grid[fourGrid + band] = true; - if (isDigi == true) - { - GT.tracker.confirmed.grid[fourGrid + "dg"] = true; - GT.tracker.confirmed.grid[fourGrid + band + "dg"] = true; - } - } - if (details.ituz && details.ituz.length > 0) - { - GT.tracker.confirmed.ituz[details.ituz + "|" + band + mode] = true; - GT.tracker.confirmed.ituz[details.ituz + "|"] = true; - GT.tracker.confirmed.ituz[details.ituz + "|" + mode] = true; - GT.tracker.confirmed.ituz[details.ituz + "|" + band] = true; - if (isDigi == true) - { - GT.tracker.confirmed.ituz[details.ituz + "|dg"] = true; - GT.tracker.confirmed.ituz[details.ituz + "|" + band + "dg"] = true; - } - } - if (details.cqz && details.cqz.length > 0) - { - GT.tracker.confirmed.cqz[details.cqz + "|" + band + mode] = true; - GT.tracker.confirmed.cqz[details.cqz + "|"] = true; - GT.tracker.confirmed.cqz[details.cqz + "|" + mode] = true; - GT.tracker.confirmed.cqz[details.cqz + "|" + band] = true; - if (isDigi == true) - { - GT.tracker.confirmed.cqz[details.cqz + "|dg"] = true; - GT.tracker.confirmed.cqz[details.cqz + "|" + band + "dg"] = true; - } - } - - if (details.dxcc > 0) - { - var sDXCC = String(details.dxcc); - GT.tracker.confirmed.dxcc[sDXCC + "|" + band + mode] = true; - GT.tracker.confirmed.dxcc[sDXCC + "|"] = true; - GT.tracker.confirmed.dxcc[sDXCC + "|" + mode] = true; - GT.tracker.confirmed.dxcc[sDXCC + "|" + band] = true; - if (isDigi == true) - { - GT.tracker.confirmed.dxcc[sDXCC + "|dg"] = true; - GT.tracker.confirmed.dxcc[sDXCC + "|" + band + "dg"] = true; - } - } - - if (details.px) - { - GT.tracker.confirmed.px[details.px + band + mode] = true; - // store the last one - GT.tracker.confirmed.px[details.px] = hash; - GT.tracker.confirmed.px[details.px + mode] = true; - GT.tracker.confirmed.px[details.px + band] = true; - if (isDigi == true) - { - GT.tracker.confirmed.px[details.px + "dg"] = true; - GT.tracker.confirmed.px[details.px + band + "dg"] = true; - } - } - - if (details.cont) - { - GT.tracker.confirmed.cont[details.cont + band + mode] = true; - // store the last one - GT.tracker.confirmed.cont[details.cont] = hash; - GT.tracker.confirmed.cont[details.cont + mode] = true; - GT.tracker.confirmed.cont[details.cont + band] = true; - if (isDigi == true) - { - GT.tracker.confirmed.cont[details.cont + "dg"] = true; - GT.tracker.confirmed.cont[details.cont + band + "dg"] = true; - } - } - - GT.tracker.confirmed.call[finalDXcall + band + mode] = true; - GT.tracker.confirmed.call[finalDXcall] = true; - GT.tracker.confirmed.call[finalDXcall + mode] = true; - GT.tracker.confirmed.call[finalDXcall + band] = true; - if (isDigi == true) - { - GT.tracker.confirmed.call[finalDXcall + "dg"] = true; - GT.tracker.confirmed.call[finalDXcall + band + "dg"] = true; - } - didConfirm = true; - } - } if (finalDxcc < 1) finalDxcc = callsignToDxcc(finalDXcall); hash = finalDXcall + band + mode; - if (!isQSO) - { - if (hash in GT.liveCallsigns) callsign = GT.liveCallsigns[hash]; - } + + if (hash in GT.liveCallsigns) callsign = GT.liveCallsigns[hash]; - if (isQSO) - { - if (validateMapBandAndMode(band, mode) && validatePropMode(finalPropMode)) - { - details.rect = qthToQsoBox( - finalGrid, - hash, - locked, - finalDEcall, - worked, - didConfirm, - band, - wspr - ); - } - return; - } - else - { - if (finalDxcc in GT.dxccCount) GT.dxccCount[finalDxcc]++; - else GT.dxccCount[finalDxcc] = 1; + if (finalDxcc in GT.dxccCount) GT.dxccCount[finalDxcc]++; + else GT.dxccCount[finalDxcc] = 1; - if (validateMapBandAndMode(band, mode)) - { - rect = qthToBox( - finalGrid, - finalDXcall, - false, - locked, - finalDEcall, - band, - wspr, - hash - ); - } + if (wspr != null && validateMapBandAndMode(band, mode)) + { + rect = qthToBox( + finalGrid, + finalDXcall, + false, + false, + finalDEcall, + band, + wspr, + hash + ); } - + if (callsign == null) { var newCallsign = {}; @@ -1607,16 +1621,13 @@ function addDeDx( { if (GT.callsignLookups.ulsUseEnable) { - lookupUsCallsign(newCallsign); + lookupUsCallsign(newCallsign, false); } if (newCallsign.state == null && isKnownCallsignUSplus(finalDxcc)) { var fourGrid = finalGrid.substr(0, 4); - if ( - fourGrid in GT.gridToState && - GT.gridToState[finalGrid.substr(0, 4)].length == 1 - ) + if (fourGrid in GT.gridToState && GT.gridToState[finalGrid.substr(0, 4)].length == 1) { newCallsign.state = GT.gridToState[finalGrid.substr(0, 4)][0]; } @@ -1639,10 +1650,7 @@ function addDeDx( callsign.dxcc = finalDxcc; callsign.wspr = wspr; if (finalGrid.length > callsign.grid.length) callsign.grid = finalGrid; - if ( - finalGrid.length == callsign.grid.length && - finalGrid != callsign.grid - ) { callsign.grid = finalGrid; } + if (finalGrid.length == callsign.grid.length && finalGrid != callsign.grid) callsign.grid = finalGrid; if (finalRSTsent != null) callsign.RSTsent = finalRSTsent; if (finalRSTrecv != null) callsign.RSTrecv = finalRSTrecv; callsign.vucc_grids = []; @@ -2134,21 +2142,21 @@ function createTooltTipTable(toolElement) { worker += "" + - (callsign.DEcall in GT.lotwCallsigns ? "🙋🏻‍♂️" : "") + + (callsign.DEcall in GT.lotwCallsigns ? "✋" : "") + ""; } if (GT.callsignLookups.eqslUseEnable == true) { worker += "" + - (callsign.DEcall in GT.eqslCallsigns ? "🙋🏻‍♂️" : "") + + (callsign.DEcall in GT.eqslCallsigns ? "✋" : "") + ""; } if (GT.callsignLookups.oqrsUseEnable == true) { worker += "" + - (callsign.DEcall in GT.oqrsCallsigns ? "🙋🏻‍♂️" : "") + + (callsign.DEcall in GT.oqrsCallsigns ? "✋" : "") + ""; } @@ -2263,14 +2271,14 @@ function createTooltTipTableLogbook(toolElement) { worker += "" + - (callsign.DEcall in GT.lotwCallsigns ? "🙋🏻‍♂️" : "") + + (callsign.DEcall in GT.lotwCallsigns ? "✋" : "") + ""; } if (GT.callsignLookups.eqslUseEnable == true) { worker += "" + - (callsign.DEcall in GT.eqslCallsigns ? "🙋🏻‍♂️" : "") + + (callsign.DEcall in GT.eqslCallsigns ? "✋" : "") + ""; } if (GT.callsignLookups.oqrsUseEnable == true) @@ -2281,7 +2289,7 @@ function createTooltTipTableLogbook(toolElement) "" + - "🙋🏻‍♂️ 📬"; + "✋ 📬"; } else { @@ -3867,7 +3875,7 @@ function mouseOutOfDataItem(feature) function reloadInfo(bandOrMode) { - if (GT.statsWindowHandle != null) + if (GT.statsWindowInitialized == true) { try { @@ -4019,24 +4027,13 @@ function iconFeature(center, iconObj, zIndex, propName) return feature; } -function qthToQsoBox( - iQTH, - iHash, - locked, - DE, - worked, - confirmed, - band, - wspr -) +function qthToQsoBox(iQTH, iHash, locked, DE, worked, confirmed, band, wspr) { if (GT.appSettings.gridViewMode == 1) return null; var borderColor = GT.mainBorderColor; var boxColor = GT.legendColors.QSX + GT.gridAlpha; var borderWeight = 0.5; - - var myDEzOffset = 10; var myDEbox = false; if (worked) { @@ -4082,12 +4079,7 @@ function qthToQsoBox( { // Valid QTH var triangleView = false; - if ( - GT.appSettings.gridViewMode == 3 && - iQTH in GT.liveGrids && - entityVisibility == true && - GT.pushPinMode == false - ) + if (GT.appSettings.gridViewMode == 3 && iQTH in GT.liveGrids && entityVisibility == true && GT.pushPinMode == false) { if (confirmed) { @@ -4169,7 +4161,6 @@ function qthToQsoBox( if (!(iHash in rect.rectangle.hashes)) { rect.rectangle.hashes[iHash] = 1; - rect.rectangle.pin.hashes[iHash] = 1; } if (!confirmed && rect.rectangle.confirmed) @@ -7195,10 +7186,11 @@ function handleWsjtxClose(newMessage) function handleWsjtxWSPR(newMessage) { if (GT.ignoreMessages == 1) return; + let callsign = newMessage.Callsign.replace("<", "").replace(">", "").trim(); - addDeDx( + addLiveCallsign( newMessage.Grid, - newMessage.Callsign, + callsign, "-", Number(newMessage.SR), timeNowSec(), @@ -7209,7 +7201,7 @@ function handleWsjtxWSPR(newMessage) false, false, null, - callsignToDxcc(newMessage.Callsign), + callsignToDxcc(callsign), null, null, null, @@ -7217,7 +7209,7 @@ function handleWsjtxWSPR(newMessage) "" ); - processAlertMessage(newMessage.Callsign.trim() + " " + newMessage.Grid); + processAlertMessage(callsign + " " + newMessage.Grid); updateCountStats(); } @@ -7434,21 +7426,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 += ""; @@ -7968,7 +7960,9 @@ function showWorkedBox(sortIndex, nextPage, redraw) worker += "" + $.i18n("gt.qsoPage.Rcvd") + ""; worker += "" + $.i18n("gt.qsoPage.DXCC") + ""; worker += "" + $.i18n("gt.qsoPage.Flag") + ""; + worker += "" + $.i18n("roster.secondary.wanted.state") + ""; 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") + ""; @@ -7978,63 +7972,28 @@ function showWorkedBox(sortIndex, nextPage, redraw) for (var i = startIndex; i < endIndex; i++) { key = list[i]; - worker += - "" + - formatCallsign(key.DEcall) + - ""; - worker += - "" + - key.grid + - (key.vucc_grids.length ? ", " + key.vucc_grids.join(", ") : "") + - ""; + worker += "" + formatCallsign(key.DEcall) + ""; + worker += "" + key.grid + (key.vucc_grids.length ? ", " + key.vucc_grids.join(", ") : "") + ""; worker += "" + key.band + ""; worker += "" + key.mode + ""; - worker += - "" + (key.confirmed ? "✔" : "") + ""; + worker += "" + (key.confirmed ? "✔" : "") + ""; worker += "" + key.RSTsent + ""; worker += "" + key.RSTrecv + ""; - worker += - "" + - GT.dxccToAltName[key.dxcc] + - " (" + - (key.dxcc in GT.dxccInfo - ? GT.dxccInfo[key.dxcc].pp - : "?") + - ")"; - worker += - ""; - worker += - "" + - userTimeString(key.time * 1000) + - ""; + worker += "" + GT.dxccToAltName[key.dxcc] + " (" + (key.dxcc in GT.dxccInfo ? GT.dxccInfo[key.dxcc].pp : "?") + ")"; + worker += ""; + worker += "" + (key.state ? key.state : " ") + ""; + worker += "" + userTimeString(key.time * 1000) + ""; if (GT.callsignLookups.lotwUseEnable == true) { - worker += - "" + - (key.DEcall in GT.lotwCallsigns ? "🙋🏻‍♂️" : "") + - ""; + worker += "" + (key.DEcall in GT.lotwCallsigns ? "✋" : "") + ""; } if (GT.callsignLookups.eqslUseEnable == true) { - worker += - "" + - (key.DEcall in GT.eqslCallsigns ? "🙋🏻‍♂️" : "") + - ""; + worker += "" + (key.DEcall in GT.eqslCallsigns ? "✋" : "") + ""; } if (GT.callsignLookups.oqrsUseEnable == true) { - worker += - "" + - (key.DEcall in GT.oqrsCallsigns ? "🙋🏻‍♂️" : "") + - ""; + worker += "" + (key.DEcall in GT.oqrsCallsigns ? "✋" : "") + ""; } worker += ""; } @@ -10095,30 +10054,20 @@ function redrawGrids() if (state in GT.StateData) { var name = GT.StateData[state].name; - if (name in GT.wasZones) { - if (GT.wasZones[name].worked == false) - { - GT.wasZones[name].worked = worked; - } + GT.wasZones[name].worked |= worked; if (worked) { - GT.wasZones[name].worked_bands[band] = - ~~GT.wasZones[name].worked_bands[band] + 1; - GT.wasZones[name].worked_modes[mode] = - ~~GT.wasZones[name].worked_modes[mode] + 1; - } - if (GT.wasZones[name].confirmed == false) - { - GT.wasZones[name].confirmed = didConfirm; + GT.wasZones[name].worked_bands[band] = ~~GT.wasZones[name].worked_bands[band] + 1; + GT.wasZones[name].worked_modes[mode] = ~~GT.wasZones[name].worked_modes[mode] + 1; } + + GT.wasZones[name].confirmed |= didConfirm; if (didConfirm) { - GT.wasZones[name].confirmed_bands[band] = - ~~GT.wasZones[name].confirmed_bands[band] + 1; - GT.wasZones[name].confirmed_modes[mode] = - ~~GT.wasZones[name].confirmed_modes[mode] + 1; + GT.wasZones[name].confirmed_bands[band] = ~~GT.wasZones[name].confirmed_bands[band] + 1; + GT.wasZones[name].confirmed_modes[mode] = ~~GT.wasZones[name].confirmed_modes[mode] + 1; } } } @@ -10128,27 +10077,18 @@ function redrawGrids() { if (cnty in GT.cntyToCounty) { - if (GT.countyData[cnty].worked == false) - { - GT.countyData[cnty].worked = worked; - } + GT.countyData[cnty].worked |= worked; if (worked) { - GT.countyData[cnty].worked_bands[band] = - ~~GT.countyData[cnty].worked_bands[band] + 1; - GT.countyData[cnty].worked_modes[mode] = - ~~GT.countyData[cnty].worked_modes[mode] + 1; - } - if (GT.countyData[cnty].confirmed == false) - { - GT.countyData[cnty].confirmed = didConfirm; + GT.countyData[cnty].worked_bands[band] = ~~GT.countyData[cnty].worked_bands[band] + 1; + GT.countyData[cnty].worked_modes[mode] = ~~GT.countyData[cnty].worked_modes[mode] + 1; } + + GT.countyData[cnty].confirmed |= didConfirm; if (didConfirm) { - GT.countyData[cnty].confirmed_bands[band] = - ~~GT.countyData[cnty].confirmed_bands[band] + 1; - GT.countyData[cnty].confirmed_modes[mode] = - ~~GT.countyData[cnty].confirmed_modes[mode] + 1; + GT.countyData[cnty].confirmed_bands[band] = ~~GT.countyData[cnty].confirmed_bands[band] + 1; + GT.countyData[cnty].confirmed_modes[mode] = ~~GT.countyData[cnty].confirmed_modes[mode] + 1; } } } @@ -10160,106 +10100,68 @@ function redrawGrids() if (name in GT.wacZones) { - if (GT.wacZones[name].worked == false) - { - GT.wacZones[name].worked = worked; - } + GT.wacZones[name].worked |= worked; if (worked) { - GT.wacZones[name].worked_bands[band] = - ~~GT.wacZones[name].worked_bands[band] + 1; - GT.wacZones[name].worked_modes[mode] = - ~~GT.wacZones[name].worked_modes[mode] + 1; - } - if (GT.wacZones[name].confirmed == false) - { - GT.wacZones[name].confirmed = didConfirm; + GT.wacZones[name].worked_bands[band] = ~~GT.wacZones[name].worked_bands[band] + 1; + GT.wacZones[name].worked_modes[mode] = ~~GT.wacZones[name].worked_modes[mode] + 1; } + + GT.wacZones[name].confirmed |= didConfirm; if (didConfirm) { - GT.wacZones[name].confirmed_bands[band] = - ~~GT.wacZones[name].confirmed_bands[band] + 1; - GT.wacZones[name].confirmed_modes[mode] = - ~~GT.wacZones[name].confirmed_modes[mode] + 1; + GT.wacZones[name].confirmed_bands[band] = ~~GT.wacZones[name].confirmed_bands[band] + 1; + GT.wacZones[name].confirmed_modes[mode] = ~~GT.wacZones[name].confirmed_modes[mode] + 1; } } } } - if (GT.dxccInfo[finalDxcc].worked == false) - { - GT.dxccInfo[finalDxcc].worked = worked; - } + GT.dxccInfo[finalDxcc].worked |= worked; if (worked) { - GT.dxccInfo[finalDxcc].worked_bands[band] = - ~~GT.dxccInfo[finalDxcc].worked_bands[band] + 1; - GT.dxccInfo[finalDxcc].worked_modes[mode] = - ~~GT.dxccInfo[finalDxcc].worked_modes[mode] + 1; - } - if (GT.dxccInfo[finalDxcc].confirmed == false) - { - GT.dxccInfo[finalDxcc].confirmed = didConfirm; + GT.dxccInfo[finalDxcc].worked_bands[band] = ~~GT.dxccInfo[finalDxcc].worked_bands[band] + 1; + GT.dxccInfo[finalDxcc].worked_modes[mode] = ~~GT.dxccInfo[finalDxcc].worked_modes[mode] + 1; } + + GT.dxccInfo[finalDxcc].confirmed |= didConfirm; if (didConfirm) { - GT.dxccInfo[finalDxcc].confirmed_bands[band] = - ~~GT.dxccInfo[finalDxcc].confirmed_bands[band] + - 1; - GT.dxccInfo[finalDxcc].confirmed_modes[mode] = - ~~GT.dxccInfo[finalDxcc].confirmed_modes[mode] + - 1; + GT.dxccInfo[finalDxcc].confirmed_bands[band] = ~~GT.dxccInfo[finalDxcc].confirmed_bands[band] + 1; + GT.dxccInfo[finalDxcc].confirmed_modes[mode] = ~~GT.dxccInfo[finalDxcc].confirmed_modes[mode] + 1; } if (cqz && cqz.length > 0) { - if (GT.cqZones[cqz].worked == false) - { - GT.cqZones[cqz].worked = worked; - } + GT.cqZones[cqz].worked |= worked; if (worked) { - GT.cqZones[cqz].worked_bands[band] = - ~~GT.cqZones[cqz].worked_bands[band] + 1; - GT.cqZones[cqz].worked_modes[mode] = - ~~GT.cqZones[cqz].worked_modes[mode] + 1; - } - if (GT.cqZones[cqz].confirmed == false) - { - GT.cqZones[cqz].confirmed = didConfirm; + GT.cqZones[cqz].worked_bands[band] = ~~GT.cqZones[cqz].worked_bands[band] + 1; + GT.cqZones[cqz].worked_modes[mode] = ~~GT.cqZones[cqz].worked_modes[mode] + 1; } + + GT.cqZones[cqz].confirmed |= didConfirm; if (didConfirm) { - GT.cqZones[cqz].confirmed_bands[band] = - ~~GT.cqZones[cqz].confirmed_bands[band] + 1; - GT.cqZones[cqz].confirmed_modes[mode] = - ~~GT.cqZones[cqz].confirmed_modes[mode] + 1; + GT.cqZones[cqz].confirmed_bands[band] = ~~GT.cqZones[cqz].confirmed_bands[band] + 1; + GT.cqZones[cqz].confirmed_modes[mode] = ~~GT.cqZones[cqz].confirmed_modes[mode] + 1; } } if (ituz && ituz.length > 0) { - if (GT.ituZones[ituz].worked == false) - { - GT.ituZones[ituz].worked = worked; - } + GT.ituZones[ituz].worked |= worked; if (worked) { - GT.ituZones[ituz].worked_bands[band] = - ~~GT.ituZones[ituz].worked_bands[band] + 1; - GT.ituZones[ituz].worked_modes[mode] = - ~~GT.ituZones[ituz].worked_modes[mode] + 1; - } - if (GT.ituZones[ituz].confirmed == false) - { - GT.ituZones[ituz].confirmed = didConfirm; + GT.ituZones[ituz].worked_bands[band] = ~~GT.ituZones[ituz].worked_bands[band] + 1; + GT.ituZones[ituz].worked_modes[mode] = ~~GT.ituZones[ituz].worked_modes[mode] + 1; } + + GT.ituZones[ituz].confirmed |= didConfirm; if (didConfirm) { - GT.ituZones[ituz].confirmed_bands[band] = - ~~GT.ituZones[ituz].confirmed_bands[band] + 1; - GT.ituZones[ituz].confirmed_modes[mode] = - ~~GT.ituZones[ituz].confirmed_modes[mode] + 1; + GT.ituZones[ituz].confirmed_bands[band] = ~~GT.ituZones[ituz].confirmed_bands[band] + 1; + GT.ituZones[ituz].confirmed_modes[mode] = ~~GT.ituZones[ituz].confirmed_modes[mode] + 1; } } @@ -10269,27 +10171,20 @@ function redrawGrids() if (gridCheck in GT.us48Data) { - if (GT.us48Data[gridCheck].worked == false) - { - GT.us48Data[gridCheck].worked = worked; - } + GT.us48Data[gridCheck].worked |= worked; + if (worked) { - GT.us48Data[gridCheck].worked_bands[band] = - ~~GT.us48Data[gridCheck].worked_bands[band] + 1; - GT.us48Data[gridCheck].worked_modes[mode] = - ~~GT.us48Data[gridCheck].worked_modes[mode] + 1; - } - if (GT.us48Data[gridCheck].confirmed == false) - { - GT.us48Data[gridCheck].confirmed = didConfirm; + GT.us48Data[gridCheck].worked_bands[band] = ~~GT.us48Data[gridCheck].worked_bands[band] + 1; + GT.us48Data[gridCheck].worked_modes[mode] = ~~GT.us48Data[gridCheck].worked_modes[mode] + 1; } + + GT.us48Data[gridCheck].confirmed |= didConfirm; + if (didConfirm) { - GT.us48Data[gridCheck].confirmed_bands[band] = - ~~GT.us48Data[gridCheck].confirmed_bands[band] + 1; - GT.us48Data[gridCheck].confirmed_modes[mode] = - ~~GT.us48Data[gridCheck].confirmed_modes[mode] + 1; + GT.us48Data[gridCheck].confirmed_bands[band] = ~~GT.us48Data[gridCheck].confirmed_bands[band] + 1; + GT.us48Data[gridCheck].confirmed_modes[mode] = ~~GT.us48Data[gridCheck].confirmed_modes[mode] + 1; } } } @@ -10299,27 +10194,18 @@ function redrawGrids() var grid = GT.QSOhash[i].vucc_grids[key].substr(0, 4); if (grid in GT.us48Data) { - if (GT.us48Data[grid].worked == false) - { - GT.us48Data[grid].worked = worked; - } + GT.us48Data[grid].worked |= worked; if (worked) { - GT.us48Data[grid].worked_bands[band] = - ~~GT.us48Data[grid].worked_bands[band] + 1; - GT.us48Data[grid].worked_modes[mode] = - ~~GT.us48Data[grid].worked_modes[mode] + 1; - } - if (GT.us48Data[grid].confirmed == false) - { - GT.us48Data[grid].confirmed = didConfirm; + GT.us48Data[grid].worked_bands[band] = ~~GT.us48Data[grid].worked_bands[band] + 1; + GT.us48Data[grid].worked_modes[mode] = ~~GT.us48Data[grid].worked_modes[mode] + 1; } + + GT.us48Data[grid].confirmed |= didConfirm; if (didConfirm) { - GT.us48Data[grid].confirmed_bands[band] = - ~~GT.us48Data[grid].confirmed_bands[band] + 1; - GT.us48Data[grid].confirmed_modes[mode] = - ~~GT.us48Data[grid].confirmed_modes[mode] + 1; + GT.us48Data[grid].confirmed_bands[band] = ~~GT.us48Data[grid].confirmed_bands[band] + 1; + GT.us48Data[grid].confirmed_modes[mode] = ~~GT.us48Data[grid].confirmed_modes[mode] + 1; } } } @@ -10404,8 +10290,7 @@ function toggleAlertMute() function togglePushPinMode() { - if (GT.pushPinMode == false) GT.pushPinMode = true; - else GT.pushPinMode = false; + GT.pushPinMode = !GT.pushPinMode; GT.appSettings.pushPinMode = GT.pushPinMode; pinImg.src = GT.pinImageArray[GT.pushPinMode == false ? 0 : 1]; clearTempGrids(); @@ -11743,6 +11628,7 @@ 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; + GT.dxccToCountryCode[GT.dxccInfo[key].dxcc] = GT.dxccInfo[key].cc; for (var x = 0; x < GT.dxccInfo[key].prefix.length; x++) { @@ -14965,19 +14851,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"); } @@ -15417,7 +15303,7 @@ function mediaCheck() try { let fileExists = fs.existsSync(GT.NWappData + "internal_qso.json"); - if (fileExists == true && GT.startVersion > 1221123) + if (fileExists == true && GT.startVersion > 1231202) { var data = JSON.parse(fs.readFileSync(GT.NWappData + "internal_qso.json")); GT.tracker = data.tracker; diff --git a/package.nw/lib/roster/processRosterHunting.js b/package.nw/lib/roster/processRosterHunting.js index 233e8c2..798ff31 100644 --- a/package.nw/lib/roster/processRosterHunting.js +++ b/package.nw/lib/roster/processRosterHunting.js @@ -199,7 +199,7 @@ function processRosterHunting(callRoster, rosterSettings, awardTracker) if (rosterSettings.huntIndex && !(hash in rosterSettings.huntIndex.call)) { - shouldAlert = true; + shouldAlert |= true; callObj.reason.push("call"); if (rosterSettings.workedIndex && hash in rosterSettings.workedIndex.call) @@ -252,7 +252,7 @@ function processRosterHunting(callRoster, rosterSettings, awardTracker) if (huntWatcher.checked) { - shouldAlert = processWatchers(callObj); + shouldAlert |= processWatchers(callObj); } // Hunting for "stations calling you" diff --git a/package.nw/lib/roster/rosterColumns.js b/package.nw/lib/roster/rosterColumns.js index 7e17d50..ce91f56 100644 --- a/package.nw/lib/roster/rosterColumns.js +++ b/package.nw/lib/roster/rosterColumns.js @@ -275,7 +275,7 @@ const ROSTER_COLUMNS = { title: `${$.i18n("rosterColumns.LoTW.LastUpdate")}${ window.opener.userDayString(window.opener.GT.lotwCallsigns[callObj.DEcall] * 86400000) }`, - html: "🙋🏻‍♂️" + html: "✋" } } } @@ -287,7 +287,7 @@ const ROSTER_COLUMNS = { title: `${$.i18n("rosterColumns.LoTW.LastUpdate")}${ window.opener.userDayString(window.opener.GT.lotwCallsigns[callObj.DEcall] * 86400000) }`, - html: "🙋🏻‍♂️" + html: "✋" } } } @@ -305,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 ? "✋" : " ") }) }, @@ -314,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 ? "✋" : " ") }) }, diff --git a/package.nw/lib/style_roster.css b/package.nw/lib/style_roster.css index b406826..be4ac1e 100644 --- a/package.nw/lib/style_roster.css +++ b/package.nw/lib/style_roster.css @@ -161,13 +161,13 @@ body.roster { #LessControls { position: absolute; top: 7px; - left: 50%; + right: 6px; text-align: center; } #MoreControls { position: absolute; - top: 5px; + top: 7px; right: 6px; text-align: right; } @@ -322,7 +322,7 @@ body.roster { } #exceptionDiv { - flex: .25; + flex: .7; } .secondaryControlGroup h3 { @@ -352,7 +352,7 @@ body.roster { flex-direction: column; flex-wrap: wrap; justify-content: flex-start; - align-items: normal; + align-items: left; } .secondaryControlGroup .columns div { diff --git a/package.nw/package.json b/package.nw/package.json index 247dcf9..e81f5e2 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.1202", + "version": "1.23.1207", "betaVersion": "", "description": "GridTracker: An Amateur Radio Companion", "author": "GridTracker.org",