Skip to content

Commit ef8f4eb

Browse files
committed
feature: adds Fashionhero employment. refactor: moves method with logic for when to add PageBreak to printing-service
1 parent 8a8f115 commit ef8f4eb

18 files changed

+164
-124
lines changed

src/cv/components/education-section/education.tsx

+6-12
Original file line numberDiff line numberDiff line change
@@ -4,22 +4,24 @@ import { EducationEntity } from "@/shared/entities/education-entity";
44
import { ApplicationLanguage, LocalizationService } from "@/shared/services/localization-service";
55
import { Paper, Typography } from "@mui/material";
66
import { ReactNode } from "react";
7+
import { IndexProps } from '../../../shared/props/index-props';
8+
import { PrintingService } from "@/shared/services/printing-service";
79

8-
interface EducationProps {
10+
interface EducationProps extends IndexProps {
911
educationEntity: EducationEntity
10-
index: number
1112
}
1213

1314
export function Education(props: EducationProps): JSX.Element {
1415
const localizationService: LocalizationService = LocalizationService.instance
16+
const printService: PrintingService = PrintingService.instance
1517
const entityLocalizationService = localizationService.getEducationLocalizationService()
1618
const educationAsAt: string = buildEducationAsAtString()
1719
const educationPeriode: string = buildEducationPeriodeString()
1820

1921
return (
2022
<>
21-
{insertNewPageInPrint(1, ApplicationLanguage.DANISH)}
22-
{insertNewPageInPrint(1, ApplicationLanguage.ENGLISH)}
23+
{/* {insertNewPageInPrint(1, ApplicationLanguage.DANISH)}
24+
{insertNewPageInPrint(1, ApplicationLanguage.ENGLISH)} */}
2325
<Paper elevation={1} sx={{padding: '5px', margin: '5px'}}>
2426
<Typography color={'Highlight'}>
2527
{educationAsAt}
@@ -70,12 +72,4 @@ export function Education(props: EducationProps): JSX.Element {
7072
function getLocalizedDate(date: Date): string {
7173
return date.toLocaleDateString(localizationService.getCurrentLanguage(), {dateStyle: "medium"})
7274
}
73-
74-
function insertNewPageInPrint(index: number, language: ApplicationLanguage): ReactNode {
75-
if (props.index === index && localizationService.getCurrentLanguage() === language) {
76-
return (<PageBreak/>)
77-
}
78-
79-
return (<></>)
80-
}
8175
}

src/cv/components/employment-section.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,8 @@ export function EmploymentSection(): JSX.Element {
5252
}
5353

5454
function getEmploymentComponents(): React.ReactNode {
55-
return employments.map(entity => (
56-
<Employment data-printer-divisible={isPrinter} employmentEntity={entity} key={entity.startDate.getTime()}/>
55+
return employments.map((entity, index) => (
56+
<Employment data-printer-divisible={isPrinter} employmentEntity={entity} key={entity.startDate.getTime()} index={index}/>
5757
))
5858
}
5959
}

src/cv/components/employment-section/employment.tsx

+7-10
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,27 @@ import { LabelledTypography } from "@/shared/components/labelled-typography";
22
import { PageBreak } from "@/shared/components/page-break";
33
import { EmploymentEntity } from "@/shared/entities/employment-entity";
44
import { EntityEmploymentLocalizationKeys } from "@/shared/localization/employment-localization";
5+
import { IndexProps } from "@/shared/props/index-props";
56
import { ApplicationLanguage, LocalizationService } from "@/shared/services/localization-service";
7+
import { PrintingService } from "@/shared/services/printing-service";
68
import { Paper, Typography } from "@mui/material";
79
import { ReactNode } from "react";
810

9-
interface EmploymentProps {
10-
employmentEntity: EmploymentEntity
11+
interface EmploymentProps extends IndexProps {
12+
employmentEntity: EmploymentEntity
1113
}
1214

1315
export function Employment(props: EmploymentProps): JSX.Element {
1416
const localizationService: LocalizationService = LocalizationService.instance
17+
const printService: PrintingService = PrintingService.instance
1518
const entityLocalizationService = localizationService.getEmploymentLocalizationService()
1619
const employedAsAt: string = buildEmployedAsAtString()
1720
const employmentPeriode: string = buildEmploymentPeriodeString()
1821

1922
return (
2023
<>
24+
{printService.insertNewPageInPrintByProps(props, 1, ApplicationLanguage.DANISH)}
25+
{printService.insertNewPageInPrintByProps(props, 1, ApplicationLanguage.ENGLISH)}
2126
<Paper elevation={1} sx={{padding: '5px', margin: '5px'}}>
2227
<Typography color={'Highlight'}>
2328
{employedAsAt}
@@ -73,12 +78,4 @@ export function Employment(props: EmploymentProps): JSX.Element {
7378
function getLocalizedDate(date: Date): string {
7479
return date.toLocaleDateString(localizationService.getCurrentLanguage(), {dateStyle: "medium"})
7580
}
76-
77-
function insertNewPageInPrint(employerKey: EntityEmploymentLocalizationKeys, language: ApplicationLanguage): ReactNode {
78-
if (props.employmentEntity.employerKey === employerKey && localizationService.getCurrentLanguage() === language) {
79-
return (<PageBreak/>)
80-
}
81-
82-
return (<></>)
83-
}
8481
}

src/cv/components/language-section/language.tsx

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
import { LanguageEntity } from "@/shared/entities/language-entity";
2+
import { IndexProps } from "@/shared/props/index-props";
23
import { LocalizationService } from "@/shared/services/localization-service";
4+
import { PrintingService } from "@/shared/services/printing-service";
35
import { Paper, Rating, Typography } from "@mui/material";
46

5-
interface LanguageProps {
7+
interface LanguageProps extends IndexProps {
68
languageEntity: LanguageEntity
79
}
810

911
export function Language(props: LanguageProps): JSX.Element {
1012
const localizationService: LocalizationService = LocalizationService.instance
13+
const printService: PrintingService = PrintingService.instance
1114
const entityLocalizationService = localizationService.getLanguageLocalizationService()
1215

1316
return (

src/cv/components/languages-section.tsx

+3-15
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
11
import { LanguageEntity } from "@/shared/entities/language-entity";
22
import { EntityGenerationService } from "@/shared/services/entity-generation-service";
3-
import { ApplicationLanguage, LocalizationService } from "@/shared/services/localization-service";
3+
import { LocalizationService } from "@/shared/services/localization-service";
44
import { Paper, Typography } from "@mui/material";
55
import { Language } from "./language-section/language";
66
import { Page, usePrinter } from "react-pdf-printer";
7-
import { PageBreak } from "@/shared/components/page-break";
8-
import { ReactNode } from "react";
97

108
export function LanguagesSection(): JSX.Element {
119
const localizationService: LocalizationService = LocalizationService.instance
@@ -15,8 +13,6 @@ export function LanguagesSection(): JSX.Element {
1513

1614
return (
1715
<>
18-
{/* {insertNewPageInPrint(ApplicationLanguage.DANISH)} */}
19-
{/* {insertNewPageInPrint(ApplicationLanguage.ENGLISH)} */}
2016
<Paper elevation={2} sx={{padding: '5px', margin: '5px'}}>
2117
{isPrinter ? getPrinterLayout() : getWebLayout()}
2218
</Paper>
@@ -52,20 +48,12 @@ export function LanguagesSection(): JSX.Element {
5248
}
5349

5450
function getLanguageComponents(): React.ReactNode {
55-
return languages.map(entity => (
56-
<Language languageEntity={entity} key={getUniqueKey(entity)}/>
51+
return languages.map((entity, index) => (
52+
<Language languageEntity={entity} key={getUniqueKey(entity)} index={index}/>
5753
))
5854
}
5955

6056
function getUniqueKey(language: LanguageEntity): number {
6157
return Math.floor(language.importance * language.level * language.nameKey.length)
6258
}
63-
64-
function insertNewPageInPrint(language: ApplicationLanguage): ReactNode {
65-
if (localizationService.getCurrentLanguage() === language) {
66-
return (<PageBreak/>)
67-
}
68-
69-
return (<></>)
70-
}
7159
}

src/cv/components/links-section.tsx

+9-3
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,26 @@
11
import { LinkEntity } from "@/shared/entities/link-entity";
22
import { EntityGenerationService } from "@/shared/services/entity-generation-service";
3-
import { LocalizationService } from "@/shared/services/localization-service";
3+
import { ApplicationLanguage, LocalizationService } from "@/shared/services/localization-service";
44
import { Box, Paper, Typography } from "@mui/material";
55
import { LinkHousing } from "./links-section/link-housing";
66
import { Page, Pages, usePrinter } from "react-pdf-printer";
7+
import { PrintingService } from "@/shared/services/printing-service";
78

89
export function LinksSection(): JSX.Element {
910
const localizationService: LocalizationService = LocalizationService.instance
11+
const printService: PrintingService = PrintingService.instance
1012
const entityLocalizationService = localizationService.getLinksLocalizationService()
1113
const links: LinkEntity[] = EntityGenerationService.instance.getLinkEntities()
1214
const { isPrinter } = usePrinter()
1315

1416
return (
17+
<>
18+
{printService.insertNewPageInPrintByLanguage(ApplicationLanguage.DANISH)}
19+
{printService.insertNewPageInPrintByLanguage(ApplicationLanguage.ENGLISH)}
1520
<Paper elevation={2} sx={{padding: '5px', margin: '5px'}}>
1621
{isPrinter ? getPrinterLayout() : getWebLayout()}
1722
</Paper>
23+
</>
1824
)
1925

2026
function getPrinterLayout(): JSX.Element {
@@ -51,8 +57,8 @@ export function LinksSection(): JSX.Element {
5157
}
5258

5359
function getLinkComponents(): React.ReactNode {
54-
return links.map(entity => (
55-
<LinkHousing linkEntity={entity} key={getUniqueKey(entity)}/>
60+
return links.map((entity, index) => (
61+
<LinkHousing linkEntity={entity} key={getUniqueKey(entity)} index={index}/>
5662
))
5763
}
5864

src/cv/components/links-section/link-housing.tsx

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
import { LinkEntity } from "@/shared/entities/link-entity";
2+
import { IndexProps } from "@/shared/props/index-props";
23
import { LocalizationService } from "@/shared/services/localization-service";
4+
import { PrintingService } from "@/shared/services/printing-service";
35
import { Link, Paper, Typography } from "@mui/material";
46

5-
interface LinkHousingProps {
7+
interface LinkHousingProps extends IndexProps {
68
linkEntity: LinkEntity
79
}
810

911
export function LinkHousing(props: LinkHousingProps): JSX.Element {
1012
const localizationService: LocalizationService = LocalizationService.instance
13+
const printService: PrintingService = PrintingService.instance
1114
const entityLocalizationService = localizationService.getLinksLocalizationService()
1215

1316
return (

src/cv/components/project-section.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,8 @@ export function ProjectSection(): JSX.Element {
5656
}
5757

5858
function getProjectComponents(): React.ReactNode {
59-
return projects.map(entity => (
60-
<Project data-printer-divisible={isPrinter} projectEntity={entity} key={entity.importance} />
59+
return projects.map((entity, index) => (
60+
<Project data-printer-divisible={isPrinter} projectEntity={entity} key={entity.importance} index={index} />
6161
))
6262
}
6363
}
+13-4
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,23 @@
1+
import { PageBreak } from "@/shared/components/page-break"
12
import { ProjectEntity } from "@/shared/entities/project-entity"
2-
import { LocalizationService } from "@/shared/services/localization-service"
3+
import { IndexProps } from "@/shared/props/index-props"
4+
import { ApplicationLanguage, LocalizationService } from "@/shared/services/localization-service"
5+
import { PrintingService } from "@/shared/services/printing-service"
36
import { Paper, Typography } from "@mui/material"
7+
import { ReactNode } from "react"
48

5-
interface ProjectProps {
9+
interface ProjectProps extends IndexProps {
610
projectEntity: ProjectEntity
711
}
812

913
export function Project(props: ProjectProps): JSX.Element {
1014
const localizationService = LocalizationService.instance
15+
const printService: PrintingService = PrintingService.instance
1116

12-
return (<>
17+
return (
18+
<>
19+
{printService.insertNewPageInPrintByProps(props, 0, ApplicationLanguage.DANISH)}
20+
{printService.insertNewPageInPrintByProps(props, 0, ApplicationLanguage.ENGLISH)}
1321
<Paper elevation={1} sx={{padding: '5px', margin: '5px'}}>
1422
<Typography color={'Highlight'}>
1523
{localizationService.getProjectLocalizationService().getEntityText(props.projectEntity.titleKey)}
@@ -18,5 +26,6 @@ export function Project(props: ProjectProps): JSX.Element {
1826
{localizationService.getProjectLocalizationService().getEntityText(props.projectEntity.descriptionKey)}
1927
</Typography>
2028
</Paper>
21-
</>)
29+
</>
30+
)
2231
}

src/cv/components/reference-section/reference.tsx

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
import { ReferenceEntity } from "@/shared/entities/reference-entity";
2+
import { IndexProps } from "@/shared/props/index-props";
23
import { LocalizationService } from "@/shared/services/localization-service";
4+
import { PrintingService } from "@/shared/services/printing-service";
35
import { Paper, Typography } from "@mui/material";
46

5-
interface ReferenceProps {
7+
interface ReferenceProps extends IndexProps {
68
referenceEntity: ReferenceEntity
79
}
810

911
export function Reference(props: ReferenceProps): JSX.Element {
1012
const localizationService: LocalizationService = LocalizationService.instance
13+
const printService: PrintingService = PrintingService.instance
1114
const entityLocalizationService = localizationService.getReferencesLocalizationService()
1215
const whoLine: string = buildWhoLine()
1316
const contactInfoLine: string = buildContactInfoLine()

src/cv/components/references-section.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,8 @@ export function ReferencesSection(): JSX.Element {
5151
}
5252

5353
function getLinkComponents(): React.ReactNode {
54-
return references.map(entity => (
55-
<Reference referenceEntity={entity} key={getUniqueKey(entity)}/>
54+
return references.map((entity, index) => (
55+
<Reference referenceEntity={entity} key={getUniqueKey(entity)} index={index}/>
5656
))
5757
}
5858

src/cv/components/skills-section.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ export function SkillsSection(): JSX.Element {
5151
}
5252

5353
function getSkillComponents(): React.ReactNode {
54-
return skills.map(entity => (<Skill skillEntity={entity} key={getUniqueKey(entity)}/>))
54+
return skills.map((entity, index) => (<Skill skillEntity={entity} key={getUniqueKey(entity)} index={index}/>))
5555
}
5656

5757
function getUniqueKey(skill: SkillEntity): number {
+8-15
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,25 @@
1-
import { PageBreak } from "@/shared/components/page-break";
2-
import { SkillEntity, SkillName } from "@/shared/entities/skill-entity";
1+
import { SkillEntity } from "@/shared/entities/skill-entity";
32
import { Paper, Rating, Typography } from "@mui/material";
4-
import { ReactNode } from "react";
53
import { ApplicationLanguage, LocalizationService } from "@/shared/services/localization-service";
4+
import { PrintingService } from "@/shared/services/printing-service";
5+
import { IndexProps } from "@/shared/props/index-props";
66

7-
interface SkillProps {
7+
interface SkillProps extends IndexProps {
88
skillEntity: SkillEntity
99
}
1010

1111
export function Skill(props: SkillProps): JSX.Element {
1212
const localizationService = LocalizationService.instance
13+
const printService: PrintingService = PrintingService.instance
1314

1415
return (
1516
<>
16-
{/* {insertNewPageInPrint(SkillName.JAVA, Language.DANISH)} */}
17+
{printService.insertNewPageInPrintByProps(props, 3, ApplicationLanguage.DANISH)}
18+
{printService.insertNewPageInPrintByProps(props, 3, ApplicationLanguage.ENGLISH)}
1719
<Paper elevation={1} sx={{padding: '5px', margin: '5px'}}>
1820
<Typography>{props.skillEntity.name}</Typography>
1921
<Rating value={props.skillEntity.level} readOnly/>
2022
</Paper>
21-
</>
22-
23+
</>
2324
)
24-
25-
function insertNewPageInPrint(skillName: SkillName, language: ApplicationLanguage): ReactNode {
26-
if (props.skillEntity.name === skillName && localizationService.getCurrentLanguage() === language) {
27-
return (<PageBreak/>)
28-
}
29-
30-
return (<></>)
31-
}
3225
}

0 commit comments

Comments
 (0)