/* eslint-disable import/no-absolute-path */ /* eslint-disable react/jsx-indent-props */ /* eslint-disable react/jsx-indent */ import React, { Fragment } from 'react'; import PropTypes from 'prop-types'; import { withTracker } from 'meteor/react-meteor-data'; import { translate, Trans } from 'react-i18next'; import { Row, Col, Alert, FormGroup } from 'react-bootstrap'; import { Meteor } from 'meteor/meteor'; import { Bert } from 'meteor/themeteorchef:bert'; import { Helmet } from 'react-helmet'; import { Map, Circle } from 'react-leaflet'; import Blaze from 'meteor/gadicc:blaze-react-component'; import DefMapLayers from '/imports/ui/components/Maps/DefMapLayers'; import NotFound from '/imports/ui/pages/NotFound/NotFound'; import FiresCollection from '/imports/api/Fires/Fires'; import FireList from '/imports/ui/components/Maps/FireList'; import FromNow from '/imports/ui/components/FromNow/FromNow'; import { dateLongFormat, dateYYYYMMDD } from '/imports/api/Common/dates'; import '/imports/startup/client/comments'; import FalsePositiveTypes from '/imports/api/FalsePositives/FalsePositiveTypes'; import FalsePositivesCollection, { falsePositivesRemap } from '/imports/api/FalsePositives/FalsePositives'; import IndustriesCollection, { industriesRemap } from '/imports/api/Industries/Industries'; import ShareIt from '/imports/ui/components/ShareIt/ShareIt'; import FullScreenMap from '/imports/ui/components/Maps/FullScreenMap'; import './Fires.scss'; class Fire extends React.Component { constructor(props) { super(props); this.state = { loading: props.loading, notfound: props.notfound, when: props.when }; } componentWillReceiveProps(nextProps) { if (this.props.when !== nextProps.when || this.props.loading !== nextProps.loading || this.props.notfound !== nextProps.notfound) { // console.log(`Next when ${nextProps.when}`); if (nextProps.fire && (nextProps.alert || nextProps.active || nextProps.fromHash)) { // change url to archive with new _id nextProps.history.replace(`/fire/archive/${nextProps.fire._id}`); } this.setState({ loading: nextProps.loading, notfound: nextProps.notfound, when: nextProps.when }); } } shouldComponentUpdate(nextProps, nextState) { return !(nextState.when === this.state.when && nextState.loading === this.state.loading && this.state.notfound === nextState.notfound && nextState.nasaLink === this.state.nasaLink); } onTypeSelect(key) { // console.log(key); Meteor.call('falsePositives.insert', this.props.fire._id, key, (error) => { if (error) { // console.log(error); Bert.alert(this.props.t(error.reason), 'danger'); } else { Bert.alert(this.props.t('Tomamos nota, ¡gracias por colaborar!'), 'success'); } }); } handleLeafletMapLoad(map) { if (map && map.leafletElement) { const lmap = map.leafletElement; const bounds = lmap.getBounds(); const ne = bounds.getNorthEast(); const sw = bounds.getSouthWest(); // console.log(`${sw},${ne}`); // const nasaLinkBase = 'https://worldview.earthdata.nasa.gov/?p=geographic&l=VIIRS_SNPP_CorrectedReflectance_TrueColor(hidden),MODIS_Aqua_CorrectedReflectance_TrueColor(hidden),MODIS_Terra_CorrectedReflectance_TrueColor,MODIS_Fires_All,MODIS_Fires_Aqua,VIIRS_SNPP_Fires_375m_Night,VIIRS_SNPP_Fires_375m_Day,MODIS_Fires_Terra,Reference_Labels(hidden),Reference_Features(hidden),Coastlines&t=' const nasaLinkBase = 'https://worldview.earthdata.nasa.gov/?p=geographic&l=' + 'VIIRS_SNPP_CorrectedReflectance_TrueColor,' + 'MODIS_Aqua_CorrectedReflectance_TrueColor,' + 'MODIS_Terra_CorrectedReflectance_TrueColor,' + 'MODIS_Terra_Data_No_Data(hidden),' + 'MODIS_Fires_All,' + 'MODIS_Fires_Aqua,' + 'VIIRS_SNPP_Fires_375m_Night,' + 'VIIRS_SNPP_Fires_375m_Day,' + 'MODIS_Fires_Terra,' + 'Reference_Labels,' + 'Reference_Features,' + 'Coastlines' + '&t='; const nasaZoom = 5; this.setState({ nasaLink: `${nasaLinkBase}${this.dateYYYYMMDD}&z=3&v=${sw.lng},${sw.lat},${ne.lng},${ne.lat}&ab=off&as=${this.dateYYYYMMDD}&ae=${this.dateYYYYMMDD}&av=${nasaZoom}&al=true` }); } } handleLeafletCircleLoad(circle) { if (this.fireMap && this.fireMap.leafletElement && circle && circle.leafletElement) { this.fireMap.leafletElement.fitBounds(circle.leafletElement.getBounds()); } } render() { const { notfound, loading, fire, t } = this.props; if (Meteor.isDevelopment) console.log(`False positives total: ${this.props.falsePositives.length}`); if (Meteor.isDevelopment) console.log(`Industries total: ${this.props.industries.length}`); /* console.log(`loading fire: ${loading}`); * console.log(`Not found fire: ${notfound}`); */ if (fire && fire.when) { this.dateLongFormat = dateLongFormat(fire.when); this.dateYYYYMMDD = dateYYYYMMDD(fire.when); this.title = fire.address ? t('Información adicional sobre fuego detectado en {{where}} el {{when}}', { where: fire.address, when: this.dateLongFormat }) : t('Información adicional sobre fuego detectado el {{when}}', { when: this.dateLongFormat }); } return (fire && !loading ? (
{t('Coordenadas:')} {fire.lat}, {fire.lon}
{(fire.type === 'modis' || fire.type === 'viirs') &&