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
Today KU
Commits
914ed2b6
Commit
914ed2b6
authored
Nov 04, 2021
by
Choi Ga Young
Browse files
과목정보수정 및 context 정보 수정
parent
e8156733
Changes
7
Show whitespace changes
Inline
Side-by-side
client/src/apis/subject.api.js
View file @
914ed2b6
import
axios
from
"
axios
"
;
import
axios
from
"
axios
"
;
import
baseUrl
from
"
../utils/baseUrl.js
"
;
import
baseUrl
from
"
../utils/baseUrl.js
"
;
const
addsubject
=
async
(
info
)
=>
{
const
addsubject
=
async
(
info
,
userId
)
=>
{
console
.
log
(
'
info확인
'
,
info
)
console
.
log
(
'
subject check
'
,
userId
)
// info.user = userId;
const
url
=
`
${
baseUrl
}
/api/subject/addsubject`
;
const
url
=
`
${
baseUrl
}
/api/subject/addsubject`
;
const
{
data
,
status
}
=
await
axios
.
post
(
url
,
info
);
const
{
data
}
=
await
axios
.
post
(
url
,
{
info
,
userId
});
console
.
log
(
'
data status
'
,
data
,
'
|
'
,
status
)
return
data
return
{
data
,
status
}
}
const
editSubject
=
async
(
info
,
id
)
=>
{
console
.
log
(
"
editSubject check
"
,
info
,
'
,
'
,
id
)
const
url
=
`
${
baseUrl
}
/api/subject/editsubject`
const
{
data
}
=
await
axios
.
post
(
url
,
{
info
,
id
})
return
data
}
const
getSubInfo
=
async
(
info
)
=>
{
console
.
log
(
'
info
'
,
info
)
const
url
=
`
${
baseUrl
}
/api/subject/
${
info
}
`
const
{
data
}
=
await
axios
.
get
(
url
);
return
data
}
}
const
subjectApi
=
{
const
subjectApi
=
{
addsubject
addsubject
,
getSubInfo
,
editSubject
};
};
export
default
subjectApi
export
default
subjectApi
\ No newline at end of file
client/src/components/Card/StudyPlanCard.js
View file @
914ed2b6
...
@@ -3,12 +3,7 @@ import { Link } from "react-router-dom";
...
@@ -3,12 +3,7 @@ import { Link } from "react-router-dom";
import
styles
from
"
../Form/form.module.scss
"
;
import
styles
from
"
../Form/form.module.scss
"
;
const
StudyPlanCard
=
()
=>
{
const
StudyPlanCard
=
()
=>
{
const
[
studyplan
,
setStudyplan
]
=
useState
({
// studyPlanList에서 props로 받아서 뿌리기
subject
:
""
,
info
:
""
,
contents
:
[]
})
return
(
return
(
<>
<>
<
div
className
=
"
d-flex justify-content-center mt-3
"
>
<
div
className
=
"
d-flex justify-content-center mt-3
"
>
...
@@ -18,7 +13,7 @@ const StudyPlanCard = () => {
...
@@ -18,7 +13,7 @@ const StudyPlanCard = () => {
<
div
className
=
"
d-flex justify-content-between
"
>
<
div
className
=
"
d-flex justify-content-between
"
>
<
h5
className
=
"
card-title col-10
"
>
운영체제
<
/h5
>
<
h5
className
=
"
card-title col-10
"
>
운영체제
<
/h5
>
<
div
className
=
"
col-2 d-flex justify-content-end
"
>
<
div
className
=
"
col-2 d-flex justify-content-end
"
>
<
Link
className
=
"
text-decoration-none link-dark
"
to
=
"
/subject/edit
"
><
i
className
=
"
bi bi-pencil-square pe-2
"
><
/i></
Link
>
<
Link
className
=
"
text-decoration-none link-dark
"
to
=
"
/subject/edit
/ed56bebd-b9ae-4065-aae2-d39aeac5f18e
"
><
i
className
=
"
bi bi-pencil-square pe-2
"
><
/i></
Link
>
<
i
className
=
"
bi bi-trash
"
><
/i
>
<
i
className
=
"
bi bi-trash
"
><
/i
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
...
...
client/src/components/Form/SubjectForm.js
View file @
914ed2b6
import
{
useState
,
useEffect
}
from
'
react
'
;
import
{
useState
,
useEffect
}
from
'
react
'
;
import
{
Redirect
,
useParams
}
from
'
react-router-dom
'
;
import
{
useAuth
}
from
'
../../utils/context.js
'
;
import
BtnGroup
from
"
../Buttons/BtnGroup
"
;
import
BtnGroup
from
"
../Buttons/BtnGroup
"
;
import
styles
from
"
./form.module.scss
"
;
import
styles
from
"
./form.module.scss
"
;
import
{
useParams
}
from
'
react-router-dom
'
;
import
subjectApi
from
'
../../apis/subject.api
'
;
import
subjectApi
from
'
../../apis/subject.api
'
;
import
catchErrors
from
'
../../utils/catchErrors.js
'
;
import
catchErrors
from
'
../../utils/catchErrors.js
'
;
const
SubjectForm
=
()
=>
{
const
SubjectForm
=
()
=>
{
const
{
user
}
=
useAuth
();
const
{
subjectId
}
=
useParams
();
const
{
subjectId
}
=
useParams
();
const
[
success
,
setSuccess
]
=
useState
(
false
)
const
[
error
,
setError
]
=
useState
(
""
);
const
[
error
,
setError
]
=
useState
(
""
);
const
[
subject
,
setSubject
]
=
useState
({
const
[
subject
,
setSubject
]
=
useState
({
lectureName
:
""
,
lectureName
:
""
,
...
@@ -15,6 +18,11 @@ const SubjectForm = () => {
...
@@ -15,6 +18,11 @@ const SubjectForm = () => {
})
})
const
[
disabled
,
setDisabled
]
=
useState
(
true
)
const
[
disabled
,
setDisabled
]
=
useState
(
true
)
useEffect
(()
=>
{
getInfo
(
subjectId
);
},
[])
useEffect
(()
=>
{
useEffect
(()
=>
{
let
isMounted
=
true
;
let
isMounted
=
true
;
const
checkInfo
=
{
lectureName
:
subject
.
lectureName
}
const
checkInfo
=
{
lectureName
:
subject
.
lectureName
}
...
@@ -34,36 +42,60 @@ const SubjectForm = () => {
...
@@ -34,36 +42,60 @@ const SubjectForm = () => {
}
}
async
function
getInfo
(
id
)
{
const
result
=
await
subjectApi
.
getSubInfo
(
id
)
console
.
log
(
'
과목수정 result확인
'
,
result
)
setSubject
({
lectureName
:
result
.
name
,
prof
:
result
.
prof
,
classRoom
:
result
.
room
})
}
async
function
handleSubmit
(
e
)
{
async
function
handleSubmit
(
e
)
{
e
.
preventDefault
();
e
.
preventDefault
();
try
{
try
{
setError
(
""
)
if
(
subjectId
)
{
if
(
subjectId
)
{
//수정함수 실행
//수정함수 실행
await
subjectApi
.
editSubject
(
subject
,
subjectId
)
alert
(
"
과목정보가 수정되었습니다.
"
)
setSuccess
(
true
)
}
else
{
}
else
{
await
subjectApi
.
addsubject
(
subject
)
//등록함수 실행
await
subjectApi
.
addsubject
(
subject
,
user
.
id
)
}
}
}
catch
(
error
)
{
}
catch
(
error
)
{
catchErrors
(
error
,
setError
)
catchErrors
(
error
,
setError
)
setSubject
({
lectureName
:
""
,
prof
:
""
,
classRoom
:
""
})
}
}
}
}
if
(
success
)
{
return
<
Redirect
to
=
"
/studyplan
"
/>
}
return
(
return
(
<>
<>
<
div
className
=
"
position-absolute top-50 start-50 translate-middle
"
style
=
{{
width
:
"
80%
"
}}
>
<
div
className
=
"
position-absolute top-50 start-50 translate-middle
"
style
=
{{
width
:
"
80%
"
}}
>
<
div
>
<
div
>
<
div
className
=
"
mb-5 d-flex flex-row
"
>
<
div
className
=
"
mb-5 d-flex flex-row
"
>
<
label
className
=
"
form-label fs-4
"
style
=
{{
width
:
"
100px
"
}}
>
강의명
<
/label
>
<
label
className
=
"
form-label fs-4
"
style
=
{{
width
:
"
100px
"
}}
>
강의명
<
/label
>
<
input
className
=
{
`form-control shadow-none rounded-0
${
styles
.
textInput
}
`
}
name
=
"
lectureName
"
onChange
=
{
handleChange
}
/
>
<
input
className
=
{
`form-control shadow-none rounded-0
${
styles
.
textInput
}
`
}
value
=
{
subject
.
lectureName
}
name
=
"
lectureName
"
onChange
=
{
handleChange
}
/
>
<
/div
>
<
/div
>
<
div
className
=
"
mb-5 pt-2 d-flex flex-row
"
>
<
div
className
=
"
mb-5 pt-2 d-flex flex-row
"
>
<
label
className
=
"
form-label fs-4
"
style
=
{{
width
:
"
100px
"
}}
>
교수명
<
/label
>
<
label
className
=
"
form-label fs-4
"
style
=
{{
width
:
"
100px
"
}}
>
교수명
<
/label
>
<
input
className
=
{
`form-control shadow-none rounded-0
${
styles
.
textInput
}
`
}
name
=
"
prof
"
onChange
=
{
handleChange
}
/
>
<
input
className
=
{
`form-control shadow-none rounded-0
${
styles
.
textInput
}
`
}
value
=
{
subject
.
prof
}
name
=
"
prof
"
onChange
=
{
handleChange
}
/
>
<
/div
>
<
/div
>
<
div
className
=
"
mb-5 pt-2 d-flex flex-row
"
>
<
div
className
=
"
mb-5 pt-2 d-flex flex-row
"
>
<
label
className
=
"
form-label fs-4
"
style
=
{{
width
:
"
100px
"
,
letterSpacing
:
"
15px
"
}}
>
장소
<
/label
>
<
label
className
=
"
form-label fs-4
"
style
=
{{
width
:
"
100px
"
,
letterSpacing
:
"
15px
"
}}
>
장소
<
/label
>
<
input
className
=
{
`form-control shadow-none rounded-0
${
styles
.
textInput
}
`
}
name
=
"
classRoom
"
onChange
=
{
handleChange
}
/
>
<
input
className
=
{
`form-control shadow-none rounded-0
${
styles
.
textInput
}
`
}
value
=
{
subject
.
classRoom
}
name
=
"
classRoom
"
onChange
=
{
handleChange
}
/
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
div
className
=
"
pt-2
"
>
<
div
className
=
"
pt-2
"
>
...
...
client/src/utils/context.js
View file @
914ed2b6
...
@@ -28,7 +28,7 @@ const AuthProvider = ({ children }) => {
...
@@ -28,7 +28,7 @@ const AuthProvider = ({ children }) => {
try
{
try
{
setError
(
""
);
setError
(
""
);
const
user
=
await
authApi
.
login
(
data
);
const
user
=
await
authApi
.
login
(
data
);
console
.
log
(
'
user in context
'
,
user
)
localStorage
.
setItem
(
"
login
"
,
true
)
setUser
(
user
);
setUser
(
user
);
console
.
log
(
'
setUser 결과
'
,
user
)
console
.
log
(
'
setUser 결과
'
,
user
)
return
true
;
return
true
;
...
@@ -42,6 +42,7 @@ const AuthProvider = ({ children }) => {
...
@@ -42,6 +42,7 @@ const AuthProvider = ({ children }) => {
try
{
try
{
setError
(
""
);
setError
(
""
);
const
user
=
await
authApi
.
logout
();
const
user
=
await
authApi
.
logout
();
localStorage
.
removeItem
(
"
login
"
)
setUser
(
user
);
setUser
(
user
);
alert
(
"
로그아웃 되었습니다.
"
);
alert
(
"
로그아웃 되었습니다.
"
);
}
catch
(
error
)
{
}
catch
(
error
)
{
...
...
server/controllers/subject.controller.js
View file @
914ed2b6
...
@@ -2,28 +2,67 @@ import { Subject } from '../db/index.js';
...
@@ -2,28 +2,67 @@ import { Subject } from '../db/index.js';
const
addsubject
=
async
(
req
,
res
)
=>
{
const
addsubject
=
async
(
req
,
res
)
=>
{
console
.
log
(
'
server/addsubject req.body
'
,
req
.
body
)
console
.
log
(
'
server/addsubject req.body
'
,
req
.
body
)
const
{
lectureName
,
prof
,
classRoom
}
=
req
.
body
;
try
{
try
{
const
findName
=
await
Subject
.
findOne
({
where
:
{
name
:
lectureName
}
});
const
{
info
,
userId
}
=
req
.
body
;
const
findName
=
await
Subject
.
findOne
({
where
:
{
name
:
info
.
lectureName
}
});
if
(
findName
)
{
if
(
findName
)
{
throw
new
Error
(
"
이미 있는 과목입니다.
"
)
throw
new
Error
(
"
이미 있는 과목입니다.
"
)
}
}
await
Subject
.
create
({
await
Subject
.
create
({
name
:
lectureName
,
name
:
info
.
lectureName
,
prof
:
prof
,
prof
:
info
.
prof
,
room
:
classRoom
,
room
:
info
.
classRoom
,
userId
:
userId
})
})
}
catch
(
error
)
{
}
catch
(
error
)
{
console
.
log
(
error
)
console
.
log
(
error
)
return
res
.
status
(
500
).
send
(
error
.
message
||
"
과목저장 에러발생
"
)
return
res
.
status
(
500
).
send
(
error
.
message
||
"
과목저장 에러발생
"
)
}
}
}
const
getSubInfo
=
async
(
req
,
res
)
=>
{
console
.
log
(
'
server/getSubInfo req.body
'
,
req
.
params
)
try
{
const
{
subjectId
}
=
req
.
params
;
const
findSubInfo
=
await
Subject
.
findOne
({
where
:
{
id
:
subjectId
}
})
if
(
findSubInfo
)
{
res
.
json
({
name
:
findSubInfo
.
dataValues
.
name
,
prof
:
findSubInfo
.
dataValues
.
prof
,
room
:
findSubInfo
.
dataValues
.
room
})
}
else
{
throw
new
Error
(
"
과목 찾기 실패
"
)
}
}
catch
(
error
)
{
console
.
log
(
error
)
return
res
.
status
(
500
).
send
(
error
.
message
||
"
과목정보 가져오기 에러발생
"
)
}
}
const
editSubject
=
async
(
req
,
res
)
=>
{
console
.
log
(
'
server/editSubject req.body
'
,
req
.
body
)
try
{
const
{
info
,
id
}
=
req
.
body
;
const
result
=
await
Subject
.
update
({
name
:
info
.
lectureName
,
prof
:
info
.
prof
,
room
:
info
.
classRoom
,
},
{
where
:
{
id
:
id
}
})
if
(
!
result
)
{
throw
new
Error
(
"
과목정보 수정 에러발생
"
)
}
else
{
res
.
send
(
200
)
}
}
catch
(
error
)
{
console
.
log
(
error
)
return
res
.
status
(
500
).
send
(
error
.
message
||
"
과목정보 수정 에러발생
"
)
}
}
}
export
default
{
export
default
{
addsubject
addsubject
,
getSubInfo
,
editSubject
}
}
\ No newline at end of file
server/controllers/user.controller.js
View file @
914ed2b6
...
@@ -53,7 +53,7 @@ const login = async (req, res) => {
...
@@ -53,7 +53,7 @@ const login = async (req, res) => {
if
(
passwordMatch
)
{
if
(
passwordMatch
)
{
const
signData
=
{
const
signData
=
{
id
:
user
.
userID
,
id
:
user
.
id
,
role
:
"
user
"
,
role
:
"
user
"
,
name
:
user
.
userName
,
name
:
user
.
userName
,
};
};
...
...
server/routes/subject.route.js
View file @
914ed2b6
...
@@ -7,4 +7,13 @@ router
...
@@ -7,4 +7,13 @@ router
.
route
(
"
/addsubject
"
)
.
route
(
"
/addsubject
"
)
.
post
(
subjectCtrl
.
addsubject
)
.
post
(
subjectCtrl
.
addsubject
)
router
.
route
(
"
/:subjectId
"
)
.
get
(
subjectCtrl
.
getSubInfo
)
router
.
route
(
"
/editsubject
"
)
.
post
(
subjectCtrl
.
editSubject
)
export
default
router
;
export
default
router
;
\ No newline at end of file
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