Advertisement
Guest User

Untitled

a guest
Jun 19th, 2019
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.18 KB | None | 0 0
  1. import React, { useState, useEffect } from "react";
  2. import {
  3. CssBaseline,
  4. Container,
  5. Typography,
  6. TextField
  7. } from "@material-ui/core";
  8. import { makeStyles } from "@material-ui/core/styles";
  9.  
  10. const useStyles = makeStyles(theme => ({
  11. paper: {
  12. marginTop: theme.spacing(8), // = 4 * 2
  13. display: "flex",
  14. flexDirection: "column",
  15. alignItems: "center"
  16. }
  17. }));
  18.  
  19. function App() {
  20. const classes = useStyles();
  21. const [currentTarget, setCurrentTarget] = useState(null);
  22. const [hourlyRate, setHourlyRate] = useState(10);
  23. const [workHour, setWorkHour] = useState(40);
  24. const [weeklyRate, setWeeklyRate] = useState(400);
  25. const [monthlyRate, setMonthlyRate] = useState(1600);
  26. const [yearlyRate, setYearlyRate] = useState(19200);
  27.  
  28. useEffect(() => {
  29. tryConvert(currentTarget);
  30. }, [
  31. hourlyRate,
  32. workHour,
  33. weeklyRate,
  34. monthlyRate,
  35. yearlyRate
  36. ]);
  37.  
  38. const tryConvert = name => {
  39. if (name === "work-hours") {
  40. setWorkHour(workHour);
  41. setWeeklyRate(workHour * hourlyRate);
  42. setMonthlyRate(workHour * hourlyRate * 4);
  43. setYearlyRate(workHour * hourlyRate * 4 * 12);
  44. } else if (name === "hourly-rate") {
  45. setHourlyRate(hourlyRate);
  46. setWeeklyRate(hourlyRate * workHour);
  47. setMonthlyRate(hourlyRate * workHour * 4);
  48. setYearlyRate(hourlyRate * workHour * 4 * 12);
  49. } else if (name === "weekly-rate") {
  50. setWeeklyRate(weeklyRate);
  51. setHourlyRate(weeklyRate / workHour);
  52. setMonthlyRate(weeklyRate * 4);
  53. setYearlyRate(weeklyRate * 4 * 12);
  54. } else if (name === "monthly-rate") {
  55. setMonthlyRate(monthlyRate);
  56. setWeeklyRate(monthlyRate / 4);
  57. setHourlyRate(monthlyRate / workHour / 4);
  58. setYearlyRate(monthlyRate * 12);
  59. } else if (name === "yearly-rate") {
  60. setYearlyRate(yearlyRate);
  61. setMonthlyRate(yearlyRate / 12);
  62. setWeeklyRate(yearlyRate / 12 / 4);
  63. setHourlyRate(yearlyRate / 12 / 4 / workHour);
  64. }
  65. };
  66.  
  67. return (
  68. <Container component="main" maxWidth="xs">
  69. <CssBaseline />
  70. <div className={classes.paper}>
  71. <Typography component="h1" variant="h5">
  72. Rate Kalkulator
  73. </Typography>
  74. <TextField
  75. variant="outlined"
  76. margin="normal"
  77. id="hourly-rate"
  78. label="Hourly Rate"
  79. name="hourly-rate"
  80. autoFocus
  81. inputProps={{ "data-testid": "hourly-rate" }}
  82. value={hourlyRate ? hourlyRate : 0}
  83. onChange={event => {
  84. setHourlyRate(event.target.value);
  85. setCurrentTarget("hourly-rate");
  86. }}
  87. />
  88. <TextField
  89. variant="outlined"
  90. margin="normal"
  91. id="work-hours"
  92. label="Work Hours"
  93. name="work-hours"
  94. inputProps={{ "data-testid": "work-hours" }}
  95. value={workHour}
  96. onChange={event => {
  97. setWorkHour(event.target.value);
  98. setCurrentTarget("work-hours");
  99. }}
  100. />
  101. <TextField
  102. variant="outlined"
  103. margin="normal"
  104. id="weekly-rate"
  105. label="Weekly Rate"
  106. name="weekly-rate"
  107. inputProps={{ "data-testid": "weekly-rate" }}
  108. value={weeklyRate ? weeklyRate : 0}
  109. onChange={event => {
  110. setWeeklyRate(event.target.value);
  111. setCurrentTarget("weekly-rate");
  112. }}
  113. />
  114. <TextField
  115. variant="outlined"
  116. margin="normal"
  117. id="monthly-rate"
  118. label="Monthly Rate"
  119. name="monthly-rate"
  120. inputProps={{ "data-testid": "monthly-rate" }}
  121. value={monthlyRate ? monthlyRate : 0}
  122. onChange={event => {
  123. setMonthlyRate(event.target.value);
  124. setCurrentTarget("monthly-rate");
  125. }}
  126. />
  127. <TextField
  128. variant="outlined"
  129. margin="normal"
  130. id="yearly-rate"
  131. label="Yearly Rate"
  132. name="yearly-rate"
  133. inputProps={{ "data-testid": "yearly-rate" }}
  134. value={yearlyRate ? yearlyRate : 0}
  135. onChange={event => {
  136. setYearlyRate(event.target.value);
  137. setCurrentTarget("yearly-rate");
  138. }}
  139. />
  140. </div>
  141. </Container>
  142. );
  143. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement