Weitere Markdowns nach Label umgestellt

This commit is contained in:
Alexander Malzkuhn 2025-06-04 10:47:13 +02:00
parent 46a0182377
commit 8083e00392
5 changed files with 30 additions and 22 deletions

View File

@ -404,16 +404,18 @@ def page_admin():
hours_to_work = int(current_user.get_day_workhours(select_year.value, select_month.value, day)) hours_to_work = int(current_user.get_day_workhours(select_year.value, select_month.value, day))
if hours_to_work < 0: if hours_to_work < 0:
ui.space() ui.space()
day_type.content="Kein Arbeitsverhältnis" day_type.text="Kein Arbeitsverhältnis"
day_type.set_visibility(True) day_type.set_visibility(True)
else: else:
ui.label(f"{convert_seconds_to_hours(int(hours_to_work) * 3600)}").classes('text-right') ui.label(f"{convert_seconds_to_hours(int(hours_to_work) * 3600)}").classes('text-right')
if int(hours_to_work) == 0: if int(hours_to_work) == 0:
day_type.content = "**Kein Arbeitstag**" day_type.text = "Kein Arbeitstag"
day_type.classes('text-bold')
day_type.set_visibility(True) day_type.set_visibility(True)
if day_in_list.strftime("%Y-%m-%d") in data["holidays"]: if day_in_list.strftime("%Y-%m-%d") in data["holidays"]:
day_type.content = f'**{data["holidays"][day_in_list.strftime("%Y-%m-%d")]}**' day_type.text = f'{data["holidays"][day_in_list.strftime("%Y-%m-%d")]}'
day_type.classes('text-bold')
# Saldo für den Tag berechnen # Saldo für den Tag berechnen

View File

@ -38,10 +38,10 @@ def page_overview_month(username: str, year: int, month: int):
else: else:
with ui.column().classes('w-full items-end gap-0'): with ui.column().classes('w-full items-end gap-0'):
ui.label(f"Bericht erstellt am {datetime.now().strftime('%d.%m.%Y %H:%M:%S')}") ui.label(f"Bericht erstellt am {datetime.now().strftime('%d.%m.%Y %H:%M:%S')}")
ui.markdown(f'#Bericht für {current_user.fullname} für {calendar.month_name[month]} {year}') ui.label(f'Bericht für {current_user.fullname} für {calendar.month_name[month]} {year}').classes(h1)
pad_x = 4 pad_x = 4
pad_y = 1 pad_y = 2
color_weekend = "gray-100" color_weekend = "gray-100"
color_holiday = "gray-100" color_holiday = "gray-100"
@ -89,18 +89,21 @@ def page_overview_month(username: str, year: int, month: int):
current_day_date = f"{datetime(year, month, day).strftime('%a')}, {day}.{month}.{year}" current_day_date = f"{datetime(year, month, day).strftime('%a')}, {day}.{month}.{year}"
with ui.link_target(day).classes(f'border px-{pad_x} py-{pad_y} bg-{color_day}'): with ui.link_target(day).classes(f'border px-{pad_x} py-{pad_y} bg-{color_day}'):
ui.markdown(current_day_date) ui.label(current_day_date)
# Abwesenheitseinträge # Abwesenheitseinträge
booking_color = "inherit" booking_color = "inherit"
booking_text_color = "inherit" booking_text_color = "inherit"
bold = ''
try: try:
# Abwesenheitszeiten behandeln # Abwesenheitszeiten behandeln
for i in list(user_absent): for i in list(user_absent):
if int(i) == day: if int(i) == day:
booking_text += absence_entries[user_absent[i]]["name"] + "<br>" booking_text += absence_entries[user_absent[i]]["name"] + "\n"
booking_color = absence_entries[user_absent[i]]["color"] booking_color = absence_entries[user_absent[i]]["color"]
booking_text_color = absence_entries[user_absent[i]]["text-color"] booking_text_color = absence_entries[user_absent[i]]["text-color"]
bold = 'text-bold'
except: except:
pass pass
@ -108,29 +111,30 @@ def page_overview_month(username: str, year: int, month: int):
for i in range(0, len(timestamps_dict[day]), 2): for i in range(0, len(timestamps_dict[day]), 2):
try: try:
temp_pair = [timestamps_dict[day][i], timestamps_dict[day][i + 1]] temp_pair = [timestamps_dict[day][i], timestamps_dict[day][i + 1]]
booking_text = booking_text + str(datetime.fromtimestamp(temp_pair[0]).strftime('%H:%M')) + " - " + str(datetime.fromtimestamp(temp_pair[1]).strftime('%H:%M')) + "<br>" booking_text = booking_text + str(datetime.fromtimestamp(temp_pair[0]).strftime('%H:%M')) + " - " + str(datetime.fromtimestamp(temp_pair[1]).strftime('%H:%M')) + "\n"
except: except:
if len(timestamps_dict[day]) % 2 != 0: if len(timestamps_dict[day]) % 2 != 0:
booking_text += datetime.fromtimestamp(int(timestamps_dict[day][i])).strftime('%H:%M') + " - ***Buchung fehlt!***" booking_text += datetime.fromtimestamp(int(timestamps_dict[day][i])).strftime('%H:%M') + " - Buchung fehlt!"
day_notes = current_user.get_day_notes(year, month, day) day_notes = current_user.get_day_notes(year, month, day)
just_once = True just_once = True
with ui.column().classes(f'border px-{pad_x} py-{pad_y} bg-{booking_color} text-{booking_text_color}'): with ui.column().classes(f'border px-{pad_x} py-{pad_y} bg-{booking_color} text-{booking_text_color}'):
booking_text_element = ui.markdown(booking_text) booking_text_element = ui.label(booking_text).style('white-space: pre-wrap').classes(bold)
if len(day_notes) > 0: if len(day_notes) > 0:
if len(timestamps_dict[day]) > 0 or day in list(map(int, list(user_absent))): if len(timestamps_dict[day]) > 0 or day in list(map(int, list(user_absent))):
ui.separator() ui.separator()
for user_key, notes in day_notes.items(): for user_key, notes in day_notes.items():
if user_key == "admin": if user_key == "admin":
ui.markdown(f"Administrator:<br>{notes}") ui.label(f"Administrator:\n{notes}").style('white-space: pre-wrap')
else: else:
with ui.element(): with ui.element():
ui.markdown(f"{current_user.fullname}:<br>{notes}") ui.label(f"{current_user.fullname}:\n{notes}").style('white-space: pre-wrap')
if len(day_notes) > 1 and just_once: if len(day_notes) > 1 and just_once:
ui.separator() ui.separator()
just_once = False just_once = False
# Ist-Zeiten berechnen # Ist-Zeiten berechnen
timestamps_of_this_day = [] timestamps_of_this_day = []
@ -163,11 +167,10 @@ def page_overview_month(username: str, year: int, month: int):
else: else:
is_time = "Kein" is_time = "Kein"
ui.markdown(is_time).classes(f'border px-{pad_x} py-{pad_y} text-center') ui.label(is_time).classes(f'border px-{pad_x} py-{pad_y} text-center')
# Sollzeit bestimmen # Sollzeit bestimmen
hours_to_work = int(current_user.get_day_workhours(year, month, day)) hours_to_work = int(current_user.get_day_workhours(year, month, day))
if hours_to_work < 0: if hours_to_work < 0:
target_time = "" target_time = ""
else: else:
@ -176,10 +179,11 @@ def page_overview_month(username: str, year: int, month: int):
booking_text = "Kein Arbeitstag" booking_text = "Kein Arbeitstag"
date_dt = datetime(year, month, day) date_dt = datetime(year, month, day)
if date_dt.strftime("%Y-%m-%d") in data["holidays"]: if date_dt.strftime("%Y-%m-%d") in data["holidays"]:
booking_text = f'**{data["holidays"][date_dt.strftime("%Y-%m-%d")]}**' booking_text = f'{data["holidays"][date_dt.strftime("%Y-%m-%d")]}'
booking_text_element.set_content(booking_text) booking_text_element.classes('text-bold')
booking_text_element.text = booking_text
ui.markdown(target_time).classes(f'border px-{pad_x} py-{pad_y} text-center') ui.label(target_time).classes(f'border px-{pad_x} py-{pad_y} text-center')
# Saldo für den Tag berechnen # Saldo für den Tag berechnen
day_in_list = datetime(year, month, day) day_in_list = datetime(year, month, day)
@ -190,7 +194,7 @@ def page_overview_month(username: str, year: int, month: int):
saldo = 0 saldo = 0
total = "" total = ""
booking_text = "Kein Arbeitsverhältnis" booking_text = "Kein Arbeitsverhältnis"
booking_text_element.set_content(booking_text) booking_text_element.value = booking_text
else: else:
saldo = int(time_sum) - int(time_duty) saldo = int(time_sum) - int(time_duty)
# Nach Abwesenheitseinträgen suchen # Nach Abwesenheitseinträgen suchen
@ -210,7 +214,7 @@ def page_overview_month(username: str, year: int, month: int):
total_class = 'text-center' total_class = 'text-center'
else: else:
total_class = 'text-right' total_class = 'text-right'
ui.markdown(total).classes(total_class).classes(f'border px-{pad_x} py-{pad_y}') ui.label(total).classes(total_class).classes(f'border px-{pad_x} py-{pad_y}')
# Überstundenzusammenfassung # Überstundenzusammenfassung
ui.label("Überstunden aus Vormonat:").classes(f'col-span-4 text-right border px-{pad_x} py-{pad_y}') ui.label("Überstunden aus Vormonat:").classes(f'col-span-4 text-right border px-{pad_x} py-{pad_y}')
@ -274,7 +278,7 @@ def page_overview_month(username: str, year: int, month: int):
with ui.dialog() as dialog, ui.card(): with ui.dialog() as dialog, ui.card():
with ui.grid(columns='1fr 1fr'): with ui.grid(columns='1fr 1fr'):
ui.markdown("Hiermit bestätigen Sie, dass die Zeitbuchungen im Montagsjournal korrekt sind.<br>Sollte dies nicht der Fall sein, wenden Sie sich für eine Korrektur an den Administrator.").classes('col-span-2') ui.label("Hiermit bestätigen Sie, dass die Zeitbuchungen im Montagsjournal korrekt sind.\nSollte dies nicht der Fall sein, wenden Sie sich für eine Korrektur an den Administrator.").classes('col-span-2').style('white-space: pre-wrap')
ui.button("Archivieren", on_click=do_archiving) ui.button("Archivieren", on_click=do_archiving)
ui.button("Abbrechen", on_click=dialog.close) ui.button("Abbrechen", on_click=dialog.close)

View File

@ -47,12 +47,12 @@ def page_touchscreen():
for name in userlist: for name in userlist:
current_user = user(name) current_user = user(name)
current_button = ui.button(on_click=lambda name=name: button_click(name)).classes(f'w-md h-full min-h-[{admin_settings["button_height"]}px]') current_button = ui.button(on_click=lambda name=name: button_click(name)).classes(f'w-md h-full min-h-[{admin_settings["button_height"]}px]')
with current_button: with current_button:
if admin_settings["photos_on_touchscreen"]: if admin_settings["photos_on_touchscreen"]:
try: try:
with open(current_user.photofile, 'r') as file: with open(current_user.photofile, 'r') as file:
pass pass
file.close()
ui.image(current_user.photofile).classes(f'max-h-[{admin_settings["picture_height"]}px]').props('fit=scale-down') ui.image(current_user.photofile).classes(f'max-h-[{admin_settings["picture_height"]}px]').props('fit=scale-down')
except: except:
pass pass

View File

@ -225,6 +225,8 @@ class user:
with open(os.path.join(self.userfolder, f"{year}-{month}.json"), 'r') as json_file: with open(os.path.join(self.userfolder, f"{year}-{month}.json"), 'r') as json_file:
data = json.load(json_file) data = json.load(json_file)
return data["archived"] return data["archived"]
except FileNotFoundError:
return False
except: except:
return -1 return -1

View File

@ -41,7 +41,7 @@ def main():
for i in list(app.urls): for i in list(app.urls):
url_string += f"{i}, " url_string += f"{i}, "
url_string = url_string[0:-2] url_string = url_string[0:-2]
print("Weboberfläche erreichbar unter: " + url_string) print("Oberfläche erreichbar unter: " + url_string)
app.on_startup(startup_message) app.on_startup(startup_message)