diff --git a/README.MD b/README.MD
index bbfbf00..6b005bc 100644
--- a/README.MD
+++ b/README.MD
@@ -26,7 +26,11 @@ Older versions: [V1](https://github.com/blopa/Resume-Builder/blob/main/README_V1
- Cover Letter Editor
## JSON Resume Schema
-This project uses the [jsonresume/resume-schema](https://github.com/jsonresume/resume-schema) v1.0.0, but due a need to extend some of it's features, we also added 2 new fields: `__translation__` to translate template keys, and `coverLetter` so you can add your own Cover Letter template.
+This project uses the [jsonresume/resume-schema](https://github.com/jsonresume/resume-schema) v1.0.0, but due a need to extend some of it's features, we also added 4 new fields:
+- `__translation__` to translate template keys.
+- `coverLetter` to add your own Cover Letter template.
+- `work[].keywords` to add keywords to your work experience.
+- `enableSourceDataDownload` to allow the JSON data to be downloaded from the resume itself.
## Online viewer
Create a GitHub repo [like this one](https://github.com/blopa/resume.json) with the name `resume.json` and a file called `resume.json` in a branch called `main` and following the JSON schema from [github.com/jsonresume/resume-schema](https://github.com/jsonresume/resume-schema/tree/v1.0.0) v1.0.0.
@@ -146,6 +150,10 @@ The following `JSON` is a result of [this Google Spreadsheet](https://docs.googl
"Build an algorithm for artist to detect if their music was violating copy right infringement laws",
"Successfully won Techcrunch Disrupt",
"Optimized an algorithm that holds the current world record for Weisman Scores"
+ ],
+ "keywords": [
+ "Javascript",
+ "React"
]
}
],
@@ -296,9 +304,12 @@ The following `JSON` is a result of [this Google Spreadsheet](https://docs.googl
## Release Notes
- **v4.0.2:**
- - Filter out resume templates that are not ready yet
- - Add download link to download the JSON data
- - Fix resume viewer
+ - Filter out resume templates that are not ready yet.
+ - Add download link to download the JSON data.
+ - Fix resume viewer.
+ - Add missing fields on "work" and "projects".
+ - Small layout fixes in the "Default" template.
+ - Arrays from the spreadsheet are now parsed using `';'` instead of `','`.
- **v4.0.1:**
- Add visual cue to the cover letter variables.
- **v4.0.0:**
diff --git a/gatsby-node.js b/gatsby-node.js
index 7ec8925..dd6ad3a 100644
--- a/gatsby-node.js
+++ b/gatsby-node.js
@@ -84,6 +84,11 @@ exports.onCreateWebpackConfig = async ({
}) => {
const templates = await fs.readdir(TEMPLATES_PATH);
+ // TODO this fixes the 'React Refresh Babel' error where NODE_ENV is 'local' for some reason
+ if (process.env.NODE_ENV !== 'production') {
+ process.env.NODE_ENV = 'development';
+ }
+
actions.setWebpackConfig({
plugins: [
plugins.define({
diff --git a/resume.json b/resume.json
index e5bb015..5d4d6ce 100644
--- a/resume.json
+++ b/resume.json
@@ -43,6 +43,10 @@
"Build an algorithm for artist to detect if their music was violating copy right infringement laws",
"Successfully won Techcrunch Disrupt",
"Optimized an algorithm that holds the current world record for Weisman Scores"
+ ],
+ "keywords": [
+ "Javascript",
+ "React"
]
}
],
diff --git a/src/components/ResumeDrawerItems/Items/Work.jsx b/src/components/ResumeDrawerItems/Items/Work.jsx
index 78e5104..2ea456b 100644
--- a/src/components/ResumeDrawerItems/Items/Work.jsx
+++ b/src/components/ResumeDrawerItems/Items/Work.jsx
@@ -106,6 +106,40 @@ function Work({ work: workData }) {
},
};
}
+
+ return wrk;
+ });
+ setResumeWorkState(newWork);
+ }, [setResumeWorkState, workData]);
+
+ const toggleWorkKeywords = useCallback((oldWork, keyword) => () => {
+ const newWork = { ...workData };
+ newWork.value =
+ newWork?.value.map((wrk) => {
+ if (JSON.stringify(wrk?.value) === JSON.stringify(oldWork?.value)) {
+ return {
+ ...wrk,
+ value: {
+ ...wrk?.value,
+ keywords: {
+ ...wrk?.value.keywords,
+ value: [
+ ...wrk?.value.keywords?.value.map((kword) => {
+ if (JSON.stringify(kword?.value) === JSON.stringify(keyword?.value)) {
+ return {
+ ...kword,
+ enabled: !kword?.enabled,
+ };
+ }
+
+ return kword;
+ }),
+ ],
+ },
+ },
+ };
+ }
+
return wrk;
});
setResumeWorkState(newWork);
@@ -131,6 +165,7 @@ function Work({ work: workData }) {
endDate,
summary,
highlights,
+ keywords,
} = work?.value || {};
return (
@@ -249,6 +284,31 @@ function Work({ work: workData }) {
))}
)}
+ {keywords && (
+
{entity?.value}
} {(url && url?.enabled && url?.value) && {url.value}} {description && description?.enabled &&{description?.value}
} + {highlights?.enabled && ( +{reference?.value}
} + {reference?.enabled && ( ++ {reference?.value} +
+ )} ); } diff --git a/src/components/ResumeTemplates/Default/Sections/Work.jsx b/src/components/ResumeTemplates/Default/Sections/Work.jsx index 28823d1..6d92b4e 100644 --- a/src/components/ResumeTemplates/Default/Sections/Work.jsx +++ b/src/components/ResumeTemplates/Default/Sections/Work.jsx @@ -35,6 +35,7 @@ const useStyles = makeStyles((theme) => ({ }, summary: { whiteSpace: 'break-spaces', + marginBottom: '5px !important', }, description: { whiteSpace: 'break-spaces', @@ -45,6 +46,19 @@ const useStyles = makeStyles((theme) => ({ fontStyle: 'italic', }, }, + keywords: { + flexWrap: 'wrap', + listStyle: 'none', + paddingLeft: 0, + display: 'inline-flex', + '& li': { + fontStyle: 'italic', + margin: '3px 3px 0 0', + backgroundColor: theme.palette.type === 'dark' ? '#28407b' : '#dae4f4', + borderRadius: '3px', + padding: '1px 3px', + }, + }, contentWrapper: { marginLeft: '4px', }, @@ -89,6 +103,7 @@ const Work = ({ work: works }) => { endDate, summary, highlights, + keywords, } = work?.value || {}; let refProps = {}; @@ -152,6 +167,16 @@ const Work = ({ work: works }) => { ))} )} + {keywords?.enabled && ( +