Rework providers and add models for student related things
This commit is contained in:
parent
ee44cbf2f7
commit
516cb73367
9
src/data/course.ts
Normal file
9
src/data/course.ts
Normal file
@ -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[];
|
||||
}
|
5
src/data/index.ts
Normal file
5
src/data/index.ts
Normal file
@ -0,0 +1,5 @@
|
||||
export * from './common'
|
||||
export * from './company'
|
||||
export * from './course'
|
||||
export * from './internship'
|
||||
export * from './student'
|
@ -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;
|
||||
|
13
src/data/student.ts
Normal file
13
src/data/student.ts
Normal file
@ -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;
|
||||
}
|
@ -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<InternshipFormProps> = props => {
|
||||
const formik = useFormik<Nullable<Internship>>({ onSubmit: values => console.log(values), initialValues: emptyInternship });
|
||||
|
||||
const formikProps = (prop: keyof Internship) => ({ onChange: formik.handleChange, value: formik.values[prop], name: prop })
|
||||
|
||||
return (
|
||||
<div className="internship-form">
|
||||
<TextField {...formikProps("startDate")} />
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
@ -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";
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { Company } from "../data/company";
|
||||
import { Company } from "../../data/company";
|
||||
import { makeIdSequence } from "./helpers";
|
||||
|
||||
const companySequence = makeIdSequence();
|
15
src/provider/dummy/helpers.ts
Normal file
15
src/provider/dummy/helpers.ts
Normal file
@ -0,0 +1,15 @@
|
||||
import { Identifiable } from "../../data";
|
||||
|
||||
type SequenceGenerator = {
|
||||
(): string;
|
||||
assignIds<T>(objects: T[]): T[];
|
||||
}
|
||||
|
||||
export const makeIdSequence = (start: number = 1): SequenceGenerator => {
|
||||
let i = start;
|
||||
|
||||
const sequence = () => (i++).toString();
|
||||
sequence.assignIds = <T extends Identifiable>(objects: T[]): T[] => objects.map(obj => ({ ...obj, id: sequence() }))
|
||||
|
||||
return sequence as SequenceGenerator;
|
||||
}
|
1
src/provider/dummy/index.ts
Normal file
1
src/provider/dummy/index.ts
Normal file
@ -0,0 +1 @@
|
||||
export * from './company'
|
39
src/provider/dummy/student.ts
Normal file
39
src/provider/dummy/student.ts
Normal file
@ -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,
|
||||
}
|
@ -1,4 +0,0 @@
|
||||
export const makeIdSequence = (start: number = 1) => {
|
||||
let i = start;
|
||||
return () => i++;
|
||||
}
|
7
src/provider/index.ts
Normal file
7
src/provider/index.ts
Normal file
@ -0,0 +1,7 @@
|
||||
import * as dummy from './dummy'
|
||||
|
||||
export {
|
||||
dummy,
|
||||
}
|
||||
|
||||
export default dummy;
|
Loading…
Reference in New Issue
Block a user