Skip to main content

plot/lib/pipelines/
step7.rs

1use std::io;
2
3use crate::lib::{
4    pipelines::{render_table, FormattedRow},
5    schema::{ReadyJob, SharedJobRunMode},
6};
7
8
9// ============================================================================
10// VIEWER (Step 7) - PODGLĄD W KONSOLI
11// ============================================================================
12
13pub fn engine_step7_data_view(job: &ReadyJob, formatted_rows: &[FormattedRow]) -> io::Result<()> {
14    let modes = job.run_modes();
15
16    // ⚡ BLOKADA 1: Całkowita cisza (--clear)
17    if modes.contains(&SharedJobRunMode::PrintNothing) {
18        return Ok(()); 
19    }
20
21    // ⚡ BLOKADA 2: Tylko ostrzeżenia (--only-warnings) -> nie drukujemy podglądu danych
22    if modes.contains(&SharedJobRunMode::PrintOnlyWarning) {
23        return Ok(());
24    }
25
26    // Ograniczamy podgląd do pierwszych 100 elementów
27    let limit = formatted_rows.len().min(100);
28    let preview_rows = &formatted_rows[..limit];
29
30    // Używamy tego samego generatora tabeli (render_table)
31    let table_plain_text = render_table(preview_rows, job.attributes().select());
32
33    println!("{}", table_plain_text);
34
35    // Mały dodatek UX – informacja o przycięciu wyników
36    if formatted_rows.len() > limit {
37        println!("... (pokazano {} z {} elementów)", limit, formatted_rows.len());
38    }
39
40    // ⚡ INSPEKCJA: Dodatkowe informacje debug dla terminala (--inspection-in-print)
41    if modes.contains(&SharedJobRunMode::PrintWithInspection) {
42        println!("🔍 [DEBUG] Całkowita liczba przetworzonych wierszy: {}", formatted_rows.len());
43        println!("🔍 [DEBUG] Tryb kolorów włączony: {}", modes.contains(&SharedJobRunMode::PrintColor));
44    }
45
46    Ok(())
47}