solve #22
This commit is contained in:
@@ -65,6 +65,8 @@ impl Widget for &App {
|
|||||||
let mut display = String::new();
|
let mut display = String::new();
|
||||||
let mut style = Style::new().fg(Color::White);
|
let mut style = Style::new().fg(Color::White);
|
||||||
|
|
||||||
|
// Custom width for the header of each row
|
||||||
|
let row_header_width: u16 = 4;
|
||||||
let cell_width = self.screen.get_cell_width(&self.vars) as u16;
|
let cell_width = self.screen.get_cell_width(&self.vars) as u16;
|
||||||
let cell_height = self.screen.get_cell_height(&self.vars) as u16;
|
let cell_height = self.screen.get_cell_height(&self.vars) as u16;
|
||||||
|
|
||||||
@@ -95,6 +97,13 @@ impl Widget for &App {
|
|||||||
// row names
|
// row names
|
||||||
(true, false) => {
|
(true, false) => {
|
||||||
display = y_idx.to_string();
|
display = y_idx.to_string();
|
||||||
|
|
||||||
|
// center the text "99 " -> " 99 "
|
||||||
|
let margin = row_header_width as i32 - display.len() as i32;
|
||||||
|
let margin = margin/2;
|
||||||
|
let l_margin = (0..margin).into_iter().map(|_| ' ').collect::<String>();
|
||||||
|
let r_margin = (0..(margin-(l_margin.len() as i32))).into_iter().map(|_| ' ').collect::<String>();
|
||||||
|
display = format!("{l_margin}{display}{r_margin}");
|
||||||
|
|
||||||
let bg = if y_idx == self.grid.cursor().1 {
|
let bg = if y_idx == self.grid.cursor().1 {
|
||||||
Color::DarkGray
|
Color::DarkGray
|
||||||
@@ -187,10 +196,19 @@ impl Widget for &App {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if should_render {
|
if should_render {
|
||||||
let x_off = area.x + (x * cell_width);
|
let mut x_off = area.x + (x * cell_width);
|
||||||
let y_off = area.y + (y * cell_height);
|
let y_off = area.y + (y * cell_height);
|
||||||
|
|
||||||
let area = if let Some(suggestion) = suggest_upper_bound {
|
// Adjust for the fact that the first column
|
||||||
|
// is smaller, since it is just headers
|
||||||
|
if x > 0 {
|
||||||
|
x_off = x_off - (cell_width - row_header_width);
|
||||||
|
}
|
||||||
|
|
||||||
|
// If this is the row header column
|
||||||
|
let area = if x==0 && y != 0 {
|
||||||
|
Rect::new(x_off, y_off, row_header_width, cell_height)
|
||||||
|
} else if let Some(suggestion) = suggest_upper_bound {
|
||||||
let max_available_width = area.width - x_off;
|
let max_available_width = area.width - x_off;
|
||||||
// draw the biggest cell possible, without going OOB off the screen
|
// draw the biggest cell possible, without going OOB off the screen
|
||||||
let width = min(max_available_width, suggestion as u16);
|
let width = min(max_available_width, suggestion as u16);
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ use crate::app::{
|
|||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
use crate::app::app::App;
|
use crate::app::app::App;
|
||||||
|
|
||||||
pub const LEN: usize = 1000;
|
pub const LEN: usize = 1001;
|
||||||
pub const CSV_EXT: &str = "csv";
|
pub const CSV_EXT: &str = "csv";
|
||||||
pub const CUSTOM_EXT: &str = "nscim";
|
pub const CUSTOM_EXT: &str = "nscim";
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user