moving add table to the same way as add logic
This commit is contained in:
@@ -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 editor’s 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
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user