From d0f76a84c4a550b10840f3abb0e8d92ce131a91c Mon Sep 17 00:00:00 2001 From: Tag Date: Mon, 31 Oct 2022 16:02:09 -0700 Subject: [PATCH 01/11] Removed short-grids overlay. Reduces screen lag on B overlay Cleaned up on referenced i18n json files --- package.nw/lib/gt.js | 30 +++--------------------------- package.nw/lib/i18n.js | 5 +---- 2 files changed, 4 insertions(+), 31 deletions(-) diff --git a/package.nw/lib/gt.js b/package.nw/lib/gt.js index f624f70..4319e67 100644 --- a/package.nw/lib/gt.js +++ b/package.nw/lib/gt.js @@ -3243,7 +3243,6 @@ function setTrophyOverlay(which) { g_layerVectors["line-grids"].setVisible(false); g_layerVectors["big-grids"].setVisible(false); - g_layerVectors["short-grids"].setVisible(false); g_layerVectors["long-grids"].setVisible(false); } if (g_timezoneLayer) @@ -3289,7 +3288,6 @@ function setTrophyOverlay(which) { g_layerVectors["line-grids"].setVisible(false); g_layerVectors["big-grids"].setVisible(false); - g_layerVectors["short-grids"].setVisible(false); g_layerVectors["long-grids"].setVisible(false); } } @@ -5607,9 +5605,8 @@ function initMap() createGlobalMapLayer("live"); createGlobalMapLayer("live-pins"); createGlobalMapLayer("line-grids"); - createGlobalMapLayer("long-grids", 3000); - createGlobalMapLayer("short-grids", 8000, 3001); - createGlobalMapLayer("big-grids", 50000, 3001); + createGlobalMapLayer("long-grids", 4500); + createGlobalMapLayer("big-grids", 50000, 4501); createGlobalMapLayer("pota"); createGlobalMapLayer("psk-flights"); createGlobalMapLayer("psk-spots"); @@ -5642,7 +5639,6 @@ function initMap() g_layerVectors["live-pins"], g_layerVectors["line-grids"], g_layerVectors["long-grids"], - g_layerVectors["short-grids"], g_layerVectors["big-grids"], g_layerVectors.pota, g_layerVectors["psk-flights"], @@ -12372,26 +12368,6 @@ function drawAllGrids() }); var featureStyle = new ol.style.Style({ - text: new ol.style.Text({ - fill: new ol.style.Fill({ color: "#000" }), - font: "normal 16px sans-serif", - stroke: new ol.style.Stroke({ - color: "#88888888", - width: 1 - }), - text: String(a) + String(b), - offsetY: 1 - }) - }); - feature.setStyle(featureStyle); - g_layerSources["short-grids"].addFeature(feature); - - feature = new ol.Feature({ - geometry: new ol.geom.Point(point), - name: String(a) + String(b) - }); - - featureStyle = new ol.style.Style({ text: new ol.style.Text({ fill: new ol.style.Fill({ color: "#000" }), font: "normal 16px sans-serif", @@ -12426,7 +12402,7 @@ function drawAllGrids() font: "normal 24px sans-serif", stroke: new ol.style.Stroke({ color: "#88888888", - width: 1 + width: 2 }), text: String.fromCharCode(x) + String.fromCharCode(y) }) diff --git a/package.nw/lib/i18n.js b/package.nw/lib/i18n.js index 8fad706..3dbd303 100644 --- a/package.nw/lib/i18n.js +++ b/package.nw/lib/i18n.js @@ -1,10 +1,7 @@ let languages = { en: "i18n/en.json", - es: "i18n/es.json", cn: "i18n/cn.json", - cnt: "i18n/cn-t.json", - de: "i18n/de.json", - ja: "i18n/ja.json" + cnt: "i18n/cn-t.json" }; function loadi18n() From 2a1804f7f25f5ea1c0c59a644f094c19f317eb98 Mon Sep 17 00:00:00 2001 From: Tag Date: Sat, 5 Nov 2022 16:28:19 -0700 Subject: [PATCH 02/11] Fixed chat background not displaying --- package.nw/lib/chat.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.nw/lib/chat.css b/package.nw/lib/chat.css index 9b9bdae..d6d36ce 100644 --- a/package.nw/lib/chat.css +++ b/package.nw/lib/chat.css @@ -49,7 +49,7 @@ textarea { } body { - background-image: url(img/gridtracker10.png); + background-image: url(../img/gridtracker10.png); background-repeat: no-repeat; background-attachment: fixed; background-position: center; From 8efd63a02f02f42bded0289ed000c6b62754e70e Mon Sep 17 00:00:00 2001 From: Tag Date: Sun, 6 Nov 2022 12:42:03 -0800 Subject: [PATCH 03/11] Improve chat message callsign list rendering --- package.nw/gt_chat.html | 43 ++++++++++++++++++++++++++--------------- package.nw/lib/gtws.js | 5 ++++- 2 files changed, 31 insertions(+), 17 deletions(-) diff --git a/package.nw/gt_chat.html b/package.nw/gt_chat.html index 31db960..5ce8718 100644 --- a/package.nw/gt_chat.html +++ b/package.nw/gt_chat.html @@ -161,17 +161,28 @@ } function makeCallsignRow(callObj, show) { - let oldRow = document.getElementById(callObj.cid); - - if (!oldRow) { - let newCall = callObj.call.formatCallsign(); - let x = 0; - for (x = 0; x < allCallTable.rows.length && newCall > allCallTable.rows[x].cells[0].innerHTML; x++) + + if (callObj.row == null) + { + var low = 0; + var mid = 0; + var high = allCallTable.rows.length; + + while (low < high) { - // just count + mid = (low + high) >>> 1; + if (allCallTable.rows[mid].cells[0].innerHTML < callObj.fCall) + { + low = mid + 1; + } + else + { + high = mid; + } } - let row = allCallTable.insertRow(x); + var row = allCallTable.insertRow(low); + callObj.row = row; row.id = callObj.cid; row.style.cursor = "pointer"; @@ -179,15 +190,15 @@ row.onclick = openIdCid; row.oncontextmenu = openLookupCid; - let td = row.insertCell(); + var td = row.insertCell(); td.className = callObj.live == false ? "rosterOff" : "rosterOn"; - td.innerHTML = newCall; + td.innerHTML = callObj.fCall; td.onmouseenter = onHoverCid; td.onmouseout = onNoHoverCid; if (callObj.dxcc > 0 && callObj.dxcc in window.opener.g_dxccInfo) { - let imgClass = callObj.live == false ? "imgGray" : "imgNoFilter"; + var imgClass = callObj.live == false ? "imgGray" : "imgNoFilter"; td = row.insertCell(); td.innerHTML = ""; } } else { - oldRow.style.display = show ? "" : "none"; + callObj.row.style.display = show ? "" : "none"; } } function showAllCallsigns() { - let count = 0; - for (let x in window.opener.g_gtFlagPins) { - let obj = window.opener.g_gtFlagPins[x]; + var count = 0; + for (var x in window.opener.g_gtFlagPins) { + var obj = window.opener.g_gtFlagPins[x]; if (obj.call != "" && obj.call != "NOCALL" && obj.canmsg == true) { - let show = true; + var show = true; try { if (searchBox.value.length > 0 && !obj.call.match(searchBox.value)) { show = false; diff --git a/package.nw/lib/gtws.js b/package.nw/lib/gtws.js index a6f1f1d..926a12c 100644 --- a/package.nw/lib/gtws.js +++ b/package.nw/lib/gtws.js @@ -316,7 +316,7 @@ function gtChatUpdateCall(jsmesg) { g_gtFlagPins[cid] = Object(); g_gtFlagPins[cid].pin = null; - + g_gtFlagPins[cid].row = null; g_gtFlagPins[cid].ids = Object(); g_gtFlagPins[cid].ids[id] = true; } @@ -324,6 +324,7 @@ function gtChatUpdateCall(jsmesg) g_gtFlagPins[cid].cid = jsmesg.cid; g_gtFlagPins[cid].call = jsmesg.call; + g_gtFlagPins[cid].fCall = jsmesg.call.formatCallsign(); g_gtFlagPins[cid].grid = jsmesg.grid; g_gtFlagPins[cid].freq = jsmesg.freq; g_gtFlagPins[cid].band = jsmesg.band; @@ -443,10 +444,12 @@ function gtChatNewList(jsmesg) g_gtFlagPins[cid].ids = Object(); g_gtFlagPins[cid].ids[id] = true; g_gtFlagPins[cid].pin = null; + g_gtFlagPins[cid].row = null; } g_gtIdToCid[id] = cid; g_gtFlagPins[cid].call = jsmesg.data.calls[key]; + g_gtFlagPins[cid].fCall = g_gtFlagPins[cid].call.formatCallsign(); g_gtFlagPins[cid].grid = jsmesg.data.grid[key]; g_gtFlagPins[cid].freq = jsmesg.data.freq[key]; g_gtFlagPins[cid].band = jsmesg.data.band[key]; From 364527d0b0f2114d178dbc4229f13495fa81263e Mon Sep 17 00:00:00 2001 From: Tag Date: Sun, 6 Nov 2022 12:54:14 -0800 Subject: [PATCH 04/11] tiny speed bump --- package.nw/gt_chat.html | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.nw/gt_chat.html b/package.nw/gt_chat.html index 5ce8718..ad3e37c 100644 --- a/package.nw/gt_chat.html +++ b/package.nw/gt_chat.html @@ -171,7 +171,7 @@ while (low < high) { mid = (low + high) >>> 1; - if (allCallTable.rows[mid].cells[0].innerHTML < callObj.fCall) + if (allCallTable.rows[mid].fCall < callObj.fCall) { low = mid + 1; } @@ -184,6 +184,7 @@ var row = allCallTable.insertRow(low); callObj.row = row; row.id = callObj.cid; + row.fCall = callObj.fCall; row.style.cursor = "pointer"; row.style.display = show ? "" : "none"; From 71f43de960d0ffd5b36908afb95e2dfe35dfd5b8 Mon Sep 17 00:00:00 2001 From: Tag Date: Sun, 6 Nov 2022 13:20:51 -0800 Subject: [PATCH 05/11] Fixed Grid Data mode startup issue --- package.nw/lib/gt.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/package.nw/lib/gt.js b/package.nw/lib/gt.js index 4319e67..a8dba83 100644 --- a/package.nw/lib/gt.js +++ b/package.nw/lib/gt.js @@ -796,6 +796,7 @@ function cycleGridView() gridViewButton.innerHTML = g_gridViewArray[g_appSettings.gridViewMode]; redrawGrids(); + saveAppSettings(); } function toggleEarth() @@ -4238,7 +4239,7 @@ function qthToQsoBox( } var zIndex = 2; - var entityVisibility = Number(g_appSettings.gridViewMode) > 1; + var entityVisibility = g_appSettings.gridViewMode > 1; var returnRectangle = null; if (g_appSettings.sixWideMode == 0) iQTH = iQTH.substr(0, 4); else iQTH = iQTH.substr(0, 6); @@ -4268,7 +4269,7 @@ function qthToQsoBox( // Valid QTH var triangleView = false; if ( - Number(g_appSettings.gridViewMode) == 3 && + g_appSettings.gridViewMode == 3 && iQTH in g_liveGrids && entityVisibility == true && g_pushPinMode == false @@ -4944,7 +4945,7 @@ function dimGridsquare() { g_layerSources.live.removeFeature(g_liveGrids[i].rectangle); - if (Number(g_appSettings.gridViewMode) == 3 && i in g_qsoGrids) + if (g_appSettings.gridViewMode == 3 && i in g_qsoGrids) { if (g_qsoGrids[i].isTriangle) { @@ -13464,6 +13465,7 @@ function startupEventsAndTimers() var g_finishedLoading = false; function postInit() { + setGridViewMode(g_appSettings.gridViewMode); redrawSpots(); checkForSettings(); updateForwardListener(); From adcc312ae4539dc44ced0f78153f3ab4b9409c5f Mon Sep 17 00:00:00 2001 From: Tag Date: Sun, 6 Nov 2022 13:43:23 -0800 Subject: [PATCH 06/11] Code opt --- package.nw/gt_chat.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.nw/gt_chat.html b/package.nw/gt_chat.html index ad3e37c..b6a00a4 100644 --- a/package.nw/gt_chat.html +++ b/package.nw/gt_chat.html @@ -215,7 +215,7 @@ function showAllCallsigns() { var count = 0; - for (var x in window.opener.g_gtFlagPins) { + for (const x in window.opener.g_gtFlagPins) { var obj = window.opener.g_gtFlagPins[x]; if (obj.call != "" && obj.call != "NOCALL" && obj.canmsg == true) { var show = true; @@ -274,7 +274,7 @@ function showAllMessages() { if (Object.keys(window.opener.g_gtMessages).length > 0) { var worker = ""; - for (var key in window.opener.g_gtMessages) { + for (const key in window.opener.g_gtMessages) { worker += "
"; if (key in window.opener.g_gtUnread) worker += "🔥"; From 7e095a4a7643659d640ed9800cbb8514535360b5 Mon Sep 17 00:00:00 2001 From: Tag Date: Sun, 6 Nov 2022 13:44:36 -0800 Subject: [PATCH 07/11] Check canmsg first to get out faster --- package.nw/gt_chat.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.nw/gt_chat.html b/package.nw/gt_chat.html index b6a00a4..97e8a75 100644 --- a/package.nw/gt_chat.html +++ b/package.nw/gt_chat.html @@ -217,7 +217,7 @@ var count = 0; for (const x in window.opener.g_gtFlagPins) { var obj = window.opener.g_gtFlagPins[x]; - if (obj.call != "" && obj.call != "NOCALL" && obj.canmsg == true) { + if (obj.canmsg == true && obj.call != "" && obj.call != "NOCALL") { var show = true; try { if (searchBox.value.length > 0 && !obj.call.match(searchBox.value)) { From 8d157a4fb732450df70b7c3200c94deaf6b194db Mon Sep 17 00:00:00 2001 From: Tag Date: Sun, 6 Nov 2022 15:07:55 -0800 Subject: [PATCH 08/11] Code reduction --- package.nw/lib/gt.js | 35 ++++++++++------------------------- package.nw/lib/gtws.js | 2 +- 2 files changed, 11 insertions(+), 26 deletions(-) diff --git a/package.nw/lib/gt.js b/package.nw/lib/gt.js index a8dba83..eb3e5cc 100644 --- a/package.nw/lib/gt.js +++ b/package.nw/lib/gt.js @@ -11573,41 +11573,26 @@ function ValidateGridsquareOnly4(inputText, validDiv) function validateGridFromString(inputText) { + var validGrid = false; if (inputText.length == 4 || inputText.length == 6) { - var gridSquare = ""; - var LETTERS = inputText.substr(0, 2).toUpperCase(); - var NUMBERS = inputText.substr(2, 2).toUpperCase(); + var LETTERS = inputText.substr(0, 2); + var NUMBERS = inputText.substr(2, 2); if (/^[A-R]+$/.test(LETTERS) && /^[0-9]+$/.test(NUMBERS)) { - gridSquare = LETTERS + NUMBERS; + validGrid = true; } - if (inputText.length > 4) + if (validGrid && inputText.length == 6) { - var LETTERS_SUB = inputText.substr(4, 2).toUpperCase(); - gridSquare = ""; - if ( - /^[A-R]+$/.test(LETTERS) && - /^[0-9]+$/.test(NUMBERS) && - /^[A-Xa-x]+$/.test(LETTERS_SUB) - ) + var LETTERS_SUB = inputText.substr(4, 2); + if (!(/^[A-Xa-x]+$/.test(LETTERS_SUB))) { - gridSquare = LETTERS + NUMBERS + LETTERS_SUB; + validGrid = false; } } - if (gridSquare != "") - { - return true; - } - else - { - return false; - } - } - else - { - return false; } + + return validGrid; } function ValidateGridsquare(inputText, validDiv) diff --git a/package.nw/lib/gtws.js b/package.nw/lib/gtws.js index 926a12c..a2dba0f 100644 --- a/package.nw/lib/gtws.js +++ b/package.nw/lib/gtws.js @@ -393,7 +393,7 @@ function makeGtPin(obj) if (obj.grid.length != 4 && obj.grid.length != 6) return; - if (validateGridFromString(obj.grid, null) == false) return; + if (validateGridFromString(obj.grid) == false) return; if ( g_appSettings.gtFlagImgSrc == 2 && From 6e5d35d20fa99b6209ad81abb30971dc8ac5fe2b Mon Sep 17 00:00:00 2001 From: Tag Date: Sat, 12 Nov 2022 12:39:41 -0800 Subject: [PATCH 09/11] Fixed chat search --- package.nw/gt_chat.html | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/package.nw/gt_chat.html b/package.nw/gt_chat.html index 97e8a75..899d5c1 100644 --- a/package.nw/gt_chat.html +++ b/package.nw/gt_chat.html @@ -217,7 +217,8 @@ var count = 0; for (const x in window.opener.g_gtFlagPins) { var obj = window.opener.g_gtFlagPins[x]; - if (obj.canmsg == true && obj.call != "" && obj.call != "NOCALL") { + if (obj.canmsg == true && obj.call != "" && obj.call != "NOCALL") + { var show = true; try { if (searchBox.value.length > 0 && !obj.call.match(searchBox.value)) { @@ -229,7 +230,10 @@ if (g_viewMode > 0 && window.opener.myMode != obj.mode) show = false; - if (show) count++; + if (show) + { + count++; + } makeCallsignRow(obj, show); @@ -240,6 +244,11 @@ messageInput.disabled = false; } } + else if (obj.row) + { + obj.row.style.display = "none"; + delete obj.row; + } } if (typeof allCallTable.childNodes != "undefined" && 0 in allCallTable.childNodes) { From b17753c64676df610f1c53baa57aab3d15a87a74 Mon Sep 17 00:00:00 2001 From: Tag Date: Sat, 12 Nov 2022 16:30:14 -0800 Subject: [PATCH 10/11] Do not spot QRT from activator --- package.nw/lib/pota.js | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/package.nw/lib/pota.js b/package.nw/lib/pota.js index 1c0aa3b..5af134b 100644 --- a/package.nw/lib/pota.js +++ b/package.nw/lib/pota.js @@ -427,20 +427,27 @@ function processPotaSpots(buffer) newSpot.spotTime = Date.parse(newSpot.spotTime + "Z"); newSpot.frequency = parseInt(newSpot.frequency) / 1000; newSpot.band = newSpot.frequency.formatBand(); - (g_pota.callSpots[newSpot.activator] = g_pota.callSpots[newSpot.activator] || []).push(newSpot.reference); - - if (!(newSpot.reference in g_pota.parkSpots)) + if (newSpot.spotter == newSpot.activator && newSpot.comments.match(/qrt/gi)) { - g_pota.parkSpots[newSpot.reference] = {}; - } - if (newSpot.activator in g_pota.parkSpots[newSpot.reference]) - { - g_pota.parkSpots[newSpot.reference][newSpot.activator] = fillObjectFromTemplate(g_pota.parkSpots[newSpot.reference][newSpot.activator], newSpot); + // don't add the spot, they have self-QRT'ed } else { - g_pota.parkSpots[newSpot.reference][newSpot.activator] = newSpot; - } + (g_pota.callSpots[newSpot.activator] = g_pota.callSpots[newSpot.activator] || []).push(newSpot.reference); + + if (!(newSpot.reference in g_pota.parkSpots)) + { + g_pota.parkSpots[newSpot.reference] = {}; + } + if (newSpot.activator in g_pota.parkSpots[newSpot.reference]) + { + g_pota.parkSpots[newSpot.reference][newSpot.activator] = fillObjectFromTemplate(g_pota.parkSpots[newSpot.reference][newSpot.activator], newSpot); + } + else + { + g_pota.parkSpots[newSpot.reference][newSpot.activator] = newSpot; + } + } } else { From 6d797c56ddccea9677f70a15f54755f9128bcb66 Mon Sep 17 00:00:00 2001 From: Tag Date: Sat, 12 Nov 2022 16:45:28 -0800 Subject: [PATCH 11/11] lint fix --- package.nw/lib/pota.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.nw/lib/pota.js b/package.nw/lib/pota.js index 5af134b..833e282 100644 --- a/package.nw/lib/pota.js +++ b/package.nw/lib/pota.js @@ -447,7 +447,7 @@ function processPotaSpots(buffer) { g_pota.parkSpots[newSpot.reference][newSpot.activator] = newSpot; } - } + } } else {