Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Team - 06][BE] 에어비앤비 프로젝트 1주차 1회차 PR #40

Merged
merged 11 commits into from
May 25, 2022

Conversation

leejohy-0223
Copy link
Collaborator

@leejohy-0223 leejohy-0223 commented May 25, 2022

안녕하세요 Dion! Shine & Lucid 입니다!
1주차 1회차 PR 리뷰 요청드립니다.

주요 구현 사항

  • 논리적 모델링
    image

  • 물리적 모델링
    image

  • 엔티티 생성 및 연관관계 형성


질문 사항

Shine

1.위치 검색에 대한 질문

사용자의 위치(위도, 경도)를 중심으로 +- 1km 정도의 좌표에 해당하는 House들만 조회 해오려 하는데,
이런식으로 접근하는 것이 맞을까요?... 지도 탐색이 처음이라 애당초 어떻게 접근해야 할지 감이 조금 안옵니다.
애당초 위도, 경도로 접근하는게 맞을지....

2. User의 검색 조건을 누가 유지할 것 인가?

우선 User는 다음과 같은 흐름으로 방을 검색해 나간다.

위치 -> 날짜 -> 가격 -> 인원수 -(필터링)-> 검색조건

위 과정마다에서 축적된 검색 조검을 누가 유지하고 있어야 할까요?

만약 가격까지 조건을 지정하다가 다른곳으로 잠시 이동하면
그동안 누적된 위치, 날짜, 가격 조건을 누가 저장하고 있어야 하는가? 에 대한 의문이 들었습니다.

일단 사용자의 Session을 만들어 저장시켜 두면 될것같은데?... 리뷰어님의 의견이 궁금합니다.

3. 검색 조건 SearchConditionDto는 어디까지?

검색 조건을 담고 있는 SearchCondition은 과연 어디까지 인자로 넘겨줘야 할까요?
일단은 controller 에 SearchConditionDto 로 전달하고, service, repository 에서는 메서드에 SearchConditionDto 을 전부 인자로 전달하도록 할려 하는데, 이게 맞는지 궁금합니다.

@Service
public class HouseService {

    private final HouseRepository houseRepository;

    public HouseService(HouseRepository houseRepository) {
        this.houseRepository = houseRepository;
    }

    public Page<House> findByCondition(Position position, Integer minFee, Integer maxFee, Pageable pageable) {
        return houseRepository.searchByCondition(position, minFee, maxFee, pageable);
    }

    // 생략...
}

위와 같은 코드가 더 적합할지, 아니면

@Service
public class HouseService {

    private final HouseRepository houseRepository;

    public HouseService(HouseRepository houseRepository) {
        this.houseRepository = houseRepository;
    }

    public Page<House> findByCondition(SearchConditionDto condition, Pageable pageable) {
        return houseRepository.searchByCondition(condition, pageable);
    }

    // 생략...
}

위와 같은 접근이 더 적합할지... dto의 데이터를 꺼내는 시점에 다른 글마다 다르기도 하고...

확실한것은 repository 에는 dto를 전달하면 안될것 같아서 최소 service에서는 값을 꺼내 전달해야 될것 같은데...

리뷰어님의 의견을 듣고 싶습니다.


Lucid

  • 도메인 하나하나가 작은 수준이라 각각 패키지로 두기가 애매해서 기존 방식처럼 Domain, Controller, Service, Repository 패키지에서 모든 도메인 관련 객체를 한꺼번에 관리하는 방식으로 우선 코드를 작성하였습니다. 현 구현 규모에서는 크게 문제가 없을 것으로 생각되는데, 반드시 구분해야 할 필요가 있을까요?

@leejohy-0223 leejohy-0223 added the review-BE Improvements or additions to documentation label May 25, 2022
Copy link

@ksundong ksundong left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

안녕하세요~ Shine & Lucid!! 리뷰어 dion입니다~
오랜만에 리뷰를 또 하려니 새로운 느낌이네요~
1주차 첫번쨰인데도 많은 부분 진행해주신 부분이 눈에 띄었습니다.

다만, 동작하는 범위 내에서 PR을 올려주시면 좋을 것 같아요.
리뷰용 브랜치를 별도로 따서 리뷰 내용에 대한 반영을 하는 방식으로 작업해보시면 좋을 것 같습니다. (현업에서도 많이 사용하는 방식입니다.)

답변

  1. 공간데이터는 아마 지금까지 다뤄왔던 데이터들과 다른 방식으로 사용해야할 수 있습니다. 공간상에서 위도 경도를 가지고 거리를 알 수 있을까요? 알 수 있다면 반경 안의 데이터도 조회해올 수 있는 방법이 있지는 않을까요? 알 수 없다면 다른 방식을 강구해봐야 하지 않을까요?
  2. 검색조건을 어디에 저장할 것인가는 여러가지를 고려해봐야 합니다. 예를들면, 다른 기기에서도 검색조건이 유지가 되어야 하나요? 그렇다면 세션등을 이용하는 것이 더 맞겠죠. 한 기기에서만 유지되면 된다라면 클라이언트 측에서 저장을 해두는 것이 낫겠죠.
  3. 스스로 더 생각해볼 시간이 필요한 것 같습니다. 직접 개발해보시고, 어떤것이 좋은지 느껴보시면 될 것 같네요.
  4. 현재 패키지 구조를 유지했을 때, 미래에도 현재 구조가 유지될 수 있을지 예측해보시는 것도 좋을 것 같아요.

고생하셨습니다. PR 리뷰 확인하시고 궁금하신 부분은 코멘트 남겨주세요.
앞으로도 화이팅입니다~

@@ -0,0 +1,18 @@
---

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

항상 리뷰 올리실 떄, 이 파일이 리뷰 대상인지 체크를 하는 습관을 들여주세요~

Comment on lines +3 to +4
public class HouseListResponse {
}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이 클래스는 껍데기만 존재하는 이유가 있을까요?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

엔티티 대신 DTO를 반환하기 위해 미리 만들어뒀는데, 제출이 시급해서 미완성인 상태로 놔둔 것 같습니다.😭 앞으로 완성된 상태의 커밋만 공유드리도록 하겠습니다.

import java.util.List;

@RestController
@RequestMapping("/api/search")

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

search 라는 동사가 들어가야 하는 이유는 무엇이었나요?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

api 명에 신경을 덜 쓴 것 같습니다. 찾아보니 명사형으로 작성하되, 예외적으로 필요할 경우에만 동사형을 사용하라고 학습하였습니다. 집들을 의미하는 houses로 변경하도록 하겠습니다!

Comment on lines +16 to +17
@Autowired
private HouseService houseService;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

왜 field injection을 사용해주셨나요?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

생성자 주입으로 변경하도록 하겠습니다!

private HouseService houseService;

@GetMapping("")
public List<HouseListResponse> findHouse(@RequestBody SearchConditionRequest request, Pageable pageable) {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

해당 요청을 어떻게 받을 것인지에 대한 테스트는 이루어 졌나요?

Comment on lines +30 to +31
@OneToMany(mappedBy = "house")
private List<WishList> wishLists = new ArrayList<>();

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이 매핑이 정말 필요한가요?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

사실 상 단방향 매핑만 필요한데, 역방향 참고를 고려하여 편의상 양방향으로 관리하도록 하였습니다!

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

역방향 참고가 발생할 일이 있나요~~?

import java.util.List;

public interface HouseRepository extends JpaRepository<House, Long> {
List<House> findByCondition(SearchConditionRequest request, Pageable pageable);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이렇게 해도 동작이 되나요?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

pseudo code 용으로 작성해두었습니다. 구현할 때 변경하도록 하겠습니다!

properties:
hibernate:
format_sql: true
database-platform: org.hibernate.dialect.MySQL8Dialect

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

직접 정의해주신 이유가 있나요?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

향후 공간 정보 기반 쿼리를 작성할 수 있는 MySQL56InnoDBSpatialDialect를 사용하기 위해 정의하였습니다!


// then
House foundedHouse = houseRepository.findById(save.getId()).get();
assertThat(foundedHouse.getName()).isEqualTo("house1");

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

해당 내용만 검증하면 되는 코드가 맞나요?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

최초에 H2 database 연동 확인 용으로 작성하였습니다! 검증 내용은 보충하도록 하겠습니다!😭

@@ -0,0 +1,39 @@
plugins {
id 'org.springframework.boot' version '2.7.0'

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

가급적이면 마이너 버전 0번대 사용은 추천드리지 않습니다.

@ksundong ksundong merged commit b25c4b9 into codesquad-members-2022:team-06 May 25, 2022
junzero741 pushed a commit that referenced this pull request May 30, 2022
* Refactor: PR 리뷰를 바탕으로 코드 수정
- 모달창 경로 수정
- styled-components와 mui 구분
- 그 외는 리뷰 참고

Co-authored-by: herrakam <herrakam@users.noreply.github.com>

* [FE] result페이지 UI 구현 (#33)

* Design: 기존 스타일 수정
- 라우터에 따른 스타일 변경 추가

Co-authored-by: herrakam <herrakam@users.noreply.github.com>

* Design: Result 페이지 UI 구현

Co-authored-by: herrakam <herrakam@users.noreply.github.com>

* Rename: Hotel.tsx 파일 경로 이동

* Design: result 페이지의 숙소 리스트 컴포넌트와 일부 컴포넌트의 스타일 변경

* Design: Hotel 컴포넌트와 관련된 스켈레톤 UI 생성

* Refactoer: 서치바 리팩토링
- 각 컴포넌트를 공통된 스타일 컴포넌트로 변경
- 일부 태그 변경
- hover 이펙트 추가

Co-authored-by: herrakam <herrakam@users.noreply.github.com>

* Chore: dependencies 관련 수정 (#40)

- devDependencies에 설치된 스타일 라이브러리를 dependencies로 재설치함

Co-authored-by: jm <jm.dev.study@gmail.com>
Co-authored-by: herrakam <herrakam@users.noreply.github.com>
Co-authored-by: 도비 <85747667+JiminKim-dev@users.noreply.github.com>
choisohyun pushed a commit that referenced this pull request May 31, 2022
* Feature/3 (#26)

* rename: gnb 폴더 생성하여 관련 컴포넌트 이동
   - styled -> customStyled 로 변경 적용
* refactor: gnb 컴포넌트 css 수정
* feat: main banner UI 구현
* refactor: gnb 컴포넌트 hover 및 cursor pointer 적용

* Feature/2 (#27)

* chore: mui 버전 통일

* feat: 글로벌 스타일 추가

* feat: SearchBar 컴포넌트 style 작성 및 이벤트 추가

* Feature/alias (#28)

* chore: alias 경로 설정을 위한 react-app-rewired 설치 및 설정파일 생성
* refactor: 절대경로 반영 (index, app, gnb, main-banner)
* fix: search input width 고정

* Feature/4 (#29)

* feat: calender page component 구현
* feat: 달력 월~일요일 부분 컴포넌트 구현
* feat: 해당 연-월에 맞는 날짜 영역 컴포넌트 구현
* feat: 이전, 다음 버튼 컴포넌트 및 클릭 기능 구현
* feat: calender 컴포넌트 구현
   - 보여줄 달력 개수를 정하는 page 옵션
   - curData 기반으로 page 만큼의 달력 렌더링
* chore: 브라우저 확인용 App 에 calender 반영
* feat: calender 관련 상태 context 사용하여 분리 및 provider 컴포넌트 생성
   - 불필요한 주석 제거
* refactor: 컴포넌트 이름 변경, DatesOfMonth 에서 DateBox 컴포넌트 분리
* feat: DateBox 컴포넌트 구현
   - 클릭 시 checkIn, checkOut 상태 변경
   - checkIn, checkOut 날짜에 따라 동적 css 적용
* chore: 오타 수정, app.js 에 provider 적용

* feat: header 컴포넌트 생성
- gnb, search-bar, calender를 header 하위 컴포넌트로 수정

* Feature/30 (#32)

* refactor: 캘린더 체크인/체크아웃 모드와 date box 체크 위치 상태를 나타내는 문자열을 상수화
* refactor: 컴포넌트 별 데이터 가공 유틸 함수를 컴포넌트 밖으로 분리
* refactor: Date box 내부에 있던 날짜 비교용 checkInTime, checkOutTime 을 콘텍스트 provider 로 이동
   - checkInDate, checkOutDate 변수명 변경 -> checkInInfo, checkOutInfo
   - checkIn, checkOut, current 변수명 변경 -> checkInTime, checkOutTime, currentTime

* refactor: 캘린더 month 빈배열 생성 시 0 -> Null 로 변경

* Feature/31 (#33)

* refactor: 코드 리뷰 반영
- visibility 속성 display로 변경
- bool 타입 결과값 함수 중복 검사 제거
- SearchMenu 컴포넌트 div 태그로 변경

* feat & refactor: SearchBar 컴포넌트 컨텍스트 추가
- props로 내려주던 상태 context로 관리 하도록 함

* feat : 검색바 반응형 컴포넌트로 수정

* refactor: isFocus를 상태 관리에서 제외
- currentInput의 상태를 통해 얻을 수 있도록 함

* feat&refactor: Header 컴포넌트 반응형으로 수정
- GNB, MainBanner, SearchBar 모두 적용

* feat: 체크인, 체크아웃 인풋 영역 클릭 시 캘린더 모달 팝업 기능 추가

* feat: Header 컴포넌트 fixed 속성 추가

* feat: 모달창 클릭시 검색바 blur가 적용되지 않게 함

* Feature/34 (#36)

* feat: 체크인-체크아웃 사이 날짜 1일과 마지막일 전후 음영 반영
   - DatesOfMonth 컴포넌트 last date 월이 안맞는 오류 수정
     : getDate() 는 현재달 인덱스에 date 0을 주면 이전달 마지막날 반환
* feat: 현재 날짜 이전 날짜 선택 불가 및 회색 표시

* feat: 검색바 체크인, 체크아웃 날짜 출력 기능 추가 (#38)

* feat: 검색바 체크인, 체크아웃 날짜 출력 기능 추가
- 캘린더에서 선택한 날짜를 출력하도록 함

* Feature/20 (#40)

* refactor: ResetButton 동적으로 추가하도록 수정
- input요소의 value 유무에 따라 추가, 삭제

* feat: ResetButton 클릭 이벤트 추가
- 버튼 클릭시 input value 초기화
- 검색바가 포커스되어 있을 때만 버튼이 노출되도록 수정

* feat: 검색바 캘린더 체크인 체크아웃 상태 연동 (#41)

* fix: 포커스 이벤트 에러 수정
- ResetButton 포커스 시에만 노출되도록 수정
- 검색바 포커스 시 세로로 늘어나는 오류 수정

* fix: 캘린더 날짜 선택 오류 수정
- 체크아웃을 먼저 선택 후 체크인 선택 시 체크아웃보다 뒷날이어도 선택되는 오류 수정
- DateBox 컴포넌트 내 handle click 로직 수정

* feat: 캘린더 모달 선택 시 보여지는 달 업데이트
- 체크인 날짜 있는 경우 체크인 달로 시작
- 없는 경우 현재 달로 시작

* fix: 캘린더 토요일과 날짜 정렬

Co-authored-by: bangdler <90082464+bangdler@users.noreply.github.com>
Co-authored-by: bangdler <zbthz90@gmail.com>
choisohyun pushed a commit that referenced this pull request Jun 3, 2022
* Feature/3 (#26)

* rename: gnb 폴더 생성하여 관련 컴포넌트 이동
   - styled -> customStyled 로 변경 적용
* refactor: gnb 컴포넌트 css 수정
* feat: main banner UI 구현
* refactor: gnb 컴포넌트 hover 및 cursor pointer 적용

* Feature/2 (#27)

* chore: mui 버전 통일

* feat: 글로벌 스타일 추가

* feat: SearchBar 컴포넌트 style 작성 및 이벤트 추가

* Feature/alias (#28)

* chore: alias 경로 설정을 위한 react-app-rewired 설치 및 설정파일 생성
* refactor: 절대경로 반영 (index, app, gnb, main-banner)
* fix: search input width 고정

* Feature/4 (#29)

* feat: calender page component 구현
* feat: 달력 월~일요일 부분 컴포넌트 구현
* feat: 해당 연-월에 맞는 날짜 영역 컴포넌트 구현
* feat: 이전, 다음 버튼 컴포넌트 및 클릭 기능 구현
* feat: calender 컴포넌트 구현
   - 보여줄 달력 개수를 정하는 page 옵션
   - curData 기반으로 page 만큼의 달력 렌더링
* chore: 브라우저 확인용 App 에 calender 반영
* feat: calender 관련 상태 context 사용하여 분리 및 provider 컴포넌트 생성
   - 불필요한 주석 제거
* refactor: 컴포넌트 이름 변경, DatesOfMonth 에서 DateBox 컴포넌트 분리
* feat: DateBox 컴포넌트 구현
   - 클릭 시 checkIn, checkOut 상태 변경
   - checkIn, checkOut 날짜에 따라 동적 css 적용
* chore: 오타 수정, app.js 에 provider 적용

* feat: header 컴포넌트 생성
- gnb, search-bar, calender를 header 하위 컴포넌트로 수정

* Feature/30 (#32)

* refactor: 캘린더 체크인/체크아웃 모드와 date box 체크 위치 상태를 나타내는 문자열을 상수화
* refactor: 컴포넌트 별 데이터 가공 유틸 함수를 컴포넌트 밖으로 분리
* refactor: Date box 내부에 있던 날짜 비교용 checkInTime, checkOutTime 을 콘텍스트 provider 로 이동
   - checkInDate, checkOutDate 변수명 변경 -> checkInInfo, checkOutInfo
   - checkIn, checkOut, current 변수명 변경 -> checkInTime, checkOutTime, currentTime

* refactor: 캘린더 month 빈배열 생성 시 0 -> Null 로 변경

* Feature/31 (#33)

* refactor: 코드 리뷰 반영
- visibility 속성 display로 변경
- bool 타입 결과값 함수 중복 검사 제거
- SearchMenu 컴포넌트 div 태그로 변경

* feat & refactor: SearchBar 컴포넌트 컨텍스트 추가
- props로 내려주던 상태 context로 관리 하도록 함

* feat : 검색바 반응형 컴포넌트로 수정

* refactor: isFocus를 상태 관리에서 제외
- currentInput의 상태를 통해 얻을 수 있도록 함

* feat&refactor: Header 컴포넌트 반응형으로 수정
- GNB, MainBanner, SearchBar 모두 적용

* feat: 체크인, 체크아웃 인풋 영역 클릭 시 캘린더 모달 팝업 기능 추가

* feat: Header 컴포넌트 fixed 속성 추가

* feat: 모달창 클릭시 검색바 blur가 적용되지 않게 함

* Feature/34 (#36)

* feat: 체크인-체크아웃 사이 날짜 1일과 마지막일 전후 음영 반영
   - DatesOfMonth 컴포넌트 last date 월이 안맞는 오류 수정
     : getDate() 는 현재달 인덱스에 date 0을 주면 이전달 마지막날 반환
* feat: 현재 날짜 이전 날짜 선택 불가 및 회색 표시

* feat: 검색바 체크인, 체크아웃 날짜 출력 기능 추가 (#38)

* feat: 검색바 체크인, 체크아웃 날짜 출력 기능 추가
- 캘린더에서 선택한 날짜를 출력하도록 함

* Feature/20 (#40)

* refactor: ResetButton 동적으로 추가하도록 수정
- input요소의 value 유무에 따라 추가, 삭제

* feat: ResetButton 클릭 이벤트 추가
- 버튼 클릭시 input value 초기화
- 검색바가 포커스되어 있을 때만 버튼이 노출되도록 수정

* feat: 검색바 캘린더 체크인 체크아웃 상태 연동 (#41)

* fix: 포커스 이벤트 에러 수정
- ResetButton 포커스 시에만 노출되도록 수정
- 검색바 포커스 시 세로로 늘어나는 오류 수정

* fix: 캘린더 날짜 선택 오류 수정
- 체크아웃을 먼저 선택 후 체크인 선택 시 체크아웃보다 뒷날이어도 선택되는 오류 수정
- DateBox 컴포넌트 내 handle click 로직 수정

* feat: 캘린더 모달 선택 시 보여지는 달 업데이트
- 체크인 날짜 있는 경우 체크인 달로 시작
- 없는 경우 현재 달로 시작

* fix: 캘린더 토요일과 날짜 정렬

* Feature/15 (#42)

* refactor: 모달 배경 관련 스타일 별도 컴포넌트로 분리

* rename: custom-styled-component 폴더 utils 하위로 이동
- Header.js => Header.jsx 로 변경

* rename : calender 폴더 modal 하위 폴더로 이동
- 절대 경로 설정 및 적용

* refactor: ModalContainer 스타일 theme 사용 하도록 수정

* feat: Personnel 모달 컴포넌트 추가

* Feature/7 (#43)

* rename: context 폴더 분리
- provider 모두 context 폴더 하위로 이동

* feat: 인원 설정 모달 컨트롤러 버튼 컴포넌트 분리

* feat: 검색바 인원 상태 관리를 위한 관련 상수 추가

* feat: 검색바 인원 설정 모달 인원 추가, 인원 삭제 기능 추가

* feat: 검색바에 선택된 인원 출력 기능 추가 (#44)

* feat: 검색바에 선택된 인원 출력 기능 추가

* Feature/11 (#45)

* feat: 성인 없이 어린이, 유아 인원 추가 방지 기능 추가

* fix: 성인 인원을 줄일 수 없는 상황에 버튼 비활성화 색상 스타일 적용

* refactor: ResetButton 컴포넌트 onClick 핸들러 props로 받도록 수정

* feat: 인원 설정 초기화 기능 추가

* refactor&style: 중복코드 삭제, 줄띄움

* fix: 검색바 초기화 버튼 유무따라 크기가 변경되는 부분 수정
- 검색 버튼 아이콘 컬러 변경

* fix: 검색바 사이즈 줄면 초기화 버튼이 검색 버튼에 가리는 오류 수정

* Feature/46 (#47)

* refactor: 중복 코드 함수화, StyledExpandBackground 분기문
   - info 를 받아 time 으로 바꿔주는 함수
   - 체크인-체크아웃 사이에 있고, 1일이거나 마지막날일 경우에만 StyledExpandBackround 컴포넌트 생성

* feat: calender provider 에 prev date, next date 추가
   - 불필요한 useEffect 코드 제거

* feat: calender 컴포넌트에서 page 생성 부분을 calender carousel 컴포넌트로 이동
   - calender position 상태 생성

* chore: calender page width 수정(336 -> 350px)

* feat: 이전, 다음달 이동 버튼 로직 수정
   - curDate 를 직접 바꾸는 방식에서 calender position 만 바꿔주는 방식
   - calender position 에 따라 carousel에서 translateX 후 curDate 변경

* feat: Calender Carousel 컴포넌트 구현
   - prevDate, curDate, nextDate 기준으로 각각 Calender page wrapper 로 묶음
   - calender display 영역 내에서 moveArea 를 이동

* fix: 검색바 모달 관련 인풋창 아래에 나타나도록 위치 수정

Co-authored-by: bangdler <90082464+bangdler@users.noreply.github.com>
Co-authored-by: bangdler <zbthz90@gmail.com>
GangWoon pushed a commit that referenced this pull request Jun 5, 2022
[iOS] 검색 결과 리스트에서 선택한 지역이 하나가 될 때까지 다시 선택할 수 있음.
sabgilhun pushed a commit that referenced this pull request Jun 6, 2022
[Android] [Linus] 로그인 화면 Webview로 구현 완료
hanchang97 added a commit that referenced this pull request Jun 8, 2022
가격 차트 화면, 방 상세 정보 화면
wooody92 pushed a commit that referenced this pull request Jun 9, 2022
…fo_search

feat: [40] 숙소 예약 내역 상세 조회
choisohyun pushed a commit that referenced this pull request Jun 12, 2022
* Feature/3 (#26)

* rename: gnb 폴더 생성하여 관련 컴포넌트 이동
   - styled -> customStyled 로 변경 적용
* refactor: gnb 컴포넌트 css 수정
* feat: main banner UI 구현
* refactor: gnb 컴포넌트 hover 및 cursor pointer 적용

* Feature/2 (#27)

* chore: mui 버전 통일

* feat: 글로벌 스타일 추가

* feat: SearchBar 컴포넌트 style 작성 및 이벤트 추가

* Feature/alias (#28)

* chore: alias 경로 설정을 위한 react-app-rewired 설치 및 설정파일 생성
* refactor: 절대경로 반영 (index, app, gnb, main-banner)
* fix: search input width 고정

* Feature/4 (#29)

* feat: calender page component 구현
* feat: 달력 월~일요일 부분 컴포넌트 구현
* feat: 해당 연-월에 맞는 날짜 영역 컴포넌트 구현
* feat: 이전, 다음 버튼 컴포넌트 및 클릭 기능 구현
* feat: calender 컴포넌트 구현
   - 보여줄 달력 개수를 정하는 page 옵션
   - curData 기반으로 page 만큼의 달력 렌더링
* chore: 브라우저 확인용 App 에 calender 반영
* feat: calender 관련 상태 context 사용하여 분리 및 provider 컴포넌트 생성
   - 불필요한 주석 제거
* refactor: 컴포넌트 이름 변경, DatesOfMonth 에서 DateBox 컴포넌트 분리
* feat: DateBox 컴포넌트 구현
   - 클릭 시 checkIn, checkOut 상태 변경
   - checkIn, checkOut 날짜에 따라 동적 css 적용
* chore: 오타 수정, app.js 에 provider 적용

* feat: header 컴포넌트 생성
- gnb, search-bar, calender를 header 하위 컴포넌트로 수정

* Feature/30 (#32)

* refactor: 캘린더 체크인/체크아웃 모드와 date box 체크 위치 상태를 나타내는 문자열을 상수화
* refactor: 컴포넌트 별 데이터 가공 유틸 함수를 컴포넌트 밖으로 분리
* refactor: Date box 내부에 있던 날짜 비교용 checkInTime, checkOutTime 을 콘텍스트 provider 로 이동
   - checkInDate, checkOutDate 변수명 변경 -> checkInInfo, checkOutInfo
   - checkIn, checkOut, current 변수명 변경 -> checkInTime, checkOutTime, currentTime

* refactor: 캘린더 month 빈배열 생성 시 0 -> Null 로 변경

* Feature/31 (#33)

* refactor: 코드 리뷰 반영
- visibility 속성 display로 변경
- bool 타입 결과값 함수 중복 검사 제거
- SearchMenu 컴포넌트 div 태그로 변경

* feat & refactor: SearchBar 컴포넌트 컨텍스트 추가
- props로 내려주던 상태 context로 관리 하도록 함

* feat : 검색바 반응형 컴포넌트로 수정

* refactor: isFocus를 상태 관리에서 제외
- currentInput의 상태를 통해 얻을 수 있도록 함

* feat&refactor: Header 컴포넌트 반응형으로 수정
- GNB, MainBanner, SearchBar 모두 적용

* feat: 체크인, 체크아웃 인풋 영역 클릭 시 캘린더 모달 팝업 기능 추가

* feat: Header 컴포넌트 fixed 속성 추가

* feat: 모달창 클릭시 검색바 blur가 적용되지 않게 함

* Feature/34 (#36)

* feat: 체크인-체크아웃 사이 날짜 1일과 마지막일 전후 음영 반영
   - DatesOfMonth 컴포넌트 last date 월이 안맞는 오류 수정
     : getDate() 는 현재달 인덱스에 date 0을 주면 이전달 마지막날 반환
* feat: 현재 날짜 이전 날짜 선택 불가 및 회색 표시

* feat: 검색바 체크인, 체크아웃 날짜 출력 기능 추가 (#38)

* feat: 검색바 체크인, 체크아웃 날짜 출력 기능 추가
- 캘린더에서 선택한 날짜를 출력하도록 함

* Feature/20 (#40)

* refactor: ResetButton 동적으로 추가하도록 수정
- input요소의 value 유무에 따라 추가, 삭제

* feat: ResetButton 클릭 이벤트 추가
- 버튼 클릭시 input value 초기화
- 검색바가 포커스되어 있을 때만 버튼이 노출되도록 수정

* feat: 검색바 캘린더 체크인 체크아웃 상태 연동 (#41)

* fix: 포커스 이벤트 에러 수정
- ResetButton 포커스 시에만 노출되도록 수정
- 검색바 포커스 시 세로로 늘어나는 오류 수정

* fix: 캘린더 날짜 선택 오류 수정
- 체크아웃을 먼저 선택 후 체크인 선택 시 체크아웃보다 뒷날이어도 선택되는 오류 수정
- DateBox 컴포넌트 내 handle click 로직 수정

* feat: 캘린더 모달 선택 시 보여지는 달 업데이트
- 체크인 날짜 있는 경우 체크인 달로 시작
- 없는 경우 현재 달로 시작

* fix: 캘린더 토요일과 날짜 정렬

* Feature/15 (#42)

* refactor: 모달 배경 관련 스타일 별도 컴포넌트로 분리

* rename: custom-styled-component 폴더 utils 하위로 이동
- Header.js => Header.jsx 로 변경

* rename : calender 폴더 modal 하위 폴더로 이동
- 절대 경로 설정 및 적용

* refactor: ModalContainer 스타일 theme 사용 하도록 수정

* feat: Personnel 모달 컴포넌트 추가

* Feature/7 (#43)

* rename: context 폴더 분리
- provider 모두 context 폴더 하위로 이동

* feat: 인원 설정 모달 컨트롤러 버튼 컴포넌트 분리

* feat: 검색바 인원 상태 관리를 위한 관련 상수 추가

* feat: 검색바 인원 설정 모달 인원 추가, 인원 삭제 기능 추가

* feat: 검색바에 선택된 인원 출력 기능 추가 (#44)

* feat: 검색바에 선택된 인원 출력 기능 추가

* Feature/11 (#45)

* feat: 성인 없이 어린이, 유아 인원 추가 방지 기능 추가

* fix: 성인 인원을 줄일 수 없는 상황에 버튼 비활성화 색상 스타일 적용

* refactor: ResetButton 컴포넌트 onClick 핸들러 props로 받도록 수정

* feat: 인원 설정 초기화 기능 추가

* refactor&style: 중복코드 삭제, 줄띄움

* fix: 검색바 초기화 버튼 유무따라 크기가 변경되는 부분 수정
- 검색 버튼 아이콘 컬러 변경

* fix: 검색바 사이즈 줄면 초기화 버튼이 검색 버튼에 가리는 오류 수정

* Feature/46 (#47)

* refactor: 중복 코드 함수화, StyledExpandBackground 분기문
   - info 를 받아 time 으로 바꿔주는 함수
   - 체크인-체크아웃 사이에 있고, 1일이거나 마지막날일 경우에만 StyledExpandBackround 컴포넌트 생성

* feat: calender provider 에 prev date, next date 추가
   - 불필요한 useEffect 코드 제거

* feat: calender 컴포넌트에서 page 생성 부분을 calender carousel 컴포넌트로 이동
   - calender position 상태 생성

* chore: calender page width 수정(336 -> 350px)

* feat: 이전, 다음달 이동 버튼 로직 수정
   - curDate 를 직접 바꾸는 방식에서 calender position 만 바꿔주는 방식
   - calender position 에 따라 carousel에서 translateX 후 curDate 변경

* feat: Calender Carousel 컴포넌트 구현
   - prevDate, curDate, nextDate 기준으로 각각 Calender page wrapper 로 묶음
   - calender display 영역 내에서 moveArea 를 이동

* fix: 검색바 모달 관련 인풋창 아래에 나타나도록 위치 수정

* Feature/15 1 (#49)

* feat: Price 컴포넌트 생성
- Title 컴포넌트 재사용을 위해 분리

* refactor: 검색바 블러 이벤트 대신 dim레이어 클릭 시 모달이 사라지도록 수정
- e.preventDefault 때문에 range input의 thumb가 움직이지 않아 수정

* feat: 요금 설정 모달 요금별 데이터 그래프 추가
- 임시 데이터 추가

* feat: 요금 범위 설정 슬라이더 추가

* chore: chart.js 설정 추가

* fix: MainBanner 이미지 연결 오류 수정

* feat: 요금 모달 세부 텍스트 출력

* feat: 검색바에 요금 상태 출력
- 초기화 버튼 이벤트 핸들러 추가

* fix: merge 후 모달창이 관련 인풋창 아래에 위치하지 않는 오류 수정

* refactor: 인원 모달 컨트롤 버튼 하나의 컴포넌트로 합침
- type으로 add, remove 구분하도록 props 추가

* refactor: calender Prev Button, Next Button 을 통합한 Calender Button 구현 (#50)

Co-authored-by: moon-yerim <75062526+moonyerim2@users.noreply.github.com>

* refactor: 모달창 클릭 시 닫히지 않도록 하는 기능 수정
- dim레이어 삭제
- Node.contains를 사용한 방법으로 수정

Co-authored-by: bangdler <90082464+bangdler@users.noreply.github.com>
Co-authored-by: bangdler <zbthz90@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
review-BE Improvements or additions to documentation
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants