]> git.walde.dev - punch/commitdiff
Fix duration rendering
authorDustin Walde <redacted>
Thu, 4 May 2023 05:11:21 +0000 (22:11 -0700)
committerDustin Walde <redacted>
Thu, 4 May 2023 05:11:21 +0000 (22:11 -0700)
- Fix menu update timing

src/image_generator.py
src/service.py

index 280c0942397dd8c51b673f50869d5e3865cdbe6f..64030423640823f23197ccfacd79acac359ad3a3 100644 (file)
@@ -45,7 +45,7 @@ def day(sheet: TimeSheet, date: datetime.date) -> Image.Image:
             img.putpixel((i+1,0), color)
             img.putpixel((i+1,IMAGE_SIZE-1), color)
         tt = _day(sheet, img, date, (2, IMAGE_SIZE-2), (2, IMAGE_SIZE-2), TARGET_HOURS, 255)
-        hr_ratio = floor(min(1, tt.total_seconds()/(TARGET_HOURS*60*60))*128)
+        hr_ratio = floor(min(1, tt.total_seconds()/(TARGET_HOURS*60*60))*192)
         grad_size = IMAGE_SIZE-2
         for i in range(IMAGE_SIZE-2):
             img.putpixel((1,1+i), (255,255,255, floor(hr_ratio*(grad_size-i)/grad_size)))
@@ -80,6 +80,9 @@ def _day(sheet: TimeSheet, image: Image.Image, date: datetime.date,
 
     seg_time = _time_per_segment(segments)
 
+    if len(sheet.get_open_entries()) == 0:
+        tt = -seg_time
+
     # pre-fill taget range
     for i in range(min(target_hours, hours)):
         for j in range(segments):
index e95b434aa2e60b758324772ae7134fb512b4aebd..bce11e798beae6711c5cc629f24bce4ff6e50388 100644 (file)
@@ -43,9 +43,9 @@ class Service:
                     self.reload = False
             if reload:
                 self.sheet.load_csv(PATH)
-                icon.update_menu()
-                reload = False
             icon.icon = image_generator.day(self.sheet, datetime.date.today())
+            if reload:
+                icon.update_menu()
 
 
     def run(self):
@@ -106,13 +106,16 @@ class Service:
                     tt += entry.t_out - td # type: ignore
                     break
                 else:
-                    tt += entry.duration # type: ignore
+                    tt += entry.duration() # type: ignore
 
             if tt > datetime.timedelta(0):
                 seconds = tt.total_seconds()
                 minutes = floor(seconds/60)
                 hours = floor(minutes/60)
-                today_times += f"{cat} {hours:02}:{minutes:02}\n"
+                minutes %= 60
+                name = self.sheet.categories[cat].name
+                name += " " * (max(1, 20-len(name)))
+                today_times += f"{name:20}\t{hours:02}:{minutes:02}\n"
 
         return today_times.strip()
 
@@ -131,11 +134,14 @@ class Service:
 
 
     def _timer_thread(self):
+        i = 0
         while True:
             sleep(60)
             with self.cv:
+                if len(self.sheet.get_open_entries()) > 0 and i % 7 == 0:
+                    self.reload = True
                 self.cv.notify_all()
-
+            i += 1
 
 
 class OnDataModify(FileSystemEventHandler):