@@ -74,12 +74,15 @@ pub fn draw(app: &App, f: &mut Frame) {
7474 let duration = item. duration ;
7575 let hours = duration / 3600 ;
7676 let minutes = ( duration % 3600 ) / 60 ;
77+ let seconds = duration % 60 ;
7778 let prefix = if i == * selected_index { "→ " } else { " " } ;
7879
7980 let time_display = if hours > 0 {
80- format ! ( "{}h {}m" , hours, minutes)
81+ format ! ( "{}h {}m {}s" , hours, minutes, seconds)
82+ } else if minutes > 0 {
83+ format ! ( "{}m {}s" , minutes, seconds)
8184 } else {
82- format ! ( "{}m " , minutes )
85+ format ! ( "{}s " , seconds )
8386 } ;
8487
8588 let clean_app = App :: clean_app_name ( & item. display_name ) ;
@@ -134,12 +137,15 @@ pub fn draw(app: &App, f: &mut Frame) {
134137 let duration = item. duration ;
135138 let hours = duration / 3600 ;
136139 let minutes = ( duration % 3600 ) / 60 ;
140+ let seconds = duration % 60 ;
137141 let prefix = if actual_index == * selected_index { "→ " } else { " " } ;
138142
139143 let time_display = if hours > 0 {
140- format ! ( "{}h {}m" , hours, minutes)
144+ format ! ( "{}h {}m {}s" , hours, minutes, seconds)
145+ } else if minutes > 0 {
146+ format ! ( "{}m {}s" , minutes, seconds)
141147 } else {
142- format ! ( "{}m " , minutes )
148+ format ! ( "{}s " , seconds )
143149 } ;
144150
145151 let clean_app = App :: clean_app_name ( & item. display_name ) ;
@@ -324,7 +330,12 @@ pub fn draw(app: &App, f: &mut Frame) {
324330 clean_app
325331 } ;
326332
327- let display = format ! ( "{} {} - {}m" , time, display_name, minutes) ;
333+ let seconds = session. duration % 60 ;
334+ let display = if minutes > 0 {
335+ format ! ( "{} {} - {}m {}s" , time, display_name, minutes, seconds)
336+ } else {
337+ format ! ( "{} {} - {}s" , time, display_name, seconds)
338+ } ;
328339 let style = if idx == 0 && start_idx == 0 {
329340 Style :: default ( ) . fg ( Color :: Yellow ) // Highlight first (most recent)
330341 } else {
@@ -693,6 +704,7 @@ pub fn draw_stats(f: &mut Frame, area: Rect, data: &[crate::ui::hierarchical::Hi
693704
694705 let hours = item. duration / 3600 ;
695706 let minutes = ( item. duration % 3600 ) / 60 ;
707+ let seconds = item. duration % 60 ;
696708
697709 // Check if this is a child item (hierarchical sub-entry)
698710 let is_child = item. is_sub_entry ;
@@ -710,9 +722,11 @@ pub fn draw_stats(f: &mut Frame, area: Rect, data: &[crate::ui::hierarchical::Hi
710722 } ;
711723
712724 let time_str = if hours > 0 {
713- format ! ( "{}h {}m" , hours, minutes)
725+ format ! ( "{}h {}m {}s" , hours, minutes, seconds)
726+ } else if minutes > 0 {
727+ format ! ( "{}m {}s" , minutes, seconds)
714728 } else {
715- format ! ( "{}m " , minutes )
729+ format ! ( "{}s " , seconds )
716730 } ;
717731
718732 // Format display based on whether it's a parent or child entry
@@ -750,10 +764,13 @@ pub fn draw_stats(f: &mut Frame, area: Rect, data: &[crate::ui::hierarchical::Hi
750764 . sum ( ) ;
751765 let total_hours = total_duration / 3600 ;
752766 let total_minutes = ( total_duration % 3600 ) / 60 ;
767+ let total_seconds = total_duration % 60 ;
753768 let stats_title = if total_hours > 0 {
754- format ! ( "📈 Detailed Stats (Total: {}h {}m)" , total_hours, total_minutes)
769+ format ! ( "📈 Detailed Stats (Total: {}h {}m {}s)" , total_hours, total_minutes, total_seconds)
770+ } else if total_minutes > 0 {
771+ format ! ( "📈 Detailed Stats (Total: {}m {}s)" , total_minutes, total_seconds)
755772 } else {
756- format ! ( "📈 Detailed Stats (Total: {}m )" , total_minutes )
773+ format ! ( "📈 Detailed Stats (Total: {}s )" , total_seconds )
757774 } ;
758775
759776 let stats_list = List :: new ( stats_items)
@@ -795,10 +812,13 @@ pub fn draw_pie_chart(app: &App, f: &mut Frame, area: Rect, data: &[crate::ui::h
795812 let bar = "█" . repeat ( bar_length) ;
796813 let hours = duration / 3600 ;
797814 let minutes = ( duration % 3600 ) / 60 ;
815+ let seconds = duration % 60 ;
798816 let time_str = if hours > 0 {
799- format ! ( "{}h {}m" , hours, minutes)
817+ format ! ( "{}h {}m {}s" , hours, minutes, seconds)
818+ } else if minutes > 0 {
819+ format ! ( "{}m {}s" , minutes, seconds)
800820 } else {
801- format ! ( "{}m " , minutes )
821+ format ! ( "{}s " , seconds )
802822 } ;
803823
804824 pie_lines. push ( Line :: from ( vec ! [
@@ -1255,10 +1275,13 @@ pub fn draw_breakdown_section_with_style(
12551275 for ( name, duration) in data[ start_idx..end_idx] . iter ( ) {
12561276 let hours = duration / 3600 ;
12571277 let minutes = ( duration % 3600 ) / 60 ;
1278+ let seconds = duration % 60 ;
12581279 let time_str = if hours > 0 {
1259- format ! ( "{}h {}m" , hours, minutes)
1280+ format ! ( "{}h {}m {}s" , hours, minutes, seconds)
1281+ } else if minutes > 0 {
1282+ format ! ( "{}m {}s" , minutes, seconds)
12601283 } else {
1261- format ! ( "{}m " , minutes )
1284+ format ! ( "{}s " , seconds )
12621285 } ;
12631286
12641287 // For categories, extract color from category name
@@ -1298,10 +1321,13 @@ pub fn draw_file_breakdown_section_with_style(
12981321 for ( filename, language, duration) in app. file_breakdown [ start_idx..end_idx] . iter ( ) {
12991322 let hours = duration / 3600 ;
13001323 let minutes = ( duration % 3600 ) / 60 ;
1324+ let seconds = duration % 60 ;
13011325 let time_str = if hours > 0 {
1302- format ! ( "{}h {}m" , hours, minutes)
1326+ format ! ( "{}h {}m {}s" , hours, minutes, seconds)
1327+ } else if minutes > 0 {
1328+ format ! ( "{}m {}s" , minutes, seconds)
13031329 } else {
1304- format ! ( "{}m " , minutes )
1330+ format ! ( "{}s " , seconds )
13051331 } ;
13061332
13071333 let display = format ! ( " {} ({}) {}" , filename, language, time_str) ;
0 commit comments