Created basic state types

This commit is contained in:
Dmitriy Shishkov 2020-12-13 17:47:39 +05:00
parent b5aa7a4ed6
commit d008eedce0
No known key found for this signature in database
GPG Key ID: D76D70029F55183E
3 changed files with 102 additions and 0 deletions

38
dataExample.json Normal file
View 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
View 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
View 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;
};