moving add table to the same way as add logic

This commit is contained in:
Priec
2025-08-31 23:07:57 +02:00
parent 347802b2a4
commit 62c54dc1eb
5 changed files with 136 additions and 48 deletions

View File

@@ -1,6 +1,7 @@
// src/pages/admin_panel/add_table/state.rs
use canvas::{DataProvider, AppMode};
use canvas::FormEditor;
use ratatui::widgets::TableState;
use serde::{Deserialize, Serialize};
use crate::movement::{move_focus, MovementAction};
@@ -381,3 +382,77 @@ impl AddTableState {
move_focus(&ORDER, &mut self.current_focus, action)
}
}
pub struct AddTableFormState {
pub state: AddTableState,
pub editor: FormEditor<AddTableState>,
pub focus_outside_canvas: bool,
}
impl std::fmt::Debug for AddTableFormState {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.debug_struct("AddTableFormState")
.field("state", &self.state)
.field("focus_outside_canvas", &self.focus_outside_canvas)
.finish()
}
}
impl AddTableFormState {
pub fn new(profile_name: String) -> Self {
let mut state = AddTableState::default();
state.profile_name = profile_name;
let editor = FormEditor::new(state.clone());
Self {
state,
editor,
focus_outside_canvas: false,
}
}
pub fn from_state(state: AddTableState) -> Self {
let editor = FormEditor::new(state.clone());
Self {
state,
editor,
focus_outside_canvas: false,
}
}
/// Sync state from editors snapshot
pub fn sync_from_editor(&mut self) {
self.state = self.editor.data_provider().clone();
}
// === Delegates to AddTableState fields ===
pub fn current_focus(&self) -> AddTableFocus {
self.state.current_focus
}
pub fn set_current_focus(&mut self, focus: AddTableFocus) {
self.state.current_focus = focus;
}
pub fn profile_name(&self) -> &str {
&self.state.profile_name
}
pub fn table_name(&self) -> &str {
&self.state.table_name
}
pub fn columns(&self) -> &Vec<ColumnDefinition> {
&self.state.columns
}
pub fn indexes(&self) -> &Vec<IndexDefinition> {
&self.state.indexes
}
pub fn links(&self) -> &Vec<LinkDefinition> {
&self.state.links
}
pub fn column_table_state(&mut self) -> &mut TableState {
&mut self.state.column_table_state
}
pub fn index_table_state(&mut self) -> &mut TableState {
&mut self.state.index_table_state
}
pub fn link_table_state(&mut self) -> &mut TableState {
&mut self.state.link_table_state
}
}