Files
freeCodeCamp/common/app/routes/Jobs/components/List.jsx

82 lines
1.8 KiB
JavaScript
Raw Normal View History

2015-07-25 21:32:18 -07:00
import React, { PropTypes } from 'react';
import classnames from 'classnames';
import { ListGroup, ListGroupItem } from 'react-bootstrap';
import moment from 'moment';
2015-07-25 21:32:18 -07:00
2015-09-07 23:52:21 -07:00
export default React.createClass({
displayName: 'ListJobs',
2015-07-25 21:32:18 -07:00
2015-09-07 23:52:21 -07:00
propTypes: {
handleClick: PropTypes.func,
2015-09-07 23:52:21 -07:00
jobs: PropTypes.array
},
2015-07-25 21:32:18 -07:00
2015-10-16 20:05:22 -07:00
addLocation(locale) {
if (!locale) {
return null;
}
return (
<span className='hidden-xs hidden-sm'>
{ locale } - {' '}
</span>
);
},
renderJobs(handleClick, jobs = []) {
return jobs
.filter(({ isPaid, isApproved, isFilled }) => {
return isPaid && isApproved && !isFilled;
})
.map(({
2015-09-07 23:52:21 -07:00
id,
company,
position,
2015-09-14 12:12:31 -07:00
isHighlighted,
2015-10-16 16:12:01 -07:00
postedOn,
locale
}) => {
const className = classnames({
'jobs-list': true,
'jobs-list-highlight': isHighlighted
});
return (
<ListGroupItem
className={ className }
key={ id }
onClick={ () => handleClick(id) }>
<div>
<h4 style={{ display: 'inline-block' }}>
2015-10-19 14:46:17 -07:00
<bold>{ company }</bold>
{' '}
<span className='hidden-xs hidden-sm'>
- { position }
</span>
</h4>
<h4
className='pull-right'
style={{ display: 'inline-block' }}>
2015-10-16 20:05:22 -07:00
{ this.addLocation(locale) }
{ moment(new Date(postedOn)).format('MMM Do') }
</h4>
</div>
</ListGroupItem>
);
});
2015-09-07 23:52:21 -07:00
},
render() {
const {
handleClick,
jobs
} = this.props;
2015-09-07 23:52:21 -07:00
return (
<ListGroup>
{ this.renderJobs(handleClick, jobs) }
</ListGroup>
2015-09-07 23:52:21 -07:00
);
}
});