rust-todo-cli 0.2.3

A CLI tool for managing to-do lists
use crate::task::{Task, TaskRow};
use comfy_table::{Cell, CellAlignment, Table, presets};

pub fn list_table(tasks: &[Task]) -> Table {
    let mut table = Table::new();
    table.load_style(presets::ASCII_MARKDOWN);
    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),
    ]);

    for (i, task) in tasks.iter().enumerate() {
        let row = TaskRow { task, no: i + 1 };
        table.add_row(row.to_table());
    }

    table
        .column_mut(0)
        .unwrap()
        .set_cell_alignment(CellAlignment::Center);
    table
        .column_mut(1)
        .unwrap()
        .set_cell_alignment(CellAlignment::Left);
    table
        .column_mut(2)
        .unwrap()
        .set_cell_alignment(CellAlignment::Center);
    table
        .column_mut(3)
        .unwrap()
        .set_cell_alignment(CellAlignment::Center);
    table
        .column_mut(4)
        .unwrap()
        .set_cell_alignment(CellAlignment::Left);
    table
        .column_mut(5)
        .unwrap()
        .set_cell_alignment(CellAlignment::Center);
    table
}

pub fn show_table(task: &Task, no: usize) -> Table {
    let mut table = Table::new();
    table.load_style(presets::ASCII_MARKDOWN);
    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),
    ]);
    let row = TaskRow { task, no };
    table.add_row(row.to_table());

    table
        .column_mut(0)
        .unwrap()
        .set_cell_alignment(CellAlignment::Center);
    table
        .column_mut(1)
        .unwrap()
        .set_cell_alignment(CellAlignment::Left);
    table
        .column_mut(2)
        .unwrap()
        .set_cell_alignment(CellAlignment::Center);
    table
        .column_mut(3)
        .unwrap()
        .set_cell_alignment(CellAlignment::Center);
    table
        .column_mut(4)
        .unwrap()
        .set_cell_alignment(CellAlignment::Left);
    table
        .column_mut(5)
        .unwrap()
        .set_cell_alignment(CellAlignment::Center);
    table
}