# 5/31 화 [team-31][FE] Muffin & Park 1주차 금요일 PR 안녕하세요 Hamill ! 파크 & 머핀 입니다. 이번 PR 에서는 `캘린더`,`요금`,`인원` 관련 컴포넌트를 작성하여 넣어 사용할 수 있는 레이아웃을 짜보았고, 캘린더, 요금 차트관련 코드를 작성중입니다! 현재 캘린더는 `파크` 가, 요금관련 차트는 `머핀` 이 분업하여 구현중에 있습니다. 리뷰 잘부탁드립니다! ## 데모페이지 [링크](https://6295c63d222490108bdc37db--puffinbnb.netlify.app/) ## 추가된 내용 - 일정, 요금, 인원 클릭시 사용할 Layout 제작 ### 차트 모듈 - 레인지 슬라이더 Material UI Component 사용 - 피그마 시안대로 슬라이더 적용 - min, max 초기값만 셋팅 (min, max는 getPriceMinMax함수에서 리턴받아 setPrice함수로 state 설정) - min, max가 교차 되지 않도록 설정 (disableSwap 속성) - 차트의 x축은 최저 ~ 최고, y축은 각 금액 범위의 숙소의 개수를 나타내므로 전달받은 숙소 데이터에서 10만원을 기준으로 범위마다 숙소를 몇개 사용할 수 있을지 객체형태로 데이터를 뽑음 |key(가격 범위)|value(숙소 개수)| |---|---| |100000|4| |200000|10| |300000|1| |400000|1| |500000|1| |600000|1| - 부드러운 차트를 그리기 위해 quadraticCurveTo(startX, startY, endX, endY)함수 사용 예정 ### 캘린더 모듈 - NPM 패키지로 올릴 가능성을 생각하여 `jsx` 로 먼저 구현하였고, 별도로 폴더구조를 크게 신경쓰지 않았습니다. (Calendar 폴더 자체를 빼버릴 가능성을 생각) - 위와 같은 이유로 mui 를 사용하지 않고 emotion 만을 활용해서 만들었고, 컴포넌트의경로 또한 상대경로로 사용중입니다. - carousel(?) 형태로 구현 (arrow button 으로 무한이동) - 사용자의 빠르고 연속적인 클릭을 방지하기 위한 `useThrottle` hooks 작성하여 사용 - throttle 사용 시 ![throttle](https://user-images.githubusercontent.com/58503584/171121551-16e3f325-5a7f-41f6-86df-c3f44b2e9679.gif) - throttle 사용 안할시 ![no-throttle](https://user-images.githubusercontent.com/58503584/171121490-d60f37be-025f-4576-b67b-311fd334e849.gif) - 해당 월 에 맞는 날짜데이터 넣기 (Date 객체 계산 활용) - 현재 특정 요일을 클릭하면 year, month, date 값을 받아올 수 있도록 설정 - 향후 useCalendar 같은 형태로 해당 값을 받아 `체크인/체크아웃` 에서 활용할 수 있도록 할 예정입니다.