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}
|
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
|
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:
|
for tag in zugeteilte_tage:
|
||||||
if tag not in positive_praef_tage:
|
if tag not in positive_praef_tage:
|
||||||
# Dienst wurde an nicht-präferiertem Tag zugeteilt
|
|
||||||
verletzungen[eltern][dienst]['positiv_nicht_erfuellt'] += 1
|
verletzungen[eltern][dienst]['positiv_nicht_erfuellt'] += 1
|
||||||
|
|
||||||
# Tabelle ausgeben
|
# Tabelle ausgeben (verbesserte Spaltenformatierung)
|
||||||
print(f"\n{'Eltern':<20} ", end='')
|
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:
|
for dienst in self.daten.dienste:
|
||||||
print(f"{dienst.kuerzel:>12}", end='')
|
print(f"{dienst.kuerzel:^{col_width}}", end='')
|
||||||
print()
|
print()
|
||||||
print(f"{'':20} ", end='')
|
print(f"{'':{name_col}}", end='')
|
||||||
for dienst in self.daten.dienste:
|
for _ in self.daten.dienste:
|
||||||
print(f"{'neg, pos':>12}", end='')
|
print(f"{'neg, pos':^{col_width}}", end='')
|
||||||
print()
|
print()
|
||||||
print("-" * (20 + 12 * len(self.daten.dienste)))
|
print("-" * (name_col + col_width * len(self.daten.dienste)))
|
||||||
|
|
||||||
gesamt_negativ = defaultdict(int)
|
gesamt_negativ = defaultdict(int)
|
||||||
gesamt_positiv = defaultdict(int)
|
gesamt_positiv = defaultdict(int)
|
||||||
|
|
||||||
for eltern in sorted(self.daten.eltern):
|
for eltern in sorted(self.daten.eltern):
|
||||||
print(f"{eltern:<20} ", end='')
|
print(f"{eltern:<{name_col}}", end='')
|
||||||
for dienst in self.daten.dienste:
|
for dienst in self.daten.dienste:
|
||||||
neg = verletzungen[eltern][dienst]['negativ']
|
neg = verletzungen[eltern][dienst]['negativ']
|
||||||
pos = verletzungen[eltern][dienst]['positiv_nicht_erfuellt']
|
pos = verletzungen[eltern][dienst]['positiv_nicht_erfuellt']
|
||||||
@ -147,22 +149,28 @@ class ElterndienstAusgabe:
|
|||||||
gesamt_negativ[dienst] += neg
|
gesamt_negativ[dienst] += neg
|
||||||
gesamt_positiv[dienst] += pos
|
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 = ""
|
farbe = ""
|
||||||
reset = ""
|
reset = ""
|
||||||
if neg > 0 or pos > 0:
|
if neg > 0 or pos > 0:
|
||||||
farbe = "\033[91m" if neg > 0 else "\033[93m" # Rot für negativ, Gelb für positiv
|
farbe = "\033[91m" if neg > 0 else "\033[93m" # Rot für negativ, Gelb für positiv
|
||||||
reset = "\033[0m"
|
reset = "\033[0m"
|
||||||
|
|
||||||
print(f"{farbe}{neg:>3}, {pos:>3}{reset:>6}", end='')
|
print(f"{farbe}{cell_padded}{reset}", end='')
|
||||||
print()
|
print()
|
||||||
|
|
||||||
# Summenzeile
|
# Summenzeile
|
||||||
print("-" * (20 + 12 * len(self.daten.dienste)))
|
print("-" * (name_col + col_width * len(self.daten.dienste)))
|
||||||
print(f"{'SUMME':<20} ", end='')
|
print(f"{'SUMME':<{name_col}}", end='')
|
||||||
for dienst in self.daten.dienste:
|
for dienst in self.daten.dienste:
|
||||||
neg = gesamt_negativ[dienst]
|
neg = gesamt_negativ[dienst]
|
||||||
pos = gesamt_positiv[dienst]
|
pos = gesamt_positiv[dienst]
|
||||||
|
cell = f"{neg:>3}, {pos:>3}"
|
||||||
|
cell_padded = cell.center(col_width)
|
||||||
|
|
||||||
farbe = ""
|
farbe = ""
|
||||||
reset = ""
|
reset = ""
|
||||||
@ -170,7 +178,7 @@ class ElterndienstAusgabe:
|
|||||||
farbe = "\033[91m" if neg > 0 else "\033[93m"
|
farbe = "\033[91m" if neg > 0 else "\033[93m"
|
||||||
reset = "\033[0m"
|
reset = "\033[0m"
|
||||||
|
|
||||||
print(f"{farbe}{neg:>3}, {pos:>3}{reset:>6}", end='')
|
print(f"{farbe}{cell_padded}{reset}", end='')
|
||||||
print()
|
print()
|
||||||
|
|
||||||
print("\nLegende:")
|
print("\nLegende:")
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user