Use dashboards to show the graphs
This commit is contained in:
parent
a1208eed48
commit
1d8ba23969
|
@ -3,11 +3,11 @@ use serde::Deserialize;
|
||||||
|
|
||||||
#[derive(Deserialize, Default, Clone)]
|
#[derive(Deserialize, Default, Clone)]
|
||||||
pub struct DashboardConfig {
|
pub struct DashboardConfig {
|
||||||
graphs: Vec<GraphConfig>,
|
pub graphs: Vec<GraphConfig>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Deserialize, Clone)]
|
#[derive(Deserialize, Clone)]
|
||||||
pub struct GraphConfig {
|
pub struct GraphConfig {
|
||||||
name: String,
|
pub name: String,
|
||||||
kind: MetricKind,
|
pub kind: MetricKind,
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,9 +22,29 @@ pub struct MetricsGui {
|
||||||
|
|
||||||
impl App for MetricsGui {
|
impl App for MetricsGui {
|
||||||
fn update(&mut self, ctx: &CtxRef, _frame: &mut Frame<'_>) {
|
fn update(&mut self, ctx: &CtxRef, _frame: &mut Frame<'_>) {
|
||||||
|
let Self {
|
||||||
|
requester,
|
||||||
|
dashboard,
|
||||||
|
} = self;
|
||||||
CentralPanel::default().show(ctx, |ui| {
|
CentralPanel::default().show(ctx, |ui| {
|
||||||
ui.label("Hah");
|
egui::ScrollArea::new([false, true]).show(ui, |ui| {
|
||||||
Graph::draw(ui, MetricId(0), &self.requester);
|
if let Some(dashboard) = dashboard {
|
||||||
|
let window = requester.shared.current_window.read().unwrap();
|
||||||
|
for graph in dashboard.graphs.iter() {
|
||||||
|
ui.label(&graph.name);
|
||||||
|
|
||||||
|
if let Some(metric) = window.metrics.get(&graph.name) {
|
||||||
|
// TODO support multiple labelled metrics
|
||||||
|
if let Some((_, first_one)) = metric.iter().next() {
|
||||||
|
Graph::draw(ui, *first_one, requester);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
ui.label("(no dashboard)");
|
||||||
|
Graph::draw(ui, MetricId(0), &requester);
|
||||||
|
}
|
||||||
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue