diff --git a/.meteor/packages b/.meteor/packages index 68b09c3..71a8dd1 100644 --- a/.meteor/packages +++ b/.meteor/packages @@ -41,3 +41,5 @@ mixmax:smart-disconnect # Disconnect on lost focus flowkey:raven # js errors davidsichau:piwik # Stats thebakery:ipgeocoder +mdg:geolocation +natestrauser:publish-performant-counts diff --git a/.meteor/versions b/.meteor/versions index 12600a7..c98ac3d 100644 --- a/.meteor/versions +++ b/.meteor/versions @@ -57,6 +57,7 @@ launch-screen@1.1.1 livedata@1.0.18 localstorage@1.1.1 logging@1.1.17 +mdg:geolocation@1.3.0 meteor@1.7.2 meteor-base@1.1.0 minifier-css@1.2.16 @@ -70,6 +71,7 @@ modules-runtime@0.8.0 mongo@1.2.2 mongo-dev-server@1.0.1 mongo-id@1.0.6 +natestrauser:publish-performant-counts@0.1.2 npm-bcrypt@0.9.3 npm-mongo@2.2.30 oauth@1.1.13 diff --git a/imports/api/ActiveFires/server/publications.js b/imports/api/ActiveFires/server/publications.js index 36cd08b..22a4ed8 100644 --- a/imports/api/ActiveFires/server/publications.js +++ b/imports/api/ActiveFires/server/publications.js @@ -2,8 +2,10 @@ import { Meteor } from 'meteor/meteor'; import { check, Match } from 'meteor/check'; import ActiveFires from '../ActiveFires'; -Meteor.publish('activefires', function activefires() { - return ActiveFires.find(); +var counter = new Counter('countActiveFires', ActiveFires.find({})); + +Meteor.publish('activefirestotal', function() { + return counter; }); const validZoom = Match.Where((zoom) => { @@ -30,7 +32,6 @@ var NullOr = function (type) { }); }; - const zoomMetersPerPixel = [156412, 78206, 39103, 19551, 9776, 4888, 2444, 1222, 610.984, 305.492, 152.746, 76.373, 38.187, 19.093, 9.547, 4.773, 2.387, 1.193, 0.596, 0.298]; var activefires = function(zoom, lat, lng) { diff --git a/imports/startup/client/i18n.js b/imports/startup/client/i18n.js index 2c343ed..ecf5b83 100644 --- a/imports/startup/client/i18n.js +++ b/imports/startup/client/i18n.js @@ -5,6 +5,7 @@ import Cache from 'i18next-localstorage-cache'; import { T9n } from 'meteor-accounts-t9n'; import en from 'meteor-accounts-t9n/build/en'; import es from 'meteor-accounts-t9n/build/es'; +import moment from 'moment'; // Adapted from: https://github.com/appigram/ryfma-boilerplate/blob/44c1eabfb9928b5623afab36a23997969e5beb02/imports/startup/client/i18n.js @@ -61,6 +62,15 @@ i18n.use(backend) }, interpolation: { escapeValue: false, // not needed for react!! + formatSeparator: ",", + format: function(value, format, lng) { + // https://www.i18next.com/formatting.html + // console.log(`Value: ${value} with format: ${format} to lang: ${lng}`); + if (format === 'uppercase') return value.toUpperCase(); + if (value instanceof Date) return moment(value).format(format); + if (format === 'number') return Intl.NumberFormat(lng).format(value); + return value; + } }, whitelist: false, // whitelist: ['es', 'en'], // allowed languages @@ -84,6 +94,10 @@ i18n.use(backend) } }, function(err, t) { // initialized and ready to + if (err) { + console.error(err); + return; + } document.title = t("AppName"); // Accounts translation @@ -111,4 +125,9 @@ i18n.use(backend) CookieConsent.init(cookiesOpt); }); +i18n.on('languageChanged', function(lng) { + moment.locale(lng); + T9n.setLanguage(lng); +}); + export default i18n; diff --git a/imports/ui/components/PublicNavigation/PublicNavigation.js b/imports/ui/components/PublicNavigation/PublicNavigation.js index f6c9f34..c212c04 100644 --- a/imports/ui/components/PublicNavigation/PublicNavigation.js +++ b/imports/ui/components/PublicNavigation/PublicNavigation.js @@ -12,7 +12,10 @@ import { translate } from 'react-i18next'; import NavItem from '../NavItem/NavItem'; const PublicNavigation = (props) => ( -