@@ -4,7 +4,7 @@ use serde::Serialize;
44use web_sys:: { console, HtmlInputElement , InputEvent } ;
55use yew_hooks:: use_set;
66use yew_hooks:: use_async;
7- // use yew_custom_components::pagination::Pagination;
7+ use yew_custom_components:: pagination:: Pagination ;
88use yew_custom_components:: table:: { Options , Table } ;
99use yew_custom_components:: table:: types:: { ColumnBuilder , TableData } ;
1010use 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