diff --git a/dataExample.json b/dataExample.json new file mode 100644 index 0000000..e8db07f --- /dev/null +++ b/dataExample.json @@ -0,0 +1,38 @@ +{ + "days": [ + { + "events": [ + { + "time": 0, + "lessons": [0, 1, 2, 3, 4, 5] + }, + { + "time": 1, + "lessons": [0, 1, 2, 3, 4, 5] + } + ], + "date": 5467546 + }, + { + "events": [ + { + "lessons": [0, 1, 2, 3, 4, 5] + } + ], + "date": 5467546 + } + ], + "cards": [ + { + "subject": 3, + "room": 505, + "teacher": 1 + } + ], + "subjects": [ + { + "title": "Math", + "teachers": ["Popov", "somebody"] + } + ] +} diff --git a/src/hooks.ts b/src/hooks.ts new file mode 100644 index 0000000..9815d76 --- /dev/null +++ b/src/hooks.ts @@ -0,0 +1,25 @@ +import { useState } from "react"; +import { + TimetableT, + UseTimetableHookFT, + CreateCardFT, + CreateSubjectFT, +} from "./types/timetable"; + +export const useTimetable: UseTimetableHookFT = () => { + const [state, setState] = useState({ + cards: [], + days: [], + subjects: [], + }); + + const createSubject: CreateSubjectFT = () => { + console.log(); + }; + + const createCard: CreateCardFT = () => { + console.log(); + }; + + return { state, createCard, createSubject }; +}; diff --git a/src/types/timetable.ts b/src/types/timetable.ts new file mode 100644 index 0000000..eefbbf9 --- /dev/null +++ b/src/types/timetable.ts @@ -0,0 +1,39 @@ +export type TimetableT = { + days: DayT[]; + cards: CardT[]; + subjects: SubjectT[]; +}; + +type DayT = { + events: EventT[]; + date: number; // epoch time +}; + +type EventT = { + lessons: number[]; // IDs +}; + +type CardT = { + subject: number; // ID + room: number; // Number + teacher: number; // ID in subject +}; + +type SubjectT = { + title: string; + teachers: string[]; // teachers allowed for this subject +}; + +export type CreateSubjectFT = (title: string, teachers: string[]) => void; + +export type CreateCardFT = ( + subjectID: number, + teacherID: number, + room: number +) => void; + +export type UseTimetableHookFT = () => { + createSubject: CreateSubjectFT; + createCard: CreateCardFT; + state: TimetableT; +};