Skip to content

Commit 3dedd5e

Browse files
authored
Merge pull request #187 from imaginer-dev/184-일정카드수정
feat: 일정 추가시 검증 추가
2 parents c2cc942 + dbd23ce commit 3dedd5e

File tree

4 files changed

+57
-51
lines changed

4 files changed

+57
-51
lines changed

src/components/MyCalendar/CreateEventButton.tsx

Lines changed: 52 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -46,29 +46,32 @@ const CreateEventDialog = ({ id, title, start_date, end_date }: eventProps) => {
4646
};
4747

4848
const onCreateClicked = () => {
49-
if (eventTitle !== '' && startDate !== '') {
50-
const newEvent: Events = {
51-
title: eventTitle,
52-
start: startDate,
53-
end: endDate === '' ? startDate : endDate,
54-
};
55-
if (id) {
56-
updatePersonalSchedule(id, newEvent)
57-
.then(() => {
58-
location.href = '/';
59-
})
60-
.catch((err) => {
61-
console.log(err);
62-
});
63-
} else {
64-
addPersonalSchedule(newEvent)
65-
.then(() => {
66-
location.href = '/';
67-
})
68-
.catch((err) => {
69-
console.log(err);
70-
});
71-
}
49+
if (eventTitle === '' || startDate === '' || startDate > endDate) {
50+
console.log('please check input value:', eventTitle, startDate, endDate);
51+
return;
52+
}
53+
54+
const newEvent: Events = {
55+
title: eventTitle,
56+
start: startDate,
57+
end: endDate === '' ? startDate : endDate,
58+
};
59+
if (id) {
60+
updatePersonalSchedule(id, newEvent)
61+
.then(() => {
62+
location.href = '/';
63+
})
64+
.catch((err) => {
65+
console.log(err);
66+
});
67+
} else {
68+
addPersonalSchedule(newEvent)
69+
.then(() => {
70+
location.href = '/';
71+
})
72+
.catch((err) => {
73+
console.log(err);
74+
});
7275
}
7376

7477
setTitle('');
@@ -88,9 +91,32 @@ const CreateEventDialog = ({ id, title, start_date, end_date }: eventProps) => {
8891
return (
8992
<div>
9093
<hr className="mt-1" />
91-
<InputRef title="일정 제목" placeholder="새 일정 제목" onChange={onTitleChanged} ref={titleRef} />
92-
<InputRef type="date" title="시작 날짜" placeholder="YYYY-MM-DD" onChange={onStartDateChanged} ref={startRef} />
93-
<InputRef type="date" title="끝 날짜" placeholder="YYYY-MM-DD" onChange={onEndDateChanged} ref={endRef} />
94+
<InputRef
95+
title="일정 제목"
96+
placeholder="새 일정 제목"
97+
onChange={onTitleChanged}
98+
ref={titleRef}
99+
error={eventTitle === ''}
100+
errorText="일정 제목을 입력해주세요."
101+
/>
102+
<InputRef
103+
type="date"
104+
title="시작 날짜"
105+
placeholder="YYYY-MM-DD"
106+
onChange={onStartDateChanged}
107+
ref={startRef}
108+
error={startDate === ''}
109+
errorText="시작 날짜를 입력해주세요."
110+
/>
111+
<InputRef
112+
type="date"
113+
title="끝 날짜"
114+
placeholder="YYYY-MM-DD"
115+
onChange={onEndDateChanged}
116+
ref={endRef}
117+
error={startDate > endDate}
118+
errorText="끝 날짜는 시작날짜보다 늦게 해주세요."
119+
/>
94120
<hr className="mb-2 mt-2" />
95121
<button className="btn w-full bg-primary text-base-100" onClick={onCreateClicked}>
96122
{id ? '수정하기' : '추가하기'}

src/components/common/Calendar.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ export default function Calendar({ db_events, onDeleteClicked }: CalendarProps)
3838

3939
const handleDateSelection = (dateClickInfo: { dateStr: string }) => {
4040
console.log(dateClickInfo);
41-
console.log(db_events);
4241
const clickedDateStr = dateClickInfo.dateStr;
4342
setSelectedDate(clickedDateStr);
4443
setSelectedEvents(

src/pages/MyCalendarPage.tsx

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,28 +3,23 @@ import Calendar from '../components/common/Calendar.tsx';
33
import CreateEventDialog from '@/components/MyCalendar/CreateEventButton.tsx';
44
import HamburgerButton from '@/components/common/SideBar/HamburgerButton.tsx';
55
import { deletePersonalSchedule, getPersonalSchedule } from '@/apis/personalScheduleApi';
6-
import { useEventState } from '@/stores/myEventsStore';
7-
import { useEffect, useRef } from 'react';
6+
import { useEffect, useRef, useState } from 'react';
87
import Dialog from '@/components/common/Dialog.tsx';
8+
import { DB_Events } from '@/utils/index.ts';
99

1010
interface DialogElement {
1111
openModal: () => void;
1212
closeModal: () => void;
1313
}
1414

1515
const MyCalendarPage: React.FC = () => {
16-
const { db_events, addDBEvents, initDBEvents } = useEventState();
17-
18-
console.log('db_events : ', db_events);
16+
const [db_events, setDBEvents] = useState<DB_Events[]>([]);
1917

2018
useEffect(() => {
2119
getPersonalSchedule().then((schedule) => {
22-
initDBEvents();
23-
schedule.map((x) => {
24-
addDBEvents({ ...x });
25-
});
20+
setDBEvents(schedule);
2621
});
27-
}, [addDBEvents, initDBEvents]);
22+
}, [db_events]);
2823

2924
const onDeleteClicked = (id: number) => {
3025
console.log('delete : ', id);

src/stores/myEventsStore.ts

Lines changed: 0 additions & 14 deletions
This file was deleted.

0 commit comments

Comments
 (0)