From: Dustin Walde Date: Thu, 4 May 2023 05:11:21 +0000 (-0700) Subject: Fix duration rendering X-Git-Url: https://git.walde.dev/?a=commitdiff_plain;h=2b8aa2782ceb32d058a3751d413443ed5c9ab75d;p=punch Fix duration rendering - Fix menu update timing --- diff --git a/src/image_generator.py b/src/image_generator.py index 280c094..6403042 100644 --- a/src/image_generator.py +++ b/src/image_generator.py @@ -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): diff --git a/src/service.py b/src/service.py index e95b434..bce11e7 100644 --- a/src/service.py +++ b/src/service.py @@ -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):