react-native-week-schedule-1
Version:
35 lines (31 loc) • 1.31 kB
text/typescript
import { useMemo } from "react";
import { grid } from "../utils/grid";
import type { IData } from "react-native-week-schedule-1";
export const useTableItem = (item: IData) => {
const top = useMemo(() => {
const index = grid.hours.findIndex(time => {
const currentHour = Number(item.date.split('T')[1]?.split(':')[0]);
const [hourString, dayPart] = time.split(' ');
const hour = Number(hourString);
if (currentHour === 12) {
return time === '12 pm';
};
if (Number(currentHour) === 0) {
return time === '12 am';
};
if (dayPart === 'am') {
return currentHour === hour;
};
return currentHour === hour + 12;
});
const minutes = Number(item.date.split('T')[1]?.split(':')[1])
const minutesOffset = (minutes / 60) * grid.cellHeight;
return (grid.cellHeight * index) + minutesOffset + 0.4;
}, [item]);
const left = useMemo(() => grid.cellWight * new Date(`${item.date.split('T')[0]}`).getDay()+ 0.4, [item]);
const height = useMemo(() => {
const percent = (item.duration / 60) * 100;
return (percent / 100) * grid.cellHeight;
}, [item]);
return { top, left, height };
};