From b4b26aad391abaf64afc09a125968c832f7432df Mon Sep 17 00:00:00 2001 From: Conrad Date: Fri, 23 Mar 2018 11:04:21 -0400 Subject: [PATCH] Add checkbox to impact retrofit filters --- src/containers/BGroup/BGroupBuildingTable.js | 123 +++++++++++++++++- .../Reports/components/Impact/Impact.js | 2 +- 2 files changed, 120 insertions(+), 5 deletions(-) diff --git a/src/containers/BGroup/BGroupBuildingTable.js b/src/containers/BGroup/BGroupBuildingTable.js index 9b7b842f..17638693 100644 --- a/src/containers/BGroup/BGroupBuildingTable.js +++ b/src/containers/BGroup/BGroupBuildingTable.js @@ -8,6 +8,7 @@ import ReactGA from 'react-ga'; import { Input, Collapse, UncontrolledDropdown, DropdownToggle, DropdownMenu, DropdownItem, + UncontrolledTooltip, } from 'reactstrap'; import userPropTypes from '../User/propTypes'; import AddressSearch from '../../components/AddressSearch/AddressSearch'; @@ -136,6 +137,52 @@ export default class BGroupBuildingTable extends Component { return row[filter.id].length === 0; }; + const impactCompletedRetrofitsFilterMethod = (filter, row) => { + // First check if there is a value and the check box is clicked + if ( + filter.value.check && + (!row[filter.id] || !row[filter.id].length > 0) + ) { + return false; + } + // Then filter by text + if (row[filter.id]) { + // Check if list is empty + if (filter.value.query === '' && row[filter.id].length === 0) { + return true; + } + return row[filter.id].reduce((acc, val) => ( + val && (acc || val.completed.toLowerCase().indexOf( + filter.value.query.toLowerCase() + ) !== -1) + ), false); + } + return false; + }; + + const impactRecommendedRetrofitsFilterMethod = (filter, row) => { + // First check if there is a value and the check box is clicked + if ( + filter.value.check && + (!row[filter.id] || !row[filter.id].length > 0) + ) { + return false; + } + // Then filter by text + if (row[filter.id]) { + // Check if list is empty + if (filter.value.query === '' && row[filter.id].length === 0) { + return true; + } + return row[filter.id].reduce((acc, val) => ( + val && (acc || val.toLowerCase().indexOf( + filter.value.query.toLowerCase() + ) !== -1) + ), false); + } + return false; + }; + const utilityBillFilter = ({ filter, onChange }) => ( ); + const impactCompletedRetrofitsFilter = ({ filter, onChange }) => { + return ( +
+ onChange({ + query: event.target.value, + check: filter ? filter.value.check : false, + })} + value={filter ? filter.value.query : ''} + style={{ width: '75px' }} + /> + {' '} +
+ { + onChange({ + query: filter ? filter.value.query : '', + check: filter ? !filter.value.check : true, + }); + }} + /> +
+ + Only show buildings with completed retrofits + +
+ ); + }; + const impactRecommendedRetrofitsFilter = ({ filter, onChange }) => { + return ( +
+ onChange({ + query: event.target.value, + check: filter ? filter.value.check : false, + })} + value={filter ? filter.value.query : ''} + style={{ width: '75px' }} + /> + {' '} +
+ { + onChange({ + query: filter ? filter.value.query : '', + check: filter ? !filter.value.check : true, + }); + }} + /> +
+ + Only show buildings with recommended retrofits + +
+ ); + }; const columns = [{ Header: () => ( @@ -390,8 +505,8 @@ export default class BGroupBuildingTable extends Component { columns: [ { Header: 'Recommended Retrofits', - filterMethod: impactRecommendedFilterMethod, - Filter: impactRecommendedFilter, + filterMethod: impactRecommendedRetrofitsFilterMethod, + Filter: impactRecommendedRetrofitsFilter, accessor: 'recommended_retrofits', Cell: (row) => { if (row.value && row.value.length > 0) { @@ -477,8 +592,8 @@ export default class BGroupBuildingTable extends Component { }, }, { Header: 'Completed Retrofits', - filterMethod: impactCompletedFilterMethod, - Filter: impactCompletedFilter, + filterMethod: impactCompletedRetrofitsFilterMethod, + Filter: impactCompletedRetrofitsFilter, accessor: 'completed_retrofits', Cell: row => (row.value ? (
diff --git a/src/containers/Reports/components/Impact/Impact.js b/src/containers/Reports/components/Impact/Impact.js index d5a63f26..48071904 100644 --- a/src/containers/Reports/components/Impact/Impact.js +++ b/src/containers/Reports/components/Impact/Impact.js @@ -124,7 +124,7 @@ export default class Impact extends Component { // Add the recommended and completed columns if (showRecommended) { tableBody.splice(1, 0, ( - + Impact Category Recommended Retrofits Completed Retrofits -- GitLab