-
Notifications
You must be signed in to change notification settings - Fork 13
Expand file tree
/
Copy pathServiceTable.js
More file actions
91 lines (81 loc) · 2.33 KB
/
ServiceTable.js
File metadata and controls
91 lines (81 loc) · 2.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
import React, { Component } from "react";
import { Table } from "semantic-ui-react";
class ServiceTable extends Component {
constructor() {
super();
this.setPageNumber = this.setPageNumber.bind(this);
this.state = {
currentPage: 1
}
}
setPageNumber(event) {
this.setState({
currentPage: Number(event.target.id)
});
}
renderTableData(servicesPerPage) {
if (this.props.service) {
const indexOfLastService = currentPage * servicesPerPage;
const indexOfFirstService = indexOfLastService - servicesPerPage;
const paginatedData = this.props.service.slice(indexOfFirstService, indexOfLastService);
return paginatedData.map((service, index) => {
const { id, serviceid, name, type, location } = service; //destructuring
return (
<Table.Row key={id}>
<Table.Cell>{id}</Table.Cell>
<Table.Cell>{serviceid}</Table.Cell>
<Table.Cell>{name}</Table.Cell>
<Table.Cell>{type}</Table.Cell>
<Table.Cell>{location}</Table.Cell>
<Table.Cell onClick={() => this.onDelete(name)}>
<i class="trash alternate icon" />
</Table.Cell>
</Table.Row>
);
});
}
}
renderTableHeader() {
const header = Object.keys(this.props.service[0]);
return header.map((key, index) => {
return (
<Table.HeaderCell key={index}>{key.toUpperCase()}</Table.HeaderCell>
);
});
}
onDelete(name) {
this.props.handleDeleteService(name);
}
render() {
let servicesPerPage = 10;
const pageNumbers = [];
for (let i = 1; i <= Math.ceil(this.props.service.length / servicesPerPage); i++) {
pageNumbers.push(i);
}
const renderPageNumbers = pageNumbers.map(number => {
return (
<li
key={number}
id={number}
onClick={this.setPageNumber}
>
{number}
</li>
);
});
return (
<div>
<ul>{renderPageNumbers}</ul>
{this.props.service && (
<Table id="users">
<Table.Header>
<Table.Row>{this.renderTableHeader()}</Table.Row>
</Table.Header>
<Table.Body>{this.renderTableData(servicesPerPage)}</Table.Body>
</Table>
)}
</div>
);
}
}
export default ServiceTable;