added time calc and pdf exports

This commit is contained in:
Blake Ridgway 2025-03-31 09:08:44 -05:00
parent 2a5c9f438d
commit 266d21b540

View file

@ -192,15 +192,42 @@ class TimeLogix(tk.Tk):
with open(filename, mode="r") as csvfile: with open(filename, mode="r") as csvfile:
reader = csv.reader(csvfile) reader = csv.reader(csvfile)
header = next(reader, None) header = next(reader, None)
row_number = 1
total_hours_loaded = False
for row in reader: for row in reader:
if not row:
print(f"Skipping empty row: {row_number}")
row_number += 1
continue
if len(row) == 5: if len(row) == 5:
start_time_str, end_time_str, duration_str, decimal_hours_str, description = row start_time_str, end_time_str, duration_str, decimal_hours_str, description = row
elif len(row) == 4: elif len(row) == 4:
if row[0] == '' and row[1] == '' and row[2] == '' and row[3] == 'Total Hours':
try:
self.total_hours = float(row[4])
self.update_total_hours()
total_hours_loaded = True
print(f"Total hours loaded from row {row_number}: {self.total_hours}")
row_number += 1
continue
except ValueError:
print(f"Skipping total hours row {row_number} due to parsing error")
row_number += 1
continue
start_time_str, end_time_str, duration_str, decimal_hours_str = row start_time_str, end_time_str, duration_str, decimal_hours_str = row
description = "" description = ""
else: else:
print(f"Skipping row with unexpected number of columns: {len(row)}") print(f"Skipping row with unexpected number of columns ({len(row)}): {row_number}")
row_number += 1
continue
if not start_time_str or not end_time_str:
print(f"Skipping row with missing time data: {row_number}")
row_number += 1
continue continue
try: try:
@ -213,12 +240,17 @@ class TimeLogix(tk.Tk):
f"Duration: {duration_str}, Description: {description}" f"Duration: {duration_str}, Description: {description}"
) )
except ValueError as ve: except ValueError as ve:
print(f"Skipping row due to parsing error: {ve}") print(f"Skipping row {row_number} due to parsing error: {ve}")
row_number += 1
if not total_hours_loaded:
self.update_total_hours()
print("Total hours row was not found so calculating from current rows!")
except FileNotFoundError: except FileNotFoundError:
messagebox.showinfo("Info", "No CSV file found. Starting with a new session.") messagebox.showinfo("Info", "No CSV file found. Starting with a new session.")
except Exception as e: except Exception as e:
messagebox.showerror("Error", f"Failed to load sessions from CSV: {e}") messagebox.showerror("Error", f"Failed to load sessions from CSV: {e}")
def parse_duration(self, duration_str): def parse_duration(self, duration_str):
hours, minutes, seconds = map(int, duration_str.split(':')) hours, minutes, seconds = map(int, duration_str.split(':'))
return timedelta(hours=hours, minutes=minutes, seconds=seconds) return timedelta(hours=hours, minutes=minutes, seconds=seconds)