UNPKG

react-mapfilter

Version:

These components are designed for viewing data in Mapeo. They share a common interface:

268 lines (231 loc) 8.09 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime-corejs3/helpers/interopRequireWildcard"); var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault"); var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property"); require("core-js/modules/es.function.name"); _Object$defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map")); var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat")); var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/slicedToArray")); var _react = _interopRequireWildcard(require("react")); var _styles = require("@material-ui/core/styles"); var _getScrollbarWidth = _interopRequireDefault(require("get-scrollbar-width")); var _reactVirtualized = require("react-virtualized"); var _ReportPageContent = _interopRequireDefault(require("./ReportPageContent")); var _ReportPaper = _interopRequireDefault(require("./ReportPaper")); var _MapViewContent = _interopRequireDefault(require("../MapView/MapViewContent")); var _dom = require("../utils/dom"); var _helpers = require("../utils/helpers"); // @flow // import ReportFeature from './ReportFeature' var BORDER_SIZE = 0.5 * (0, _dom.inch)(); var noop = function noop() {}; var ReportViewContent = function ReportViewContent(_ref) { var observations = _ref.observations, _ref$onClick = _ref.onClick, _onClick = _ref$onClick === void 0 ? function () {} : _ref$onClick, onMapMove = _ref.onMapMove, initialMapPosition = _ref.initialMapPosition, _ref$getPreset = _ref.getPreset, getPreset = _ref$getPreset === void 0 ? _helpers.defaultGetPreset : _ref$getPreset, getMedia = _ref.getMedia, _ref$paperSize = _ref.paperSize, paperSize = _ref$paperSize === void 0 ? 'a4' : _ref$paperSize, _ref$print = _ref.print, print = _ref$print === void 0 ? false : _ref$print, mapboxAccessToken = _ref.mapboxAccessToken, mapStyle = _ref.mapStyle; var classes = useStyles(); var _useState = (0, _react.useState)(), _useState2 = (0, _slicedToArray2.default)(_useState, 2), mapPosition = _useState2[0], setMapPosition = _useState2[1]; var scrollbarWidth = (0, _react.useMemo)(function () { return (0, _getScrollbarWidth.default)(); }, []); var cacheRef = _react.default.useRef(new _reactVirtualized.CellMeasurerCache({ fixedWidth: true, minHeight: 200 })); var cache = cacheRef.current; var paperWidthPx = paperSize === 'a4' ? 21 * (0, _dom.cm)() : 8.5 * (0, _dom.inch)(); function getLastImageUrl(observation /*: Observation*/ ) /*: string | void*/ { var lastImageAttachment = (0, _helpers.getLastImage)(observation); if (!lastImageAttachment) return; var media = getMedia(lastImageAttachment, { width: paperWidthPx - 2 * BORDER_SIZE, height: paperWidthPx - 2 * BORDER_SIZE }); if (media) return media.src; } function renderPage(_ref2) { var index = _ref2.index, key = _ref2.key, style = _ref2.style, parent = _ref2.parent; return /*#__PURE__*/_react.default.createElement(_reactVirtualized.CellMeasurer, { cache: cache, columnIndex: 0, key: key, parent: parent, rowIndex: index }, /*#__PURE__*/_react.default.createElement("div", { style: style }, index === 0 ? renderMapPage({ index: index, key: key }) : renderFeaturePage({ index: index - 1, key: key }))); } function renderMapPage() { var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, key = _ref3.key; return /*#__PURE__*/_react.default.createElement(_ReportPaper.default, { key: key, paperSize: paperSize, classes: { content: classes.paperContentMap } }, /*#__PURE__*/_react.default.createElement(_MapViewContent.default, { mapStyle: mapStyle, onClick: noop, getPreset: getPreset, observations: observations, getMedia: getMedia, initialMapPosition: initialMapPosition || mapPosition, onMapMove: onMapMove || setMapPosition, mapboxAccessToken: mapboxAccessToken, print: true })); } function renderFeaturePage(_ref4) { var _context; var index = _ref4.index, key = _ref4.key; var observation = observations[index]; var coords = typeof observation.lon === 'number' && typeof observation.lat === 'number' ? { longitude: observation.lon, latitude: observation.lat } : undefined; var createdAt = typeof observation.created_at === 'string' ? new Date(observation.created_at) : undefined; var preset = getPreset(observation) || {}; var fields = (0, _concat.default)(_context = preset.fields).call(_context, preset.additionalFields); return /*#__PURE__*/_react.default.createElement(_ReportPaper.default, { key: key, paperSize: paperSize, onClick: function onClick() { return _onClick(observation.id); } }, /*#__PURE__*/_react.default.createElement(_ReportPageContent.default, { name: typeof preset.name === 'string' ? preset.name : undefined, createdAt: createdAt, coords: coords, fields: fields, imageSrc: getLastImageUrl(observation), tags: observation.tags, paperSize: paperSize })); } function renderVirtualList() { return /*#__PURE__*/_react.default.createElement(_reactVirtualized.AutoSizer, null, function (_ref5) { var height = _ref5.height, width = _ref5.width; return /*#__PURE__*/_react.default.createElement(_reactVirtualized.List, { className: classes.reportWrapper + ' ' + classes[paperSize], containerStyle: { overflowX: 'scroll' }, height: height, width: width, rowCount: observations.length + 1 /* for additional map page */ , rowRenderer: renderPage, deferredMeasurementCache: cache, rowHeight: cache.rowHeight, overscanRowCount: 3, estimatedRowSize: 200 /* paperSize === 'a4' ? 29.7 * cm() : 11 * inch()} */ }); }); } function renderPrintList() { return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, renderMapPage(), (0, _map.default)(observations).call(observations, function (_, index) { return renderFeaturePage({ index: index, key: index + '' }); })); } return /*#__PURE__*/_react.default.createElement("div", { className: classes.root }, /*#__PURE__*/_react.default.createElement("div", { className: classes.scrollWrapper }, print ? renderPrintList() : renderVirtualList())); }; var _default = ReportViewContent; exports.default = _default; var useStyles = (0, _styles.makeStyles)({ root: { flex: 1, display: 'flex', flexDirection: 'column', backgroundColor: 'rgba(236, 236, 236, 1)', '@media only print': { width: 'auto', height: 'auto', position: 'static', backgroundColor: 'inherit', display: 'block' } }, reportWrapper: { '@media only print': { padding: 0, minWidth: 'auto' } }, paperContentMap: { display: 'flex' }, letter: { '&$reportWrapper': {// minWidth: 8.5 * inch() } }, a4: { '&$reportWrapper': {// minWidth: 21 * cm() } }, scrollWrapper: { flex: '1 1 auto', overflow: 'hidden', '@media only print': { overflow: 'auto', flex: 'initial', position: 'static' } }, '@global': { '@media only print': { tr: { pageBreakInside: 'avoid' }, '.d-print-none': { display: 'none' }, '.mapboxgl-ctrl-group, .mapboxgl-ctrl-attrib': { display: 'none' } } } }); //# sourceMappingURL=ReportViewContent.js.map