feat: compact member cards
This commit is contained in:
@@ -333,11 +333,10 @@ class ClusterMembersComponent extends Component {
|
||||
const statusElement = card.querySelector('.member-status');
|
||||
if (statusElement) {
|
||||
const statusClass = member.status === 'active' ? 'status-online' : 'status-offline';
|
||||
const statusText = member.status === 'active' ? 'Online' : 'Offline';
|
||||
const statusIcon = member.status === 'active' ? '🟢' : '🔴';
|
||||
|
||||
statusElement.className = `member-status ${statusClass}`;
|
||||
statusElement.innerHTML = `${statusIcon} ${statusText}`;
|
||||
statusElement.innerHTML = `${statusIcon}`;
|
||||
}
|
||||
|
||||
// Update latency
|
||||
@@ -347,7 +346,7 @@ class ClusterMembersComponent extends Component {
|
||||
}
|
||||
|
||||
// Update hostname if changed
|
||||
const hostnameElement = card.querySelector('.member-name');
|
||||
const hostnameElement = card.querySelector('.member-hostname');
|
||||
if (hostnameElement && member.hostname !== hostnameElement.textContent) {
|
||||
hostnameElement.textContent = member.hostname || 'Unknown Device';
|
||||
}
|
||||
@@ -447,18 +446,24 @@ class ClusterMembersComponent extends Component {
|
||||
<div class="member-card" data-member-ip="${member.ip}">
|
||||
<div class="member-header">
|
||||
<div class="member-info">
|
||||
<div class="member-name">${member.hostname || 'Unknown Device'}</div>
|
||||
<div class="member-ip">${member.ip || 'No IP'}</div>
|
||||
<div class="member-status ${statusClass}">
|
||||
${statusIcon} ${statusText}
|
||||
</div>
|
||||
<div class="member-latency">
|
||||
<span class="latency-label">Latency:</span>
|
||||
<span class="latency-value">${member.latency ? member.latency + 'ms' : 'N/A'}</span>
|
||||
<div class="member-row-1">
|
||||
<div class="status-hostname-group">
|
||||
<div class="member-status ${statusClass}">
|
||||
${statusIcon}
|
||||
</div>
|
||||
<div class="member-hostname">${member.hostname || 'Unknown Device'}</div>
|
||||
</div>
|
||||
<div class="member-ip">${member.ip || 'No IP'}</div>
|
||||
<div class="member-latency">
|
||||
<span class="latency-label">Latency:</span>
|
||||
<span class="latency-value">${member.latency ? member.latency + 'ms' : 'N/A'}</span>
|
||||
</div>
|
||||
</div>
|
||||
${member.labels && Object.keys(member.labels).length ? `
|
||||
<div class="member-labels">
|
||||
${Object.entries(member.labels).map(([key, value]) => `<span class=\"label-chip\">${key}: ${value}</span>`).join('')}
|
||||
<div class="member-row-2">
|
||||
<div class="member-labels">
|
||||
${Object.entries(member.labels).map(([key, value]) => `<span class=\"label-chip\">${key}: ${value}</span>`).join('')}
|
||||
</div>
|
||||
</div>
|
||||
` : ''}
|
||||
</div>
|
||||
@@ -3070,14 +3075,18 @@ class MemberCardOverlayComponent extends Component {
|
||||
<div class="member-card expanded" data-member-ip="${member.ip}">
|
||||
<div class="member-header">
|
||||
<div class="member-info">
|
||||
<div class="member-name">${member.hostname || 'Unknown Device'}</div>
|
||||
<div class="member-ip">${member.ip || 'No IP'}</div>
|
||||
<div class="member-status ${statusClass}">
|
||||
${statusIcon} ${statusText}
|
||||
</div>
|
||||
<div class="member-latency">
|
||||
<span class="latency-label">Latency:</span>
|
||||
<span class="latency-value">${member.latency ? member.latency + 'ms' : 'N/A'}</span>
|
||||
<div class="member-row-1">
|
||||
<div class="status-hostname-group">
|
||||
<div class="member-status ${statusClass}">
|
||||
${statusIcon}
|
||||
</div>
|
||||
<div class="member-hostname">${member.hostname || 'Unknown Device'}</div>
|
||||
</div>
|
||||
<div class="member-ip">${member.ip || 'No IP'}</div>
|
||||
<div class="member-latency">
|
||||
<span class="latency-label">Latency:</span>
|
||||
<span class="latency-value">${member.latency ? member.latency + 'ms' : 'N/A'}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="member-labels" style="display: none;">
|
||||
<!-- Labels will be populated dynamically from node status API -->
|
||||
|
||||
Reference in New Issue
Block a user