Advertisement
Guest User

frontend

a guest
Jul 17th, 2019
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.61 KB | None | 0 0
  1. import React, { useState, useEffect } from "react";
  2. import axios from "axios";
  3. import serverService from "./services/server";
  4. import Persons from "./components/Persons";
  5. import PersonForm from "./components/PersonForm";
  6. import Filter from "./components/Filter";
  7. import Notification from "./components/Notification";
  8. import { log } from "util";
  9.  
  10. const App = () => {
  11. const [persons, setPersons] = useState([]);
  12. const [filter, setFilter] = useState("");
  13. const [newName, setNewName] = useState("lisää nimi");
  14. const [newNumber, setNewNumber] = useState("lisää numero");
  15. const [errorMessage, setErrorMessage] = useState(null);
  16.  
  17. useEffect(() => {
  18. serverService.getAll().then(initialPersons => {
  19. setPersons(initialPersons);
  20. });
  21. }, [persons]);
  22.  
  23. const addInfo = e => {
  24. e.preventDefault();
  25. const listObject = {
  26. name: newName,
  27. number: newNumber,
  28. id: persons.length + Math.floor(Math.random() * 100)
  29. };
  30. setPersons(persons.concat(listObject));
  31. setFilter("");
  32. setNewName("");
  33. setNewNumber("");
  34. if (persons.find(duplicate => duplicate.name === newName)) {
  35. if (
  36. window.confirm(
  37. `Henkilö ${newName} on jo listalla. Korvataanko vanha numero uudella?`
  38. )
  39. ) {
  40. axios.put(
  41. "/persons/" + persons.find(test => test.name === newName).id,
  42. {
  43. name: `${newName}`,
  44. number: `${newNumber}`
  45. }
  46. );
  47. console.log();
  48.  
  49. setErrorMessage(`Henkilön ${newName} numero on päivitetty`);
  50. setTimeout(() => {
  51. setErrorMessage(null);
  52. }, 4000);
  53. }
  54. } else {
  55. serverService
  56. .create(listObject)
  57. .then(result => {
  58. console.log("ok");
  59. console.log(result);
  60. setPersons(persons.concat(result));
  61. setErrorMessage(`Henkilö ${newName} lisätty listaan`);
  62. setTimeout(() => {
  63. setErrorMessage(null);
  64. }, 4000);
  65. })
  66. .catch(error => {
  67. console.log("error");
  68. setErrorMessage(`Virhe`);
  69. });
  70. }
  71.  
  72. // else {
  73. // serverService.create(listObject);
  74. // setErrorMessage(`Henkilö ${newName} lisätty listaan`);
  75. // setTimeout(() => {
  76. // setErrorMessage(null);
  77. // }, 4000);
  78. // }
  79. };
  80. const unique = Array.from(new Set(persons.map(uniqArr => uniqArr.name))).map(
  81. name => {
  82. return persons.find(uniqArr => uniqArr.name === name);
  83. }
  84. );
  85. const uniqueNames = unique.map(person => {
  86. return person;
  87. });
  88.  
  89. const handleFilter = e => {
  90. setFilter(e.target.value);
  91. };
  92.  
  93. const handleNameChange = e => {
  94. setNewName(e.target.value);
  95. };
  96.  
  97. const handleNumberChange = e => {
  98. setNewNumber(e.target.value);
  99. };
  100.  
  101. return (
  102. <div>
  103. <h2>Puhelinluettelo</h2>
  104.  
  105. <Notification message={errorMessage} />
  106.  
  107. <Filter
  108. text="hae nimellä"
  109. fieldFilter="haku"
  110. contentFilter={filter}
  111. handleFilter={handleFilter}
  112. />
  113.  
  114. <h2>Lisää uusi</h2>
  115.  
  116. <PersonForm
  117. fieldName="nimi"
  118. contentName={newName}
  119. handleName={handleNameChange}
  120. fieldNumber="numero"
  121. contentNumber={newNumber}
  122. handleNumber={handleNumberChange}
  123. text="lisää"
  124. mission={addInfo}
  125. />
  126.  
  127. <h2>Numerot</h2>
  128. <Persons
  129. unique={unique}
  130. uniqueNames={uniqueNames}
  131. filter={filter}
  132. persons={persons}
  133. setErrorMessage={setErrorMessage}
  134. />
  135. </div>
  136. );
  137. };
  138. export default App;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement