diff options
Diffstat (limited to 'src/render')
-rw-r--r-- | src/render/tasks.rs | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/render/tasks.rs b/src/render/tasks.rs new file mode 100644 index 0000000..0f6a79a --- /dev/null +++ b/src/render/tasks.rs @@ -0,0 +1,34 @@ +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<Row> = 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); + } +} |