Inicio: 2018-06-20
+Inicio: Dic 2020
Fin: Actualidad
Inicio: 2018-06-20
+Inicio: Jun 2017
Fin: Actualidad
Plataforma de Talento y agencia de recruiting técnico
Inicio: 2017-02-01
-Fin: 2018-06-30
+Inicio: Feb 2017
+Fin: Jun 2018
Inicio: 2002-09-15
-Fin: 2006-06-30
+Inicio: Sep 2022
+Fin: Jun 2006
Inicio: 2002-09-15
-Fin: 2006-06-30
+Inicio: Sep 2002
+Fin: Jun 2006
Tipo de estudios: Grado oficial
@@ -727,8 +733,8 @@Computer Science Grade
Inicio: 2002-09-15
-Fin: 2006-06-30
+Inicio: Ene 2001
+Fin: Oct 2001
Inicio: 2002-09-15
-Fin: 2006-06-30
+Inicio: Abr 2002
+Fin: May 2003
Tipo de estudios: Certificación
@@ -753,8 +759,8 @@Computer Science Grade
Inicio: 2007-05-14
-Fin: 2007-05-21
+Inicio: Jun 2007
+Fin: Jul 2008
Inicio: 2007-05-14
-Fin: 2007-05-21
+Inicio: Dic 2007
+Fin: Mar 2008
Tipo de estudios: Certificación
diff --git a/packages/manfred-common/package.json b/packages/manfred-common/package.json index 01fcb94f..b16ac594 100644 --- a/packages/manfred-common/package.json +++ b/packages/manfred-common/package.json @@ -34,6 +34,11 @@ "import": "./src/doc-parts/studies-section/index.ts", "require": "./src/doc-parts/studies-section/index.ts", "types": "./src/doc-parts/studies-section/index.ts" + }, + "./model": { + "import": "./src/model/index.ts", + "require": "./src/model/index.ts", + "types": "./src/model/index.ts" } }, "scripts": { diff --git a/packages/manfred2html/src/engine/engine.const.ts b/packages/manfred2html/src/engine/engine.const.ts new file mode 100644 index 00000000..ed2668bf --- /dev/null +++ b/packages/manfred2html/src/engine/engine.const.ts @@ -0,0 +1 @@ +export const ISO_SPANISH_LANGUAGE = 'es'; diff --git a/packages/manfred2html/src/engine/html-parts/about-me-section/about-me-section.part.ts b/packages/manfred2html/src/engine/html-parts/about-me-section/about-me-section.part.ts deleted file mode 100644 index d945a21a..00000000 --- a/packages/manfred2html/src/engine/html-parts/about-me-section/about-me-section.part.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { ManfredAwesomicCV } from '@/model'; -import { ProfileSectionVm, mapFromMacCvToProfileSectionVm } from '@lemoncode/manfred-common/profile-section'; -import aboutMe from './about-me-section.ejs?raw'; -import ejs from 'ejs'; - -export const generateAboutMeSection = (cv: ManfredAwesomicCV): string => { - const profileSectionVm = mapFromMacCvToProfileSectionVm(cv); - - return generateAboutMeSectionInner(profileSectionVm); -}; - -const generateAboutMeSectionInner = (profileSectionVm: ProfileSectionVm): string => { - const rootObject = { - profile: profileSectionVm, - }; - - return ejs.render(aboutMe, rootObject); -}; diff --git a/packages/manfred2html/src/engine/html-parts/experience-section/index.ts b/packages/manfred2html/src/engine/html-parts/experience-section/index.ts deleted file mode 100644 index 03b6e599..00000000 --- a/packages/manfred2html/src/engine/html-parts/experience-section/index.ts +++ /dev/null @@ -1 +0,0 @@ -export* from './experience-section.part'; diff --git a/packages/manfred2html/src/engine/html-parts/hard-skills-section/hard-skills-section.part.ts b/packages/manfred2html/src/engine/html-parts/hard-skills-section/hard-skills-section.part.ts deleted file mode 100644 index d5979773..00000000 --- a/packages/manfred2html/src/engine/html-parts/hard-skills-section/hard-skills-section.part.ts +++ /dev/null @@ -1,16 +0,0 @@ -import ejs from 'ejs'; -import { ManfredAwesomicCV } from '@/model'; -import { HardSkillVM, mapFromCvToHardSkillVm } from '@lemoncode/manfred-common/hard-skill-section'; -import hardSkillsSection from './hard-skills-section.ejs?raw'; - -export const generateHardSkillsSection = (cv: ManfredAwesomicCV): string => { - const hardSkillsSectionVm = mapFromCvToHardSkillVm(cv); - return generateHardSkillsSectionInner(hardSkillsSectionVm); -}; - -const generateHardSkillsSectionInner = (hardSkillsSectionVm: HardSkillVM[]): string => { - const rootObject = { - hardSkillsCollection: hardSkillsSectionVm, - }; - return ejs.render(hardSkillsSection, rootObject); -}; diff --git a/packages/manfred2html/src/engine/html-parts/html-document-start/html-document-start.part.ts b/packages/manfred2html/src/engine/html-parts/html-document-start/html-document-start.part.ts deleted file mode 100644 index f7c92c5d..00000000 --- a/packages/manfred2html/src/engine/html-parts/html-document-start/html-document-start.part.ts +++ /dev/null @@ -1,4 +0,0 @@ -import ejs from 'ejs'; -import htmlDocumentStartTemplate from './html-document-start.ejs?raw'; - -export const generateHtmlDocumentStart = (color: string): string => ejs.render(htmlDocumentStartTemplate, { color }); diff --git a/packages/manfred2html/src/engine/html-parts/language-section/language-section.part.ts b/packages/manfred2html/src/engine/html-parts/language-section/language-section.part.ts deleted file mode 100644 index f27fbf9b..00000000 --- a/packages/manfred2html/src/engine/html-parts/language-section/language-section.part.ts +++ /dev/null @@ -1,16 +0,0 @@ -import ejs from 'ejs'; -import { ManfredAwesomicCV } from '@/model'; -import { LanguageVm, mapFromCvToLanguageVm } from '@lemoncode/manfred-common/language-section' -import languageSection from './language-section.ejs?raw'; - -export const generateLanguageSection = (cv: ManfredAwesomicCV): string => { - const languageSectionVm = mapFromCvToLanguageVm(cv); - return generateLanguageSectionInner(languageSectionVm); -}; - -const generateLanguageSectionInner = (languageSectionVm: LanguageVm[]): string => { - const rootObject = { - languageCollection: languageSectionVm, - } - return ejs.render(languageSection, rootObject) -}; diff --git a/packages/manfred2html/src/engine/html-parts/relevants-links-section/relevants-links-section.part.ts b/packages/manfred2html/src/engine/html-parts/relevants-links-section/relevants-links-section.part.ts deleted file mode 100644 index 929d0526..00000000 --- a/packages/manfred2html/src/engine/html-parts/relevants-links-section/relevants-links-section.part.ts +++ /dev/null @@ -1,18 +0,0 @@ -import ejs from 'ejs'; -import { ManfredAwesomicCV } from '@/model'; -import { ProfileSectionVm, mapFromMacCvToProfileSectionVm } from '@lemoncode/manfred-common/profile-section'; -import relevantsLinksSection from './relevants-links-section.ejs?raw'; - -export const generateRelevantsLinksSection = (cv: ManfredAwesomicCV): string => { - const profileSectionVm = mapFromMacCvToProfileSectionVm(cv); - - return generateRelevantsLinksSectionInner(profileSectionVm); -}; - -const generateRelevantsLinksSectionInner = (profileSectionVm: ProfileSectionVm): string => { - const rootObject = { - profile: profileSectionVm, - }; - - return ejs.render(relevantsLinksSection, rootObject); -}; diff --git a/packages/manfred2html/src/engine/html-parts/soft-skills-section/soft-skills-section.part.ts b/packages/manfred2html/src/engine/html-parts/soft-skills-section/soft-skills-section.part.ts deleted file mode 100644 index 915d2484..00000000 --- a/packages/manfred2html/src/engine/html-parts/soft-skills-section/soft-skills-section.part.ts +++ /dev/null @@ -1,16 +0,0 @@ -import ejs from 'ejs'; -import { ManfredAwesomicCV } from '@/model'; -import { SoftSkillVM, mapFromCvToSoftSkillVm } from '@lemoncode/manfred-common/soft-skill-section'; -import softSkillsSection from './soft-skills-section.ejs?raw'; - -export const generateSoftSkillsSection = (cv: ManfredAwesomicCV): string => { - const softSkillsSectionVm = mapFromCvToSoftSkillVm(cv); - return generateSoftSkillsSectionInner(softSkillsSectionVm); -}; - -const generateSoftSkillsSectionInner = (softSkillsSectionVm: SoftSkillVM[]): string => { - const rootObject = { - softSkillsCollection: softSkillsSectionVm, - }; - return ejs.render(softSkillsSection, rootObject); -}; diff --git a/packages/manfred2html/src/engine/html-parts/studies-section/studies-section.part.ts b/packages/manfred2html/src/engine/html-parts/studies-section/studies-section.part.ts deleted file mode 100644 index 512e6471..00000000 --- a/packages/manfred2html/src/engine/html-parts/studies-section/studies-section.part.ts +++ /dev/null @@ -1,18 +0,0 @@ -import ejs from 'ejs'; -import { StudiesSectionVm, mapFromMacCvToStudiesSectionVm } from '@lemoncode/manfred-common/studies-section'; -import { ManfredAwesomicCV } from '@/model'; -import studiesTemplate from './studies-section.ejs?raw'; - -export const generateStudiesSection = (cv: ManfredAwesomicCV): string => { - const studiesSectionVm = mapFromMacCvToStudiesSectionVm(cv); - - return generateStudiesSectionInner(studiesSectionVm); -}; - -const generateStudiesSectionInner = (studiesSectionVm: StudiesSectionVm[]): string => { - const rootObject = { - studiesCollection: studiesSectionVm, - }; - - return ejs.render(studiesTemplate, rootObject); -}; diff --git a/packages/manfred2html/src/engine/index.ts b/packages/manfred2html/src/engine/index.ts index 02cb6f68..a1069a23 100644 --- a/packages/manfred2html/src/engine/index.ts +++ b/packages/manfred2html/src/engine/index.ts @@ -1,57 +1,20 @@ import { ManfredAwesomicCV, ExportHTMLSettings } from '@/model'; -import { - generateHtmlDocumentStart, - generateHtmlDocumentEnd, - generateHeaderElementStart, - generateHeaderElementEnd, - generateAboutMeSection, - generateAsideElementStart, - generateAsideElementEnd, - generateRelevantsLinksSection, - generateLanguageSection, - generateHardSkillsSection, - generateSoftSkillsSection, - generateMainElementStart, - generateMainElementEnd, - generateExperiencesSection, - generateStudiesSection, -} from './html-parts'; +import { mapExportHTMLSettingsToSettings } from '@/mappers'; +import { exportManfredJSonToHTMLTemplateA } from './template-a'; +import { exportManfredJSonToHTMLTemplateB } from './template-b'; -export const exportManfredJSonToHTML = ( +export const exportHTMLTemplate = ( manfredJsonContent: ManfredAwesomicCV, exportHTMLSettings: ExportHTMLSettings ): string => { - const htmlDocumentStart = generateHtmlDocumentStart(exportHTMLSettings.primaryColor); - const htmlDocumentEnd = generateHtmlDocumentEnd(); - const headerElementStart = generateHeaderElementStart(); - const headerElementEnd = generateHeaderElementEnd(); - const aboutMeSection = generateAboutMeSection(manfredJsonContent); - const asideElementStart = generateAsideElementStart(); - const asideElementEnd = generateAsideElementEnd(); - const relevantsLinksSection = generateRelevantsLinksSection(manfredJsonContent); - const mainElementStart = generateMainElementStart(); - const mainElementEnd = generateMainElementEnd(); - const languageSection = generateLanguageSection(manfredJsonContent); - const hardSkillsSection = generateHardSkillsSection(manfredJsonContent); - const softSkillsSection = generateSoftSkillsSection(manfredJsonContent); - const experienceSection = generateExperiencesSection(manfredJsonContent); - const studiesSection = generateStudiesSection(manfredJsonContent); + const settings = mapExportHTMLSettingsToSettings(exportHTMLSettings); - return ` - ${htmlDocumentStart} - ${headerElementStart} - ${aboutMeSection} - ${headerElementEnd} - ${asideElementStart} - ${relevantsLinksSection} - ${languageSection} - ${hardSkillsSection} - ${softSkillsSection} - ${asideElementEnd} - ${mainElementStart} - ${experienceSection} - ${studiesSection} - ${mainElementEnd} - ${htmlDocumentEnd} - `; + switch (settings.template) { + case 'Moderno elegante': + return exportManfredJSonToHTMLTemplateA(manfredJsonContent, settings); + case 'Limpio y organizado': + return exportManfredJSonToHTMLTemplateB(manfredJsonContent, settings); + default: + throw new Error('Template not found'); + } }; diff --git a/packages/manfred2html/src/engine/html-parts/about-me-section/about-me-section.ejs b/packages/manfred2html/src/engine/template-a/html-parts/about-me-section/about-me-section.ejs similarity index 100% rename from packages/manfred2html/src/engine/html-parts/about-me-section/about-me-section.ejs rename to packages/manfred2html/src/engine/template-a/html-parts/about-me-section/about-me-section.ejs diff --git a/packages/manfred2html/src/engine/template-a/html-parts/about-me-section/about-me-section.part.ts b/packages/manfred2html/src/engine/template-a/html-parts/about-me-section/about-me-section.part.ts new file mode 100644 index 00000000..96b7a585 --- /dev/null +++ b/packages/manfred2html/src/engine/template-a/html-parts/about-me-section/about-me-section.part.ts @@ -0,0 +1,24 @@ +import ejs from 'ejs'; +import { ProfileSectionVm, mapFromMacCvToProfileSectionVm } from '@lemoncode/manfred-common/profile-section'; +import { ISO_SPANISH_LANGUAGE } from '@/engine/engine.const'; +import { ManfredAwesomicCV, Settings, Language } from '@/model'; +import { getLabels } from './labels'; +import aboutMe 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(aboutMe, rootObject); +}; diff --git a/packages/manfred2html/src/engine/html-parts/about-me-section/index.ts b/packages/manfred2html/src/engine/template-a/html-parts/about-me-section/index.ts similarity index 100% rename from packages/manfred2html/src/engine/html-parts/about-me-section/index.ts rename to packages/manfred2html/src/engine/template-a/html-parts/about-me-section/index.ts diff --git a/packages/manfred2html/src/engine/template-a/html-parts/about-me-section/labels/about-me-english-labels.const.ts b/packages/manfred2html/src/engine/template-a/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/template-a/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/template-a/html-parts/about-me-section/labels/about-me-labels.model.ts b/packages/manfred2html/src/engine/template-a/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/template-a/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/template-a/html-parts/about-me-section/labels/about-me-spanish-labels.const.ts b/packages/manfred2html/src/engine/template-a/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/template-a/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/template-a/html-parts/about-me-section/labels/index.ts b/packages/manfred2html/src/engine/template-a/html-parts/about-me-section/labels/index.ts new file mode 100644 index 00000000..cfad900e --- /dev/null +++ b/packages/manfred2html/src/engine/template-a/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/html-parts/aside-element-end/aside-element-end.ejs b/packages/manfred2html/src/engine/template-a/html-parts/aside-element-end/aside-element-end.ejs similarity index 100% rename from packages/manfred2html/src/engine/html-parts/aside-element-end/aside-element-end.ejs rename to packages/manfred2html/src/engine/template-a/html-parts/aside-element-end/aside-element-end.ejs diff --git a/packages/manfred2html/src/engine/html-parts/aside-element-end/aside-element-end.part.ts b/packages/manfred2html/src/engine/template-a/html-parts/aside-element-end/aside-element-end.part.ts similarity index 100% rename from packages/manfred2html/src/engine/html-parts/aside-element-end/aside-element-end.part.ts rename to packages/manfred2html/src/engine/template-a/html-parts/aside-element-end/aside-element-end.part.ts diff --git a/packages/manfred2html/src/engine/html-parts/aside-element-end/index.ts b/packages/manfred2html/src/engine/template-a/html-parts/aside-element-end/index.ts similarity index 100% rename from packages/manfred2html/src/engine/html-parts/aside-element-end/index.ts rename to packages/manfred2html/src/engine/template-a/html-parts/aside-element-end/index.ts diff --git a/packages/manfred2html/src/engine/html-parts/aside-element-start/aside-element-start.ejs b/packages/manfred2html/src/engine/template-a/html-parts/aside-element-start/aside-element-start.ejs similarity index 100% rename from packages/manfred2html/src/engine/html-parts/aside-element-start/aside-element-start.ejs rename to packages/manfred2html/src/engine/template-a/html-parts/aside-element-start/aside-element-start.ejs diff --git a/packages/manfred2html/src/engine/html-parts/aside-element-start/aside-element-start.part.ts b/packages/manfred2html/src/engine/template-a/html-parts/aside-element-start/aside-element-start.part.ts similarity index 100% rename from packages/manfred2html/src/engine/html-parts/aside-element-start/aside-element-start.part.ts rename to packages/manfred2html/src/engine/template-a/html-parts/aside-element-start/aside-element-start.part.ts diff --git a/packages/manfred2html/src/engine/html-parts/aside-element-start/index.ts b/packages/manfred2html/src/engine/template-a/html-parts/aside-element-start/index.ts similarity index 100% rename from packages/manfred2html/src/engine/html-parts/aside-element-start/index.ts rename to packages/manfred2html/src/engine/template-a/html-parts/aside-element-start/index.ts diff --git a/packages/manfred2html/src/engine/html-parts/experience-section/experience-section.ejs b/packages/manfred2html/src/engine/template-a/html-parts/experience-section/experience-section.ejs similarity index 57% rename from packages/manfred2html/src/engine/html-parts/experience-section/experience-section.ejs rename to packages/manfred2html/src/engine/template-a/html-parts/experience-section/experience-section.ejs index 5e68152e..5baa5525 100644 --- a/packages/manfred2html/src/engine/html-parts/experience-section/experience-section.ejs +++ b/packages/manfred2html/src/engine/template-a/html-parts/experience-section/experience-section.ejs @@ -1,16 +1,23 @@ <%_ if(experienceCollection && experienceCollection.length !== 0){ -%>Experiencia / carrera
++ + <%- labels.EXPERIENCE_CAREER_HEADING %> +
Inicio: <%- experience.roles[0].startDate %>
- <%_ if(experience.roles[0].finishDate || experience.roles[0].finishDate === 'Actualidad') { -%> -Fin: <%- experience.roles[0].finishDate %>
- <%_ } -%> +Inicio: <%- new Date(experience.roles[0].startDate).toLocaleDateString(undefined, { year:"numeric", month:"short"}) %>
+Fin: + <%_ if(experience.roles[0].finishDate && experience.roles[0].finishDate.toLowerCase() !== 'actualidad') { -%> + <%- new Date(experience.roles[0].finishDate).toLocaleDateString(undefined, { year:"numeric", month:"short"}) %> +
+ <%_ } else { -%> + Actualidad + <%_}-%>Inicio: <%- experience.roles[0].startDate %>
- <%_ if(experience.roles[0].finishDate || experience.roles[0].finishDate === 'Actualidad') { -%> -Fin: <%- experience.roles[0].finishDate %>
- <%_ } -%> + <%- new Date(experience.roles[0].startDate).toLocaleDateString(undefined, { year:"numeric", month:"short"}) %> + <%_ if(experience.roles[0].finishDate && experience.roles[0].finishDate.toLowerCase() !== 'actualidad') { -%> + <%- " - "+new Date(experience.roles[0].finishDate).toLocaleDateString(undefined, { year:"numeric", month:"short"}) %> + <%_ } else { -%> + - Actualidad + <%_}-%>HARD SKILLS
++ <%- labels.HARD_SKILLS_HEADING %> +
LENGUAJE / NIVEL
++ <%- labels.LANGUAGE_HEADING %> +
mis enlaces
++ <%- labels.RELEVANTS_LINKS_HEADING %> +
SOFT SKILLS
++ <%- labels.SOFT_SKILLS_HEADING %> +
Educación
++ <%- labels.STUDIES_HEADING %> +
Inicio: <%- study.startDate %>
- <%_ if (study.finishDate || study.finishDate === 'Actualidad') { -%> -Fin: <%- study.finishDate %>
- <%_ } -%> +Inicio: <%- new Date(study.startDate).toLocaleDateString(undefined, { year:"numeric", month:"short"}) %>
+Fin: + <%_ if (study.finishDate || study.finishDate === 'Actualidad') { -%> + <%- new Date(study.finishDate).toLocaleDateString(undefined, { year:"numeric", month:"short"}) %> +
+ <%_ } else { -%> + Actualidad + <%_}-%>Inicio: <%- study.startDate %>
- <%_ if (study.finishDate || study.finishDate === 'Actualidad') { -%> -Fin: <%- study.finishDate %>
- <%_ } -%> + <%- new Date(study.startDate).toLocaleDateString(undefined, { year:"numeric", month:"short"}) %> + <%_ if (study.finishDate || study.finishDate === 'Actualidad') { -%> + <%- " - "+new Date(study.finishDate).toLocaleDateString(undefined, { year:"numeric", month:"short"}) %> + <%_ } -%>Tipo de estudios: <%- study.studyType %>
@@ -42,7 +48,7 @@ <%_ if (study.location) { -%>Ubicación de la institución: -
<%- study.description %>
+<%- study.description %>
<%- study.institution.location.region %> , <%- study.institution.location.country %> <%_ } -%> @@ -52,4 +58,3 @@ <%_ } -%> <%_ } -%> - \ No newline at end of file diff --git a/packages/manfred2html/src/engine/template-a/html-parts/studies-section/studies-section.part.ts b/packages/manfred2html/src/engine/template-a/html-parts/studies-section/studies-section.part.ts new file mode 100644 index 00000000..ce48aa57 --- /dev/null +++ b/packages/manfred2html/src/engine/template-a/html-parts/studies-section/studies-section.part.ts @@ -0,0 +1,24 @@ +import ejs from 'ejs'; +import { StudiesSectionVm, mapFromMacCvToStudiesSectionVm } from '@lemoncode/manfred-common/studies-section'; +import { ISO_SPANISH_LANGUAGE } from '@/engine/engine.const'; +import { ManfredAwesomicCV, Settings, Language } from '@/model'; +import { getLabels } from './labels'; +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/template-a/index.ts b/packages/manfred2html/src/engine/template-a/index.ts new file mode 100644 index 00000000..e5342552 --- /dev/null +++ b/packages/manfred2html/src/engine/template-a/index.ts @@ -0,0 +1,54 @@ +import { ManfredAwesomicCV, Settings } from '@/model'; +import { + generateHtmlDocumentStart, + generateHtmlDocumentEnd, + generateHeaderElementStart, + generateHeaderElementEnd, + generateAboutMeSection, + generateAsideElementStart, + generateAsideElementEnd, + generateRelevantsLinksSection, + generateLanguageSection, + generateHardSkillsSection, + generateSoftSkillsSection, + generateMainElementStart, + generateMainElementEnd, + generateExperiencesSection, + generateStudiesSection, +} from './html-parts'; + +export const exportManfredJSonToHTMLTemplateA = (manfredJsonContent: ManfredAwesomicCV, settings: Settings): string => { + const htmlDocumentStart = generateHtmlDocumentStart(settings.colorTheme); + const htmlDocumentEnd = generateHtmlDocumentEnd(); + const headerElementStart = generateHeaderElementStart(); + const headerElementEnd = generateHeaderElementEnd(); + const aboutMeSection = generateAboutMeSection(manfredJsonContent, settings); + const asideElementStart = generateAsideElementStart(); + const asideElementEnd = generateAsideElementEnd(); + const relevantsLinksSection = generateRelevantsLinksSection(manfredJsonContent, settings); + const mainElementStart = generateMainElementStart(); + const mainElementEnd = generateMainElementEnd(); + const languageSection = generateLanguageSection(manfredJsonContent, settings); + const hardSkillsSection = generateHardSkillsSection(manfredJsonContent, settings); + const softSkillsSection = generateSoftSkillsSection(manfredJsonContent, settings); + const experienceSection = generateExperiencesSection(manfredJsonContent, settings); + const studiesSection = generateStudiesSection(manfredJsonContent, settings); + + return ` + ${htmlDocumentStart} + ${headerElementStart} + ${aboutMeSection} + ${headerElementEnd} + ${asideElementStart} + ${relevantsLinksSection} + ${languageSection} + ${hardSkillsSection} + ${softSkillsSection} + ${asideElementEnd} + ${mainElementStart} + ${experienceSection} + ${studiesSection} + ${mainElementEnd} + ${htmlDocumentEnd} + `; +}; diff --git a/packages/manfred2html/src/engine/template-b/html-parts/about-me-section/about-me-section.ejs b/packages/manfred2html/src/engine/template-b/html-parts/about-me-section/about-me-section.ejs new file mode 100644 index 00000000..b4a93ad7 --- /dev/null +++ b/packages/manfred2html/src/engine/template-b/html-parts/about-me-section/about-me-section.ejs @@ -0,0 +1,11 @@ + <%_ if (profile && profile !== 'undefined' ) { -%> +<%- labels.ABOUT_ME_HEADING %>
++
<%= profile?.description %>
+<%- labels.LANGUAGE_HEADING %>
+-
+ <%_ for (const language of languageCollection) { -%>
+
- <%- language.name %> (<%- language.level %>) + <%_ } -%> +
<%- labels.RELEVANTS_LINKS_HEADING %>
+<%- labels.SOFT_SKILLS_HEADING %>
+-
+ <%_ for (const item of softSkillsCollection) { -%>
+
- <%- item.skill.name %> + <%_ } -%> +
<%- labels.STUDIES_HEADING %>
++
<%- study.name %>
+ <%_ if (study.description) { -%> +<%- study.description %>
+ <%_ } -%> +<%- new Date(study.startDate).toLocaleDateString(undefined, { year:"numeric", month:"short"})%> <%_ if(study.finishDate && study.finishDate.toLowerCase() !=='actualidad') { -%> + <%- "- "+new Date(study.finishDate).toLocaleDateString(undefined, { year:"numeric", month:"short"}) -%> + <%_ } else { -%> + - Actualidad + <%_}-%> +
+Tipo de estudios: <%- study.studyType %>
++ Grado obtenido: <% if (study.degreeAchieved) { %> + Obtenido + <%} else { %> + No obtenido + <% } %> +
+Nombre de la institución: <%- study.institution.name %>
+ <%_ if (study.location) { -%> ++ Ubicación de la institución: + <%- study.institution.location.region %> , <%- study.institution.location.country %> +
+ <%_ } -%> +