diff --git a/imports/api/ActiveFires/server/publications.js b/imports/api/ActiveFires/server/publications.js
index b0b2329..6fd66eb 100644
--- a/imports/api/ActiveFires/server/publications.js
+++ b/imports/api/ActiveFires/server/publications.js
@@ -4,10 +4,8 @@
import { Meteor } from 'meteor/meteor';
import { check } from 'meteor/check';
-import L from 'leaflet-headless';
import { NumberBetween } from '/imports/modules/server/other-checks';
-import FalsePositives from '/imports/api/FalsePositives/FalsePositives';
-import calcUnion from '/imports/ui/components/Maps/SubsUnion/Unify';
+import { whichAreFalsePositives } from '/imports/api/FalsePositives/server/publications';
import ActiveFires from '../ActiveFires';
const counter = new Counter('countActiveFires', ActiveFires.find({}));
@@ -16,27 +14,6 @@ Meteor.publish('activefirestotal', function total() {
return counter;
});
-const falsePositives = (fires) => {
- const falsePos = FalsePositives.find({
- geo: {
- $geoWithin: {
- $geometry: fires.geometry
- }
- }
- }, {
- fields: {
- geo: 1,
- // type: 1,
- // when: 1,
- fireId: 1
- }
- });
-
- /* console.log(`False positive total: ${falsePos.count()}`);
- console.log(`False positives: ${JSON.stringify(falsePos.fetch())}`); */
- return falsePos;
-};
-
const activefires = (northEastLng, northEastLat, southWestLng, southWestLat, withMarks) => {
const fires = ActiveFires.find({
ourid: {
@@ -60,12 +37,7 @@ const activefires = (northEastLng, northEastLat, southWestLng, southWestLat, wit
// console.log(`Fires total: ${fires.count()}`);
if (withMarks && fires.fetch().length > 0) {
- const group = new L.FeatureGroup();
- const remap = fires.fetch().map(function remap(doc) {
- return { location: { lat: doc.lat, lon: doc.lon }, distance: doc.scan };
- });
- const result = calcUnion(remap, group, sub => sub);
- const falsePos = falsePositives(result[0]);
+ const falsePos = whichAreFalsePositives(fires);
return [fires, falsePos];
}
diff --git a/imports/api/FalsePositives/FalsePositives.js b/imports/api/FalsePositives/FalsePositives.js
index 592fe12..eead435 100644
--- a/imports/api/FalsePositives/FalsePositives.js
+++ b/imports/api/FalsePositives/FalsePositives.js
@@ -34,4 +34,15 @@ FalsePositives.schema = new SimpleSchema({
FalsePositives.attachSchema(FalsePositives.schema);
+export const falsePositivesRemap = (odoc) => {
+ const doc = odoc;
+ const geo = doc.geo;
+ doc.lat = geo.coordinates[1];
+ doc.lon = geo.coordinates[0];
+ doc._id = doc.fireId;
+ doc.id = doc.fireId;
+ delete doc.geo;
+ return doc;
+};
+
export default FalsePositives;
diff --git a/imports/api/FalsePositives/server/publications.js b/imports/api/FalsePositives/server/publications.js
index 9585907..18305c4 100644
--- a/imports/api/FalsePositives/server/publications.js
+++ b/imports/api/FalsePositives/server/publications.js
@@ -5,6 +5,8 @@
import { Meteor } from 'meteor/meteor';
import { check } from 'meteor/check';
import { NumberBetween } from '/imports/modules/server/other-checks';
+import L from 'leaflet-headless';
+import calcUnion from '/imports/ui/components/Maps/SubsUnion/Unify';
import FalsePositives from '../FalsePositives';
const counter = new Counter('countFalsePositives', FalsePositives.find({}));
@@ -13,6 +15,33 @@ Meteor.publish('falsePositivesTotal', function total() {
return counter;
});
+export const whichAreFalsePositives = (fires) => {
+ const group = new L.FeatureGroup();
+ const remap = fires.fetch().map(function remap(doc) {
+ return { location: { lat: doc.lat, lon: doc.lon }, distance: doc.scan };
+ });
+ const result = calcUnion(remap, group, sub => sub);
+
+ const falsePos = FalsePositives.find({
+ geo: {
+ $geoWithin: {
+ $geometry: result[0].geometry
+ }
+ }
+ }, {
+ fields: {
+ geo: 1,
+ // type: 1,
+ // when: 1,
+ fireId: 1
+ }
+ });
+
+ /* console.log(`False positive total: ${falsePos.count()}`);
+ console.log(`False positives: ${JSON.stringify(falsePos.fetch())}`); */
+ return falsePos;
+};
+
const falsePositives = (northEastLng, northEastLat, southWestLng, southWestLat) => {
const fires = FalsePositives.find({
geo: {
diff --git a/imports/api/Fires/server/publications.js b/imports/api/Fires/server/publications.js
index 0f0b80c..1dba8dc 100644
--- a/imports/api/Fires/server/publications.js
+++ b/imports/api/Fires/server/publications.js
@@ -9,6 +9,7 @@ import NodeGeocoder from 'node-geocoder';
import { gmapServerKey } from '/imports/startup/server/IPGeocoder';
import ActiveFiresCollection from '/imports/api/ActiveFires/ActiveFires';
import FireAlertsCollection from '/imports/api/FireAlerts/FireAlerts';
+import { whichAreFalsePositives } from '/imports/api/FalsePositives/server/publications';
import FiresCollection from '../Fires';
function findFire(unsealed) {
@@ -114,13 +115,14 @@ Meteor.publish('fireFromId', function fireFromId(_id) {
const fire = FiresCollection.find(new Meteor.Collection.ObjectID(_id));
if (fire.count() !== 0) {
// console.info(`Archive fire found: ${_id}`);
- return fire;
+ const falsePos = whichAreFalsePositives(fire);
+ return [fire, falsePos];
}
console.info(`Fire not found: ${_id}`);
// Not found in active fires!
return this.ready();
} catch (e) {
- console.info(`Active fire not found (with error): ${_id}`);
+ console.info(`Archive fire not found (with error): ${_id}`);
return this.ready();
}
});
diff --git a/imports/ui/pages/Fires/Fires.js b/imports/ui/pages/Fires/Fires.js
index 662b234..528e476 100644
--- a/imports/ui/pages/Fires/Fires.js
+++ b/imports/ui/pages/Fires/Fires.js
@@ -6,7 +6,7 @@ import React, { Fragment } from 'react';
import PropTypes from 'prop-types';
import { withTracker } from 'meteor/react-meteor-data';
import { translate, Trans } from 'react-i18next';
-import { FormGroup } from 'react-bootstrap';
+import { Row, Col, Alert, FormGroup } from 'react-bootstrap';
import { Meteor } from 'meteor/meteor';
import { Bert } from 'meteor/themeteorchef:bert';
import { Helmet } from 'react-helmet';
@@ -15,10 +15,12 @@ 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 } 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 ShareIt from '/imports/ui/components/ShareIt/ShareIt';
import './Fires.scss';
@@ -67,6 +69,7 @@ class Fire extends React.Component {
const {
notfound, loading, fire, t
} = this.props;
+ if (Meteor.isDevelopment) console.log(`False positives total: ${this.props.falsePositives.length}`);
/* console.log(`loading fire: ${loading}`);
* console.log(`Not found fire: ${notfound}`); */
if (fire && fire.when) {
@@ -105,6 +108,15 @@ class Fire extends React.Component {
radius={fire.scan ? fire.scan * 1000 : 300}
/>
+
{t('Coordenadas:')} {fire.lat}, {fire.lon}
@@ -119,6 +131,11 @@ class Fire extends React.Component { {(fire.type !== 'vecinal') &&