Created basic state types
This commit is contained in:
parent
b5aa7a4ed6
commit
d008eedce0
38
dataExample.json
Normal file
38
dataExample.json
Normal file
@ -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"]
|
||||
}
|
||||
]
|
||||
}
|
25
src/hooks.ts
Normal file
25
src/hooks.ts
Normal file
@ -0,0 +1,25 @@
|
||||
import { useState } from "react";
|
||||
import {
|
||||
TimetableT,
|
||||
UseTimetableHookFT,
|
||||
CreateCardFT,
|
||||
CreateSubjectFT,
|
||||
} from "./types/timetable";
|
||||
|
||||
export const useTimetable: UseTimetableHookFT = () => {
|
||||
const [state, setState] = useState<TimetableT>({
|
||||
cards: [],
|
||||
days: [],
|
||||
subjects: [],
|
||||
});
|
||||
|
||||
const createSubject: CreateSubjectFT = () => {
|
||||
console.log();
|
||||
};
|
||||
|
||||
const createCard: CreateCardFT = () => {
|
||||
console.log();
|
||||
};
|
||||
|
||||
return { state, createCard, createSubject };
|
||||
};
|
39
src/types/timetable.ts
Normal file
39
src/types/timetable.ts
Normal file
@ -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;
|
||||
};
|
Loading…
x
Reference in New Issue
Block a user