This is an automated email from the ASF dual-hosted git repository.
wu-sheng pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/skywalking-horizon-ui.git
The following commit(s) were added to refs/heads/main by this push:
new e462a7b ui dashboards: drop "Select an instance above" gate that
masked auto-pick
e462a7b is described below
commit e462a7bae892147f5aa675a2b61d9987dedcbf8a
Author: Wu Sheng <[email protected]>
AuthorDate: Sun May 17 19:44:15 2026 +0800
ui dashboards: drop "Select an instance above" gate that masked auto-pick
When the operator clicked a different service, setSelected dropped
the URL ?instance=. Before the instance auto-pick fired (the
instance query needs the BFF roundtrip), the template fell into
the `scope === 'instance' && serviceName && !selectedInstance`
branch and rendered "Select an instance above to view its
metrics". That message implied operator action was needed, while
in reality the auto-pick was already running in the background.
The operator saw "nothing happens" for a beat, then the cascade
visibly resumed — the "frozen for seconds, then suddenly working"
symptom.
Both the instance- and endpoint-scope "Select X above…" branches
are now removed. The picker handles its own empty state (header
"loading instances…" hint, "no active instances reported" copy
once the list resolves empty), and the widget grid's "Reading
data…" gate covers the upstream wait for everyone else.
---
.../render/layer-dashboard/LayerDashboardsView.vue | 19 +++++++------------
1 file changed, 7 insertions(+), 12 deletions(-)
diff --git a/apps/ui/src/render/layer-dashboard/LayerDashboardsView.vue
b/apps/ui/src/render/layer-dashboard/LayerDashboardsView.vue
index 65de3ce..13e9379 100644
--- a/apps/ui/src/render/layer-dashboard/LayerDashboardsView.vue
+++ b/apps/ui/src/render/layer-dashboard/LayerDashboardsView.vue
@@ -586,21 +586,16 @@ function isVisible(
</section>
<div v-if="configLoading" class="empty">Loading dashboard config…</div>
- <div
- v-else-if="scope === 'endpoint' && serviceName && !selectedEndpoint"
- class="empty"
- >
- Select an endpoint above to view its metrics.
- </div>
- <div
- v-else-if="scope === 'instance' && serviceName && !selectedInstance"
- class="empty"
- >
- Select an instance above to view its metrics.
- </div>
<div v-else-if="widgets.length === 0" class="empty">
No widgets defined for this layer. Phase 7 admin will let operators add
their own.
</div>
+ <!-- The previous "Select an instance/endpoint above to view its
+ metrics" branches implied operator action was needed and
+ masked the (already-running) auto-pick — which made every
+ service click feel frozen for a beat before the cascade
+ visibly resumed. The picker handles its own empty state;
+ the "Reading data…" gate below covers the upstream wait. -->
+
<!-- Single page-level loading state while we don't yet have
widget data to render. Covers the whole upstream wait,
not just the dashboard fetch: