added time calc and pdf exports
This commit is contained in:
parent
2a5c9f438d
commit
266d21b540
1 changed files with 35 additions and 3 deletions
|
|
@ -192,15 +192,42 @@ class TimeLogix(tk.Tk):
|
|||
with open(filename, mode="r") as csvfile:
|
||||
reader = csv.reader(csvfile)
|
||||
header = next(reader, None)
|
||||
row_number = 1
|
||||
total_hours_loaded = False
|
||||
|
||||
for row in reader:
|
||||
if not row:
|
||||
print(f"Skipping empty row: {row_number}")
|
||||
row_number += 1
|
||||
continue
|
||||
|
||||
if len(row) == 5:
|
||||
start_time_str, end_time_str, duration_str, decimal_hours_str, description = row
|
||||
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
|
||||
description = ""
|
||||
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
|
||||
|
||||
try:
|
||||
|
|
@ -213,12 +240,17 @@ class TimeLogix(tk.Tk):
|
|||
f"Duration: {duration_str}, Description: {description}"
|
||||
)
|
||||
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:
|
||||
messagebox.showinfo("Info", "No CSV file found. Starting with a new session.")
|
||||
except Exception as e:
|
||||
messagebox.showerror("Error", f"Failed to load sessions from CSV: {e}")
|
||||
|
||||
|
||||
def parse_duration(self, duration_str):
|
||||
hours, minutes, seconds = map(int, duration_str.split(':'))
|
||||
return timedelta(hours=hours, minutes=minutes, seconds=seconds)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue