use std::fmt::Debug;
#[derive(Debug, Clone, Eq, PartialEq)]
pub struct SortBy {
pub column_name: String,
pub ascending: bool,
pub nulls_last: bool,
}
#[derive(Debug, Clone, Eq, PartialEq)]
pub enum HeaderSortState {
NotSorted,
DescendingNullsFirst, AscendingNullsFirst, DescendingNullsLast, AscendingNullsLast, }
impl HeaderSortState {
pub fn cycle_next(&self) -> Self {
match self {
HeaderSortState::NotSorted => HeaderSortState::DescendingNullsFirst,
HeaderSortState::DescendingNullsFirst => HeaderSortState::AscendingNullsFirst,
HeaderSortState::AscendingNullsFirst => HeaderSortState::DescendingNullsLast,
HeaderSortState::DescendingNullsLast => HeaderSortState::AscendingNullsLast,
HeaderSortState::AscendingNullsLast => HeaderSortState::NotSorted,
}
}
pub fn get_icon(&self, index: Option<usize>) -> String {
let base_icon = match self {
HeaderSortState::DescendingNullsFirst => "⏷", HeaderSortState::AscendingNullsFirst => "⏶",
HeaderSortState::DescendingNullsLast => "⬇",
HeaderSortState::AscendingNullsLast => "⬆",
HeaderSortState::NotSorted => "↕", };
match index {
Some(idx) => format!("{}{}", idx + 1, base_icon),
None => base_icon.to_string(),
}
}
}