@@ -41,25 +41,25 @@ pub struct XsCache {
4141
4242#[ derive( Properties , PartialEq ) ]
4343pub struct PlotProps {
44- pub selected_indexes : HashSet < usize > ,
44+ pub selected_ids : HashSet < i32 > ,
4545 pub is_y_log : UseStateHandle < bool > ,
4646 pub is_x_log : UseStateHandle < bool > ,
4747 pub clear_plot_callback : Callback < MouseEvent > ,
4848}
4949
5050#[ function_component( PlotComponent ) ]
5151pub fn plot_component ( props : & PlotProps ) -> Html {
52- let selected_indexes = & props. selected_indexes ;
52+ let selected_ids = & props. selected_ids ;
5353 let is_y_log = props. is_y_log . clone ( ) ;
5454 let is_x_log = props. is_x_log . clone ( ) ;
5555
5656 let p = use_async :: < _ , _ , ( ) > ( {
57- let selected_indexes = selected_indexes . clone ( ) ;
57+ let selected_ids = selected_ids . clone ( ) ;
5858 let is_y_log = is_y_log. clone ( ) ;
5959 let is_x_log = is_x_log. clone ( ) ;
6060
6161 async move {
62- let cache = generate_cache ( & selected_indexes ) . await ;
62+ let cache = generate_cache ( & selected_ids ) . await ;
6363
6464 let id = "plot-div" ;
6565 let mut plot = Plot :: new ( ) ;
@@ -117,7 +117,7 @@ pub fn plot_component(props: &PlotProps) -> Html {
117117 }
118118 } ) ;
119119
120- use_effect_with ( ( selected_indexes . clone ( ) , is_y_log. clone ( ) , is_x_log. clone ( ) ) , move |_| {
120+ use_effect_with ( ( selected_ids . clone ( ) , is_y_log. clone ( ) , is_x_log. clone ( ) ) , move |_| {
121121 p. run ( ) ;
122122 } ) ;
123123
@@ -126,7 +126,7 @@ pub fn plot_component(props: &PlotProps) -> Html {
126126 }
127127}
128128
129- async fn generate_cache ( selected : & HashSet < usize > ) -> XsCache {
129+ async fn generate_cache ( selected : & HashSet < i32 > ) -> XsCache {
130130 // TODO add name to this so that when adding a trace the name can be set
131131 let mut cache_energy_values = Vec :: new ( ) ;
132132 let mut cache_cross_section_values = Vec :: new ( ) ;
@@ -190,8 +190,8 @@ fn convert_string(entry: &Entry) -> String {
190190 output
191191}
192192
193- async fn download_xs_cache ( selected_indexes : HashSet < usize > ) {
194- let cache = generate_cache ( & selected_indexes ) . await ;
193+ async fn download_xs_cache ( selected_ids : HashSet < i32 > ) {
194+ let cache = generate_cache ( & selected_ids ) . await ;
195195
196196 // Convert the cache data to a pretty-printed JSON string
197197 let json_data = serde_json:: to_string_pretty ( & cache) . unwrap ( ) ;
@@ -256,8 +256,8 @@ pub fn home() -> Html {
256256 let page = use_state ( || 0usize ) ;
257257 let current_page = ( * page) . clone ( ) ;
258258
259- let selected_indexes = use_set ( HashSet :: < usize > :: new ( ) ) ;
260- let sum = selected_indexes . current ( ) . len ( ) ;
259+ let selected_ids = use_set ( HashSet :: < i32 > :: new ( ) ) ;
260+ let sum = selected_ids . current ( ) . len ( ) ;
261261
262262 let is_y_log = use_state ( || true ) ;
263263 let is_x_log = use_state ( || true ) ;
@@ -296,17 +296,17 @@ pub fn home() -> Html {
296296 } ;
297297
298298 let clear_plot_callback = {
299- let selected_indexes = selected_indexes . clone ( ) ;
299+ let selected_ids = selected_ids . clone ( ) ;
300300 Callback :: from ( move |_: MouseEvent | {
301- selected_indexes . clear ( ) ;
301+ selected_ids . clear ( ) ;
302302 } )
303303 } ;
304304
305305 let callback_sum = {
306- let selected_indexes = selected_indexes . clone ( ) ;
307- Callback :: from ( move |index : usize | {
308- if !selected_indexes . insert ( index ) {
309- selected_indexes . remove ( & index ) ;
306+ let selected_ids = selected_ids . clone ( ) ;
307+ Callback :: from ( move |id : i32 | {
308+ if !selected_ids . insert ( id ) {
309+ selected_ids . remove ( & id ) ;
310310 }
311311 } )
312312 } ;
@@ -419,16 +419,15 @@ pub fn home() -> Html {
419419
420420 element_match && nucleons_match && reaction_match && mt_match && library_match
421421 } )
422- . map ( |( index, entry) | TableLine {
423- original_index : index,
422+ . map ( |( id, entry) | TableLine {
424423 id : entry. id ,
425424 element : entry. element . clone ( ) ,
426425 nucleons : entry. nucleons . clone ( ) ,
427426 reaction : entry. reaction . clone ( ) ,
428427 mt : entry. mt . clone ( ) ,
429428 library : entry. library . clone ( ) ,
430429 temperature : entry. temperature . clone ( ) ,
431- checked : selected_indexes . current ( ) . contains ( & index ) ,
430+ checked : selected_ids . current ( ) . contains ( & ( id as i32 ) ) ,
432431 sum_callback : callback_sum. clone ( ) ,
433432 } )
434433 . collect ( )
@@ -441,13 +440,13 @@ pub fn home() -> Html {
441440 current_page. min ( ( filtered_data. len ( ) - 1 ) / limit)
442441 } ;
443442
444- let start_index = current_page * limit;
445- let end_index = ( start_index + limit) . min ( filtered_data. len ( ) ) ;
443+ let start = current_page * limit;
444+ let end = ( start + limit) . min ( filtered_data. len ( ) ) ;
446445
447446 let paginated_data = if filtered_data. is_empty ( ) {
448447 Vec :: new ( )
449448 } else {
450- filtered_data[ start_index..end_index ] . to_vec ( )
449+ filtered_data[ start..end ] . to_vec ( )
451450 } ;
452451
453452 // let total = filtered_data.len().max(1);
@@ -514,11 +513,11 @@ pub fn home() -> Html {
514513
515514
516515 let onclick_download = {
517- let selected_indexes = selected_indexes . clone ( ) ;
516+ let selected_ids = selected_ids . clone ( ) ;
518517 Callback :: from ( move |_| {
519- let selected_indexes = selected_indexes . current ( ) . clone ( ) ;
518+ let selected_ids = selected_ids . current ( ) . clone ( ) ;
520519 spawn_local ( async move {
521- download_xs_cache ( selected_indexes ) . await ;
520+ download_xs_cache ( selected_ids ) . await ;
522521 } ) ;
523522 } )
524523 } ;
@@ -669,7 +668,7 @@ pub fn home() -> Html {
669668 // />
670669 <div class="flex-grow-1 p-2 input-group me-2" >
671670 <PlotComponent
672- selected_indexes ={ ( * selected_indexes . current( ) ) . clone( ) }
671+ selected_ids ={ ( * selected_ids . current( ) ) . clone( ) }
673672 is_y_log={ is_y_log. clone( ) }
674673 is_x_log={ is_x_log. clone( ) }
675674 clear_plot_callback={ clear_plot_callback. clone( ) }
@@ -688,7 +687,6 @@ pub fn home() -> Html {
688687
689688#[ derive( Clone , Serialize , Debug , Default ) ]
690689struct TableLine {
691- pub original_index : usize ,
692690 pub checked : bool ,
693691 pub id : i32 ,
694692 pub element : String ,
@@ -698,7 +696,7 @@ struct TableLine {
698696 pub library : String ,
699697 pub temperature : String ,
700698 #[ serde( skip_serializing) ]
701- pub sum_callback : Callback < usize > ,
699+ pub sum_callback : Callback < i32 > ,
702700}
703701
704702impl PartialEq < Self > for TableLine {
@@ -718,9 +716,9 @@ impl TableData for TableLine {
718716 match field_name {
719717 "select" => Ok ( html ! ( <input type ="checkbox" style="width: 30px; height: 30px;" checked={ self . checked}
720718 onclick={
721- let value = self . original_index ;
719+ let id = self . id ;
722720 let handle_sum = self . sum_callback. clone( ) ;
723- move |_| { handle_sum. emit( value ) ; }
721+ move |_| { handle_sum. emit( id ) ; }
724722 } /> )
725723 ) ,
726724 "id" => Ok ( html ! { self . id } ) ,
0 commit comments