Saldo Berechnung ergänzt

This commit is contained in:
Alexander Malzkuhn 2025-04-23 11:40:09 +02:00
parent 1238f2227d
commit 1cbfe0cfa4
5 changed files with 64 additions and 46 deletions

View File

@ -34,3 +34,4 @@
1745391058
1745391059
1743660240
1743685200

View File

@ -4,13 +4,13 @@
"password": "123456789",
"workhours": {
"2024-04-01": {
"1": "11",
"2": "12",
"3": "13",
"4": "14",
"5": "15",
"6": "16",
"7": "17",
"1": "8",
"2": "8",
"3": "8",
"4": "8",
"5": "8",
"6": "0",
"7": "0",
"vacation": "35"
},
"2025-05-13": {

View File

@ -4,23 +4,23 @@
"password": "123456789",
"workhours": {
"2024-04-01": {
"0": "0",
"1": "8",
"1": "0",
"2": "8",
"3": "8",
"4": "8",
"5": "8",
"6": "0",
"6": "8",
"7": "0",
"vacation": "30"
},
"2024-04-07": {
"0": "0",
"1": "6",
"1": "0",
"2": "6",
"3": "6",
"4": "8",
"5": "6",
"6": "0",
"4": "6",
"5": "8",
"6": "6",
"7": "0",
"vacation": "28"
}
}

View File

@ -4,33 +4,33 @@
"password": "123456789",
"workhours": {
"2025-04-01": {
"0": "0",
"1": "8",
"1": "0",
"2": "8",
"3": "8",
"4": "8",
"5": "8",
"6": "0",
"6": "8",
"7": "0",
"vacation": "30"
},
"2025-04-07": {
"0": "5",
"1": "6",
"1": "5",
"2": "6",
"3": "6",
"4": "8",
"5": "6",
"6": "0",
"4": "6",
"5": "8",
"6": "6",
"7": "0",
"vacation": "28"
},
"2025-03-16": {
"0": 0,
"1": 0,
"2": 0,
"3": 0,
"4": 0,
"5": 0,
"6": 0,
"7": 0,
"vacation": 0
}
}

View File

@ -34,12 +34,17 @@ def load_adminsettings():
return(-1)
def convert_seconds_to_hours(seconds):
if seconds < 0:
sign = "-"
seconds = seconds * (-1)
else:
sign = ""
hours = seconds // 3600
remaining_seconds = seconds - hours * 3600
minutes = remaining_seconds // 60
remaining_seconds = remaining_seconds - minutes * 60
if remaining_seconds > 0:
minutes += 1
if remaining_seconds > 0 and sign != "-":
minutes = minutes + 1
if hours < 10:
hours = "0" + str(hours)
else:
@ -48,8 +53,13 @@ def convert_seconds_to_hours(seconds):
minutes = "0" + str(minutes)
else:
minutes = str(minutes)
if sign == "-":
return(f"-{hours}:{minutes}")
else:
return(f"{hours}:{minutes}")
@ui.page('/login')
def page_login():
@ -80,7 +90,6 @@ def page_login():
ui.button(text="Login", on_click=lambda: login())
@ui.page('/admin')
def page_admin():
data = load_adminsettings()
@ -112,19 +121,6 @@ def page_admin():
with ui.tab_panel(time_overview):
ui.markdown("##Übersichten")
# Basisstruktur
with ui.card():
with ui.row():
userlist = list_users()
ui.markdown("Benutzer:")
time_user = ui.select(options=userlist)
time_user.value = userlist[0]
def update_user():
pass
ui.button("Aktualisieren", on_click=update_user)
# Tabelle konstruieren
with ui.card():
@ -141,6 +137,11 @@ def page_admin():
select_month.set_options(available_months_dict)
select_month.value = list(available_months)[0]
userlist = list_users()
ui.markdown("Benutzer:")
time_user = ui.select(options=userlist)
time_user.value = userlist[0]
current_year = datetime.datetime.now().year
current_month = datetime.datetime.now().month
@ -181,6 +182,8 @@ def page_admin():
current_user = user(time_user.value)
timestamps = current_user.get_timestamps(year=select_year.value, month=select_month.value)
general_saldo = 0
for day in range(1, monthrange(int(select_year.value), int(select_month.value))[1] + 1):
day_in_list = datetime.datetime(int(select_year.value), int(select_month.value), day)
@ -272,23 +275,33 @@ def page_admin():
timestamps_of_this_day.append(i)
timestamps_of_this_day.sort()
if len(timestamps_of_this_day) > 1:
time_sum = 0
if len(timestamps_of_this_day) > 1:
if len(timestamps_of_this_day) % 2 == 0:
for i in range(0, len(timestamps_of_this_day), 2):
time_delta = int(timestamps_of_this_day[i+1]) - int(timestamps_of_this_day[i])
time_sum += time_delta
time_sum = time_sum + time_delta
else:
for i in range(0, len(timestamps_of_this_day) - 1, 2):
time_delta = int(timestamps_of_this_day[i+1]) - int(timestamps_of_this_day[i])
time_sum += time_delta
time_sum = time_sum + time_delta
ui.markdown(convert_seconds_to_hours(time_sum))
else:
ui.markdown("Kein")
# ui.markdown("Ist")
ui.markdown("+/-")
# Plus und Minuszeit für den Tag berechnen
if time.time() > day_in_list.timestamp():
time_duty = int(current_user.workhours[entry][str(weekday_index)]) * 3600
saldo = int(time_sum) - int(time_duty)
general_saldo = general_saldo + saldo
ui.markdown(convert_seconds_to_hours(saldo))
else:
ui.markdown("-")
def add_entry(day):
with ui.dialog() as add_dialog, ui.card():
@ -315,6 +328,10 @@ def page_admin():
ui.button("Abbrechen", on_click=add_dialog.close)
add_dialog.open()
ui.button("Eintrag hinzufügen", on_click=lambda day=day: add_entry(day))
#4x leer und dann Gesamtsald
for i in range(4):
ui.space()
ui.markdown(f"<ins>{convert_seconds_to_hours(general_saldo)}</ins>")
table_grid.move(calendar_card)
update_month_and_year()