Hide dashboard status placeholders until ready
- Keep the sidebar and dashboard service cards neutral until the first /status payload arrives - Prevent placeholder source names and card text from flashing on dashboard load - Reveal the real service status only after the live snapshot populates the UI
This commit is contained in:
parent
a2176af00e
commit
2693640c62
3 changed files with 31 additions and 12 deletions
|
|
@ -279,17 +279,17 @@
|
|||
<!-- Status Section -->
|
||||
<div class="status-section">
|
||||
<h4 class="status-title">Service Status</h4>
|
||||
<div class="status-indicator" id="metadata-source-indicator">
|
||||
<div class="status-indicator" id="metadata-source-indicator" data-status-ready="false">
|
||||
<span class="status-dot disconnected"></span>
|
||||
<span class="status-name" id="metadata-source-name">Spotify</span>
|
||||
<span class="status-name" id="metadata-source-name">Metadata Source</span>
|
||||
</div>
|
||||
<div class="status-indicator" id="media-server-indicator">
|
||||
<div class="status-indicator" id="media-server-indicator" data-status-ready="false">
|
||||
<span class="status-dot disconnected"></span>
|
||||
<span class="status-name" id="media-server-name">Plex</span>
|
||||
<span class="status-name" id="media-server-name">Media Server</span>
|
||||
</div>
|
||||
<div class="status-indicator" id="soulseek-indicator">
|
||||
<div class="status-indicator" id="soulseek-indicator" data-status-ready="false">
|
||||
<span class="status-dot disconnected"></span>
|
||||
<span class="status-name" id="download-source-name">Soulseek</span>
|
||||
<span class="status-name" id="download-source-name">Download Source</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -616,9 +616,9 @@
|
|||
<div class="dashboard-section">
|
||||
<h3 class="section-title">Service Status</h3>
|
||||
<div class="service-status-grid">
|
||||
<div class="service-card" id="metadata-source-service-card">
|
||||
<div class="service-card" id="metadata-source-service-card" data-status-ready="false">
|
||||
<div class="service-card-header">
|
||||
<span class="service-card-title" id="metadata-source-title">Spotify</span>
|
||||
<span class="service-card-title" id="metadata-source-title">Metadata Source</span>
|
||||
<span class="service-card-indicator disconnected"
|
||||
id="metadata-source-status-indicator">●</span>
|
||||
</div>
|
||||
|
|
@ -629,9 +629,9 @@
|
|||
onclick="testDashboardConnection(getActiveMetadataSource())">Test Connection</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="service-card" id="media-server-service-card">
|
||||
<div class="service-card" id="media-server-service-card" data-status-ready="false">
|
||||
<div class="service-card-header">
|
||||
<span class="service-card-title" id="media-server-service-name">Server</span>
|
||||
<span class="service-card-title" id="media-server-service-name">Media Server</span>
|
||||
<span class="service-card-indicator disconnected"
|
||||
id="media-server-status-indicator">●</span>
|
||||
</div>
|
||||
|
|
@ -642,9 +642,9 @@
|
|||
Connection</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="service-card" id="soulseek-service-card">
|
||||
<div class="service-card" id="soulseek-service-card" data-status-ready="false">
|
||||
<div class="service-card-header">
|
||||
<span class="service-card-title" id="download-source-title">Soulseek</span>
|
||||
<span class="service-card-title" id="download-source-title">Download Source</span>
|
||||
<span class="service-card-indicator disconnected"
|
||||
id="soulseek-status-indicator">●</span>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -3282,9 +3282,14 @@ function getMetadataSourcePresentation(metadataStatus, spotifyStatus) {
|
|||
}
|
||||
|
||||
function updateServiceStatus(service, statusData, spotifyStatus = null) {
|
||||
const serviceCard = document.getElementById(`${service}-service-card`);
|
||||
const indicator = document.getElementById(`${service}-status-indicator`);
|
||||
const statusText = document.getElementById(`${service}-status-text`);
|
||||
|
||||
if (serviceCard) {
|
||||
serviceCard.dataset.statusReady = 'true';
|
||||
}
|
||||
|
||||
if (indicator && statusText) {
|
||||
if (service === 'metadata-source') {
|
||||
const presentation = getMetadataSourcePresentation(statusData || {}, spotifyStatus || {});
|
||||
|
|
@ -3353,6 +3358,7 @@ function updateServiceStatus(service, statusData, spotifyStatus = null) {
|
|||
function updateSidebarServiceStatus(service, statusData, spotifyStatus = null) {
|
||||
const indicator = document.getElementById(`${service}-indicator`);
|
||||
if (indicator) {
|
||||
indicator.dataset.statusReady = 'true';
|
||||
const dot = indicator.querySelector('.status-dot');
|
||||
const nameElement = indicator.querySelector('.status-name');
|
||||
|
||||
|
|
|
|||
|
|
@ -2820,6 +2820,19 @@ body.helper-mode-active #dashboard-activity-feed:hover {
|
|||
font-weight: 400;
|
||||
}
|
||||
|
||||
.status-indicator[data-status-ready="false"] .status-dot,
|
||||
.status-indicator[data-status-ready="false"] .status-name,
|
||||
.service-card[data-status-ready="false"] .service-card-title,
|
||||
.service-card[data-status-ready="false"] .service-card-indicator,
|
||||
.service-card[data-status-ready="false"] .service-card-status-text,
|
||||
.service-card[data-status-ready="false"] .service-card-response-time {
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
#metadata-source-service-card[data-status-ready="false"] .service-card-button {
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
/* =====================================
|
||||
MAIN CONTENT AREA STYLING
|
||||
===================================== */
|
||||
|
|
|
|||
Loading…
Reference in a new issue