use super::{Panel, PanelKind};
use crate::source::{SourceId, Symbol};
use crate::state::AppState;
use crate::view::{BarStreamView, BarsView, PanelView};
#[derive(Debug)]
pub struct BarsPanel {
pub(crate) bars: usize,
}
impl Panel for BarsPanel {
fn kind(&self) -> PanelKind {
PanelKind::Bars
}
fn view(&self, state: &AppState, focus: (SourceId, &Symbol)) -> PanelView {
let symbol = focus.1.to_string();
let streams = state
.get(&(focus.0, focus.1.clone()))
.map(|st| {
st.bars
.streams(self.bars)
.into_iter()
.map(|(label, bars)| BarStreamView {
label: label.to_string(),
bars,
})
.collect()
})
.unwrap_or_default();
PanelView::Bars(BarsView { symbol, streams })
}
}