From 42f7bb1e65d56603c9382501cd3fef2851e9b73d Mon Sep 17 00:00:00 2001 From: Margot Rutgers Date: Wed, 28 Nov 2018 15:57:19 +0000 Subject: [PATCH 01/11] Do something with weight change --- package-lock.json | 1212 +++++++++++++++++++++++++------ src/App.js | 27 +- src/components/ContentBanner.js | 17 + src/components/RecordWeight.js | 13 +- 4 files changed, 1052 insertions(+), 217 deletions(-) create mode 100644 src/components/ContentBanner.js diff --git a/package-lock.json b/package-lock.json index d0515f0..af03ae3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -887,6 +887,199 @@ "resolved": "https://registry.npmjs.org/@csstools/convert-colors/-/convert-colors-1.4.0.tgz", "integrity": "sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw==" }, + "@firebase/app": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.3.5.tgz", + "integrity": "sha512-DaAlb74yzwXbkFXvfsUVFeurSETPJAvKNtVpAKlS6RThyD+Y+ci1/8JVw4INm2hihbj/edxlAUelg9eoOZNCKA==", + "requires": { + "@firebase/app-types": "0.3.2", + "@firebase/util": "0.2.3", + "dom-storage": "2.1.0", + "tslib": "1.9.0", + "xmlhttprequest": "1.8.0" + }, + "dependencies": { + "tslib": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.0.tgz", + "integrity": "sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ==" + } + } + }, + "@firebase/app-types": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.3.2.tgz", + "integrity": "sha512-ZD8lTgW07NGgo75bTyBJA8Lt9+NweNzot7lrsBtIvfciwUzaFJLsv2EShqjBeuhF7RpG6YFucJ6m67w5buCtzw==" + }, + "@firebase/auth": { + "version": "0.7.9", + "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-0.7.9.tgz", + "integrity": "sha512-m8e2KZ/WvToTMovoBI5K3N0Ku8Aqt6083oqzQODUYHjf94KsAfGdoQEaJono7T7vK4o7E5xpqFgFldOM5LdgiQ==", + "requires": { + "@firebase/auth-types": "0.3.4" + } + }, + "@firebase/auth-types": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@firebase/auth-types/-/auth-types-0.3.4.tgz", + "integrity": "sha512-0r3gSQk9jw5orFHCTUIgao0zan6dHt2J0BO3t/uEzbod+uwqvUn/gh+yg+kK6HX92Fg8E7y030KX4Bw/aXt0Ew==" + }, + "@firebase/database": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/@firebase/database/-/database-0.3.7.tgz", + "integrity": "sha512-BB5L3PqwQVJUdS1WY+sq3eun5n5oimFWolXYl6pyACJwqL2qnPp0cnjK6kOqTsRPPMayZZmfUI38RBDwXaUJhQ==", + "requires": { + "@firebase/database-types": "0.3.2", + "@firebase/logger": "0.1.2", + "@firebase/util": "0.2.3", + "faye-websocket": "0.11.1", + "tslib": "1.9.0" + }, + "dependencies": { + "tslib": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.0.tgz", + "integrity": "sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ==" + } + } + }, + "@firebase/database-types": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-0.3.2.tgz", + "integrity": "sha512-9ZYdvYQ6r3aaHJarhUM5Hf6lQWu3ZJme+RR0o8qfBb9L04TL3uNjt+AJFku1ysVPntTn+9GqJjiIB2/OC3JtwA==" + }, + "@firebase/firestore": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-0.8.8.tgz", + "integrity": "sha512-8OxRQZnvkXucZNxJh0OYkRoCt0+v260ScQvSIfTPjNO26Ahxc0ULSiox6US6lHH8U1ecTEilVYroknzwV/moJw==", + "requires": { + "@firebase/firestore-types": "0.7.0", + "@firebase/logger": "0.1.2", + "@firebase/webchannel-wrapper": "0.2.11", + "grpc": "1.16.0", + "tslib": "1.9.0" + }, + "dependencies": { + "tslib": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.0.tgz", + "integrity": "sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ==" + } + } + }, + "@firebase/firestore-types": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@firebase/firestore-types/-/firestore-types-0.7.0.tgz", + "integrity": "sha512-jyKRcKnSh3CSEPL4xGOZNoOXEiv7YmFK/JEcdd/4cAH17/Xo+Pk67gk1E648LRKh6QPghgNvzNTY5R10mKbQNw==" + }, + "@firebase/functions": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.3.3.tgz", + "integrity": "sha512-t8CE1AQivqWeDJ1MvaITGn+x6Z78CVnJi3mLz/+2Vx7UwU4HRhkfJcxhrRnnMzWY9OoCJ9j1wUoDsXfKmU546w==", + "requires": { + "@firebase/functions-types": "0.2.1", + "@firebase/messaging-types": "0.2.3", + "isomorphic-fetch": "2.2.1", + "tslib": "1.9.0" + }, + "dependencies": { + "tslib": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.0.tgz", + "integrity": "sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ==" + } + } + }, + "@firebase/functions-types": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@firebase/functions-types/-/functions-types-0.2.1.tgz", + "integrity": "sha512-hH78lgDoa5E1peBSXnfQyshENmh/5a8aia+S4Ocjc53OUWRJ4VqYwWUV5gE4b2mqVKTpN4akJccLq2pCnNGZcA==" + }, + "@firebase/logger": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.1.2.tgz", + "integrity": "sha512-4NHGRIbZChg9vDUxynzYrw14G/U/71v0pea+jXPicrpflL0N0PSCULXGGSTmzn9fqZ5W5djEwVLBCVwKndXG8w==" + }, + "@firebase/messaging": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.3.7.tgz", + "integrity": "sha512-8tZgRVJuvmFe5HDUiKvGAsK/jehrMnoUx95XU3RkZHX2D5QHjXAvvXIfFQ118EtG5/whZoEo1nCjEHAd9mSalA==", + "requires": { + "@firebase/messaging-types": "0.2.3", + "@firebase/util": "0.2.3", + "tslib": "1.9.0" + }, + "dependencies": { + "tslib": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.0.tgz", + "integrity": "sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ==" + } + } + }, + "@firebase/messaging-types": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@firebase/messaging-types/-/messaging-types-0.2.3.tgz", + "integrity": "sha512-avwCgZzcx2uxIW/wT3p3G/EyHftIrvMyiTS7AA7dxDlzfx+8dpAeTsb1+jsHJT4F6foSh5HG17Nw8sDzYuxH1Q==" + }, + "@firebase/polyfill": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@firebase/polyfill/-/polyfill-0.3.3.tgz", + "integrity": "sha512-xs8IZf1WEbufYXyfV8YjmiFZOaujRRq0T03NteihYfuGVTTym7z5SmvLvEHLEUjf2fgeobPEzZ2JgrCQHS+QHw==", + "requires": { + "core-js": "2.5.5", + "promise-polyfill": "7.1.2", + "whatwg-fetch": "2.0.4" + }, + "dependencies": { + "whatwg-fetch": { + "version": "2.0.4", + "resolved": "http://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz", + "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==" + } + } + }, + "@firebase/storage": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.2.4.tgz", + "integrity": "sha512-uqA6CoZYkugk69ImqB16VBPP7JRPRfZwcUP9CsE0GPVGQkZQQfBGwzIyEoFA8lUfVLrvxQiL0sQvHUXZ945LMg==", + "requires": { + "@firebase/storage-types": "0.2.3", + "tslib": "1.9.0" + }, + "dependencies": { + "tslib": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.0.tgz", + "integrity": "sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ==" + } + } + }, + "@firebase/storage-types": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@firebase/storage-types/-/storage-types-0.2.3.tgz", + "integrity": "sha512-RaZeam2LgsB7xwAtOQr4G0Geoyf7D5TnLF3a12By6Rh0Z9PqBSlWn0SVYGW3SkmxIdqvWZMZvCyamUlqQvQzWw==" + }, + "@firebase/util": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-0.2.3.tgz", + "integrity": "sha512-ngAG4qYpcnnshUKbBlEiR9+j37U7dTrTVJlS4v7ahW1ROuyLT9xj6cWyHQANzcTR2yKLmEv3yfwoZwedz7V0oQ==", + "requires": { + "tslib": "1.9.0" + }, + "dependencies": { + "tslib": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.0.tgz", + "integrity": "sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ==" + } + } + }, + "@firebase/webchannel-wrapper": { + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.2.11.tgz", + "integrity": "sha512-WyMXDxk/WZ+f2lOCeEvDWUce2f5Kk2sNfvArK8f+PlUnzFdy/MBzLXrmbMgyZXP7GP4ooUxYV8Sdmoh1hGk1Uw==" + }, "@fortawesome/fontawesome-common-types": { "version": "0.2.8", "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.8.tgz", @@ -1388,6 +1581,15 @@ "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" }, + "ascli": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ascli/-/ascli-1.0.1.tgz", + "integrity": "sha1-vPpZdKYvGOgcq660lzKrSoj5Brw=", + "requires": { + "colour": "~0.7.1", + "optjs": "~3.2.2" + } + }, "asn1": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", @@ -2288,6 +2490,14 @@ "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" }, + "bytebuffer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/bytebuffer/-/bytebuffer-5.0.1.tgz", + "integrity": "sha1-WC7qSxqHO20CCkjVjfhfC7ps/d0=", + "requires": { + "long": "~3" + } + }, "bytes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", @@ -2437,6 +2647,39 @@ "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" }, + "chart.js": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-2.7.3.tgz", + "integrity": "sha512-3+7k/DbR92m6BsMUYP6M0dMsMVZpMnwkUyNSAbqolHKsbIzH2Q4LWVEHHYq7v0fmEV8whXE0DrjANulw9j2K5g==", + "requires": { + "chartjs-color": "^2.1.0", + "moment": "^2.10.2" + } + }, + "chartjs-color": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/chartjs-color/-/chartjs-color-2.2.0.tgz", + "integrity": "sha1-hKL7dVeH7YXDndbdjHsdiEKbrq4=", + "requires": { + "chartjs-color-string": "^0.5.0", + "color-convert": "^0.5.3" + }, + "dependencies": { + "color-convert": { + "version": "0.5.3", + "resolved": "http://registry.npmjs.org/color-convert/-/color-convert-0.5.3.tgz", + "integrity": "sha1-vbbGnOZg+t/+CwAHzER+G59ygr0=" + } + } + }, + "chartjs-color-string": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/chartjs-color-string/-/chartjs-color-string-0.5.0.tgz", + "integrity": "sha512-amWNvCOXlOUYxZVDSa0YOab5K/lmEhbFNKI55PWc4mlv28BDzA7zaoQTGxSBgJMHIW+hGX8YUrvw/FH4LyhwSQ==", + "requires": { + "color-name": "^1.0.0" + } + }, "check-types": { "version": "7.4.0", "resolved": "https://registry.npmjs.org/check-types/-/check-types-7.4.0.tgz", @@ -2638,6 +2881,11 @@ "resolved": "http://registry.npmjs.org/colors/-/colors-1.1.2.tgz", "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=" }, + "colour": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/colour/-/colour-0.7.1.tgz", + "integrity": "sha1-nLFpkX7F0SwHNtPoaFdG3xyt93g=" + }, "combined-stream": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", @@ -2783,6 +3031,11 @@ "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" }, + "core-js": { + "version": "2.5.5", + "resolved": "http://registry.npmjs.org/core-js/-/core-js-2.5.5.tgz", + "integrity": "sha1-sU3ek2xkDAV5prUMq8wTLdYSfjs=" + }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", @@ -3597,6 +3850,11 @@ } } }, + "dom-storage": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/dom-storage/-/dom-storage-2.1.0.tgz", + "integrity": "sha512-g6RpyWXzl0RR6OTElHKBl7nwnK87GUyZMYC7JWsB/IA73vpqK2K6LT39x4VepLxlSsWBFrPVLnsSR5Jyty0+2Q==" + }, "domain-browser": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", @@ -3714,6 +3972,14 @@ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" }, + "encoding": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "requires": { + "iconv-lite": "~0.4.13" + } + }, "end-of-stream": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", @@ -4647,6 +4913,21 @@ "pinkie-promise": "^2.0.0" } }, + "firebase": { + "version": "5.5.9", + "resolved": "https://registry.npmjs.org/firebase/-/firebase-5.5.9.tgz", + "integrity": "sha512-IFABX9++5Bq7S00zYGdkdnqikq67cJuub26iyap4qNPnc05qXxx/5waomMIyEvfH74K7ywOaVWEy0E1BFNKk7g==", + "requires": { + "@firebase/app": "0.3.5", + "@firebase/auth": "0.7.9", + "@firebase/database": "0.3.7", + "@firebase/firestore": "0.8.8", + "@firebase/functions": "0.3.3", + "@firebase/messaging": "0.3.7", + "@firebase/polyfill": "0.3.3", + "@firebase/storage": "0.2.4" + } + }, "flat-cache": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.2.tgz", @@ -5252,28 +5533,649 @@ "tar": { "version": "4.4.1", "bundled": true, - "optional": true, + "optional": true, + "requires": { + "chownr": "^1.0.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.2.4", + "minizlib": "^1.1.0", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.1", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "optional": true, + "requires": { + "string-width": "^1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true + }, + "yallist": { + "version": "3.0.2", + "bundled": true + } + } + }, + "fstream": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", + "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "gaze": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", + "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", + "requires": { + "globule": "^1.0.0" + } + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" + }, + "get-own-enumerable-property-symbols": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.0.tgz", + "integrity": "sha512-CIJYJC4GGF06TakLg8z4GQKvDsx9EMspVxOYih7LerEL/WosUnFIww45CGfxfeKHqlg3twgUrYRT1O3WQqjGCg==" + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=" + }, + "get-stream": { + "version": "3.0.0", + "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "requires": { + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" + }, + "dependencies": { + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "requires": { + "is-glob": "^2.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "requires": { + "is-extglob": "^1.0.0" + } + } + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", + "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=" + }, + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + } + }, + "globals": { + "version": "11.9.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.9.0.tgz", + "integrity": "sha512-5cJVtyXWH8PiJPVLZzzoIizXx944O4OmRro5MWKx5fT4MgcN7OfaMutPeaTdJCCURwbWdhhcCWcKIffPnmTzBg==" + }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "globule": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz", + "integrity": "sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==", + "requires": { + "glob": "~7.1.1", + "lodash": "~4.17.10", + "minimatch": "~3.0.2" + } + }, + "graceful-fs": { + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==" + }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=" + }, + "grpc": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/grpc/-/grpc-1.16.0.tgz", + "integrity": "sha512-+p8YRIng7Gihkn2jycAXwXdA9aQ10SikRrcHY+/r3W1Z1Pr9NFIbLcmBZPoaTbzzLDv/ysqwqFEZriAdd8tveQ==", + "requires": { + "lodash": "^4.17.5", + "nan": "^2.0.0", + "node-pre-gyp": "^0.10.0", + "protobufjs": "^5.0.3" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.0.1", + "bundled": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true + }, + "debug": { + "version": "2.6.9", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true + }, + "iconv-lite": { + "version": "0.4.23", + "bundled": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true + }, + "ini": { + "version": "1.3.5", + "bundled": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.0", + "bundled": true + }, + "minipass": { + "version": "2.3.3", + "bundled": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.1.0", + "bundled": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "bundled": true + } + } + }, + "ms": { + "version": "2.0.0", + "bundled": true + }, + "needle": { + "version": "2.2.2", + "bundled": true, + "requires": { + "debug": "^2.1.2", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.10.3", + "bundled": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.3", + "bundled": true + }, + "npm-packlist": { + "version": "1.1.11", + "bundled": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.2", + "bundled": true, + "requires": { + "glob": "^7.0.5" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true + }, + "sax": { + "version": "1.2.4", + "bundled": true + }, + "semver": { + "version": "5.5.0", + "bundled": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true + }, + "tar": { + "version": "4.4.6", + "bundled": true, "requires": { "chownr": "^1.0.1", "fs-minipass": "^1.2.5", - "minipass": "^2.2.4", + "minipass": "^2.3.3", "minizlib": "^1.1.0", "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.1", + "safe-buffer": "^5.1.2", "yallist": "^3.0.2" } }, "util-deprecate": { "version": "1.0.2", - "bundled": true, - "optional": true + "bundled": true }, "wide-align": { - "version": "1.1.2", + "version": "1.1.3", "bundled": true, - "optional": true, "requires": { - "string-width": "^1.0.2" + "string-width": "^1.0.2 || 2" } }, "wrappy": { @@ -5286,211 +6188,6 @@ } } }, - "fstream": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", - "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", - "requires": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - } - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" - }, - "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "gaze": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", - "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", - "requires": { - "globule": "^1.0.0" - } - }, - "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" - }, - "get-own-enumerable-property-symbols": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.0.tgz", - "integrity": "sha512-CIJYJC4GGF06TakLg8z4GQKvDsx9EMspVxOYih7LerEL/WosUnFIww45CGfxfeKHqlg3twgUrYRT1O3WQqjGCg==" - }, - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=" - }, - "get-stream": { - "version": "3.0.0", - "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "requires": { - "assert-plus": "^1.0.0" - } - }, - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "requires": { - "glob-parent": "^2.0.0", - "is-glob": "^2.0.0" - }, - "dependencies": { - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "requires": { - "is-glob": "^2.0.0" - } - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "requires": { - "is-extglob": "^1.0.0" - } - } - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "glob-to-regexp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", - "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=" - }, - "global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", - "requires": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" - } - }, - "global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", - "requires": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" - } - }, - "globals": { - "version": "11.9.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.9.0.tgz", - "integrity": "sha512-5cJVtyXWH8PiJPVLZzzoIizXx944O4OmRro5MWKx5fT4MgcN7OfaMutPeaTdJCCURwbWdhhcCWcKIffPnmTzBg==" - }, - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "requires": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "globule": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz", - "integrity": "sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==", - "requires": { - "glob": "~7.1.1", - "lodash": "~4.17.10", - "minimatch": "~3.0.2" - } - }, - "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==" - }, - "growly": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", - "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=" - }, "gzip-size": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.0.0.tgz", @@ -6510,6 +7207,15 @@ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" }, + "isomorphic-fetch": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", + "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", + "requires": { + "node-fetch": "^1.0.1", + "whatwg-fetch": ">=0.10.0" + } + }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", @@ -8419,6 +9125,11 @@ "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz", "integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=" }, + "long": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz", + "integrity": "sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s=" + }, "loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -8773,6 +9484,11 @@ } } }, + "moment": { + "version": "2.22.2", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.22.2.tgz", + "integrity": "sha1-PCV/mDn8DpP/UxSWMiOeuQeD/2Y=" + }, "move-concurrently": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", @@ -8861,6 +9577,15 @@ "lower-case": "^1.1.1" } }, + "node-fetch": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", + "requires": { + "encoding": "^0.1.11", + "is-stream": "^1.0.1" + } + }, "node-forge": { "version": "0.7.5", "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz", @@ -12448,6 +13173,11 @@ "wordwrap": "~1.0.0" } }, + "optjs": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/optjs/-/optjs-3.2.2.tgz", + "integrity": "sha1-aabOicRCpEQDFBrS+bNwvVu29O4=" + }, "original": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", @@ -16105,6 +16835,11 @@ "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=" }, + "promise-polyfill": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-7.1.2.tgz", + "integrity": "sha512-FuEc12/eKqqoRYIGBrUptCBRhobL19PS2U31vMNTfyck1FxPyMfgsXyW4Mav85y/ZN1hop3hOwRlUDok23oYfQ==" + }, "prompts": { "version": "0.1.14", "resolved": "https://registry.npmjs.org/prompts/-/prompts-0.1.14.tgz", @@ -16123,6 +16858,33 @@ "object-assign": "^4.1.1" } }, + "protobufjs": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-5.0.3.tgz", + "integrity": "sha512-55Kcx1MhPZX0zTbVosMQEO5R6/rikNXd9b6RQK4KSPcrSIIwoXTtebIczUrXlwaSrbz4x8XUVThGPob1n8I4QA==", + "requires": { + "ascli": "~1", + "bytebuffer": "~5", + "glob": "^7.0.5", + "yargs": "^3.10.0" + }, + "dependencies": { + "yargs": { + "version": "3.32.0", + "resolved": "http://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", + "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", + "requires": { + "camelcase": "^2.0.1", + "cliui": "^3.0.3", + "decamelize": "^1.1.1", + "os-locale": "^1.4.0", + "string-width": "^1.0.1", + "window-size": "^0.1.4", + "y18n": "^3.2.0" + } + } + } + }, "proxy-addr": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz", @@ -16296,6 +17058,11 @@ } } }, + "re-base": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/re-base/-/re-base-4.0.0.tgz", + "integrity": "sha512-btpYJuWOtPBiOW9osRu3O36kXbEK+J9HrJPwIbFZSd/r4wW3wJMBXLwASmilcE+mQIWupqmGdPyR+ZV+nKkSHA==" + }, "react": { "version": "16.6.3", "resolved": "https://registry.npmjs.org/react/-/react-16.6.3.tgz", @@ -16334,6 +17101,15 @@ } } }, + "react-chartjs-2": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/react-chartjs-2/-/react-chartjs-2-2.7.4.tgz", + "integrity": "sha512-lXTpBaDlk9rIMjRONjZd76dIUhEm3vOp2jOrJrsFG/UpFI5VqX8Xw83apVHTnUGJ968f8i/i/syLddls4NHy2g==", + "requires": { + "lodash": "^4.17.4", + "prop-types": "^15.5.8" + } + }, "react-dev-utils": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-6.1.1.tgz", @@ -19395,6 +20171,11 @@ "string-width": "^1.0.2 || 2" } }, + "window-size": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", + "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=" + }, "wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", @@ -19610,6 +20391,11 @@ "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-1.3.1.tgz", "integrity": "sha512-tGkGJkN8XqCod7OT+EvGYK5Z4SfDQGD30zAa58OcnAa0RRWgzUEK72tkXhsX1FZd+rgnhRxFtmO+ihkp8LHSkw==" }, + "xmlhttprequest": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", + "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw=" + }, "xregexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.0.0.tgz", diff --git a/src/App.js b/src/App.js index 7d7622d..172f539 100644 --- a/src/App.js +++ b/src/App.js @@ -5,6 +5,7 @@ import Footer from "./components/Footer"; import base from "./utils/base"; import RecordWeight from "./components/RecordWeight"; import "./App.css"; +import ContentBanner from "./components/ContentBanner"; class Weight extends Component { constructor() { @@ -16,7 +17,8 @@ class Weight extends Component { currentSlide: 0, chartData: null, weighins: null, - showWeightInput: false + showWeightInput: false, + weightChangeState: 0, }; this.handleRecordWeightClick = this.handleRecordWeightClick.bind(this); @@ -35,6 +37,27 @@ class Weight extends Component { }) } + updateWeight(weight) { + console.log("New weight:") + console.log(weight); + + let delta = weight - this.state.currentWeight; + let weightChange = 0; + + if (delta > 0.2) { + weightChange = 1; + + } else if (delta < -0.2) { + weightChange = -1; + + } + + this.setState({ + weightChangeState: weightChange + }) + + } + componentDidMount() { base .fetch("users/cYzlSenFtBVM5GYsLZsIf1vSsKr2", { @@ -64,7 +87,7 @@ class Weight extends Component {
{ this.state.showWeightInput === true ? ( - + ) : null }
diff --git a/src/components/ContentBanner.js b/src/components/ContentBanner.js new file mode 100644 index 0000000..ade6456 --- /dev/null +++ b/src/components/ContentBanner.js @@ -0,0 +1,17 @@ +import React, { Component } from "react"; + +class ContentBanner extends Component { + render() { + return ( + + ); + } +} + +export default ContentBanner; \ No newline at end of file diff --git a/src/components/RecordWeight.js b/src/components/RecordWeight.js index fbbac24..1ac861a 100644 --- a/src/components/RecordWeight.js +++ b/src/components/RecordWeight.js @@ -6,6 +6,15 @@ import { faCalendar } from "@fortawesome/free-solid-svg-icons"; library.add(faCalendar); class RecordWeight extends Component { + + handleChange(event) { + this.setState({enteredWeight: event.target.value}) + } + + updateWeight() { + this.props.updateWeight(this.state.enteredWeight) + } + render() { return (
@@ -14,7 +23,7 @@ class RecordWeight extends Component {
- + kg
@@ -36,7 +45,7 @@ class RecordWeight extends Component {
- +
From fff64671a6c781e8d25d9df0f40be3cd5c900e45 Mon Sep 17 00:00:00 2001 From: Margot Rutgers Date: Thu, 29 Nov 2018 11:00:36 +0000 Subject: [PATCH 02/11] Added response card to weight change. Somehow can't get it to show on state change. --- src/App.js | 61 +++++++++++++--------- src/WeightResponseCard.css | 30 +++++++++++ src/components/ContentBanner.js | 17 ------- src/components/WeightResponseCard.js | 75 ++++++++++++++++++++++++++++ 4 files changed, 142 insertions(+), 41 deletions(-) create mode 100644 src/WeightResponseCard.css delete mode 100644 src/components/ContentBanner.js create mode 100644 src/components/WeightResponseCard.js diff --git a/src/App.js b/src/App.js index 172f539..2e98f47 100644 --- a/src/App.js +++ b/src/App.js @@ -5,7 +5,8 @@ import Footer from "./components/Footer"; import base from "./utils/base"; import RecordWeight from "./components/RecordWeight"; import "./App.css"; -import ContentBanner from "./components/ContentBanner"; +import ContentBanner from "./components/WeightResponseCard"; +import WeightResponseCard from "./components/WeightResponseCard"; class Weight extends Component { constructor() { @@ -18,6 +19,7 @@ class Weight extends Component { chartData: null, weighins: null, showWeightInput: false, + showResponseCard: false, weightChangeState: 0, }; @@ -38,44 +40,54 @@ class Weight extends Component { } updateWeight(weight) { - console.log("New weight:") + console.log("New weight: ") console.log(weight); - + + // In reality it should be something like this: + // delta-time = time-of-last-weight-measurement - time-of-current-weight-measurement (get in hours, between 0 and 24) + // delta-weight = new weight - last-weight + // allowed-weight-fluctuation = delta-time / 24 * 2.5 KG (= maximum normal weight fluctuation) + // if (abs(delta-weight) < allowed-weight-fluctuation) { + // 'nothing to see here' + // else { + // positive or negative weight loss + // } + let delta = weight - this.state.currentWeight; let weightChange = 0; - if (delta > 0.2) { + if (delta > 0.5) { weightChange = 1; - - } else if (delta < -0.2) { + } else if (delta < -0.5) { weightChange = -1; - } - + this.setState({ - weightChangeState: weightChange + weightChangeState: weightChange, + showResponseCard: true, }) + console.log("Updated weight, should show response card: " + this.state.showResponseCard) } componentDidMount() { base - .fetch("users/cYzlSenFtBVM5GYsLZsIf1vSsKr2", { - context: this, - asArray: false - }) - .then(data => { - console.log("data", data); - this.setState({ - targetWeight: data.tagetWeight, - currentWeight: data.weighins[data.weighins.length -1].weight + .fetch("users/cYzlSenFtBVM5GYsLZsIf1vSsKr2", { + context: this, + asArray: false }) - }); + .then(data => { + console.log("data", data); + this.setState({ + targetWeight: data.tagetWeight, + currentWeight: data.weighins[data.weighins.length - 1].weight + }) + }); } render() { return ( -
+
Week 6 @@ -83,15 +95,16 @@ class Weight extends Component {
Current weight {this.state.currentWeight} +
- { this.state.showWeightInput === true ? ( + {this.state.showWeightInput === true ? ( - ) : - null } + ) : + null}
-
+
); } diff --git a/src/WeightResponseCard.css b/src/WeightResponseCard.css new file mode 100644 index 0000000..65d4390 --- /dev/null +++ b/src/WeightResponseCard.css @@ -0,0 +1,30 @@ +.card-container { + width: 100%; + display: flex; + flex-direction: column; + align-items: center; + justify-content: space-between; + margin-top: 10px; + margin-bottom: 10px; + background: white; + +} + +.response-card { + display: flex; + flex-direction: column; + width: 100%; + padding: 10px; +} + +img { + width: 100%; + max-height: 200px; +} + +.close-button { + margin: 40px; + border: 2px solid #484ea7; + color: #484ea7; + background: white; +} \ No newline at end of file diff --git a/src/components/ContentBanner.js b/src/components/ContentBanner.js deleted file mode 100644 index ade6456..0000000 --- a/src/components/ContentBanner.js +++ /dev/null @@ -1,17 +0,0 @@ -import React, { Component } from "react"; - -class ContentBanner extends Component { - render() { - return ( - - ); - } -} - -export default ContentBanner; \ No newline at end of file diff --git a/src/components/WeightResponseCard.js b/src/components/WeightResponseCard.js new file mode 100644 index 0000000..9f35951 --- /dev/null +++ b/src/components/WeightResponseCard.js @@ -0,0 +1,75 @@ +import React, { Component } from "react"; +import '../WeightResponseCard.css' + +class WeightResponseCard extends Component { + + constructor(props) { + super(props); + this.state = { + image: 'https://sloanreview.mit.edu/content/uploads/2017/04/DL-Mukherjee-Digital-Leadership-Neutrality-Neutral-Culture-1200-300x300.jpg', + title: 'Default', + body: 'Some default text', + show: this.props.show, + }; + console.log("In the constructor - " + this.state.show) + } + + componentWillMount() { + this.setAppropriateContent(); + } + + setAppropriateContent(props){ + + let content; + + if (this.props.weightChangeState === -1 ){ + content = { + image: 'http://www.elmundodelpapelpintado.com/242540-large_default/confeti.jpg', + title: 'Good work', + body: 'Well done!', + } + } else if (this.props.weightChangeState === 1) { + content = { + image: 'http://media.istockphoto.com/vectors/huge-helping-hand-new-business-concept-vector-id530718785?k=6&m=530718785&s=612x612&w=0&h=pArbjjYryXf4eA0eSXBjrkEmWBZgEd3GnFioN0Lp8TU=', + title: "Let's get back on track...", + body: "Here is some super useful content", + } + } else if (this.props.weightChangeState === 0){ + content = { + image: 'http://media.istockphoto.com/vectors/huge-helping-hand-new-business-concept-vector-id530718785?k=6&m=530718785&s=612x612&w=0&h=pArbjjYryXf4eA0eSXBjrkEmWBZgEd3GnFioN0Lp8TU=', + title: "Nothing changed", + body: "Here is some super useful content", + show: false + } + } + this.setState((state,props) => (content)); + } + + close() { + this.setState({ + show: false, + }) + } + + render() { + + const style = this.state.show ? {} : {display: 'none'} ; + + return ( +
+
+ description +
+

{this.state.title}

+
+
+ {this.state.body} +
+ +
+
+ ); + } +} + +export default WeightResponseCard; \ No newline at end of file From 247c0711afb4eac42282e6d318b35fa77d713dc8 Mon Sep 17 00:00:00 2001 From: Margot Rutgers Date: Thu, 29 Nov 2018 11:13:38 +0000 Subject: [PATCH 03/11] Card now opens and closes properly --- src/App.js | 9 ++++++++- src/components/WeightResponseCard.js | 28 ++++++++++++++-------------- 2 files changed, 22 insertions(+), 15 deletions(-) diff --git a/src/App.js b/src/App.js index 2e98f47..a738aed 100644 --- a/src/App.js +++ b/src/App.js @@ -62,6 +62,7 @@ class Weight extends Component { weightChange = -1; } + // This should trigger showing the response card but it doesn't this.setState({ weightChangeState: weightChange, showResponseCard: true, @@ -70,6 +71,12 @@ class Weight extends Component { console.log("Updated weight, should show response card: " + this.state.showResponseCard) } + closeResponseCard() { + this.setState({ + showResponseCard: false, + }) + } + componentDidMount() { base .fetch("users/cYzlSenFtBVM5GYsLZsIf1vSsKr2", { @@ -95,7 +102,7 @@ class Weight extends Component {
Current weight {this.state.currentWeight} - +
diff --git a/src/components/WeightResponseCard.js b/src/components/WeightResponseCard.js index 9f35951..4d68b92 100644 --- a/src/components/WeightResponseCard.js +++ b/src/components/WeightResponseCard.js @@ -9,17 +9,12 @@ class WeightResponseCard extends Component { image: 'https://sloanreview.mit.edu/content/uploads/2017/04/DL-Mukherjee-Digital-Leadership-Neutrality-Neutral-Culture-1200-300x300.jpg', title: 'Default', body: 'Some default text', - show: this.props.show, }; console.log("In the constructor - " + this.state.show) } - componentWillMount() { - this.setAppropriateContent(); - } - setAppropriateContent(props){ - + console.log("Changing content") let content; if (this.props.weightChangeState === -1 ){ @@ -37,23 +32,28 @@ class WeightResponseCard extends Component { } else if (this.props.weightChangeState === 0){ content = { image: 'http://media.istockphoto.com/vectors/huge-helping-hand-new-business-concept-vector-id530718785?k=6&m=530718785&s=612x612&w=0&h=pArbjjYryXf4eA0eSXBjrkEmWBZgEd3GnFioN0Lp8TU=', - title: "Nothing changed", + title: "You are maintaining your weight", body: "Here is some super useful content", - show: false } } + + console.log("Changing content") + console.log(content) this.setState((state,props) => (content)); } - close() { - this.setState({ - show: false, - }) + componentWillReceiveProps() { + this.setAppropriateContent(); + } + + closeResponseCard() { + this.props.closeResponseCard(); } render() { - const style = this.state.show ? {} : {display: 'none'} ; + const style = this.props.show ? {} : {display: 'none'} ; + console.log("Are we showing the card? " + this.props.show) return (
@@ -65,7 +65,7 @@ class WeightResponseCard extends Component {
{this.state.body}
- +
); From 27df60d717ce83b454e2806f05a925f551d3d61e Mon Sep 17 00:00:00 2001 From: Margot Rutgers Date: Thu, 29 Nov 2018 11:15:41 +0000 Subject: [PATCH 04/11] Deleted console logs --- src/App.js | 2 -- src/components/WeightResponseCard.js | 4 ---- 2 files changed, 6 deletions(-) diff --git a/src/App.js b/src/App.js index a738aed..7bb9fb4 100644 --- a/src/App.js +++ b/src/App.js @@ -67,8 +67,6 @@ class Weight extends Component { weightChangeState: weightChange, showResponseCard: true, }) - - console.log("Updated weight, should show response card: " + this.state.showResponseCard) } closeResponseCard() { diff --git a/src/components/WeightResponseCard.js b/src/components/WeightResponseCard.js index 4d68b92..a744153 100644 --- a/src/components/WeightResponseCard.js +++ b/src/components/WeightResponseCard.js @@ -10,7 +10,6 @@ class WeightResponseCard extends Component { title: 'Default', body: 'Some default text', }; - console.log("In the constructor - " + this.state.show) } setAppropriateContent(props){ @@ -37,8 +36,6 @@ class WeightResponseCard extends Component { } } - console.log("Changing content") - console.log(content) this.setState((state,props) => (content)); } @@ -53,7 +50,6 @@ class WeightResponseCard extends Component { render() { const style = this.props.show ? {} : {display: 'none'} ; - console.log("Are we showing the card? " + this.props.show) return (
From 5a15dc611f7b022bef119d4f2b7101d8c9a8ec02 Mon Sep 17 00:00:00 2001 From: Margot Rutgers Date: Thu, 29 Nov 2018 11:22:24 +0000 Subject: [PATCH 05/11] tidying up a little, adding some content --- src/App.js | 1 - src/components/WeightResponseCard.js | 8 ++++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/App.js b/src/App.js index 7bb9fb4..61f29a4 100644 --- a/src/App.js +++ b/src/App.js @@ -5,7 +5,6 @@ import Footer from "./components/Footer"; import base from "./utils/base"; import RecordWeight from "./components/RecordWeight"; import "./App.css"; -import ContentBanner from "./components/WeightResponseCard"; import WeightResponseCard from "./components/WeightResponseCard"; class Weight extends Component { diff --git a/src/components/WeightResponseCard.js b/src/components/WeightResponseCard.js index a744153..a82ed73 100644 --- a/src/components/WeightResponseCard.js +++ b/src/components/WeightResponseCard.js @@ -20,19 +20,19 @@ class WeightResponseCard extends Component { content = { image: 'http://www.elmundodelpapelpintado.com/242540-large_default/confeti.jpg', title: 'Good work', - body: 'Well done!', + body: "You are doing great. Lets take note of what went well this week, so that we can maintain this!", } } else if (this.props.weightChangeState === 1) { content = { image: 'http://media.istockphoto.com/vectors/huge-helping-hand-new-business-concept-vector-id530718785?k=6&m=530718785&s=612x612&w=0&h=pArbjjYryXf4eA0eSXBjrkEmWBZgEd3GnFioN0Lp8TU=', title: "Let's get back on track...", - body: "Here is some super useful content", + body: "In times like these, it's a good idea to take a step back and plan your next stap. Let's try out the 'Stop, Think, Learn, Plan'-module today!", } } else if (this.props.weightChangeState === 0){ content = { - image: 'http://media.istockphoto.com/vectors/huge-helping-hand-new-business-concept-vector-id530718785?k=6&m=530718785&s=612x612&w=0&h=pArbjjYryXf4eA0eSXBjrkEmWBZgEd3GnFioN0Lp8TU=', + image: 'https://www.itsnicethat.com/system/files/042018/5acc9beb7fa44ccc62000002/images_slice_large/SebastianCuri-WarriorPose-Illustration-itsnicethat-0.jpg?1523359320', title: "You are maintaining your weight", - body: "Here is some super useful content", + body: "Well done on not gaining any weight. How about setting a SMART goal to lose some weight this week?", } } From ff61f0e9f24f7049fcd57951bf3e5396ae37289b Mon Sep 17 00:00:00 2001 From: Margot Rutgers Date: Fri, 30 Nov 2018 10:57:53 +0000 Subject: [PATCH 06/11] Close overlay on submit weight --- src/components/RecordWeight.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/RecordWeight.js b/src/components/RecordWeight.js index 1ac861a..658d0c1 100644 --- a/src/components/RecordWeight.js +++ b/src/components/RecordWeight.js @@ -13,6 +13,7 @@ class RecordWeight extends Component { updateWeight() { this.props.updateWeight(this.state.enteredWeight) + this.props.closeRecordOverlay() } render() { From 43185b132fdc81290f63d1b826513c385475b436 Mon Sep 17 00:00:00 2001 From: Dan Bull Date: Mon, 3 Dec 2018 19:25:04 +0000 Subject: [PATCH 07/11] Fixing the things --- src/App.js | 56 +++++++++++++++++----------- src/components/RecordWeight.js | 13 +------ src/components/WeightResponseCard.js | 18 +++------ 3 files changed, 42 insertions(+), 45 deletions(-) diff --git a/src/App.js b/src/App.js index 61f29a4..5a7e2f4 100644 --- a/src/App.js +++ b/src/App.js @@ -20,28 +20,14 @@ class Weight extends Component { showWeightInput: false, showResponseCard: false, weightChangeState: 0, + enteredWeight: 0 }; this.handleRecordWeightClick = this.handleRecordWeightClick.bind(this); this.closeRecordOverlay = this.closeRecordOverlay.bind(this); } - handleRecordWeightClick() { - this.setState({ - showWeightInput: true - }); - } - - closeRecordOverlay() { - this.setState({ - showWeightInput: false - }) - } - - updateWeight(weight) { - console.log("New weight: ") - console.log(weight); - + updateWeight() { // In reality it should be something like this: // delta-time = time-of-last-weight-measurement - time-of-current-weight-measurement (get in hours, between 0 and 24) // delta-weight = new weight - last-weight @@ -52,7 +38,11 @@ class Weight extends Component { // positive or negative weight loss // } - let delta = weight - this.state.currentWeight; + this.setState({ + showWeightInput: false + }) + + const delta = this.state.enteredWeight - this.state.currentWeight; let weightChange = 0; if (delta > 0.5) { @@ -60,15 +50,33 @@ class Weight extends Component { } else if (delta < -0.5) { weightChange = -1; } + console.log("weightChange", weightChange); - // This should trigger showing the response card but it doesn't this.setState({ weightChangeState: weightChange, - showResponseCard: true, + showResponseCard: true + }) + } + + + handleWeightChange(event) { + this.setState({enteredWeight: event.target.value}) + } + + handleRecordWeightClick() { + this.setState({ + showWeightInput: true + }); + } + + closeRecordOverlay() { + this.setState({ + showWeightInput: false }) } closeResponseCard() { + console.log("closeResponseCard"); this.setState({ showResponseCard: false, }) @@ -81,7 +89,6 @@ class Weight extends Component { asArray: false }) .then(data => { - console.log("data", data); this.setState({ targetWeight: data.tagetWeight, currentWeight: data.weighins[data.weighins.length - 1].weight @@ -99,12 +106,17 @@ class Weight extends Component {
Current weight {this.state.currentWeight} - + { this.state.showResponseCard === true ? ( + + ) : ( + null + ) + }
{this.state.showWeightInput === true ? ( - + ) : null}
diff --git a/src/components/RecordWeight.js b/src/components/RecordWeight.js index 658d0c1..0b7acc8 100644 --- a/src/components/RecordWeight.js +++ b/src/components/RecordWeight.js @@ -7,15 +7,6 @@ library.add(faCalendar); class RecordWeight extends Component { - handleChange(event) { - this.setState({enteredWeight: event.target.value}) - } - - updateWeight() { - this.props.updateWeight(this.state.enteredWeight) - this.props.closeRecordOverlay() - } - render() { return (
@@ -24,7 +15,7 @@ class RecordWeight extends Component {
- + kg
@@ -46,7 +37,7 @@ class RecordWeight extends Component {
- +
diff --git a/src/components/WeightResponseCard.js b/src/components/WeightResponseCard.js index a82ed73..2489c2d 100644 --- a/src/components/WeightResponseCard.js +++ b/src/components/WeightResponseCard.js @@ -12,10 +12,9 @@ class WeightResponseCard extends Component { }; } - setAppropriateContent(props){ - console.log("Changing content") - let content; - + componentWillMount(){ + console.log("this.props.weightChangeState", this.props.weightChangeState); + let content; if (this.props.weightChangeState === -1 ){ content = { image: 'http://www.elmundodelpapelpintado.com/242540-large_default/confeti.jpg', @@ -36,11 +35,9 @@ class WeightResponseCard extends Component { } } - this.setState((state,props) => (content)); - } + console.log("content", content); - componentWillReceiveProps() { - this.setAppropriateContent(); + this.setState((state,props) => (content)); } closeResponseCard() { @@ -48,11 +45,8 @@ class WeightResponseCard extends Component { } render() { - - const style = this.props.show ? {} : {display: 'none'} ; - return ( -
+
description
From c1428883427d526ba47066d5dcc2ee5187bd02c1 Mon Sep 17 00:00:00 2001 From: Margot Rutgers Date: Tue, 4 Dec 2018 12:44:41 +0000 Subject: [PATCH 08/11] Add login functionality --- src/App.js | 21 +++++++++++++ src/PrivateRoute.js | 21 +++++++++++++ src/components/Login/LoginView.js | 30 ++++++++++++++++++ src/components/Login/index.js | 26 ++++++++++++++++ src/components/Router.js | 52 +++++++++++++++++++++++++------ src/utils/base.js | 12 +++---- 6 files changed, 146 insertions(+), 16 deletions(-) create mode 100644 src/PrivateRoute.js create mode 100644 src/components/Login/LoginView.js create mode 100644 src/components/Login/index.js diff --git a/src/App.js b/src/App.js index 5a7e2f4..38e3d86 100644 --- a/src/App.js +++ b/src/App.js @@ -6,6 +6,7 @@ import base from "./utils/base"; import RecordWeight from "./components/RecordWeight"; import "./App.css"; import WeightResponseCard from "./components/WeightResponseCard"; +import { auth, firebaseApp} from "./utils/base"; class Weight extends Component { constructor() { @@ -96,6 +97,26 @@ class Weight extends Component { }); } + componentWillMount() { + + auth.onAuthStateChanged(user => { + if (user) { + this.setState({ + authenticated: true, + currentUser: user, + loading: false + }); + } else { + this.setState({ + authenticated: false, + currentUser: null, + loading: false + }); + } + }); + } + + render() { return (
diff --git a/src/PrivateRoute.js b/src/PrivateRoute.js new file mode 100644 index 0000000..79a8644 --- /dev/null +++ b/src/PrivateRoute.js @@ -0,0 +1,21 @@ +import React from "react"; +import { Route, Redirect } from "react-router-dom"; + +export default function PrivateRoute({ + component: Component, + authenticated, + ...rest +}) { + return ( + + authenticated === true ? ( + + ) : ( + + ) + } + /> + ); +} diff --git a/src/components/Login/LoginView.js b/src/components/Login/LoginView.js new file mode 100644 index 0000000..1113d38 --- /dev/null +++ b/src/components/Login/LoginView.js @@ -0,0 +1,30 @@ +import React from "react"; + +const LoginView = ({ onSubmit }) => { + return ( +
+

Log In

+
+ + + +
+
+ ); +}; + +export default LoginView; diff --git a/src/components/Login/index.js b/src/components/Login/index.js new file mode 100644 index 0000000..97a183f --- /dev/null +++ b/src/components/Login/index.js @@ -0,0 +1,26 @@ +import React, { Component } from "react"; +import { withRouter } from "react-router"; +import { auth, firebaseApp} from "../../utils/base"; + +import LoginView from "./LoginView"; + +class LoginContainer extends Component { + handleLogin = async event => { + event.preventDefault(); + const { email, password } = event.target.elements; + try { + const user = await auth + .signInWithEmailAndPassword(email.value, password.value); + this.props.history.push("/"); + console.log("Logging in") + } catch (error) { + alert(error); + } + }; + + render() { + return ; + } +} + +export default withRouter(LoginContainer); diff --git a/src/components/Router.js b/src/components/Router.js index 67bb2e3..88af8b3 100644 --- a/src/components/Router.js +++ b/src/components/Router.js @@ -1,17 +1,49 @@ -import React from "react"; +import React, { Component } from "react"; import { BrowserRouter, Route, Switch } from "react-router-dom"; import App from "../App"; import WeightSummary from "./WeightSummary"; import WeightStats from "./WeightStats"; +import Login from "./Login/index"; +import PrivateRoute from "../PrivateRoute" +import { auth, firebaseApp} from "../utils/base"; -const Router = () => ( - - - - - - - -); + +class Router extends Component { + + state = { loading: true, authenticated: false, user: null }; + + componentWillMount() { + + auth.onAuthStateChanged(user => { + if (user) { + this.setState({ + authenticated: true, + currentUser: user, + loading: false + }); + } else { + this.setState({ + authenticated: false, + currentUser: null, + loading: false + }); + } + }); + } + + render() { + return ( + + + + + + + + + + ) + } +}; export default Router; \ No newline at end of file diff --git a/src/utils/base.js b/src/utils/base.js index 50f55a0..44e7bd1 100644 --- a/src/utils/base.js +++ b/src/utils/base.js @@ -2,12 +2,12 @@ import Rebase from "re-base"; import firebase from "firebase"; const firebaseApp = firebase.initializeApp({ - apiKey: "AIzaSyDTqO0lEF1-Qsgh5hYbzGMMkJd-VyxSvow", - authDomain: "counterweight-7e93f.firebaseapp.com", - databaseURL: "https://counterweight-7e93f.firebaseio.com", - projectId: "counterweight-7e93f", - storageBucket: "", - messagingSenderId: "464792506009" + apiKey: "AIzaSyDobH_MgAdOBHMouzjakiLnyhq3xwWbhJ8", + authDomain: "counterweight-prototype.firebaseapp.com", + databaseURL: "https://counterweight-prototype.firebaseio.com", + projectId: "counterweight-prototype", + storageBucket: "counterweight-prototype.appspot.com", + messagingSenderId: "321468679011" }); const base = Rebase.createClass(firebaseApp.database()); From 9e0b8d46f9f7513ad0c1d6938b139ca5a5218877 Mon Sep 17 00:00:00 2001 From: Margot Rutgers Date: Tue, 4 Dec 2018 12:58:25 +0000 Subject: [PATCH 09/11] add data for user jasper-jones --- src/App.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/App.js b/src/App.js index 38e3d86..d9e3666 100644 --- a/src/App.js +++ b/src/App.js @@ -85,7 +85,7 @@ class Weight extends Component { componentDidMount() { base - .fetch("users/cYzlSenFtBVM5GYsLZsIf1vSsKr2", { + .fetch("users/"+auth.currentUser.uid, { context: this, asArray: false }) From 1a175a4df85d3f9f47e392546b2f384cd4683256 Mon Sep 17 00:00:00 2001 From: Margot Rutgers Date: Tue, 4 Dec 2018 13:51:06 +0000 Subject: [PATCH 10/11] Fix a bit of CSS ugliness --- src/App.css | 4 ++++ src/App.js | 1 - src/components/Login/LoginView.js | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/App.css b/src/App.css index d75506a..32c7191 100644 --- a/src/App.css +++ b/src/App.css @@ -14,6 +14,10 @@ input[type=number]::-webkit-outer-spin-button { input:focus { outline: none; } +label { + display: block; +} + button { padding: 0; border: 0; diff --git a/src/App.js b/src/App.js index d9e3666..82c5215 100644 --- a/src/App.js +++ b/src/App.js @@ -116,7 +116,6 @@ class Weight extends Component { }); } - render() { return (
diff --git a/src/components/Login/LoginView.js b/src/components/Login/LoginView.js index 1113d38..dc0e38e 100644 --- a/src/components/Login/LoginView.js +++ b/src/components/Login/LoginView.js @@ -5,7 +5,7 @@ const LoginView = ({ onSubmit }) => {

Log In

-