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

[FE] 2.1.0 배포 #624

Merged
merged 3 commits into from
Nov 18, 2023
Merged

[FE] 2.1.0 배포 #624

merged 3 commits into from
Nov 18, 2023

Conversation

semnil5202
Copy link
Collaborator

작업 대상

  • 지도 컴포넌트와 그에 관련된 커스텀 훅
  • 모아보기, 단일 토픽 조회 페이지

📄 작업 내용

  • 지도 클러스터링 및 스크린 사이즈 렌더링 적용으로 렌더링 최적화 관련 기능을 도입한다.
  • 지도 줌, 드래그 이벤트 핸들링을 추가한다.
  • 지도 회전, 기울이기를 한 시점에서 허용한다. 이후 줌, 드래그 이벤트가 발생하면 최초의 모습으로 자동 조정한다. (pitch(기울기):0, bearing(회전): 0)

* fix: Flex 컴포넌트를 상속받는 로컬 스타일드 컴포넌트 타입 오류 해결

Flex를 상속받은 로컬 스타일드 컴포넌트에 특정 제네릭 prop을 추가하면 Box 컴포넌트까지 타입 검사가 내려간다.
이로 인해 Box 컴포넌트에 Flex 컴포넌트 인터페이스를 찾는 타입 오류가 생겨 이 문제를 Flex와 Box간 상속관계를 끊음으로 해결한다.

* refactor: map 인스턴스 전역상태 분리로 각종 hook 리팩토링

* refactor: 지도 타입 추가

* chore: eslint 설정 변경

* refactor: map type 추가

* refactor: mapInstance interface 명 수정

* refactor: 핀 svg 사이즈 일괄 60px로 지정

* refactor: 클러스터 적용으로 인한 map 인터렉션 로직 수정

* fix: drag 디바운스 적용 및 pin 정보 가져오는 로직 오류 수정

* refactor: pinSize 상수화 및 일부 파일 개행 수정

* fix: off 함수 타입 추가 및 클러스터링 중복 요청 오류 해결

* refactor: screen size 에 해당하는 marker만 그리는 로직 이동

* refactor: event 타입 변경 및 sidebar 전역 상태 제거

zoom 일 경우에만 실제 서버에 클러스터 핀 갱신 요청을 보내고 dragEnd 상태에서는 보내지 않도록 한다.
sidebarMarkers 는 잠시 사용을 보류한다.

* refactor: map 및 markers 의존성 제거

* design: 클러스터된 핀 디자인 변경

* fix: map 드래그 경우 클로저 문제로 인한 핀 갱신 오류 수정

* refactor: 최고 줌인 상태에서 클러스터 핀 상태일 때 infoWindow에 모두 표시하도록 변경

* refactor: 불필요한 import 제거

* refactor: mock 데이터에서 실제 서버 요청으로 변경

* refactor: UI 변경사항 대응
* refactor: 불필요한 인자 제거

* refactor: getDistanceOfPin 훅으로 분리

* refactor: InfoWindow 타입 추가

* refactor: 모아보기 상태에서 클러스터링 및 이벤트 핸들링 적용

* refactor: 사용자에게 노출되는 단어 중 도메인 용어인 토픽을 지도로 변환

* refactor: 혼잡한 dom 구조 및 잘못된 indent 수정

* refactor: 한 토픽에 해당하는 핀이 클러스터링 되었을 땐 무지개색 적용 하지 않기

* refactor: 스크린 사이즈 내 좌표가 아닌 초기 좌표로 모아보기 색 구별하도록 변경

* refactor: 모아보기가 비어있을 때 초기화 하는 로직 함수 분리

* refactor: type 정의 위치 수정
모바일에서 줌인 줌아웃시 지도가 돌아가는 불편함이 있었으며 클러스터링 안정화를 위해 위와 같이 작업한다.
@semnil5202 semnil5202 added FE 프론트엔드 관련 이슈 우선순위 : 상 feat 새로운 기능 개발 labels Nov 17, 2023
@semnil5202 semnil5202 self-assigned this Nov 17, 2023
Copy link
Collaborator

@jiwonh423 jiwonh423 left a comment

Choose a reason for hiding this comment

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

zustand 덕분에 map 인스턴스를 객체로 안넘겨줘도 되서 좋아진것 같네여! 덕분에 클러스터링까지 잘 작동되겠네여 👍 👍

@@ -14,9 +17,34 @@ interface FlexProps extends BoxProps {
$justifyItems?: string;
flex?: string;
$gap?: string;

Copy link
Collaborator

Choose a reason for hiding this comment

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

Box 컴포넌트를 다 밀고 여기로 옮겨졌네요?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

네넹 그 Flex 인터페이스 타입 못 읽는 에러 때문에 옮겼습니다.

return addedMarkerTypeCoordinates;
};

const createElementsInScreenSize = (elementType: ElementType) => {
Copy link
Collaborator

Choose a reason for hiding this comment

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

👍

let markerType = -1;
let currentTopicId = '-1';
const createMarkers = () => {
const coordinatesInScreenSize = createElementsInScreenSize('marker');
Copy link
Collaborator

Choose a reason for hiding this comment

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

마커 색상 바뀌는 로직까지 분리되서 훨씬 좋네요

pinColors[markerType + 1]
};" >${coordinate.pinName}</div>`,
offset: new Tmapv3.Point(0, -60),
content: getInfoWindowTemplate({
Copy link
Collaborator

Choose a reason for hiding this comment

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

html이었을때보다 훨씬 깔끔해졌네여

Copy link
Collaborator

Choose a reason for hiding this comment

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

프로그래밍 언어?

@@ -0,0 +1,26 @@
import { PIN_SIZE } from '../constants';

const useRealDistanceOfPin = () => {
Copy link
Collaborator

Choose a reason for hiding this comment

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

클러스터링에 사용되는 부분 훅으로 분리해서 좋네요

}
};

const adjustMapDirection = () => {
Copy link
Collaborator

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.

맵 회전하거나 기울이고 난 뒤에 다시 지도 조작하면 초기값으로 초기화해주는 역할입니다.

지도가 돌아가고 원래대로 다시 맞추는게 귀찮다는 분들이 많았습니다. 또한 클러스터링이 불안정해지는 이슈도 있어서 위와같이 수정했습니다.

pinName: clusterOrPin.pins[0].name,
latitude: clusterOrPin.latitude,
longitude: clusterOrPin.longitude,
pins: clusterOrPin.pins,
});
});

setCoordinates(newCoordinates);
Copy link
Collaborator

Choose a reason for hiding this comment

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

클러스터링에도 cordinates context가 쓰이다니 기쁘네여

@semnil5202 semnil5202 merged commit afd2280 into main Nov 18, 2023
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
FE 프론트엔드 관련 이슈 feat 새로운 기능 개발 우선순위 : 상
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants