@using RazorLight @using Elwig.Helpers @inherits TemplatePage<Elwig.Documents.WineQualityStatistics> @model Elwig.Documents.WineQualityStatistics @{ Layout = "Document"; } <link rel="stylesheet" href="file:///@Raw(Model.DocumentsPath)\WineQualityStatistics.css" /> <main> <h1>Qualitätsstatistik</h1> <h2>@Model.Filter</h2> @foreach (var sec in Model.Data.Sections) { <table> <colgroup> <col style="width: 25%;"/> <col style="width: 25%;"/> <col style="width: 25%;"/> <col style="width: 25%;"/> </colgroup> <thead> <tr> <th colspan="4" class="header @(sec.Type == "R" ? "red" : sec.Type == "W" ? "green" : "")"> <h3>@sec.Name</h3> </th> </tr> </thead> <tbody> <tr> @foreach (var qualIds in Model.QualIds) { <td class="container"> <div class="row"> <span class="units">[@(Model.UseOe ? "°Oe" : "°KMW")]</span> <span class="units">[#]</span> <span class="units">[kg]</span> </div> @foreach (var qualId in qualIds) { <h4>@(Model.QualityLevels.GetValueOrDefault(qualId, qualId))</h4> @foreach (var (grad, avgKmw, num, weight) in sec.Data.GetValueOrDefault(qualId, Array.Empty<(double, double, int, int)>())) { <div class="row"> <span class="gradation">@(Model.UseOe ? $"{grad:N0}" : $"{grad:N1}")</span> <span class="number">@($"{num:N0}")</span> <span class="number">@($"{weight:N0}")</span> </div> } } </td> } </tr> <tr> @foreach (var qualIds in Model.QualIds) { var quals = qualIds.Select(q => sec.Data.GetValueOrDefault(q, Array.Empty<(double Grad, double AvgKmw, int Num, int Weight)>())); var weight = quals.Sum(q => q.Sum(kv => kv.Weight)); var num = quals.Sum(q => q.Sum(kv => kv.Num)); var kmw = quals.Sum(q => q.Sum(kv => kv.AvgKmw * kv.Weight)) / weight; <td class="container bold"> <div class="row"> <span class="gradation">@(weight == 0 ? "-" : Model.UseOe ? $"{Utils.KmwToOe(kmw):N0}" : $"{kmw:N1}")</span> <span class="number">@($"{num:N0}")</span> <span class="number">@($"{weight:N0}")</span> </div> </td> } </tr> </tbody> <tfoot> <tr> @{ var totalWeight = sec.Data.Values.Sum(q => q.Sum(kv => kv.Weight)); var totalNum = sec.Data.Values.Sum(q => q.Sum(kv => kv.Num)); var totalKmw = sec.Data.Values.Sum(q => q.Sum(kv => kv.AvgKmw * kv.Weight)) / totalWeight; } <td colspan="4" class="container bold footer @(sec.Type == "R" ? "red" : sec.Type == "W" ? "green" : "")"> <div class="row" style="width: 24%; margin-left: 76%;"> <span class="gradation">@(totalWeight == 0 ? "-" : Model.UseOe ? $"{Utils.KmwToOe(totalKmw):N0}" : $"{totalKmw:N1}")</span> <span class="number">@($"{totalNum:N0}")</span> <span class="number">@($"{totalWeight:N0}")</span> </div> </td> </tr> </tfoot> </table> } </main>