UNPKG

terriajs

Version:

Geospatial data visualization platform.

59 lines (52 loc) 1.64 kB
import createReactClass from "create-react-class"; import { runInAction } from "mobx"; import { observer } from "mobx-react"; import PropTypes from "prop-types"; import { Range } from "rc-slider"; import React from "react"; import CommonStrata from "../../../Models/Definition/CommonStrata"; import Styles from "./filter-section.scss"; const FilterSection = observer( createReactClass({ displayName: "FilterSection", propTypes: { item: PropTypes.object.isRequired }, change(filter, values) { runInAction(() => { filter.setTrait(CommonStrata.user, "minimumShown", values[0]); filter.setTrait(CommonStrata.user, "maximumShown", values[1]); }); this.props.item.terria.currentViewer.notifyRepaintRequired(); }, render() { const item = this.props.item; if (!item.filters || item.filters.length === 0) { return null; } return ( <div className={Styles.filters}> {item.filters.map(this.renderFilter)} </div> ); }, renderFilter(filter) { const values = [filter.minimumShown, filter.maximumShown]; return ( <div key={filter.property} className={Styles.filter}> <label htmlFor={filter.property}> Show {filter.name}: {filter.minimumShown} to {filter.maximumShown} </label> <Range value={values} allowCross={false} min={filter.minimumValue} max={filter.maximumValue} onChange={this.change.bind(this, filter)} /> </div> ); } }) ); export default FilterSection;