use std::borrow::Cow; use tui::text::Text; use crate::{ components::data_table::{ColumnHeader, DataTableColumn, DataToCell}, utils::gen_util::truncate_to_text, }; pub struct SortTableColumn; impl ColumnHeader for SortTableColumn { fn text(&self) -> Cow<'static, str> { "Sort By".into() } } impl DataToCell for &'static str { fn to_cell<'a>(&'a self, _column: &SortTableColumn, calculated_width: u16) -> Option> { if calculated_width == 0 { return None; } Some(truncate_to_text(self, calculated_width)) } fn column_widths>(data: &[Self], _columns: &[C]) -> Vec where Self: Sized, { vec![data.iter().map(|d| d.len() as u16).max().unwrap_or(0)] } } impl DataToCell for Cow<'static, str> { fn to_cell<'a>(&'a self, _column: &SortTableColumn, calculated_width: u16) -> Option> { if calculated_width == 0 { return None; } Some(truncate_to_text(self, calculated_width)) } fn column_widths>(data: &[Self], _columns: &[C]) -> Vec where Self: Sized, { vec![data.iter().map(|d| d.len() as u16).max().unwrap_or(0)] } }