diff --git a/src/containers/BGroup/BGroup.js b/src/containers/BGroup/BGroup.js
index 6528ed97a9a50ec1ec12778ee88c1ebefb98c361..75cfb04cd97d201553d3813972a1a9cbc21badfd 100644
--- a/src/containers/BGroup/BGroup.js
+++ b/src/containers/BGroup/BGroup.js
@@ -279,7 +279,36 @@ class BGroup extends Component {
render() {
let { bGroupBuildings } = this.props.bGroup;
+ // A generic filter method that ensures that empty rows return false
+ const genericFilterMethod = (filter, row) => (
+ row[filter.id] ?
+ row[filter.id].toLowerCase().indexOf( // eslint-disable-line
+ filter.value.toLowerCase()
+ ) !== -1
+ : false
+ );
+ const utilityBillFilterMethod = (filter, row) => {
+ if (filter.value === 'all') {
+ return true;
+ }
+ if (filter.value === 'submitted') {
+ return row[filter.id];
+ }
+ return !row[filter.id];
+ };
+
+ const utilityBillFilter = ({ filter, onChange }) => (
+
+ );
const columns = [{
Header: () => (
@@ -294,6 +323,20 @@ class BGroup extends Component {
columns: [
{
Header: 'Address',
+ filterMethod: (filter, row) => (
+ row._original.address_list.toLowerCase().indexOf( // eslint-disable-line
+ filter.value.toLowerCase()
+ ) !== -1
+ ),
+ Filter: ({ filter, onChange }) => (
+ onChange(event.target.value)}
+ />
+ ),
accessor: 'first_address',
Cell: row => (
{row.value}
@@ -314,12 +357,25 @@ class BGroup extends Component {
columns: [
{
Header: 'Account',
+ filterMethod: genericFilterMethod,
accessor: 'contact_account',
}, {
Header: 'Parent Account',
+ filterMethod: genericFilterMethod,
accessor: 'contact_parent_account',
}, {
Header: 'Contact Names',
+ filterMethod: (filter, row) => {
+ // Handle this one differently because it's a list
+ if (row[filter.id]) {
+ return row[filter.id].reduce((acc, val) => (
+ acc || val.toLowerCase().indexOf(
+ filter.value.toLowerCase()
+ ) !== -1
+ ), false);
+ }
+ return false;
+ },
accessor: 'contact_names',
Cell: row => (row.value ? (
@@ -344,16 +400,40 @@ class BGroup extends Component {
columns: [
{
Header: 'Electric Bill',
+ filterMethod: utilityBillFilterMethod,
+ Filter: utilityBillFilter,
accessor: 'electric_bill',
style: { textAlign: 'center' },
Cell: row => (row.value ? : null),
}, {
Header: 'Gas Bill',
+ filterMethod: utilityBillFilterMethod,
+ Filter: utilityBillFilter,
accessor: 'gas_bill',
style: { textAlign: 'center' },
Cell: row => (row.value ? : null),
}, {
Header: 'Energy Simulation',
+ filterMethod: (filter, row) => {
+ if (filter.value === 'all') {
+ return true;
+ }
+ if (filter.value === 'ran') {
+ return row[filter.id];
+ }
+ return !row[filter.id];
+ },
+ Filter: ({ filter, onChange }) => (
+
+ ),
accessor: 'building_simulation',
style: { textAlign: 'center' },
Cell: row => (row.value ? : null),
@@ -373,6 +453,26 @@ class BGroup extends Component {
columns: [
{
Header: 'Sensor Install',
+ filterMethod: (filter, row) => {
+ if (filter.value === 'all') {
+ return true;
+ }
+ if (filter.value === 'installed') {
+ return row[filter.id];
+ }
+ return !row[filter.id];
+ },
+ Filter: ({ filter, onChange }) => (
+
+ ),
accessor: 'gateway_install',
sortMethod: (a, b) => {
if (!b && a) {
@@ -398,6 +498,7 @@ class BGroup extends Component {
) : null),
}, {
Header: '# Projects',
+ filterable: false,
style: { textAlign: 'center' },
accessor: 'num_projects',
},
@@ -442,7 +543,7 @@ class BGroup extends Component {
{this.renderEditButton()}
-