81 lines
4.0 KiB
Plaintext
81 lines
4.0 KiB
Plaintext
@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">[@(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, num, weight) in sec.Data.GetValueOrDefault(qualId, Array.Empty<(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, 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 grad = quals.Sum(q => q.Sum(kv => kv.Grad * kv.Weight)) / weight;
|
|
<td class="container bold">
|
|
<div class="row">
|
|
<span class="gradation">@(weight == 0 ? "-" : Model.UseOe ? $"{grad:N0}" : $"{grad: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 totalGrad = sec.Data.Values.Sum(q => q.Sum(kv => kv.Grad * 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 ? $"{totalGrad:N0}" : $"{totalGrad:N1}")</span>
|
|
<span class="number">@($"{totalNum:N0}")</span>
|
|
<span class="number">@($"{totalWeight:N0}")</span>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</tfoot>
|
|
</table>
|
|
}
|
|
</main>
|