Skip to content

Commit 09fc964

Browse files
committed
Add pagination support
1 parent 347f8ad commit 09fc964

File tree

1 file changed

+40
-3
lines changed

1 file changed

+40
-3
lines changed

client/src/HomePage/ServiceTable.js

+40-3
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,26 @@ import React, { Component } from "react";
22
import { Table } from "semantic-ui-react";
33

44
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) {
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

Comments
 (0)