diff --git a/apps/react-app/public/assets/leticia-de-la-osa.jpg b/apps/react-app/public/assets/leticia-de-la-osa.jpg new file mode 100644 index 00000000..d4e9633b Binary files /dev/null and b/apps/react-app/public/assets/leticia-de-la-osa.jpg differ diff --git a/apps/react-app/src/pods/about-us/data-json.ts b/apps/react-app/src/pods/about-us/data-json.ts index b5e2eff6..a8601d71 100644 --- a/apps/react-app/src/pods/about-us/data-json.ts +++ b/apps/react-app/src/pods/about-us/data-json.ts @@ -8,20 +8,20 @@ interface User { export const userList: User[] = [ { - avatar: './assets/teresa.jpg', - name: 'Teresa Milanés', + avatar: './assets/leticia-de-la-osa.jpg', + name: 'Leticia de la Osa', job: 'Frontend Developer', - linkedin_url: 'https://www.linkedin.com/in/mteresamb/', + linkedin_url: 'https://www.linkedin.com/in/deletidev/', description: - 'Soy MªTeresa, desarrolladora de aplicaciones web enfocada en el Frontend y diseño UI- UX.Combino habilidades en diseño y comprensión de la experiencia de usuario para crear interfaces atractivas y funcionales', + '¡Hola! Soy Leti, desarrolladora Frontend. Disfruto cada desafío de dar vida a ideas creativas. Trabajo integrando estética, funcionalidad y accesibilidad con código limpio y reutilizable. Asegurando así una experiencia de usuario positiva.', }, { - avatar: './assets/flavio.png', - name: 'Flavio Forte', + avatar: './assets/teresa.jpg', + name: 'Teresa Milanés', job: 'Frontend Developer', - linkedin_url: 'https://www.linkedin.com/in/flavio-forte-/', + linkedin_url: 'https://www.linkedin.com/in/mteresamb/', description: - 'Soy un desarrollador Front End, hace dos años arranque mi carrera cursando un Bootcamp de fundamentos, y me especialice cursando el Máster Front End Lemoncode, en la actualidad me encuentro colaborando en proyectos tales como ManfredExport y complementado mis capacidades cursando el Bootcamp Backend Lemoncode.', + 'Soy MªTeresa, desarrolladora de aplicaciones web enfocada en el Frontend y diseño UI- UX.Combino habilidades en diseño y comprensión de la experiencia de usuario para crear interfaces atractivas y funcionales', }, { avatar: './assets/juan-berrocal.png', @@ -31,14 +31,6 @@ export const userList: User[] = [ description: 'Graduado en informática de sistemas, gestioné la empresa familiar, fui freelance y desde hace tiempo trabajo en logística para una multinacional de alimentación. Las nuevas tecnologías brindan hoy unas posibilidades impensables hace unos años y estoy reciclándome para incorporarme a este fascinante mundo.', }, - { - avatar: './assets/adolfo-zambrana.png', - name: 'Adolfo Zambrana', - job: 'Frontend Developer', - linkedin_url: 'https://www.linkedin.com/in/adolfo-zambrana-gilabert-a37776b5/', - description: - 'Buenas, me llamo Adolfo Zambrana, soy programador FrontEnd, diseñador gráfico e Ilustrador, y durante estos últimos años he estado trabajando y formándome como programador Front-End especialista en experiencia de usuario.', - }, { avatar: './assets/abel-de-tena-torres.jpg', name: 'Abel de Tena', @@ -55,4 +47,20 @@ export const userList: User[] = [ description: 'Graduado en Derecho y Ciencias Políticas. Con anterioridad a dedicarme al desarrollo web, ejercí en un despacho la abogacía penal. Cursé el Bootcamp de JavaScript de Lemoncode y su Máster de FrontEnd. Quedé entusiasmado con la combinación de análisis y creatividad, versatilidad y belleza de la programación. Actualmente estoy estudiando DAW y formándome ante cualquier oportunidad que encuentre en este apasionante sector.', }, + { + avatar: './assets/flavio.png', + name: 'Flavio Forte', + job: 'Frontend Developer', + linkedin_url: 'https://www.linkedin.com/in/flavio-forte-/', + description: + 'Soy un desarrollador Front End, hace dos años arranque mi carrera cursando un Bootcamp de fundamentos, y me especialice cursando el Máster Front End Lemoncode, en la actualidad me encuentro colaborando en proyectos tales como ManfredExport y complementado mis capacidades cursando el Bootcamp Backend Lemoncode.', + }, + { + avatar: './assets/adolfo-zambrana.png', + name: 'Adolfo Zambrana', + job: 'Frontend Developer', + linkedin_url: 'https://www.linkedin.com/in/adolfo-zambrana-gilabert-a37776b5/', + description: + 'Buenas, me llamo Adolfo Zambrana, soy programador FrontEnd, diseñador gráfico e Ilustrador, y durante estos últimos años he estado trabajando y formándome como programador Front-End especialista en experiencia de usuario.', + }, ]; diff --git a/apps/react-app/src/pods/template-export/components/export-config/export-config.component.tsx b/apps/react-app/src/pods/template-export/components/export-config/export-config.component.tsx index 52913167..18136a03 100644 --- a/apps/react-app/src/pods/template-export/components/export-config/export-config.component.tsx +++ b/apps/react-app/src/pods/template-export/components/export-config/export-config.component.tsx @@ -17,7 +17,7 @@ interface Props { } const DOWNLOAD_MESSAGE_TIMEOUT = 2500; -const DESIGN_OPTIONS: TemplateCV[] = ['Sith Elegance', 'Galactic CleanTech', 'Monochrome Force']; +const DESIGN_OPTIONS: TemplateCV[] = ['Sith Elegance', 'Galactic CleanTech', 'X-Wing Squadron', 'Monochrome Force']; const LANGUAGE_OPTIONS: Language[] = ['es', 'en']; export const ExportConfig: React.FC = props => { @@ -30,6 +30,7 @@ export const ExportConfig: React.FC = props => { const [htmlPreview, setHtmlPreview] = React.useState( onHTMLSettingSelectionChanged(htmlTemplate, exportHTMLSettings) ); + const [hideColorSelected, setHideColorSelected] = React.useState(false); const handleColorChange = (event: React.ChangeEvent) => { setExportHTMLSettings({ ...exportHTMLSettings, colorTheme: event.target.value as ColorTheme }); @@ -64,6 +65,7 @@ export const ExportConfig: React.FC = props => { }; React.useEffect(() => { + setHideColorSelected(exportHTMLSettings.template === 'X-Wing Squadron'); setHtmlPreview(onHTMLSettingSelectionChanged(htmlTemplate, exportHTMLSettings)); }, [exportHTMLSettings]); @@ -81,9 +83,11 @@ export const ExportConfig: React.FC = props => { label={'Idioma cabeceras'} /> */} -
- -
+ {!hideColorSelected && ( +
+ +
+ )}

Previsualización

diff --git a/export-samples/html/cv-x-wing-squadron.html b/export-samples/html/cv-x-wing-squadron.html index 559c856b..ecdb7c43 100644 --- a/export-samples/html/cv-x-wing-squadron.html +++ b/export-samples/html/cv-x-wing-squadron.html @@ -74,7 +74,7 @@ h1 { display: flex; flex-direction: column; - width: min-content; + min-width: min-content; text-transform: capitalize; font-family: 'Source Serif Pro', sans-serif; font-size: 75px; @@ -86,6 +86,15 @@ -webkit-text-fill-color: transparent; } + .gradient__background { + display: flex; + flex-grow: 1; + background: var(--manfred-gradient); + background-clip: text; + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + color: transparent; + } @media (min-width: 728px) { h1 { font-size: 82px; @@ -129,7 +138,7 @@ } .technologie__icon--gray-scale { - width: 35px; + max-width: 35px; filter: grayscale(100%); } @@ -145,9 +154,13 @@ header > img { align-self: center; - width: 225px; - height: 225px; border-radius: 225px; + min-width: 225px; + min-height: 225px; + max-width: 350px; + max-height: 350px; + object-fit: cover; + background: var(--manfred-gradient); } .header__content { @@ -162,6 +175,10 @@ padding: var(--spacing_16) 0px; } + .header__content__name > * { + padding-left: var(--spacing_8); + } + .job-title { color: var(--manfred-dark); font-family: 'Source Serif Pro', sans-serif; @@ -175,6 +192,7 @@ display: flex; align-items: center; gap: var(--spacing_8); + padding-left: var(--spacing_8); } .header__content__address > p { @@ -187,9 +205,10 @@ display: flex; align-items: center; gap: var(--spacing_32); + padding-left: var(--spacing_8); } - @media (min-width: 1024px) { + @media (min-width: 728px) { .header__content__address > p { font-size: 16px; } @@ -201,12 +220,7 @@ justify-content: flex-start; align-items: center; flex-direction: row; - gap: var(--spacing_64); - } - - header > img { - width: 350px; - height: 350px; + gap: var(--spacing_48); } .header__content { @@ -387,7 +401,9 @@ -

david

+
+

david

+

bonilla fuertes

Fundador en Manfred / C-Level Executive

diff --git a/packages/manfred-common/src/doc-parts/profile-section/profile-section.mapper.spec.ts b/packages/manfred-common/src/doc-parts/profile-section/profile-section.mapper.spec.ts index 2674017b..003327d5 100644 --- a/packages/manfred-common/src/doc-parts/profile-section/profile-section.mapper.spec.ts +++ b/packages/manfred-common/src/doc-parts/profile-section/profile-section.mapper.spec.ts @@ -335,4 +335,5 @@ describe('Testing profile-section.mapper.ts', () => { }); }); }); + export {}; diff --git a/packages/manfred-common/src/doc-parts/studies-section/studies-section.helpers.spec.ts b/packages/manfred-common/src/doc-parts/studies-section/studies-section.helpers.spec.ts index f8d14a22..d11796cf 100644 --- a/packages/manfred-common/src/doc-parts/studies-section/studies-section.helpers.spec.ts +++ b/packages/manfred-common/src/doc-parts/studies-section/studies-section.helpers.spec.ts @@ -15,6 +15,7 @@ describe('studies-section.helpers specs', () => { description: 'description2', institution: { name: 'name2', + description: 'description2', location: { country: 'Italia', region: 'region2', @@ -31,6 +32,7 @@ describe('studies-section.helpers specs', () => { description: 'description2', institution: { name: 'name2', + description: 'description2', location: { country: 'Italia', region: 'region2', @@ -47,6 +49,7 @@ describe('studies-section.helpers specs', () => { description: 'description', institution: { name: 'name', + description: 'description', location: { country: 'España', region: 'region', @@ -69,6 +72,7 @@ describe('studies-section.helpers specs', () => { description: 'description', institution: { name: 'name', + description: 'description', location: { country: 'España', region: 'region', @@ -85,6 +89,7 @@ describe('studies-section.helpers specs', () => { description: 'description2', institution: { name: 'name2', + description: 'description2', location: { country: 'Italia', region: 'region2', @@ -101,6 +106,7 @@ describe('studies-section.helpers specs', () => { description: 'description2', institution: { name: 'name2', + description: 'description2', location: { country: 'Italia', region: 'region2', @@ -123,6 +129,7 @@ describe('studies-section.helpers specs', () => { description: 'description', institution: { name: 'name', + description: 'description', location: { country: 'España', region: 'region', @@ -139,6 +146,7 @@ describe('studies-section.helpers specs', () => { description: 'description2', institution: { name: 'name2', + description: 'description2', location: { country: 'Italia', region: 'region2', @@ -161,6 +169,7 @@ describe('studies-section.helpers specs', () => { description: 'description', institution: { name: 'name', + description: 'description', location: { country: 'España', region: 'region', @@ -177,6 +186,7 @@ describe('studies-section.helpers specs', () => { description: 'description2', institution: { name: 'name2', + description: 'description2', location: { country: 'Italia', region: 'region2', @@ -201,6 +211,7 @@ describe('studies-section.helpers specs', () => { description: 'description2', institution: { name: 'name2', + description: 'description2', location: { country: 'Italia', region: 'region2', @@ -223,6 +234,7 @@ describe('studies-section.helpers specs', () => { description: 'description2', institution: { name: 'name2', + description: 'description2', location: { country: 'Italia', region: 'region2', diff --git a/packages/manfred-common/src/doc-parts/studies-section/studies-section.mapper.spec.ts b/packages/manfred-common/src/doc-parts/studies-section/studies-section.mapper.spec.ts index 4976e47d..7fe83fec 100644 --- a/packages/manfred-common/src/doc-parts/studies-section/studies-section.mapper.spec.ts +++ b/packages/manfred-common/src/doc-parts/studies-section/studies-section.mapper.spec.ts @@ -92,6 +92,7 @@ describe('studies-section.mapper specs', () => { description: 'description', institution: { name: 'name', + description: 'description', location: { country: 'España', region: 'region', @@ -136,6 +137,7 @@ describe('studies-section.mapper specs', () => { address: 'address', }, }, + linkedCompetences: [], }, { studyType: 'certification', @@ -173,6 +175,7 @@ describe('studies-section.mapper specs', () => { description: 'description', institution: { name: 'name', + description: 'description', location: { country: 'España', region: 'region', @@ -190,6 +193,7 @@ describe('studies-section.mapper specs', () => { description: 'description2', institution: { name: 'name2', + description: 'description2', location: { country: 'Italia', region: 'region2', diff --git a/packages/manfred-common/src/doc-parts/studies-section/studies-section.mapper.ts b/packages/manfred-common/src/doc-parts/studies-section/studies-section.mapper.ts index 54517518..2531a0bd 100644 --- a/packages/manfred-common/src/doc-parts/studies-section/studies-section.mapper.ts +++ b/packages/manfred-common/src/doc-parts/studies-section/studies-section.mapper.ts @@ -1,4 +1,4 @@ -import { ManfredAwesomicCV } from '@/model'; +import { Competence, ManfredAwesomicCV } from '@/model'; import { CountryType, Institution, StudiesSectionVm, StudyTypeWithTranslation } from './studies-section.vm'; import { studiesTypes, countryList } from './studies-section.constants'; import { sortedStudiesByStartDate } from './studies-section.helpers'; @@ -16,13 +16,13 @@ export const mapFromMacCvToStudiesSectionVm = (cv: ManfredAwesomicCV): StudiesSe const description = study?.description ?? ''; let institution: Institution = { name: study?.institution?.name ?? '', + description: study?.institution?.description ?? '', location: { country: study?.institution?.location?.country ?? '', region: study?.institution?.location?.region ?? '', address: study?.institution?.location?.address ?? '', }, }; - const mapStudyType = mapStudiesTypes(studyType, studiesTypes); const mapCountry = mapCountries(institution.location.country, countryList); institution = { ...institution, location: { ...institution.location, country: mapCountry } }; diff --git a/packages/manfred-common/src/doc-parts/studies-section/studies-section.vm.ts b/packages/manfred-common/src/doc-parts/studies-section/studies-section.vm.ts index 467e714e..5cd75a65 100644 --- a/packages/manfred-common/src/doc-parts/studies-section/studies-section.vm.ts +++ b/packages/manfred-common/src/doc-parts/studies-section/studies-section.vm.ts @@ -14,6 +14,7 @@ export interface StudiesSectionVm { export interface Institution { name: string; location: Location; + description: string; } export interface Location { diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/about-me-section/about-me-section.ejs b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/about-me-section/about-me-section.ejs new file mode 100644 index 00000000..9d61e836 --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/about-me-section/about-me-section.ejs @@ -0,0 +1,11 @@ +<%_ if (profile && profile !== 'undefined' ) { -%> +
+
+ + + +

<%- labels.ABOUT_ME_HEADING %>

+
+

<%= profile?.description %>

+
+<%_ } -%> diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/about-me-section/about-me-section.part.ts b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/about-me-section/about-me-section.part.ts new file mode 100644 index 00000000..e22d918a --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/about-me-section/about-me-section.part.ts @@ -0,0 +1,23 @@ +import ejs from 'ejs'; +import { ProfileSectionVm, mapFromMacCvToProfileSectionVm } from '@lemoncode/manfred-common/profile-section'; +import { ManfredAwesomicCV, Language, Settings } from '@/model'; +import { ISO_SPANISH_LANGUAGE } from '@/engine/engine.const'; +import { getLabels } from './labels'; +import aboutMeSection from './about-me-section.ejs?raw'; + +export const generateAboutMeSection = (cv: ManfredAwesomicCV, settings: Settings): string => { + const profileSectionVm = mapFromMacCvToProfileSectionVm(cv); + return generateAboutMeSectionInner(profileSectionVm, settings.language); +}; + +const generateAboutMeSectionInner = ( + profileSectionVm: ProfileSectionVm, + language: Language = ISO_SPANISH_LANGUAGE +): string => { + const rootObject = { + profile: profileSectionVm, + labels: getLabels(language), + }; + + return ejs.render(aboutMeSection, rootObject); +}; diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/about-me-section/index.ts b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/about-me-section/index.ts new file mode 100644 index 00000000..b0ee7d15 --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/about-me-section/index.ts @@ -0,0 +1 @@ +export * from './about-me-section.part'; diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/about-me-section/labels/about-me-english-labels.const.ts b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/about-me-section/labels/about-me-english-labels.const.ts new file mode 100644 index 00000000..7d85fc96 --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/about-me-section/labels/about-me-english-labels.const.ts @@ -0,0 +1,5 @@ +import { AboutMeLabels } from './about-me-labels.model'; + +export const englishAboutMeLabels: AboutMeLabels = { + ABOUT_ME_HEADING: 'About me', +}; diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/about-me-section/labels/about-me-labels.model.ts b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/about-me-section/labels/about-me-labels.model.ts new file mode 100644 index 00000000..ff37c169 --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/about-me-section/labels/about-me-labels.model.ts @@ -0,0 +1,3 @@ +export interface AboutMeLabels { + ABOUT_ME_HEADING: string; +} diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/about-me-section/labels/about-me-spanish-labels.const.ts b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/about-me-section/labels/about-me-spanish-labels.const.ts new file mode 100644 index 00000000..3aa4c27d --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/about-me-section/labels/about-me-spanish-labels.const.ts @@ -0,0 +1,5 @@ +import { AboutMeLabels } from './about-me-labels.model'; + +export const spanishAboutMeLabels: AboutMeLabels = { + ABOUT_ME_HEADING: 'Sobre mí', +}; diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/about-me-section/labels/index.ts b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/about-me-section/labels/index.ts new file mode 100644 index 00000000..cfad900e --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/about-me-section/labels/index.ts @@ -0,0 +1,15 @@ +import { Language } from '@/model'; +import { AboutMeLabels } from './about-me-labels.model'; +import { spanishAboutMeLabels } from './about-me-spanish-labels.const'; +import { englishAboutMeLabels } from './about-me-english-labels.const'; + +export const getLabels = (language: Language): AboutMeLabels => { + switch (language) { + case 'es': + return spanishAboutMeLabels; + case 'en': + return englishAboutMeLabels; + default: + throw new Error(`Language not supported: ${language}`); + } +}; diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/avatar-section/avatar-section.ejs b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/avatar-section/avatar-section.ejs new file mode 100644 index 00000000..e01a4efc --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/avatar-section/avatar-section.ejs @@ -0,0 +1,3 @@ +<%_ if (profile.avatarUrl) { -%> + +<%_ } -%> diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/avatar-section/avatar-section.part.ts b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/avatar-section/avatar-section.part.ts new file mode 100644 index 00000000..14f49aa5 --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/avatar-section/avatar-section.part.ts @@ -0,0 +1,16 @@ +import { ManfredAwesomicCV } from '@/model'; +import { ProfileSectionVm, mapFromMacCvToProfileSectionVm } from '@lemoncode/manfred-common/profile-section'; +import avatarSection from './avatar-section.ejs?raw'; +import ejs from 'ejs'; + +export const generateAvatarSection = (cv: ManfredAwesomicCV): string => { + const profileSectionVm = mapFromMacCvToProfileSectionVm(cv); + return generateAvatarSectionInner(profileSectionVm); +}; + +const generateAvatarSectionInner = (profileSectionVm: ProfileSectionVm): string => { + const rootObject = { + profile: profileSectionVm, + }; + return ejs.render(avatarSection, rootObject); +}; diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/avatar-section/index.ts b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/avatar-section/index.ts new file mode 100644 index 00000000..658abfc8 --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/avatar-section/index.ts @@ -0,0 +1 @@ +export * from './avatar-section.part'; diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/experience-section/experience-section.ejs b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/experience-section/experience-section.ejs new file mode 100644 index 00000000..06216ffb --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/experience-section/experience-section.ejs @@ -0,0 +1,57 @@ +<%_ if(experienceCollection && experienceCollection.length !== 0) { -%> +
+
+ + + +

<%- labels.EXPERIENCE_CAREER_HEADING %>

+
+ <%_ for(const experience of experienceCollection) { -%> +
+

<%= experience.name %>

+

<%= experience.roles[0].name %>

+ +
+ <%_ if(experience.type) { -%> +

<%= experience.description %>

+ <%_ } -%> + <%_ if(experience.roles[0].challenges && experience.roles[0].challenges.length !== 0){ -%> +
    + <%_ for(const challenge of experience.roles[0].challenges){ -%> +
  • <%= challenge.description %>
  • + <%_ } -%> +
+ <%_ } -%> +
+ <%_ if(experience.url) { -%> + <%= experience.name %> + <%_ } -%> + <%_ if (experience.roles[0].competences && experience.roles[0].competence !== 0) { -%> +

<%= labels.TECH_TOOLS_HEADING %>

+
    + <%_ for(const competence of experience.roles[0].competences) { -%> +
  • <%= competence.name %>
  • + <%_ } -%> +
+ <%_ } -%> +
+ <%_}-%> +
+<%_}-%> diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/experience-section/experience-section.part.ts b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/experience-section/experience-section.part.ts new file mode 100644 index 00000000..6e8a91f8 --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/experience-section/experience-section.part.ts @@ -0,0 +1,22 @@ +import { ExperienceVm, mapFromMacCvToExperienceSectionVm } from '@lemoncode/manfred-common/experience-section'; +import { ManfredAwesomicCV, Settings, Language } from '@/model'; +import { ISO_SPANISH_LANGUAGE } from '@/engine/engine.const'; +import { getLabels } from './labels'; +import ejs from 'ejs'; +import experienceTemplate from './experience-section.ejs?raw'; + +export const generateExperienceSection = (cv: ManfredAwesomicCV, settings: Settings): string => { + const experienceSectionVm = mapFromMacCvToExperienceSectionVm(cv); + return generateExperienceSectionInner(experienceSectionVm, settings.language); +}; + +const generateExperienceSectionInner = ( + experienceSectionVm: ExperienceVm[], + language: Language = ISO_SPANISH_LANGUAGE +): string => { + const rootObject = { + experienceCollection: experienceSectionVm, + labels: getLabels(language), + }; + return ejs.render(experienceTemplate, rootObject); +}; diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/experience-section/index.ts b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/experience-section/index.ts new file mode 100644 index 00000000..fe1418c2 --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/experience-section/index.ts @@ -0,0 +1 @@ +export * from './experience-section.part'; diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/experience-section/labels/experience-english-labels.const.ts b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/experience-section/labels/experience-english-labels.const.ts new file mode 100644 index 00000000..e6a560fe --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/experience-section/labels/experience-english-labels.const.ts @@ -0,0 +1,7 @@ +import { ExperienceLabels } from './experience-label.model'; + +export const englishExperienceLabels: ExperienceLabels = { + EXPERIENCE_CAREER_HEADING: 'Experience / Career', + TECH_TOOLS_HEADING: 'Technologies and Tools', + CURRENT_DATE: 'Now', +}; diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/experience-section/labels/experience-label.model.ts b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/experience-section/labels/experience-label.model.ts new file mode 100644 index 00000000..2685380e --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/experience-section/labels/experience-label.model.ts @@ -0,0 +1,5 @@ +export interface ExperienceLabels { + EXPERIENCE_CAREER_HEADING: string; + TECH_TOOLS_HEADING: string; + CURRENT_DATE: string; +} diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/experience-section/labels/experience-spanish-labels.const.ts b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/experience-section/labels/experience-spanish-labels.const.ts new file mode 100644 index 00000000..15d77d02 --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/experience-section/labels/experience-spanish-labels.const.ts @@ -0,0 +1,7 @@ +import { ExperienceLabels } from './experience-label.model'; + +export const spanishExperienceLabels: ExperienceLabels = { + EXPERIENCE_CAREER_HEADING: 'Experiencia / Carrera', + TECH_TOOLS_HEADING: 'Tecnologias y Herramientas', + CURRENT_DATE: 'Actualidad', +}; diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/experience-section/labels/index.ts b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/experience-section/labels/index.ts new file mode 100644 index 00000000..bf9c695e --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/experience-section/labels/index.ts @@ -0,0 +1,15 @@ +import { Language } from '@/model'; +import { ExperienceLabels } from './experience-label.model'; +import { spanishExperienceLabels } from './experience-spanish-labels.const'; +import { englishExperienceLabels } from './experience-english-labels.const'; + +export const getLabels = (language: Language): ExperienceLabels => { + switch (language) { + case 'es': + return spanishExperienceLabels; + case 'en': + return englishExperienceLabels; + default: + throw new Error(`Language not supported: ${language}`); + } +}; diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/hard-skills-section/hard-skills-section.ejs b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/hard-skills-section/hard-skills-section.ejs new file mode 100644 index 00000000..c28cf40b --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/hard-skills-section/hard-skills-section.ejs @@ -0,0 +1,19 @@ +<%_ if(hardSkillsCollection && hardSkillsCollection.length !== 0) { -%> +
+
+ + + +

<%- labels.HARD_SKILLS_HEADING %>

+
+
    + <%_ for (const item of hardSkillsCollection) { -%> +
  • + + + <%= item?.skill?.name %> +
  • + <%_ } -%> +
+
+<%_ } -%> diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/hard-skills-section/hard-skills-section.part.ts b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/hard-skills-section/hard-skills-section.part.ts new file mode 100644 index 00000000..3b815663 --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/hard-skills-section/hard-skills-section.part.ts @@ -0,0 +1,22 @@ +import { ManfredAwesomicCV, Settings, Language } from '@/model'; +import { HardSkillVM, mapFromCvToHardSkillVm } from '@lemoncode/manfred-common/hard-skill-section'; +import { ISO_SPANISH_LANGUAGE } from '@/engine/engine.const'; +import { getLabels } from './labels'; +import ejs from 'ejs'; +import hardSkillsTemplate from './hard-skills-section.ejs?raw'; + +export const generateHardSkillsSection = (cv: ManfredAwesomicCV, settings: Settings): string => { + const hardSkillsSectionVm = mapFromCvToHardSkillVm(cv); + return generateHardSkillSectionInner(hardSkillsSectionVm, settings.language); +}; + +const generateHardSkillSectionInner = ( + hardSkillsSectionVm: HardSkillVM[], + language: Language = ISO_SPANISH_LANGUAGE +): string => { + const rootObject = { + hardSkillsCollection: hardSkillsSectionVm, + labels: getLabels(language), + }; + return ejs.render(hardSkillsTemplate, rootObject); +}; diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/hard-skills-section/index.ts b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/hard-skills-section/index.ts new file mode 100644 index 00000000..8f718aca --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/hard-skills-section/index.ts @@ -0,0 +1 @@ +export * from './hard-skills-section.part'; diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/hard-skills-section/labels/hard-skills-english-labels.const.ts b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/hard-skills-section/labels/hard-skills-english-labels.const.ts new file mode 100644 index 00000000..57fc749e --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/hard-skills-section/labels/hard-skills-english-labels.const.ts @@ -0,0 +1,5 @@ +import { HardSkillsLabels } from './hard-skills-label.model'; + +export const englishHardSkillsLabels: HardSkillsLabels = { + HARD_SKILLS_HEADING: 'Hard Skills', +}; diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/hard-skills-section/labels/hard-skills-label.model.ts b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/hard-skills-section/labels/hard-skills-label.model.ts new file mode 100644 index 00000000..c054c0db --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/hard-skills-section/labels/hard-skills-label.model.ts @@ -0,0 +1,3 @@ +export interface HardSkillsLabels { + HARD_SKILLS_HEADING: string; +} diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/hard-skills-section/labels/hard-skills-spanish-labels.const.ts b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/hard-skills-section/labels/hard-skills-spanish-labels.const.ts new file mode 100644 index 00000000..0aa674aa --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/hard-skills-section/labels/hard-skills-spanish-labels.const.ts @@ -0,0 +1,5 @@ +import { HardSkillsLabels } from './hard-skills-label.model'; + +export const spanishHardSkillsLabels: HardSkillsLabels = { + HARD_SKILLS_HEADING: 'Habilidades', +}; diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/hard-skills-section/labels/index.ts b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/hard-skills-section/labels/index.ts new file mode 100644 index 00000000..2c8f54f5 --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/hard-skills-section/labels/index.ts @@ -0,0 +1,15 @@ +import { Language } from '@/model'; +import { HardSkillsLabels } from './hard-skills-label.model'; +import { spanishHardSkillsLabels } from './hard-skills-spanish-labels.const'; +import { englishHardSkillsLabels } from './hard-skills-english-labels.const'; + +export const getLabels = (language: Language): HardSkillsLabels => { + switch (language) { + case 'es': + return spanishHardSkillsLabels; + case 'en': + return englishHardSkillsLabels; + default: + throw new Error(`Language not supported: ${language}`); + } +}; diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/header-element-end/header-element-end.ejs b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/header-element-end/header-element-end.ejs new file mode 100644 index 00000000..9fca915f --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/header-element-end/header-element-end.ejs @@ -0,0 +1 @@ + diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/header-element-end/header-element-end.part.ts b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/header-element-end/header-element-end.part.ts new file mode 100644 index 00000000..8412032b --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/header-element-end/header-element-end.part.ts @@ -0,0 +1,4 @@ +import ejs from 'ejs'; +import headerElementEndTemplate from './header-element-end.ejs?raw'; + +export const generateHeaderElementEnd = (): string => ejs.render(headerElementEndTemplate); diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/header-element-end/index.ts b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/header-element-end/index.ts new file mode 100644 index 00000000..a3cb12e2 --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/header-element-end/index.ts @@ -0,0 +1 @@ +export * from './header-element-end.part'; diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/header-element-start/header-element-start.ejs b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/header-element-start/header-element-start.ejs new file mode 100644 index 00000000..39ffd5ec --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/header-element-start/header-element-start.ejs @@ -0,0 +1 @@ +
diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/header-element-start/header-element-start.part.ts b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/header-element-start/header-element-start.part.ts new file mode 100644 index 00000000..df24cee8 --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/header-element-start/header-element-start.part.ts @@ -0,0 +1,4 @@ +import ejs from 'ejs'; +import headerElementStartTemplate from './header-element-start.ejs?raw'; + +export const generateHeaderElementStart = (): string => ejs.render(headerElementStartTemplate); diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/header-element-start/index.ts b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/header-element-start/index.ts new file mode 100644 index 00000000..9eca2091 --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/header-element-start/index.ts @@ -0,0 +1 @@ +export * from './header-element-start.part'; diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/header-section-end/header-section-end.ejs b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/header-section-end/header-section-end.ejs new file mode 100644 index 00000000..5eee65a1 --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/header-section-end/header-section-end.ejs @@ -0,0 +1 @@ + diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/header-section-end/header-section-end.part.ts b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/header-section-end/header-section-end.part.ts new file mode 100644 index 00000000..9cb9d222 --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/header-section-end/header-section-end.part.ts @@ -0,0 +1,4 @@ +import ejs from 'ejs'; +import HeaderSectionEndTemplate from './header-section-end.ejs?raw'; + +export const generateHeaderSectionEnd = (): string => ejs.render(HeaderSectionEndTemplate); diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/header-section-end/index.ts b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/header-section-end/index.ts new file mode 100644 index 00000000..1b131094 --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/header-section-end/index.ts @@ -0,0 +1 @@ +export * from './header-section-end.part'; diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/header-section-start/header-section-start.ejs b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/header-section-start/header-section-start.ejs new file mode 100644 index 00000000..96d889e2 --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/header-section-start/header-section-start.ejs @@ -0,0 +1,3 @@ +
+ + diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/header-section-start/header-section-start.part.ts b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/header-section-start/header-section-start.part.ts new file mode 100644 index 00000000..e6d589a5 --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/header-section-start/header-section-start.part.ts @@ -0,0 +1,4 @@ +import ejs from 'ejs'; +import HeaderSectionStartTemplate from './header-section-start.ejs?raw'; + +export const generateHeaderSectionStart = (): string => ejs.render(HeaderSectionStartTemplate); diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/header-section-start/index.ts b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/header-section-start/index.ts new file mode 100644 index 00000000..9637b3c6 --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/header-section-start/index.ts @@ -0,0 +1 @@ +export * from './header-section-start.part'; diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/html-document-end/html-document-end.ejs b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/html-document-end/html-document-end.ejs new file mode 100644 index 00000000..5b6e2d65 --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/html-document-end/html-document-end.ejs @@ -0,0 +1,3 @@ + + + diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/html-document-end/html-document-end.part.ts b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/html-document-end/html-document-end.part.ts new file mode 100644 index 00000000..8d16be47 --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/html-document-end/html-document-end.part.ts @@ -0,0 +1,4 @@ +import ejs from 'ejs'; +import htmldocumentEndTemplate from './html-document-end.ejs?raw'; + +export const generateHtmlDocumentEnd = (): string => ejs.render(htmldocumentEndTemplate); diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/html-document-end/index.ts b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/html-document-end/index.ts new file mode 100644 index 00000000..b8cab897 --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/html-document-end/index.ts @@ -0,0 +1 @@ +export * from './html-document-end.part'; diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/html-document-start/html-document-start.ejs b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/html-document-start/html-document-start.ejs new file mode 100644 index 00000000..d2134060 --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/html-document-start/html-document-start.ejs @@ -0,0 +1,400 @@ + + + + + + + + + + + + + CV Manfred Export + + + +
diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/html-document-start/html-document-start.part.ts b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/html-document-start/html-document-start.part.ts new file mode 100644 index 00000000..8d99c760 --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/html-document-start/html-document-start.part.ts @@ -0,0 +1,4 @@ +import ejs from 'ejs'; +import htmlDocumentStartTemplate from './html-document-start.ejs?raw'; + +export const generateHtmlDocumentStart = () => ejs.render(htmlDocumentStartTemplate); diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/html-document-start/index.ts b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/html-document-start/index.ts new file mode 100644 index 00000000..d4b22932 --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/html-document-start/index.ts @@ -0,0 +1 @@ +export * from './html-document-start.part'; diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/index.ts b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/index.ts new file mode 100644 index 00000000..151abd9f --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/index.ts @@ -0,0 +1,17 @@ +export * from './html-document-start'; +export * from './html-document-end'; +export * from './header-element-start'; +export * from './avatar-section'; +export * from './header-element-end'; +export * from './header-section-start'; +export * from './header-section-end'; +export * from './userInfo-section'; +export * from './main-element-start'; +export * from './main-element-end'; +export * from './about-me-section'; +export * from './language-section'; +export * from './hard-skills-section'; +export * from './soft-skills-section'; +export * from './experience-section'; +export * from './studies-section'; +export * from './relevants-links-section'; diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/language-section/index.ts b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/language-section/index.ts new file mode 100644 index 00000000..c79bff55 --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/language-section/index.ts @@ -0,0 +1 @@ +export * from './language-section.part'; diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/language-section/labels/index.ts b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/language-section/labels/index.ts new file mode 100644 index 00000000..eca31dab --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/language-section/labels/index.ts @@ -0,0 +1,15 @@ +import { Language } from '@/model'; +import { LanguageLabels } from './language-label.model'; +import { spanishLanguageLabels } from './language-spanish-labels.const'; +import { englishLanguageLabels } from './language-english-labels.const'; + +export const getLabels = (language: Language): LanguageLabels => { + switch (language) { + case 'es': + return spanishLanguageLabels; + case 'en': + return englishLanguageLabels; + default: + throw new Error(`Language not supported: ${language}`); + } +}; diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/language-section/labels/language-english-labels.const.ts b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/language-section/labels/language-english-labels.const.ts new file mode 100644 index 00000000..62a2acf8 --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/language-section/labels/language-english-labels.const.ts @@ -0,0 +1,9 @@ +import { LanguageLabels } from './language-label.model'; + +export const englishLanguageLabels: LanguageLabels = { + LANGUAGE_HEADING: 'Languages', + LEVEL_ONE: 'Native/Bilingual', + LEVEL_TWO: 'Fluent', + LEVEL_THREE: 'Intermediate', + LEVEL_FOUR: 'Basic', +}; diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/language-section/labels/language-label.model.ts b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/language-section/labels/language-label.model.ts new file mode 100644 index 00000000..8b966ee7 --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/language-section/labels/language-label.model.ts @@ -0,0 +1,7 @@ +export interface LanguageLabels { + LANGUAGE_HEADING: string; + LEVEL_ONE: string; + LEVEL_TWO: string; + LEVEL_THREE: string; + LEVEL_FOUR: string; +} diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/language-section/labels/language-spanish-labels.const.ts b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/language-section/labels/language-spanish-labels.const.ts new file mode 100644 index 00000000..3b285d9f --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/language-section/labels/language-spanish-labels.const.ts @@ -0,0 +1,9 @@ +import { LanguageLabels } from './language-label.model'; + +export const spanishLanguageLabels: LanguageLabels = { + LANGUAGE_HEADING: 'Idiomas', + LEVEL_ONE: 'Nativo/Bilingue', + LEVEL_TWO: 'Fluido', + LEVEL_THREE: 'Intermedio', + LEVEL_FOUR: 'Basico', +}; diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/language-section/language-section.ejs b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/language-section/language-section.ejs new file mode 100644 index 00000000..67935d48 --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/language-section/language-section.ejs @@ -0,0 +1,54 @@ +<%_ if(languageCollection && languageCollection.length !== 0) { -%> +
+
+ + + +

<%= labels.LANGUAGE_HEADING %>

+
+
    + <%_ for(const language of languageCollection) { -%> +
  • <%= language.name %> +
    + <%_ if(language.level === 'Habilidad básica' || language.level === 'Habilidad limitada en el trabajo') { -%> + + + + + + +

    <%= labels.LEVEL_FOUR %>

    + <%_ } -%> + <%_ if(language.level === 'Habilidad profesional en el trabajo') { -%> + + + + + + +

    <%= labels.LEVEL_THREE %>

    + <%_ } -%> + <%_ if(language.level === 'Habilidad profesional completo') { -%> + + + + + + +

    <%= labels.LEVEL_TWO %>

    + <%_ } -%> + <%_ if(language.level === 'Habilidad nativo o bilingüe') { -%> + + + + + + +

    <%= labels.LEVEL_ONE %>

    + <%_ } -%> +
    +
  • + <%_ } -%> +
+
+<%_ } -%> diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/language-section/language-section.part.ts b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/language-section/language-section.part.ts new file mode 100644 index 00000000..7ed3bf96 --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/language-section/language-section.part.ts @@ -0,0 +1,22 @@ +import { ManfredAwesomicCV, Settings, Language } from '@/model'; +import { LanguageVm, mapFromCvToLanguageVm } from '@lemoncode/manfred-common/language-section'; +import { ISO_SPANISH_LANGUAGE } from '@/engine/engine.const'; +import { getLabels } from './labels'; +import ejs from 'ejs'; +import languageTemplate from './language-section.ejs?raw'; + +export const generateLanguageSection = (cv: ManfredAwesomicCV, settings: Settings): string => { + const languageSectionVm = mapFromCvToLanguageVm(cv); + return generateLanguageSectionInner(languageSectionVm, settings.language); +}; + +const generateLanguageSectionInner = ( + languageSectionVm: LanguageVm[], + language: Language = ISO_SPANISH_LANGUAGE +): string => { + const rootObject = { + languageCollection: languageSectionVm, + labels: getLabels(language), + }; + return ejs.render(languageTemplate, rootObject); +}; diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/main-element-end/index.ts b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/main-element-end/index.ts new file mode 100644 index 00000000..43da82c1 --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/main-element-end/index.ts @@ -0,0 +1 @@ +export * from './main-element-end.part'; diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/main-element-end/main-element-end.ejs b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/main-element-end/main-element-end.ejs new file mode 100644 index 00000000..0f4bf453 --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/main-element-end/main-element-end.ejs @@ -0,0 +1 @@ + diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/main-element-end/main-element-end.part.ts b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/main-element-end/main-element-end.part.ts new file mode 100644 index 00000000..ad9c1b96 --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/main-element-end/main-element-end.part.ts @@ -0,0 +1,4 @@ +import ejs from 'ejs'; +import mainElementEndTemplate from './main-element-end.ejs?raw'; + +export const generateMainElementEnd = (): string => ejs.render(mainElementEndTemplate); diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/main-element-start/index.ts b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/main-element-start/index.ts new file mode 100644 index 00000000..5286e5ba --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/main-element-start/index.ts @@ -0,0 +1 @@ +export * from './main-element-start.part'; diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/main-element-start/main-element-start.ejs b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/main-element-start/main-element-start.ejs new file mode 100644 index 00000000..506713e2 --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/main-element-start/main-element-start.ejs @@ -0,0 +1 @@ +
diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/main-element-start/main-element-start.part.ts b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/main-element-start/main-element-start.part.ts new file mode 100644 index 00000000..0a903b79 --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/main-element-start/main-element-start.part.ts @@ -0,0 +1,4 @@ +import ejs from 'ejs'; +import mainElementTemplate from './main-element-start.ejs?raw'; + +export const generateMainElementStart = (): string => ejs.render(mainElementTemplate); diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/relevants-links-section/index.ts b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/relevants-links-section/index.ts new file mode 100644 index 00000000..12fe55f6 --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/relevants-links-section/index.ts @@ -0,0 +1 @@ +export * from './relevants-links-section.part'; diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/relevants-links-section/relevants-links-section.ejs b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/relevants-links-section/relevants-links-section.ejs new file mode 100644 index 00000000..5a72ea55 --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/relevants-links-section/relevants-links-section.ejs @@ -0,0 +1,70 @@ +<%_ if (profile.relevantLinks && profile.relevantLinks.length !== 0) { -%> + <%_ for (const link of profile?.relevantLinks) { -%> + +<%_ } -%> diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/relevants-links-section/relevants-links-section.part.ts b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/relevants-links-section/relevants-links-section.part.ts new file mode 100644 index 00000000..f217e2d0 --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/relevants-links-section/relevants-links-section.part.ts @@ -0,0 +1,15 @@ +import { ManfredAwesomicCV } from '@/model'; +import { ProfileSectionVm, mapFromMacCvToProfileSectionVm } from '@lemoncode/manfred-common/profile-section'; +import ejs from 'ejs'; +import relevantLinksTemplate from './relevants-links-section.ejs?raw'; + +export const generateRelevantLinksSection = (cv: ManfredAwesomicCV): string => { + const profileSectionVm = mapFromMacCvToProfileSectionVm(cv); + return generateRelevantLinksSectionInner(profileSectionVm); +}; +const generateRelevantLinksSectionInner = (profileSectionVm: ProfileSectionVm): string => { + const rootObject = { + profile: profileSectionVm, + }; + return ejs.render(relevantLinksTemplate, rootObject); +}; diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/soft-skills-section/index.ts b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/soft-skills-section/index.ts new file mode 100644 index 00000000..caf64397 --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/soft-skills-section/index.ts @@ -0,0 +1 @@ +export * from './soft-skills-section.part'; diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/soft-skills-section/labels/index.ts b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/soft-skills-section/labels/index.ts new file mode 100644 index 00000000..9529c12a --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/soft-skills-section/labels/index.ts @@ -0,0 +1,15 @@ +import { Language } from '@/model'; +import { SoftSkillsLabels } from './soft-skills-label.model'; +import { spanishSoftSkillsLabels } from './soft-skills-spanish-labels.const'; +import { englishSoftSkillsLabels } from './soft-skills-english-labels.const'; + +export const getLabels = (language: Language): SoftSkillsLabels => { + switch (language) { + case 'es': + return spanishSoftSkillsLabels; + case 'en': + return englishSoftSkillsLabels; + default: + throw new Error(`Language not supported: ${language}`); + } +}; diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/soft-skills-section/labels/soft-skills-english-labels.const.ts b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/soft-skills-section/labels/soft-skills-english-labels.const.ts new file mode 100644 index 00000000..d2510c35 --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/soft-skills-section/labels/soft-skills-english-labels.const.ts @@ -0,0 +1,5 @@ +import { SoftSkillsLabels } from './soft-skills-label.model'; + +export const englishSoftSkillsLabels: SoftSkillsLabels = { + SOFT_SKILLS_HEADING: 'Soft skills', +}; diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/soft-skills-section/labels/soft-skills-label.model.ts b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/soft-skills-section/labels/soft-skills-label.model.ts new file mode 100644 index 00000000..602ec990 --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/soft-skills-section/labels/soft-skills-label.model.ts @@ -0,0 +1,3 @@ +export interface SoftSkillsLabels { + SOFT_SKILLS_HEADING: string; +} diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/soft-skills-section/labels/soft-skills-spanish-labels.const.ts b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/soft-skills-section/labels/soft-skills-spanish-labels.const.ts new file mode 100644 index 00000000..0af0b5ae --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/soft-skills-section/labels/soft-skills-spanish-labels.const.ts @@ -0,0 +1,5 @@ +import { SoftSkillsLabels } from './soft-skills-label.model'; + +export const spanishSoftSkillsLabels: SoftSkillsLabels = { + SOFT_SKILLS_HEADING: 'Competencias', +}; diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/soft-skills-section/soft-skills-section.ejs b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/soft-skills-section/soft-skills-section.ejs new file mode 100644 index 00000000..4972f6cd --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/soft-skills-section/soft-skills-section.ejs @@ -0,0 +1,15 @@ +<%_ if(softSkillsCollection && softSkillsCollection.length !== 0) { -%> +
+
+ + + +

<%= labels.SOFT_SKILLS_HEADING %>

+
+
    + <%_ for(const softSkill of softSkillsCollection) { -%> +
  • <%= softSkill.skill.name %>
  • + <%_ } -%> +
+
+<%_ } -%> diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/soft-skills-section/soft-skills-section.part.ts b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/soft-skills-section/soft-skills-section.part.ts new file mode 100644 index 00000000..9e3a9fbc --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/soft-skills-section/soft-skills-section.part.ts @@ -0,0 +1,22 @@ +import ejs from 'ejs'; +import { SoftSkillVM, mapFromCvToSoftSkillVm } from '@lemoncode/manfred-common/soft-skill-section'; +import { ISO_SPANISH_LANGUAGE } from '@/engine/engine.const'; +import { ManfredAwesomicCV, Settings, Language } from '@/model'; +import { getLabels } from './labels'; +import softSkillsTemplate from './soft-skills-section.ejs?raw'; + +export const generateSoftSkillsSection = (cv: ManfredAwesomicCV, settings: Settings): string => { + const softSkillsSectionVm = mapFromCvToSoftSkillVm(cv); + return generateSoftSkillsSectionInner(softSkillsSectionVm, settings.language); +}; + +const generateSoftSkillsSectionInner = ( + softSkillsSectionVm: SoftSkillVM[], + language: Language = ISO_SPANISH_LANGUAGE +): string => { + const rootObject = { + softSkillsCollection: softSkillsSectionVm, + labels: getLabels(language), + }; + return ejs.render(softSkillsTemplate, rootObject); +}; diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/studies-section/index.ts b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/studies-section/index.ts new file mode 100644 index 00000000..bd83d5eb --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/studies-section/index.ts @@ -0,0 +1 @@ +export * from './studies-section.part'; diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/studies-section/labels/index.ts b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/studies-section/labels/index.ts new file mode 100644 index 00000000..d0f8daeb --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/studies-section/labels/index.ts @@ -0,0 +1,15 @@ +import { Language } from '@/model'; +import { StudiesLabels } from './studies-label.model'; +import { spanishStudiesLabels } from './studies-spanish-labels.const'; +import { englishStudiesLabels } from './studies-english-labels.const'; + +export const getLabels = (language: Language): StudiesLabels => { + switch (language) { + case 'es': + return spanishStudiesLabels; + case 'en': + return englishStudiesLabels; + default: + throw new Error(`Language not supported: ${language}`); + } +}; diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/studies-section/labels/studies-english-labels.const.ts b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/studies-section/labels/studies-english-labels.const.ts new file mode 100644 index 00000000..b6c79a75 --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/studies-section/labels/studies-english-labels.const.ts @@ -0,0 +1,7 @@ +import { StudiesLabels } from './studies-label.model'; + +export const englishStudiesLabels: StudiesLabels = { + STUDIES_HEADING: 'Studies', + TECH_TOOLS_HEADING: 'Technologies and Tools', + CURRENT_DATE: 'Now', +}; diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/studies-section/labels/studies-label.model.ts b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/studies-section/labels/studies-label.model.ts new file mode 100644 index 00000000..2337736a --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/studies-section/labels/studies-label.model.ts @@ -0,0 +1,5 @@ +export interface StudiesLabels { + STUDIES_HEADING: string; + TECH_TOOLS_HEADING: string; + CURRENT_DATE: string; +} diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/studies-section/labels/studies-spanish-labels.const.ts b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/studies-section/labels/studies-spanish-labels.const.ts new file mode 100644 index 00000000..328dfbb9 --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/studies-section/labels/studies-spanish-labels.const.ts @@ -0,0 +1,7 @@ +import { StudiesLabels } from './studies-label.model'; + +export const spanishStudiesLabels: StudiesLabels = { + STUDIES_HEADING: 'Estudios', + TECH_TOOLS_HEADING: 'Tecnologias y Herramientas', + CURRENT_DATE: 'Actualidad', +}; diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/studies-section/studies-section.ejs b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/studies-section/studies-section.ejs new file mode 100644 index 00000000..128f0643 --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/studies-section/studies-section.ejs @@ -0,0 +1,48 @@ +<%_ if(studiesCollection && studiesCollection.length !== 0) { -%> +
+
+ + + +

<%= labels.STUDIES_HEADING %>

+
+ <%_ for (const study of studiesCollection) { -%> +
+

<%= study.name %>

+ <%_ if (study.institution) { -%> +

<%- study.institution.name %>

+ <%_ } -%> + +
+

<%= study.institution.description %>

+
+ <%_ if(study.linkedCompetences && study.linkedCompetences.length !== 0) { -%> +

<%= labels.TECH_TOOLS_HEADING %>

+
    + <%_ for(const competence of study.linkedCompetences) { -%> +
  • <%= competence.name %>
  • + <%_}-%> +
+ <%_}-%> +
+ <%_}-%> +
+<%_}-%> diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/studies-section/studies-section.part.ts b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/studies-section/studies-section.part.ts new file mode 100644 index 00000000..bc3ce12e --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/studies-section/studies-section.part.ts @@ -0,0 +1,22 @@ +import { StudiesSectionVm, mapFromMacCvToStudiesSectionVm } from '@lemoncode/manfred-common/studies-section'; +import { ManfredAwesomicCV, Settings, Language } from '@/model'; +import { ISO_SPANISH_LANGUAGE } from '@/engine/engine.const'; +import { getLabels } from './labels'; +import ejs from 'ejs'; +import studiesTemplate from './studies-section.ejs?raw'; + +export const generateStudiesSection = (cv: ManfredAwesomicCV, settings: Settings): string => { + const studiesSectionVm = mapFromMacCvToStudiesSectionVm(cv); + return generateStudiesSectionInner(studiesSectionVm, settings.language); +}; + +const generateStudiesSectionInner = ( + studiesSectionVm: StudiesSectionVm[], + language: Language = ISO_SPANISH_LANGUAGE +): string => { + const rootObject = { + studiesCollection: studiesSectionVm, + labels: getLabels(language), + }; + return ejs.render(studiesTemplate, rootObject); +}; diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/userInfo-section/index.ts b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/userInfo-section/index.ts new file mode 100644 index 00000000..c3808446 --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/userInfo-section/index.ts @@ -0,0 +1 @@ +export * from './userInfo-section.part'; diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/userInfo-section/userInfo-section.ejs b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/userInfo-section/userInfo-section.ejs new file mode 100644 index 00000000..e75aad4a --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/userInfo-section/userInfo-section.ejs @@ -0,0 +1,30 @@ +<%_ if (profile && profile !== undefined) { -%> +
+ + + +
+

<%= profile.name %>

+
+

<%= profile?.surnames %>

+

<%= profile?.title %>

+
+ <%_ if (profile.city || profile.country) { -%> +
+ + + + + + + + + + +

<%= profile.city ?? '' %> <%= profile?.country ? ', ' + profile?.country : '' %>

+
+ <%_}-%> +<%_}-%> diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/userInfo-section/userInfo-section.part.ts b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/userInfo-section/userInfo-section.part.ts new file mode 100644 index 00000000..bb38bcbc --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/html-parts/userInfo-section/userInfo-section.part.ts @@ -0,0 +1,16 @@ +import { ManfredAwesomicCV } from '@/model'; +import { ProfileSectionVm, mapFromMacCvToProfileSectionVm } from '@lemoncode/manfred-common/profile-section'; +import userInfoSection from './userInfo-section.ejs?raw'; +import ejs from 'ejs'; + +export const generateUserInfoSection = (cv: ManfredAwesomicCV): string => { + const profileSectionVm = mapFromMacCvToProfileSectionVm(cv); + return generateUserInfoSectionInner(profileSectionVm); +}; + +const generateUserInfoSectionInner = (profileSectionVm: ProfileSectionVm): string => { + const rootObject = { + profile: profileSectionVm, + }; + return ejs.render(userInfoSection, rootObject); +}; diff --git a/packages/manfred2html/src/engine/cv-x-wing-squadron/index.ts b/packages/manfred2html/src/engine/cv-x-wing-squadron/index.ts new file mode 100644 index 00000000..e3e91b0c --- /dev/null +++ b/packages/manfred2html/src/engine/cv-x-wing-squadron/index.ts @@ -0,0 +1,59 @@ +import { ManfredAwesomicCV, Settings } from '@/model'; +import { + generateHtmlDocumentStart, + generateHtmlDocumentEnd, + generateHeaderElementEnd, + generateHeaderElementStart, + generateHeaderSectionStart, + generateHeaderSectionEnd, + generateAvatarSection, + generateUserInfoSection, + generateMainElementStart, + generateAboutMeSection, + generateMainElementEnd, + generateLanguageSection, + generateHardSkillsSection, + generateSoftSkillsSection, + generateExperienceSection, + generateStudiesSection, + generateRelevantLinksSection, +} from './html-parts'; + +export const exportManfredJsonToCVXWingHTML = (manfredJsonContent: ManfredAwesomicCV, settings: Settings): string => { + const htmlDocumentStart = generateHtmlDocumentStart(); + const headerElementStart = generateHeaderElementStart(); + const headerSectionStart = generateHeaderSectionStart(); + const headerSectionEnd = generateHeaderSectionEnd(); + const avatarSection = generateAvatarSection(manfredJsonContent); + const userInfoSection = generateUserInfoSection(manfredJsonContent); + const relevantLinksSection = generateRelevantLinksSection(manfredJsonContent); + const headerElementEnd = generateHeaderElementEnd(); + const mainElementStart = generateMainElementStart(); + const aboutMeSection = generateAboutMeSection(manfredJsonContent, settings); + const languageSection = generateLanguageSection(manfredJsonContent, settings); + const hardSkillsSection = generateHardSkillsSection(manfredJsonContent, settings); + const softSkillsSection = generateSoftSkillsSection(manfredJsonContent, settings); + const experienceSection = generateExperienceSection(manfredJsonContent, settings); + const studiesSection = generateStudiesSection(manfredJsonContent, settings); + const mainElementEnd = generateMainElementEnd(); + const htmlDocumentEnd = generateHtmlDocumentEnd(); + return ` + ${htmlDocumentStart} + ${headerElementStart} + ${avatarSection} + ${headerSectionStart} + ${userInfoSection} + ${relevantLinksSection} + ${headerSectionEnd} + ${headerElementEnd} + ${mainElementStart} + ${aboutMeSection} + ${languageSection} + ${hardSkillsSection} + ${softSkillsSection} + ${experienceSection} + ${studiesSection} + ${mainElementEnd} + ${htmlDocumentEnd} + `; +}; diff --git a/packages/manfred2html/src/engine/index.ts b/packages/manfred2html/src/engine/index.ts index c80d85fb..edbf007d 100644 --- a/packages/manfred2html/src/engine/index.ts +++ b/packages/manfred2html/src/engine/index.ts @@ -2,6 +2,8 @@ import { ManfredAwesomicCV, ExportHTMLSettings } from '@/model'; import { mapExportHTMLSettingsToSettings } from '@/mappers'; import { exportManfredJSonToCVSithEleganceHTML } from './cv-sith-elegance'; import { exportManfredJSonToCVGalacticCleanTechHTML } from './cv-galactic-cleantech'; +import { exportManfredJsonToCVXWingHTML } from './cv-x-wing-squadron'; + import { exportManfredJSonToCVMonochromeForceHTML } from './cv-monochrome-force'; export const exportHTMLTemplate = ( manfredJsonContent: ManfredAwesomicCV, @@ -14,6 +16,8 @@ export const exportHTMLTemplate = ( return exportManfredJSonToCVSithEleganceHTML(manfredJsonContent, settings); case 'Galactic CleanTech': return exportManfredJSonToCVGalacticCleanTechHTML(manfredJsonContent, settings); + case 'X-Wing Squadron': + return exportManfredJsonToCVXWingHTML(manfredJsonContent, settings); case 'Monochrome Force': return exportManfredJSonToCVMonochromeForceHTML(manfredJsonContent, settings); default: