diff --git a/web/views/index.erb b/web/views/index.erb index 57c88f7..3401011 100644 --- a/web/views/index.erb +++ b/web/views/index.erb @@ -255,13 +255,15 @@ .replace(/'/g, '''); } - function renderShortHtml(short, role){ + function renderShortHtml(short, role, longName){ + const safeTitle = longName ? escapeHtml(String(longName)) : ''; + const titleAttr = safeTitle ? ` title="${safeTitle}"` : ''; if (!short) { - return `?   `; + return `?   `; } const padded = escapeHtml(String(short).padStart(4, ' ')).replace(/ /g, ' '); const color = roleColors[role] || roleColors.CLIENT; - return `${padded}`; + return `${padded}`; } function appendChatEntry(div) { @@ -292,7 +294,7 @@ const div = document.createElement('div'); const ts = formatTime(new Date(n.first_heard * 1000)); div.className = 'chat-entry-node'; - const short = renderShortHtml(n.short_name, n.role); + const short = renderShortHtml(n.short_name, n.role, n.long_name); const longName = escapeHtml(n.long_name || ''); div.innerHTML = `[${ts}] ${short} New node: ${longName}`; appendChatEntry(div); @@ -302,7 +304,7 @@ maybeAddDateDivider(m.rx_time); const div = document.createElement('div'); const ts = formatTime(new Date(m.rx_time * 1000)); - const short = renderShortHtml(m.node?.short_name, m.node?.role); + const short = renderShortHtml(m.node?.short_name, m.node?.role, m.node?.long_name); const text = escapeHtml(m.text || ''); div.className = 'chat-entry-msg'; div.innerHTML = `[${ts}] ${short} ${text}`; @@ -399,7 +401,7 @@ const tr = document.createElement('tr'); tr.innerHTML = ` ${n.node_id || ""} - ${renderShortHtml(n.short_name, n.role)} + ${renderShortHtml(n.short_name, n.role, n.long_name)} ${n.long_name || ""} ${timeAgo(n.last_heard, nowSec)} ${n.role || "CLIENT"} @@ -439,7 +441,7 @@ }); const lines = [ `${n.long_name || ''}`, - `${renderShortHtml(n.short_name, n.role)} ${n.node_id || ''}`, + `${renderShortHtml(n.short_name, n.role, n.long_name)} ${n.node_id || ''}`, n.hw_model ? `Model: ${fmtHw(n.hw_model)}` : null, `Role: ${n.role || 'CLIENT'}`, (n.battery_level != null ? `Battery: ${fmtAlt(n.battery_level, "%")}, ${fmtAlt(n.voltage, "V")}` : null),