Improve chat message callsign list rendering

merge-requests/237/merge
Tag 2022-11-06 12:42:03 -08:00
rodzic 2a1804f7f2
commit 8efd63a02f
2 zmienionych plików z 31 dodań i 17 usunięć

Wyświetl plik

@ -161,17 +161,28 @@
} }
function makeCallsignRow(callObj, show) { function makeCallsignRow(callObj, show) {
let oldRow = document.getElementById(callObj.cid);
if (!oldRow) { if (callObj.row == null)
let newCall = callObj.call.formatCallsign(); {
let x = 0; var low = 0;
for (x = 0; x < allCallTable.rows.length && newCall > allCallTable.rows[x].cells[0].innerHTML; x++) 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.id = callObj.cid;
row.style.cursor = "pointer"; row.style.cursor = "pointer";
@ -179,15 +190,15 @@
row.onclick = openIdCid; row.onclick = openIdCid;
row.oncontextmenu = openLookupCid; row.oncontextmenu = openLookupCid;
let td = row.insertCell(); var td = row.insertCell();
td.className = callObj.live == false ? "rosterOff" : "rosterOn"; td.className = callObj.live == false ? "rosterOff" : "rosterOn";
td.innerHTML = newCall; td.innerHTML = callObj.fCall;
td.onmouseenter = onHoverCid; td.onmouseenter = onHoverCid;
td.onmouseout = onNoHoverCid; td.onmouseout = onNoHoverCid;
if (callObj.dxcc > 0 && callObj.dxcc in window.opener.g_dxccInfo) { 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 = row.insertCell();
td.innerHTML = td.innerHTML =
"<img class='" + "<img class='" +
@ -197,16 +208,16 @@
"'>"; "'>";
} }
} else { } else {
oldRow.style.display = show ? "" : "none"; callObj.row.style.display = show ? "" : "none";
} }
} }
function showAllCallsigns() { function showAllCallsigns() {
let count = 0; var count = 0;
for (let x in window.opener.g_gtFlagPins) { for (var x in window.opener.g_gtFlagPins) {
let obj = window.opener.g_gtFlagPins[x]; var obj = window.opener.g_gtFlagPins[x];
if (obj.call != "" && obj.call != "NOCALL" && obj.canmsg == true) { if (obj.call != "" && obj.call != "NOCALL" && obj.canmsg == true) {
let show = true; var show = true;
try { try {
if (searchBox.value.length > 0 && !obj.call.match(searchBox.value)) { if (searchBox.value.length > 0 && !obj.call.match(searchBox.value)) {
show = false; show = false;

Wyświetl plik

@ -316,7 +316,7 @@ function gtChatUpdateCall(jsmesg)
{ {
g_gtFlagPins[cid] = Object(); g_gtFlagPins[cid] = Object();
g_gtFlagPins[cid].pin = null; g_gtFlagPins[cid].pin = null;
g_gtFlagPins[cid].row = null;
g_gtFlagPins[cid].ids = Object(); g_gtFlagPins[cid].ids = Object();
g_gtFlagPins[cid].ids[id] = true; g_gtFlagPins[cid].ids[id] = true;
} }
@ -324,6 +324,7 @@ function gtChatUpdateCall(jsmesg)
g_gtFlagPins[cid].cid = jsmesg.cid; g_gtFlagPins[cid].cid = jsmesg.cid;
g_gtFlagPins[cid].call = jsmesg.call; g_gtFlagPins[cid].call = jsmesg.call;
g_gtFlagPins[cid].fCall = jsmesg.call.formatCallsign();
g_gtFlagPins[cid].grid = jsmesg.grid; g_gtFlagPins[cid].grid = jsmesg.grid;
g_gtFlagPins[cid].freq = jsmesg.freq; g_gtFlagPins[cid].freq = jsmesg.freq;
g_gtFlagPins[cid].band = jsmesg.band; g_gtFlagPins[cid].band = jsmesg.band;
@ -443,10 +444,12 @@ function gtChatNewList(jsmesg)
g_gtFlagPins[cid].ids = Object(); g_gtFlagPins[cid].ids = Object();
g_gtFlagPins[cid].ids[id] = true; g_gtFlagPins[cid].ids[id] = true;
g_gtFlagPins[cid].pin = null; g_gtFlagPins[cid].pin = null;
g_gtFlagPins[cid].row = null;
} }
g_gtIdToCid[id] = cid; g_gtIdToCid[id] = cid;
g_gtFlagPins[cid].call = jsmesg.data.calls[key]; 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].grid = jsmesg.data.grid[key];
g_gtFlagPins[cid].freq = jsmesg.data.freq[key]; g_gtFlagPins[cid].freq = jsmesg.data.freq[key];
g_gtFlagPins[cid].band = jsmesg.data.band[key]; g_gtFlagPins[cid].band = jsmesg.data.band[key];