UNPKG

react-mapfilter

Version:

A React Component for viewing and filtering GeoJSON

191 lines (159 loc) 5.79 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _propTypes = require('prop-types'); var _propTypes2 = _interopRequireDefault(_propTypes); var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _styles = require('@material-ui/core/styles'); var _List = require('@material-ui/core/List'); var _List2 = _interopRequireDefault(_List); var _ListItem = require('@material-ui/core/ListItem'); var _ListItem2 = _interopRequireDefault(_ListItem); var _ListItemIcon = require('@material-ui/core/ListItemIcon'); var _ListItemIcon2 = _interopRequireDefault(_ListItemIcon); var _ListItemText = require('@material-ui/core/ListItemText'); var _ListItemText2 = _interopRequireDefault(_ListItemText); var _Divider = require('@material-ui/core/Divider'); var _Divider2 = _interopRequireDefault(_Divider); var _Settings = require('@material-ui/icons/Settings'); var _Settings2 = _interopRequireDefault(_Settings); var _Paper = require('@material-ui/core/Paper'); var _Paper2 = _interopRequireDefault(_Paper); var _reactIntl = require('react-intl'); var _DiscreteFilter = require('./DiscreteFilter'); var _DiscreteFilter2 = _interopRequireDefault(_DiscreteFilter); var _DateFilter = require('./DateFilter'); var _DateFilter2 = _interopRequireDefault(_DateFilter); var _constants = require('../../constants'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var styles = { root: { minWidth: 300, flex: 1, overflowY: 'auto', zIndex: 20, // backgroundColor: 'white', '@media print': { display: 'none' } }, list: { paddingTop: 0 }, listItemInner: { padding: 0 }, listItemText: { padding: '0 16px 0 0' }, listIcon: { fill: 'rgb(117, 117, 117)', left: 0, top: 0, margin: '12px', position: 'absolute' }, link: { color: '#000', display: 'block', padding: '16px 16px 16px 48px', textDecoration: 'none' } }; var messages = (0, _reactIntl.defineMessages)({ changeFilters: { 'id': 'filter.change', 'defaultMessage': 'Change Filters\u2026' } }); var FilterPane = function FilterPane(_ref) { var classes = _ref.classes, _ref$filters = _ref.filters, filters = _ref$filters === undefined ? {} : _ref$filters, _ref$fieldStats = _ref.fieldStats, fieldStats = _ref$fieldStats === undefined ? {} : _ref$fieldStats, _ref$filterFields = _ref.filterFields, filterFields = _ref$filterFields === undefined ? [] : _ref$filterFields, coloredField = _ref.coloredField, colorIndex = _ref.colorIndex, _ref$onUpdateFilter = _ref.onUpdateFilter, onUpdateFilter = _ref$onUpdateFilter === undefined ? function (x) { return x; } : _ref$onUpdateFilter, _ref$onClickSettings = _ref.onClickSettings, onClickSettings = _ref$onClickSettings === undefined ? function (x) { return x; } : _ref$onClickSettings; return _react2.default.createElement( _Paper2.default, { className: classes.root, elevation: 3 }, _react2.default.createElement( _List2.default, { className: classes.list, dense: true }, filterFields.map(function (f) { var field = fieldStats.properties[f] || {}; var filter = filters[f]; switch (field.filterType) { case _constants.FILTER_TYPE_DISCRETE: return _react2.default.createElement( 'div', { key: f }, _react2.default.createElement(_DiscreteFilter2.default, { fieldName: f, checked: filter ? filter.in : field.values.map(function (v) { return v.value; }), values: field.values, colored: coloredField === f || coloredField + '.0' === f, colorIndex: colorIndex, onUpdate: onUpdateFilter }), _react2.default.createElement(_Divider2.default, null) ); case _constants.FILTER_TYPE_RANGE: return; case _constants.FILTER_TYPE_TEXT: return; case _constants.FILTER_TYPE_DATE: return _react2.default.createElement( 'div', { key: f }, _react2.default.createElement(_DateFilter2.default, { fieldName: f, filter: filter, min: filter ? filter['>='] : field.valueStats.min, max: filter ? filter['<='] : field.valueStats.max, valueMin: field.valueStats.min, valueMax: field.valueStats.max, onUpdate: onUpdateFilter }), _react2.default.createElement(_Divider2.default, null) ); } }), _react2.default.createElement( _ListItem2.default, { button: true, onClick: onClickSettings }, _react2.default.createElement( _ListItemIcon2.default, null, _react2.default.createElement(_Settings2.default, null) ), _react2.default.createElement(_ListItemText2.default, { classes: { root: classes.listItemText }, primary: _react2.default.createElement(_reactIntl.FormattedMessage, messages.changeFilters) }) ) ) ); }; FilterPane.propTypes = { filters: _propTypes2.default.object, fieldStats: _propTypes2.default.object.isRequired, filterFields: _propTypes2.default.arrayOf(_propTypes2.default.string).isRequired, /* called with valid mapbox-gl filter when updated */ onUpdateFilter: _propTypes2.default.func, onClickSettings: _propTypes2.default.func }; exports.default = (0, _styles.withStyles)(styles)(FilterPane); //# sourceMappingURL=FilterPane.js.map