Skip to content

Commit 0437b4a

Browse files
committed
Initial set-up of multi-page pagination
1 parent c2ba6a7 commit 0437b4a

File tree

1 file changed

+28
-39
lines changed

1 file changed

+28
-39
lines changed

src/sauce/home.rs

Lines changed: 28 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use serde::Serialize;
44
use web_sys::{console, HtmlInputElement, InputEvent};
55
use yew_hooks::use_set;
66
use yew_hooks::use_async;
7-
// use yew_custom_components::pagination::Pagination;
7+
use yew_custom_components::pagination::Pagination;
88
use yew_custom_components::table::{Options, Table};
99
use yew_custom_components::table::types::{ColumnBuilder, TableData};
1010
use crate::types::mock_data::Entry;
@@ -254,7 +254,6 @@ pub fn home() -> Html {
254254
let library_search = (*library_search_term).as_ref().cloned();
255255

256256
let page = use_state(|| 0usize);
257-
let current_page = (*page).clone();
258257

259258
let selected_ids = use_set(HashSet::<i32>::new());
260259
let sum = selected_ids.current().len();
@@ -434,22 +433,12 @@ pub fn home() -> Html {
434433
};
435434

436435
let limit = 10;
437-
let current_page = if filtered_data.is_empty() {
438-
0
439-
} else {
440-
current_page.min((filtered_data.len() - 1) / limit)
441-
};
442-
443-
let start = current_page * limit;
444-
let end = (start + limit).min(filtered_data.len());
445436

446-
let paginated_data = if filtered_data.is_empty() {
447-
Vec::new()
448-
} else {
449-
filtered_data[start..end].to_vec()
450-
};
437+
let page_rows = filtered_data.clone();
451438

452-
// let total = filtered_data.len().max(1);
439+
let total_rows = filtered_data.len();
440+
let current_page = (*page).min(total_rows.saturating_sub(1) / limit);
441+
453442

454443
let oninput_element_search = {
455444
let element_search_term = element_search_term.clone();
@@ -522,21 +511,21 @@ pub fn home() -> Html {
522511
})
523512
};
524513

525-
// let pagination_options = yew_custom_components::pagination::Options::default()
526-
// .show_prev_next(true)
527-
// .show_first_last(true)
528-
// .list_classes(vec!(String::from("pagination")))
529-
// .item_classes(vec!(String::from("page-item")))
530-
// .link_classes(vec!(String::from("page-link")))
531-
// .active_item_classes(vec!(String::from("active")))
532-
// .disabled_item_classes(vec!(String::from("disabled")));
533-
534-
// let handle_page = {
535-
// let page = page.clone();
536-
// Callback::from(move |new_page: usize| {
537-
// page.set(new_page);
538-
// })
539-
// };
514+
let pagination_options = yew_custom_components::pagination::Options::default()
515+
.show_prev_next(true)
516+
.show_first_last(true)
517+
.list_classes(vec!(String::from("pagination")))
518+
.item_classes(vec!(String::from("page-item")))
519+
.link_classes(vec!(String::from("page-link")))
520+
.active_item_classes(vec!(String::from("active")))
521+
.disabled_item_classes(vec!(String::from("disabled")));
522+
523+
let handle_page = {
524+
let page = page.clone();
525+
Callback::from(move |new_page: usize| {
526+
page.set(new_page);
527+
})
528+
};
540529

541530
html!(
542531
<>
@@ -652,20 +641,20 @@ pub fn home() -> Html {
652641
// search={element_search.clone()}
653642
classes={classes!("table", "table-hover")}
654643
columns={columns.clone()}
655-
data={paginated_data}
644+
data={page_rows.clone()}
656645
orderable={true}
657646
/>
658647
<h5>{sum}{" / 41337"}</h5>
659648
</div>
660649
<div class="flex-grow-1 p-2 input-group">
661650

662-
// <Pagination
663-
// total={total}
664-
// limit={limit}
665-
// max_pages={6}
666-
// options={pagination_options}
667-
// on_page={Some(handle_page)}
668-
// />
651+
<Pagination
652+
total={total_rows}
653+
limit={limit}
654+
max_pages={1}
655+
options={pagination_options.clone()}
656+
on_page={Some(handle_page)}
657+
/>
669658
<div class="flex-grow-1 p-2 input-group me-2">
670659
<PlotComponent
671660
selected_ids={(*selected_ids.current()).clone()}

0 commit comments

Comments
 (0)