rat-ftable 2.2.0

ratatui table widget for large data
Documentation
#![allow(unreachable_pub)]

use crate::mini_salsa::layout_grid;
use rat_ftable::TableState;
use rat_ftable::selection::RowSelection;
use ratatui_core::buffer::Buffer;
use ratatui_core::layout::{Constraint, Layout, Rect};
use ratatui_core::widgets::Widget;
use std::fmt::Debug;

pub fn render_tablestate<Selection: Debug>(
    state: &TableState<Selection>,
    area: Rect,
    buf: &mut Buffer,
) {
    let l_grid = layout_grid::<2, 12>(
        area,
        Layout::horizontal([Constraint::Length(15), Constraint::Length(20)]),
        Layout::vertical([
            Constraint::Length(1),
            Constraint::Length(1),
            Constraint::Length(1),
            Constraint::Length(1),
            Constraint::Length(1),
            Constraint::Length(1),
            Constraint::Length(1),
            Constraint::Length(1),
            Constraint::Length(1),
            Constraint::Length(1),
            Constraint::Length(1),
            Constraint::Length(1),
        ]),
    );

    "count_rows".render(l_grid[0][0], buf);
    format!("{}", state._counted_rows)
        .to_string()
        .render(l_grid[1][0], buf);

    "rows".render(l_grid[0][1], buf);
    format!("{}", state.rows)
        .to_string()
        .render(l_grid[1][1], buf);

    "row_offset".render(l_grid[0][2], buf);
    format!("{}", state.vscroll.offset())
        .to_string()
        .render(l_grid[1][2], buf);

    "max_row_offset".render(l_grid[0][3], buf);
    format!("{}", state.vscroll.max_offset())
        .to_string()
        .render(l_grid[1][3], buf);

    "row_page_len".render(l_grid[0][4], buf);
    format!("{}", state.vscroll.page_len())
        .to_string()
        .render(l_grid[1][4], buf);

    "row_scroll".render(l_grid[0][5], buf);
    format!("{}", state.vscroll.scroll_by())
        .to_string()
        .render(l_grid[1][5], buf);

    "columns".render(l_grid[0][6], buf);
    format!("{}", state.columns)
        .to_string()
        .render(l_grid[1][6], buf);

    "col_offset".render(l_grid[0][7], buf);
    format!("{}", state.hscroll.offset())
        .to_string()
        .render(l_grid[1][7], buf);

    "max_col_offset".render(l_grid[0][8], buf);
    format!("{}", state.hscroll.max_offset())
        .to_string()
        .render(l_grid[1][8], buf);

    "col_page_len".render(l_grid[0][9], buf);
    format!("{}", state.hscroll.page_len())
        .to_string()
        .render(l_grid[1][9], buf);

    "col_scrollby".render(l_grid[0][10], buf);
    format!("{}", state.hscroll.scroll_by())
        .to_string()
        .render(l_grid[1][10], buf);
}

pub fn render_tablestate_row(state: &TableState<RowSelection>, area: Rect, buf: &mut Buffer) {
    let l_grid = layout_grid::<2, 12>(
        area,
        Layout::horizontal([Constraint::Length(15), Constraint::Length(20)]),
        Layout::vertical([
            Constraint::Length(1),
            Constraint::Length(1),
            Constraint::Length(1),
            Constraint::Length(1),
            Constraint::Length(1),
            Constraint::Length(1),
            Constraint::Length(1),
            Constraint::Length(1),
            Constraint::Length(1),
            Constraint::Length(1),
            Constraint::Length(1),
            Constraint::Length(1),
        ]),
    );

    "count_rows".render(l_grid[0][0], buf);
    format!("{}", state._counted_rows)
        .to_string()
        .render(l_grid[1][0], buf);

    "rows".render(l_grid[0][1], buf);
    format!("{}", state.rows)
        .to_string()
        .render(l_grid[1][1], buf);

    "row_offset".render(l_grid[0][2], buf);
    format!("{}", state.vscroll.offset())
        .to_string()
        .render(l_grid[1][2], buf);

    "max_row_offset".render(l_grid[0][3], buf);
    format!("{}", state.vscroll.max_offset())
        .to_string()
        .render(l_grid[1][3], buf);

    "row_page_len".render(l_grid[0][4], buf);
    format!("{}", state.vscroll.page_len())
        .to_string()
        .render(l_grid[1][4], buf);

    "row_scroll".render(l_grid[0][5], buf);
    format!("{}", state.vscroll.scroll_by())
        .to_string()
        .render(l_grid[1][5], buf);

    "columns".render(l_grid[0][6], buf);
    format!("{}", state.columns)
        .to_string()
        .render(l_grid[1][6], buf);

    "col_offset".render(l_grid[0][7], buf);
    format!("{}", state.hscroll.offset())
        .to_string()
        .render(l_grid[1][7], buf);

    "max_col_offset".render(l_grid[0][8], buf);
    format!("{}", state.hscroll.max_offset())
        .to_string()
        .render(l_grid[1][8], buf);

    "col_page_len".render(l_grid[0][9], buf);
    format!("{}", state.hscroll.page_len())
        .to_string()
        .render(l_grid[1][9], buf);

    "col_scrollby".render(l_grid[0][10], buf);
    format!("{}", state.hscroll.scroll_by())
        .to_string()
        .render(l_grid[1][10], buf);

    "selection".render(l_grid[0][11], buf);
    format!("{:?}", state.selection.lead_row)
        .to_string()
        .render(l_grid[1][11], buf);
}