@@ -2,9 +2,26 @@ import React, { Component } from "react";
22import { Table } from "semantic-ui-react" ;
33
44class ServiceTable extends Component {
5- renderTableData ( ) {
5+ constructor ( ) {
6+ super ( ) ;
7+ this . setPageNumber = this . setPageNumber . bind ( this ) ;
8+ this . state = {
9+ currentPage : 1
10+ }
11+ }
12+
13+ setPageNumber ( event ) {
14+ this . setState ( {
15+ currentPage : Number ( event . target . id )
16+ } ) ;
17+ }
18+
19+ renderTableData ( servicesPerPage ) {
620 if ( this . props . service ) {
7- return this . props . service . map ( ( service , index ) => {
21+ const indexOfLastService = currentPage * servicesPerPage ;
22+ const indexOfFirstService = indexOfLastService - servicesPerPage ;
23+ const paginatedData = this . props . service . slice ( indexOfFirstService , indexOfLastService ) ;
24+ return paginatedData . map ( ( service , index ) => {
825 const { id, serviceid, name, type, location } = service ; //destructuring
926 return (
1027 < Table . Row key = { id } >
@@ -36,14 +53,34 @@ class ServiceTable extends Component {
3653 }
3754
3855 render ( ) {
56+ let servicesPerPage = 10 ;
57+ const pageNumbers = [ ] ;
58+
59+ for ( let i = 1 ; i <= Math . ceil ( this . props . service . length / servicesPerPage ) ; i ++ ) {
60+ pageNumbers . push ( i ) ;
61+ }
62+
63+ const renderPageNumbers = pageNumbers . map ( number => {
64+ return (
65+ < li
66+ key = { number }
67+ id = { number }
68+ onClick = { this . setPageNumber }
69+ >
70+ { number }
71+ </ li >
72+ ) ;
73+ } ) ;
74+
3975 return (
4076 < div >
77+ < ul > { renderPageNumbers } </ ul >
4178 { this . props . service && (
4279 < Table id = "users" >
4380 < Table . Header >
4481 < Table . Row > { this . renderTableHeader ( ) } </ Table . Row >
4582 </ Table . Header >
46- < Table . Body > { this . renderTableData ( ) } </ Table . Body >
83+ < Table . Body > { this . renderTableData ( servicesPerPage ) } </ Table . Body >
4784 </ Table >
4885 ) }
4986 </ div >
0 commit comments