moved form.rs into the state where it really belongs to

This commit is contained in:
filipriec
2025-03-25 21:23:52 +01:00
parent 45fff34c4c
commit 4ced1a36d4
15 changed files with 17 additions and 13 deletions

View File

@@ -1,73 +0,0 @@
// src/client/ui/handlers/form.rs
use crate::config::colors::themes::Theme;
use ratatui::layout::Rect;
use ratatui::Frame;
pub struct FormState {
pub id: i64,
pub fields: Vec<String>, // Use Vec<String> for dynamic field names
pub values: Vec<String>, // Store field values dynamically
pub current_field: usize,
pub has_unsaved_changes: bool,
pub current_cursor_pos: usize,
}
impl FormState {
/// Create a new FormState with dynamic fields.
pub fn new(fields: Vec<String>) -> Self {
let values = vec![String::new(); fields.len()]; // Initialize values for each field
FormState {
id: 0,
fields,
values,
current_field: 0,
has_unsaved_changes: false,
current_cursor_pos: 0,
}
}
pub fn render(
&self,
f: &mut Frame,
area: Rect,
theme: &Theme,
is_edit_mode: bool,
total_count: u64,
current_position: u64,
) {
let fields: Vec<&str> = self.fields.iter().map(|s| s.as_str()).collect();
let values: Vec<&String> = self.values.iter().collect();
crate::components::form::form::render_form(
f,
area,
self,
&fields,
&self.current_field,
&values,
theme,
is_edit_mode,
total_count,
current_position,
);
}
pub fn reset_to_empty(&mut self) {
self.id = 0; // Reset ID to 0 for new entries
self.values.iter_mut().for_each(|v| v.clear()); // Clear all values
self.has_unsaved_changes = false;
}
pub fn get_current_input(&self) -> &str {
self.values
.get(self.current_field)
.map(|s| s.as_str())
.unwrap_or("")
}
pub fn get_current_input_mut(&mut self) -> &mut String {
self.values
.get_mut(self.current_field)
.expect("Invalid current_field index")
}
}

View File

@@ -12,7 +12,7 @@ use crate::components::{
use crate::config::colors::themes::Theme;
use ratatui::layout::{Constraint, Direction, Layout};
use ratatui::Frame;
use super::form::FormState;
use crate::state::pages::form::FormState;
use crate::state::state::AppState;
pub fn render_ui(

View File

@@ -6,7 +6,8 @@ use crate::tui::controls::CommandHandler;
use crate::tui::terminal::EventReader;
use crate::config::colors::themes::Theme;
use crate::config::binds::config::Config;
use crate::ui::handlers::{form::FormState, render::render_ui};
use crate::ui::handlers::render::render_ui;
use crate::state::pages::form::FormState;
use crate::modes::handlers::event::EventHandler;
use crate::state::state::AppState;
use crate::components::admin::{admin_panel::AdminPanelState};