Skip to main content

plot/lib/job/
step2.rs

1use crate::lib::job::{self, RawRow};
2
3// ============================================================================
4// STRUKTURA WYJŚCIOWA (Transport do kolejnych etapów)
5// ============================================================================
6
7#[derive(Debug, Clone)]
8pub struct FormattedRow {
9	pub raw: RawRow,        // Zachowujemy oryginał do sortowania (Step 3) i limitowania (Step 4)
10	pub cells: Vec<String>, // Sformatowane kolumny, każda jako niezależny String (dla Step 5)
11}
12
13// ============================================================================
14// FORMATTER (Step 2)
15// ============================================================================
16
17pub fn engine_step2_data_formater(
18	c: (&job::ValidColumnItemConfig, &job::ValidTableColumnsConfig),
19	s: (&job::ValidColumnDateConfig, &job::ValidColumnTimeConfig, &job::ValidColumnSizeConfig),
20	tab: &job::ScannedTable, // ⚡ Zmiana typu
21) -> Vec<FormattedRow> {
22	let item_cfg = c.0;
23	let col_cfg = c.1;
24	let date_cfg = s.0;
25	let time_cfg = s.1;
26	let size_cfg = s.2;
27
28	let total_rows = tab.rows.len();
29	let num_width = total_rows.to_string().len();
30
31	let mut formatted_table = Vec::with_capacity(total_rows);
32
33	for (i, row) in tab.rows.iter().enumerate() {
34		// ⚡ Iterujemy po tab.rows
35		let mut cells = Vec::with_capacity(col_cfg.columns.len());
36
37		for col in &col_cfg.columns {
38			let cell_str = match col {
39				job::ValidTableColumns::Date => date_cfg.format_date(row.dt_modified),
40				job::ValidTableColumns::Time => time_cfg.format_time(row.dt_modified),
41				job::ValidTableColumns::Size => size_cfg.format_size(row.size_real),
42				job::ValidTableColumns::Item => {
43					let u_params = (i, num_width, tab.tier_max, tab.name_len_max);
44					item_cfg.format_item(u_params, row, &tab.rows)
45				}
46				job::ValidTableColumns::Path => row.node.path.str.clone(),
47			};
48			cells.push(cell_str);
49		}
50
51		formatted_table.push(FormattedRow { raw: row.clone(), cells });
52	}
53
54	formatted_table
55}
56
57// ============================================================================
58// HELPERY FORMATUJĄCE
59// ============================================================================