From 516cb73367c8b495b8ab6afd95b9096011a2dca7 Mon Sep 17 00:00:00 2001 From: Kacper Donat Date: Thu, 11 Jun 2020 19:47:08 +0200 Subject: [PATCH] Rework providers and add models for student related things --- src/data/course.ts | 9 +++++++ src/data/index.ts | 5 ++++ src/data/internship.ts | 22 +++++++++++++--- src/data/student.ts | 13 ++++++++++ src/forms/Internship.tsx | 9 ------- src/forms/company.tsx | 2 +- src/provider/{ => dummy}/company.ts | 2 +- src/provider/dummy/helpers.ts | 15 +++++++++++ src/provider/dummy/index.ts | 1 + src/provider/dummy/student.ts | 39 +++++++++++++++++++++++++++++ src/provider/helpers.ts | 4 --- src/provider/index.ts | 7 ++++++ 12 files changed, 109 insertions(+), 19 deletions(-) create mode 100644 src/data/course.ts create mode 100644 src/data/index.ts create mode 100644 src/data/student.ts rename src/provider/{ => dummy}/company.ts (97%) create mode 100644 src/provider/dummy/helpers.ts create mode 100644 src/provider/dummy/index.ts create mode 100644 src/provider/dummy/student.ts delete mode 100644 src/provider/helpers.ts create mode 100644 src/provider/index.ts diff --git a/src/data/course.ts b/src/data/course.ts new file mode 100644 index 0000000..6bcb065 --- /dev/null +++ b/src/data/course.ts @@ -0,0 +1,9 @@ +import { InternshipProgramEntry } from "./internship"; +import { Semester } from "./student"; +import { Identifiable } from "./common"; + +export interface Course extends Identifiable { + name: string, + desiredSemesters: Semester[], + possibleProgramEntries: InternshipProgramEntry[]; +} diff --git a/src/data/index.ts b/src/data/index.ts new file mode 100644 index 0000000..cfd65af --- /dev/null +++ b/src/data/index.ts @@ -0,0 +1,5 @@ +export * from './common' +export * from './company' +export * from './course' +export * from './internship' +export * from './student' diff --git a/src/data/internship.ts b/src/data/internship.ts index 03a557e..96dd1b6 100644 --- a/src/data/internship.ts +++ b/src/data/internship.ts @@ -1,12 +1,26 @@ import { Moment } from "moment"; import { Nullable } from "../helpers"; +import { Identifiable } from "./common"; -export enum InternshipType { } -export enum InternshipProgram { } +export enum InternshipType { + FreeInternship = "FreeInternship", + GraduateInternship = "GraduateInternship", + FreeApprenticeship = "FreeApprenticeship", + PaidApprenticeship = "PaidApprenticeship", + ForeignInternship = "ForeignInternship", + UOP = "UOP", + UD = "UD", + UZ = "UZ", + Other = "Other", +} -export interface Internship { +export interface InternshipProgramEntry extends Identifiable { + description: string; +} + +export interface Internship extends Identifiable { type: InternshipType; - program: InternshipProgram; + program: InternshipProgramEntry[]; startDate: Moment; endDate: Moment; isAccepted: boolean; diff --git a/src/data/student.ts b/src/data/student.ts new file mode 100644 index 0000000..36c1e6b --- /dev/null +++ b/src/data/student.ts @@ -0,0 +1,13 @@ +import { Course } from "./course"; +import { Identifiable } from "./common"; + +export type Semester = number; + +export interface Student extends Identifiable{ + name: string; + surname: string; + email: string; + albumNumber: string; + semester: Semester; + course: Course; +} diff --git a/src/forms/Internship.tsx b/src/forms/Internship.tsx index e749b8d..cf7470a 100644 --- a/src/forms/Internship.tsx +++ b/src/forms/Internship.tsx @@ -1,21 +1,12 @@ import React from "react"; -import { useFormik } from "formik"; -import { emptyInternship, Internship } from "../data/internship"; -import { Nullable } from "../helpers"; -import { TextField } from "@material-ui/core"; export type InternshipFormProps = { } export const InternshipForm: React.FunctionComponent = props => { - const formik = useFormik>({ onSubmit: values => console.log(values), initialValues: emptyInternship }); - - const formikProps = (prop: keyof Internship) => ({ onChange: formik.handleChange, value: formik.values[prop], name: prop }) - return (
-
) } diff --git a/src/forms/company.tsx b/src/forms/company.tsx index 78729e1..c8f4826 100644 --- a/src/forms/company.tsx +++ b/src/forms/company.tsx @@ -1,6 +1,6 @@ import React, { HTMLProps, useEffect, useMemo, useState } from "react"; import { BranchOffice, Company, emptyAddress, emptyBranchOffice, emptyCompany, formatAddress } from "../data/company"; -import { sampleCompanies } from "../provider/company"; +import { sampleCompanies } from "../provider/dummy"; import { Autocomplete } from "@material-ui/lab"; import { Grid, TextField, Typography } from "@material-ui/core"; import { formFieldProps } from "./helpers"; diff --git a/src/provider/company.ts b/src/provider/dummy/company.ts similarity index 97% rename from src/provider/company.ts rename to src/provider/dummy/company.ts index be861f9..3d13aba 100644 --- a/src/provider/company.ts +++ b/src/provider/dummy/company.ts @@ -1,4 +1,4 @@ -import { Company } from "../data/company"; +import { Company } from "../../data/company"; import { makeIdSequence } from "./helpers"; const companySequence = makeIdSequence(); diff --git a/src/provider/dummy/helpers.ts b/src/provider/dummy/helpers.ts new file mode 100644 index 0000000..d65ea2b --- /dev/null +++ b/src/provider/dummy/helpers.ts @@ -0,0 +1,15 @@ +import { Identifiable } from "../../data"; + +type SequenceGenerator = { + (): string; + assignIds(objects: T[]): T[]; +} + +export const makeIdSequence = (start: number = 1): SequenceGenerator => { + let i = start; + + const sequence = () => (i++).toString(); + sequence.assignIds = (objects: T[]): T[] => objects.map(obj => ({ ...obj, id: sequence() })) + + return sequence as SequenceGenerator; +} diff --git a/src/provider/dummy/index.ts b/src/provider/dummy/index.ts new file mode 100644 index 0000000..7466cc3 --- /dev/null +++ b/src/provider/dummy/index.ts @@ -0,0 +1 @@ +export * from './company' diff --git a/src/provider/dummy/student.ts b/src/provider/dummy/student.ts new file mode 100644 index 0000000..3036342 --- /dev/null +++ b/src/provider/dummy/student.ts @@ -0,0 +1,39 @@ +import { Course, InternshipProgramEntry, Student } from "../../data" +import { makeIdSequence } from "./helpers"; + +const programEntryIdSequence = makeIdSequence(); +const courseIdSequence = makeIdSequence(); +const studentIdSequence = makeIdSequence(); + +const sampleProgramEntries: InternshipProgramEntry[] = programEntryIdSequence.assignIds([ + { description: "Instalacja, konfiguracja i administracja niewielkich sieci komputerowych, w tym bezprzewodowych." }, + { description: "Implementacja polityki bezpieczeństwa informacji w firmie lub instytucji, instalacja ochrony antywirusowej, konfiguracja zapór ogniowych." }, + { description: "Instalacja, konfiguracja i administracja oprogramowania, w szczególnościsystemów operacyjnychiserwerów aplikacji." }, + { description: "Projektowanie, implementacja i modyfikacjeoprogramowaniaw różnych technologiach i dla różnych zastosowań." }, + { description: "Testowanie oprogramowania, także z wykorzystaniem narzędzi do testowania automatycznego." }, + { description: "Wykorzystanie otwartych komponentów programowych z uwzględnieniem prawnych zależności pomiędzy nimi a produktem wynikowym." }, + { description: "Projektowanie i implementacja baz danych oraz badanie ich wydajności." }, + { description: "Posługiwanie się zaawansowanymi metodami i technologiami przetwarzania, składowania, transformacji i analizy danych(Big Data, Business Intelligence, hurtownie danych)" }, + { description: "Projektowanie i prototypowaniezaawansowanychinterfejsów użytkownika. " }, + { description: "Posługiwanie się zaawansowanymi narzędziami informatycznymi do przetwarzania plików dźwiękowych, obrazów i wideo." }, + { description: "Konfiguracjaurządzeń zewnętrznych komputera, rozbudowa i modyfikacja jego struktury modułówi urządzeń wewnętrznych." }, + { description: "Przygotowywanie i testowanie oprogramowania prostych mikrokontrolerów i systemów wbudowanych." }, + { description: "Przygotowywanie i analiza dokumentacjitechnicznej przedsięwzięć informatycznych,wykorzystanie modeli i narzędzi zarządzania dla e-biznesu." }, +]); + +const sampleCourse: Course = { + id: courseIdSequence(), + name: "Informatyka", + desiredSemesters: [6], + possibleProgramEntries: sampleProgramEntries, +} + +const sampleStudent: Student = { + id: studentIdSequence(), + name: "Jan", + surname: "Kowalski", + albumNumber: "123456", + email: "s123456@student.pg.edu.pl", + course: sampleCourse, + semester: 4, +} diff --git a/src/provider/helpers.ts b/src/provider/helpers.ts deleted file mode 100644 index 20b4496..0000000 --- a/src/provider/helpers.ts +++ /dev/null @@ -1,4 +0,0 @@ -export const makeIdSequence = (start: number = 1) => { - let i = start; - return () => i++; -} diff --git a/src/provider/index.ts b/src/provider/index.ts new file mode 100644 index 0000000..c3cdd04 --- /dev/null +++ b/src/provider/index.ts @@ -0,0 +1,7 @@ +import * as dummy from './dummy' + +export { + dummy, +} + +export default dummy;