Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
students
reservation-service
Commits
4fa57e49
Commit
4fa57e49
authored
Nov 04, 2020
by
Kim, Subin
Browse files
이걸로 병합하세요
parents
1e99a1fc
3e0a0e4b
Changes
9
Hide whitespace changes
Inline
Side-by-side
server/client/src/Components/Card.js
View file @
4fa57e49
import
React
,
{
useState
,
useContext
}
from
'
react
'
;
import
{
Card
,
Accordion
,
Col
,
AccordionContext
,
useAccordionToggle
}
from
'
react-bootstrap
'
;
import
styled
from
'
styled-components
'
;
const
Text
=
styled
(
Card
.
Body
)
`
& .WRAP {
display: inline-block;
text-overflow: ellipsis;
width: 100%;
white-space: initial;
}
`
function
Notice
({
card_index
,
title
,
date
,
content
})
{
function
ContextAwareToggle
({
children
,
eventKey
,
callback
})
{
const
currentEventKey
=
useContext
(
AccordionContext
);
const
decoratedOnClick
=
useAccordionToggle
(
eventKey
,
()
=>
callback
&&
callback
(
eventKey
),
);
const
isCurrentEventKey
=
currentEventKey
===
eventKey
;
return
(
<
div
className
=
{
isCurrentEventKey
?
"
text-wrap whiteSpace-initial
"
:
"
text-truncate
"
}
onClick
=
{
decoratedOnClick
}
>
{
children
}
<
/div
>
);
}
function
dateForm
(
day
)
{
const
post_day
=
new
Date
(
day
);
let
year
=
post_day
.
getFullYear
();
let
month
=
post_day
.
getMonth
()
+
1
;
let
date
=
post_day
.
getDate
();
month
=
month
<
10
?
'
0
'
+
month
:
month
;
date
=
date
<
10
?
'
0
'
+
date
:
date
;
const
new_date
=
year
+
"
-
"
+
month
+
"
-
"
+
date
;
return
new_date
}
return
(
<
Card
className
=
"
w-100
"
>
<
Card
.
Header
className
=
"
row flex-row py-3
"
>
<
Col
md
=
{
10
}
xs
=
{
8
}
>
<
ContextAwareToggle
variant
=
"
link
"
eventKey
=
{
card_index
+
1
}
>
{
title
}
<
/ContextAwareToggle
>
<
/Col
>
<
Col
md
=
{
2
}
xs
=
{
4
}
className
=
"
p-0
"
>
{
dateForm
(
date
)}
<
/Col
>
<
/Card.Header
>
<
Accordion
.
Collapse
eventKey
=
{
card_index
+
1
}
>
<
Text
>
{
content
.
split
(
"
\n
"
).
map
((
i
,
key
)
=>
{
return
<
div
key
=
{
key
}
>
{
i
}
<
/div>
;
})}
<
/Text
>
<
/Accordion.Collapse
>
<
/Card
>
)
}
export
default
Notice
;
\ No newline at end of file
server/client/src/Components/Menu.js
View file @
4fa57e49
...
@@ -41,7 +41,7 @@ function Menu() {
...
@@ -41,7 +41,7 @@ function Menu() {
if
(
state
)
return
<
Redirect
to
=
"
/
"
/>
if
(
state
)
return
<
Redirect
to
=
"
/
"
/>
return
(
return
(
<
MENU
expand
=
"
md
"
variant
=
"
dark
"
>
<
MENU
expand
=
"
md
"
variant
=
"
dark
"
>
<
Navbar
.
Brand
href
=
"
#
"
>
대관
서비스
<
/Navbar.Brand
>
<
Navbar
.
Brand
as
=
{
Link
}
to
=
"
/home
"
>
대관
서비스
<
/Navbar.Brand
>
<
Navbar
.
Toggle
aria
-
controls
=
"
basic-navbar-nav
"
/>
<
Navbar
.
Toggle
aria
-
controls
=
"
basic-navbar-nav
"
/>
<
Navbar
.
Collapse
id
=
"
basic-navbar-nav
"
>
<
Navbar
.
Collapse
id
=
"
basic-navbar-nav
"
>
<
Nav
className
=
"
mr-auto
"
>
<
Nav
className
=
"
mr-auto
"
>
...
...
server/client/src/Pages/ChangePage.js
View file @
4fa57e49
...
@@ -4,7 +4,7 @@ import * as Yup from 'yup';
...
@@ -4,7 +4,7 @@ import * as Yup from 'yup';
import
axios
from
'
axios
'
;
import
axios
from
'
axios
'
;
import
Menu
from
'
../Components/Menu
'
;
import
Menu
from
'
../Components/Menu
'
;
import
{
Link
,
Redirect
}
from
'
react-router-dom
'
;
import
{
Link
,
Redirect
}
from
'
react-router-dom
'
;
import
{
Container
,
Button
,
Col
}
from
'
react-bootstrap
'
;
import
{
Container
,
Button
,
Navbar
,
Col
}
from
'
react-bootstrap
'
;
import
styled
from
'
styled-components
'
;
import
styled
from
'
styled-components
'
;
const
Check
=
styled
.
div
`
const
Check
=
styled
.
div
`
...
@@ -30,7 +30,13 @@ function Change(props) {
...
@@ -30,7 +30,13 @@ function Change(props) {
// console.log(props)
// console.log(props)
return
(
return
(
<
div
className
=
""
>
<
div
className
=
""
>
<
Menu
/>
{(
localStorage
.
getItem
(
"
token
"
)
!==
null
)
?
(
<
Menu
/>
)
:
(
<
Menu
expand
=
"
md
"
variant
=
"
dark
"
>
<
Navbar
.
Brand
>
회원가입
<
/Navbar.Brand
>
<
/Menu
>
)}
<
Container
fluid
className
=
"
p-0 vh-90
"
>
<
Container
fluid
className
=
"
p-0 vh-90
"
>
<
Check
className
=
"
row justify-content-center m-0
"
>
<
Check
className
=
"
row justify-content-center m-0
"
>
<
Col
md
=
{
4
}
className
=
"
pt-5
"
>
<
Col
md
=
{
4
}
className
=
"
pt-5
"
>
...
...
server/client/src/Pages/CheckPage.js
View file @
4fa57e49
import
React
,
{
useState
,
useEffect
}
from
'
react
'
;
import
React
,
{
useState
,
useEffect
}
from
'
react
'
;
import
Menu
from
'
../Components/Menu
'
;
import
Menu
from
'
../Components/Menu
'
;
import
axios
from
'
axios
'
;
import
axios
from
'
axios
'
;
import
'
bootstrap/dist/css/bootstrap.css
'
;
function
Check
(
props
)
{
function
Check
(
props
)
{
const
[
reserve
,
setReserve
]
=
useState
([]);
const
[
reserve
,
setReserve
]
=
useState
([]);
...
...
server/client/src/Pages/HomePage.js
View file @
4fa57e49
...
@@ -13,7 +13,7 @@ function Home() {
...
@@ -13,7 +13,7 @@ function Home() {
<
h2
>
대관
현황
<
/h2
>
<
h2
>
대관
현황
<
/h2
>
<
p
>
<
p
>
<
strong
>
대관
가능
시간
<
/strong
>
<
strong
>
대관
가능
시간
<
/strong
>
<
ul
>
<
ul
className
=
"
pl-4
"
>
<
li
>
평일
:
9
시
-
22
시
/
예약가능
시간
이후
폐쇄
<
/li
>
<
li
>
평일
:
9
시
-
22
시
/
예약가능
시간
이후
폐쇄
<
/li
>
<
li
>
주말
:
이용
불가
<
/li
>
<
li
>
주말
:
이용
불가
<
/li
>
<
/ul
>
<
/ul
>
...
@@ -29,18 +29,15 @@ function Home() {
...
@@ -29,18 +29,15 @@ function Home() {
<
Schedule
room
=
{
key
}
/
>
<
Schedule
room
=
{
key
}
/
>
<
/Tab
>
<
/Tab
>
<
/Tabs
>
<
/Tabs
>
<
h3
>
유의사항
<
/h3
>
<
p
>
<
p
>
<
ul
>
<
strong
>
유의사항
<
/strong
>
<
ul
className
=
"
pl-4
"
>
<
li
>
강의실을
대관하는
대표자를
기준으로
최대
주
6
시간까지
대관이
가능합니다
.
<
/li
>
<
li
>
강의실을
대관하는
대표자를
기준으로
최대
주
6
시간까지
대관이
가능합니다
.
<
/li
>
<
li
>
1
회
대관시
최대
3
시간까지
이용이
가능합니다
.
(
1
시간
단위로
대관
가능
)
<
/li
>
<
li
>
1
회
대관시
최대
3
시간까지
이용이
가능합니다
.
(
1
시간
단위로
대관
가능
)
<
/li
>
<
li
><
strong
style
=
{{
color
:
"
red
"
}}
>
대관
시간
이외
강의실을
이용하다
적발될
경우
한달
간
강의실
이용이
불가합니다
.
<
/strong></
li
>
<
li
><
strong
style
=
{{
color
:
"
red
"
}}
>
대관
시간
이외
강의실을
이용하다
적발될
경우
한달
간
강의실
이용이
불가합니다
.
<
/strong></
li
>
<
/ul
>
<
/ul
>
<
/p
>
<
/p
>
<
div
className
=
"
bg-white
"
>
<
/div
>
<
h6
>
고려대학교
대관시스템
<
/h6
>
<
/div
>
<
/Container
>
<
/div
>
<
/div
>
)
)
}
}
...
...
server/client/src/Pages/NoticePage.js
View file @
4fa57e49
...
@@ -3,12 +3,12 @@ import Menu from '../Components/Menu';
...
@@ -3,12 +3,12 @@ import Menu from '../Components/Menu';
import
axios
from
'
axios
'
;
import
axios
from
'
axios
'
;
import
{
Link
}
from
'
react-router-dom
'
;
import
{
Link
}
from
'
react-router-dom
'
;
import
{
Container
,
Row
,
Col
,
Card
,
Accordion
,
Button
}
from
'
react-bootstrap
'
;
import
{
Container
,
Row
,
Col
,
Card
,
Accordion
,
Button
}
from
'
react-bootstrap
'
;
import
CARD
from
'
../Components/Card
'
;
function
Notice
()
{
function
Notice
()
{
const
[
show
,
setShow
]
=
useState
(
false
);
const
[
show
,
setShow
]
=
useState
(
false
);
const
[
notices
,
setNotices
]
=
useState
([]);
const
[
notices
,
setNotices
]
=
useState
([]);
const
[
user
,
setUser
]
=
useState
({
role
:
""
})
const
[
user
,
setUser
]
=
useState
({
role
:
""
})
const
[
a
,
setA
]
=
useState
([]);
useEffect
(()
=>
{
useEffect
(()
=>
{
acheck
();
acheck
();
...
@@ -26,19 +26,6 @@ function Notice() {
...
@@ -26,19 +26,6 @@ function Notice() {
});
});
}
}
function
dateForm
(
day
)
{
const
post_day
=
new
Date
(
day
);
let
year
=
post_day
.
getFullYear
();
let
month
=
post_day
.
getMonth
()
+
1
;
let
date
=
post_day
.
getDate
();
month
=
month
<
10
?
'
0
'
+
month
:
month
;
date
=
date
<
10
?
'
0
'
+
date
:
date
;
const
new_date
=
year
+
"
-
"
+
month
+
"
-
"
+
date
;
return
new_date
}
function
getNotice
()
{
function
getNotice
()
{
axios
.
get
(
`/notices`
)
axios
.
get
(
`/notices`
)
.
then
(
res
=>
{
.
then
(
res
=>
{
...
@@ -58,22 +45,11 @@ function Notice() {
...
@@ -58,22 +45,11 @@ function Notice() {
<
Container
fluid
>
<
Container
fluid
>
<
Row
className
=
"
justify-content-center vw-100 vh-90
"
>
<
Row
className
=
"
justify-content-center vw-100 vh-90
"
>
<
Col
md
=
{
7
}
>
<
Col
md
=
{
7
}
>
<
div
className
=
"
px-3 pt-3 mb-3 border-bottom d-flex justify-content-between align-items-end
"
>
<
h2
className
=
"
p-3 border-bottom d-flex justify-content-between
"
>
공지사항
{
user
.
role
===
"
admin
"
?
(
<
h2
>
공지사항
<
/h2
>
<
Button
as
=
{
Link
}
to
=
"
/write
"
>
글
작성
<
/Button>
)
: null}</
h2
>
{
user
.
role
===
"
admin
"
?
(
<
Link
to
=
"
/write
"
>
글
작성
<
/Link>
)
: null
}
<
/div
>
<
Accordion
>
<
Accordion
>
{
notices
.
map
((
notice
,
index
)
=>
{
notices
.
map
((
notice
,
index
)
=>
<
CARD
card_index
=
{
index
}
title
=
{
notice
.
notice_title
}
date
=
{
notice
.
post_date
}
content
=
{
notice
.
notice_content
}
/
>
<
Card
>
)}
<
Card
.
Header
className
=
"
d-flex justify-content-space-between
"
>
<
Accordion
.
Toggle
as
=
{
Button
}
variant
=
"
link
"
eventKey
=
{
index
+
1
}
className
=
{
"
d-inline-block
"
+
(
show
?
"
text-wrap
"
:
"
text-truncate
"
)}
onClick
=
{()
=>
setShow
(
!
show
)}
>
{
notice
.
notice_title
}
<
/Accordion.Toggle
>
<
span
className
=
"
d-flex align-items-center
"
style
=
{{
width
:
"
50%
"
}}
>
{
dateForm
(
notice
.
post_date
)}
<
/span
>
<
/Card.Header
>
<
Accordion
.
Collapse
eventKey
=
{
index
+
1
}
>
<
Card
.
Body
><
pre
>
{
notice
.
notice_content
}
<
/pre></
Card
.
Body
>
<
/Accordion.Collapse
>
<
/Card>
)
}
<
/Accordion
>
<
/Accordion
>
<
/Col
>
<
/Col
>
<
/Row
>
<
/Row
>
...
...
server/client/src/Pages/SignupPage.js
View file @
4fa57e49
...
@@ -25,11 +25,6 @@ const Wow = styled.div`
...
@@ -25,11 +25,6 @@ const Wow = styled.div`
content: '비밀번호가 일치하지 않습니다.';
content: '비밀번호가 일치하지 않습니다.';
color: red;
color: red;
}
}
& .asd {
display: flex;
flex-direction: column;
}
`
`
function
Signup
()
{
function
Signup
()
{
...
@@ -46,7 +41,7 @@ function Signup() {
...
@@ -46,7 +41,7 @@ function Signup() {
<
/Menu
>
<
/Menu
>
<
Container
fluid
>
<
Container
fluid
>
<
Wow
className
=
"
row justify-content-center
"
>
<
Wow
className
=
"
row justify-content-center
"
>
<
Col
md
=
{
3
}
xs
=
{
11
}
className
=
"
p-0
"
>
<
Col
md
=
{
3
}
xs
=
{
11
}
className
=
"
p-0
"
>
<
Formik
<
Formik
initialValues
=
{{
name
:
''
,
id
:
''
,
password
:
''
,
password2
:
''
,
question
:
''
,
answer
:
''
}}
initialValues
=
{{
name
:
''
,
id
:
''
,
password
:
''
,
password2
:
''
,
question
:
''
,
answer
:
''
}}
validationSchema
=
{
Yup
.
object
({
validationSchema
=
{
Yup
.
object
({
...
@@ -91,7 +86,7 @@ function Signup() {
...
@@ -91,7 +86,7 @@ function Signup() {
getFieldProps
,
// contain values, handleChange, handleBlur
getFieldProps
,
// contain values, handleChange, handleBlur
isSubmitting
,
isSubmitting
,
})
=>
(
})
=>
(
<
form
onSubmit
=
{
handleSubmit
}
className
=
"
asd
"
>
<
form
onSubmit
=
{
handleSubmit
}
className
=
"
d-flex flex-column pt-3
"
>
<
div
className
=
"
form-group
"
>
<
div
className
=
"
form-group
"
>
<
div
className
=
{
touched
.
name
&&
errors
.
name
?
"
text-danger
"
:
""
}
>
이름을
입력하세요
<
/div
>
<
div
className
=
{
touched
.
name
&&
errors
.
name
?
"
text-danger
"
:
""
}
>
이름을
입력하세요
<
/div
>
<
input
<
input
...
@@ -154,7 +149,7 @@ function Signup() {
...
@@ -154,7 +149,7 @@ function Signup() {
{...
getFieldProps
(
'
answer
'
)}
{...
getFieldProps
(
'
answer
'
)}
placeholder
=
"
Input answer
"
/>
placeholder
=
"
Input answer
"
/>
<
/div
>
<
/div
>
<
Button
type
=
"
submit
"
variant
=
"
secondary
"
disabled
=
{
isSubmitting
}
>
회원가입
<
/Button
>
<
Button
type
=
"
submit
"
variant
=
"
secondary
"
className
=
"
mb-2
"
disabled
=
{
isSubmitting
}
>
회원가입
<
/Button
>
<
Button
variant
=
"
outline-secondary
"
as
=
{
Link
}
to
=
"
/login
"
>
로그인하러
가기
<
/Button
>
<
Button
variant
=
"
outline-secondary
"
as
=
{
Link
}
to
=
"
/login
"
>
로그인하러
가기
<
/Button
>
<
/form
>
<
/form
>
)}
)}
...
...
server/client/src/Pages/WritePage.js
View file @
4fa57e49
...
@@ -3,7 +3,7 @@ import { Link, Redirect } from 'react-router-dom';
...
@@ -3,7 +3,7 @@ import { Link, Redirect } from 'react-router-dom';
import
Menu
from
'
../Components/Menu
'
;
import
Menu
from
'
../Components/Menu
'
;
import
*
as
Yup
from
'
yup
'
;
import
*
as
Yup
from
'
yup
'
;
import
axios
from
'
axios
'
;
import
axios
from
'
axios
'
;
import
{
Container
,
Row
,
Col
}
from
'
react-bootstrap
'
;
import
{
Container
,
Row
,
Col
,
Button
}
from
'
react-bootstrap
'
;
import
{
Field
,
Formik
}
from
'
formik
'
;
import
{
Field
,
Formik
}
from
'
formik
'
;
function
Write
()
{
function
Write
()
{
...
@@ -18,7 +18,7 @@ function Write() {
...
@@ -18,7 +18,7 @@ function Write() {
<
Menu
/>
<
Menu
/>
<
Container
fluid
>
<
Container
fluid
>
<
Row
className
=
"
justify-content-center
"
>
<
Row
className
=
"
justify-content-center
"
>
<
Col
md
=
{
12
}
x
l
=
{
8
}
style
=
{{
height
:
"
35em
"
}}
>
<
Col
md
=
{
5
}
x
s
=
{
11
}
className
=
"
pt-3
"
>
<
Formik
<
Formik
initialValues
=
{{
title
:
''
,
content
:
''
}}
initialValues
=
{{
title
:
''
,
content
:
''
}}
validationSchema
=
{
Yup
.
object
({
validationSchema
=
{
Yup
.
object
({
...
@@ -52,11 +52,8 @@ function Write() {
...
@@ -52,11 +52,8 @@ function Write() {
getFieldProps
,
// contain values, handleChange, handleBlur
getFieldProps
,
// contain values, handleChange, handleBlur
isSubmitting
,
isSubmitting
,
})
=>
(
})
=>
(
<
form
onSubmit
=
{
handleSubmit
}
className
=
"
asd
"
>
<
form
onSubmit
=
{
handleSubmit
}
className
=
"
d-flex flex-column
"
>
{
/* col-sm-3 */
}
<
div
className
=
"
form-group
"
>
<
div
className
=
"
form-group
"
>
{
/* mb-4 */
}
<
div
className
=
{
touched
.
name
&&
errors
.
name
?
"
text-danger
"
:
""
}
>
제목
<
/div
>
<
div
className
=
{
touched
.
name
&&
errors
.
name
?
"
text-danger
"
:
""
}
>
제목
<
/div
>
<
input
className
=
{(
touched
.
name
&&
errors
.
name
?
'
form-control is-invalid
'
:
"
form-control
"
)}
<
input
className
=
{(
touched
.
name
&&
errors
.
name
?
'
form-control is-invalid
'
:
"
form-control
"
)}
type
=
"
text
"
type
=
"
text
"
...
@@ -64,16 +61,13 @@ function Write() {
...
@@ -64,16 +61,13 @@ function Write() {
{...
getFieldProps
(
'
title
'
)}
{...
getFieldProps
(
'
title
'
)}
placeholder
=
"
제목
"
/>
placeholder
=
"
제목
"
/>
<
/div
>
<
/div
>
<
div
className
=
"
form-group
"
>
<
div
className
=
"
form-group
"
>
{
/* mb-4 */
}
<
div
className
=
{
touched
.
name
&&
errors
.
name
?
"
text-danger
"
:
""
}
>
내용
<
/div
>
<
div
className
=
{
touched
.
name
&&
errors
.
name
?
"
text-danger
"
:
""
}
>
내용
<
/div
>
<
input
className
=
{(
touched
.
name
&&
errors
.
name
?
'
form-control is-invalid
'
:
"
form-control
"
)}
<
Field
as
=
"
textarea
"
rows
=
{
8
}
style
=
{{
"
min-width
"
:
"
100%
"
}}
type
=
"
text
"
{...
getFieldProps
(
'
content
'
)}
/
>
content
=
"
content
"
{...
getFieldProps
(
'
content
'
)}
placeholder
=
"
내용
"
/>
<
/div
>
<
/div
>
<
b
utton
type
=
"
submit
"
className
=
"
btn btn-dark
"
disabled
=
{
isSubmitting
}
>
공지
등록
<
/
b
utton
>
<
B
utton
className
=
"
mb-2
"
variant
=
"
dark
"
type
=
"
submit
"
disabled
=
{
isSubmitting
}
>
공지
등록
<
/
B
utton
>
<
/form
>
<
/form
>
)}
)}
<
/Formik
>
<
/Formik
>
...
@@ -83,5 +77,5 @@ function Write() {
...
@@ -83,5 +77,5 @@ function Write() {
<
/div
>
<
/div
>
)
)
}
}
export
default
Write
export
default
Write
server/routes/reserves.js
View file @
4fa57e49
...
@@ -38,8 +38,8 @@ router.post('/', function (req, res, next) {
...
@@ -38,8 +38,8 @@ router.post('/', function (req, res, next) {
const
strt
=
new
Date
(
reserve
.
start
)
const
strt
=
new
Date
(
reserve
.
start
)
const
endt
=
new
Date
(
reserve
.
end
)
const
endt
=
new
Date
(
reserve
.
end
)
const
reserveArr
=
reserves
.
map
(
item
=>
(
const
reserveArr
=
reserves
.
map
(
item
=>
(
(
strt
>=
new
Date
(
item
.
start
)
&&
strt
<
=
new
Date
(
item
.
end
))
||
(
strt
>=
new
Date
(
item
.
start
)
&&
strt
<
new
Date
(
item
.
end
))
||
(
endt
>
=
new
Date
(
item
.
start
)
&&
endt
<=
new
Date
(
item
.
end
))
?
(
endt
>
new
Date
(
item
.
start
)
&&
endt
<=
new
Date
(
item
.
end
))
?
"
item
"
:
"
item
"
:
null
null
))
))
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment