Skip to content

Commit d0b88df

Browse files
committed
refac: change variable name more readable
1 parent 8279c41 commit d0b88df

File tree

3 files changed

+99
-86
lines changed

3 files changed

+99
-86
lines changed

components/events/Timetable.tsx

Lines changed: 31 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,10 @@ import {
1414
} from "@lib/hooks/useMouseAndTouch";
1515
import useResizeEvent from "@lib/hooks/useResizeEvent";
1616
import useUrlEventId from "@lib/hooks/useUrlEventId";
17-
import { generateSelectedArea, getTableIndex } from "@lib/tableHelper";
17+
import {
18+
generateSelectedArea,
19+
getColumnIndexAtTimetable,
20+
} from "@lib/tableHelper";
1821
import updateCurrentAttendee from "@lib/updateCurrentAttendee";
1922
import { FC, useCallback, useRef, useState } from "react";
2023

@@ -43,7 +46,7 @@ interface TimeProps {
4346
h: number;
4447
}
4548

46-
const initialSelectedArea = { x: 0, y: 0, w: 0, h: 0 };
49+
const initialArea = { x: 0, y: 0, w: 0, h: 0 };
4750

4851
const END_TIME = 24;
4952
const START_TIME = 8;
@@ -68,52 +71,51 @@ const Timetable: FC<ComponentProps> = ({
6871
const isUserReady = useDelay(500, currentAttendee);
6972
const id = useUrlEventId();
7073
const containerRef = useRef<HTMLDivElement>(null);
71-
const currentSelectedAreaRef = useRef<TimeProps>(initialSelectedArea);
72-
const initialTableAreaRef = useRef<TimeProps>(initialSelectedArea);
73-
const { startClientX, startClientY, setInit } = useMouseAndTouchStartLocation(
74-
{
74+
const currentSelectedAreaRef = useRef<TimeProps>(initialArea);
75+
const timetableAreaRef = useRef<TimeProps>(initialArea);
76+
const { startClientX, startClientY, initializeMouseAndTouchStart } =
77+
useMouseAndTouchStartLocation({
7578
ref: containerRef,
7679
skipEvent: !isUserReady,
77-
}
78-
);
80+
});
7981
const hasNotStartMove = startClientX === 0 && startClientY === 0;
80-
const currentTableIndex = useRef(0);
81-
const { moveClientY, setInitMove } = useMouseAndTouchMoveLocation({
82-
skipEvent: hasNotStartMove,
83-
});
82+
const columnIndexOfSelectedAreaRef = useRef(0);
83+
const { moveClientY, initializeMouseAndTouchMove } =
84+
useMouseAndTouchMoveLocation({
85+
skipEvent: hasNotStartMove,
86+
});
8487

85-
const [initialTableArea, setInitialTableArea] = useState(initialSelectedArea);
86-
const currentWidth = (initialTableArea.w - 1 * 6) / 7;
88+
const [timetableArea, setTimetableArea] = useState(initialArea);
8789

88-
currentTableIndex.current = getTableIndex(
89-
initialTableArea.w / 7,
90+
columnIndexOfSelectedAreaRef.current = getColumnIndexAtTimetable(
91+
timetableArea.w / 7,
9092
startClientX
9193
);
9294

9395
currentSelectedAreaRef.current = generateSelectedArea(
9496
hasNotStartMove,
9597
moveClientY,
9698
startClientY,
97-
initialTableArea,
98-
startClientX,
99-
currentWidth
99+
timetableArea,
100+
startClientX
100101
);
102+
101103
const resizeTimeTableHandler = () => {
102104
if (containerRef.current) {
103105
const { x, y, width, height } =
104106
containerRef.current.getBoundingClientRect();
105-
setInitialTableArea({ x, y, w: width, h: height });
106-
initialTableAreaRef.current = { x, y, w: width, h: height };
107+
setTimetableArea({ x, y, w: width, h: height });
108+
timetableAreaRef.current = { x, y, w: width, h: height };
107109
}
108110
};
109111

110112
useResizeEvent(resizeTimeTableHandler);
111113

112114
const updateAttendeesAndResetSelectedArea = useCallback(() => {
113115
const resetSelectedArea = () => {
114-
setInit({ clientX: 0, clientY: 0 });
115-
currentSelectedAreaRef.current = initialSelectedArea;
116-
setInitMove({ clientX: 0, clientY: 0 });
116+
initializeMouseAndTouchStart();
117+
initializeMouseAndTouchMove();
118+
currentSelectedAreaRef.current = initialArea;
117119
};
118120

119121
const currentSelectedArea = currentSelectedAreaRef.current;
@@ -124,9 +126,9 @@ const Timetable: FC<ComponentProps> = ({
124126

125127
const selectedDates = getSelectedDatesWithSelectedArea(
126128
currentSelectedArea,
127-
initialTableAreaRef.current,
129+
timetableAreaRef.current,
128130
startDate,
129-
currentTableIndex.current,
131+
columnIndexOfSelectedAreaRef.current,
130132
currentPageIndex
131133
);
132134

@@ -150,10 +152,10 @@ const Timetable: FC<ComponentProps> = ({
150152
attendees,
151153
currentAttendee,
152154
isEraseMode,
153-
setInit,
154155
startDate,
155156
currentPageIndex,
156-
setInitMove,
157+
initializeMouseAndTouchMove,
158+
initializeMouseAndTouchStart,
157159
id,
158160
]);
159161

@@ -215,7 +217,7 @@ const Timetable: FC<ComponentProps> = ({
215217
/>
216218
);
217219
})}
218-
<TimesWrapper height={initialTableArea.h}>
220+
<TimesWrapper height={timetableArea.h}>
219221
{DAY_TIME_ARRAY[0].map((hour) => (
220222
<TimeUnit key={hour}>{hour}:00</TimeUnit>
221223
))}

lib/hooks/useMouseAndTouch.ts

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { normalizeTouchAndMouseEvent } from "@lib/handleCrossPlatform";
22
import { getIsMobile } from "@lib/handleCrossPlatform";
33
import type { RefObject } from "react";
4-
import { useEffect, useState } from "react";
4+
import { useCallback, useEffect, useState } from "react";
55
type MouseEventType = "mousemove" | "mousedown";
66
type TouchEventType = "touchmove" | "touchstart";
77
type MouseAndTouchEventConfig = {
@@ -14,29 +14,45 @@ type ExceptEventType = Omit<MouseAndTouchEventConfig, "eventType">;
1414
export const useMouseAndTouchStartLocation = (config: ExceptEventType = {}) => {
1515
const isMobile = getIsMobile();
1616
const eventType = isMobile ? "touchstart" : "mousedown";
17-
const { clientX, clientY, setStart } = useMouseAndTouchLocation({
17+
const {
18+
clientX,
19+
clientY,
20+
setEvent: setStart,
21+
} = useMouseAndTouchLocation({
1822
eventType: eventType,
1923
...config,
2024
});
25+
const initializeMouseAndTouchStart = useCallback(
26+
() => setStart({ clientX: 0, clientY: 0 }),
27+
[setStart]
28+
);
2129
return {
2230
startClientX: clientX,
2331
startClientY: clientY,
2432
setInit: setStart,
33+
initializeMouseAndTouchStart,
2534
} as const;
2635
};
2736

2837
export const useMouseAndTouchMoveLocation = (config: ExceptEventType = {}) => {
2938
const isMobile = getIsMobile();
3039
const eventType = isMobile ? "touchmove" : "mousemove";
31-
const { clientX, clientY, setStart } = useMouseAndTouchLocation({
40+
const {
41+
clientX,
42+
clientY,
43+
setEvent: setMove,
44+
} = useMouseAndTouchLocation({
3245
eventType: eventType,
3346
...config,
3447
});
35-
48+
const initializeMouseAndTouchMove = useCallback(
49+
() => setMove({ clientX: 0, clientY: 0 }),
50+
[setMove]
51+
);
3652
return {
3753
moveClientX: clientX,
3854
moveClientY: clientY,
39-
setInitMove: setStart,
55+
initializeMouseAndTouchMove,
4056
} as const;
4157
};
4258

@@ -81,5 +97,5 @@ const useMouseAndTouchLocation = ({
8197
};
8298
}, [ref, eventType, skipEvent]);
8399

84-
return { clientX, clientY, setStart: setEvent } as const;
100+
return { clientX, clientY, setEvent } as const;
85101
};

lib/tableHelper.ts

Lines changed: 46 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -2,97 +2,92 @@ const PADDING_X = 40;
22
const COLUMN_COUNT = 7;
33
const END_TIME = 24;
44
const START_TIME = 8;
5-
const initialSelectedArea = { x: 0, y: 0, w: 0, h: 0 };
5+
const initialArea = { x: 0, y: 0, w: 0, h: 0 };
66

77
export const generateSelectedArea = (
88
hasNotStartMove: boolean,
9-
moveClientY: number,
9+
currentClientY: number,
1010
startClientY: number,
11-
initialTableArea: { x: number; y: number; w: number; h: number },
12-
startClientX: number,
13-
currentWidth: number
11+
timetableArea: { x: number; y: number; w: number; h: number },
12+
startClientX: number
1413
) => {
1514
if (hasNotStartMove) {
16-
return initialSelectedArea;
15+
return initialArea;
1716
}
18-
19-
if (moveClientY <= startClientY && moveClientY !== 0) {
20-
return generateSelectedAreaUpperSide(
21-
initialTableArea,
17+
if (currentClientY <= startClientY && currentClientY !== 0) {
18+
return generateSelectedAreaWhenUserMoveUp(
19+
timetableArea,
2220
startClientX,
23-
moveClientY,
21+
currentClientY,
2422
startClientY
2523
);
2624
}
2725

28-
return generateSelectedAreaBelow(
29-
initialTableArea,
26+
return generateSelectedAreaWhenUserMoveDown(
27+
timetableArea,
3028
startClientY,
31-
currentWidth,
32-
moveClientY,
33-
getCurrentX(initialTableArea.w, startClientX)
29+
currentClientY,
30+
startClientX
3431
);
3532
};
3633

37-
const generateSelectedAreaUpperSide = (
38-
initialTableArea: { x: number; y: number; w: number; h: number },
34+
const generateSelectedAreaWhenUserMoveUp = (
35+
timetableArea: { x: number; y: number; w: number; h: number },
3936
startClientX: number,
40-
moveClientY: number,
37+
currentClientY: number,
4138
startClientY: number
4239
) => {
43-
const currentY =
44-
moveClientY >= initialTableArea.y ? moveClientY : initialTableArea.y;
45-
const currentH = startClientY - currentY;
40+
const selectedAreaY =
41+
currentClientY >= timetableArea.y ? currentClientY : timetableArea.y;
42+
const selectedAreaHeight = startClientY - selectedAreaY;
4643
return {
47-
x: getCurrentX(initialTableArea.w, startClientX),
48-
y: currentY,
49-
w: getCurrentColumnWidth(initialTableArea.w),
50-
h: currentH,
44+
x: getSelectedAreaX(timetableArea.w, startClientX),
45+
y: selectedAreaY,
46+
w: getSelectedAreaWidth(timetableArea.w),
47+
h: selectedAreaHeight,
5148
};
5249
};
5350

54-
const generateSelectedAreaBelow = (
55-
initialTableArea: { x: number; y: number; w: number; h: number },
51+
const generateSelectedAreaWhenUserMoveDown = (
52+
timetableArea: { x: number; y: number; w: number; h: number },
5653
startClientY: number,
57-
currentWidth: number,
58-
moveClientY: number,
59-
currentX: number
54+
currentClientY: number,
55+
startClientX: number
6056
) => {
61-
const startHeight =
62-
(initialTableArea.h - (END_TIME - START_TIME - 1)) /
57+
const minHeight =
58+
(timetableArea.h - (END_TIME - START_TIME - 1)) /
6359
(END_TIME - START_TIME) /
6460
3;
6561

66-
const currentY = startClientY;
67-
const currentW = currentWidth;
68-
const currentH =
69-
moveClientY >= initialTableArea.y + initialTableArea.h
70-
? initialTableArea.y + initialTableArea.h - currentY
71-
: moveClientY - startClientY;
62+
const selectedAreaY = startClientY;
63+
const selectedAreaHeight =
64+
currentClientY >= timetableArea.y + timetableArea.h
65+
? timetableArea.y + timetableArea.h - selectedAreaY
66+
: currentClientY - startClientY;
7267

7368
return {
74-
x: currentX,
75-
y: currentY,
76-
w: currentW,
77-
h: Math.max(currentH, startHeight),
69+
x: getSelectedAreaX(timetableArea.w, startClientX),
70+
y: selectedAreaY,
71+
w: getSelectedAreaWidth(timetableArea.w),
72+
h: Math.max(selectedAreaHeight, minHeight),
7873
};
7974
};
8075

81-
const getCurrentX = (area: number, startClientX: number) => {
76+
const getSelectedAreaX = (area: number, startClientX: number) => {
8277
const widthWidthGap = area / COLUMN_COUNT;
83-
const tableIndex = getTableIndex(widthWidthGap, startClientX);
84-
return getXOfTable(1, getCurrentColumnWidth(area), tableIndex);
78+
return getXOfTable(
79+
1,
80+
getSelectedAreaWidth(area),
81+
getColumnIndexAtTimetable(widthWidthGap, startClientX)
82+
);
8583
};
8684

87-
88-
export const getTableIndex = (width: number, clientX: number) => {
85+
export const getColumnIndexAtTimetable = (width: number, clientX: number) => {
8986
return Math.floor((clientX - PADDING_X) / width);
9087
};
9188

92-
9389
export const getXOfTable = (gap: number, width: number, index: number) => {
9490
return PADDING_X + index * (gap + width);
9591
};
9692

97-
98-
const getCurrentColumnWidth = (totalWidth: number) => (totalWidth - 1 * 6) / 7;
93+
const getSelectedAreaWidth = (totalWidth: number) => (totalWidth - 1 * 6) / 7;

0 commit comments

Comments
 (0)