Formatierung Ausgabe
This commit is contained in:
parent
08e5cf11bd
commit
9f7d3c6d4a
38
ausgabe.py
38
ausgabe.py
@ -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:")
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user