Formatierung Ausgabe

This commit is contained in:
Jan Hoheisel 2026-02-01 20:33:11 +01:00
parent 08e5cf11bd
commit 9f7d3c6d4a

View File

@ -118,28 +118,30 @@ class ElterndienstAusgabe:
positive_praef_tage = {tag for tag, präf in praeferenzen_dienst.items() if präf == 1}
if positive_praef_tage: # Es gibt positive Präferenzen
# Prüfe ob ALLE zugeteilten Dienste an nicht-präferierten Tagen sind
for tag in zugeteilte_tage:
if tag not in positive_praef_tage:
# Dienst wurde an nicht-präferiertem Tag zugeteilt
verletzungen[eltern][dienst]['positiv_nicht_erfuellt'] += 1
# Tabelle ausgeben
print(f"\n{'Eltern':<20} ", end='')
# Tabelle ausgeben (verbesserte Spaltenformatierung)
col_width = 14 # Breite pro Dienst-Spalte (sichtbar)
name_col = 20
# Header
print(f"\n{'Eltern':<{name_col}}", end='')
for dienst in self.daten.dienste:
print(f"{dienst.kuerzel:>12}", end='')
print(f"{dienst.kuerzel:^{col_width}}", end='')
print()
print(f"{'':20} ", end='')
for dienst in self.daten.dienste:
print(f"{'neg, pos':>12}", end='')
print(f"{'':{name_col}}", end='')
for _ in self.daten.dienste:
print(f"{'neg, pos':^{col_width}}", end='')
print()
print("-" * (20 + 12 * len(self.daten.dienste)))
print("-" * (name_col + col_width * len(self.daten.dienste)))
gesamt_negativ = defaultdict(int)
gesamt_positiv = defaultdict(int)
for eltern in sorted(self.daten.eltern):
print(f"{eltern:<20} ", end='')
print(f"{eltern:<{name_col}}", end='')
for dienst in self.daten.dienste:
neg = verletzungen[eltern][dienst]['negativ']
pos = verletzungen[eltern][dienst]['positiv_nicht_erfuellt']
@ -147,22 +149,28 @@ class ElterndienstAusgabe:
gesamt_negativ[dienst] += neg
gesamt_positiv[dienst] += pos
# Farbcodierung
# Inhalt vor Padding erstellen
cell = f"{neg:>3}, {pos:>3}"
cell_padded = cell.center(col_width)
# Farbcodierung (erst nach Padding anwenden)
farbe = ""
reset = ""
if neg > 0 or pos > 0:
farbe = "\033[91m" if neg > 0 else "\033[93m" # Rot für negativ, Gelb für positiv
reset = "\033[0m"
print(f"{farbe}{neg:>3}, {pos:>3}{reset:>6}", end='')
print(f"{farbe}{cell_padded}{reset}", end='')
print()
# Summenzeile
print("-" * (20 + 12 * len(self.daten.dienste)))
print(f"{'SUMME':<20} ", end='')
print("-" * (name_col + col_width * len(self.daten.dienste)))
print(f"{'SUMME':<{name_col}}", end='')
for dienst in self.daten.dienste:
neg = gesamt_negativ[dienst]
pos = gesamt_positiv[dienst]
cell = f"{neg:>3}, {pos:>3}"
cell_padded = cell.center(col_width)
farbe = ""
reset = ""
@ -170,7 +178,7 @@ class ElterndienstAusgabe:
farbe = "\033[91m" if neg > 0 else "\033[93m"
reset = "\033[0m"
print(f"{farbe}{neg:>3}, {pos:>3}{reset:>6}", end='')
print(f"{farbe}{cell_padded}{reset}", end='')
print()
print("\nLegende:")