Skip to content

Commit c2ba6a7

Browse files
authored
Merge pull request #16 from Allentro/indicies_to_ids
Converting indicies to ids
2 parents 7028c88 + 63c2e13 commit c2ba6a7

File tree

1 file changed

+28
-30
lines changed

1 file changed

+28
-30
lines changed

src/sauce/home.rs

Lines changed: 28 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -41,25 +41,25 @@ pub struct XsCache {
4141

4242
#[derive(Properties, PartialEq)]
4343
pub 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)]
5151
pub 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)]
690689
struct 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

704702
impl 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

Comments
 (0)