Add CSV import functionality #1
66
src/main.rs
66
src/main.rs
@ -344,61 +344,59 @@ fn draw_title(f: &mut Frame, area: Rect, app: &App) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn draw_content(f: &mut Frame, area: Rect, app: &App) {
|
fn draw_content(f: &mut Frame, area: Rect, app: &App) {
|
||||||
let side_open = app.formula_panel_open || app.category_panel_open || app.view_panel_open;
|
let panel_count = [
|
||||||
|
app.formula_panel_open,
|
||||||
|
app.category_panel_open,
|
||||||
|
app.view_panel_open,
|
||||||
|
]
|
||||||
|
.iter()
|
||||||
|
.filter(|&&b| b)
|
||||||
|
.count();
|
||||||
|
|
||||||
if side_open {
|
let grid_area = if panel_count == 0 {
|
||||||
let side_w = 32u16;
|
area
|
||||||
|
} else {
|
||||||
let chunks = Layout::default()
|
let chunks = Layout::default()
|
||||||
.direction(Direction::Horizontal)
|
.direction(Direction::Horizontal)
|
||||||
.constraints([Constraint::Min(40), Constraint::Length(side_w)])
|
.constraints([Constraint::Min(40), Constraint::Length(32)])
|
||||||
.split(area);
|
.split(area);
|
||||||
|
|
||||||
f.render_widget(
|
let constraints: Vec<Constraint> =
|
||||||
GridWidget::new(&app.model, &app.mode, &app.search_query),
|
vec![Constraint::Ratio(1, panel_count as u32); panel_count];
|
||||||
chunks[0],
|
let panel_areas = Layout::default()
|
||||||
);
|
.direction(Direction::Vertical)
|
||||||
|
.constraints(constraints)
|
||||||
let side = chunks[1];
|
.split(chunks[1]);
|
||||||
let panel_count = [
|
|
||||||
app.formula_panel_open,
|
|
||||||
app.category_panel_open,
|
|
||||||
app.view_panel_open,
|
|
||||||
]
|
|
||||||
.iter()
|
|
||||||
.filter(|&&b| b)
|
|
||||||
.count() as u16;
|
|
||||||
let ph = side.height / panel_count.max(1);
|
|
||||||
let mut y = side.y;
|
|
||||||
|
|
||||||
|
let mut slot = 0;
|
||||||
if app.formula_panel_open {
|
if app.formula_panel_open {
|
||||||
let a = Rect::new(side.x, y, side.width, ph);
|
|
||||||
f.render_widget(
|
f.render_widget(
|
||||||
FormulaPanel::new(&app.model, &app.mode, app.formula_cursor),
|
FormulaPanel::new(&app.model, &app.mode, app.formula_cursor),
|
||||||
a,
|
panel_areas[slot],
|
||||||
);
|
);
|
||||||
y += ph;
|
slot += 1;
|
||||||
}
|
}
|
||||||
if app.category_panel_open {
|
if app.category_panel_open {
|
||||||
let a = Rect::new(side.x, y, side.width, ph);
|
|
||||||
f.render_widget(
|
f.render_widget(
|
||||||
CategoryPanel::new(&app.model, &app.mode, app.cat_panel_cursor),
|
CategoryPanel::new(&app.model, &app.mode, app.cat_panel_cursor),
|
||||||
a,
|
panel_areas[slot],
|
||||||
);
|
);
|
||||||
y += ph;
|
slot += 1;
|
||||||
}
|
}
|
||||||
if app.view_panel_open {
|
if app.view_panel_open {
|
||||||
let a = Rect::new(side.x, y, side.width, ph);
|
|
||||||
f.render_widget(
|
f.render_widget(
|
||||||
ViewPanel::new(&app.model, &app.mode, app.view_panel_cursor),
|
ViewPanel::new(&app.model, &app.mode, app.view_panel_cursor),
|
||||||
a,
|
panel_areas[slot],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
f.render_widget(
|
chunks[0]
|
||||||
GridWidget::new(&app.model, &app.mode, &app.search_query),
|
};
|
||||||
area,
|
|
||||||
);
|
f.render_widget(
|
||||||
}
|
GridWidget::new(&app.model, &app.mode, &app.search_query),
|
||||||
|
grid_area,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn draw_tile_bar(f: &mut Frame, area: Rect, app: &App) {
|
fn draw_tile_bar(f: &mut Frame, area: Rect, app: &App) {
|
||||||
|
|||||||
Reference in New Issue
Block a user