This commit is contained in:
Mateusz Gruszczyński committed 2026-10-15 10:37:23 +02:00
1 parent 2ccc598b12
commit b757b34a31
26 files changed
+671 -116

No files matched your search

+58
View File
@@ -87,3 +87,61 @@ static DASHBOARD_WIDGETS: std::sync::LazyLock<Vec<DashboardWidgetDefinition>> =
serde_json::from_str(include_str!("web/dashboard-widgets.json"))
.expect("invalid bundled Overview Cards registry")
});
// A single operator-curated factory preset feeds both the Rust API defaults
// and the authenticated dashboard. New registry widgets remain opt-in unless
// explicitly added to the preset; saved user preferences are never rewritten.
#[derive(serde::Deserialize)]
#[serde(deny_unknown_fields)]
struct DashboardDefaultPreset {
dashboard_widgets: Vec<String>,
dashboard_hidden_widgets: Vec<String>,
dashboard_density: String,
overview_samples: u16,
}
static DASHBOARD_DEFAULT_PRESET: std::sync::LazyLock<DashboardDefaultPreset> =
std::sync::LazyLock::new(|| {
let preset: DashboardDefaultPreset =
serde_json::from_str(include_str!("web/dashboard-defaults.json"))
.expect("invalid factory Overview layout preset");
let registry = DASHBOARD_WIDGETS
.iter()
.map(|w| w.id.as_str())
.collect::<std::collections::HashSet<_>>();
let order = preset
.dashboard_widgets
.iter()
.map(String::as_str)
.collect::<std::collections::HashSet<_>>();
let hidden = preset
.dashboard_hidden_widgets
.iter()
.map(String::as_str)
.collect::<std::collections::HashSet<_>>();
assert_eq!(
order.len(),
preset.dashboard_widgets.len(),
"duplicate factory widget ID"
);
assert_eq!(
hidden.len(),
preset.dashboard_hidden_widgets.len(),
"duplicate hidden factory widget ID"
);
assert!(
order.is_subset(&registry) && hidden.is_subset(&order),
"unknown widget in factory layout"
);
assert!(
matches!(
preset.dashboard_density.as_str(),
"normal" | "compact" | "ultra"
),
"invalid factory density"
);
assert!(
matches!(preset.overview_samples, 60 | 120 | 300 | 600),
"invalid factory sample count"
);
preset
});