use crate::task::{Task, TaskRow};
use comfy_table::{Cell, CellAlignment, Table, presets};
pub fn list_table(tasks: &[Task]) -> Table {
let mut table = new_task_table();
for (i, task) in tasks.iter().enumerate() {
let row = TaskRow { task, no: i + 1 };
table.add_row(row.to_table());
}
table
}
pub fn show_table(task: &Task, no: usize) -> Table {
let mut table = new_task_table();
let row = TaskRow { task, no };
table.add_row(row.to_table());
table
}
fn new_task_table() -> Table {
let mut table = Table::new();
table.load_style(presets::ASCII_MARKDOWN); set_header(&mut table);
let alignments = [
CellAlignment::Center, CellAlignment::Left, CellAlignment::Center, CellAlignment::Center, CellAlignment::Left, CellAlignment::Center, ];
for (i, align) in alignments.iter().enumerate() {
if let Some(col) = table.column_mut(i) {
col.set_cell_alignment(*align);
}
}
table
}
fn set_header(table: &mut Table) {
table.set_header(vec![
Cell::new("status").set_alignment(CellAlignment::Center),
Cell::new("no").set_alignment(CellAlignment::Center),
Cell::new("priority").set_alignment(CellAlignment::Center),
Cell::new("deadline").set_alignment(CellAlignment::Center),
Cell::new("task").set_alignment(CellAlignment::Center),
Cell::new("more").set_alignment(CellAlignment::Center),
]);
}