use super::Component;
use crate::action::Action;
use crate::components::fps::FpsCounter;
use color_eyre::Result;
use ratatui::text::ToSpan;
use ratatui::{prelude::*, widgets::*};

#[derive(Default)]
pub struct Footer<'a> {
    fps: FpsCounter<'a>,
    _up: Line<'a>,
}

impl Component for Footer<'_> {
    fn update(&mut self, action: Action) -> Result<Option<Action>> {
        match action {
            Action::Tick => {
                let _ = self.fps.update(Action::Tick);
            }
            Action::Render => {
                let _ = self.fps.update(Action::Render);
            }
            _ => {}
        }
        Ok(None)
    }
    fn draw(&mut self, frame: &mut Frame, area: Rect) -> Result<()> {
        let [_, bottom] = Layout::default()
            .direction(Direction::Vertical)
            .constraints(vec![Constraint::Min(0), Constraint::Length(1)])
            .areas(area);
        let [left, _, right] = Layout::horizontal(vec![
            Constraint::Percentage(40),
            Constraint::Percentage(20),
            Constraint::Percentage(40),
        ])
        .areas(bottom);

        let paragraph = Paragraph::new("up".to_span()).left_aligned();
        frame.render_widget(paragraph, left);

        let paragraph = self.fps.widget.clone().right_aligned();
        frame.render_widget(paragraph, right);

        Ok(())
    }
}