From b1d7cb691106ac1f69b308f36a0ee1e32db4a8f7 Mon Sep 17 00:00:00 2001 From: Daan Rosbergen Date: Wed, 21 Jun 2017 19:50:03 +0200 Subject: [PATCH] Add search/filter to building list --- src/containers/Buildings.js | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/src/containers/Buildings.js b/src/containers/Buildings.js index b1f14df..9db798a 100644 --- a/src/containers/Buildings.js +++ b/src/containers/Buildings.js @@ -1,9 +1,10 @@ import React, { Component } from "react"; -import { Spinner } from "@blueprintjs/core"; +import { Spinner, NonIdealState } from "@blueprintjs/core"; import Header from "./../components/Header"; import Nav from "./../components/Nav"; import { Link } from "react-router-dom"; import { buildings } from "./../endpoints/buildings"; +import _ from "lodash"; const style = { padding: "30px 50px" @@ -15,10 +16,14 @@ class Buildings extends Component { this.state = { buildings: [] }; + this.search = this.search.bind(this); } componentDidMount() { buildings() + .then(buildings => { + return (this.fetchedBuildings = buildings); + }) .then(buildings => { this.setState({ buildings }); }) @@ -27,12 +32,23 @@ class Buildings extends Component { }); } + search(event) { + const query = event.target.value; + const filteredBuilings = _.filter( + this.fetchedBuildings, + building => + _.lowerCase(building.name).indexOf(_.lowerCase(query)) > -1 || + _.lowerCase(building.location).indexOf(_.lowerCase(query)) > -1 + ); + this.setState({ buildings: filteredBuilings, query: query }); + } + renderNav() { return