using System; using System.Collections.Generic; using System.Linq; namespace WebfrontCore.ViewModels; public class TableInfo { public string Header { get; set; } public List Columns { get; } = new(); public List Rows { get; } = new(); public int InitialRowCount { get; } public TableInfo(int initialRowCount = 0) { InitialRowCount = initialRowCount; } } public class RowDefinition { public List Datum { get; } = new(); } public class ColumnDefinition { public string Title { get; set; } public string ColumnSpan { get; set; } } public static class TableInfoExtensions { public static TableInfo WithColumns(this TableInfo info, IEnumerable columns) { info.Columns.AddRange(columns.Select(column => new ColumnDefinition { Title = column })); return info; } public static TableInfo WithRows(this TableInfo info, IEnumerable source, Func> selector) { info.Rows.AddRange(source.Select(row => { var rowDef = new RowDefinition(); rowDef.Datum.AddRange(selector(row)); return rowDef; })); return info; } }