use ratatui::{layout::Constraint, widgets::{Row, Table, Widget}, prelude::Text}; use crate::model::Task; #[derive(Debug)] pub struct TaskList<'a> { tasks: &'a[Task] } impl<'a> TaskList<'a> { pub fn new(tasks: &'a[Task]) -> TaskList<'a> { TaskList { tasks } } } impl<'a> Widget for &TaskList<'a> { fn render(self, area: ratatui::prelude::Rect, buf: &mut ratatui::prelude::Buffer) { let rows: Vec = self.tasks.into_iter() .map(|t: &Task| Row::new(vec![Text::from(t.name.as_str()), Text::from(t.description.as_str())])) .collect(); let widths = [ Constraint::Percentage(50), Constraint::Fill(1), ]; Table::new(rows, widths) .render(area, buf); } }