From 997d419bf154a58cf0d5b1326ca3e6b470d5e1df Mon Sep 17 00:00:00 2001 From: Giselle Hoekveld Date: Sat, 13 Apr 2024 20:47:19 -0300 Subject: [PATCH] Update entity and store files, and components for better code organization --- src/components/ScheduleCard.tsx | 6 +-- src/components/WeekSchedulesCard.tsx | 2 +- src/entities/Routine.ts | 10 ----- src/entities/Schedule.ts | 4 +- src/entities/Tag.ts | 5 --- src/entities/Task.ts | 14 ------- .../schedule/utils/allocateTask.test.ts | 38 +++++++---------- src/helpers/schedule/utils/allocateTask.ts | 4 +- .../utils/isThereGapBetweenSchedules.test.ts | 20 +++++---- src/seed/schedules.ts | 42 +++++++++---------- src/store/useRoutineStates.tsx | 22 ---------- src/store/useTaskStates.tsx | 16 ------- 12 files changed, 57 insertions(+), 126 deletions(-) delete mode 100644 src/entities/Routine.ts delete mode 100644 src/entities/Tag.ts delete mode 100644 src/entities/Task.ts delete mode 100644 src/store/useRoutineStates.tsx delete mode 100644 src/store/useTaskStates.tsx diff --git a/src/components/ScheduleCard.tsx b/src/components/ScheduleCard.tsx index 40d13a2..cdf4d32 100644 --- a/src/components/ScheduleCard.tsx +++ b/src/components/ScheduleCard.tsx @@ -18,7 +18,7 @@ interface ScheduleCardProps { id: string title: string priority: 'high' | 'medium' | 'low' | 'routine' | 'event' - done: boolean + status: 'pending' | 'in-progress' | 'done' startTime: string endTime: string } @@ -26,7 +26,7 @@ interface ScheduleCardProps { export const ScheduleCard = ({ id, title, - done, + status, priority, startTime, endTime, @@ -34,7 +34,7 @@ export const ScheduleCard = ({ const [openEditRoutineDialog, setOpenEditRoutineDialog] = useState(false) const [openEditTaskDialog, setOpenEditTaskDialog] = useState(false) const [openDeleteDialog, setOpenDeleteDialog] = useState(false) - const [completed, setCompleted] = useState(done) + const [completed, setCompleted] = useState(status === 'done') const [anchorEl, setAnchorEl] = useState(null) const open = Boolean(anchorEl) const { deleteSchedule } = useSchedulesStates() diff --git a/src/components/WeekSchedulesCard.tsx b/src/components/WeekSchedulesCard.tsx index 282108d..9e7bbc2 100644 --- a/src/components/WeekSchedulesCard.tsx +++ b/src/components/WeekSchedulesCard.tsx @@ -62,7 +62,7 @@ export const WeekSchedulesCard = ({ key={schedule.id} id={schedule.id} title={schedule.title} - done={schedule.done} + status={schedule.status} priority={schedule.priority} startTime={`${schedule.startAt.getUTCHours().toString().padStart(2, '0')}:${schedule.startAt.getUTCMinutes().toString().padStart(2, '0')}`} endTime={`${schedule.endAt.getUTCHours().toString().padStart(2, '0')}:${schedule.endAt.getUTCMinutes().toString().padStart(2, '0')}`} diff --git a/src/entities/Routine.ts b/src/entities/Routine.ts deleted file mode 100644 index 011bd58..0000000 --- a/src/entities/Routine.ts +++ /dev/null @@ -1,10 +0,0 @@ -export type Routine = { - id: string - title: string - done: boolean - duration: number - startAt: string - startTime: string - repeatAt: 'daily' | 'weekly' | 'weekdays' - repeatEvery: number -} diff --git a/src/entities/Schedule.ts b/src/entities/Schedule.ts index 7f8cb2f..6f49fcb 100644 --- a/src/entities/Schedule.ts +++ b/src/entities/Schedule.ts @@ -1,9 +1,11 @@ export interface Schedule { id: string title: string - done: boolean + status: 'pending' | 'in-progress' | 'done' priority: 'high' | 'medium' | 'low' | 'routine' | 'event' startAt: Date endAt: Date deadline: Date + notes?: string + tags?: string[] } diff --git a/src/entities/Tag.ts b/src/entities/Tag.ts deleted file mode 100644 index 703ced0..0000000 --- a/src/entities/Tag.ts +++ /dev/null @@ -1,5 +0,0 @@ -export interface Tag { - id: string - title: string - color: string -} diff --git a/src/entities/Task.ts b/src/entities/Task.ts deleted file mode 100644 index dd3fc08..0000000 --- a/src/entities/Task.ts +++ /dev/null @@ -1,14 +0,0 @@ -type Priority = 'low' | 'medium' | 'high' - -export type Task = { - id: string - title: string - notes?: string - done: boolean - duration: number - startAt: string - startTime: string - dueDate: string - dueTime: string - priority: Priority -} diff --git a/src/helpers/schedule/utils/allocateTask.test.ts b/src/helpers/schedule/utils/allocateTask.test.ts index ec29c09..0607902 100644 --- a/src/helpers/schedule/utils/allocateTask.test.ts +++ b/src/helpers/schedule/utils/allocateTask.test.ts @@ -1,24 +1,8 @@ import { beforeAll, describe, expect, it } from '@jest/globals' import { advanceTo } from 'jest-date-mock' import { allocateTask } from './allocateTask' - -type UnallocatedTask = { - id: string - title: string - notes?: string - priority: 'low' | 'medium' | 'high' - duration: string - deadline: Date -} - -type Schedule = { - id: string - title: string - done: boolean - priority: 'high' | 'medium' | 'low' | 'routine' | 'event' - startAt: Date - endAt: Date -} +import { Schedule } from '@/entities/Schedule' +import { UnallocatedTask } from '@/entities/UnallocatedTask' describe('allocateTask', () => { beforeAll(() => { @@ -31,17 +15,19 @@ describe('allocateTask', () => { id: '1', title: 'Test Schedule', priority: 'low', - done: false, + status: 'pending', startAt: new Date('2022-01-01T08:00:00'), endAt: new Date('2022-01-01T09:00:00'), + deadline: new Date('2022-01-14T12:00:00'), }, { id: '2', title: 'Test Schedule', priority: 'low', - done: false, + status: 'pending', startAt: new Date('2022-01-01T10:00:00'), endAt: new Date('2022-01-01T11:00:00'), + deadline: new Date('2022-01-14T12:00:00'), }, ] const taskToAllocate: UnallocatedTask = { @@ -73,17 +59,19 @@ describe('allocateTask', () => { id: '1', title: 'Test Schedule 1', priority: 'low', - done: false, + status: 'pending', startAt: new Date('2022-01-01T08:00:00'), endAt: new Date('2022-01-01T09:00:00'), + deadline: new Date('2022-01-14T12:00:00'), }, { id: '2', title: 'Test Schedule 2', priority: 'low', - done: false, + status: 'pending', startAt: new Date('2022-01-01T09:00:00'), endAt: new Date('2022-01-01T10:00:00'), + deadline: new Date('2022-01-14T12:00:00'), }, ] @@ -114,17 +102,19 @@ describe('allocateTask', () => { id: '1', title: 'Test Schedule', priority: 'low', - done: false, + status: 'pending', endAt: new Date('2022-01-01T09:00:00'), startAt: new Date('2022-01-01T08:00:00'), + deadline: new Date('2022-01-14T12:00:00'), }, { id: '2', title: 'Test Schedule', priority: 'low', - done: false, + status: 'pending', startAt: new Date('2022-01-01T09:00:00'), endAt: new Date('2022-01-01T10:00:00'), + deadline: new Date('2022-01-14T12:00:00'), }, ] diff --git a/src/helpers/schedule/utils/allocateTask.ts b/src/helpers/schedule/utils/allocateTask.ts index 9b64263..7327d7f 100644 --- a/src/helpers/schedule/utils/allocateTask.ts +++ b/src/helpers/schedule/utils/allocateTask.ts @@ -33,7 +33,7 @@ export const allocateTask = ( newSchedule = { id: taskToAllocate.id, title: taskToAllocate.title, - done: false, + status: 'pending', priority: taskToAllocate.priority, startAt: new Date(previousSchedule.endAt), endAt: new Date(newScheduleEndAt), @@ -73,7 +73,7 @@ export const allocateTask = ( newSchedule = { id: taskToAllocate.id, title: taskToAllocate.title, - done: false, + status: 'pending', priority: taskToAllocate.priority, startAt: new Date(previousSchedule.endAt), endAt: new Date(newScheduleEndAt), diff --git a/src/helpers/schedule/utils/isThereGapBetweenSchedules.test.ts b/src/helpers/schedule/utils/isThereGapBetweenSchedules.test.ts index 1bd85b7..47ed391 100644 --- a/src/helpers/schedule/utils/isThereGapBetweenSchedules.test.ts +++ b/src/helpers/schedule/utils/isThereGapBetweenSchedules.test.ts @@ -1,6 +1,6 @@ import { describe, expect, it } from '@jest/globals' -import { Schedule } from '../entities/Schedule' import { isThereGapBetweenSchedules } from './isThereGapBetweenSchedules' +import { Schedule } from '@/entities/Schedule' describe('isThereGapBetweenSchedules', () => { it('should return true if there is a gap between schedules', () => { @@ -8,17 +8,19 @@ describe('isThereGapBetweenSchedules', () => { id: '1', title: 'Test Schedule', priority: 'low', - done: false, + status: 'pending', startAt: new Date('2022-01-01T08:00:00'), endAt: new Date('2022-01-01T09:00:00'), + deadline: new Date('2022-01-10T09:00:00'), } const nextSchedule: Schedule = { id: '2', title: 'Test Schedule', priority: 'low', - done: false, + status: 'pending', startAt: new Date('2022-01-01T10:00:00'), endAt: new Date('2022-01-01T11:00:00'), + deadline: new Date('2022-01-10T09:00:00'), } const newScheduleDuration = 30 // 30 minutes @@ -36,17 +38,19 @@ describe('isThereGapBetweenSchedules', () => { id: '1', title: 'Test Schedule', priority: 'low', - done: false, + status: 'pending', startAt: new Date('2022-01-01T08:00:00'), endAt: new Date('2022-01-01T09:00:00'), + deadline: new Date('2022-01-10T09:00:00'), } const nextSchedule: Schedule = { id: '2', title: 'Test Schedule', priority: 'low', - done: false, + status: 'pending', startAt: new Date('2022-01-01T09:30:00'), endAt: new Date('2022-01-01T11:00:00'), + deadline: new Date('2022-01-10T09:00:00'), } const newScheduleDuration = 30 // 30 minutes @@ -64,17 +68,19 @@ describe('isThereGapBetweenSchedules', () => { id: '1', title: 'Test Schedule', priority: 'low', - done: false, + status: 'pending', startAt: new Date('2022-01-01T08:00:00'), endAt: new Date('2022-01-01T09:00:00'), + deadline: new Date('2022-01-10T09:00:00'), } const nextSchedule: Schedule = { id: '2', title: 'Test Schedule', priority: 'low', - done: false, + status: 'pending', startAt: new Date('2022-01-01T09:30:00'), endAt: new Date('2022-01-01T11:00:00'), + deadline: new Date('2022-01-10T09:00:00'), } const newScheduleDuration = 45 // 45 minutes diff --git a/src/seed/schedules.ts b/src/seed/schedules.ts index 349c20c..12079a6 100644 --- a/src/seed/schedules.ts +++ b/src/seed/schedules.ts @@ -16,7 +16,7 @@ export const schedules: Schedule[] = [ { id: 'e6786a2e-fec8-4472-8a26-fb623e633f8e', title: 'Task 1', - done: false, + status: 'pending', priority: 'high', deadline: getDateFromNowAndAddDaysAndSetHoursAndMinutes(5, 23, 59), startAt: getDateFromNowAndAddDaysAndSetHoursAndMinutes(0, 9, 0), @@ -25,7 +25,7 @@ export const schedules: Schedule[] = [ { id: '67985943-c969-456e-bb43-301d4d421018', title: 'Task 2', - done: false, + status: 'pending', priority: 'low', deadline: getDateFromNowAndAddDaysAndSetHoursAndMinutes(5, 23, 59), startAt: getDateFromNowAndAddDaysAndSetHoursAndMinutes(0, 12, 0), @@ -33,7 +33,7 @@ export const schedules: Schedule[] = [ }, { id: '8c16a17a-6503-42c8-a36a-cc649836a2bd', - done: true, + status: 'done', priority: 'routine', deadline: getDateFromNowAndAddDaysAndSetHoursAndMinutes(5, 23, 59), startAt: getDateFromNowAndAddDaysAndSetHoursAndMinutes(1, 9, 0), @@ -42,7 +42,7 @@ export const schedules: Schedule[] = [ }, { id: '93d7ee4c-770d-4734-a69f-ba6512d835ef', - done: false, + status: 'pending', priority: 'medium', deadline: getDateFromNowAndAddDaysAndSetHoursAndMinutes(5, 23, 59), startAt: getDateFromNowAndAddDaysAndSetHoursAndMinutes(1, 14, 0), @@ -51,7 +51,7 @@ export const schedules: Schedule[] = [ }, { id: '329b4011-3f78-458a-a8c5-9a60f7db8255', - done: true, + status: 'done', priority: 'low', deadline: getDateFromNowAndAddDaysAndSetHoursAndMinutes(5, 23, 59), startAt: getDateFromNowAndAddDaysAndSetHoursAndMinutes(1, 18, 0), @@ -60,7 +60,7 @@ export const schedules: Schedule[] = [ }, { id: '2dd9169e-a383-45d9-ae1b-38232da0ea2f', - done: false, + status: 'pending', priority: 'routine', deadline: getDateFromNowAndAddDaysAndSetHoursAndMinutes(5, 23, 59), startAt: getDateFromNowAndAddDaysAndSetHoursAndMinutes(2, 9, 0), @@ -69,7 +69,7 @@ export const schedules: Schedule[] = [ }, { id: '70283f27-07cb-4cb9-a2ac-d31a90e265b1', - done: false, + status: 'pending', priority: 'high', deadline: getDateFromNowAndAddDaysAndSetHoursAndMinutes(5, 23, 59), startAt: getDateFromNowAndAddDaysAndSetHoursAndMinutes(2, 10, 0), @@ -78,7 +78,7 @@ export const schedules: Schedule[] = [ }, { id: '86e71a20-cf69-4fca-bbd2-6df84bddb714', - done: true, + status: 'done', priority: 'medium', deadline: getDateFromNowAndAddDaysAndSetHoursAndMinutes(5, 23, 59), startAt: getDateFromNowAndAddDaysAndSetHoursAndMinutes(2, 12, 0), @@ -87,7 +87,7 @@ export const schedules: Schedule[] = [ }, { id: '91775f48-60ff-41b9-abad-2edbba5a1352', - done: false, + status: 'pending', priority: 'routine', deadline: getDateFromNowAndAddDaysAndSetHoursAndMinutes(5, 23, 59), startAt: getDateFromNowAndAddDaysAndSetHoursAndMinutes(2, 18, 0), @@ -96,7 +96,7 @@ export const schedules: Schedule[] = [ }, { id: '90dc170a-321a-449f-a00d-6f84dab2ccd5', - done: false, + status: 'pending', priority: 'medium', deadline: getDateFromNowAndAddDaysAndSetHoursAndMinutes(5, 23, 59), startAt: getDateFromNowAndAddDaysAndSetHoursAndMinutes(3, 9, 0), @@ -105,7 +105,7 @@ export const schedules: Schedule[] = [ }, { id: 'd99ac027-54ca-44fa-9a86-0ea521f2d508', - done: true, + status: 'done', priority: 'routine', deadline: getDateFromNowAndAddDaysAndSetHoursAndMinutes(5, 23, 59), startAt: getDateFromNowAndAddDaysAndSetHoursAndMinutes(3, 11, 0), @@ -114,7 +114,7 @@ export const schedules: Schedule[] = [ }, { id: '36176366-4106-47ff-a0f0-92f9432626b0', - done: true, + status: 'done', priority: 'medium', deadline: getDateFromNowAndAddDaysAndSetHoursAndMinutes(5, 23, 59), startAt: getDateFromNowAndAddDaysAndSetHoursAndMinutes(3, 13, 0), @@ -123,7 +123,7 @@ export const schedules: Schedule[] = [ }, { id: '33abeb36-b7dd-4397-9ace-c2144f3e3dc5', - done: false, + status: 'pending', priority: 'medium', deadline: getDateFromNowAndAddDaysAndSetHoursAndMinutes(5, 23, 59), startAt: getDateFromNowAndAddDaysAndSetHoursAndMinutes(3, 14, 0), @@ -132,7 +132,7 @@ export const schedules: Schedule[] = [ }, { id: '8aca4515-b83e-4d69-8bc3-06d709930222', - done: false, + status: 'pending', priority: 'high', deadline: getDateFromNowAndAddDaysAndSetHoursAndMinutes(5, 23, 59), startAt: getDateFromNowAndAddDaysAndSetHoursAndMinutes(4, 9, 0), @@ -141,7 +141,7 @@ export const schedules: Schedule[] = [ }, { id: '614c94e2-f8d5-4a46-a6e6-6d1509ff5971', - done: false, + status: 'pending', priority: 'low', deadline: getDateFromNowAndAddDaysAndSetHoursAndMinutes(5, 23, 59), startAt: getDateFromNowAndAddDaysAndSetHoursAndMinutes(4, 10, 0), @@ -150,7 +150,7 @@ export const schedules: Schedule[] = [ }, { id: '0a4c541f-5250-4456-bfb1-50e33d61691e', - done: true, + status: 'done', priority: 'low', deadline: getDateFromNowAndAddDaysAndSetHoursAndMinutes(5, 23, 59), startAt: getDateFromNowAndAddDaysAndSetHoursAndMinutes(4, 12, 0), @@ -159,7 +159,7 @@ export const schedules: Schedule[] = [ }, { id: 'fae64e2d-82e3-4393-94cb-d46270a9039d', - done: false, + status: 'pending', priority: 'medium', deadline: getDateFromNowAndAddDaysAndSetHoursAndMinutes(5, 23, 59), startAt: getDateFromNowAndAddDaysAndSetHoursAndMinutes(5, 9, 0), @@ -168,7 +168,7 @@ export const schedules: Schedule[] = [ }, { id: 'e90c4559-3bf2-419e-8b50-90450d7f080d', - done: false, + status: 'pending', priority: 'medium', deadline: getDateFromNowAndAddDaysAndSetHoursAndMinutes(5, 23, 59), startAt: getDateFromNowAndAddDaysAndSetHoursAndMinutes(5, 10, 0), @@ -177,7 +177,7 @@ export const schedules: Schedule[] = [ }, { id: 'bf53a8df-1218-4094-8a65-8eeee9074626', - done: true, + status: 'done', priority: 'medium', deadline: getDateFromNowAndAddDaysAndSetHoursAndMinutes(5, 23, 59), startAt: getDateFromNowAndAddDaysAndSetHoursAndMinutes(5, 11, 0), @@ -186,7 +186,7 @@ export const schedules: Schedule[] = [ }, { id: 'fb9c5ab0-68e6-4bef-96f3-80bde7564eec', - done: false, + status: 'pending', priority: 'high', deadline: getDateFromNowAndAddDaysAndSetHoursAndMinutes(5, 23, 59), startAt: getDateFromNowAndAddDaysAndSetHoursAndMinutes(5, 15, 0), @@ -195,7 +195,7 @@ export const schedules: Schedule[] = [ }, { id: 'e9fa5a8d-1598-406f-b4ce-ca75c4bdb6fa', - done: true, + status: 'done', priority: 'medium', deadline: getDateFromNowAndAddDaysAndSetHoursAndMinutes(5, 23, 59), startAt: getDateFromNowAndAddDaysAndSetHoursAndMinutes(6, 9, 0), diff --git a/src/store/useRoutineStates.tsx b/src/store/useRoutineStates.tsx deleted file mode 100644 index ea7e54d..0000000 --- a/src/store/useRoutineStates.tsx +++ /dev/null @@ -1,22 +0,0 @@ -import { Routine } from '@/entities/Routine' -import { create } from 'zustand' - -interface AppStates { - routine: Routine[] - addRoutine: (routine: Routine) => void - deleteRoutine: (id: string) => void -} - -export const useRoutineStates = create()((set) => ({ - routine: [], - addRoutine: (routine) => { - set((state) => ({ - routine: [...state.routine, routine], - })) - }, - deleteRoutine: (id) => { - set((state) => ({ - routine: state.routine.filter((routine) => routine.id !== id), - })) - }, -})) diff --git a/src/store/useTaskStates.tsx b/src/store/useTaskStates.tsx deleted file mode 100644 index 404c393..0000000 --- a/src/store/useTaskStates.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import { Task } from '@/entities/Task' -import { create } from 'zustand' - -interface AppStates { - tasks: Task[] - addTask: (task: Task) => void -} - -export const useTagStates = create()((set) => ({ - tasks: [], - addTask: (task) => { - set((state) => ({ - tasks: [...state.tasks, task], - })) - }, -}))