UNPKG

react-native-week-schedule-1

Version:
35 lines (31 loc) 1.31 kB
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 }; };