2026-09-21 11:18:43 +02:00
|
|
|
namespace PrepStep;
|
2026-09-16 16:25:52 +02:00
|
|
|
|
|
|
|
|
/// <summary>Mostra, per ogni assieme della distinta base, se tutti i suoi componenti
|
|
|
|
|
/// (ricorsivamente fino ai PRT) sono presenti nell'indice (v) o mancano (x).</summary>
|
|
|
|
|
public class ReportCompletezzaForm : Form
|
|
|
|
|
{
|
|
|
|
|
public ReportCompletezzaForm(List<(string Componente, string Descrizione, bool? Completo)> righe)
|
|
|
|
|
{
|
|
|
|
|
int completi = righe.Count(r => r.Completo == true);
|
|
|
|
|
int incompleti = righe.Count(r => r.Completo == false);
|
|
|
|
|
int nonTrovati = righe.Count(r => r.Completo is null);
|
|
|
|
|
|
|
|
|
|
Text = "Completezza assiemi";
|
|
|
|
|
ClientSize = new Size(720, 440);
|
|
|
|
|
StartPosition = FormStartPosition.CenterParent;
|
|
|
|
|
Font = new Font("Segoe UI", 9.5f);
|
|
|
|
|
|
|
|
|
|
var lblInfo = new Label
|
|
|
|
|
{
|
|
|
|
|
Dock = DockStyle.Top,
|
2026-09-21 10:40:32 +02:00
|
|
|
AutoSize = true,
|
2026-09-16 16:25:52 +02:00
|
|
|
Padding = new Padding(12, 8, 12, 8),
|
|
|
|
|
Text = $"{completi} completi, {incompleti} incompleti, {nonTrovati} non trovati nell'indice "
|
|
|
|
|
+ $"su {righe.Count} componenti. Nota: la scansione dei .asm è euristica, qualche "
|
|
|
|
|
+ "falso 'incompleto' è possibile.",
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
var grid = new DataGridView
|
|
|
|
|
{
|
|
|
|
|
Dock = DockStyle.Fill,
|
|
|
|
|
ReadOnly = true,
|
|
|
|
|
AllowUserToAddRows = false,
|
|
|
|
|
AllowUserToDeleteRows = false,
|
|
|
|
|
RowHeadersVisible = false,
|
|
|
|
|
SelectionMode = DataGridViewSelectionMode.FullRowSelect,
|
|
|
|
|
AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill,
|
|
|
|
|
};
|
|
|
|
|
grid.Columns.Add("componente", "Componente");
|
|
|
|
|
grid.Columns.Add("descrizione", "Descrizione");
|
|
|
|
|
grid.Columns.Add("completo", "Completo");
|
|
|
|
|
grid.Columns["componente"]!.FillWeight = 20;
|
|
|
|
|
grid.Columns["descrizione"]!.FillWeight = 55;
|
|
|
|
|
grid.Columns["completo"]!.FillWeight = 25;
|
|
|
|
|
|
|
|
|
|
foreach (var (componente, descrizione, completo) in righe.OrderBy(r => r.Completo).ThenBy(r => r.Componente))
|
|
|
|
|
{
|
|
|
|
|
string testo = completo switch { true => "✓", false => "✗", null => "?" };
|
|
|
|
|
int i = grid.Rows.Add(componente, descrizione, testo);
|
|
|
|
|
grid.Rows[i].DefaultCellStyle.ForeColor = completo switch
|
|
|
|
|
{
|
|
|
|
|
true => Color.DarkGreen,
|
|
|
|
|
false => Color.DarkRed,
|
|
|
|
|
null => Color.Gray,
|
|
|
|
|
};
|
|
|
|
|
grid.Rows[i].Cells["completo"].Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Controls.Add(grid);
|
|
|
|
|
Controls.Add(lblInfo);
|
|
|
|
|
}
|
|
|
|
|
}
|