From 9d729d2bae0c074811602f1adae2788f5d80f4f8 Mon Sep 17 00:00:00 2001 From: Alessandro DiMarco Date: Mon, 26 Dec 2016 18:56:13 -0500 Subject: [PATCH 01/13] Remove BuildingListItem component --- src/components/BuildingList/index.js | 19 +++++++++++-------- src/components/BuildingList/styles.css | 7 +++++++ src/components/BuildingListItem/index.js | 16 ---------------- src/components/BuildingListItem/styles.css | 7 ------- 4 files changed, 18 insertions(+), 31 deletions(-) delete mode 100644 src/components/BuildingListItem/index.js delete mode 100644 src/components/BuildingListItem/styles.css diff --git a/src/components/BuildingList/index.js b/src/components/BuildingList/index.js index 8de12843..8b150940 100644 --- a/src/components/BuildingList/index.js +++ b/src/components/BuildingList/index.js @@ -1,6 +1,4 @@ import React from 'react'; - -import BuildingListItem from '../BuildingListItem/index' import './styles.css'; export default function BuildingList({buildings}) { @@ -8,14 +6,19 @@ export default function BuildingList({buildings}) { return

Loading...

} - let i = 0; - const buildingProperties = Object.keys(buildings[0]).map((item) => { - return { item } - }); + const buildingProperties = Object.keys(buildings[0]).map(item => + { item } , + ); - const buildingItems = buildings.map((building) => { + const buildingItems = buildings.map(building => { return ( - + + {building['address']} + {building['bbl']} + {building['blocpower_id']} + {building['borough']} + {building['zipcode']} + ) }); diff --git a/src/components/BuildingList/styles.css b/src/components/BuildingList/styles.css index e69de29b..2f5a0655 100644 --- a/src/components/BuildingList/styles.css +++ b/src/components/BuildingList/styles.css @@ -0,0 +1,7 @@ +.building-list-item { + cursor: pointer; +} + +.building-list-item:hover { + background-color: #eee; +} diff --git a/src/components/BuildingListItem/index.js b/src/components/BuildingListItem/index.js deleted file mode 100644 index b51cacbe..00000000 --- a/src/components/BuildingListItem/index.js +++ /dev/null @@ -1,16 +0,0 @@ -import React from 'react'; -import './styles.css'; - -export default function BuildingListItem(props) { - - let i = 0; - const building_items = Object.values(props).map((building_item) => { - return {building_item} - }); - - return ( - - {building_items} - - ) -}; diff --git a/src/components/BuildingListItem/styles.css b/src/components/BuildingListItem/styles.css deleted file mode 100644 index 2f5a0655..00000000 --- a/src/components/BuildingListItem/styles.css +++ /dev/null @@ -1,7 +0,0 @@ -.building-list-item { - cursor: pointer; -} - -.building-list-item:hover { - background-color: #eee; -} -- GitLab From 0f19f28d73d5ba5f3221a5b5224aa356560c82a7 Mon Sep 17 00:00:00 2001 From: Alessandro DiMarco Date: Mon, 26 Dec 2016 22:37:07 -0500 Subject: [PATCH 02/13] Create env vars for buildingservice url and headers --- src/containers/HomePage/actions.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/containers/HomePage/actions.js b/src/containers/HomePage/actions.js index f37e330b..600306d9 100644 --- a/src/containers/HomePage/actions.js +++ b/src/containers/HomePage/actions.js @@ -1,11 +1,10 @@ import 'whatwg-fetch'; import {FETCH_BUILDINGS} from './constants' -const ROOT_URL = 'http://localhost:5404/building/'; +const ROOT_URL = process.env.REACT_APP_BUILDING_SERVICE + '/building/'; +const myHeaders = new Headers({"x-blocpower-app-key": process.env.REACT_APP_KEY}); export function fetchBuildings(address) { - const myHeaders = new Headers({"x-blocpower-app-key": "04a6b12c-d3d3-4ad2-afe4-b22fd0215578"}); - const myInit = { method: 'GET', headers: myHeaders, -- GitLab From 105ff6eadcf9f16eb59c5c58d9cb9b6459aaf355 Mon Sep 17 00:00:00 2001 From: Alessandro DiMarco Date: Mon, 26 Dec 2016 22:56:08 -0500 Subject: [PATCH 03/13] Rename BuildingList and BuildingListTable --- .../{BuildingList => BuildingListTable}/index.js | 2 +- .../{BuildingList => BuildingListTable}/styles.css | 0 src/containers/App/index.js | 4 ++-- src/containers/{HomePage => BuildingList}/actions.js | 0 src/containers/{HomePage => BuildingList}/constants.js | 0 src/containers/{HomePage => BuildingList}/index.js | 8 ++++---- src/containers/{HomePage => BuildingList}/reducer.js | 0 src/containers/{HomePage => BuildingList}/styles.css | 0 src/reducer.js | 2 +- 9 files changed, 8 insertions(+), 8 deletions(-) rename src/components/{BuildingList => BuildingListTable}/index.js (93%) rename src/components/{BuildingList => BuildingListTable}/styles.css (100%) rename src/containers/{HomePage => BuildingList}/actions.js (100%) rename src/containers/{HomePage => BuildingList}/constants.js (100%) rename src/containers/{HomePage => BuildingList}/index.js (84%) rename src/containers/{HomePage => BuildingList}/reducer.js (100%) rename src/containers/{HomePage => BuildingList}/styles.css (100%) diff --git a/src/components/BuildingList/index.js b/src/components/BuildingListTable/index.js similarity index 93% rename from src/components/BuildingList/index.js rename to src/components/BuildingListTable/index.js index 8b150940..8c349c70 100644 --- a/src/components/BuildingList/index.js +++ b/src/components/BuildingListTable/index.js @@ -1,7 +1,7 @@ import React from 'react'; import './styles.css'; -export default function BuildingList({buildings}) { +export default function BuildingListTable({buildings}) { if (!buildings || buildings.length === 0) { return

Loading...

} diff --git a/src/components/BuildingList/styles.css b/src/components/BuildingListTable/styles.css similarity index 100% rename from src/components/BuildingList/styles.css rename to src/components/BuildingListTable/styles.css diff --git a/src/containers/App/index.js b/src/containers/App/index.js index b725bd15..96be195e 100644 --- a/src/containers/App/index.js +++ b/src/containers/App/index.js @@ -1,13 +1,13 @@ import React, {Component} from 'react'; import './styles.css'; -import HomePage from '../HomePage'; +import BuildingList from '../BuildingList'; class App extends Component { render() { return (
- +
); } diff --git a/src/containers/HomePage/actions.js b/src/containers/BuildingList/actions.js similarity index 100% rename from src/containers/HomePage/actions.js rename to src/containers/BuildingList/actions.js diff --git a/src/containers/HomePage/constants.js b/src/containers/BuildingList/constants.js similarity index 100% rename from src/containers/HomePage/constants.js rename to src/containers/BuildingList/constants.js diff --git a/src/containers/HomePage/index.js b/src/containers/BuildingList/index.js similarity index 84% rename from src/containers/HomePage/index.js rename to src/containers/BuildingList/index.js index 0664832b..b464f7e1 100644 --- a/src/containers/HomePage/index.js +++ b/src/containers/BuildingList/index.js @@ -3,11 +3,11 @@ import {connect} from 'react-redux'; import {bindActionCreators} from 'redux'; import {fetchBuildings} from './actions' -import BuildingList from '../../components/BuildingList' +import BuildingListTable from '../../components/BuildingListTable' import './styles.css'; -class HomePage extends Component { +class BuildingList extends Component { constructor(props) { super(props); @@ -50,7 +50,7 @@ class HomePage extends Component { - + ) } @@ -64,4 +64,4 @@ function mapStateToProps({buildings}) { return {buildings}; } -export default connect(mapStateToProps, mapDispatchToProps)(HomePage); +export default connect(mapStateToProps, mapDispatchToProps)(BuildingList); diff --git a/src/containers/HomePage/reducer.js b/src/containers/BuildingList/reducer.js similarity index 100% rename from src/containers/HomePage/reducer.js rename to src/containers/BuildingList/reducer.js diff --git a/src/containers/HomePage/styles.css b/src/containers/BuildingList/styles.css similarity index 100% rename from src/containers/HomePage/styles.css rename to src/containers/BuildingList/styles.css diff --git a/src/reducer.js b/src/reducer.js index dd0cedcb..7e64f712 100644 --- a/src/reducer.js +++ b/src/reducer.js @@ -1,6 +1,6 @@ import {combineReducers} from 'redux'; -import BuildingReducer from './containers/HomePage/reducer'; +import BuildingReducer from './containers/BuildingList/reducer'; const rootReducer = combineReducers({ buildings: BuildingReducer -- GitLab From ebe4e92e76a0d45e61737b47a01304f2c7a2f9b7 Mon Sep 17 00:00:00 2001 From: Alessandro DiMarco Date: Mon, 26 Dec 2016 22:56:53 -0500 Subject: [PATCH 04/13] Remove App container --- src/containers/App/index.js | 16 ---------------- src/containers/App/index.test.js | 8 -------- src/containers/App/styles.css | 3 --- src/index.js | 4 ++-- 4 files changed, 2 insertions(+), 29 deletions(-) delete mode 100644 src/containers/App/index.js delete mode 100644 src/containers/App/index.test.js delete mode 100644 src/containers/App/styles.css diff --git a/src/containers/App/index.js b/src/containers/App/index.js deleted file mode 100644 index 96be195e..00000000 --- a/src/containers/App/index.js +++ /dev/null @@ -1,16 +0,0 @@ -import React, {Component} from 'react'; -import './styles.css'; - -import BuildingList from '../BuildingList'; - -class App extends Component { - render() { - return ( -
- -
- ); - } -} - -export default App; diff --git a/src/containers/App/index.test.js b/src/containers/App/index.test.js deleted file mode 100644 index ba444eb1..00000000 --- a/src/containers/App/index.test.js +++ /dev/null @@ -1,8 +0,0 @@ -import React from 'react'; -import ReactDOM from 'react-dom'; -import App from './index'; - -it('renders without crashing', () => { - const div = document.createElement('div'); - ReactDOM.render(, div); -}); diff --git a/src/containers/App/styles.css b/src/containers/App/styles.css deleted file mode 100644 index 34b8ee09..00000000 --- a/src/containers/App/styles.css +++ /dev/null @@ -1,3 +0,0 @@ -.App { - -} diff --git a/src/index.js b/src/index.js index 25279758..bd22d3fb 100644 --- a/src/index.js +++ b/src/index.js @@ -5,7 +5,7 @@ import {Provider} from 'react-redux'; import {createStore, applyMiddleware} from 'redux'; import ReduxPromise from 'redux-promise'; -import App from './containers/App'; +import BuildingList from './containers/BuildingList'; import rootReducer from './reducer' const createStoreWithMiddleware = applyMiddleware(ReduxPromise)(createStore); @@ -13,7 +13,7 @@ const createStoreWithMiddleware = applyMiddleware(ReduxPromise)(createStore); ReactDOM.render( - + , document.getElementById('root') ); -- GitLab From b9da73f69a9f7b9697171ca6653226f5f235a068 Mon Sep 17 00:00:00 2001 From: Alessandro DiMarco Date: Mon, 26 Dec 2016 23:07:37 -0500 Subject: [PATCH 05/13] Separate store into separate file --- src/index.js | 9 ++------- src/store.js | 11 +++++++++++ 2 files changed, 13 insertions(+), 7 deletions(-) create mode 100644 src/store.js diff --git a/src/index.js b/src/index.js index bd22d3fb..72ebde11 100644 --- a/src/index.js +++ b/src/index.js @@ -1,18 +1,13 @@ import React from 'react'; import ReactDOM from 'react-dom'; - import {Provider} from 'react-redux'; -import {createStore, applyMiddleware} from 'redux'; -import ReduxPromise from 'redux-promise'; +import store from './store'; import BuildingList from './containers/BuildingList'; -import rootReducer from './reducer' - -const createStoreWithMiddleware = applyMiddleware(ReduxPromise)(createStore); ReactDOM.render( + store={store}> , document.getElementById('root') diff --git a/src/store.js b/src/store.js new file mode 100644 index 00000000..77286aad --- /dev/null +++ b/src/store.js @@ -0,0 +1,11 @@ +import { createStore, applyMiddleware } from 'redux'; +import ReduxPromise from 'redux-promise'; +import rootReducer from './reducer' + +const createStoreWithMiddleware = applyMiddleware(ReduxPromise)(createStore); + +const store = createStoreWithMiddleware(rootReducer, + window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__() +) + +export default store; \ No newline at end of file -- GitLab From 9cf4302c777559abdc9cac07c65c39e7b353ca80 Mon Sep 17 00:00:00 2001 From: Alessandro DiMarco Date: Mon, 26 Dec 2016 23:12:31 -0500 Subject: [PATCH 06/13] Change message to None when search returns nothing --- src/components/BuildingListTable/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/BuildingListTable/index.js b/src/components/BuildingListTable/index.js index 8c349c70..a4a0687b 100644 --- a/src/components/BuildingListTable/index.js +++ b/src/components/BuildingListTable/index.js @@ -3,7 +3,7 @@ import './styles.css'; export default function BuildingListTable({buildings}) { if (!buildings || buildings.length === 0) { - return

Loading...

+ return
None
} const buildingProperties = Object.keys(buildings[0]).map(item => -- GitLab From cddafbbe01f3f0de5b8f016feead2f508ea2825a Mon Sep 17 00:00:00 2001 From: Alessandro DiMarco Date: Tue, 27 Dec 2016 01:45:55 -0500 Subject: [PATCH 07/13] Add eslint depend., PropTypes and fix styling according to eslint --- .eslintrc.json | 26 ++++++++++++ package.json | 12 +++--- src/components/BuildingListTable/index.js | 40 +++++++++++------- src/containers/BuildingList/actions.js | 29 ++++++++------ src/containers/BuildingList/constants.js | 2 + src/containers/BuildingList/index.js | 49 +++++++++++++++-------- src/containers/BuildingList/reducer.js | 2 +- src/index.js | 7 ++-- src/reducer.js | 4 +- src/store.js | 8 ++-- 10 files changed, 117 insertions(+), 62 deletions(-) create mode 100644 .eslintrc.json diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 00000000..8cb839b7 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,26 @@ +{ + "extends": "airbnb", + "plugins": [ + "react", + "jsx-a11y", + "import" + ], + "rules": { + "react/jsx-filename-extension": [1, { + "extensions": [ + ".js" + ]} + ], + "comma-dangle": ["error", { + "arrays": "always-multiline", + "objects": "always-multiline", + "imports": "always-multiline", + "exports": "always-multiline", + "functions": "ignore" + }] + }, + "env": { + "browser": true, + "jest": true + } +} \ No newline at end of file diff --git a/package.json b/package.json index 7e9a9d20..ea661077 100644 --- a/package.json +++ b/package.json @@ -16,13 +16,14 @@ "css-loader": "0.25.0", "detect-port": "1.0.1", "dotenv": "2.0.0", - "eslint": "3.8.1", - "eslint-config-react-app": "^0.3.0", + "eslint": "3.9.1", + "eslint-config-airbnb": "^13.0.0", + "eslint-config-react-app": "^0.5.0", "eslint-loader": "1.6.0", "eslint-plugin-flowtype": "2.21.0", - "eslint-plugin-import": "2.0.1", + "eslint-plugin-import": "2.1.0", "eslint-plugin-jsx-a11y": "2.2.3", - "eslint-plugin-react": "6.4.1", + "eslint-plugin-react": "6.6.0", "extract-text-webpack-plugin": "1.0.1", "file-loader": "0.9.0", "filesize": "3.3.0", @@ -83,8 +84,5 @@ "presets": [ "react-app" ] - }, - "eslintConfig": { - "extends": "react-app" } } diff --git a/src/components/BuildingListTable/index.js b/src/components/BuildingListTable/index.js index a4a0687b..548cf6bc 100644 --- a/src/components/BuildingListTable/index.js +++ b/src/components/BuildingListTable/index.js @@ -1,26 +1,26 @@ -import React from 'react'; +import React, { PropTypes } from 'react'; import './styles.css'; -export default function BuildingListTable({buildings}) { +export default function BuildingListTable({ buildings }) { if (!buildings || buildings.length === 0) { - return
None
+ return
None
; } const buildingProperties = Object.keys(buildings[0]).map(item => { item } , ); - const buildingItems = buildings.map(building => { - return ( - - {building['address']} - {building['bbl']} - {building['blocpower_id']} - {building['borough']} - {building['zipcode']} - - ) - }); + const buildingItems = buildings.map(building => + ( + + {building.address} + {building.bbl} + {building.blocpower_id} + {building.borough} + {building.zipcode} + + ), + ); return ( @@ -33,5 +33,15 @@ export default function BuildingListTable({buildings}) { {buildingItems}
- ) + ); +} + +BuildingListTable.propTypes = { + buildings: PropTypes.arrayOf(PropTypes.shape({ + address: PropTypes.state, + bbl: PropTypes.number, + blocpower_id: PropTypes.number, + borough: PropTypes.string, + zipcode: PropTypes.number, + })), }; diff --git a/src/containers/BuildingList/actions.js b/src/containers/BuildingList/actions.js index 600306d9..ba423ec4 100644 --- a/src/containers/BuildingList/actions.js +++ b/src/containers/BuildingList/actions.js @@ -1,29 +1,32 @@ import 'whatwg-fetch'; -import {FETCH_BUILDINGS} from './constants' +import { FETCH_BUILDINGS } from './constants'; -const ROOT_URL = process.env.REACT_APP_BUILDING_SERVICE + '/building/'; -const myHeaders = new Headers({"x-blocpower-app-key": process.env.REACT_APP_KEY}); +const ROOT_URL = `${process.env.REACT_APP_BUILDING_SERVICE}/building/`; +const myHeaders = new Headers({ 'x-blocpower-app-key': process.env.REACT_APP_KEY }); -export function fetchBuildings(address) { +function fetchBuildings(address) { const myInit = { method: 'GET', headers: myHeaders, mode: 'cors', - cache: 'default' + cache: 'default', }; const url = `${ROOT_URL}?address=${address}`; - const request = fetch(url, myInit).then(function (response) { - return response.json() - - }).catch(function (error) { - console.log('request failed for buildings', error) - - }); + const request = fetch(url, myInit).then(response => + response.json() + ); + // .catch(function (error) { + // console.log('request failed for buildings', error) + // }); return { type: FETCH_BUILDINGS, - payload: request + payload: request, }; } + +/* eslint-disable import/prefer-default-export */ +export { fetchBuildings }; +/* eslint-enable */ diff --git a/src/containers/BuildingList/constants.js b/src/containers/BuildingList/constants.js index bdea6400..0cb538df 100644 --- a/src/containers/BuildingList/constants.js +++ b/src/containers/BuildingList/constants.js @@ -1 +1,3 @@ +/* eslint-disable import/prefer-default-export */ export const FETCH_BUILDINGS = 'FETCH_BUILDINGS'; +/* eslint-enable */ diff --git a/src/containers/BuildingList/index.js b/src/containers/BuildingList/index.js index b464f7e1..cefa1811 100644 --- a/src/containers/BuildingList/index.js +++ b/src/containers/BuildingList/index.js @@ -1,9 +1,9 @@ -import React, {Component} from 'react'; -import {connect} from 'react-redux'; -import {bindActionCreators} from 'redux'; -import {fetchBuildings} from './actions' +import React, { Component, PropTypes } from 'react'; +import { connect } from 'react-redux'; +import { bindActionCreators } from 'redux'; -import BuildingListTable from '../../components/BuildingListTable' +import { fetchBuildings } from './actions'; +import BuildingListTable from '../../components/BuildingListTable'; import './styles.css'; @@ -11,7 +11,7 @@ class BuildingList extends Component { constructor(props) { super(props); - this.state = {term: '107 broadway'}; + this.state = { term: '107 broadway' }; this.onInputChange = this.onInputChange.bind(this); this.onFormSubmit = this.onFormSubmit.bind(this); @@ -21,12 +21,8 @@ class BuildingList extends Component { this.getBuildings(); } - getBuildings() { - this.props.fetchBuildings(this.state.term); - } - onInputChange(event) { - this.setState({term: event.target.value}); + this.setState({ term: event.target.value }); } onFormSubmit(event) { @@ -35,10 +31,18 @@ class BuildingList extends Component { this.getBuildings(); } + getBuildings() { + // console.log(typeof(this.props.fetchBuildings)) + this.props.fetchBuildings(this.state.term); + } + render() { return (
-
+
Submit
- +
- ) + ); } } +BuildingList.propTypes = { + buildings: PropTypes.arrayOf(PropTypes.shape({ + address: PropTypes.state, + bbl: PropTypes.number, + blocpower_id: PropTypes.number, + borough: PropTypes.string, + zipcode: PropTypes.number, + })), + fetchBuildings: PropTypes.func, +}; + function mapDispatchToProps(dispatch) { - return bindActionCreators({fetchBuildings}, dispatch); + return bindActionCreators({ fetchBuildings }, dispatch); } -function mapStateToProps({buildings}) { - return {buildings}; +function mapStateToProps({ buildings }) { + return { buildings }; } export default connect(mapStateToProps, mapDispatchToProps)(BuildingList); diff --git a/src/containers/BuildingList/reducer.js b/src/containers/BuildingList/reducer.js index 077dcc30..82c2717c 100644 --- a/src/containers/BuildingList/reducer.js +++ b/src/containers/BuildingList/reducer.js @@ -1,4 +1,4 @@ -import {FETCH_BUILDINGS} from './constants'; +import { FETCH_BUILDINGS } from './constants'; export default function (state = [], action) { switch (action.type) { diff --git a/src/index.js b/src/index.js index 72ebde11..b0820b49 100644 --- a/src/index.js +++ b/src/index.js @@ -1,14 +1,13 @@ import React from 'react'; import ReactDOM from 'react-dom'; -import {Provider} from 'react-redux'; +import { Provider } from 'react-redux'; import store from './store'; import BuildingList from './containers/BuildingList'; ReactDOM.render( - + , - document.getElementById('root') + document.getElementById('root'), ); diff --git a/src/reducer.js b/src/reducer.js index 7e64f712..c32d6aa9 100644 --- a/src/reducer.js +++ b/src/reducer.js @@ -1,9 +1,9 @@ -import {combineReducers} from 'redux'; +import { combineReducers } from 'redux'; import BuildingReducer from './containers/BuildingList/reducer'; const rootReducer = combineReducers({ - buildings: BuildingReducer + buildings: BuildingReducer, }); export default rootReducer; diff --git a/src/store.js b/src/store.js index 77286aad..f802f9d4 100644 --- a/src/store.js +++ b/src/store.js @@ -1,11 +1,13 @@ import { createStore, applyMiddleware } from 'redux'; import ReduxPromise from 'redux-promise'; -import rootReducer from './reducer' +import rootReducer from './reducer'; const createStoreWithMiddleware = applyMiddleware(ReduxPromise)(createStore); +/* eslint-disable no-underscore-dangle */ const store = createStoreWithMiddleware(rootReducer, window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__() -) +); +/* eslint-enable */ -export default store; \ No newline at end of file +export default store; -- GitLab From 689f2044ffa1beb851ba9cd3a999887ab700fc03 Mon Sep 17 00:00:00 2001 From: Alessandro DiMarco Date: Tue, 27 Dec 2016 01:51:20 -0500 Subject: [PATCH 08/13] Remove comment --- src/containers/BuildingList/index.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/containers/BuildingList/index.js b/src/containers/BuildingList/index.js index cefa1811..77627e6d 100644 --- a/src/containers/BuildingList/index.js +++ b/src/containers/BuildingList/index.js @@ -32,7 +32,6 @@ class BuildingList extends Component { } getBuildings() { - // console.log(typeof(this.props.fetchBuildings)) this.props.fetchBuildings(this.state.term); } -- GitLab From 1da7a6140d10c891bddd4b78422f5b38d616dd18 Mon Sep 17 00:00:00 2001 From: Alessandro DiMarco Date: Tue, 27 Dec 2016 01:53:25 -0500 Subject: [PATCH 09/13] Update prop type --- src/containers/BuildingList/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/containers/BuildingList/index.js b/src/containers/BuildingList/index.js index 77627e6d..d8d33cfc 100644 --- a/src/containers/BuildingList/index.js +++ b/src/containers/BuildingList/index.js @@ -61,7 +61,7 @@ class BuildingList extends Component { BuildingList.propTypes = { buildings: PropTypes.arrayOf(PropTypes.shape({ - address: PropTypes.state, + address: PropTypes.string, bbl: PropTypes.number, blocpower_id: PropTypes.number, borough: PropTypes.string, -- GitLab From 88430ab00d8cc49a57242d4db6f0437ba017994b Mon Sep 17 00:00:00 2001 From: Alessandro DiMarco Date: Tue, 27 Dec 2016 02:13:44 -0500 Subject: [PATCH 10/13] Add react-router --- package.json | 1 + src/index.js | 5 +++-- src/routes.js | 7 +++++++ 3 files changed, 11 insertions(+), 2 deletions(-) create mode 100644 src/routes.js diff --git a/package.json b/package.json index ea661077..deedd730 100644 --- a/package.json +++ b/package.json @@ -53,6 +53,7 @@ "react": "^15.3.2", "react-dom": "^15.3.2", "react-redux": "^4.4.5", + "react-router": "^3.0.0", "redux": "^3.6.0", "redux-promise": "^0.5.3", "whatwg-fetch": "^1.0.0" diff --git a/src/index.js b/src/index.js index b0820b49..a64c0252 100644 --- a/src/index.js +++ b/src/index.js @@ -1,13 +1,14 @@ import React from 'react'; import ReactDOM from 'react-dom'; import { Provider } from 'react-redux'; +import { Router, browserHistory } from 'react-router'; import store from './store'; -import BuildingList from './containers/BuildingList'; +import routes from './routes'; ReactDOM.render( - + , document.getElementById('root'), ); diff --git a/src/routes.js b/src/routes.js new file mode 100644 index 00000000..76f7d6ef --- /dev/null +++ b/src/routes.js @@ -0,0 +1,7 @@ +import React from 'react'; +import { Route } from 'react-router'; +import BuildingList from './containers/BuildingList'; + +module.exports = ( + +); -- GitLab From 77b2db7ed3c5eb1d218b9f207d39995deb888f86 Mon Sep 17 00:00:00 2001 From: Alessandro DiMarco Date: Tue, 27 Dec 2016 02:38:14 -0500 Subject: [PATCH 11/13] Disable devtools in production --- src/store.js | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/store.js b/src/store.js index f802f9d4..ee336820 100644 --- a/src/store.js +++ b/src/store.js @@ -1,13 +1,22 @@ -import { createStore, applyMiddleware } from 'redux'; +import { createStore, applyMiddleware, compose } from 'redux'; import ReduxPromise from 'redux-promise'; import rootReducer from './reducer'; -const createStoreWithMiddleware = applyMiddleware(ReduxPromise)(createStore); - /* eslint-disable no-underscore-dangle */ -const store = createStoreWithMiddleware(rootReducer, - window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__() +const composeEnhancers = + process.env.NODE_ENV !== 'production' && + typeof window === 'object' && + window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? + window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({ + // Specify here name, actionsBlacklist, actionsCreators and other options + }) : compose; + +const enhancer = composeEnhancers( + applyMiddleware(ReduxPromise), + // other store enhancers if any ); /* eslint-enable */ +const store = createStore(rootReducer, enhancer); + export default store; -- GitLab From 985071ae321fe50a26b2e4d15944b886bf947719 Mon Sep 17 00:00:00 2001 From: Alessandro DiMarco Date: Tue, 27 Dec 2016 02:54:20 -0500 Subject: [PATCH 12/13] Add IndexRoute --- src/routes.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/routes.js b/src/routes.js index 76f7d6ef..33b9879b 100644 --- a/src/routes.js +++ b/src/routes.js @@ -1,7 +1,9 @@ import React from 'react'; -import { Route } from 'react-router'; +import { Route, IndexRoute } from 'react-router'; import BuildingList from './containers/BuildingList'; module.exports = ( - + + + ); -- GitLab From 315ef586a24ce8a8e553b04d23a1b5514694836a Mon Sep 17 00:00:00 2001 From: Alessandro DiMarco Date: Tue, 27 Dec 2016 02:54:42 -0500 Subject: [PATCH 13/13] Add redux-react-router --- package.json | 1 + src/index.js | 6 +++--- src/reducer.js | 2 ++ src/store.js | 6 +++++- 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index deedd730..68c221d5 100644 --- a/package.json +++ b/package.json @@ -54,6 +54,7 @@ "react-dom": "^15.3.2", "react-redux": "^4.4.5", "react-router": "^3.0.0", + "react-router-redux": "^4.0.7", "redux": "^3.6.0", "redux-promise": "^0.5.3", "whatwg-fetch": "^1.0.0" diff --git a/src/index.js b/src/index.js index a64c0252..3be4b9f9 100644 --- a/src/index.js +++ b/src/index.js @@ -1,14 +1,14 @@ import React from 'react'; import ReactDOM from 'react-dom'; import { Provider } from 'react-redux'; -import { Router, browserHistory } from 'react-router'; +import { Router } from 'react-router'; -import store from './store'; +import { store, history } from './store'; import routes from './routes'; ReactDOM.render( - + , document.getElementById('root'), ); diff --git a/src/reducer.js b/src/reducer.js index c32d6aa9..3660b453 100644 --- a/src/reducer.js +++ b/src/reducer.js @@ -1,8 +1,10 @@ import { combineReducers } from 'redux'; +import { routerReducer } from 'react-router-redux'; import BuildingReducer from './containers/BuildingList/reducer'; const rootReducer = combineReducers({ + routing: routerReducer, buildings: BuildingReducer, }); diff --git a/src/store.js b/src/store.js index ee336820..d397ae73 100644 --- a/src/store.js +++ b/src/store.js @@ -1,5 +1,7 @@ import { createStore, applyMiddleware, compose } from 'redux'; import ReduxPromise from 'redux-promise'; +import { browserHistory } from 'react-router'; +import { syncHistoryWithStore } from 'react-router-redux'; import rootReducer from './reducer'; /* eslint-disable no-underscore-dangle */ @@ -19,4 +21,6 @@ const enhancer = composeEnhancers( const store = createStore(rootReducer, enhancer); -export default store; +const history = syncHistoryWithStore(browserHistory, store); + +export { store, history }; -- GitLab