Skip to content
This repository was archived by the owner on Oct 17, 2022. It is now read-only.

Initial setup to render CV #73

Merged
merged 4 commits into from
Nov 1, 2017
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Added entry to CV in links
* link to CV
* async route to load both component and resume
* resume loaded from public/
* resume.json is symbolic link to the resume/resume.json
kornicameister committed Oct 31, 2017
commit 9b939bbcd02d23e04c021f6982cf9607aa345842
1 change: 1 addition & 0 deletions public/resume.json
12 changes: 9 additions & 3 deletions src/app.tsx
Original file line number Diff line number Diff line change
@@ -14,7 +14,7 @@ import {
} from 'reactstrap';

import TravisBadge from './common/travis_badge';
import { AsyncAbout, AsyncHome, AsyncNotFound, AsyncStats } from './routes';
import { AsyncAbout, AsyncCV, AsyncHome, AsyncNotFound, AsyncStats } from './routes';

interface IAppState {
is_open: boolean;
@@ -49,6 +49,11 @@ export default class App extends React.Component<any, IAppState> {
Home
</RouterNavLink>
</NavItem>
<NavItem>
<RouterNavLink to='/cv' className='nav-link'>
CV
</RouterNavLink>
</NavItem>
<NavItem>
<RouterNavLink to='/about' className='nav-link'>
About
@@ -89,8 +94,9 @@ export default class App extends React.Component<any, IAppState> {
<Fade>
<Switch>
<Route path='/' component={AsyncHome} exact />
<Route path='/about' component={AsyncAbout} exact />
<Route path='/stats' component={AsyncStats} exact />
<Route path='/cv' component={AsyncCV} />
<Route path='/about' component={AsyncAbout} />
<Route path='/stats' component={AsyncStats} />
<Route component={AsyncNotFound} />
</Switch>
</Fade>
10 changes: 10 additions & 0 deletions src/pages/cv.spec.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import { shallow } from 'enzyme';
import * as React from 'react';

import CVPage from './cv';

describe('CVPage', () => {
it('renders without crashing', () => {
shallow(<CVPage resume={{}} />);
});
});
13 changes: 13 additions & 0 deletions src/pages/cv.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import * as React from 'react';

interface Props {
resume: object;
}

const CVPage: React.SFC<Props> = (props) => {
return (
<h1>CV</h1>
);
};

export default CVPage;
19 changes: 0 additions & 19 deletions src/routes.ts

This file was deleted.

40 changes: 40 additions & 0 deletions src/routes.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
import * as React from 'react';
import Loadable from 'react-loadable';
import RouteLoader from './router';

export const AsyncHome = Loadable({
loader: () => import('./pages/home'),
loading: RouteLoader
});
export const AsyncNotFound = Loadable({
loader: () => import('./pages/not_found'),
loading: RouteLoader
});
export const AsyncAbout = Loadable({
loader: () => import('./pages/about'),
loading: RouteLoader
});
export const AsyncStats = Loadable({
loader: () => import('./pages/stats/stats_page'),
loading: RouteLoader
});
export const AsyncCV = Loadable.Map({
loader: {
CV: () => import('./pages/cv'),
resume: () => fetch(
`${process.env.PUBLIC_URL}/resume.json`,
{
headers: [
['Content-Type', 'application/json'],
['Cache-Control', 'must-revalidate']
]
}
).then((res) => res.json())
},
loading: RouteLoader,
render(loaded, props) {
const CVPage = loaded.CV.default;
const resume = loaded.resume;
return <CVPage {...props} resume={resume} />;
}
});
Empty file removed src/static/.gitkeep
Empty file.
357 changes: 0 additions & 357 deletions src/static/resume.json

This file was deleted.