@@ -2,9 +2,26 @@ import React, { Component } from "react";
2
2
import { Table } from "semantic-ui-react" ;
3
3
4
4
class 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 ) {
6
20
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 ) => {
8
25
const { id, serviceid, name, type, location } = service ; //destructuring
9
26
return (
10
27
< Table . Row key = { id } >
@@ -36,14 +53,34 @@ class ServiceTable extends Component {
36
53
}
37
54
38
55
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
+
39
75
return (
40
76
< div >
77
+ < ul > { renderPageNumbers } </ ul >
41
78
{ this . props . service && (
42
79
< Table id = "users" >
43
80
< Table . Header >
44
81
< Table . Row > { this . renderTableHeader ( ) } </ Table . Row >
45
82
</ Table . Header >
46
- < Table . Body > { this . renderTableData ( ) } </ Table . Body >
83
+ < Table . Body > { this . renderTableData ( servicesPerPage ) } </ Table . Body >
47
84
</ Table >
48
85
) }
49
86
</ div >
0 commit comments