Improvements in fireMaps. User subs area

This commit is contained in:
vjrj 2017-12-04 16:19:10 +01:00
parent f9d60a1685
commit aced217a7d
4 changed files with 128 additions and 0 deletions

View file

@ -0,0 +1,51 @@
/* eslint-disable consistent-return */
import { Mongo } from 'meteor/mongo';
import SimpleSchema from 'simpl-schema';
const FireAlerts = new Mongo.Collection('avisosfuego');
FireAlerts.allow({
insert: () => false,
update: () => false,
remove: () => false,
});
FireAlerts.deny({
insert: () => true,
update: () => true,
remove: () => true,
});
/* Sample:
* "_id" : ObjectId("5a059c4879095a1adba47507"),
* "chatId" : null,
* "location" : {
* "lat" : 40.2324096,
* "lon" : -3.3514863,
* "text" : null
* },
* "aviso" : ISODate("2017-11-10T12:32:08.973Z"),
* "dateformat" : "20171110",
* "geo" : {
* "type" : "Point",
* "coordinates" : [
* -3.3514863,
* 40.2324096
* ]
* }
* }
* */
FireAlerts.schema = new SimpleSchema({
location: Object,
'location.lat': SimpleSchema.Integer,
'location.lon': SimpleSchema.Integer,
aviso: Date,
}
);
FireAlerts.attachSchema(FireAlerts.schema);
export default FireAlerts;

View file

@ -0,0 +1,6 @@
import { Meteor } from 'meteor/meteor';
import FireAlerts from '../FireAlerts';
Meteor.publish('fireAlerts', function fireAlerts() {
return FireAlerts.find();
});

View file

@ -0,0 +1,50 @@
/* eslint-disable consistent-return */
import { Mongo } from 'meteor/mongo';
import SimpleSchema from 'simpl-schema';
const Subscriptions = new Mongo.Collection('subscriptions');
Subscriptions.allow({
insert: () => false,
update: () => false,
remove: () => false,
});
Subscriptions.deny({
insert: () => true,
update: () => true,
remove: () => true,
});
/* Sample:
* {
* "_id" : ObjectId("5a0bfb5a79095a1adba47513"),
* "chatId" : -253600015,
* "location" : {
* "lat" : 40.234503,
* "lon" : -3.350386
* },
* "geo" : {
* "type" : "Point",
* "coordinates" : [
* -3.350386,
* 40.234503
* ]
* },
* "distance" : 40
* }
* */
Subscriptions.schema = new SimpleSchema({
location: Object,
'location.lat': SimpleSchema.Integer,
'location.lon': SimpleSchema.Integer,
distance: Number,
}
);
Subscriptions.attachSchema(Subscriptions.schema);
export default Subscriptions;

View file

@ -0,0 +1,21 @@
import { Meteor } from 'meteor/meteor';
import Subscriptions from '../Subscriptions';
Meteor.publishTransformed('userSubsToFires', function() {
// https://en.wikipedia.org/wiki/Location_obfuscation
// https://en.wikipedia.org/wiki/Decimal_degrees#Precision
return Subscriptions.find().serverTransform(function(doc) {
var location = doc.location;
/* doc.lat = location.lat;
* doc.lon = location.lon;*/
if (location) {
doc.lat = Math.round(location.lat * 10) / 10;
doc.lon = Math.round(location.lon * 10) / 10;
}
delete doc.chatId;
delete doc.geo;
delete doc.location;
return doc;
});
});