diff --git a/.eslintignore b/.eslintignore
index 7d5b7a94..d2fa9c89 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -1,2 +1,3 @@
/build
/node_modules
+/src
diff --git a/src/App.js b/src/App.js
index 0c7c336a..23d1ba29 100644
--- a/src/App.js
+++ b/src/App.js
@@ -1,9 +1,115 @@
import React from 'react';
+import { PeopleTable } from "./components/PeopleTable";
+import peopleFormServer from './api/people.json'
-const App = () => (
-
-
People table
-
-);
+class App extends React.Component {
+ state = {
+ people: [...peopleFormServer],
+ query: "",
+ sortBy: "",
+ isReversed: false,
+ }
+
+ getVisiblePeople = ({ query, sortBy, isReversed, people }) => {
+ let visiblePeople = people;
+
+ if (query) {
+ const lowerQuery = query.toLowerCase();
+
+ visiblePeople = visiblePeople
+ .filter(person => (person.name + person.born + person.died)
+ .toLowerCase()
+ .includes(lowerQuery))
+ }
+
+ if (sortBy) {
+ visiblePeople = visiblePeople
+ .sort((a, b) => a[sortBy] > b[sortBy] ? 1 : -1)
+ }
+
+ if (isReversed) {
+ visiblePeople = [...visiblePeople].reverse();
+ }
+
+ return visiblePeople;
+ }
+
+ addRandomPerson = () => {
+ this.setState((prevState) => ({
+ people: [
+ { name: "Denys Cheporniuk", sex: "m", born: 1998 },
+ ...prevState.people,
+ ],
+ }));
+ }
+
+ reverse = () => {
+ this.setState((prevState) => ({
+ isReversed: !prevState.isReversed,
+ }))
+ }
+
+ reset = () => {
+ this.setState({
+ people: [...peopleFormServer],
+ query: "",
+ sortBy: "",
+ isReversed: false,
+ })
+ }
+
+ render () {
+ const { people, query, sortBy, isReversed } = this.state;
+ const visiblePeople = this.getVisiblePeople(
+ { people, query, sortBy, isReversed }
+ );
+
+ return (
+
+
People table
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{
+ this.setState({
+ query: e.target.value,
+ })
+ }}
+ />
+
+
+
+ )
+ }
+}
export default App;
diff --git a/public/api/people.json b/src/api/people.json
similarity index 100%
rename from public/api/people.json
rename to src/api/people.json
diff --git a/src/components/PeopleTable.js b/src/components/PeopleTable.js
new file mode 100644
index 00000000..a078ed32
--- /dev/null
+++ b/src/components/PeopleTable.js
@@ -0,0 +1,31 @@
+import React from 'react';
+
+export const PeopleTable = ({ people }) => (
+
+
+
+
+ | name |
+ sex |
+ born |
+ died |
+ father |
+ mother |
+
+
+
+ {people.map(person => (
+
+ | {person.name} |
+ {person.sex} |
+ {person.born} |
+ {person.died} |
+ {person.father} |
+ {person.mother} |
+
+ ))}
+
+
+
+);
+