From 8cb6a9498e83d82b058346580241734b781f749c Mon Sep 17 00:00:00 2001 From: Josh Pollard <49789046+Joshlucpoll@users.noreply.github.com> Date: Mon, 30 Dec 2024 18:46:48 +0000 Subject: [PATCH 1/2] Add work experience, awards, certificates, volunteer, publications, references, and interests sections to CV template --- sample.cv.json | 43 +++++-- src/themes/reorx/index.ejs | 220 +++++++++++++++++++++++++++++++----- src/themes/reorx/index.scss | 8 +- 3 files changed, 227 insertions(+), 44 deletions(-) diff --git a/sample.cv.json b/sample.cv.json index 92939b3..dda25d4 100644 --- a/sample.cv.json +++ b/sample.cv.json @@ -28,6 +28,21 @@ ] }, "work": [ + { + "name": "Pied Piper", + "location": "Palo Alto, CA", + "description": "Awesome compression company (second position)", + "position": "Chief Technology Officer", + "url": "http://piedpiper.example.com", + "startDate": "2018-01-01", + "endDate": "2020-01-01", + "summary": "Led the development of advanced middle-out algorithms and helped scale the engineering team.", + "highlights": [ + "Developed the next-gen middle-out compression approach", + "Expanded the engineering team from 5 to 15", + "Oversaw strategic growth and technology roadmap" + ] + }, { "name": "Pied Piper", "location": "Palo Alto, CA", @@ -53,7 +68,6 @@ "endDate": "2017-01-01", "summary": "Fantasy Inc. is a magical technology company that specializes in creating illusions and bringing dreams to life. Their proprietary technology has consistently amazed people and earned high praise.\n\n- Created a spell that turns pumpkins into carriages\n- Won the Wizard's Choice Award at the annual Magic Convention\n- Developed a potion that grants eternal youth" } - ], "volunteer": [ { @@ -187,7 +201,6 @@ "language": "French", "fluency": "Elementary" } - ], "interests": [ { @@ -204,7 +217,6 @@ "Mermaids" ] } - ], "references": [ { @@ -215,7 +227,6 @@ "name": "Laurie Bream", "reference": "It is my pleasure to recommend Monica, her exceptional skills and talent were evident during her time at High-Tech Inc. I am confident that she will make a valuable impact at any organization she joins." } - ], "projects": [ { @@ -227,13 +238,16 @@ "Using modern technologies such as GoogleMaps, Chrome Extension and Javascript" ], "keywords": [ - "GoogleMaps", "Chrome Extension", "Javascript" + "GoogleMaps", + "Chrome Extension", + "Javascript" ], "startDate": "2016-08-24", "endDate": "2016-08-24", "url": "https://missdirection.example.com", "roles": [ - "Team lead", "Designer" + "Team lead", + "Designer" ], "entity": "Smoogle", "type": "application" @@ -247,13 +261,16 @@ "Utilizes advanced technology such as Augmented Reality and AI" ], "keywords": [ - "Augmented Reality", "AI", "Space navigation" + "Augmented Reality", + "AI", + "Space navigation" ], "startDate": "2021-07-01", "endDate": "2021-07-01", "url": "https://lostinspace.example.com", "roles": [ - "Mission Commander", "Navigation Officer" + "Mission Commander", + "Navigation Officer" ], "entity": "Cosmic Corp", "type": "Software" @@ -266,7 +283,9 @@ "url": "https://bebop.example.com", "startDate": "2022-01-01", "keywords": [ - "Aerodynamics", "Space travel", "Rocket science" + "Aerodynamics", + "Space travel", + "Rocket science" ] }, { @@ -275,7 +294,9 @@ "url": "https://warpdrive.example.com", "startDate": "2025-01-01", "keywords": [ - "Quantum physics", "Interstellar travel", "Wormholes" + "Quantum physics", + "Interstellar travel", + "Wormholes" ] } ], @@ -284,4 +305,4 @@ "version": "v2.0.0", "lastModified": "2023-02-12T22:26:00" } -} +} \ No newline at end of file diff --git a/src/themes/reorx/index.ejs b/src/themes/reorx/index.ejs index 60915a9..ba38b32 100644 --- a/src/themes/reorx/index.ejs +++ b/src/themes/reorx/index.ejs @@ -18,6 +18,57 @@ function hasItems(arr) { } %> +<% +function dateRange(item, level) { + let {startDate, endDate} = item + if (!startDate && !endDate) return '' + let format + // level: 1: year, 2: month, 3: day + switch (level) { + case 1: + format = 'YYYY' + break; + case 2: + format = 'MMM YYYY' + break; + } + if (format) { + startDate = startDate ? fn.reformatDate(startDate, format) : '' + endDate = endDate ? fn.reformatDate(endDate, format) : '' + } + let result = '' + if (startDate && endDate) { + result = `${startDate} – ${endDate}` + } else if (startDate) { + result = `${startDate} – Present` + } else if (endDate) { + result = `Until ${endDate}` + } + return `
${result}
` +} +%> + +<% +function date(item, level) { + let {date} = item + if (!date) return '' + let format + // level: 1: year, 2: month, 3: day + switch (level) { + case 1: + format = 'YYYY' + break; + case 2: + format = 'MMM YYYY' + break; + } + if (format) { + date = date ? fn.reformatDate(date, format) : '' + } + return `
${date}
` +} +%> +

<%= cv.basics.name %>

@@ -56,41 +107,12 @@ function hasItems(arr) {
-<% -function dateRange(item, level) { - let {startDate, endDate} = item - if (!startDate && !endDate) return '' - let format - // level: 1: year, 2: month, 3: day - switch (level) { - case 1: - format = 'YYYY' - break; - case 2: - format = 'MMM YYYY' - break; - } - if (format) { - startDate = startDate ? fn.reformatDate(startDate, format) : '' - endDate = endDate ? fn.reformatDate(endDate, format) : '' - } - let result = '' - if (startDate && endDate) { - result = `${startDate} – ${endDate}` - } else if (startDate) { - result = `${startDate} – Present` - } else if (endDate) { - result = `Until ${endDate}` - } - return `
${result}
` -} -%> <% if (hasItems(cv.education)) { %>
-

Educations

+

Education

<% for (const item of cv.education) { %> @@ -125,10 +147,12 @@ function dateRange(item, level) { <% for (const item of cv.work) { %>
+ <% if (item.name !== (cv.work[cv.work.indexOf(item) - 1] || {}).name) { %>

<%= item.name %>

<%- linkInDiv(item.url) %>
+ <% } %>
<%= item.position %>
<%- dateRange(item, 2) %> @@ -272,12 +296,146 @@ function dateRange(item, level) { <% } %> - +<% if (hasItems(cv.awards)) { %> +
+
+

Awards

+
+
+ <% for (const item of cv.awards) { %> +
+
+

<%= item.title %>

+ <%- date(item, 2) %> +
+
<%= item.awarder %>
+ <% if (item.summary) { %> +
<%- fn.renderMarkdown(item.summary) %>
+ <% } %> +
+ <% } %> +
+<% } %> + + +<% if (hasItems(cv.certificates)) { %> +
+
+

Certificates

+
+
+ <% for (const item of cv.certificates) { %> +
+
+

<%= item.name %>

+ <%- date(item, 2) %> +
+
<%= item.issuer %>
+ <%- linkInDiv(item.url) %> +
+ <% } %> +
+<% } %> + +<% if (hasItems(cv.volunteer)) { %> +
+
+

Volunteer

+
+
+ <% for (const item of cv.volunteer) { %> +
+
+

<%= item.organization %>

+ <%- linkInDiv(item.url) %> +
+
+
<%= item.position %>
+ <%- dateRange(item, 2) %> +
+
<%- fn.renderMarkdown(item.summary) %>
+ <% if (item.highlights && item.highlights.length > 0) { %> +
+
    + <% for (const hl of item.highlights) { %> +
  • <%- fn.renderMarkdown(hl, true) %>
  • + <% } %> +
+
+ <% } %> +
+ <% } %> +
+<% } %> + + +<% if (hasItems(cv.publications)) { %> +
+
+

Publications

+
+
+ <% for (const item of cv.publications) { %> +
+
+

<%= item.name %>

+ <%- date(item, 2) %> +
+
<%= item.publisher %>
+ <%- linkInDiv(item.url) %> + <% if (item.summary) { %> +
<%- fn.renderMarkdown(item.summary) %>
+ <% } %> +
+ <% } %> +
+<% } %> + +<% if (hasItems(cv.references)) { %> +
+
+

References

+
+
+ <% for (const item of cv.references) { %> +
+
+

<%= item.name %>

+
<%= item.relationship %>
+
+
<%- fn.renderMarkdown(item.reference, true) %>
+
+ <% } %> +
+<% } %> + +<% if (hasItems(cv.interests)) { %> +
+
+

Interests

+
+
+
+ <% for (const item of cv.interests) { %> +
+

<%= item.name %>

+ <% if (item.keywords && item.keywords.length > 0) { %> +
+ <% for (const kw of item.keywords) { %> + <%= kw %> + <% } %> +
+ <% } %> +
+ <% } %> +
+
+<% } %> <% if (cv.meta) { %> diff --git a/src/themes/reorx/index.scss b/src/themes/reorx/index.scss index 28743bc..6c200ab 100644 --- a/src/themes/reorx/index.scss +++ b/src/themes/reorx/index.scss @@ -34,10 +34,14 @@ $lh-p: 1.4; } } -a, a:visited, a:active { - color: var(--color-primary); +a { + color: $color-text-dim; text-decoration: none; } + +a:visited, a:active { + color: var(--color-primary); +} a:hover { color: var(--color-primary); text-decoration: underline; From cf1137cc2f791bd04a807387ea565eed12f3e5d2 Mon Sep 17 00:00:00 2001 From: Josh Pollard <49789046+Joshlucpoll@users.noreply.github.com> Date: Tue, 31 Dec 2024 18:30:04 +0100 Subject: [PATCH 2/2] theme tweaks --- src/themes/reorx/index.ejs | 2 +- src/themes/reorx/index.scss | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/themes/reorx/index.ejs b/src/themes/reorx/index.ejs index ba38b32..2a30151 100644 --- a/src/themes/reorx/index.ejs +++ b/src/themes/reorx/index.ejs @@ -123,7 +123,7 @@ function date(item, level) {
- <%= item.studyType %>, <%= item.area %> + <%= item.studyType %> <%= item.area %>
<%- dateRange(item, 2) %>
diff --git a/src/themes/reorx/index.scss b/src/themes/reorx/index.scss index 6c200ab..88212d1 100644 --- a/src/themes/reorx/index.scss +++ b/src/themes/reorx/index.scss @@ -34,6 +34,10 @@ $lh-p: 1.4; } } +.date-range { + font-style: italic; +} + a { color: $color-text-dim; text-decoration: none;