Showing
14 changed files
with
22 additions
and
85 deletions
This diff is collapsed. Click to expand it.
... | @@ -24,9 +24,7 @@ | ... | @@ -24,9 +24,7 @@ |
24 | "web-vitals": "^0.2.4" | 24 | "web-vitals": "^0.2.4" |
25 | }, | 25 | }, |
26 | "scripts": { | 26 | "scripts": { |
27 | - "start": "npm-run-all --parallel start:**", | 27 | + "start": "react-scripts start", |
28 | - "start:client": "react-scripts start", | ||
29 | - "start:server": "node ./server/app.js", | ||
30 | "build": "react-scripts build", | 28 | "build": "react-scripts build", |
31 | "test": "react-scripts test", | 29 | "test": "react-scripts test", |
32 | "eject": "react-scripts eject" | 30 | "eject": "react-scripts eject" | ... | ... |
straight-up/server/app.js
deleted
100644 → 0
1 | -const express = require('express'); | ||
2 | -const bodyParser = require('body-parser') | ||
3 | -const app = express(); | ||
4 | -const api = require('./routes/index'); | ||
5 | - | ||
6 | -app.use(bodyParser.json()); | ||
7 | -app.use('/api', api); | ||
8 | - | ||
9 | -const port = 3001; | ||
10 | -app.listen(port, () => console.log(`Listening on port ${port}`)); | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
straight-up/server/routes/index.js
deleted
100644 → 0
... | @@ -52,13 +52,13 @@ const checkStraight = (resData, position) => { //resData: API로 받은 JSON 객 | ... | @@ -52,13 +52,13 @@ const checkStraight = (resData, position) => { //resData: API로 받은 JSON 객 |
52 | var d_right = distance(x_position[ear + 1], y_position[ear + 1], x_position[shoulder + 1], y_position[shoulder + 1]); | 52 | var d_right = distance(x_position[ear + 1], y_position[ear + 1], x_position[shoulder + 1], y_position[shoulder + 1]); |
53 | var gap = difference(d_left, d_right); | 53 | var gap = difference(d_left, d_right); |
54 | 54 | ||
55 | - if (gap >= 20) { //기운 각도가 20도를 넘을 경우 | 55 | + if (gap >= 15) { //기운 각도가 15도를 넘을 경우 |
56 | if (d_left > d_right) { //오른쪽으로 기울인 경우 | 56 | if (d_left > d_right) { //오른쪽으로 기울인 경우 |
57 | return 'leaning right by ' + gap + 'percent.'; | 57 | return 'leaning right by ' + gap + 'percent.'; |
58 | } else if (d_left < d_right) { //왼쪽으로 기울인 경우 | 58 | } else if (d_left < d_right) { //왼쪽으로 기울인 경우 |
59 | return 'leaning left by ' + gap + 'percent.'; | 59 | return 'leaning left by ' + gap + 'percent.'; |
60 | } | 60 | } |
61 | - } else { //기운 각도가 20도 미만인 경우 | 61 | + } else { //기운 각도가 15도 미만인 경우 |
62 | return 'okay'; | 62 | return 'okay'; |
63 | } | 63 | } |
64 | 64 | ... | ... |
straight-up/src/App.css
deleted
100644 → 0
1 | -.App { | ||
2 | - text-align: center; | ||
3 | -} | ||
4 | - | ||
5 | -.App-logo { | ||
6 | - height: 40vmin; | ||
7 | - pointer-events: none; | ||
8 | -} | ||
9 | - | ||
10 | -@media (prefers-reduced-motion: no-preference) { | ||
11 | - .App-logo { | ||
12 | - animation: App-logo-spin infinite 20s linear; | ||
13 | - } | ||
14 | -} | ||
15 | - | ||
16 | -.App-header { | ||
17 | - background-color: #282c34; | ||
18 | - min-height: 100vh; | ||
19 | - display: flex; | ||
20 | - flex-direction: column; | ||
21 | - align-items: center; | ||
22 | - justify-content: center; | ||
23 | - font-size: calc(10px + 2vmin); | ||
24 | - color: white; | ||
25 | -} | ||
26 | - | ||
27 | -.App-link { | ||
28 | - color: #61dafb; | ||
29 | -} | ||
30 | - | ||
31 | -@keyframes App-logo-spin { | ||
32 | - from { | ||
33 | - transform: rotate(0deg); | ||
34 | - } | ||
35 | - to { | ||
36 | - transform: rotate(360deg); | ||
37 | - } | ||
38 | -} |
1 | import React from 'react' | 1 | import React from 'react' |
2 | import './style/Landing.css'; | 2 | import './style/Landing.css'; |
3 | -import { Link } from 'react-router-dom'; // for test | ||
4 | import Button from './components/Button'; | 3 | import Button from './components/Button'; |
5 | import Header from './components/Header'; | 4 | import Header from './components/Header'; |
6 | export default function Landing() { | 5 | export default function Landing() { |
... | @@ -9,15 +8,13 @@ export default function Landing() { | ... | @@ -9,15 +8,13 @@ export default function Landing() { |
9 | <div className="Landingbg"> | 8 | <div className="Landingbg"> |
10 | <Header /> | 9 | <Header /> |
11 | <div className="mainTextContainer"> | 10 | <div className="mainTextContainer"> |
12 | - | ||
13 | <h1 className="mainText">Welcome to Straight Up</h1> | 11 | <h1 className="mainText">Welcome to Straight Up</h1> |
14 | <span className="mainText">We support posture correction for you.</span> | 12 | <span className="mainText">We support posture correction for you.</span> |
15 | - <Button btnText="Get Started!"/> | 13 | + <Button btnText="Get Started!" /> |
16 | - {/* for test */} | ||
17 | <div className="mainBtnContainer"> | 14 | <div className="mainBtnContainer"> |
18 | - <Link to="/result"> | 15 | + <a target="blank" href="http://khuhub.khu.ac.kr/2019102240/Straight-Up"> |
19 | - <button className="startBtn">To Result</button> | 16 | + <button className="startBtn">Contact Us</button> |
20 | - </Link> | 17 | + </a> |
21 | </div> | 18 | </div> |
22 | </div> | 19 | </div> |
23 | </div> | 20 | </div> | ... | ... |
... | @@ -9,8 +9,8 @@ import './style/Main.css'; | ... | @@ -9,8 +9,8 @@ import './style/Main.css'; |
9 | require('dotenv').config(); | 9 | require('dotenv').config(); |
10 | 10 | ||
11 | const axios = require('axios'); | 11 | const axios = require('axios'); |
12 | -const API_KEY = "1f14e860f7f53f39a4dfe0a2a919a8c7"; | 12 | +const API_KEY = process.env.REACT_APP_APIKEY; |
13 | -//process.env.api_key; | 13 | +console.log(API_KEY); |
14 | let imageFormData = new FormData(); | 14 | let imageFormData = new FormData(); |
15 | 15 | ||
16 | export default function Main() { | 16 | export default function Main() { |
... | @@ -86,10 +86,16 @@ export default function Main() { | ... | @@ -86,10 +86,16 @@ export default function Main() { |
86 | <h3>측면 사진 - 오른쪽</h3> | 86 | <h3>측면 사진 - 오른쪽</h3> |
87 | <Checkbox checked={selectedPosition === "right"} onChange={(isChecked) => { isChecked ? setPosition('right') : setPosition(undefined) }} /> | 87 | <Checkbox checked={selectedPosition === "right"} onChange={(isChecked) => { isChecked ? setPosition('right') : setPosition(undefined) }} /> |
88 | </div> | 88 | </div> |
89 | + <div className="Caution"> | ||
90 | + <p>-- 이미지 업로드 시 유의사항 --</p> | ||
91 | + <p>1. 업로드 되는 이미지는 JPEG, PNG 포맷만 지원합니다.</p> | ||
92 | + <p>2. 업로드할 수 있는 이미지의 최대 용량은 2MB입니다.</p> | ||
93 | + <p>3. 이미지의 권장 비율은 가로:세로 기준 16:9 ~ 9:16 입니다.</p> | ||
94 | + <p>4. 이미지의 가로와 세로 길이는 320px~2048px 범위 내여야 합니다.</p> | ||
95 | + </div> | ||
89 | <Link to="/result"> | 96 | <Link to="/result"> |
90 | <button className="startBtn" type="button" onClick={analysisImage}>Submit</button> | 97 | <button className="startBtn" type="button" onClick={analysisImage}>Submit</button> |
91 | </Link> | 98 | </Link> |
92 | - | ||
93 | </div> | 99 | </div> |
94 | </div> | 100 | </div> |
95 | ) | 101 | ) | ... | ... |
... | @@ -23,15 +23,12 @@ const ResultContent = (props) => { | ... | @@ -23,15 +23,12 @@ const ResultContent = (props) => { |
23 | } | 23 | } |
24 | else if (headLetters === "leani") { | 24 | else if (headLetters === "leani") { |
25 | return <ResultForLn direction={direction} /> | 25 | return <ResultForLn direction={direction} /> |
26 | - | ||
27 | } | 26 | } |
28 | else if (resultStr === "bent-neck") { | 27 | else if (resultStr === "bent-neck") { |
29 | return <ResultForBn />; | 28 | return <ResultForBn />; |
30 | - | ||
31 | } | 29 | } |
32 | else if (resultStr === "bent-back") { | 30 | else if (resultStr === "bent-back") { |
33 | return <ResultForBb />; | 31 | return <ResultForBb />; |
34 | - | ||
35 | } | 32 | } |
36 | else { | 33 | else { |
37 | return <ResultForErr />; | 34 | return <ResultForErr />; | ... | ... |
... | @@ -13,7 +13,6 @@ const ResultForErr = () => { | ... | @@ -13,7 +13,6 @@ const ResultForErr = () => { |
13 | <p>주의사항에 맞게 사진을 업로드했는지 확인해주세요.</p> | 13 | <p>주의사항에 맞게 사진을 업로드했는지 확인해주세요.</p> |
14 | <RetryBtn btnText="Try Again" /> | 14 | <RetryBtn btnText="Try Again" /> |
15 | </div> | 15 | </div> |
16 | - | ||
17 | </div> | 16 | </div> |
18 | ) | 17 | ) |
19 | } | 18 | } | ... | ... |
straight-up/src/setProxy.js
deleted
100644 → 0
... | @@ -28,16 +28,16 @@ body { | ... | @@ -28,16 +28,16 @@ body { |
28 | } | 28 | } |
29 | 29 | ||
30 | .ImagePreview{ | 30 | .ImagePreview{ |
31 | - width: 400px; | 31 | + width: 300px; |
32 | height: 400px; | 32 | height: 400px; |
33 | background-color: #efefef; | 33 | background-color: #efefef; |
34 | + border-radius: 15px; | ||
34 | } | 35 | } |
35 | 36 | ||
36 | .PositionSelector { | 37 | .PositionSelector { |
37 | display: flex; | 38 | display: flex; |
38 | justify-content: center; | 39 | justify-content: center; |
39 | align-items: center; | 40 | align-items: center; |
40 | - padding: 1rem; | ||
41 | } | 41 | } |
42 | 42 | ||
43 | .Checkbox { | 43 | .Checkbox { |
... | @@ -48,3 +48,7 @@ h3{ | ... | @@ -48,3 +48,7 @@ h3{ |
48 | color: white; | 48 | color: white; |
49 | padding: 1rem; | 49 | padding: 1rem; |
50 | } | 50 | } |
51 | + | ||
52 | +.Caution{ | ||
53 | + color: pink; | ||
54 | +} | ... | ... |
-
Please register or login to post a comment