fix: Kalender-Überschrift entfernt, Y-Abstände weiter komprimiert
CI / build-and-test (push) Waiting to run
CI / build-and-test (push) Waiting to run
"Anwesenheit" als eigene Überschrift entfernt - die Monatsnamen im Raster machen bereits klar, worum es geht. Trailing-Gap vor der Legende von 4mm auf 2mm, Abstand nach dem Schülernamen von 1mm auf 0.5mm reduziert. Der Höhen-Overhead im Referenzentwurf sinkt dadurch von 45mm auf 36.5mm (vor den Wochenzeilen) und vergrößert entsprechend den gemeinsamen Skalierungs- faktor k, wenn die Boxhöhe der begrenzende Faktor ist. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -48,7 +48,7 @@ public static class StudentAttendanceCalendarDrawingBuilder
|
|||||||
var designMonthGapX = 6f;
|
var designMonthGapX = 6f;
|
||||||
// Eigener (kleinerer) Y-Abstand vor der Legende, getrennt von designMonthGapX (das misst den
|
// Eigener (kleinerer) Y-Abstand vor der Legende, getrennt von designMonthGapX (das misst den
|
||||||
// horizontalen Abstand zwischen den Monatsblöcken und soll davon unberührt bleiben).
|
// horizontalen Abstand zwischen den Monatsblöcken und soll davon unberührt bleiben).
|
||||||
var designTrailingGapY = 4f;
|
var designTrailingGapY = 2f;
|
||||||
var first = options.NormalizedStartMonth;
|
var first = options.NormalizedStartMonth;
|
||||||
var monthCount = options.NormalizedMonthCount;
|
var monthCount = options.NormalizedMonthCount;
|
||||||
|
|
||||||
@@ -63,14 +63,14 @@ public static class StudentAttendanceCalendarDrawingBuilder
|
|||||||
var offset = ((int)current.DayOfWeek + 6) % 7;
|
var offset = ((int)current.DayOfWeek + 6) % 7;
|
||||||
maxWeeks = Math.Max(maxWeeks, (int)Math.Ceiling((offset + days.Count) / 7d));
|
maxWeeks = Math.Max(maxWeeks, (int)Math.Ceiling((offset + days.Count) / 7d));
|
||||||
}
|
}
|
||||||
// Höhe des Referenzentwurfs bei k=1 (mm): Titel+Name+Abstand (12, siehe unten - beide bewusst
|
// Höhe des Referenzentwurfs bei k=1 (mm): Name+Abstand (5.5, siehe unten - keine eigene
|
||||||
// klein/grau gehalten, sie dienen nur der Kontrolle "sind das die richtigen Daten", nicht als
|
// "Anwesenheit"-Überschrift mehr, die Monatsnamen darunter machen bereits klar, worum es
|
||||||
// gestalterischer Blickfang) + Monats-/Wochentagskopf (20) + maxWeeks Wochenzeilen (10 je
|
// geht; der Name bleibt klein/grau nur zur Kontrolle "ist das das richtige Kind") + Monats-/
|
||||||
// Woche) + Trailing-Gap (4) + Legende/Nachlauf (9). Muss mit der Höhenberechnung am Ende
|
// Wochentagskopf (20) + maxWeeks Wochenzeilen (10 je Woche) + Trailing-Gap (2) + Legende/
|
||||||
// dieser Methode ("y") übereinstimmen. Je kleiner dieser "Overhead" ausfällt, desto größer
|
// Nachlauf (9). Muss mit der Höhenberechnung am Ende dieser Methode ("y") übereinstimmen. Je
|
||||||
// kann k (und damit das ganze Raster inkl. der Tageskacheln) werden, wenn contentHeight der
|
// kleiner dieser "Overhead" ausfällt, desto größer kann k (und damit das ganze Raster inkl.
|
||||||
// begrenzende Faktor ist.
|
// der Tageskacheln) werden, wenn contentHeight der begrenzende Faktor ist.
|
||||||
var designHeight = 12f + 20f + 10f * maxWeeks + designTrailingGapY + 9f;
|
var designHeight = 5.5f + 20f + 10f * maxWeeks + designTrailingGapY + 9f;
|
||||||
|
|
||||||
// a_x/a_y: wie viel größer/kleiner als der Referenzentwurf die reale Box in jeweils einer
|
// a_x/a_y: wie viel größer/kleiner als der Referenzentwurf die reale Box in jeweils einer
|
||||||
// Richtung ist. Eine DRAWBOX bricht anders als FLOWDRAWBOX nicht automatisch auf Folgeseiten
|
// Richtung ist. Eine DRAWBOX bricht anders als FLOWDRAWBOX nicht automatisch auf Folgeseiten
|
||||||
@@ -100,15 +100,13 @@ public static class StudentAttendanceCalendarDrawingBuilder
|
|||||||
var commands = new List<DrawingCommand>();
|
var commands = new List<DrawingCommand>();
|
||||||
var contentWidthDesign = designWidth * k;
|
var contentWidthDesign = designWidth * k;
|
||||||
var y = 0f;
|
var y = 0f;
|
||||||
// Titel/Name bewusst klein und in hellem Grau: sie dienen nur der Kontrolle, dass der
|
// Keine eigene "Anwesenheit"-Überschrift mehr - die Monatsnamen im Raster machen bereits
|
||||||
// Kalender zum richtigen Kind/Zeitraum gehört, nicht als gestalterischer Blickfang - der
|
// klar, worum es geht. Der Name bleibt klein und in hellem Grau: er dient nur der Kontrolle,
|
||||||
|
// dass der Kalender zum richtigen Kind gehört, nicht als gestalterischer Blickfang - der
|
||||||
// eingesparte Platz kommt stattdessen den Tageskacheln zugute (siehe designHeight oben).
|
// eingesparte Platz kommt stattdessen den Tageskacheln zugute (siehe designHeight oben).
|
||||||
commands.Add(new DrawStringEx(0, y, 6 * k, contentWidthDesign, "Anwesenheit",
|
|
||||||
DrawingTextAlignment.AlignLeft, 7 * finalScale, Color: "#9CA3AF"));
|
|
||||||
y += 6 * k;
|
|
||||||
commands.Add(new DrawStringEx(0, y, 5 * k, contentWidthDesign, studentName,
|
commands.Add(new DrawStringEx(0, y, 5 * k, contentWidthDesign, studentName,
|
||||||
DrawingTextAlignment.AlignLeft, 6.5f * finalScale, Color: "#9CA3AF"));
|
DrawingTextAlignment.AlignLeft, 6.5f * finalScale, Color: "#9CA3AF"));
|
||||||
y += 5 * k + 1 * k;
|
y += 5 * k + .5f * k;
|
||||||
var weekdays = new[] { "Mo", "Di", "Mi", "Do", "Fr", "Sa", "So" };
|
var weekdays = new[] { "Mo", "Di", "Mi", "Do", "Fr", "Sa", "So" };
|
||||||
var gridStartY = y;
|
var gridStartY = y;
|
||||||
for (var monthIndex = 0; monthIndex < monthCount; monthIndex++)
|
for (var monthIndex = 0; monthIndex < monthCount; monthIndex++)
|
||||||
|
|||||||
Reference in New Issue
Block a user