[#30] Documents: Add WineQualityStatistics
This commit is contained in:
74
Elwig/Documents/WineQualityStatistics.cshtml
Normal file
74
Elwig/Documents/WineQualityStatistics.cshtml
Normal file
@ -0,0 +1,74 @@
|
||||
@using RazorLight
|
||||
@inherits TemplatePage<Elwig.Documents.WineQualityStatistics>
|
||||
@model Elwig.Documents.WineQualityStatistics
|
||||
@{ Layout = "Document"; }
|
||||
<link rel="stylesheet" href="file:///@Raw(Model.DataPath)\resources\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">[°Oe]</span>
|
||||
<span class="units">[kg]</span>
|
||||
</div>
|
||||
@foreach (var qualId in qualIds) {
|
||||
<h4>@(Model.QualityLevels.GetValueOrDefault(qualId, qualId))</h4>
|
||||
@foreach (var (oe, weight) in sec.Data.GetValueOrDefault(qualId, Array.Empty<(int, int)>())) {
|
||||
<div class="row">
|
||||
<span class="oe">@oe</span>
|
||||
<span class="weight">@($"{weight:N0}")</span>
|
||||
</div>
|
||||
}
|
||||
}
|
||||
</td>
|
||||
}
|
||||
</tr>
|
||||
<tr>
|
||||
@foreach (var qualIds in Model.QualIds) {
|
||||
var quals = qualIds.Select(q => sec.Data.GetValueOrDefault(q, Array.Empty<(int, int)>()));
|
||||
var weight = quals.Sum(q => q.Sum(kv => kv.Item2));
|
||||
var oe = quals.Sum(q => q.Sum(kv => (double)kv.Item1 * kv.Item2)) / weight;
|
||||
<td class="container bold">
|
||||
<div class="row">
|
||||
<span class="oe">@(weight == 0 ? "" : $"{oe:N0}")</span>
|
||||
<span class="weight">@($"{weight:N0}")</span>
|
||||
</div>
|
||||
</td>
|
||||
}
|
||||
</tr>
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr>
|
||||
@{
|
||||
var totalWeight = sec.Data.Values.Sum(q => q.Sum(kv => kv.Weight));
|
||||
var totalOe = sec.Data.Values.Sum(q => q.Sum(kv => (double)kv.Oe * 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="oe">@(totalWeight == 0 ? "" : $"{totalOe:N0}")</span>
|
||||
<span class="weight">@($"{totalWeight:N0}")</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
}
|
||||
</main>
|
Reference in New Issue
Block a user