@@ -674,17 +674,22 @@ impl<'a> TimeChart<'a> {
674674 & self , buf : & mut Buffer , layout : & ChartLayout , chart_area : Rect , graph_area : Rect ,
675675 ) {
676676 let Some ( y) = layout. label_x else { return } ;
677- let labels = self . x_axis . labels . as_ref ( ) . unwrap ( ) ;
677+ let Some ( labels) = self . x_axis . labels . as_ref ( ) else {
678+ return ;
679+ } ;
678680 let labels_len = labels. len ( ) as u16 ;
679681 if labels_len < 2 {
680682 return ;
681683 }
682684
685+ let first_label = labels. first ( ) . expect ( "must have at least 2 labels" ) ;
686+ let last_label = labels. last ( ) . expect ( "must have at least 2 labels" ) ;
687+
683688 let width_between_ticks = graph_area. width / labels_len;
684689
685690 let label_area = self . first_x_label_area (
686691 y,
687- labels . first ( ) . unwrap ( ) . width ( ) as u16 ,
692+ first_label . width ( ) as u16 ,
688693 width_between_ticks,
689694 chart_area,
690695 graph_area,
@@ -696,7 +701,7 @@ impl<'a> TimeChart<'a> {
696701 Alignment :: Right => Alignment :: Left ,
697702 } ;
698703
699- Self :: render_label ( buf, labels . first ( ) . unwrap ( ) , label_area, label_alignment) ;
704+ Self :: render_label ( buf, first_label , label_area, label_alignment) ;
700705
701706 for ( i, label) in labels[ 1 ..labels. len ( ) - 1 ] . iter ( ) . enumerate ( ) {
702707 // We add 1 to x (and width-1 below) to leave at least one space before each
@@ -710,7 +715,7 @@ impl<'a> TimeChart<'a> {
710715 let x = graph_area. right ( ) - width_between_ticks;
711716 let label_area = Rect :: new ( x, y, width_between_ticks, 1 ) ;
712717 // The last label should be aligned Right to be at the edge of the graph area
713- Self :: render_label ( buf, labels . last ( ) . unwrap ( ) , label_area, Alignment :: Right ) ;
718+ Self :: render_label ( buf, last_label , label_area, Alignment :: Right ) ;
714719 }
715720
716721 fn first_x_label_area (
@@ -751,8 +756,11 @@ impl<'a> TimeChart<'a> {
751756 // FIXME: Control how many y-axis labels are rendered based on height.
752757
753758 let Some ( x) = layout. label_y else { return } ;
754- let labels = self . y_axis . labels . as_ref ( ) . unwrap ( ) ;
759+ let Some ( labels) = self . y_axis . labels . as_ref ( ) else {
760+ return ;
761+ } ;
755762 let labels_len = labels. len ( ) as u16 ;
763+
756764 for ( i, label) in labels. iter ( ) . enumerate ( ) {
757765 let dy = i as u16 * ( graph_area. height - 1 ) / ( labels_len - 1 ) ;
758766 if dy < graph_area. bottom ( ) {
@@ -836,39 +844,41 @@ impl Widget for TimeChart<'_> {
836844 . render ( graph_area, buf) ;
837845
838846 if let Some ( ( x, y) ) = layout. title_x {
839- let title = self . x_axis . title . as_ref ( ) . unwrap ( ) ;
840- let width = graph_area
841- . right ( )
842- . saturating_sub ( x)
843- . min ( title. width ( ) as u16 ) ;
844- buf. set_style (
845- Rect {
846- x,
847- y,
848- width,
849- height : 1 ,
850- } ,
851- original_style,
852- ) ;
853- buf. set_line ( x, y, title, width) ;
847+ if let Some ( title) = self . x_axis . title . as_ref ( ) {
848+ let width = graph_area
849+ . right ( )
850+ . saturating_sub ( x)
851+ . min ( title. width ( ) as u16 ) ;
852+ buf. set_style (
853+ Rect {
854+ x,
855+ y,
856+ width,
857+ height : 1 ,
858+ } ,
859+ original_style,
860+ ) ;
861+ buf. set_line ( x, y, title, width) ;
862+ }
854863 }
855864
856865 if let Some ( ( x, y) ) = layout. title_y {
857- let title = self . y_axis . title . as_ref ( ) . unwrap ( ) ;
858- let width = graph_area
859- . right ( )
860- . saturating_sub ( x)
861- . min ( title. width ( ) as u16 ) ;
862- buf. set_style (
863- Rect {
864- x,
865- y,
866- width,
867- height : 1 ,
868- } ,
869- original_style,
870- ) ;
871- buf. set_line ( x, y, title, width) ;
866+ if let Some ( title) = self . y_axis . title . as_ref ( ) {
867+ let width = graph_area
868+ . right ( )
869+ . saturating_sub ( x)
870+ . min ( title. width ( ) as u16 ) ;
871+ buf. set_style (
872+ Rect {
873+ x,
874+ y,
875+ width,
876+ height : 1 ,
877+ } ,
878+ original_style,
879+ ) ;
880+ buf. set_line ( x, y, title, width) ;
881+ }
872882 }
873883
874884 if let Some ( legend_area) = layout. legend_area {
0 commit comments