From 84f5ec5c4c876a21b203274d392a7624e29404a8 Mon Sep 17 00:00:00 2001 From: filipriec Date: Tue, 18 Feb 2025 21:59:20 +0100 Subject: [PATCH] count properly works --- src/client/components/form.rs | 13 +++++++------ src/client/ui.rs | 20 +++++++++++++------- 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/src/client/components/form.rs b/src/client/components/form.rs index 326c3a9..8efc4af 100644 --- a/src/client/components/form.rs +++ b/src/client/components/form.rs @@ -1,4 +1,5 @@ // src/client/components/form.rs + use ratatui::{ widgets::{Paragraph, Block, Borders}, layout::{Layout, Constraint, Direction, Rect, Margin, Alignment}, @@ -17,7 +18,7 @@ pub fn render_form( theme: &Theme, is_edit_mode: bool, total_count: u64, // Add total count - current_id: u64, // Add current ID + current_position: u64, // Add current position ) { // Create Adresar card let adresar_card = Block::default() @@ -38,17 +39,17 @@ pub fn render_form( let main_layout = Layout::default() .direction(Direction::Vertical) .constraints([ - Constraint::Length(1), // For count and ID + Constraint::Length(1), // For count and position Constraint::Min(1), // For form fields ]) .split(inner_area); - // Render the count and ID at the very top - let count_id_text = format!("Total: {} | Current: {}", total_count, current_id); - let count_id_paragraph = Paragraph::new(count_id_text) + // Render the count and position at the very top + let count_position_text = format!("Total: {} | Current Position: {}", total_count, current_position); + let count_position_paragraph = Paragraph::new(count_position_text) .style(Style::default().fg(theme.fg)) .alignment(Alignment::Left); - f.render_widget(count_id_paragraph, main_layout[0]); + f.render_widget(count_position_paragraph, main_layout[0]); // Split the remaining space into label and input columns let columns = Layout::default() diff --git a/src/client/ui.rs b/src/client/ui.rs index 8e8d464..812ca8d 100644 --- a/src/client/ui.rs +++ b/src/client/ui.rs @@ -1,4 +1,5 @@ // src/client/ui.rs + use crossterm::event::{Event, KeyCode, KeyModifiers}; use crate::client::terminal::AppTerminal; use crate::client::components::{render_command_line, render_form, render_preview_card, render_status_line}; @@ -8,7 +9,6 @@ use ratatui::layout::{Constraint, Direction, Layout}; use std::env; use crate::proto::multieko2::PostAdresarRequest; - pub async fn run_ui() -> Result<(), Box> { let config = Config::load()?; let mut app_terminal = AppTerminal::new().await?; @@ -55,12 +55,13 @@ pub async fn run_ui() -> Result<(), Box> { // Fetch the total count of Adresar entries let total_count = app_terminal.get_adresar_count().await?; - // Fetch the current Adresar entry by position (e.g., position 1) - let current_position = 1; // You can change this dynamically based on user input - let current_adresar = app_terminal.get_adresar_by_position(current_position).await?; - let current_id = current_adresar.id as u64; + // Track the current position in the database sequence + let mut current_position = total_count + 1; // Start at the next position for new entries loop { + // Fetch fresh total count on each iteration + let total_count = app_terminal.get_adresar_count().await?; + app_terminal.draw(|f| { let root = Layout::default() .direction(Direction::Vertical) @@ -90,7 +91,7 @@ pub async fn run_ui() -> Result<(), Box> { &theme, is_edit_mode, total_count, // Pass total count - current_id, // Pass current ID + current_position, // Pass current position ); // Right panel - Preview Card @@ -110,7 +111,7 @@ pub async fn run_ui() -> Result<(), Box> { render_command_line(f, root[2], &command_input, command_mode, &theme, &command_message); })?; - // Event handling (unchanged) + // Event handling if let Event::Key(key) = app_terminal.read_event()? { // Handle enter/edit mode keys if !is_edit_mode && config.is_enter_edit_mode(key.code, key.modifiers) { @@ -201,6 +202,11 @@ pub async fn run_ui() -> Result<(), Box> { command_mode = false; command_input.clear(); + // Update current position after saving + if action == "save" && is_saved { + current_position = total_count + 1; + } + if should_exit { return Ok(()); }