react-mapfilter
Version:
A React Component for viewing and filtering GeoJSON
99 lines (81 loc) • 3.19 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _reactIntl = require('react-intl');
var _roundTo = require('round-to');
var _roundTo2 = _interopRequireDefault(_roundTo);
var _utm = require('utm');
var _sexagesimal = require('@mapbox/sexagesimal');
var _sexagesimal2 = _interopRequireDefault(_sexagesimal);
var _filter_helpers = require('../../util/filter_helpers');
var _intl_helpers = require('../../util/intl_helpers');
var _constants = require('../../constants');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var FormattedValue = function FormattedValue(_ref) {
var value = _ref.value,
type = _ref.type,
_ref$coordFormat = _ref.coordFormat,
coordFormat = _ref$coordFormat === undefined ? _constants.FORMATS_DEG_MIN_SEC : _ref$coordFormat;
switch (type) {
case _constants.FIELD_TYPE_DATE:
return _react2.default.createElement(_reactIntl.FormattedDate, {
value: (0, _filter_helpers.parseDate)(value),
year: 'numeric',
month: 'long',
day: '2-digit' });
case _constants.FIELD_TYPE_ARRAY:
return (value || []).map(function (v) {
return _react2.default.createElement(_reactIntl.FormattedMessage, (0, _intl_helpers.createMessage)('field_value')(value));
});
case _constants.FIELD_TYPE_LOCATION:
return _react2.default.createElement(
'span',
null,
formatLocation(value, coordFormat)
);
case _constants.FIELD_TYPE_NUMBER:
return _react2.default.createElement(
'span',
null,
value === _constants.UNDEFINED_KEY ? '' : value + ''
);
case _constants.FIELD_TYPE_UUID:
case _constants.FIELD_TYPE_FILENAME:
return _react2.default.createElement(
'span',
null,
value
);
case _constants.FIELD_TYPE_IMAGE:
case _constants.FIELD_TYPE_VIDEO:
case _constants.FIELD_TYPE_MEDIA:
case _constants.FIELD_TYPE_AUDIO:
case _constants.FIELD_TYPE_LINK:
return _react2.default.createElement(
'a',
{ href: value, target: '_blank' },
value
);
default:
return _react2.default.createElement(_reactIntl.FormattedMessage, (0, _intl_helpers.createMessage)('field_value')(value));
}
};
exports.default = FormattedValue;
function formatLocation(coords, format) {
if (!(Array.isArray(coords) && coords.length === 2)) return coords;
switch (format) {
case _constants.FORMATS_DEC_DEG:
return coords.map(function (coord) {
return (0, _roundTo2.default)(coord, 5);
}).join(', ');
case _constants.FORMATS_DEG_MIN_SEC:
return _sexagesimal2.default.formatPair({ lon: coords[0], lat: coords[1] }).replace(/'/g, '’').replace(/"/g, '”');
case _constants.FORMATS_UTM:
var utm = (0, _utm.fromLatLon)(coords[1], coords[0]);
return 'X ' + (0, _roundTo2.default)(utm.easting, 1) + ', Y ' + (0, _roundTo2.default)(utm.northing, 1) + ' \u2014 UTM ' + utm.zoneNum + utm.zoneLetter;
}
}
//# sourceMappingURL=FormattedValue.js.map