@@ -533,6 +533,10 @@ impl SolutionTab {
533533
534534 pub fn solution_draw ( & mut self ) {
535535 let current_mode: Option < String > = if self . pending_draw_modes . len ( ) >0 {
536+ self . lat_min = LAT_MAX ;
537+ self . lat_max = LAT_MIN ;
538+ self . lon_min = LON_MAX ;
539+ self . lon_max = LON_MIN ;
536540 Some ( self . pending_draw_modes [ self . pending_draw_modes . len ( ) -1 ] . clone ( ) )
537541 } else {
538542 None
@@ -558,9 +562,9 @@ impl SolutionTab {
558562 let lng = last_lng; // - self.offset) * self.sf
559563
560564 let lat_str = format ! ( "lat_{}" , mode_string) ;
561- let lng_str = format ! ( "lng_{}" , mode_string) ;
565+ let lon_str = format ! ( "lng_{}" , mode_string) ;
562566 self . slns . get_mut ( & lat_str) . unwrap ( ) . add ( lat) ;
563- self . slns . get_mut ( & lng_str ) . unwrap ( ) . add ( lng) ;
567+ self . slns . get_mut ( & lon_str ) . unwrap ( ) . add ( lng) ;
564568 self . _append_empty_sln_data ( Some ( mode_string) ) ;
565569 }
566570
@@ -570,37 +574,40 @@ impl SolutionTab {
570574 continue ;
571575 }
572576 let lat_str = format ! ( "lat_{}" , each_mode) ;
573- let lng_str = format ! ( "lng_{}" , each_mode) ;
577+ let lon_str = format ! ( "lng_{}" , each_mode) ;
574578 self . slns . get_mut ( & lat_str) . unwrap ( ) . add ( f64:: NAN ) ;
575- self . slns . get_mut ( & lng_str ) . unwrap ( ) . add ( f64:: NAN ) ;
579+ self . slns . get_mut ( & lon_str ) . unwrap ( ) . add ( f64:: NAN ) ;
576580 }
577581 }
578582
579583 fn _synchronize_plot_data_by_mode ( & mut self , mode_string : & String , update_current : bool ) {
580584 let lat_string = format ! ( "lat_{}" , mode_string) ;
581- let lng_string = format ! ( "lng_{}" , mode_string) ;
585+ let lon_string = format ! ( "lng_{}" , mode_string) ;
582586
583587 if let Some ( idx) = self . mode_strings . iter ( ) . position ( |x| * x == * mode_string) {
584- self . sln_data [ idx] = self . slns [ & lat_string] . get ( )
585- . iter ( )
586- . zip ( self . slns [ & lng_string] . get ( ) . iter ( ) )
587- . filter ( |( x, y) | !x. is_nan ( ) || !y. is_nan ( ) )
588- . map ( |( x, y) | ( * y, * x) )
589- . collect ( ) ;
588+ let lat_values = self . slns [ & lat_string] . get ( ) ;
589+ let lon_values = self . slns [ & lon_string] . get ( ) ;
590+
591+ let mut new_sln: Vec < ( f64 , f64 ) > = vec ! [ ] ;
592+ for jdx in 0 ..lat_values. len ( ) {
593+ if lat_values[ jdx] . is_nan ( ) || lon_values[ jdx] . is_nan ( ) {
594+ continue ;
595+ }
596+ self . lat_min = f64:: min ( self . lat_min , lat_values[ jdx] ) ;
597+ self . lat_max = f64:: max ( self . lat_max , lat_values[ jdx] ) ;
598+ self . lon_min = f64:: min ( self . lon_min , lon_values[ jdx] ) ;
599+ self . lon_max = f64:: max ( self . lon_max , lon_values[ jdx] ) ;
600+ new_sln. push ( ( lon_values[ jdx] , lat_values[ jdx] ) ) ;
601+ }
602+ self . sln_data [ idx] = new_sln;
603+
590604 if update_current {
591605 if self . sln_data [ idx] . len ( ) > 0 {
592606 self . sln_cur_data [ idx] = self . sln_data [ idx] [ self . sln_data [ idx] . len ( ) -1 ] ;
593607 } else {
594608 self . sln_cur_data [ idx] = ( f64:: NAN , f64:: NAN ) ;
595609 }
596- }
597- if self . sln_data [ idx] . len ( ) >10 {
598- self . lat_max = self . sln_data [ idx] [ 0 ] . 1 ;
599- self . lat_min = self . sln_data [ idx] [ self . sln_data [ idx] . len ( ) -1 ] . 1 ;
600- self . lon_max = self . sln_data [ idx] [ 0 ] . 0 ;
601- self . lon_min = self . sln_data [ idx] [ self . sln_data [ idx] . len ( ) -1 ] . 0 ;
602- }
603-
610+ }
604611 }
605612 }
606613
0 commit comments