orbital-datatable 0.1.1

Interactive DataTable product for the Orbital component library
Documentation
use crate::types::DataTableRowModel;

pub fn paginate_rows(
    rows: &[DataTableRowModel],
    page: usize,
    page_size: usize,
) -> Vec<DataTableRowModel> {
    if page_size == 0 {
        return rows.to_vec();
    }
    let start = page.saturating_mul(page_size);
    rows.iter().skip(start).take(page_size).cloned().collect()
}

#[cfg(test)]
mod tests {
    use super::*;
    use std::collections::HashMap;

    #[test]
    fn paginate_second_page() {
        let rows: Vec<_> = (0..15)
            .map(|i| {
                DataTableRowModel::from_text_cells(
                    i.to_string(),
                    HashMap::from([("n".into(), i.to_string())]),
                )
            })
            .collect();
        let page = paginate_rows(&rows, 1, 10);
        assert_eq!(page.len(), 5);
        assert_eq!(page[0].id(), "10");
    }
}