UNPKG

terriajs

Version:

Geospatial data visualization platform.

65 lines (56 loc) 2.69 kB
import ObserveModelMixin from '../ObserveModelMixin'; import React from 'react'; import createReactClass from 'create-react-class'; import PropTypes from 'prop-types'; import BadgeBar from '../BadgeBar.jsx'; import Styles from './sidebar-search.scss'; import LocationSearchResults from './LocationSearchResults.jsx'; import SideBarDatasetSearchResults from './SideBarDatasetSearchResults.jsx'; import {addMarker} from '../../Models/LocationMarkerUtils'; // Handle any of the three kinds of search based on the props const SidebarSearch = createReactClass({ displayName: 'SidebarSearch', mixins: [ObserveModelMixin], propTypes: { viewState: PropTypes.object.isRequired, isWaitingForSearchToStart: PropTypes.bool, terria: PropTypes.object.isRequired }, backToNowViewing() { this.props.viewState.searchState.showLocationSearchResults = false; }, onLocationClick(result) { addMarker(this.props.terria, result); result.clickAction(); }, render() { return ( <div className={Styles.search}> <div className={Styles.results}> <BadgeBar label="Search Results"> <button type='button' onClick={this.backToNowViewing} className={Styles.btnDone}>Done </button> </BadgeBar> <div className={Styles.resultsContent}> <If condition={this.props.viewState.searchState.locationSearchText.length > 0}> <SideBarDatasetSearchResults terria={this.props.terria} viewState={this.props.viewState} /> </If> <For each="search" of={this.props.viewState.searchState.locationSearchProviders}> <LocationSearchResults key={search.name} terria={this.props.terria} viewState={this.props.viewState} search={search} onLocationClick={this.onLocationClick} isWaitingForSearchToStart={this.props.isWaitingForSearchToStart} /> </For> </div> </div> </div> ); }, }); module.exports = SidebarSearch;