diff --git a/export-samples/html/cv-monochrome-force.html b/export-samples/html/cv-monochrome-force.html index 0558b68..fa92afa 100644 --- a/export-samples/html/cv-monochrome-force.html +++ b/export-samples/html/cv-monochrome-force.html @@ -365,22 +365,22 @@ padding-left: var(--space-24); } - /* icono lenguajes */ - .lenguage__container { + /* section languages */ + .language__container { display: grid; padding-inline: var(--space-8); grid-template-columns: minmax(100px, auto) minmax(114px, 1fr); align-items: center; justify-items: start; } - .lenguage__container + .lenguage__container { + .language__container + .language__container { padding-top: var(--space-12); } - .lenguage__title { + .language__title { color: var(--primary-500); font-weight: var(--fw-medium); } - .lenguage__image { + .language__image { min-width: 7rem; display: flex; flex-direction: column; @@ -388,7 +388,7 @@ gap: var(--space-2); margin: 0px; } - .lenguage__icon { + .language__icon { width: 114px; height: 24px; clip-path: polygon(0px 100%, 100% 0px, 100% 100%); @@ -483,7 +483,7 @@ ); } - /* experiencies */ + /* section experiencies */ .experiencies__container { display: flex; flex-direction: column; @@ -565,7 +565,7 @@ } } - /* educations */ + /* section educations */ .educations { padding-bottom: var(--space-8); } @@ -846,31 +846,31 @@

Competencias

Idiomas

-
-

Español

-
-
+
+

Español

+
+
Nativo/Bilingüe
-
-

Inglés

-
-
+
+

Inglés

+
+
Fluido
-
-

Alemán

-
-
+
+

Alemán

+
+
Intermedio
-
-

Gallego

-
-
+
+

Gallego

+
+
Básico
@@ -1060,9 +1060,9 @@

Educación

// Mueve los elementos al contenedor myLinks && main.appendChild(myLinks); aboutMe && main.appendChild(aboutMe); - languages && main.appendChild(languages); hardSkills && main.appendChild(hardSkills); softSkills && main.appendChild(softSkills); + languages && main.appendChild(languages); experience && main.appendChild(experience); education && main.appendChild(education); } diff --git a/packages/manfred2html/src/engine/cv-monochrome-force/html-parts/html-document-end/html-document-end.ejs b/packages/manfred2html/src/engine/cv-monochrome-force/html-parts/html-document-end/html-document-end.ejs index 76f5baf..c88dab6 100644 --- a/packages/manfred2html/src/engine/cv-monochrome-force/html-parts/html-document-end/html-document-end.ejs +++ b/packages/manfred2html/src/engine/cv-monochrome-force/html-parts/html-document-end/html-document-end.ejs @@ -56,9 +56,9 @@ // Mueve los elementos al contenedor myLinks && main.appendChild(myLinks); aboutMe && main.appendChild(aboutMe); - languages && main.appendChild(languages); hardSkills && main.appendChild(hardSkills); softSkills && main.appendChild(softSkills); + languages && main.appendChild(languages); experience && main.appendChild(experience); education && main.appendChild(education); } diff --git a/packages/manfred2html/src/engine/cv-monochrome-force/html-parts/html-document-start/html-document-start.ejs b/packages/manfred2html/src/engine/cv-monochrome-force/html-parts/html-document-start/html-document-start.ejs index 8ae1709..20d3b65 100644 --- a/packages/manfred2html/src/engine/cv-monochrome-force/html-parts/html-document-start/html-document-start.ejs +++ b/packages/manfred2html/src/engine/cv-monochrome-force/html-parts/html-document-start/html-document-start.ejs @@ -365,22 +365,22 @@ padding-left: var(--space-24); } - /* icono lenguajes */ - .lenguage__container { + /* section languages */ + .language__container { display: grid; padding-inline: var(--space-8); grid-template-columns: minmax(100px, auto) minmax(114px, 1fr); align-items: center; justify-items: start; } - .lenguage__container + .lenguage__container { + .language__container + .language__container { padding-top: var(--space-12); } - .lenguage__title { + .language__title { color: var(--primary-500); font-weight: var(--fw-medium); } - .lenguage__image { + .language__image { min-width: 7rem; display: flex; flex-direction: column; @@ -388,7 +388,7 @@ gap: var(--space-2); margin: 0px; } - .lenguage__icon { + .language__icon { width: 114px; height: 24px; clip-path: polygon(0px 100%, 100% 0px, 100% 100%); @@ -483,7 +483,7 @@ ); } - /* experiencies */ + /* section experiencies */ .experiencies__container { display: flex; flex-direction: column; @@ -565,7 +565,7 @@ } } - /* educations */ + /* section educations */ .educations { padding-bottom: var(--space-8); } diff --git a/packages/manfred2html/src/engine/cv-monochrome-force/html-parts/index.ts b/packages/manfred2html/src/engine/cv-monochrome-force/html-parts/index.ts index f13f529..dc6c2b4 100644 --- a/packages/manfred2html/src/engine/cv-monochrome-force/html-parts/index.ts +++ b/packages/manfred2html/src/engine/cv-monochrome-force/html-parts/index.ts @@ -10,4 +10,5 @@ export * from './about-me-section'; export * from './experience-section'; export * from './soft-skills-section'; export * from './relevants-links-section'; -export * from './hard-skills-section'; \ No newline at end of file +export * from './hard-skills-section'; +export * from './language-section'; diff --git a/packages/manfred2html/src/engine/cv-monochrome-force/html-parts/language-section/index.ts b/packages/manfred2html/src/engine/cv-monochrome-force/html-parts/language-section/index.ts new file mode 100644 index 0000000..c79bff5 --- /dev/null +++ b/packages/manfred2html/src/engine/cv-monochrome-force/html-parts/language-section/index.ts @@ -0,0 +1 @@ +export * from './language-section.part'; diff --git a/packages/manfred2html/src/engine/cv-monochrome-force/html-parts/language-section/labels/index.ts b/packages/manfred2html/src/engine/cv-monochrome-force/html-parts/language-section/labels/index.ts new file mode 100644 index 0000000..eca31da --- /dev/null +++ b/packages/manfred2html/src/engine/cv-monochrome-force/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-monochrome-force/html-parts/language-section/labels/language-english-labels.const.ts b/packages/manfred2html/src/engine/cv-monochrome-force/html-parts/language-section/labels/language-english-labels.const.ts new file mode 100644 index 0000000..dbd7aa7 --- /dev/null +++ b/packages/manfred2html/src/engine/cv-monochrome-force/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: 'Basic', + LEVEL_TWO: 'Intermediate', + LEVEL_THREE: 'Fluent', + LEVEL_FOUR: 'Native/bilingual', +}; diff --git a/packages/manfred2html/src/engine/cv-monochrome-force/html-parts/language-section/labels/language-label.model.ts b/packages/manfred2html/src/engine/cv-monochrome-force/html-parts/language-section/labels/language-label.model.ts new file mode 100644 index 0000000..8b966ee --- /dev/null +++ b/packages/manfred2html/src/engine/cv-monochrome-force/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-monochrome-force/html-parts/language-section/labels/language-spanish-labels.const.ts b/packages/manfred2html/src/engine/cv-monochrome-force/html-parts/language-section/labels/language-spanish-labels.const.ts new file mode 100644 index 0000000..c7a914d --- /dev/null +++ b/packages/manfred2html/src/engine/cv-monochrome-force/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: 'Básico', + LEVEL_TWO: 'Intermedio', + LEVEL_THREE: 'Fluido', + LEVEL_FOUR: 'Nativo/Bilingüe', +}; diff --git a/packages/manfred2html/src/engine/cv-monochrome-force/html-parts/language-section/language-section.ejs b/packages/manfred2html/src/engine/cv-monochrome-force/html-parts/language-section/language-section.ejs new file mode 100644 index 0000000..0a71130 --- /dev/null +++ b/packages/manfred2html/src/engine/cv-monochrome-force/html-parts/language-section/language-section.ejs @@ -0,0 +1,44 @@ +<%_ if (languageCollection && languageCollection.length !== 0) { -%> +
+

<%- labels.LANGUAGE_HEADING %>

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

<%- language.name %>

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

<%- language.name %>

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

<%- language.name %>

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

<%- language.name %>

+
+
+
<%- labels.LEVEL_FOUR %>
+
+
+ <%_ } -%> + <%_ } -%> +
+<%_ } -%> \ No newline at end of file diff --git a/packages/manfred2html/src/engine/cv-monochrome-force/html-parts/language-section/language-section.part.ts b/packages/manfred2html/src/engine/cv-monochrome-force/html-parts/language-section/language-section.part.ts new file mode 100644 index 0000000..1fc2deb --- /dev/null +++ b/packages/manfred2html/src/engine/cv-monochrome-force/html-parts/language-section/language-section.part.ts @@ -0,0 +1,22 @@ +import ejs from 'ejs'; +import { LanguageVm, mapFromCvToLanguageVm } from '@lemoncode/manfred-common/language-section'; +import { ISO_SPANISH_LANGUAGE } from '@/engine/engine.const'; +import { ManfredAwesomicCV, Settings, Language } from '@/model'; +import { getLabels } from './labels'; +import languageSection 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(languageSection, rootObject); +}; diff --git a/packages/manfred2html/src/engine/cv-monochrome-force/index.ts b/packages/manfred2html/src/engine/cv-monochrome-force/index.ts index 085b155..f12c7e6 100644 --- a/packages/manfred2html/src/engine/cv-monochrome-force/index.ts +++ b/packages/manfred2html/src/engine/cv-monochrome-force/index.ts @@ -9,10 +9,11 @@ import { generateMainElementStart, generateMainElementEnd, generateAboutMeSection, + generateRelevantsLinksSection, generateExperiencesSection, generateSoftSkillsSection, - generateRelevantsLinksSection, generateHardSkillsSection, + generateLanguageSection, } from './html-parts'; export const exportManfredJSonToCVMonochromeForceHTML = ( @@ -32,6 +33,7 @@ export const exportManfredJSonToCVMonochromeForceHTML = ( const experienceSection = generateExperiencesSection(manfredJsonContent, settings); const softSkillsSection = generateSoftSkillsSection(manfredJsonContent, settings); const hardSkillsSection = generateHardSkillsSection(manfredJsonContent, settings); + const languageSection = generateLanguageSection(manfredJsonContent, settings); return ` ${htmlDocumentStart} @@ -39,12 +41,12 @@ export const exportManfredJSonToCVMonochromeForceHTML = ( ${profileSection} ${headerElementEnd} ${mainElementStart} - ${aboutMeSection} - ${experienceSection} - ${softSkillsSection} ${relevantsLinksSection} ${aboutMeSection} + ${softSkillsSection} ${hardSkillsSection} + ${languageSection} + ${experienceSection} ${mainElementEnd} ${footerSection} ${htmlDocumentEnd}