WineQualityStatistics: Add KMW mode

This commit is contained in:
2024-03-30 13:12:54 +01:00
parent 80e91ad776
commit 869f652afc
4 changed files with 23 additions and 22 deletions

View File

@ -17,6 +17,7 @@ namespace Elwig.Documents {
public string Filter;
public WineQualityStatisticsData Data;
public bool UseOe => Data.UseOe;
public WineQualityStatistics(string filter, WineQualityStatisticsData data) : base($"{Name} {filter}") {
Filter = filter;

View File

@ -26,15 +26,15 @@
@foreach (var qualIds in Model.QualIds) {
<td class="container">
<div class="row">
<span class="units">[°Oe]</span>
<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 (oe, num, weight) in sec.Data.GetValueOrDefault(qualId, Array.Empty<(int, int, int)>())) {
@foreach (var (grad, num, weight) in sec.Data.GetValueOrDefault(qualId, Array.Empty<(double, int, int)>())) {
<div class="row">
<span class="oe">@oe</span>
<span class="gradation">@(Model.UseOe ? $"{grad:N0}" : $"{grad:N1}")</span>
<span class="number">@($"{num:N0}")</span>
<span class="number">@($"{weight:N0}")</span>
</div>
@ -45,13 +45,13 @@
</tr>
<tr>
@foreach (var qualIds in Model.QualIds) {
var quals = qualIds.Select(q => sec.Data.GetValueOrDefault(q, Array.Empty<(int Oe, int Num, int Weight)>()));
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 oe = quals.Sum(q => q.Sum(kv => (double)kv.Oe * kv.Weight)) / weight;
var grad = quals.Sum(q => q.Sum(kv => kv.Grad * kv.Weight)) / weight;
<td class="container bold">
<div class="row">
<span class="oe">@(weight == 0 ? "-" : $"{oe:N0}")</span>
<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>
@ -64,11 +64,11 @@
@{
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 totalOe = sec.Data.Values.Sum(q => q.Sum(kv => (double)kv.Oe * kv.Weight)) / totalWeight;
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="oe">@(totalWeight == 0 ? "-" : $"{totalOe:N0}")</span>
<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>

View File

@ -85,7 +85,7 @@ table .footer.green {
padding: 1mm;
}
.oe {
.gradation {
text-align: center;
}