From caa812e7d84444f5d31f921ab78c699de38693fb Mon Sep 17 00:00:00 2001 From: Igor Babko Date: Wed, 15 Nov 2023 11:53:44 +0200 Subject: [PATCH 1/4] 125. end of idle hour --- src/storage.js | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/src/storage.js b/src/storage.js index 2c7c925..cfc37bd 100644 --- a/src/storage.js +++ b/src/storage.js @@ -1,4 +1,4 @@ -import { APP_NAME, MILLISECONDS_IN_SECOND } from './constants' +import { APP_NAME, MILLISECONDS_IN_SECOND, SECONDS_IN_HOUR } from './constants' import { isToday, today } from './time' import { timelineItems } from './timeline-items' import { activities } from './activities' @@ -32,8 +32,28 @@ function syncIdleSeconds(timelineItems, lastActiveAt) { const activeTimelineItem = timelineItems.find(({ isActive }) => isActive) if (activeTimelineItem) { - activeTimelineItem.activitySeconds += (today() - lastActiveAt) / MILLISECONDS_IN_SECOND + activeTimelineItem.activitySeconds += calculateIdleSeconds(lastActiveAt) } return timelineItems } + +function calculateIdleSeconds(lastActiveAt) { + let idleMilliseconds = today() - lastActiveAt + + if (lastActiveAt.getHours() !== today().getHours()) { + idleMilliseconds = getEndOfIdleHour(lastActiveAt) - lastActiveAt + } + + return idleMilliseconds / MILLISECONDS_IN_SECOND +} + +function getEndOfIdleHour(lastActiveAt) { + const endOfIdleHour = new Date(lastActiveAt) + + endOfIdleHour.setTime(endOfIdleHour.getTime() + SECONDS_IN_HOUR * MILLISECONDS_IN_SECOND) + + endOfIdleHour.setMinutes(0, 0, 0) + + return endOfIdleHour +} From af5cfff2f0ceeed4f9c82e564eea98c060fef4d1 Mon Sep 17 00:00:00 2001 From: Igor Babko Date: Wed, 15 Nov 2023 08:57:36 +0200 Subject: [PATCH 2/4] 126 --- src/pages/TheTimeline.vue | 6 +++--- src/storage.js | 24 +++++------------------- src/time.js | 30 ++++++++++++++++++++++-------- 3 files changed, 30 insertions(+), 30 deletions(-) diff --git a/src/pages/TheTimeline.vue b/src/pages/TheTimeline.vue index 4bd9a51..0957fa3 100644 --- a/src/pages/TheTimeline.vue +++ b/src/pages/TheTimeline.vue @@ -6,7 +6,7 @@ import { scrollToCurrentHour, stopTimelineItemTimer } from '../timeline-items' -import { startTimer, stopTimer } from '../time' +import { startCurrentDateTimer, stopCurrentDateTimer } from '../time' import TimelineItem from '../components/TimelineItem.vue' import TheTimelineIndicator from '../components/TheTimelineIndicator.vue' @@ -15,10 +15,10 @@ stopTimelineItemTimer() onActivated(() => { scrollToCurrentHour() - startTimer() + startCurrentDateTimer() }) -onDeactivated(stopTimer) +onDeactivated(stopCurrentDateTimer)