Fix bugs found in local testing
- Dashboard auto-refresh rendered the full layout into its own refresh container, producing a duplicate sidebar every 60s; it now renders only the body partial. - 'Run Now' runs synchronously with a bounded timeout and returns refreshed results plus success/error feedback, instead of firing-and-forgetting with no signal. - Price-history chart data moved from a <script> block to a data- attribute: templ does not interpolate expressions inside <script> element content, so the JSON was emitted literally. - The htmx indicator spinner was permanently visible due to CSS source order; the indicator rules now follow .v-spinner. Also refreshes README for this session's changes. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -34,7 +34,12 @@ type AlertRow struct {
|
||||
FoundAt time.Time
|
||||
}
|
||||
|
||||
templ dashboardBody(d DashboardData) {
|
||||
// DashboardBody is the self-refreshing inner block. It is both the initial
|
||||
// render target (inside Layout) and the response to /dashboard/refresh, so the
|
||||
// hx-swap="outerHTML" on its root div replaces it with a fresh copy of itself.
|
||||
// GetDashboardRefresh must render THIS, not Dashboard — rendering the full
|
||||
// Layout would inject a nested page (and a duplicate sidebar) into the div.
|
||||
templ DashboardBody(d DashboardData) {
|
||||
<div hx-get="/dashboard/refresh" hx-trigger="every 60s" hx-swap="outerHTML">
|
||||
<h1 class="text-3xl font-semibold mb-6">Dashboard</h1>
|
||||
<div class="grid grid-cols-2 md:grid-cols-4 gap-4 mb-6">
|
||||
@@ -111,7 +116,7 @@ templ statCard(label, value, sub string) {
|
||||
}
|
||||
|
||||
templ Dashboard(d DashboardData) {
|
||||
@Layout(d.Page, dashboardBody(d))
|
||||
@Layout(d.Page, DashboardBody(d))
|
||||
}
|
||||
|
||||
// Helpers used by multiple templates.
|
||||
|
||||
Reference in New Issue
Block a user