v0.33.3
This commit is contained in:
1 parent
5a36bb0c4b
commit
78ad28ef4d
27 files changed
+1448
-234
No files matched your search
@@ -81,6 +81,7 @@ const STREAM_LIST_SORT_COLUMNS: &[&str] = &[
|
||||
struct DashboardWidgetDefinition {
|
||||
id: String,
|
||||
default_hidden: bool,
|
||||
display_type: String,
|
||||
}
|
||||
static DASHBOARD_WIDGETS: std::sync::LazyLock<Vec<DashboardWidgetDefinition>> =
|
||||
std::sync::LazyLock::new(|| {
|
||||
@@ -145,3 +146,49 @@ static DASHBOARD_DEFAULT_PRESET: std::sync::LazyLock<DashboardDefaultPreset> =
|
||||
);
|
||||
preset
|
||||
});
|
||||
|
||||
// None denotes the legacy grouped layout. Some({}) switches to freely
|
||||
// ordered 12-column CSS Grid while retaining every historical card width.
|
||||
fn valid_dashboard_span(display_type: &str, span: u8) -> bool {
|
||||
match display_type {
|
||||
"table" => matches!(span, 6 | 12),
|
||||
"panel" => matches!(span, 4 | 6 | 12),
|
||||
"chart" => matches!(span, 3 | 4 | 6 | 12),
|
||||
_ => matches!(span, 2 | 3 | 4 | 6 | 12),
|
||||
}
|
||||
}
|
||||
|
||||
fn valid_dashboard_sizes(sizes: &Option<std::collections::BTreeMap<String, u8>>) -> bool {
|
||||
sizes.as_ref().is_none_or(|sizes| {
|
||||
sizes.len() <= DASHBOARD_WIDGETS.len()
|
||||
&& sizes.iter().all(|(id, span)| {
|
||||
DASHBOARD_WIDGETS.iter().any(|widget| {
|
||||
widget.id == *id && valid_dashboard_span(&widget.display_type, *span)
|
||||
})
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
fn default_hidden_dashboard_widgets() -> Vec<String> {
|
||||
let mut hidden = DASHBOARD_DEFAULT_PRESET.dashboard_hidden_widgets.clone();
|
||||
for widget in DASHBOARD_WIDGETS.iter() {
|
||||
if !DASHBOARD_DEFAULT_PRESET
|
||||
.dashboard_widgets
|
||||
.contains(&widget.id)
|
||||
&& widget.default_hidden
|
||||
{
|
||||
hidden.push(widget.id.clone());
|
||||
}
|
||||
}
|
||||
hidden
|
||||
}
|
||||
|
||||
fn default_admin_dashboard_widgets() -> Vec<String> {
|
||||
let mut order = DASHBOARD_DEFAULT_PRESET.dashboard_widgets.clone();
|
||||
for widget in DASHBOARD_WIDGETS.iter() {
|
||||
if !order.contains(&widget.id) {
|
||||
order.push(widget.id.clone());
|
||||
}
|
||||
}
|
||||
order
|
||||
}
|
||||
Reference in new issue
Block a user