11// Navigation Manager for Sidebar
2- const { invoke } = window . __TAURI__ . core ;
32import { TimeUtils } from '../utils/common-utils.js' ;
43
54export class NavigationManager {
@@ -183,7 +182,6 @@ export class NavigationManager {
183182 let previousWeeklySessions = 0 ;
184183
185184 try {
186- const history = await invoke ( 'get_stats_history' ) ;
187185 const weekStart = this . getWeekStart ( this . currentDate ) ;
188186 const previousWeekStart = new Date ( weekStart ) ;
189187 previousWeekStart . setDate ( weekStart . getDate ( ) - 7 ) ;
@@ -195,14 +193,25 @@ export class NavigationManager {
195193 for ( let i = 0 ; i < 7 ; i ++ ) {
196194 const date = new Date ( weekStart ) ;
197195 date . setDate ( weekStart . getDate ( ) + i ) ;
198- const dayData = history . find ( h => h . date === date . toDateString ( ) ) ;
199- if ( dayData ) {
200- weekTotal += dayData . total_focus_time ;
201- weeklyFocusTime += dayData . total_focus_time ;
202- weeklySessions += dayData . completed_pomodoros ;
203- if ( dayData . total_focus_time > 0 ) {
204- daysWithData ++ ;
205- }
196+
197+ let dayTotalTime = 0 ;
198+ let daySessions = 0 ;
199+
200+ // Get sessions from SessionManager for this date
201+ if ( window . sessionManager ) {
202+ const sessions = window . sessionManager . getSessionsForDate ( date ) ;
203+ const focusSessions = sessions . filter ( s => s . session_type === 'focus' || s . session_type === 'custom' ) ;
204+
205+ // Calculate total time in seconds from session durations
206+ dayTotalTime = focusSessions . reduce ( ( total , session ) => total + ( ( session . duration || 0 ) * 60 ) , 0 ) ;
207+ daySessions = focusSessions . length ;
208+ }
209+
210+ if ( dayTotalTime > 0 ) {
211+ weekTotal += dayTotalTime ;
212+ weeklyFocusTime += dayTotalTime ;
213+ weeklySessions += daySessions ;
214+ daysWithData ++ ;
206215 }
207216 }
208217
@@ -215,14 +224,25 @@ export class NavigationManager {
215224 for ( let i = 0 ; i < 7 ; i ++ ) {
216225 const date = new Date ( previousWeekStart ) ;
217226 date . setDate ( previousWeekStart . getDate ( ) + i ) ;
218- const dayData = history . find ( h => h . date === date . toDateString ( ) ) ;
219- if ( dayData ) {
220- previousWeekTotal += dayData . total_focus_time ;
221- previousWeekFocusTime += dayData . total_focus_time ;
222- previousWeeklySessions += dayData . completed_pomodoros ;
223- if ( dayData . total_focus_time > 0 ) {
224- previousDaysWithData ++ ;
225- }
227+
228+ let dayTotalTime = 0 ;
229+ let daySessions = 0 ;
230+
231+ // Get sessions from SessionManager for this date
232+ if ( window . sessionManager ) {
233+ const sessions = window . sessionManager . getSessionsForDate ( date ) ;
234+ const focusSessions = sessions . filter ( s => s . session_type === 'focus' || s . session_type === 'custom' ) ;
235+
236+ // Calculate total time in seconds from session durations
237+ dayTotalTime = focusSessions . reduce ( ( total , session ) => total + ( ( session . duration || 0 ) * 60 ) , 0 ) ;
238+ daySessions = focusSessions . length ;
239+ }
240+
241+ if ( dayTotalTime > 0 ) {
242+ previousWeekTotal += dayTotalTime ;
243+ previousWeekFocusTime += dayTotalTime ;
244+ previousWeeklySessions += daySessions ;
245+ previousDaysWithData ++ ;
226246 }
227247 }
228248
@@ -417,7 +437,6 @@ export class NavigationManager {
417437 const maxHeight = 70 ;
418438
419439 try {
420- const history = await invoke ( 'get_stats_history' ) ;
421440 const weekStart = this . getWeekStart ( this . currentDate ) ;
422441 const today = new Date ( ) ;
423442
@@ -433,20 +452,17 @@ export class NavigationManager {
433452 const date = new Date ( weekStart ) ;
434453 date . setDate ( weekStart . getDate ( ) + index ) ;
435454
436- // Get data from both timer history and SessionManager
437- const dayData = history . find ( h => h . date === date . toDateString ( ) ) ;
438- let sessionsMinutes = dayData ? dayData . total_focus_time / 60 : 0 ; // Convert seconds to minutes
439- let sessions = dayData ? dayData . completed_pomodoros : 0 ;
455+ let sessionsMinutes = 0 ;
456+ let sessions = 0 ;
440457
441- // Add sessions from SessionManager for this date
458+ // Get sessions from SessionManager for this date
442459 if ( window . sessionManager ) {
443- const manualSessions = window . sessionManager . getSessionsForDate ( date ) ;
444- const focusSessions = manualSessions . filter ( s => s . session_type === 'focus' || s . session_type === 'custom' ) ;
460+ const allSessions = window . sessionManager . getSessionsForDate ( date ) ;
461+ const focusSessions = allSessions . filter ( s => s . session_type === 'focus' || s . session_type === 'custom' ) ;
445462
446- // Add minutes from manual/timer sessions
447- const manualMinutes = focusSessions . reduce ( ( total , session ) => total + ( session . duration || 0 ) , 0 ) ;
448- sessionsMinutes += manualMinutes ;
449- sessions += focusSessions . length ;
463+ // Calculate total minutes from session durations
464+ sessionsMinutes = focusSessions . reduce ( ( total , session ) => total + ( session . duration || 0 ) , 0 ) ;
465+ sessions = focusSessions . length ;
450466 }
451467
452468 // Only consider days that have completely passed (exclude today) for average calculation
@@ -460,7 +476,6 @@ export class NavigationManager {
460476 weekData . push ( {
461477 day,
462478 date,
463- dayData,
464479 sessionsMinutes,
465480 sessions,
466481 isPast : date <= today
@@ -530,7 +545,7 @@ export class NavigationManager {
530545 }
531546
532547 // Second pass: create the bars with proportional scaling
533- weekData . forEach ( ( { day, sessionsMinutes, sessions, dayData , isPast } ) => {
548+ weekData . forEach ( ( { day, sessionsMinutes, sessions, isPast } ) => {
534549 const dayBar = document . createElement ( 'div' ) ;
535550 dayBar . className = 'week-day-bar' ;
536551
@@ -708,15 +723,6 @@ export class NavigationManager {
708723 const daysInMonth = lastDay . getDate ( ) ;
709724 const startingDay = firstDay . getDay ( ) ;
710725
711- // Load session history for the month
712- let history = [ ] ;
713- try {
714- history = await invoke ( 'get_stats_history' ) ;
715- } catch ( error ) {
716- console . error ( 'Failed to load calendar data:' , error ) ;
717- // Continue with empty history
718- }
719-
720726 // Add empty cells for days before month starts
721727 for ( let i = 0 ; i < startingDay ; i ++ ) {
722728 const emptyDay = document . createElement ( 'div' ) ;
@@ -740,16 +746,19 @@ export class NavigationManager {
740746 dayEl . classList . add ( 'today' ) ;
741747 }
742748
743- // Add session dots based on real data (if available)
749+ // Add session dots based on SessionManager data
744750 const dots = document . createElement ( 'div' ) ;
745751 dots . className = 'calendar-day-dots' ;
746752
747- if ( history . length > 0 ) {
748- const dayData = history . find ( h => h . date === dayDate . toDateString ( ) ) ;
749- if ( dayData && dayData . completed_pomodoros > 0 ) {
753+ // Get sessions from SessionManager for this date
754+ if ( window . sessionManager ) {
755+ const sessions = window . sessionManager . getSessionsForDate ( dayDate ) ;
756+ const focusSessions = sessions . filter ( s => s . session_type === 'focus' || s . session_type === 'custom' ) ;
757+
758+ if ( focusSessions . length > 0 ) {
750759 dayEl . classList . add ( 'has-sessions' ) ;
751- // Create dots for completed pomodoros
752- const numDots = Math . min ( dayData . completed_pomodoros , 5 ) ; // Max 5 dots
760+ // Create dots for completed focus sessions
761+ const numDots = Math . min ( focusSessions . length , 5 ) ; // Max 5 dots
753762 for ( let i = 0 ; i < numDots ; i ++ ) {
754763 const dot = document . createElement ( 'div' ) ;
755764 dot . className = 'calendar-dot' ;
0 commit comments