needs improvements but at least it looks like it exists
This commit is contained in:
@@ -8,6 +8,8 @@ use ratatui::{
|
||||
Frame,
|
||||
};
|
||||
use crate::state::app::state::AppState;
|
||||
use crate::state::app::highlight::HighlightState;
|
||||
use crate::state::pages::canvas_state::CanvasState;
|
||||
use crate::components::handlers::canvas::render_canvas;
|
||||
use crate::state::pages::add_table::AddTableState;
|
||||
|
||||
@@ -16,15 +18,17 @@ pub fn render_add_table(
|
||||
f: &mut Frame,
|
||||
area: Rect,
|
||||
theme: &Theme,
|
||||
app_state: &AppState,
|
||||
_app_state: &AppState,
|
||||
add_table_state: &mut AddTableState,
|
||||
is_edit_mode: bool,
|
||||
highlight_state: &HighlightState,
|
||||
) {
|
||||
// Main block for the whole page
|
||||
let main_block = Block::default()
|
||||
.title(" Add New Table ")
|
||||
.borders(Borders::ALL)
|
||||
.border_type(BorderType::Rounded)
|
||||
.border_style(Style::default().fg(theme.border)) // Use theme border color
|
||||
.border_style(Style::default().fg(theme.border))
|
||||
.style(Style::default().bg(theme.bg));
|
||||
let inner_area = main_block.inner(area);
|
||||
f.render_widget(main_block, area);
|
||||
@@ -69,7 +73,6 @@ pub fn render_add_table(
|
||||
// Columns section
|
||||
let columns_text = Paragraph::new(vec![
|
||||
Line::from(Span::styled("Name Type", theme.accent)), // Header
|
||||
// Add column lines here later from state
|
||||
])
|
||||
.block(Block::default().title(Span::styled(" Columns ", theme.fg)));
|
||||
f.render_widget(columns_text, left_vertical_chunks[1]);
|
||||
@@ -77,7 +80,6 @@ pub fn render_add_table(
|
||||
// Indexes section
|
||||
let indexes_text = Paragraph::new(vec![
|
||||
Line::from(Span::styled("Column name", theme.accent)), // Header
|
||||
// Add index lines here later from state
|
||||
])
|
||||
.block(
|
||||
Block::default()
|
||||
@@ -90,7 +92,6 @@ pub fn render_add_table(
|
||||
// Links section
|
||||
let links_text = Paragraph::new(vec![
|
||||
Line::from(Span::styled("Linked table Required", theme.accent)), // Header
|
||||
// Add link lines here later from state
|
||||
])
|
||||
.block(
|
||||
Block::default()
|
||||
@@ -104,58 +105,45 @@ pub fn render_add_table(
|
||||
let right_vertical_chunks = Layout::default()
|
||||
.direction(Direction::Vertical)
|
||||
.constraints([
|
||||
Constraint::Length(7), // Input fields + Add button area
|
||||
Constraint::Length(5), // Area for render_canvas (3 fields + 2 border)
|
||||
Constraint::Length(3), // Add Button Area
|
||||
Constraint::Min(1), // Spacer
|
||||
Constraint::Length(3), // Save/Cancel buttons area
|
||||
].as_ref())
|
||||
.split(right_pane);
|
||||
|
||||
let input_area = right_vertical_chunks[0];
|
||||
let bottom_buttons_area = right_vertical_chunks[2];
|
||||
let canvas_area = right_vertical_chunks[0];
|
||||
let add_button_area = right_vertical_chunks[1];
|
||||
let bottom_buttons_area = right_vertical_chunks[3];
|
||||
|
||||
// Input Area (Name, Type, Add Button)
|
||||
let input_vertical_chunks = Layout::default()
|
||||
.direction(Direction::Vertical)
|
||||
.constraints([
|
||||
Constraint::Length(3), // Name Input
|
||||
Constraint::Length(3), // Type Input
|
||||
Constraint::Length(1), // Add Button
|
||||
].as_ref())
|
||||
.split(input_area);
|
||||
|
||||
// Table Name Input (Placeholder)
|
||||
let name_input_block = Block::default()
|
||||
.borders(Borders::ALL)
|
||||
.border_type(BorderType::Rounded)
|
||||
.title(" Table name ")
|
||||
.border_style(Style::default().fg(theme.secondary)); // Default style
|
||||
let name_input_text = Paragraph::new("Name") // Placeholder text
|
||||
.style(Style::default().fg(theme.fg))
|
||||
.block(name_input_block);
|
||||
f.render_widget(name_input_text, input_vertical_chunks[0]);
|
||||
|
||||
// Type Input (Placeholder)
|
||||
let type_input_block = Block::default()
|
||||
.borders(Borders::ALL)
|
||||
.border_type(BorderType::Rounded)
|
||||
.title(" Type ")
|
||||
.border_style(Style::default().fg(theme.secondary)); // Default style
|
||||
let type_input_text = Paragraph::new("Type") // Placeholder text
|
||||
.style(Style::default().fg(theme.fg))
|
||||
.block(type_input_block);
|
||||
f.render_widget(type_input_text, input_vertical_chunks[1]);
|
||||
// --- Use render_canvas for Inputs ---
|
||||
let _active_field_rect = render_canvas(
|
||||
f,
|
||||
canvas_area,
|
||||
add_table_state,
|
||||
&[
|
||||
"Table name",
|
||||
"Name",
|
||||
"Type",
|
||||
],
|
||||
&add_table_state.current_field(),
|
||||
&add_table_state.inputs().iter().map(|s| *s).collect::<Vec<&String>>(),
|
||||
theme,
|
||||
is_edit_mode,
|
||||
highlight_state,
|
||||
);
|
||||
|
||||
// Add Button (Placeholder)
|
||||
let add_button = Paragraph::new(" Add ")
|
||||
.style(Style::default().fg(theme.secondary)) // Default style
|
||||
.style(Style::default().fg(theme.secondary))
|
||||
.alignment(Alignment::Center)
|
||||
.block(
|
||||
Block::default()
|
||||
.borders(Borders::ALL)
|
||||
.border_type(BorderType::Rounded)
|
||||
.border_style(Style::default().fg(theme.secondary)), // Default style
|
||||
.border_style(Style::default().fg(theme.secondary)),
|
||||
);
|
||||
f.render_widget(add_button, input_vertical_chunks[2]);
|
||||
f.render_widget(add_button, add_button_area);
|
||||
|
||||
// Bottom Buttons Area (Save, Cancel)
|
||||
let bottom_button_chunks = Layout::default()
|
||||
@@ -168,25 +156,25 @@ pub fn render_add_table(
|
||||
|
||||
// Save Button (Placeholder)
|
||||
let save_button = Paragraph::new(" Save table ")
|
||||
.style(Style::default().fg(theme.secondary)) // Default style
|
||||
.style(Style::default().fg(theme.secondary))
|
||||
.alignment(Alignment::Center)
|
||||
.block(
|
||||
Block::default()
|
||||
.borders(Borders::ALL)
|
||||
.border_type(BorderType::Rounded)
|
||||
.border_style(Style::default().fg(theme.secondary)), // Default style
|
||||
.border_style(Style::default().fg(theme.secondary)),
|
||||
);
|
||||
f.render_widget(save_button, bottom_button_chunks[0]);
|
||||
|
||||
// Cancel Button (Placeholder)
|
||||
let cancel_button = Paragraph::new(" Cancel ")
|
||||
.style(Style::default().fg(theme.secondary)) // Default style
|
||||
.style(Style::default().fg(theme.secondary))
|
||||
.alignment(Alignment::Center)
|
||||
.block(
|
||||
Block::default()
|
||||
.borders(Borders::ALL)
|
||||
.border_type(BorderType::Rounded)
|
||||
.border_style(Style::default().fg(theme.secondary)), // Default style
|
||||
.border_style(Style::default().fg(theme.secondary)),
|
||||
);
|
||||
f.render_widget(cancel_button, bottom_button_chunks[1]);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user