Add Education

This commit is contained in:
Dejvino 2023-05-26 05:43:18 +02:00
parent f4f4016640
commit 296b9862c9
7 changed files with 72 additions and 12 deletions

View File

@ -7,7 +7,9 @@ export const personalData: PersonalData = {
contacts: [ contacts: [
{icon: 'browser-firefox', text: 'www.dejvino.cz'}, {icon: 'browser-firefox', text: 'www.dejvino.cz'},
{icon: 'envelope-at', text: 'explosive@dejvino.cz'}, {icon: 'envelope-at', text: 'explosive@dejvino.cz'},
{icon: 'git', text: 'https://git.dejvino.cz'} {icon: 'git', text: 'https://git.dejvino.cz'},
{icon: 'telephone', text: '+420 111 222 333'},
{icon: 'geo-alt', text: 'Brno, Czechia'}
], ],
jobs: { jobs: {
current: { current: {
@ -25,6 +27,16 @@ export const personalData: PersonalData = {
} }
] ]
}, },
education: {
previous: [
{
position: 'Information Technology (unfinished)',
company: 'University of Benimoto',
timerange: '2010 - 2017',
description: '',
}
]
},
skills: { skills: {
primary: ['Java', 'TypeScript', 'JavaScript'], primary: ['Java', 'TypeScript', 'JavaScript'],
secondary: ['Kotlin', 'Go'], secondary: ['Kotlin', 'Go'],

View File

@ -15,6 +15,8 @@ export type Jobs = {
previous?: Job[] previous?: Job[]
} }
export type Education = Jobs;
export type Skills = { export type Skills = {
primary: string[], primary: string[],
secondary?: string[], secondary?: string[],
@ -26,6 +28,7 @@ export type PersonalData = {
brief: string, brief: string,
contacts: Contact[], contacts: Contact[],
jobs: Jobs, jobs: Jobs,
education?: Education,
skills: Skills, skills: Skills,
interests: string[] interests: string[]
} }

View File

@ -0,0 +1,16 @@
import React from 'react';
import { usePersonContext } from './PersonContext';
import JobHistory from './JobHistory';
export default function WorkExperience() {
const person = usePersonContext()
return person.education && (
<JobHistory
jobs={person.education}
heading='Education'
currentHeading='Currently studying'
/>
)
}

View File

@ -11,7 +11,7 @@ export type Props = {
}; };
export default function JobCard(props: Props) { export default function JobCard(props: Props) {
const focusRef = useAutoFocus<HTMLDivElement>('position ' + [props.position, props.company].join(', ')) const focusRef = useAutoFocus<HTMLDivElement>([props.position, props.company, props.timerange].join(' - '))
return ( return (
<Card ref={focusRef} className='job-card'> <Card ref={focusRef} className='job-card'>
{props.heading && ( {props.heading && (

View File

@ -4,25 +4,35 @@ import Container from 'react-bootstrap/Container';
import Col from 'react-bootstrap/Col'; import Col from 'react-bootstrap/Col';
import Row from 'react-bootstrap/Row'; import Row from 'react-bootstrap/Row';
import JobCard from './JobCard'; import JobCard from './JobCard';
import { usePersonContext } from './PersonContext';
import { partition } from '../utils'; import { partition } from '../utils';
import { Jobs } from '@/PersonalDataTypes';
const entriesPerRow = 2 export type Props = {
jobs: Jobs,
heading: string,
entriesPerRow?: number,
currentHeading?: string,
}
export default function JobsHistory() { const defaultProps = {
const person = usePersonContext() entriesPerRow: 2,
currentHeading: 'Currently',
}
export default function JobHistory(props: Props) {
const jobs = props.jobs
const config = {...defaultProps, ...props}
return ( return (
<Container> <Container>
<h2>Experience</h2> <h2>{config.heading}</h2>
{person.jobs.current && ( {jobs.current && (
<Row> <Row>
<Col> <Col>
<JobCard heading={'Current position'} {...person.jobs.current} /> <JobCard heading={config.currentHeading} {...jobs.current} />
</Col> </Col>
</Row> </Row>
)} )}
{partition(person.jobs.previous, entriesPerRow).map((jobs, index) => ( {partition(jobs.previous, config.entriesPerRow).map((jobs, index) => (
<Row key={index}> <Row key={index}>
{(jobs.map((job, subindex) => ( {(jobs.map((job, subindex) => (
<Col key={index + '_' + subindex}> <Col key={index + '_' + subindex}>

View File

@ -0,0 +1,16 @@
import React from 'react';
import { usePersonContext } from './PersonContext';
import JobHistory from './JobHistory';
export default function WorkExperience() {
const person = usePersonContext()
return (
<JobHistory
jobs={person.jobs}
heading='Work Experience'
currentHeading='Current position'
/>
)
}

View File

@ -1,10 +1,12 @@
'use client' 'use client'
import React from 'react'; import React from 'react';
import Container from 'react-bootstrap/Container'; import Container from 'react-bootstrap/Container';
import JobsHistory from './components/JobsHistory'; import JobsHistory from './components/WorkExperience';
import AboutBrief from './components/AboutBrief'; import AboutBrief from './components/AboutBrief';
import Skills from './components/Skills'; import Skills from './components/Skills';
import { Contacts } from './components/Contacts'; import { Contacts } from './components/Contacts';
import WorkExperience from './components/WorkExperience';
import Education from './components/Education';
export default function Home() { export default function Home() {
return ( return (
@ -12,7 +14,8 @@ export default function Home() {
<Container fluid='xxl'> <Container fluid='xxl'>
<AboutBrief /> <AboutBrief />
<Contacts /> <Contacts />
<JobsHistory /> <WorkExperience />
<Education />
<Skills /> <Skills />
</Container> </Container>
) )