Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
W
WebFront
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
websystem
WebFront
Commits
6349e1e5
Commit
6349e1e5
authored
6 months ago
by
석찬 윤
Browse files
Options
Downloads
Patches
Plain Diff
feat: 선택취소 기능 개발 및 안내 메세지 수정(
#8
)
parent
b1d88b24
No related branches found
No related tags found
1 merge request
!6
[#8] 스케줄 페이지 개발
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
src/pages/SchedulePage.jsx
+69
-52
69 additions, 52 deletions
src/pages/SchedulePage.jsx
with
69 additions
and
52 deletions
src/pages/SchedulePage.jsx
+
69
−
52
View file @
6349e1e5
...
@@ -66,6 +66,19 @@ const SchedulePage = () => {
...
@@ -66,6 +66,19 @@ const SchedulePage = () => {
const
handleSlotClick
=
async
(
timeIdx
)
=>
{
const
handleSlotClick
=
async
(
timeIdx
)
=>
{
if
(
!
isEditMode
)
return
;
if
(
!
isEditMode
)
return
;
// API 호출 준비가 되었을 때 사용:
// try {
// const response = await fetchScheduleByTimeIndex(timeIdx);
// if (response && response.data && response.data.schedule) {
// setSelectedSchedule(response.data.schedule); // API로 가져온 스케줄 설정
// } else {
// console.error("No schedule found for time index:", timeIdx);
// }
// } catch (error) {
// console.error("Failed to fetch schedule for time index:", timeIdx, error);
// }
//임시 코드
const
slotInSchedule
=
schedules
.
find
((
s
)
=>
const
slotInSchedule
=
schedules
.
find
((
s
)
=>
s
.
time_indices
.
includes
(
timeIdx
)
s
.
time_indices
.
includes
(
timeIdx
)
);
);
...
@@ -82,18 +95,13 @@ const SchedulePage = () => {
...
@@ -82,18 +95,13 @@ const SchedulePage = () => {
}
else
{
}
else
{
setSelectedSlots
((
prev
)
=>
[...
prev
,
timeIdx
]);
setSelectedSlots
((
prev
)
=>
[...
prev
,
timeIdx
]);
}
}
};
// API 호출 준비가 되었을 때 사용:
const
handleCancelSchedule
=
()
=>
{
// try {
setSelectedSlots
([]);
// const response = await fetchScheduleByTimeIndex(timeIdx);
setNewTitle
(
""
);
// if (response && response.data && response.data.schedule) {
setIsFixed
(
true
);
// setSelectedSchedule(response.data.schedule); // API로 가져온 스케줄 설정
setSelectedSchedule
(
null
);
// } else {
// console.error("No schedule found for time index:", timeIdx);
// }
// } catch (error) {
// console.error("Failed to fetch schedule for time index:", timeIdx, error);
// }
};
};
const
handleEditSchedule
=
()
=>
{
const
handleEditSchedule
=
()
=>
{
...
@@ -130,10 +138,10 @@ const SchedulePage = () => {
...
@@ -130,10 +138,10 @@ const SchedulePage = () => {
setSelectedSlots
([]);
setSelectedSlots
([]);
setNewTitle
(
""
);
setNewTitle
(
""
);
setIsFixed
(
true
);
setIsFixed
(
true
);
alert
(
"
Schedule update successfully
!
"
);
alert
(
"
스케줄을 수정했습니다.
!
"
);
}
catch
(
error
)
{
}
catch
(
error
)
{
console
.
error
(
"
Failed to update schedule
:
"
,
error
);
console
.
error
(
"
스케줄 수정에 실패했습니다.
:
"
,
error
);
alert
(
"
Failed to update schedule
.
"
);
alert
(
"
스케줄 수정에 실패했습니다
.
"
);
}
finally
{
}
finally
{
setIsUpdateMode
(
false
);
setIsUpdateMode
(
false
);
}
}
...
@@ -162,10 +170,10 @@ const SchedulePage = () => {
...
@@ -162,10 +170,10 @@ const SchedulePage = () => {
setSelectedSlots
([]);
setSelectedSlots
([]);
setNewTitle
(
""
);
setNewTitle
(
""
);
setIsFixed
(
true
);
setIsFixed
(
true
);
alert
(
"
Schedule created successfully
!
"
);
alert
(
"
스케줄이 추가되었습니다
!
"
);
}
catch
(
error
)
{
}
catch
(
error
)
{
console
.
error
(
"
Failed to create schedule
:
"
,
error
);
console
.
error
(
"
스케줄 삭제에 실패했습니다
:
"
,
error
);
alert
(
"
Failed to create schedule
.
"
);
alert
(
"
스케줄 추가에 실패했습니다
.
"
);
}
}
};
};
...
@@ -185,10 +193,11 @@ const SchedulePage = () => {
...
@@ -185,10 +193,11 @@ const SchedulePage = () => {
setSchedules
((
prev
)
=>
setSchedules
((
prev
)
=>
prev
.
filter
((
s
)
=>
s
.
title
!==
selectedSchedule
.
title
)
prev
.
filter
((
s
)
=>
s
.
title
!==
selectedSchedule
.
title
)
);
);
setSelectedSchedule
(
null
);
setSelectedSchedule
(
null
);
alert
(
"
Schedule deleted successfully!
"
);
alert
(
"
스케줄이 삭제되었습니다.
"
);
}
catch
(
error
)
{
}
catch
(
error
)
{
console
.
error
(
"
Failed to delete schedule
:
"
,
error
);
console
.
error
(
"
스케줄 삭제에 실패했습니다
:
"
,
error
);
}
}
};
};
...
@@ -225,49 +234,49 @@ const SchedulePage = () => {
...
@@ -225,49 +234,49 @@ const SchedulePage = () => {
className
=
{
`transform transition-transform w-full max-w-[768px] tablet:rounded-2xl bg-primary-100 p-6 text-center shadow-lg`
}
className
=
{
`transform transition-transform w-full max-w-[768px] tablet:rounded-2xl bg-primary-100 p-6 text-center shadow-lg`
}
>
>
{
selectedSlots
.
length
===
0
&&
selectedSchedule
?
(
{
selectedSlots
.
length
===
0
&&
selectedSchedule
?
(
<>
<
div
className
=
"flex flex-col items-center justify-center w-full"
>
<
h3
className
=
"mb-2 heading-2 text-primary-500"
>
<
h3
className
=
"mb-2 heading-2 text-primary-500"
>
스케줄 정보
</
h3
>
Schedule Details
<
div
className
=
"flex flex-col items-start w-1/2"
>
</
h3
>
<
p
className
=
"mb-1 body-1"
>
<
p
className
=
"mb-1 body-1"
>
<
strong
>
Title
:
</
strong
>
{
selectedSchedule
.
title
}
<
strong
>
제목
:
</
strong
>
{
selectedSchedule
.
title
}
</
p
>
</
p
>
<
p
className
=
"mb-1 body-1"
>
<
p
className
=
"mb-1 body-1"
>
<
strong
>
Fixed
:
</
strong
>
{
"
"
}
<
strong
>
스케줄 타입
:
</
strong
>
{
"
"
}
{
selectedSchedule
.
is_fixed
?
"
고정
"
:
"
유동
"
}
{
selectedSchedule
.
is_fixed
?
"
고정
"
:
"
유동
"
}
</
p
>
</
p
>
<
div
className
=
"mb-4 body-1"
>
<
div
className
=
"mb-4 body-1"
>
<
span
>
Time Indices:
</
span
>
<
strong
>
선택된 시간:
</
strong
>
{
"
"
}
{
selectedSchedule
.
time_indices
.
map
((
time_idx
)
=>
(
{
selectedSchedule
.
time_indices
.
map
((
time_idx
)
=>
(
<
Label
key
=
{
time_idx
}
theme
=
"indigo"
size
=
"sm"
>
<
Label
key
=
{
time_idx
}
theme
=
"indigo"
size
=
"sm"
>
{
time_idx
}
{
time_idx
}
</
Label
>
</
Label
>
))
}
))
}
</
div
>
</
div
>
</
div
>
<
div
className
=
"flex justify-center mt-4 space-x-4"
>
<
div
className
=
"flex justify-center mt-4 space-x-4"
>
<
button
<
button
className
=
"px-4 py-2 font-bold text-white rounded bg-gradient-purple"
className
=
"px-4 py-2 font-bold text-white rounded bg-gradient-purple"
onClick
=
{
handleEditSchedule
}
onClick
=
{
handleEditSchedule
}
>
>
Edit
수정하기
</
button
>
</
button
>
<
button
<
button
className
=
"px-4 py-2 font-bold text-white rounded bg-gradient-pink"
className
=
"px-4 py-2 font-bold text-white rounded bg-gradient-pink"
onClick
=
{
handleDeleteSchedule
}
onClick
=
{
handleDeleteSchedule
}
>
>
Delete
삭제하기
</
button
>
</
button
>
</
div
>
</
div
>
</>
</
div
>
)
:
(
)
:
(
<>
<>
{
isUpdateMode
?
(
{
isUpdateMode
?
(
<
h3
className
=
"mb-4 heading-2 text-primary-500"
>
<
h3
className
=
"mb-4 heading-2 text-primary-500"
>
Update Schedule
스케줄 수정하기
</
h3
>
</
h3
>
)
:
(
)
:
(
<
h3
className
=
"mb-4 heading-2 text-primary-500"
>
<
h3
className
=
"mb-4 heading-2 text-primary-500"
>
Create New Schedule
새 스케줄 만들기
</
h3
>
</
h3
>
)
}
)
}
<
input
<
input
...
@@ -286,7 +295,7 @@ const SchedulePage = () => {
...
@@ -286,7 +295,7 @@ const SchedulePage = () => {
checked
=
{
isFixed
===
true
}
checked
=
{
isFixed
===
true
}
onChange
=
{
()
=>
setIsFixed
(
true
)
}
onChange
=
{
()
=>
setIsFixed
(
true
)
}
/>
/>
<
span
className
=
"body-1"
>
고정
</
span
>
<
span
className
=
"body-1"
>
고정
스케줄
</
span
>
</
label
>
</
label
>
<
label
className
=
"flex items-center space-x-2"
>
<
label
className
=
"flex items-center space-x-2"
>
<
input
<
input
...
@@ -296,11 +305,11 @@ const SchedulePage = () => {
...
@@ -296,11 +305,11 @@ const SchedulePage = () => {
checked
=
{
isFixed
===
false
}
checked
=
{
isFixed
===
false
}
onChange
=
{
()
=>
setIsFixed
(
false
)
}
onChange
=
{
()
=>
setIsFixed
(
false
)
}
/>
/>
<
span
className
=
"body-1"
>
유동
</
span
>
<
span
className
=
"body-1"
>
유동
스케줄
</
span
>
</
label
>
</
label
>
</
div
>
</
div
>
<
div
className
=
"mb-4 body-1"
>
<
div
className
=
"mb-4 body-1"
>
<
span
>
Selected Slots
:
</
span
>
<
span
>
선택된 시간
:
</
span
>
{
selectedSlots
.
map
((
time_idx
)
=>
(
{
selectedSlots
.
map
((
time_idx
)
=>
(
<
Label
key
=
{
time_idx
}
theme
=
"indigo"
size
=
"sm"
>
<
Label
key
=
{
time_idx
}
theme
=
"indigo"
size
=
"sm"
>
{
time_idx
}
{
time_idx
}
...
@@ -312,15 +321,23 @@ const SchedulePage = () => {
...
@@ -312,15 +321,23 @@ const SchedulePage = () => {
className
=
"px-4 py-2 font-bold text-white rounded bg-gradient-pink"
className
=
"px-4 py-2 font-bold text-white rounded bg-gradient-pink"
onClick
=
{
()
=>
handleUpdateSchedule
()
}
onClick
=
{
()
=>
handleUpdateSchedule
()
}
>
>
Update Schedule
수정 완료
</
button
>
</
button
>
)
:
(
)
:
(
<
div
className
=
"flex justify-center mt-4 space-x-4"
>
<
button
className
=
"px-4 py-2 font-bold text-white rounded bg-tertiary-900"
onClick
=
{
()
=>
handleCancelSchedule
()
}
>
취소
</
button
>
<
button
<
button
className
=
"px-4 py-2 font-bold text-white rounded bg-gradient-pink"
className
=
"px-4 py-2 font-bold text-white rounded bg-gradient-pink"
onClick
=
{
()
=>
handleCreateSchedule
()
}
onClick
=
{
()
=>
handleCreateSchedule
()
}
>
>
Add Schedule
추가
</
button
>
</
button
>
</
div
>
)
}
)
}
</>
</>
)
}
)
}
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment