From 48dab4bb0d1ae20feee1ea8dea3acccfa6c9e2d0 Mon Sep 17 00:00:00 2001 From: vjrj Date: Fri, 2 Mar 2018 21:58:14 +0100 Subject: [PATCH 001/212] Refactor piwik startup --- imports/startup/client/piwik-start.js | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/imports/startup/client/piwik-start.js b/imports/startup/client/piwik-start.js index a377821..79ed940 100644 --- a/imports/startup/client/piwik-start.js +++ b/imports/startup/client/piwik-start.js @@ -1,8 +1,7 @@ -Meteor.startup(function() { - return Tracker.autorun(function() { - var userId; - userId = Meteor.userId(); - // console.log(userId); - Meteor.Piwik.setUserInfo(userId); - }); -}); +import { Meteor } from 'meteor/meteor'; +import { Tracker } from 'meteor/tracker'; + +Meteor.startup(() => Tracker.autorun(() => { + const userId = Meteor.userId(); + Meteor.Piwik.setUserInfo(userId); +})); From 71c6cf20d782d284f4e637e698920b65c05d7038 Mon Sep 17 00:00:00 2001 From: vjrj Date: Sat, 3 Mar 2018 08:40:58 +0100 Subject: [PATCH 002/212] Removed fragment, added key to Index --- imports/ui/pages/Index/Index.js | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/imports/ui/pages/Index/Index.js b/imports/ui/pages/Index/Index.js index 0260aa1..10e50c8 100644 --- a/imports/ui/pages/Index/Index.js +++ b/imports/ui/pages/Index/Index.js @@ -2,7 +2,7 @@ /* eslint-disable react/jsx-indent-props */ /* eslint-disable key-spacing */ /* eslint-env jquery */ -import React, { Component, Fragment } from 'react'; +import React, { Component } from 'react'; import { translate, Trans } from 'react-i18next'; import { Helmet } from 'react-helmet'; import PropTypes from 'prop-types'; @@ -54,7 +54,7 @@ class Index extends Component { ); } - return (); + return (
); } scaleHeader() { @@ -88,7 +88,7 @@ class Index extends Component { {title} {/* https://v4-alpha.getbootstrap.com/components/carousel/ */} - +
@@ -99,10 +99,10 @@ class Index extends Component { > {/* for dev ^^^: data-interval=false */}
    -
  1. -
  2. -
  3. -
  4. +
  5. +
  6. +
  7. +
@@ -192,8 +192,8 @@ class Index extends Component { > {/* for dev ^^^: data-interval=false */}
    -
  1. -
  2. +
  3. +
@@ -300,7 +300,7 @@ class Index extends Component {
- +
); } From fa4af5e5fe01c147a06b296ba1f56c5e66f02b55 Mon Sep 17 00:00:00 2001 From: vjrj Date: Sat, 3 Mar 2018 08:41:23 +0100 Subject: [PATCH 003/212] Refactor i18n client code --- imports/startup/client/i18n.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/imports/startup/client/i18n.js b/imports/startup/client/i18n.js index 69771e2..2fdc6b4 100644 --- a/imports/startup/client/i18n.js +++ b/imports/startup/client/i18n.js @@ -70,16 +70,17 @@ i18n.use(backend) console.error(err); return; } - i18nReady.set(true); + console.log(`Language initialized: ${i18n.language}`); + // document.title = t('AppName'); // Accounts translation // https://github.com/softwarerero/meteor-accounts-t9n - // console.log("Language: " + i18n.language); T9n.setLanguage(i18n.language); // console.log(T9n.get('error.accounts.User not found')); - moment.locale(i18n.language); + i18nReady.set(true); + // cookies eu consent const cookiesOpt = { cookieTitle: t('Uso de Cookies'), From 5996f3a74aedea822e7044d6a24bd22177cd9d3a Mon Sep 17 00:00:00 2001 From: vjrj Date: Sat, 3 Mar 2018 08:41:53 +0100 Subject: [PATCH 004/212] Simplify Test page --- imports/ui/pages/TestError/TestError.js | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/imports/ui/pages/TestError/TestError.js b/imports/ui/pages/TestError/TestError.js index 66f3721..f8f51ce 100644 --- a/imports/ui/pages/TestError/TestError.js +++ b/imports/ui/pages/TestError/TestError.js @@ -3,20 +3,16 @@ /* eslint-disable import/no-absolute-path */ import React, { Component } from 'react'; -import PropTypes from 'prop-types'; -import { translate } from 'react-i18next'; -import { withTracker } from 'meteor/react-meteor-data'; class TestError extends Component { constructor(props) { super(props); - this.t = props.t; this.state = { }; + throw new Error('Just testing'); } render() { - throw new Error('Just testing'); return (
); @@ -24,13 +20,9 @@ class TestError extends Component { } TestError.propTypes = { - t: PropTypes.func.isRequired }; TestError.defaultProps = { }; -// export default translate([], { wait: true })(TestError); -export default translate([], { wait: true })(withTracker(props => ({ - // props.something -}))(TestError)); +export default TestError; From 64b2affee4cf6867e5866930a4bb7c81badff470 Mon Sep 17 00:00:00 2001 From: vjrj Date: Sat, 3 Mar 2018 09:05:55 +0100 Subject: [PATCH 005/212] Clean in Profile --- imports/ui/pages/Profile/Profile.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/imports/ui/pages/Profile/Profile.js b/imports/ui/pages/Profile/Profile.js index cb58761..665e9d7 100644 --- a/imports/ui/pages/Profile/Profile.js +++ b/imports/ui/pages/Profile/Profile.js @@ -269,7 +269,7 @@ Profile.propTypes = { i18n: PropTypes.object.isRequired }; -export default translate([], { wait: true })(withTracker(() => { +export default translate()(withTracker(() => { const subscription = Meteor.subscribe('users.editProfile'); return { From 8b0577b46f4bae1c1b60b1ea80e56525e54c33f2 Mon Sep 17 00:00:00 2001 From: vjrj Date: Sat, 3 Mar 2018 10:54:53 +0100 Subject: [PATCH 006/212] Refactor Reconnect --- imports/ui/components/Reconnect/Reconnect.js | 27 ++++++++------------ 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/imports/ui/components/Reconnect/Reconnect.js b/imports/ui/components/Reconnect/Reconnect.js index 2de4d5c..19bbfb5 100644 --- a/imports/ui/components/Reconnect/Reconnect.js +++ b/imports/ui/components/Reconnect/Reconnect.js @@ -1,30 +1,24 @@ /* eslint-disable react/jsx-indent-props */ /* eslint-disable import/no-absolute-path */ -import React, { Fragment, Component } from 'react'; +import React from 'react'; import PropTypes from 'prop-types'; import { translate } from 'react-i18next'; import { Meteor } from 'meteor/meteor'; import { Tracker } from 'meteor/tracker'; import Blaze from 'meteor/gadicc:blaze-react-component'; -class Reconnect extends Component { - render() { - const { t, authenticated } = this.props; - // console.log(`Reconnect ${!authenticated ? 'enabled' : 'disabled'}`); - return ( - - { !authenticated && - ( +
+ { !authenticated && + } - - ); - } -} + /> } +
+); Reconnect.propTypes = { t: PropTypes.func.isRequired, @@ -36,11 +30,12 @@ Reconnect.defaultProps = { export default translate([], { wait: true })(Reconnect); +/* if (!Meteor.isProduction) { // We clear the console on disconnect during development Tracker.autorun(() => { if (Meteor.status().status === 'waiting') { - // console.clear(); + console.clear(); } }); -} +} */ From 83f5048ff83ab14e03c4960254eaa36a633ef1f0 Mon Sep 17 00:00:00 2001 From: vjrj Date: Sat, 3 Mar 2018 11:26:19 +0100 Subject: [PATCH 007/212] Refactor Feedback --- imports/ui/components/Feedback/Feedback.js | 25 +++++++++++----------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/imports/ui/components/Feedback/Feedback.js b/imports/ui/components/Feedback/Feedback.js index 26338cb..bbcab29 100644 --- a/imports/ui/components/Feedback/Feedback.js +++ b/imports/ui/components/Feedback/Feedback.js @@ -2,7 +2,7 @@ /* eslint-disable import/no-absolute-path */ /* eslint-disable import/no-absolute-path */ -import React, { Component, Fragment } from 'react'; +import React, { Component } from 'react'; import PropTypes from 'prop-types'; import { Meteor } from 'meteor/meteor'; import { translate } from 'react-i18next'; @@ -18,13 +18,13 @@ import './Feedback.scss'; class Feedback extends Component { constructor(props) { super(props); - this.t = props.t; this.handleSubmit = this.handleSubmit.bind(this); this.onTabClick = this.onTabClick.bind(this); } componentDidMount() { const component = this; + const { t } = this.props; validate(component.form, { rules: { @@ -38,11 +38,11 @@ class Feedback extends Component { }, messages: { feedbackText: { - required: this.t('Por favor, escribe aquí tu feedback...') + required: t('Por favor, escribe aquí tu feedback...') }, email: { - required: this.t('Tu correo'), - email: this.t('¿Es correcto este correo?') + required: t('Tu correo'), + email: t('¿Es correcto este correo?') } }, submitHandler() { component.handleSubmit(); } @@ -71,8 +71,9 @@ class Feedback extends Component { render() { // console.log(`Render Feedback because isHome ${this.props.isHome}, email: '${this.props.emailAddress}'`); const disabled = this.props.emailVerified && this.props.emailAddress; + const { t } = this.props; return ( - +
{ !this.props.isHome &&
(this.formdiv = formdiv)} style={{ display: 'none' }} className="card"> @@ -88,7 +89,7 @@ class Feedback extends Component { name="email" className="form-control" ref={email => (this.email = email)} - placeholder={this.t('Tu correo')} + placeholder={t('Tu correo')} key={disabled ? 'disabledEmail' : 'enabledEmail'} disabled={disabled} defaultValue={disabled ? this.props.emailAddress : ''} @@ -103,13 +104,13 @@ class Feedback extends Component { className="form-control" name="feedbackText" ref={feedbackText => (this.feedbackText = feedbackText)} - placeholder={this.t('Por favor, escribe aquí tu feedback...')} + placeholder={t('Por favor, escribe aquí tu feedback...')} rows="6" />
@@ -117,11 +118,11 @@ class Feedback extends Component { id="feedback-tab" onClick={(event) => { this.onTabClick(event); }} > - {this.t('Feedback')} + {t('Feedback')}
} -
+
); } } @@ -133,7 +134,7 @@ Feedback.propTypes = { isHome: PropTypes.bool.isRequired }; -export default translate([], { wait: true })(withTracker(props => ({ +export default translate()(withTracker(props => ({ emailAddress: props.emailAddress, emailVerified: props.emailVerified, isHome: isHome() From 337931b6c2ea26aa0e5efe2b603ec67f3839c009 Mon Sep 17 00:00:00 2001 From: vjrj Date: Sat, 3 Mar 2018 11:38:09 +0100 Subject: [PATCH 008/212] Updated i18next --- package-lock.json | 30 ++++++++++++++---------------- package.json | 6 +++--- 2 files changed, 17 insertions(+), 19 deletions(-) diff --git a/package-lock.json b/package-lock.json index 848df6c..e92a4dc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4903,6 +4903,11 @@ "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz", "integrity": "sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ==" }, + "hoist-non-react-statics": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.3.1.tgz", + "integrity": "sha1-ND24TGAYxlB3iJgkATWhQg7iLOA=" + }, "home-or-tmp": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", @@ -4990,9 +4995,9 @@ } }, "i18next": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/i18next/-/i18next-10.2.1.tgz", - "integrity": "sha512-7h/ILxepsAjQCMabPvevDZcn+Nxc4/5v52NkMtrzgVOe14BGlGQDs2ygRPki+45VFmRsz2e/In6veRIKQEBGkQ==" + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-10.5.0.tgz", + "integrity": "sha512-soHpHN/J8fpkt6z3mEsvO5Uf4huBLk1gYpwK7GwRJOBCJz6Zq4LgMjJ5pr8Lz0+lVwyzKW3zun7+C4pS4LZJ6Q==" }, "i18next-browser-languagedetector": { "version": "2.1.0", @@ -5049,9 +5054,9 @@ } }, "i18next-xhr-backend": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/i18next-xhr-backend/-/i18next-xhr-backend-1.5.0.tgz", - "integrity": "sha1-/uSugDh5uCS++GWnfW62FkqNYfE=" + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/i18next-xhr-backend/-/i18next-xhr-backend-1.5.1.tgz", + "integrity": "sha512-9OLdC/9YxDvTFcgsH5t2BHCODHEotHCa6h7Ly0EUlUC7Y2GS09UeoHOGj3gWKQ3HCqXz8NlH4gOrK3NNc9vPuw==" }, "iconv-lite": { "version": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.17.tgz", @@ -10333,20 +10338,13 @@ } }, "react-i18next": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-7.1.1.tgz", - "integrity": "sha1-T7XLTvf3rU/HfMKY6Sln0H1t7nU=", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-7.4.0.tgz", + "integrity": "sha1-B6M25J/I8lmdCBNtcxNOPcSDC0k=", "requires": { "hoist-non-react-statics": "2.3.1", "html-parse-stringify2": "2.0.1", "prop-types": "15.6.0" - }, - "dependencies": { - "hoist-non-react-statics": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.3.1.tgz", - "integrity": "sha1-ND24TGAYxlB3iJgkATWhQg7iLOA=" - } } }, "react-leaflet": { diff --git a/package.json b/package.json index 153add9..dc4abab 100644 --- a/package.json +++ b/package.json @@ -22,11 +22,11 @@ "handlebars": "^4.0.11", "history": "^4.7.2", "html5-device-mockups": "^3.2.0", - "i18next": "^10.0.7", + "i18next": "^10.5.0", "i18next-browser-languagedetector": "^2.1.0", "i18next-localstorage-cache": "^1.1.1", "i18next-sync-fs-backend": "^1.0.0", - "i18next-xhr-backend": "^1.5.0", + "i18next-xhr-backend": "^1.5.1", "immutability-helper": "^2.5.1", "indexof": "0.0.1", "iron": "^5.0.4", @@ -60,7 +60,7 @@ "react-confirm": "^0.1.16", "react-dom": "^16.0.0", "react-helmet": "^5.2.0", - "react-i18next": "^7.1.1", + "react-i18next": "^7.4.0", "react-leaflet": "^1.8.0", "react-leaflet-control": "^1.4.0", "react-leaflet-fullscreen": "0.0.6", From cbc3d07f4a4593adbcff085e79beed63e642b5eb Mon Sep 17 00:00:00 2001 From: vjrj Date: Sat, 3 Mar 2018 11:38:49 +0100 Subject: [PATCH 009/212] Removed fragment in SubsMap --- imports/ui/pages/Subscriptions/SubscriptionsMap.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/imports/ui/pages/Subscriptions/SubscriptionsMap.js b/imports/ui/pages/Subscriptions/SubscriptionsMap.js index f71cd5c..a7e7ab2 100644 --- a/imports/ui/pages/Subscriptions/SubscriptionsMap.js +++ b/imports/ui/pages/Subscriptions/SubscriptionsMap.js @@ -2,7 +2,7 @@ /* eslint-disable react/jsx-indent-props */ /* eslint-disable react/jsx-indent */ -import React, { Fragment } from 'react'; +import React from 'react'; import PropTypes from 'prop-types'; import { Button, ButtonGroup, Row, Col } from 'react-bootstrap'; import { Meteor } from 'meteor/meteor'; @@ -95,7 +95,7 @@ class SubscriptionsMap extends React.Component { const title = `${t('AppName')}: ${t('Zonas vigiladas')}`; console.log(`Rendering Subs users ready ${this.props.subsready} viewport: ${JSON.stringify(this.state.viewport)}`); return ( - +
{ !isHome() && {title} @@ -152,7 +152,7 @@ class SubscriptionsMap extends React.Component { { !isHome() && } - +
); } } From e175762c4e16913b491339b681b62f4216f601cc Mon Sep 17 00:00:00 2001 From: vjrj Date: Sat, 3 Mar 2018 11:41:12 +0100 Subject: [PATCH 010/212] ZonesMap refactor --- imports/ui/pages/ZonesMap/ZonesMap.js | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/imports/ui/pages/ZonesMap/ZonesMap.js b/imports/ui/pages/ZonesMap/ZonesMap.js index 1ad2cad..8b3955a 100644 --- a/imports/ui/pages/ZonesMap/ZonesMap.js +++ b/imports/ui/pages/ZonesMap/ZonesMap.js @@ -1,26 +1,28 @@ +/* eslint-disable react/jsx-indent-props */ /* eslint-disable import/no-absolute-path */ -import React, { Fragment } from 'react'; -import PropTypes from 'prop-types'; -import { translate } from 'react-i18next'; +/* eslint-disable import/no-absolute-path */ + +import React, { Component } from 'react'; import SubscriptionsMap from '/imports/ui/pages/Subscriptions/SubscriptionsMap'; -class ZonesMap extends React.Component { +export default class ZonesMap extends Component { constructor(props) { super(props); - this.t = props.t; + this.state = { + }; } render() { return ( - +
- +
); } } ZonesMap.propTypes = { - history: PropTypes.object.isRequired }; -export default translate([], { wait: true })(ZonesMap); +ZonesMap.defaultProps = { +}; From dfd31e69ca4c2caafb8668870359f37ab7825d16 Mon Sep 17 00:00:00 2001 From: vjrj Date: Sat, 3 Mar 2018 11:41:43 +0100 Subject: [PATCH 011/212] Refactor App for better ErrorHandling when i18next is not ready --- .../components/ErrorBoundary/ErrorBoundary.js | 31 ++-- imports/ui/layouts/App/App.js | 145 +++++++++--------- 2 files changed, 93 insertions(+), 83 deletions(-) diff --git a/imports/ui/components/ErrorBoundary/ErrorBoundary.js b/imports/ui/components/ErrorBoundary/ErrorBoundary.js index 1e0c654..a6676ec 100644 --- a/imports/ui/components/ErrorBoundary/ErrorBoundary.js +++ b/imports/ui/components/ErrorBoundary/ErrorBoundary.js @@ -4,9 +4,7 @@ import React, { Component } from 'react'; import PropTypes from 'prop-types'; -import { translate } from 'react-i18next'; import { Row, Col } from 'react-bootstrap'; -import { withTracker } from 'meteor/react-meteor-data'; import ravenLogger from '/imports/startup/client/ravenLogger'; import './ErrorBoundary.scss'; @@ -14,7 +12,6 @@ import './ErrorBoundary.scss'; class ErrorBoundary extends Component { constructor(props) { super(props); - this.t = props.t; this.state = { hasError: false }; } @@ -29,33 +26,41 @@ class ErrorBoundary extends Component { } render() { + const { + appName, title, subTitle, children + } = this.props; if (this.state.hasError) { // You can render any custom fallback UI return (
-

{this.t('AppNameFull')}

-

{this.t('general-error-title')}

-

- {this.t('general-error-description')} -

+

{appName}

+

{title}

+

{subTitle}

); } - return this.props.children; + return children; } } ErrorBoundary.propTypes = { - t: PropTypes.func.isRequired + appName: PropTypes.string, + title: PropTypes.string, + subTitle: PropTypes.string, + children: PropTypes.oneOfType([ + PropTypes.arrayOf(PropTypes.node), + PropTypes.node + ]).isRequired }; ErrorBoundary.defaultProps = { + appName: 'All Against Fire!', + title: 'Upppps: Something has gone wrong', + subTitle: 'We are investigating the problem, try again in a while' }; -export default translate([], { wait: true })(withTracker(props => ({ - // props.something -}))(ErrorBoundary)); +export default ErrorBoundary; diff --git a/imports/ui/layouts/App/App.js b/imports/ui/layouts/App/App.js index c8fd5fd..52a57ca 100644 --- a/imports/ui/layouts/App/App.js +++ b/imports/ui/layouts/App/App.js @@ -37,16 +37,16 @@ import VerifyEmail from '../../pages/VerifyEmail/VerifyEmail'; import RecoverPassword from '../../pages/RecoverPassword/RecoverPassword'; import ResetPassword from '../../pages/ResetPassword/ResetPassword'; import Profile from '../../pages/Profile/Profile'; -import NotFound from '../../pages/NotFound/NotFound'; -import FiresMap from '../../pages/FiresMap/FiresMap'; import Fires from '../../pages/Fires/Fires'; import Sandbox from '../../pages/Sandbox/Sandbox'; +import ZonesMap from '../../pages/ZonesMap/ZonesMap'; +import FiresMap from '../../pages/FiresMap/FiresMap'; +import NotFound from '../../pages/NotFound/NotFound'; import Terms from '../../pages/Terms/Terms'; import About from '../../pages/About/About'; import Privacy from '../../pages/Privacy/Privacy'; import License from '../../pages/License/License'; import Credits from '../../pages/Credits/Credits'; -import ZonesMap from '../../pages/ZonesMap/ZonesMap'; import Footer from '../../components/Footer/Footer'; import Feedback from '../../components/Feedback/Feedback'; import ReSendEmail from '../../components/ReSendEmail/ReSendEmail'; @@ -57,9 +57,6 @@ import './App.scss'; class LocationListener extends Component { // https://stackoverflow.com/questions/43512450/react-router-v4-route-onchange-event - static contextTypes = { - router: PropTypes.object - }; componentDidMount() { this.handleLocationChange(this.context.router.history.location); @@ -75,82 +72,90 @@ class LocationListener extends Component { // your staff here console.log(`----- location: '${location.pathname}'`); Meteor.Piwik.trackPage(location.pathname); - // Meteor.isReadyForSpiderable = true; } + // https://stackoverflow.com/questions/39133797/react-only-return-props-children render() { return this.props.children; } } +LocationListener.contextTypes = { + router: PropTypes.object +}; + +LocationListener.propTypes = { + children: PropTypes.oneOfType([ + PropTypes.arrayOf(PropTypes.node), + PropTypes.node + ]).isRequired +}; + const App = props => ( /* https://react.i18next.com/components/i18nextprovider.html */ - - - - - { !props.loading ? -
- - - {i18n.t('AppName')} - - - - - - +
+ {props.i18nReady.get() && + + + + + + { !props.loading && +
+ + + {i18n.t('AppName')} + + + + + + - - - - {/* - - - - */} - - - - - - - {/* */} - - - - - - - - - - - {/* } /> */} + + + + + + + + + + + - - - - - - - - + + + + + + + + - - - -
- - - {props.i18nReady.get() && - - } -
: ''} -
-
-
-
+ + + + + + + + + + + + +
+ + + {props.i18nReady.get() && } +
} + + + + + } +
); App.defaultProps = { From 965a80fb3fbb658c293e60d4e576a497956a89ae Mon Sep 17 00:00:00 2001 From: vjrj Date: Sat, 3 Mar 2018 11:43:17 +0100 Subject: [PATCH 012/212] ie9 gfys --- imports/startup/client/index.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/imports/startup/client/index.js b/imports/startup/client/index.js index ccebfda..6cff432 100644 --- a/imports/startup/client/index.js +++ b/imports/startup/client/index.js @@ -5,4 +5,8 @@ import App from '../../ui/layouts/App/App'; import '../../ui/stylesheets/app.scss'; -Meteor.startup(() => render(, document.getElementById('react-root'))); +// https://stackoverflow.com/questions/19562207/jquery-detect-browser-ie9-and-below-and-throw-up-a-modal-to-upgrade +const isIE9OrBelow = () => /MSIE\s/.test(navigator.userAgent) && parseFloat(navigator.appVersion.split('MSIE')[1]) < 10; + +if (isIE9OrBelow()) window.alert('You are using an outdated browser. Please use Chrome or Firefox to display this site.'); +else Meteor.startup(() => render(, document.getElementById('react-root'))); From 815bbb48fe3e7d9f337af53d6174b40ec52ce48a Mon Sep 17 00:00:00 2001 From: vjrj Date: Sun, 4 Mar 2018 10:44:26 +0100 Subject: [PATCH 013/212] Added opacity to maps --- imports/ui/components/Maps/DefMapLayers.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/imports/ui/components/Maps/DefMapLayers.js b/imports/ui/components/Maps/DefMapLayers.js index 33da655..0db329c 100644 --- a/imports/ui/components/Maps/DefMapLayers.js +++ b/imports/ui/components/Maps/DefMapLayers.js @@ -11,6 +11,8 @@ import { TileLayer, LayersControl } from 'react-leaflet'; const { BaseLayer } = LayersControl; +const defOpacity = 0.7; + class DefMapLayers extends Component { constructor(props) { super(props); @@ -31,6 +33,7 @@ class DefMapLayers extends Component { const osmgraylayer = ( @@ -38,6 +41,7 @@ class DefMapLayers extends Component { const osmlayer = ( @@ -49,15 +53,15 @@ class DefMapLayers extends Component { {/* React.Fragment does not work here */} { this.state.gkey && - + } { this.state.gkey && - + } { this.state.gkey && - + } ); From 2e09100bdcb6a1ff0d00fd5d1c607f11f327be48 Mon Sep 17 00:00:00 2001 From: vjrj Date: Sun, 4 Mar 2018 10:55:14 +0100 Subject: [PATCH 014/212] Cancel btn in SelectionMap only in subscriptions. Added title --- imports/ui/components/SelectionMap/SelectionMap.js | 5 ++++- imports/ui/pages/FireSubscription/FireSubscription.js | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/imports/ui/components/SelectionMap/SelectionMap.js b/imports/ui/components/SelectionMap/SelectionMap.js index 2908c39..0d0f30d 100644 --- a/imports/ui/components/SelectionMap/SelectionMap.js +++ b/imports/ui/components/SelectionMap/SelectionMap.js @@ -242,6 +242,7 @@ class SelectionMap extends Component { { this.props.sndBtn && this.props.onSndBtn &&