Commit 8bcf6e01 authored by KangMin An's avatar KangMin An
Browse files

Merge branch 'gitlab/who' into premaster.

parents 84acb663 c73c4950
This diff is collapsed.
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
"@testing-library/react": "^11.2.7", "@testing-library/react": "^11.2.7",
"@testing-library/user-event": "^12.8.3", "@testing-library/user-event": "^12.8.3",
"axios": "^0.21.1", "axios": "^0.21.1",
"bootstrap": "^4.6.0", "bootstrap": "^5.0.2",
"chart.js": "^3.4.0", "chart.js": "^3.4.0",
"moment": "^2.29.1", "moment": "^2.29.1",
"ngx-spinner": "^12.0.0", "ngx-spinner": "^12.0.0",
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
"pg": "^8.6.0", "pg": "^8.6.0",
"pg-hstore": "^2.3.4", "pg-hstore": "^2.3.4",
"react": "^17.0.2", "react": "^17.0.2",
"react-bootstrap": "^1.6.1", "react-bootstrap": "^2.0.0-beta.4",
"react-chartjs-2": "^3.0.3", "react-chartjs-2": "^3.0.3",
"react-copy-to-clipboard": "^5.0.3", "react-copy-to-clipboard": "^5.0.3",
"react-dom": "^17.0.2", "react-dom": "^17.0.2",
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
"react-redux": "^7.2.4", "react-redux": "^7.2.4",
"react-router-dom": "^5.2.0", "react-router-dom": "^5.2.0",
"react-scripts": "4.0.3", "react-scripts": "4.0.3",
"react-select": "^4.3.1",
"react-use": "^17.2.4", "react-use": "^17.2.4",
"sass": "^1.35.1", "sass": "^1.35.1",
"sequelize": "^6.6.5", "sequelize": "^6.6.5",
......
...@@ -5,6 +5,10 @@ body { ...@@ -5,6 +5,10 @@ body {
} }
.form-check-input:checked {
background-color: #04AB70 !important;
}
#btnlink { #btnlink {
color: white !important; color: white !important;
text-decoration: none !important; text-decoration: none !important;
...@@ -36,6 +40,7 @@ body { ...@@ -36,6 +40,7 @@ body {
padding: 0.5em; padding: 0.5em;
} }
.form-group .form-control { .form-group .form-control {
border-radius: 40px; border-radius: 40px;
} }
......
import React from 'react'; import React from 'react';
import { BrowserRouter as Router, Route } from 'react-router-dom'; import { BrowserRouter as Router, Route, Switch } from 'react-router-dom';
import './App.css'; import './App.css';
import Home from './pages/Home'; import Home from './pages/Home';
import SignupPage from './pages/SignupPage'; import SignupPage from './pages/SignupPage';
import LoginPage from './pages/LoginPage'; import LoginPage from './pages/LoginPage';
import LocalCodePage from './pages/LocalCodePage'; import LocalCodePage from './pages/LocalCodePage';
import PrivateRoute from './utils/PrivateRoutes';
import PageNotFound from './components/PageNotFound';
function App() { function App() {
return ( return (
<Router> <Router>
<> <Switch>
<Route exact path='/' component={Home} /> <Route exact path='/' component={Home} />
<Route exact path='/signup' component={SignupPage} /> <Route path='/signup' component={SignupPage} />
<Route exact path='/login' component={LoginPage} /> <Route path='/login' component={LoginPage} />
<Route exact path='/local_code' component={LocalCodePage} />
<PrivateRoute path='/local_code'>
</> <LocalCodePage />
</PrivateRoute>
<Route component={PageNotFound} />
</Switch>
</Router> </Router>
); );
......
import axios from 'axios'; import axios from 'axios';
import { useState } from 'react';
import Oauth from './Oauth';
export function handleLogin({ userId, role, name, tel, email }) { export function handleLogin({ userId, role, name, tel, email }) {
localStorage.setItem('id', userId) localStorage.setItem('id', userId)
...@@ -17,7 +15,7 @@ export async function handleLogout() { ...@@ -17,7 +15,7 @@ export async function handleLogout() {
} }
export function isLogined() { export function isLogined() {
const userId = localStorage.getItem('id') const userId = localStorage.getItem('nickname')
if (userId) { if (userId) {
return userId return userId
} else { } else {
......
import { Spinner, Button, Row, Alert } from 'react-bootstrap';
import Swal from 'sweetalert2' import Swal from 'sweetalert2'
import '../App.css' import '../App.css'
...@@ -85,19 +84,4 @@ export function kakaoLogout() { ...@@ -85,19 +84,4 @@ export function kakaoLogout() {
} }
}) })
}) })
}
export function Loading() {
return (
<Row className='d-block'>
<Button id='formbtn' className='d-flex justify-content-center align-items-center m-auto' style={{ width: '200px', height: '200px', flexDirection: 'column' }} disabled>
<Spinner animation="border" role="status">
<span className="sr-only">Loading...</span>
</Spinner>
<br />
Loading...
</Button>
</Row>
)
} }
\ No newline at end of file
import React from 'react';
import { Redirect, Route } from 'react-router-dom';
import { isLogined } from '../utils/Auth';
function PrivateRoute({ path, children }) {
if (isLogined()) {
return (
<Route path={path}>
{children}
</Route>
)
} else {
alert('권한이 없습니다')
return (
<Redirect to='/' />
)
}
}
export default PrivateRoute
// const { smtpTransport } = require('./config/email');
// const nodemailer = require('nodemailer');
// /* min ~ max까지 랜덤으로 숫자를 생성하는 함수 */
// var generateRandom = function (min, max) {
// var ranNum = Math.floor(Math.random() * (max - min + 1)) + min;
// return ranNum;
// }
// // transporter 생성
// let transporter = nodemailer.createTransport({
// // host: "mail.회사.계정.입력" *** mail. <-요게 핵심이었다!
// host: "mail.abc.co.kr",
// // 보안 무시
// port: 587,
// // 회사 도메인 내 계정 및 비밀번호
// auth: {
// user: "myid@abc.co.kr",
// pass: "mypassword",
// },
// // 서명받지 않은 사이트의 요청도 받겠다.
// tls: {
// rejectUnauthorized: false
// }
// });
// // 메일 관련 옵션
// let mailOptions = {
// // 발송 메일 주소 (위에서 작성한 회사 계정 아이디)
// from: "myid@abc.co.kr",
// // 수신 메일 주소
// to: "receiverid@domain.com",
// // 제목
// subject: "인증 메일입니다.",
// // 인증 URL
// html: `<p>아래의 링크를 클릭하시면 인증이 완료됩니다.</p>
// <a href='http://localhost:3000/auth?etc'>인증하기</a>`,
// };
// // 메일 보내기
// transporter.sendMail(mailOptions, function (err, info) {
// if (err) {
// // 메일 보내기 에러 발생 시, 콘솔 찍어보기
// console.log("메일보내기 에러쓰");
// console.log(err);
// } else {
// // 성공했다!
// console.log("Email sent: " + info.response);
// }
// });
// // export const auth = {
// // SendEmail: async (req, res) => {
// // const number = generateRandom(111111, 999999)
// // const { sendEmail } = req.body;
// // const mailOptions = {
// // from: "정욱이네러버덕",
// // to: sendEmail,
// // subject: "[러버덕]인증 관련 이메일 입니다",
// // text: "오른쪽 숫자 6자리를 입력해주세요 : " + number
// // };
// // const result = await smtpTransport.sendMail(mailOptions, (error, responses) => {
// // if (error) {
// // return res.status(statusCode.OK).send(util.fail(statusCode.BAD_REQUEST, responseMsg.AUTH_EMAIL_FAIL))
// // } else {
// // /* 클라이언트에게 인증 번호를 보내서 사용자가 맞게 입력하는지 확인! */
// // return res.status(statusCode.OK).send(util.success(statusCode.OK, responseMsg.AUTH_EMAIL_SUCCESS, {
// // number: number
// // }))
// // }
// // smtpTransport.close();
// // });
// // }
// // }
\ No newline at end of file
import React from 'react' import React, { useEffect } from 'react'
import { Row, Card } from 'react-bootstrap'; import { Row, Card, Col } from 'react-bootstrap';
function EueSuggest() { function EueSuggest() {
const cardstyled = { const cardstyled = {
margin: 'auto', margin: 'auto',
padding: '1em', padding: '1em',
...@@ -13,18 +14,22 @@ function EueSuggest() { ...@@ -13,18 +14,22 @@ function EueSuggest() {
borderColor: 'rgb(110, 189, 142)', borderColor: 'rgb(110, 189, 142)',
color: '#04AB70' color: '#04AB70'
} }
const airUsing = localStorage.getItem('using-aircondition')
return ( return (
<Row className='text-center w-100 my-2'> <Row className='text-center w-100 my-2'>
<Card style={cardstyled}> <Card style={cardstyled}>
<Card.Title>
EUE 제안 <Card.Title>
</Card.Title> EUE 제안
<Card.Text> </Card.Title>
"에어컨을 줄이시면 더 효율적입니다." <Card.Text>
</Card.Text> "에어컨을 줄이시면 더 효율적입니다."
</Card> </Card.Text>
</Row>
</Card>
</Row>
) )
} }
......
import React from 'react'
import { Spinner, Row, Button } from 'react-bootstrap';
function Loading() {
return (
<Button id='formbtn' className='d-flex justify-content-center align-items-center m-auto' style={{ width: '200px', height: '200px', flexDirection: 'column' }} disabled>
<Spinner animation="border" role="status">
<span className="sr-only">Loading...</span>
</Spinner>
<br />
Loading...
</Button>
)
}
export default Loading;
\ No newline at end of file
import React, { useEffect, useState } from 'react' import React, { useEffect, useState } from 'react'
import '../App.css' import '../App.css'
import { Form, Button, Row, Col, Card, DropdownButton, Dropdown, ButtonGroup } from 'react-bootstrap'; import { Form, Button, Row, Col, Card } from 'react-bootstrap';
import axios from 'axios'; import axios from 'axios';
import Swal from 'sweetalert2'
function LocCodeChange() { function LocCodeChange() {
...@@ -20,7 +22,6 @@ function LocCodeChange() { ...@@ -20,7 +22,6 @@ function LocCodeChange() {
const inboxstyled = { const inboxstyled = {
display: 'flex', display: 'flex',
flexDirection: 'column', flexDirection: 'column',
maxWidth: '80%',
justifyContent: 'center', justifyContent: 'center',
margin: 'auto', margin: 'auto',
padding: '10px' padding: '10px'
...@@ -28,46 +29,89 @@ function LocCodeChange() { ...@@ -28,46 +29,89 @@ function LocCodeChange() {
const btnstyled2 = { const btnstyled2 = {
background: 'white', background: 'white',
margin: '1px', width: '50%',
maxWidth: 'fit-content',
borderWidth: '2px', borderWidth: '2px',
color: 'rgb(110, 189, 142)', color: 'rgb(110, 189, 142)',
borderColor: 'rgba(195, 195, 195, 0.753)', borderColor: 'rgba(195, 195, 195, 0.753)',
borderRadius: '20px'
}
const [locCodeShow, setLocCodeShow] = useState(false)
function handleClickLoc() {
setLocCodeShow(true);
const auth = document.getElementById('loc-code')
auth.style.visibility = 'visible'
} }
const [does, setDoes] = useState([]) const [does, setDoes] = useState([])
const [sggs, setSggs] = useState([]) const [sggs, setSggs] = useState([])
// const [emds, setEmds] = useState([]) const [emds, setEmds] = useState([])
const [sggsArray, setSggsArray] = useState([])
const [emdsArray, setEmdsArray] = useState([])
const does_array = [] const doeSelect = document.getElementById('select-doe')
const sggs_array = [] const sggSelect = document.getElementById('select-sgg')
// const emds_array = [] const emdSelect = document.getElementById('select-emd')
does.map((doesObj) => does_array.push(doesObj['name_doe']))
sggs.map((sggsObj) => console.log(sggsObj['sgg'])) function handleClickLoc() {
console.log('does :: ', does) if (doeSelect.options[doeSelect.selectedIndex].text !== '' && sggSelect.options[sggSelect.selectedIndex].text !== '시군구' && emdSelect.options[emdSelect.selectedIndex].text !== '읍면동') {
console.log('does_array:::', does_array) localStorage.setItem('code_doe', doeSelect.value)
localStorage.setItem('name_doe', doeSelect.options[doeSelect.selectedIndex].text)
localStorage.setItem('code_sgg', sggSelect.value)
localStorage.setItem('name_sgg', sggSelect.options[sggSelect.selectedIndex].text)
localStorage.setItem('code_emd', emdSelect.value)
localStorage.setItem('name_emd', emdSelect.options[emdSelect.selectedIndex].text)
if (localStorage.getItem('name_emd')) {
Swal.fire({
title: '변경되었습니다.',
text: '축하드립니다!👏',
icon: 'success',
customClass: 'swal-wide',
confirmButtonText: '확인',
}).then((res) => {
if (res.isConfirmed) {
window.location.reload()
}
else {
window.location.reload()
}
})
}
}
else {
Swal.fire({
title: '실패',
text: '전부 선택해주세요',
icon: 'error',
customClass: 'swal-wide',
confirmButtonText: '확인'
})
}
}
async function getLocCode() { async function getLocCode() {
const res = await axios.get("http://localhost:4500/api/data/loccode") const res = await axios.get("http://localhost:4500/api/data/loccode")
const local_codes = res.data.locCodes const local_codes = res.data.locCodes
console.log('local_codes::: ', local_codes)
setDoes(local_codes.DOE) setDoes(local_codes.DOE)
setSggs(local_codes.SGG) setSggs(local_codes.SGG)
setEmds(local_codes.EMD)
} }
useEffect(() => { useEffect(() => {
getLocCode() getLocCode()
}, []) }, [])
function selectLocal() {
sggs.map(function (sggvalue) {
if (doeSelect.value == sggvalue['code_doe']) {
setSggsArray(sggvalue['sgg'])
}
})
emds.map(function (emdvalue) {
if (sggSelect.value == emdvalue['code_sgg']) {
setEmdsArray(emdvalue['emd'])
}
})
}
return ( return (
<Row className='text-center w-100 my-2'> <Row className='text-center w-100 my-2'>
<Card style={cardstyled}> <Card style={cardstyled}>
...@@ -78,54 +122,62 @@ function LocCodeChange() { ...@@ -78,54 +122,62 @@ function LocCodeChange() {
Please select a your region Please select a your region
</Card.Subtitle> </Card.Subtitle>
<hr /> <hr />
<Card.Text> <Card.Text className='m-0'>
<Form style={inboxstyled}> <Form style={inboxstyled}>
<Row className='m-auto w-100 d-flex justify-content-center'> <Row md={12} xs={12} className='m-auto w-100 d-flex justify-content-center' style={{ padding: '0', display: 'flex', justifyContent: 'center', width: '100%' }}>
<Col md={12} xs={12} style={{ padding: '0', display: 'flex', justifyContent: 'center', width: '100%' }}> <Form.Group className='m-auto w-100' style={btnstyled2}>
<Form.Group style={btnstyled2}> <Row className='m-auto pb-3' onChange={selectLocal}>
<Form.Control as='select' aria-label="Floating label select example"> <Col md={4} xs={4} style={{ padding: '2px' }}>
<option></option>
{does.map((doe) => ( <Form.Control as='select' size="sm" id='select-doe'>
<option value={`${doe["code_doe"]}`}> <option selected disabled></option>
{`${doe["name_doe"]}`}</option> {
))} does.map((doevalue) => (
</Form.Control> <option value={`${doevalue["code_doe"]}`}>
<Form.Control as='select' aria-label="Floating label select example"> {`${doevalue["name_doe"]}`}
<option>시군구</option> </option>
{does.map((doe) => ( ))
<option value={`${doe["code_doe"]}`}> }
{`${doe["name_doe"]}`}</option> </Form.Control>
))} </Col>
</Form.Control>
<Form.Control as='select' aria-label="Floating label select example"> <Col md={4} xs={4} style={{ padding: '2px' }}>
<option>읍면동</option> <Form.Control as='select' size="sm" id='select-sgg'>
{does.map((doe) => ( <option selected disabled>시군구</option>
<option value={`${doe["code_doe"]}`}> {
{`${doe["name_doe"]}`}</option> sggsArray.map((sggvalue) => (
))} <option value={`${sggvalue["code_sgg"]}`}>
</Form.Control> {`${sggvalue["name_sgg"]}`}
</option>
</Form.Group> ))
<Button variant='light' style={btnstyled2} onClick={!locCodeShow && handleClickLoc}>확인</Button> }
</Col> </Form.Control>
<Col md={6} xs={4} id='loc-code' style={{ </Col>
margin: '5px',
border: 'solid', <Col md={4} xs={4} style={{ padding: '2px' }}>
borderColor: 'rgb(110, 189, 142)', <Form.Control as='select' size="sm" id='select-emd'>
display: 'flex', <option selected disabled>읍면동</option>
justifyContent: 'center', {
padding: '2px', emdsArray.map((emdvalue) => (
// visibility: 'hidden', <option value={`${emdvalue["code_emd"]}`}>
transition: 'all 2s' {`${emdvalue["name_emd"]}`}
}}> </option>
지역코드 ))
</Col> }
</Form.Control>
</Col>
</Row>
</Form.Group>
</Row> </Row>
</Form> </Form>
</Card.Text> </Card.Text>
<Row className='d-flex justify-content-center'>
<Button
variant='light' style={btnstyled2} onClick={handleClickLoc}>
확인
</Button>
</Row>
</Card> </Card>
</Row> </Row>
......
...@@ -26,24 +26,30 @@ function LoginComp() { ...@@ -26,24 +26,30 @@ function LoginComp() {
padding: '10px' padding: '10px'
} }
const [emailSent, setEmailSent] = useState(false) const [emailSentAlert, setEmailSentAlert] = useState(false)
const [alertShow, setAlertShow] = useState(true) const [alertShow, setAlertShow] = useState(false)
function CheckEmailSend() { const [emailAddress, setEmailAddress] = useState('')
setEmailSent(!emailSent)
function CheckEmailSend() {
localStorage.setItem('login_email_Address', emailAddress)
const emailIs = localStorage.getItem('login_email_Address').split('@')[1]
if(emailIs) {
setAlertShow(true)
setEmailSentAlert(false)
}
else {
setAlertShow(true)
setEmailSentAlert(true)
}
} }
function addressUrl() { function addressUrl() {
localStorage.setItem('Email-Address', emailAddress) const afterAt = localStorage.getItem('login_email_Address').split('@')[1]
const afterAt = localStorage.getItem('Email-Address').split('@')[1]
console.log(afterAt)
const newLink = 'https://www.' + afterAt; const newLink = 'https://www.' + afterAt;
window.open(newLink); window.open(newLink);
} }
const [emailAddress, setEmailAddress] = useState('')
function handleChange(event) { function handleChange(event) {
setEmailAddress(event.target.value) setEmailAddress(event.target.value)
console.log(emailAddress) console.log(emailAddress)
...@@ -61,7 +67,7 @@ function LoginComp() { ...@@ -61,7 +67,7 @@ function LoginComp() {
<hr /> <hr />
<Card.Text> <Card.Text>
<Row className='m-auto d-flex justify-content-center' style={{ width: '80%' }}> <Row className='m-auto d-flex justify-content-center' style={{ width: '80%' }}>
{!emailSent ? {!emailSentAlert ?
<Alert show={alertShow} variant={'success'}> <Alert show={alertShow} variant={'success'}>
<Col> <Col>
😍 이메일 전송이 완료 되었습니다. 😍 이메일 전송이 완료 되었습니다.
...@@ -80,18 +86,15 @@ function LoginComp() { ...@@ -80,18 +86,15 @@ function LoginComp() {
</Alert.Link> </Alert.Link>
</Alert> </Alert>
} }
<Button onClick={() => setAlertShow(true)}>보여주고</Button>
<Button onClick={() => setAlertShow(false)}>안보여주고</Button>
</Row> </Row>
<Form style={inboxstyled}> <Form style={inboxstyled}>
<Form.Group controlId="formBasicEmail"> <Form.Group controlId="formBasicEmail">
<Form.Control type="email" placeholder="Email" onChange={handleChange} /> <Form.Control type="email" placeholder="Email" onChange={handleChange} />
</Form.Group> </Form.Group>
<Button variant='light' id='formbtn' onClick={CheckEmailSend}> <Button variant='light' className='mt-3' id='formbtn' onClick={CheckEmailSend}>
LOGIN LOGIN
</Button> </Button>
</Form> </Form>
<Row className='d-flex align-items-center m-2'> <Row className='d-flex align-items-center m-2'>
......
import React from 'react' import React, { useEffect, useState } from 'react'
import { Button, Image, Row, ButtonGroup, } from 'react-bootstrap'; import { Button, Image, Row, ButtonGroup, Form, Col } from 'react-bootstrap';
import { Link } from 'react-router-dom'; import { Link } from 'react-router-dom';
import '../App.css' import '../App.css'
import LocalCode from '../components/LocalCode'; import UserInfo from './UserInfo';
import { kakaoLogout } from '../utils/Oauth'; import { kakaoLogout } from '../utils/Oauth';
...@@ -36,9 +36,15 @@ function MainLayer() { ...@@ -36,9 +36,15 @@ function MainLayer() {
const logined = localStorage.getItem('nickname') const logined = localStorage.getItem('nickname')
const [airUsing, setAirUsing] = useState(false)
function aircondiCheck() {
setAirUsing(!airUsing)
localStorage.setItem('using-aircondition', !airUsing);
}
return ( return (
<> <Col>
<Row className='d-flex align-items-center m-auto w-100'> <Row className='d-flex align-items-center m-auto w-100'>
<Link to='/' className=' m-auto'> <Link to='/' className=' m-auto'>
<Image src='/images/EUE11.jpg' alt='EUE' style={boxstyled} /> <Image src='/images/EUE11.jpg' alt='EUE' style={boxstyled} />
...@@ -46,8 +52,18 @@ function MainLayer() { ...@@ -46,8 +52,18 @@ function MainLayer() {
</Row> </Row>
<Row className='m-auto d-flex justify-content-center w-100'> <Row className='m-auto d-flex justify-content-center w-100'>
<LocalCode /> <UserInfo />
</Row> </Row>
<Form
key='checkbox' className="d-flex justify-content-center w-100" style={{ flexDirection: 'row-reverse' }}>
<Form.Check
type='switch'
id='aircondition-checkbox'
label='에어컨 사용중'
onChange={aircondiCheck}
/>
</Form>
<Row className='d-flex justify-content-center align-items-center my-2 mx-auto w-100'> <Row className='d-flex justify-content-center align-items-center my-2 mx-auto w-100'>
<ButtonGroup vertical className='m-auto' style={{ width: '100%', flexDirection: 'column' }}> <ButtonGroup vertical className='m-auto' style={{ width: '100%', flexDirection: 'column' }}>
{logined ? {logined ?
...@@ -76,7 +92,7 @@ function MainLayer() { ...@@ -76,7 +92,7 @@ function MainLayer() {
<Row className='m-auto justify-content-center w-100' id='contour'> <Row className='m-auto justify-content-center w-100' id='contour'>
| |
</Row> </Row>
</> </Col>
); );
} }
......
import React, { useEffect } from 'react'
import { Row, Container } from 'react-bootstrap';
import { Redirect } from 'react-router-dom';
import Loading from './Loading';
// const goHome = setTimeout(window.location.replace('/'), 3000);
function PageNotFound() {
useEffect(() => {
setTimeout(window.location.replace('/'), 5000);
}, [])
return (
<Container className='d-flex justify-content-center align-items-center' style={{ flexDirection: 'column', height: '70vh' }} >
<Row style={{marginBottom: '1em', fontSize: '2rem', fontWeight: 'bold' }}>
잘못된 접근 입니다. <br />PAGE NOT FOUND
</Row>
<Row>
<Loading />
</Row>
</Container>
)
}
export default PageNotFound;
\ No newline at end of file
...@@ -27,16 +27,40 @@ function SignupComp() { ...@@ -27,16 +27,40 @@ function SignupComp() {
} }
const initValues = { const initValues = {
email: '', name: '',
name: '' email: ''
} }
const [formValues, setFormValues] = useState(initValues) const [formValues, setFormValues] = useState(initValues)
const [validated, setValidated] = useState(false) const [validated, setValidated] = useState(false)
const [emailSubm, setEmailSubm] = useState(false)
const [userExist, setUserExist] = useState(false)
const [alertShow, setAlertShow] = useState(false)
function handleChange(event) { function handleChange(event) {
const { name, value } = event.target const { name, value } = event.target
setFormValues({ ...formValues, [name]: value }) setFormValues({ ...formValues, [name]: value })
console.log('???', formValues)
}
function CheckUserExist() {
localStorage.setItem('signup_username', formValues.name)
localStorage.setItem('signup_email_Address', formValues.email)
const signUser = localStorage.getItem('signup_username')
const signEmail = localStorage.getItem('signup_email_Address').split('@')[1]
if (signEmail && signUser) {
setAlertShow(true)
setUserExist(!userExist)
}
else
if (!signEmail) {
setAlertShow(false)
// setUserExist(true)
}
} }
function handleSubmit(event) { function handleSubmit(event) {
...@@ -55,7 +79,6 @@ function SignupComp() { ...@@ -55,7 +79,6 @@ function SignupComp() {
// setFormError(validate(formValues)) // setFormError(validate(formValues))
// setIsSubmit(true) // setIsSubmit(true)
} }
const [emailSubm, setEmailSubm] = useState(false)
function handleClickSubm() { function handleClickSubm() {
// setEmailSubm(true); // setEmailSubm(true);
...@@ -66,12 +89,6 @@ function SignupComp() { ...@@ -66,12 +89,6 @@ function SignupComp() {
} }
const [userExist, setUserExist] = useState(false)
const [alertShow, setAlertShow] = useState(true)
function CheckUserExist() {
setUserExist(!userExist)
}
return ( return (
...@@ -106,13 +123,11 @@ function SignupComp() { ...@@ -106,13 +123,11 @@ function SignupComp() {
</Alert.Link> </Alert.Link>
</Alert> </Alert>
} }
<Button onClick={() => setAlertShow(true)}>보여주고</Button>
<Button onClick={() => setAlertShow(false)}>안보여주고</Button>
</Row> </Row>
<Form style={inboxstyled} <Form style={inboxstyled}
onSubmit={handleSubmit}> onSubmit={handleSubmit}>
<Form.Group controlId="userEmail"> <Form.Group controlId="username">
<Row className='m-auto mb-1 d-flex justify-content-center'> <Row className='m-auto mb-1 d-flex justify-content-center'>
<Form.Control <Form.Control
type="text" type="text"
...@@ -138,8 +153,8 @@ function SignupComp() { ...@@ -138,8 +153,8 @@ function SignupComp() {
</Row> </Row>
</Form.Group> </Form.Group>
<Button variant='light' className='mt-2' id='formbtn' onClick={CheckUserExist}> <Button variant='light' className='mt-3' id='formbtn' onClick={CheckUserExist}>
{/* type="submit" */} {/* type="submit" */}
Sign Up Sign Up
</Button> </Button>
</Form> </Form>
......
import React, { useState } from 'react' import React, { useState } from 'react'
import { Row, Card, Button, Col, Modal } from 'react-bootstrap'; import { Row, Card, Button, Col, Modal } from 'react-bootstrap';
// import db from "../db/index"
import '../App.css' import '../App.css'
import { Link } from 'react-router-dom'; import { Link } from 'react-router-dom';
function LocalCode() { function UserInfo() {
const logined = localStorage.getItem('nickname') const nickname = localStorage.getItem('nickname')
const localname_doe = localStorage.getItem('name_doe')
const localname_sgg = localStorage.getItem('name_sgg')
const localname_emd = localStorage.getItem('name_emd')
const cardstyled = { const cardstyled = {
margin: 'auto', margin: 'auto',
...@@ -18,25 +20,29 @@ function LocalCode() { ...@@ -18,25 +20,29 @@ function LocalCode() {
borderWidth: '3px', borderWidth: '3px',
borderRadius: '20px', borderRadius: '20px',
borderColor: 'rgba(195, 195, 195, 0.753)', borderColor: 'rgba(195, 195, 195, 0.753)',
color: 'rgb(110, 189, 142)' // color: '#04AB70'
color: 'rgb(110, 189, 142)',
} }
const btnstyled2 = { const btnstyled2 = {
background: 'white', background: 'white',
margin: 'auto', margin: 'auto',
borderWidth: '2px', borderWidth: '2px',
fontSize: '0.5em', // padding: '0',
fontSize: '0.7em',
color: 'rgb(110, 189, 142)', color: 'rgb(110, 189, 142)',
borderColor: 'rgba(195, 195, 195, 0.753)', borderColor: 'rgba(195, 195, 195, 0.753)',
borderRadius: '20px', // borderRadius: '20px',
width: '50%'
} }
const [localChange, setLocalChange] = useState(false)
const nickname = localStorage.getItem('nickname')
return ( return (
<> <Row>
<Col className='text-center pt-3 pb-2 px-0'> <Col className='text-center pt-3 pb-2 px-0'>
<Card style={cardstyled} id='localName'> <Card style={cardstyled} id='localName'>
<Card.Title> <Card.Title>
{logined ? {nickname ?
`${nickname}` `${nickname}`
: :
<> <>
...@@ -44,37 +50,31 @@ function LocalCode() { ...@@ -44,37 +50,31 @@ function LocalCode() {
</> </>
}, 환영합니다. }, 환영합니다.
</Card.Title> </Card.Title>
<Row style={{ alignItems: 'center', margin: 'auto', whiteSpace: 'nowrap' }}> <Row style={{ alignItems: 'center', margin: 'auto', justifyContent: 'center' }}>
<Card.Subtitle> <Card.Subtitle>
지역코드 {localname_emd ?
`${localname_doe} ${localname_sgg} ${localname_emd}`
:
<>
지역을 입력해 주세요
</>
}
</Card.Subtitle> </Card.Subtitle>
{logined && {nickname &&
<Button variant='light' className='ml-1' style={btnstyled2}> <Button variant='light' className='m-auto d-flex' style={btnstyled2}>
<Link to='/local_code' style={{ textDecoration: 'none', color: 'rgb(110, 189, 142)' }}> <Link to='/local_code' className='w-100' style={{ textDecoration: 'none', color: 'rgb(110, 189, 142)' }}>
변경 변경
</Link> </Link>
</Button> </Button>
} }
</Row> </Row>
<Modal <hr />
show={localChange}
onHide={() => setLocalChange(false)}
>
<Modal.Header className='d-block text-center'>
<Modal.Title>
마이페이지
</Modal.Title>
</Modal.Header>
<Modal.Body>
지역이름 (지역코드)
</Modal.Body>
</Modal>
환경을 향한 노력 <br /> 환경을 향한 노력 <br />
<strong>OOO </strong> <strong>OOO </strong>
</Card> </Card>
</Col> </Col>
</> </Row>
) )
} }
export default LocalCode; export default UserInfo;
\ No newline at end of file \ No newline at end of file
...@@ -50,15 +50,11 @@ function Home() { ...@@ -50,15 +50,11 @@ function Home() {
</Col> </Col>
<Col md={6} style={col2sty}> <Col md={6} style={col2sty}>
<Row style={constyled} className='d-flex mb-2 w-100'>
{/* <TimeNow /> */} {/* <TimeNow /> */}
<EueSuggest /> <EueSuggest />
<ChartLine /> <ChartLine />
<ChartDoughnut /> <ChartDoughnut />
<Footer /> <Footer />
</Row>
</Col> </Col>
</Row> </Row>
</Container> </Container>
......
...@@ -37,10 +37,7 @@ function SignupPage() { ...@@ -37,10 +37,7 @@ function SignupPage() {
</Col> </Col>
<Col md={6} style={col2sty}> <Col md={6} style={col2sty}>
<Row style={constyled} className='d-flex mb-2 w-100'>
<LocCodeChange /> <LocCodeChange />
</Row>
</Col> </Col>
</Row> </Row>
</Container> </Container>
......
...@@ -38,9 +38,7 @@ function SignupPage() { ...@@ -38,9 +38,7 @@ function SignupPage() {
<Col md={6} style={col2sty}> <Col md={6} style={col2sty}>
<Row style={constyled} className='d-flex mb-2 w-100'>
<LoginComp /> <LoginComp />
</Row>
</Col> </Col>
</Row> </Row>
</Container> </Container>
......
...@@ -37,10 +37,7 @@ function SignupPage() { ...@@ -37,10 +37,7 @@ function SignupPage() {
</Col> </Col>
<Col md={6} style={col2sty}> <Col md={6} style={col2sty}>
<SignupComp />
<Row style={constyled} className='d-flex mb-2 w-100'>
<SignupComp />
</Row>
</Col> </Col>
</Row> </Row>
</Container> </Container>
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment