summaryrefslogtreecommitdiff
path: root/src/render
diff options
context:
space:
mode:
Diffstat (limited to 'src/render')
-rw-r--r--src/render/tasks.rs34
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);
+ }
+}