Skip to content

Commit

Permalink
Add job title and US state controls
Browse files Browse the repository at this point in the history
  • Loading branch information
Swizec committed Oct 29, 2018
1 parent af9dfe3 commit 813cdd4
Showing 1 changed file with 64 additions and 4 deletions.
68 changes: 64 additions & 4 deletions src/components/Controls/index.js
Expand Up @@ -4,7 +4,11 @@ import ControlRow from "./ControlRow";
class Controls extends React.Component {
state = {
yearFilter: () => true,
year: "*"
jobTitleFilter: () => true,
USstateFilter: () => true,
year: "*",
jobTitle: "*",
USstate: "*"
};

componentDidMount() {}
Expand All @@ -26,23 +30,64 @@ class Controls extends React.Component {
);
};

updateJobTitleFilter = (title, reset) => {
let filter = d => d.clean_job_title === title;

if (reset || !title) {
filter = () => true;
title = "*";
}

this.setState(
{
jobTitleFilter: filter,
jobTitle: title
},
() => this.reportUpdateUpTheChain()
);
};

updateUSstateFilter = (USstate, reset) => {
let filter = d => d.USstate === USstate;

if (reset || !USstate) {
filter = () => true;
USstate = "*";
}

this.setState(
{
USstateFilter: filter,
USstate: USstate
},
() => this.reportUpdateUpTheChain()
);
};

reportUpdateUpTheChain() {
window.location.hash = [this.state.year || "*"].join("-");

this.props.updateDataFilter(
(filters => {
return d => filters.yearFilter(d);
return d =>
filters.yearFilter(d) &&
filters.jobTitleFilter(d) &&
filters.USstateFilter(d);
})(this.state),
{
year: this.state.year
year: this.state.year,
jobTitle: this.state.jobTitle,
USstate: this.state.USstate
}
);
}

render() {
const { data } = this.props;

const years = new Set(data.map(d => d.submit_date.getFullYear()));
const years = new Set(data.map(d => d.submit_date.getFullYear())),
jobTitles = new Set(data.map(d => d.clean_job_title)),
USstates = new Set(data.map(d => d.USstate));

return (
<div>
Expand All @@ -52,6 +97,21 @@ class Controls extends React.Component {
picked={this.state.year}
updateDataFilter={this.updateYearFilter}
/>

<ControlRow
data={data}
toggleNames={Array.from(jobTitles.values())}
picked={this.state.jobTitle}
updateDataFilter={this.updateJobTitleFilter}
/>

<ControlRow
data={data}
toggleNames={Array.from(USstates.values())}
picked={this.state.USstate}
updateDataFilter={this.updateUSstateFilter}
capitalize
/>
</div>
);
}
Expand Down

0 comments on commit 813cdd4

Please sign in to comment.