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)))
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):
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):
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()
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):