[#34] First step of not using Bio as Attribute
This commit is contained in:
@ -40,19 +40,19 @@ namespace Elwig.Documents {
|
||||
return "<colgroup>\n" + string.Join("\n", cols.Select(g => $"<col style=\"width: {g.ToString(CultureInfo.InvariantCulture)}mm;\"/>")) + "\n</colgroup>\n";
|
||||
}
|
||||
|
||||
public static string PrintSortenaufteilung(Dictionary<string, MemberBucket> buckets) {
|
||||
List<string> attributes = ["_", ""];
|
||||
List<string> names = ["kein Qual.Wein", "ohne Attribut"];
|
||||
List<(string, string)> bucketAttrs = [
|
||||
.. buckets
|
||||
.Where(b => b.Key.Length > 2 && b.Key[2] != '_' && b.Value.DeliveryStrict > 0)
|
||||
.Select(b => (b.Key[2..], b.Value.Name.Split("(")[1][..^1]))
|
||||
public static string PrintSortenaufteilung(List<MemberStat> stats) {
|
||||
List<string> discrs = [""];
|
||||
List<string> names = ["ohne Attr./Bewirt."];
|
||||
List<string> bucketAttrs = [
|
||||
.. stats
|
||||
.Select(s => s.Discr)
|
||||
.Distinct()
|
||||
.OrderBy(v => v.Item1)
|
||||
.Where(s => s.Length > 0)
|
||||
.Order()
|
||||
];
|
||||
names.AddRange(bucketAttrs.Select(b => b.Item2));
|
||||
names.AddRange(bucketAttrs);
|
||||
names.Add("Gesamt");
|
||||
attributes.AddRange(bucketAttrs.Select(b => b.Item1));
|
||||
discrs.AddRange(bucketAttrs);
|
||||
|
||||
List<double> cols = [40];
|
||||
cols.AddRange(names.Select(_ => 125.0 / names.Count));
|
||||
@ -62,19 +62,18 @@ namespace Elwig.Documents {
|
||||
string.Join("", names.Select(c => $"<th>{c}</th>")) +
|
||||
"</tr></thead>";
|
||||
|
||||
tbl += string.Join("\n", buckets
|
||||
.GroupBy(b => (b.Key[..2], b.Value.Name.Split("(")[0].Trim()))
|
||||
.Where(g => g.Sum(a => a.Value.DeliveryStrict) > 0)
|
||||
.OrderBy(g => g.Key.Item1)
|
||||
tbl += string.Join("\n", stats
|
||||
.GroupBy(b => b.Variety)
|
||||
.OrderBy(b => b.Key)
|
||||
.Select(g => {
|
||||
var dict = g.ToDictionary(a => a.Key[2..], a => a.Value);
|
||||
var vals = attributes.Select(a => dict.TryGetValue(a, out MemberBucket value) ? value.DeliveryStrict : 0).ToList();
|
||||
return $"<tr><th>{g.Key.Item2}</th>" + string.Join("", vals.Select(v => "<td class=\"number\">" + (v == 0 ? "-" : $"{v:N0}") + "</td>")) +
|
||||
$"<td class=\"number\">{dict.Values.Select(v => v.DeliveryStrict).Sum():N0}</td></tr>";
|
||||
var dict = g.ToDictionary(a => a.Discr, a => a.Weight);
|
||||
var vals = discrs.Select(a => dict.GetValueOrDefault(a, 0)).ToList();
|
||||
return $"<tr><th>{g.Key}</th>" + string.Join("", vals.Select(v => "<td class=\"number\">" + (v == 0 ? "-" : $"{v:N0}") + "</td>")) +
|
||||
$"<td class=\"number\">{dict.Values.Sum():N0}</td></tr>";
|
||||
})
|
||||
);
|
||||
var totalDict = buckets.GroupBy(b => b.Key[2..]).ToDictionary(g => g.Key, g => g.Sum(a => a.Value.DeliveryStrict));
|
||||
var totals = attributes.Select(a => totalDict.TryGetValue(a, out int value) ? value : 0);
|
||||
var totalDict = stats.GroupBy(s => s.Discr).ToDictionary(g => g.Key, g => g.Sum(a => a.Weight));
|
||||
var totals = discrs.Select(a => totalDict.TryGetValue(a, out int value) ? value : 0);
|
||||
tbl += "<tr class=\"sum bold\"><td></td>" + string.Join("", totals.Select(v => $"<td class=\"number\">{v:N0}</td>")) +
|
||||
$"<td class=\"number\">{totalDict.Values.Sum():N0}</td></tr>";
|
||||
|
||||
|
Reference in New Issue
Block a user