impl super::CsvViewer {
pub fn row_count(&self) -> usize {
if self.has_header && !self.data.is_empty() {
self.data.len() - 1
} else {
self.data.len()
}
}
pub fn column_count(&self) -> usize {
self.data.first().map(|r| r.len()).unwrap_or(0)
}
pub fn selected_row(&self) -> usize {
self.selected_row
}
pub fn selected_col(&self) -> usize {
self.selected_col
}
pub fn get_cell(&self, row: usize, col: usize) -> Option<&str> {
let actual_row = if self.has_header { row + 1 } else { row };
self.data
.get(actual_row)
.and_then(|r| r.get(col))
.map(|s| s.as_str())
}
pub fn get_header(&self, col: usize) -> Option<&str> {
if self.has_header {
self.data
.first()
.and_then(|r| r.get(col))
.map(|s| s.as_str())
} else {
None
}
}
pub fn selected_value(&self) -> Option<&str> {
self.get_cell(self.selected_row, self.selected_col)
}
pub fn is_searching(&self) -> bool {
!self.search_query.is_empty()
}
pub fn match_count(&self) -> usize {
self.search_matches.len()
}
}