Compact live visitor panel
This commit is contained in:
+17
-15
@@ -199,6 +199,14 @@ $("#messages").addEventListener("click", (event) => {
|
||||
openPhotoPreview(preview.dataset.photoUrl, preview.dataset.photoName);
|
||||
});
|
||||
|
||||
$("#visitorList").addEventListener("click", async (event) => {
|
||||
if (event.target.closest("a")) return;
|
||||
const card = event.target.closest("[data-visitor-conversation]");
|
||||
const conversationId = card?.dataset.visitorConversation;
|
||||
if (!conversationId) return;
|
||||
await openConversation(conversationId);
|
||||
});
|
||||
|
||||
async function showApp() {
|
||||
$("#loginView").classList.add("hidden");
|
||||
$("#appView").classList.remove("hidden");
|
||||
@@ -320,7 +328,7 @@ function renderConversations() {
|
||||
function renderVisitors() {
|
||||
$("#visitorCount").textContent = `${state.visitors.length} online`;
|
||||
$("#visitorList").innerHTML = state.visitors.length ? state.visitors.map((visitor) => `
|
||||
<article class="visitor-card">
|
||||
<article class="visitor-card ${visitor.lastConversationId ? "clickable" : ""}" data-visitor-conversation="${escapeHtml(visitor.lastConversationId || "")}">
|
||||
<div class="visitor-card-head">
|
||||
<span class="visitor-avatar">${escapeHtml(visitor.initials || "??")}</span>
|
||||
<div>
|
||||
@@ -329,20 +337,14 @@ function renderVisitors() {
|
||||
</div>
|
||||
<span class="online-dot" title="Online"></span>
|
||||
</div>
|
||||
<dl>
|
||||
<dt>Zeme</dt>
|
||||
<dd>${visitor.countryFlag || ""} ${escapeHtml(visitor.countryCode || "?")}</dd>
|
||||
<dt>Stranka</dt>
|
||||
<dd><a href="${escapeHtml(visitor.currentUrl || "#")}" target="_blank" rel="noreferrer">${escapeHtml(pageTitle(visitor))}</a></dd>
|
||||
<dt>Prisiel z</dt>
|
||||
<dd>${visitor.referrer ? `<a href="${escapeHtml(visitor.referrer)}" target="_blank" rel="noreferrer">${escapeHtml(referrerLabel(visitor.referrer))}</a>` : "primy vstup"}</dd>
|
||||
<dt>Cas</dt>
|
||||
<dd>${formatDuration(visitor.sessionSeconds)}</dd>
|
||||
<dt>Navstevy</dt>
|
||||
<dd>${Number(visitor.visitCount || visitor.pageCount || 1)}</dd>
|
||||
<dt>Chaty</dt>
|
||||
<dd>${Number(visitor.conversationCount || 0)}</dd>
|
||||
</dl>
|
||||
<div class="visitor-compact-meta">
|
||||
<span>${visitor.countryFlag || escapeHtml(visitor.countryCode || "?")}</span>
|
||||
<span>${formatDuration(visitor.sessionSeconds)}</span>
|
||||
<span>${Number(visitor.visitCount || visitor.pageCount || 1)} navst.</span>
|
||||
<span>${Number(visitor.conversationCount || 0)} chaty</span>
|
||||
</div>
|
||||
<a class="visitor-page" href="${escapeHtml(visitor.currentUrl || "#")}" target="_blank" rel="noreferrer">${escapeHtml(pageTitle(visitor))}</a>
|
||||
<div class="visitor-referrer">${visitor.referrer ? escapeHtml(referrerLabel(visitor.referrer)) : "primy vstup"}${visitor.lastConversationId ? "" : " · bez chatu"}</div>
|
||||
</article>
|
||||
`).join("") : `<p class="empty-list">Zatim nikdo online.</p>`;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user