bevy_metrics_dashboard/
lib.rs

1#![warn(missing_docs)]
2#![doc = include_str!("../README.md")]
3
4mod core_metrics_plugin;
5#[cfg(feature = "bevy_egui")]
6mod dashboard_plugin;
7mod dashboard_window;
8mod dropdown_list;
9mod namespace_tree;
10pub mod plots;
11pub mod registry;
12mod registry_plugin;
13mod ring;
14mod search_bar;
15
16#[cfg(feature = "render_metrics")]
17mod render_metrics_plugin;
18
19pub use core_metrics_plugin::CoreMetricsPlugin;
20#[cfg(feature = "bevy_egui")]
21pub use dashboard_plugin::DashboardPlugin;
22pub use dashboard_window::{CachedPlotConfigs, DashboardConfig, DashboardWindow, RequestPlot};
23pub use namespace_tree::NamespaceTreeWindow;
24pub use registry_plugin::{ClearBucketsSystem, RegistryPlugin};
25pub use search_bar::SearchBar;
26
27#[cfg(feature = "render_metrics")]
28pub use render_metrics_plugin::RenderMetricsPlugin;
29
30pub use egui;
31pub use egui_plot;
32
33pub use metrics;
34pub use metrics_util;
35
36// TODO:
37// - dedup some of the code between gauge and counter widgets
38// - extract egui-only crate (with no bevy dep)
39// - don't assume there is a single egui context
40// - automatic significant figures
41// - automatically determine histogram bucket bounds
42// - search by label and description
43// - multiple metrics on one plot
44// - rename and save plots
45// - drag and drop plots (requires egui 0.26)
46
47use metrics::Unit;
48use metrics_util::MetricKind;
49
50fn metric_kind_str(kind: MetricKind) -> &'static str {
51    match kind {
52        MetricKind::Counter => "counter",
53        MetricKind::Gauge => "gauge",
54        MetricKind::Histogram => "histogram",
55    }
56}
57
58fn unit_str(unit: Unit) -> &'static str {
59    match unit {
60        Unit::Count => "count",
61        Unit::Percent => "%",
62        Unit::Seconds => "s",
63        Unit::Milliseconds => "ms",
64        Unit::Microseconds => "μs",
65        Unit::Nanoseconds => "ns",
66        Unit::Tebibytes => "TiB",
67        Unit::Gibibytes => "GiB",
68        Unit::Mebibytes => "MiB",
69        Unit::Kibibytes => "KiB",
70        Unit::Bytes => "B",
71        Unit::TerabitsPerSecond => "Tb/s",
72        Unit::GigabitsPerSecond => "Gb/s",
73        Unit::MegabitsPerSecond => "Mb/s",
74        Unit::KilobitsPerSecond => "Kb/s",
75        Unit::BitsPerSecond => "b/s",
76        Unit::CountPerSecond => "hz",
77    }
78}