From 914248243524994707b78c48b7cc516a4fcc376f Mon Sep 17 00:00:00 2001
From: Varun Sendilraj
Date: Sun, 25 Oct 2020 09:53:45 -0400
Subject: [PATCH 01/16] models and system scan update
---
.gitignore | 5 +
App.js | 11 +-
android/app/build.gradle | 1 +
android/app/src/main/AndroidManifest.xml | 1 +
.../main/java/com/agroq/MainApplication.java | 1 +
android/build.gradle | 1 +
android/settings.gradle | 6 +
environment/db.js | 9 +-
ios/Podfile | 2 +
package-lock.json | 575 ++----------------
package.json | 4 +-
screens/BoxPlot.js | 95 +++
screens/DetailsScreen.js | 25 +-
screens/MonitorScreen.js | 95 ++-
screens/linearRegression.js | 88 +++
screens/logisticRegression.js | 94 +++
screens/sErrorBars.js | 96 +++
17 files changed, 561 insertions(+), 548 deletions(-)
create mode 100644 screens/BoxPlot.js
create mode 100644 screens/linearRegression.js
create mode 100644 screens/logisticRegression.js
create mode 100644 screens/sErrorBars.js
diff --git a/.gitignore b/.gitignore
index 67360f2..cbecfc5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -58,6 +58,11 @@ buck-out/
# CocoaPods
/ios/Pods/
+#firebase
+
+
+
+
#amplify
build/
dist/
diff --git a/App.js b/App.js
index 51b1da9..d4ff224 100644
--- a/App.js
+++ b/App.js
@@ -19,7 +19,10 @@ import LoginScreen from './screens/loginScreen';
import AsyncStorage from '@react-native-async-storage/async-storage';
import HomeScreen from './screens/HomeScreen';
import Onboarding from 'react-native-onboarding-swiper';
-
+import linearRegression from './screens/linearRegression';
+import BoxPlot from './screens/BoxPlot';
+import logisticRegression from './screens/logisticRegression';
+import SER from './screens/sErrorBars';
@@ -45,7 +48,13 @@ const App = () => {
+
+
+
+
+
+
diff --git a/android/app/build.gradle b/android/app/build.gradle
index b290a51..954fac6 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -137,6 +137,7 @@ android {
versionCode 1
versionName "1.0"
multiDexEnabled true
+ missingDimensionStrategy 'react-native-camera', 'general'
}
splits {
abi {
diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
index 9057cc4..7a3a19a 100644
--- a/android/app/src/main/AndroidManifest.xml
+++ b/android/app/src/main/AndroidManifest.xml
@@ -5,6 +5,7 @@
+
{
+ console.log(snapshp.val());
+ return snapshp.val();
+ });
});
}
getHistoricalData(systemName) {
diff --git a/ios/Podfile b/ios/Podfile
index 3aa0a3a..79a7378 100644
--- a/ios/Podfile
+++ b/ios/Podfile
@@ -19,6 +19,8 @@ target 'agroQ' do
pod 'RNTableView', :path => '../node_modules/react-native-tableview'
+ pod 'react-native-webview', :path => '../node_modules/react-native-webview'
+
target 'agroQTests' do
inherit! :complete
# Pods for testing
diff --git a/package-lock.json b/package-lock.json
index f330232..bc42538 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -817,9 +817,9 @@
}
},
"@babel/runtime": {
- "version": "7.11.2",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.11.2.tgz",
- "integrity": "sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw==",
+ "version": "7.12.1",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.1.tgz",
+ "integrity": "sha512-J5AIf3vPj3UwXaAzb5j1xM4WAQDX3EMgemF8rjCP3SoW09LfRKAXQKt6CoVYl230P6iWdRcBbnLDDdnqWxZSCA==",
"requires": {
"regenerator-runtime": "^0.13.4"
}
@@ -1239,153 +1239,6 @@
"resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.4.0.tgz",
"integrity": "sha512-8cUA/mg0S+BxIZ72TdZRsXKBP5n5uRcE3k29TZhZw6oIiHBt9JA7CTb/4pE1uKtE/q5NeTY2tBDcagoZ+1zjXQ=="
},
- "@google-cloud/common": {
- "version": "3.4.1",
- "resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-3.4.1.tgz",
- "integrity": "sha512-e5z0CwsM0RXky+PnyPtQ3QK46ksqm+kE7kX8pm8X+ddBwZJipHchKeazMM5fLlGCS+AALalzXb+uYmH72TRnpQ==",
- "optional": true,
- "requires": {
- "@google-cloud/projectify": "^2.0.0",
- "@google-cloud/promisify": "^2.0.0",
- "arrify": "^2.0.1",
- "duplexify": "^4.1.1",
- "ent": "^2.2.0",
- "extend": "^3.0.2",
- "google-auth-library": "^6.1.1",
- "retry-request": "^4.1.1",
- "teeny-request": "^7.0.0"
- }
- },
- "@google-cloud/firestore": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/@google-cloud/firestore/-/firestore-4.4.0.tgz",
- "integrity": "sha512-nixsumd4C7eL+hHEgyihspzhBBNe3agsvNFRX0xfqO3uR/6ro4CUj9XdcCvdnSSd3yTyqKfdBSRK2fEj1jIbYg==",
- "optional": true,
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "functional-red-black-tree": "^1.0.1",
- "google-gax": "^2.2.0"
- }
- },
- "@google-cloud/paginator": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-3.0.5.tgz",
- "integrity": "sha512-N4Uk4BT1YuskfRhKXBs0n9Lg2YTROZc6IMpkO/8DIHODtm5s3xY8K5vVBo23v/2XulY3azwITQlYWgT4GdLsUw==",
- "optional": true,
- "requires": {
- "arrify": "^2.0.0",
- "extend": "^3.0.2"
- }
- },
- "@google-cloud/projectify": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-2.0.1.tgz",
- "integrity": "sha512-ZDG38U/Yy6Zr21LaR3BTiiLtpJl6RkPS/JwoRT453G+6Q1DhlV0waNf8Lfu+YVYGIIxgKnLayJRfYlFJfiI8iQ==",
- "optional": true
- },
- "@google-cloud/promisify": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-2.0.3.tgz",
- "integrity": "sha512-d4VSA86eL/AFTe5xtyZX+ePUjE8dIFu2T8zmdeNBSa5/kNgXPCx/o/wbFNHAGLJdGnk1vddRuMESD9HbOC8irw==",
- "optional": true
- },
- "@google-cloud/storage": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-5.3.0.tgz",
- "integrity": "sha512-3t5UF3SZ14Bw2kcBHubCai6EIugU2GnQOstYWVSFuoO8IJ94RAaIOPq/dtexvQbUTpBTAGpd5smVR9WPL1mJVw==",
- "optional": true,
- "requires": {
- "@google-cloud/common": "^3.3.0",
- "@google-cloud/paginator": "^3.0.0",
- "@google-cloud/promisify": "^2.0.0",
- "arrify": "^2.0.0",
- "compressible": "^2.0.12",
- "concat-stream": "^2.0.0",
- "date-and-time": "^0.14.0",
- "duplexify": "^3.5.0",
- "extend": "^3.0.2",
- "gaxios": "^3.0.0",
- "gcs-resumable-upload": "^3.1.0",
- "hash-stream-validation": "^0.2.2",
- "mime": "^2.2.0",
- "mime-types": "^2.0.8",
- "onetime": "^5.1.0",
- "p-limit": "^3.0.1",
- "pumpify": "^2.0.0",
- "snakeize": "^0.1.0",
- "stream-events": "^1.0.1",
- "xdg-basedir": "^4.0.0"
- },
- "dependencies": {
- "concat-stream": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz",
- "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==",
- "optional": true,
- "requires": {
- "buffer-from": "^1.0.0",
- "inherits": "^2.0.3",
- "readable-stream": "^3.0.2",
- "typedarray": "^0.0.6"
- }
- },
- "duplexify": {
- "version": "3.7.1",
- "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz",
- "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==",
- "optional": true,
- "requires": {
- "end-of-stream": "^1.0.0",
- "inherits": "^2.0.1",
- "readable-stream": "^2.0.0",
- "stream-shift": "^1.0.0"
- },
- "dependencies": {
- "readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "optional": 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"
- }
- }
- }
- },
- "mime": {
- "version": "2.4.6",
- "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz",
- "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==",
- "optional": true
- },
- "p-limit": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.0.2.tgz",
- "integrity": "sha512-iwqZSOoWIW+Ew4kAGUlN16J4M7OB3ysMLSZtnhmqx7njIHFPlxWBX8xo3lVTyFVq6mI/lL9qt2IsN1sHwaxJkg==",
- "optional": true,
- "requires": {
- "p-try": "^2.0.0"
- }
- },
- "readable-stream": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
- "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
- "optional": true,
- "requires": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- }
- }
- }
- },
"@grpc/grpc-js": {
"version": "1.1.7",
"resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.1.7.tgz",
@@ -2085,12 +1938,6 @@
"@sinonjs/commons": "^1.7.0"
}
},
- "@tootallnate/once": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz",
- "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==",
- "optional": true
- },
"@types/babel__core": {
"version": "7.1.9",
"resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.9.tgz",
@@ -3482,37 +3329,6 @@
"typedarray": "^0.0.6"
}
},
- "configstore": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz",
- "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==",
- "optional": true,
- "requires": {
- "dot-prop": "^5.2.0",
- "graceful-fs": "^4.1.2",
- "make-dir": "^3.0.0",
- "unique-string": "^2.0.0",
- "write-file-atomic": "^3.0.0",
- "xdg-basedir": "^4.0.0"
- },
- "dependencies": {
- "make-dir": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
- "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
- "optional": true,
- "requires": {
- "semver": "^6.0.0"
- }
- },
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "optional": true
- }
- }
- },
"connect": {
"version": "3.7.0",
"resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz",
@@ -3631,12 +3447,6 @@
"resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-3.3.0.tgz",
"integrity": "sha512-DIT51nX0dCfKltpRiXV+/TVZq+Qq2NgF4644+K7Ttnla7zEzqc+kjJyiB96BHNyUTBxyjzRcZYpUdZa+QAqi6Q=="
},
- "crypto-random-string": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz",
- "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==",
- "optional": true
- },
"css-color-keywords": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz",
@@ -3803,12 +3613,6 @@
"whatwg-url": "^8.0.0"
}
},
- "date-and-time": {
- "version": "0.14.1",
- "resolved": "https://registry.npmjs.org/date-and-time/-/date-and-time-0.14.1.tgz",
- "integrity": "sha512-M4RggEH5OF2ZuCOxgOU67R6Z9ohjKbxGvAQz48vj53wLmL0bAgumkBvycR32f30pK+Og9pIR+RFDyChbaE4oLA==",
- "optional": true
- },
"dayjs": {
"version": "1.8.36",
"resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.8.36.tgz",
@@ -3909,14 +3713,6 @@
"integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==",
"dev": true
},
- "dicer": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.3.0.tgz",
- "integrity": "sha512-MdceRRWqltEG2dZqO769g27N/3PXfcKl04VhYnBlo2YhH7zPi88VebsjTKclaOyiuMaGU72hTfw3VkUitGcVCA==",
- "requires": {
- "streamsearch": "0.1.2"
- }
- },
"diff-sequences": {
"version": "26.3.0",
"resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.3.0.tgz",
@@ -3984,48 +3780,6 @@
"domelementtype": "1"
}
},
- "dot-prop": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz",
- "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==",
- "optional": true,
- "requires": {
- "is-obj": "^2.0.0"
- },
- "dependencies": {
- "is-obj": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz",
- "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==",
- "optional": true
- }
- }
- },
- "duplexify": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.1.tgz",
- "integrity": "sha512-DY3xVEmVHTv1wSzKNbwoU6nVjzI369Y6sPoqfYr0/xlx3IdX2n94xIszTcjPO8W8ZIv0Wb0PXNcjuZyT4wiICA==",
- "optional": true,
- "requires": {
- "end-of-stream": "^1.4.1",
- "inherits": "^2.0.3",
- "readable-stream": "^3.1.1",
- "stream-shift": "^1.0.0"
- },
- "dependencies": {
- "readable-stream": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
- "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
- "optional": true,
- "requires": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- }
- }
- }
- },
"ecc-jsbn": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
@@ -4108,12 +3862,6 @@
}
}
},
- "ent": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz",
- "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=",
- "optional": true
- },
"entities": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz",
@@ -4740,7 +4488,8 @@
"fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "dev": true
},
"fast-diff": {
"version": "1.2.0",
@@ -5003,28 +4752,6 @@
"@firebase/util": "0.3.2"
}
},
- "firebase-admin": {
- "version": "9.3.0",
- "resolved": "https://registry.npmjs.org/firebase-admin/-/firebase-admin-9.3.0.tgz",
- "integrity": "sha512-qMUITOp2QKLLc2o0/wSiDC2OO2knejjieZN/8Or9AzfFk8ftTcUKq5ALNlQXu+7aUzGe0IwSJq9TVnkIU0h1xw==",
- "requires": {
- "@firebase/database": "^0.6.10",
- "@firebase/database-types": "^0.5.2",
- "@google-cloud/firestore": "^4.0.0",
- "@google-cloud/storage": "^5.3.0",
- "@types/node": "^10.10.0",
- "dicer": "^0.3.0",
- "jsonwebtoken": "^8.5.1",
- "node-forge": "^0.10.0"
- },
- "dependencies": {
- "@types/node": {
- "version": "10.17.42",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.42.tgz",
- "integrity": "sha512-HElxYF7C/MSkuvlaHB2c+82zhXiuO49Cq056Dol8AQuTph7oJtduo2n6J8rFa+YhJyNgQ/Lm20ZaxqD0vxU0+Q=="
- }
- }
- },
"flat-cache": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz",
@@ -5126,7 +4853,8 @@
"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="
+ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
+ "dev": true
},
"gaxios": {
"version": "3.2.0",
@@ -5156,21 +4884,6 @@
"json-bigint": "^1.0.0"
}
},
- "gcs-resumable-upload": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/gcs-resumable-upload/-/gcs-resumable-upload-3.1.1.tgz",
- "integrity": "sha512-RS1osvAicj9+MjCc6jAcVL1Pt3tg7NK2C2gXM5nqD1Gs0klF2kj5nnAFSBy97JrtslMIQzpb7iSuxaG8rFWd2A==",
- "optional": true,
- "requires": {
- "abort-controller": "^3.0.0",
- "configstore": "^5.0.0",
- "extend": "^3.0.2",
- "gaxios": "^3.0.0",
- "google-auth-library": "^6.0.0",
- "pumpify": "^2.0.0",
- "stream-events": "^1.0.4"
- }
- },
"gensync": {
"version": "1.0.0-beta.1",
"resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz",
@@ -5273,24 +4986,6 @@
}
}
},
- "google-gax": {
- "version": "2.9.1",
- "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-2.9.1.tgz",
- "integrity": "sha512-KQ7HiMTB/PAzKv3OU00x6tC1H7MHvSxQfon5BSyW5o+lkMgRA8xoqvlxZCBC1dlW1azOPGF8vScy8QgFmhaQ9Q==",
- "optional": true,
- "requires": {
- "@grpc/grpc-js": "~1.1.1",
- "@grpc/proto-loader": "^0.5.1",
- "@types/long": "^4.0.0",
- "abort-controller": "^3.0.0",
- "duplexify": "^4.0.0",
- "google-auth-library": "^6.0.0",
- "is-stream-ended": "^0.1.4",
- "node-fetch": "^2.6.1",
- "protobufjs": "^6.9.0",
- "retry-request": "^4.0.0"
- }
- },
"google-p12-pem": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-3.0.3.tgz",
@@ -5392,12 +5087,6 @@
}
}
},
- "hash-stream-validation": {
- "version": "0.2.4",
- "resolved": "https://registry.npmjs.org/hash-stream-validation/-/hash-stream-validation-0.2.4.tgz",
- "integrity": "sha512-Gjzu0Xn7IagXVkSu9cSFuK1fqzwtLwFhNhVL8IFJijRNMgUttFbBSIAzKuSIrsFMO1+g1RlsoN49zPIbwPDMGQ==",
- "optional": true
- },
"hermes-engine": {
"version": "0.5.1",
"resolved": "https://registry.npmjs.org/hermes-engine/-/hermes-engine-0.5.1.tgz",
@@ -5464,34 +5153,6 @@
"resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.2.tgz",
"integrity": "sha512-opCO9ASqg5Wy2FNo7A0sxy71yGbbkJJXLdgMK04Tcypw9jr2MgWbyubb0+WdmDmGnFflO7fRbqbaihh/ENDlRQ=="
},
- "http-proxy-agent": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz",
- "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==",
- "optional": true,
- "requires": {
- "@tootallnate/once": "1",
- "agent-base": "6",
- "debug": "4"
- },
- "dependencies": {
- "debug": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz",
- "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==",
- "optional": true,
- "requires": {
- "ms": "2.1.2"
- }
- },
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "optional": true
- }
- }
- },
"http-signature": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
@@ -5907,12 +5568,6 @@
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
"integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ="
},
- "is-stream-ended": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-stream-ended/-/is-stream-ended-0.1.4.tgz",
- "integrity": "sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw==",
- "optional": true
- },
"is-string": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz",
@@ -5930,7 +5585,8 @@
"is-typedarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
- "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
+ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
+ "dev": true
},
"is-windows": {
"version": "1.0.2",
@@ -6802,49 +6458,6 @@
"resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
"integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM="
},
- "jsonwebtoken": {
- "version": "8.5.1",
- "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz",
- "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==",
- "requires": {
- "jws": "^3.2.2",
- "lodash.includes": "^4.3.0",
- "lodash.isboolean": "^3.0.3",
- "lodash.isinteger": "^4.0.4",
- "lodash.isnumber": "^3.0.3",
- "lodash.isplainobject": "^4.0.6",
- "lodash.isstring": "^4.0.1",
- "lodash.once": "^4.0.0",
- "ms": "^2.1.1",
- "semver": "^5.6.0"
- },
- "dependencies": {
- "jwa": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz",
- "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==",
- "requires": {
- "buffer-equal-constant-time": "1.0.1",
- "ecdsa-sig-formatter": "1.0.11",
- "safe-buffer": "^5.0.1"
- }
- },
- "jws": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz",
- "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==",
- "requires": {
- "jwa": "^1.4.1",
- "safe-buffer": "^5.0.1"
- }
- },
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
- }
- }
- },
"jsprim": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
@@ -6974,36 +6587,11 @@
"resolved": "https://registry.npmjs.org/lodash.frompairs/-/lodash.frompairs-4.0.1.tgz",
"integrity": "sha1-vE5SB/onV8E25XNhTpZkUGsrG9I="
},
- "lodash.includes": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
- "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8="
- },
- "lodash.isboolean": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
- "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY="
- },
"lodash.isequal": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
"integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA="
},
- "lodash.isinteger": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
- "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M="
- },
- "lodash.isnumber": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
- "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w="
- },
- "lodash.isplainobject": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
- "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs="
- },
"lodash.isstring": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
@@ -7014,11 +6602,6 @@
"resolved": "https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.5.0.tgz",
"integrity": "sha1-brGa5aHuHdnfC5aeZs4Lf6MLXmA="
},
- "lodash.once": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
- "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w="
- },
"lodash.pick": {
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz",
@@ -8545,7 +8128,8 @@
"mimic-fn": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
- "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "dev": true
},
"minimatch": {
"version": "3.0.4",
@@ -9017,6 +8601,7 @@
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
"integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "dev": true,
"requires": {
"mimic-fn": "^2.1.0"
}
@@ -9439,17 +9024,6 @@
"once": "^1.3.1"
}
},
- "pumpify": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-2.0.1.tgz",
- "integrity": "sha512-m7KOje7jZxrmutanlkS1daj1dS6z6BgslzOXmcSEpIlCxM3VJH7lG5QLeck/6hgF6F4crFf01UtQmNsJfweTAw==",
- "optional": true,
- "requires": {
- "duplexify": "^4.1.1",
- "inherits": "^2.0.3",
- "pump": "^3.0.0"
- }
- },
"punycode": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
@@ -9792,6 +9366,14 @@
"use-subscription": "^1.0.0"
}
},
+ "react-native-camera": {
+ "version": "3.40.0",
+ "resolved": "https://registry.npmjs.org/react-native-camera/-/react-native-camera-3.40.0.tgz",
+ "integrity": "sha512-Ur0hZqZcl3SntTVMB9GxuiLYpQxqwgzhQVb+7EGae4WjfDzQEwlGF0bJ7UpZyeUTb1oZmsiSib58xUckn11XMw==",
+ "requires": {
+ "prop-types": "^15.6.2"
+ }
+ },
"react-native-gesture-handler": {
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-1.8.0.tgz",
@@ -9831,6 +9413,11 @@
"react-native-safe-area-view": "^0.14.9"
}
},
+ "react-native-plotly": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/react-native-plotly/-/react-native-plotly-4.0.0.tgz",
+ "integrity": "sha512-P0FdQ1JwqhxhbRAh36eBas5e8qpPfKOWpsG99ekePXBrkPSvm5i9UcRopKW5AkFifs0GstDOJsOxfKpsVj4Whw=="
+ },
"react-native-reanimated": {
"version": "1.13.0",
"resolved": "https://registry.npmjs.org/react-native-reanimated/-/react-native-reanimated-1.13.0.tgz",
@@ -9930,6 +9517,22 @@
"yargs": "^15.0.2"
}
},
+ "react-native-webview": {
+ "version": "10.9.3",
+ "resolved": "https://registry.npmjs.org/react-native-webview/-/react-native-webview-10.9.3.tgz",
+ "integrity": "sha512-50KVtsgJEdK4S3rzWQBDGosjFDct9O1ve9UWtf6ZX9FE2kLmq1K29aoJ7PL4xo3EusctfoQAf0bhiDx/EaAGNA==",
+ "requires": {
+ "escape-string-regexp": "2.0.0",
+ "invariant": "2.2.4"
+ },
+ "dependencies": {
+ "escape-string-regexp": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
+ "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w=="
+ }
+ }
+ },
"react-redux": {
"version": "7.2.1",
"resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.2.1.tgz",
@@ -10296,32 +9899,6 @@
"resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
"integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg=="
},
- "retry-request": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-4.1.3.tgz",
- "integrity": "sha512-QnRZUpuPNgX0+D1xVxul6DbJ9slvo4Rm6iV/dn63e048MvGbUZiKySVt6Tenp04JqmchxjiLltGerOJys7kJYQ==",
- "optional": true,
- "requires": {
- "debug": "^4.1.1"
- },
- "dependencies": {
- "debug": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz",
- "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==",
- "optional": true,
- "requires": {
- "ms": "2.1.2"
- }
- },
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "optional": true
- }
- }
- },
"rimraf": {
"version": "2.7.1",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
@@ -10728,12 +10305,6 @@
"resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz",
"integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc="
},
- "snakeize": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/snakeize/-/snakeize-0.1.0.tgz",
- "integrity": "sha1-EMCI2LWOsHazIpu1oE4jLOEmQi0=",
- "optional": true
- },
"snapdragon": {
"version": "0.8.2",
"resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
@@ -11069,26 +10640,6 @@
"resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz",
"integrity": "sha1-kdX1Ew0c75bc+n9yaUUYh0HQnuQ="
},
- "stream-events": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz",
- "integrity": "sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==",
- "optional": true,
- "requires": {
- "stubs": "^3.0.0"
- }
- },
- "stream-shift": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz",
- "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==",
- "optional": true
- },
- "streamsearch": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz",
- "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo="
- },
"strict-uri-encode": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz",
@@ -11264,12 +10815,6 @@
"integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
"dev": true
},
- "stubs": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz",
- "integrity": "sha1-6NK6H6nJBXAwPAMLaQD31fiavls=",
- "optional": true
- },
"styled-components": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/styled-components/-/styled-components-5.2.0.tgz",
@@ -11374,27 +10919,6 @@
"string-width": "^3.0.0"
}
},
- "teeny-request": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-7.0.1.tgz",
- "integrity": "sha512-sasJmQ37klOlplL4Ia/786M5YlOcoLGQyq2TE4WHSRupbAuDaQW0PfVxV4MtdBtRJ4ngzS+1qim8zP6Zp35qCw==",
- "optional": true,
- "requires": {
- "http-proxy-agent": "^4.0.0",
- "https-proxy-agent": "^5.0.0",
- "node-fetch": "^2.6.1",
- "stream-events": "^1.0.5",
- "uuid": "^8.0.0"
- },
- "dependencies": {
- "uuid": {
- "version": "8.3.1",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.1.tgz",
- "integrity": "sha512-FOmRr+FmWEIG8uhZv6C2bTgEVXsHk08kE7mPlrBbEe+c3r9pjceVPgupIfNIhc4yx55H69OXANrUaSuu9eInKg==",
- "optional": true
- }
- }
- },
"temp": {
"version": "0.8.3",
"resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz",
@@ -11606,6 +11130,7 @@
"version": "3.1.5",
"resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
"integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
+ "dev": true,
"requires": {
"is-typedarray": "^1.0.0"
}
@@ -11681,15 +11206,6 @@
"set-value": "^2.0.1"
}
},
- "unique-string": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz",
- "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==",
- "optional": true,
- "requires": {
- "crypto-random-string": "^2.0.0"
- }
- },
"universalify": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
@@ -12002,6 +11518,7 @@
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
"integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==",
+ "dev": true,
"requires": {
"imurmurhash": "^0.1.4",
"is-typedarray": "^1.0.0",
@@ -12027,12 +11544,6 @@
"uuid": "^3.3.2"
}
},
- "xdg-basedir": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz",
- "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==",
- "optional": true
- },
"xml-name-validator": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz",
diff --git a/package.json b/package.json
index d004cac..9117c8f 100644
--- a/package.json
+++ b/package.json
@@ -24,10 +24,12 @@
"react": "16.13.1",
"react-native": "0.63.2",
"react-native-appearance": "^0.3.4",
+ "react-native-camera": "^3.40.0",
"react-native-gesture-handler": "^1.8.0",
"react-native-maps": "^0.27.1",
"react-native-onboarding-swiper": "^1.1.4",
"react-native-paper": "^4.2.0",
+ "react-native-plotly": "^4.0.0",
"react-native-reanimated": "^1.13.0",
"react-native-safe-area-context": "^3.1.8",
"react-native-screens": "^2.11.0",
@@ -38,6 +40,7 @@
"react-native-swiper": "^1.6.0",
"react-native-tableview": "^3.0.0",
"react-native-vector-icons": "^7.1.0",
+ "react-native-webview": "^10.9.3",
"react-redux": "^7.2.1",
"redux": "^4.0.5",
"redux-thunk": "^2.3.0",
@@ -45,7 +48,6 @@
},
"devDependencies": {
"@babel/core": "^7.11.6",
- "@babel/runtime": "^7.11.2",
"@react-native-community/eslint-config": "^2.0.0",
"babel-jest": "^26.3.0",
"eslint": "^7.9.0",
diff --git a/screens/BoxPlot.js b/screens/BoxPlot.js
new file mode 100644
index 0000000..1aedce6
--- /dev/null
+++ b/screens/BoxPlot.js
@@ -0,0 +1,95 @@
+import React, { useState } from 'react';
+import { View, Text, Button, StyleSheet, StatusBar } from 'react-native';
+import Plotly from 'react-native-plotly';
+
+
+
+
+const trace1 = {
+ __id: 'up',
+ x: ['Trial 1', 'Trial 2', 'Trial 3'],
+ y: [3, 6, 4],
+ name: 'Control',
+ error_y: {
+ type: 'data',
+ array: [1, 0.5, 1.5],
+ visible: true
+ },
+ type: 'bar'
+ };
+
+ const trace2 = {
+ __id: 'down',
+ x: ['Trial 1', 'Trial 2', 'Trial 3'],
+ y: [4, 7, 3],
+ name: 'Experimental',
+ error_y: {
+ type: 'data',
+ array: [0.5, 1, 2],
+ visible: true
+ },
+ type: 'bar'
+ };
+
+const boxPlot = ({navigation}) => {
+ const [resetKey, setResetKey] = useState(0);
+ const [loading, setLoading] = useState(true);
+
+ function reset() {
+ setLoading(true);
+ setResetKey(resetKey + 1);
+ }
+
+ const update = (_, { data, layout, config }, plotly) => {
+ plotly.react(data, layout, config);
+ };
+
+ return (
+
+
+
+
+ {loading ? 'Loading' : 'Finished Loading'}
+
+
+
+
+
+
+
+
+
+ );
+ };
+
+ const styles = StyleSheet.create({
+ buttonRow: {
+ flexDirection: 'row',
+ },
+ loadingRow: {
+ flexDirection: 'row',
+ },
+ chartRow: {
+ flex: 1,
+ width: '100%',
+ },
+ container: {
+ paddingTop: 30,
+ width: '100%',
+ height: '100%',
+ backgroundColor: '#fff',
+ alignItems: 'center',
+ justifyContent: 'center',
+ },
+ });
+
+export default boxPlot;
\ No newline at end of file
diff --git a/screens/DetailsScreen.js b/screens/DetailsScreen.js
index 423c650..6894d3b 100644
--- a/screens/DetailsScreen.js
+++ b/screens/DetailsScreen.js
@@ -1,5 +1,6 @@
import React from 'react';
-import { View, Text, Button, StyleSheet, StatusBar } from 'react-native';
+import { View, Text, Button, StyleSheet, StatusBar, Alert } from 'react-native';
+import { TouchableOpacity } from 'react-native-gesture-handler';
import SettingsList from 'react-native-settings-list';
@@ -10,11 +11,23 @@ const DetailsScreen = ({navigation}) => {
-
-
-
-
-
+
+ navigation.navigate('linearRegression')}
+ title='Linear Regression '/>
+
+ navigation.navigate('SymmetricErrorBars')}
+ title='Symmetric Error Bars'/>
+ navigation.navigate('BoxPlot')}
+ title='Box Plot'/>
+ navigation.navigate('logisticRegression')}
+ title='Logistic Regression'/>
+
diff --git a/screens/MonitorScreen.js b/screens/MonitorScreen.js
index cac9fdd..da9a6ab 100644
--- a/screens/MonitorScreen.js
+++ b/screens/MonitorScreen.js
@@ -1,8 +1,93 @@
-import React from 'react';
-import { View, Text, Button, StyleSheet, StatusBar } from 'react-native';
+import React, { PureComponent } from 'react';
+import { Alert, AppRegistry, StyleSheet, Text, TouchableOpacity, View } from 'react-native';
+import { RNCamera } from 'react-native-camera';
+
+
+const PendingView = () => (
+
+ Waiting
+
+);
+
+class MonitorScreen extends PureComponent {
+ render() {
+ return (
+
+
+ {({ camera, status }) => {
+ if (status !== 'READY') return ;
+ return (
+
+ Alert.alert('Camera Error','Please Point at Hydroponics System or install external camera\n \n *still in Expiramental Phase')} style={styles.capture}>
+ Scan System
+
+
+ );
+ }}
+
+
+ );
+ }
+
+ takePicture = async function(camera) {
+ const options = { quality: 0.5, base64: true };
+ const data = await camera.takePictureAsync(options);
+ // eslint-disable-next-line
+ console.log(data.uri);
+ };
+}
+
+const styles = StyleSheet.create({
+ container: {
+ flex: 1,
+ flexDirection: 'column',
+ backgroundColor: 'black',
+ },
+ preview: {
+ flex: 1,
+ justifyContent: 'flex-end',
+ alignItems: 'center',
+ },
+ capture: {
+ flex: 0,
+ backgroundColor: '#fff',
+ borderRadius: 5,
+ padding: 15,
+ paddingHorizontal: 20,
+ alignSelf: 'center',
+ margin: 20,
+ },
+});
+{/*
const MonitorScreen = ({navigation}) => {
+ render() {
return (
+
+
+
+
+
+
+
THIS PAGE IS UNDER DEVELOPMENT
{
onPress={() => navigation.navigate('Details')}
/>
-
+ }
);
};
+};
+
+
+*/}
export default MonitorScreen;
\ No newline at end of file
diff --git a/screens/linearRegression.js b/screens/linearRegression.js
new file mode 100644
index 0000000..b8cad13
--- /dev/null
+++ b/screens/linearRegression.js
@@ -0,0 +1,88 @@
+import React, { useState } from 'react';
+import { View, Text, Button, StyleSheet, StatusBar } from 'react-native';
+import Plotly from 'react-native-plotly';
+
+
+const upTrace = {
+ __id: 'up',
+ x: [1, 2, 3, 4],
+ y: [12, 9, 15, 12],
+ mode: 'lines+markers',
+ type: 'scatter'
+ };
+
+ const downTrace = {
+ __id: 'down',
+ x: [1, 2, 3, 4, 5],
+ y: [8, 4, 3, 2, 1],
+ type: 'scatter',
+ };
+
+const linearRegression = ({navigation}) => {
+ const [trace, setTrace] = useState(upTrace);
+ const [resetKey, setResetKey] = useState(0);
+ const [loading, setLoading] = useState(true);
+ function swapData() {
+ if (trace.__id === 'up') {
+ setTrace(downTrace);
+ } else {
+ setTrace(upTrace);
+ }
+ }
+
+ const update = (_, { data, layout, config }, plotly) => {
+ plotly.react(data, layout, config);
+ };
+
+ function reset() {
+ setLoading(true);
+ setResetKey(resetKey + 1);
+ }
+ return (
+
+
+
+
+
+ {loading ? 'Loading' : 'Finished Loading'}
+
+
+ setLoading(false)}
+ debug
+ key={resetKey}
+ />
+
+
+
+
+
+
+ );
+ };
+
+ const styles = StyleSheet.create({
+ buttonRow: {
+ flexDirection: 'row',
+ },
+ loadingRow: {
+ flexDirection: 'row',
+ },
+ chartRow: {
+ flex: 1,
+ width: '100%',
+ },
+ container: {
+ paddingTop: 30,
+ width: '100%',
+ height: '100%',
+ backgroundColor: '#fff',
+ alignItems: 'center',
+ justifyContent: 'center',
+ },
+ });
+
+export default linearRegression;
\ No newline at end of file
diff --git a/screens/logisticRegression.js b/screens/logisticRegression.js
new file mode 100644
index 0000000..aa51e5c
--- /dev/null
+++ b/screens/logisticRegression.js
@@ -0,0 +1,94 @@
+import React, { useState } from 'react';
+import { View, Text, Button, StyleSheet, StatusBar } from 'react-native';
+import Plotly from 'react-native-plotly';
+
+
+const upTrace = {
+ __id: 'up',
+ x: [0, 1, 2, 3, 4, 5, 6, 7, 8],
+ y: [8, 7, 6, 5, 4, 3, 2, 1, 0],
+ type: 'scatter'
+ };
+
+ const downTrace = {
+ __id: 'down',
+ x: [0, 1, 2, 3, 4, 5, 6, 7, 8],
+ y: [0, 1, 2, 3, 4, 5, 6, 7, 8],
+ type: 'scatter'
+ };
+
+const logisticRegression = ({navigation}) => {
+ const [trace, setTrace] = useState(upTrace);
+ const [resetKey, setResetKey] = useState(0);
+ const [loading, setLoading] = useState(true);
+ function swapData() {
+ if (trace.__id === 'up') {
+ setTrace(downTrace);
+ } else {
+ setTrace(upTrace);
+ }
+ }
+
+ const update = (_, { data, layout, config }, plotly) => {
+ plotly.react(data, layout, config);
+ };
+
+ function reset() {
+ setLoading(true);
+ setResetKey(resetKey + 1);
+ }
+ return (
+
+
+
+
+
+ {loading ? 'Loading' : 'Finished Loading'}
+
+
+ setLoading(false)}
+ debug
+ key={resetKey}
+ />
+
+
+
+
+
+
+ );
+ };
+
+ const styles = StyleSheet.create({
+ buttonRow: {
+ flexDirection: 'row',
+ },
+ loadingRow: {
+ flexDirection: 'row',
+ },
+ chartRow: {
+ flex: 1,
+ width: '100%',
+ },
+ container: {
+ paddingTop: 30,
+ width: '100%',
+ height: '100%',
+ backgroundColor: '#fff',
+ alignItems: 'center',
+ justifyContent: 'center',
+ },
+ });
+
+export default logisticRegression;
\ No newline at end of file
diff --git a/screens/sErrorBars.js b/screens/sErrorBars.js
new file mode 100644
index 0000000..f9b1e65
--- /dev/null
+++ b/screens/sErrorBars.js
@@ -0,0 +1,96 @@
+import React, { useState } from 'react';
+import { View, Text, Button, StyleSheet, StatusBar } from 'react-native';
+import Plotly from 'react-native-plotly';
+
+
+const upTrace = {
+ __id: 'up',
+ x: [0, 1, 2],
+ y: [6, 10, 2],
+ error_y: {
+ type: 'data',
+ array: [1, 2, 3],
+ visible: true
+ },
+ type: 'scatter'
+ };
+
+ const downTrace = {
+ __id: 'down',
+ x: [1, 2, 3, 4],
+ y: [2, 1, 3, 4],
+ error_x: {
+ type: 'percent',
+ value: 10
+ },
+ type: 'scatter'
+ };
+
+const SER = ({navigation}) => {
+ const [trace, setTrace] = useState(upTrace);
+ const [resetKey, setResetKey] = useState(0);
+ const [loading, setLoading] = useState(true);
+ function swapData() {
+ if (trace.__id === 'up') {
+ setTrace(downTrace);
+ } else {
+ setTrace(upTrace);
+ }
+ }
+
+ const update = (_, { data, layout, config }, plotly) => {
+ plotly.react(data, layout, config);
+ };
+
+ function reset() {
+ setLoading(true);
+ setResetKey(resetKey + 1);
+ }
+ return (
+
+
+
+
+
+ {loading ? 'Loading' : 'Finished Loading'}
+
+
+ setLoading(false)}
+ debug
+ key={resetKey}
+ />
+
+
+
+
+
+
+ );
+ };
+
+ const styles = StyleSheet.create({
+ buttonRow: {
+ flexDirection: 'row',
+ },
+ loadingRow: {
+ flexDirection: 'row',
+ },
+ chartRow: {
+ flex: 1,
+ width: '100%',
+ },
+ container: {
+ paddingTop: 30,
+ width: '100%',
+ height: '100%',
+ backgroundColor: '#fff',
+ alignItems: 'center',
+ justifyContent: 'center',
+ },
+ });
+
+export default SER;
\ No newline at end of file
From 7c1d144072451ecdfc40e62600dbe4856584b9c4 Mon Sep 17 00:00:00 2001
From: Varun Sendilraj
Date: Sun, 25 Oct 2020 23:51:41 -0400
Subject: [PATCH 02/16] changes
---
App.js | 17 ++-
assets/github.png | Bin 0 -> 10579 bytes
assets/light.png | Bin 0 -> 18092 bytes
components/Icon.js | 3 +-
environment/config.js | 46 +++---
environment/db.js | 63 ++++----
package-lock.json | 14 ++
package.json | 2 +
screens/BoxPlot.js | 1 -
screens/DetailsScreen.js | 12 +-
screens/HomeScreen.js | 14 +-
screens/SensorScreen.js | 6 +-
screens/cdp.js | 145 ++++++++++++++++++
screens/hcp.js | 164 +++++++++++++++++++++
screens/humidity.js | 27 ++--
screens/linearRegression.js | 36 ++---
screens/loginScreen.js | 17 ---
screens/loginScreens/RegistrationScreen.js | 87 +++++++++++
screens/loginScreens/loginScreen.js | 56 +++++++
screens/loginScreens/styles.js | 58 ++++++++
screens/mapData.js | 8 +-
screens/o2.js | 6 +-
screens/onboarding.js | 12 +-
screens/ph.js | 30 ++--
screens/pointCoud.js | 133 +++++++++++++++++
screens/sErrorBars.js | 2 +-
screens/spc.js | 136 +++++++++++++++++
screens/waterTemperature.js | 29 ++--
28 files changed, 964 insertions(+), 160 deletions(-)
create mode 100644 assets/github.png
create mode 100644 assets/light.png
create mode 100644 screens/cdp.js
create mode 100644 screens/hcp.js
delete mode 100644 screens/loginScreen.js
create mode 100644 screens/loginScreens/RegistrationScreen.js
create mode 100644 screens/loginScreens/loginScreen.js
create mode 100644 screens/loginScreens/styles.js
create mode 100644 screens/pointCoud.js
create mode 100644 screens/spc.js
diff --git a/App.js b/App.js
index d4ff224..197388e 100644
--- a/App.js
+++ b/App.js
@@ -5,7 +5,7 @@
* @format
* @flow strict-local
*/
-
+import 'react-native-gesture-handler';
import React, { useState, useEffect } from 'react';
import { NavigationContainer, DarkTheme} from '@react-navigation/native';
//import { createStackNavigator } from '@react-navigation/stack';
@@ -14,8 +14,8 @@ import MainTabScreen from './screens/MainTabScreen';
import { DrawerContent } from './screens/DrawerContent';
import ProfileScreen from './screens/profile';
import onboarding from './screens/onboarding';
-import login from './screens/loginScreen';
-import LoginScreen from './screens/loginScreen';
+import login from './screens/loginScreens/loginScreen';
+import LoginScreen from './screens/loginScreens/loginScreen';
import AsyncStorage from '@react-native-async-storage/async-storage';
import HomeScreen from './screens/HomeScreen';
import Onboarding from 'react-native-onboarding-swiper';
@@ -23,7 +23,11 @@ import linearRegression from './screens/linearRegression';
import BoxPlot from './screens/BoxPlot';
import logisticRegression from './screens/logisticRegression';
import SER from './screens/sErrorBars';
-
+import hcp from './screens/hcp';
+import cdp from './screens/cdp';
+import spc from './screens/spc';
+import pointCloud from './screens/pointCoud';
+import rs from './screens/loginScreens/RegistrationScreen';
//
@@ -48,10 +52,15 @@ const App = () => {
+
+
+
+
+
diff --git a/assets/github.png b/assets/github.png
new file mode 100644
index 0000000000000000000000000000000000000000..c70c1d4d64e21f29920e317b00dafd57ab12dd23
GIT binary patch
literal 10579
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
literal 0
HcmV?d00001
diff --git a/assets/light.png b/assets/light.png
new file mode 100644
index 0000000000000000000000000000000000000000..46b1a8946474b98d1e19bde72a8c3bdac08210bd
GIT binary patch
literal 18092
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
);
@@ -59,6 +59,7 @@ const tempIcon = (
/>
);
+
export default class Icon extends PureComponent {
render() {
diff --git a/environment/config.js b/environment/config.js
index cc506d9..e9e2a4d 100644
--- a/environment/config.js
+++ b/environment/config.js
@@ -2,29 +2,29 @@ import firebase from 'firebase';
-
- // Your web app's Firebase configuration
- // For Firebase JS SDK v7.20.0 and later, measurementId is optional
- var firebaseConfig= {
- apiKey: "AIzaSyC8QpdR3EXSLip4o03td9G4BqX8KpRXz6Y",
- authDomain: "agroq-d66b7.firebaseapp.com",
- databaseURL: "https://agroq-d66b7.firebaseio.com",
- projectId: "agroq-d66b7",
- storageBucket: "agroq-d66b7.appspot.com",
- messagingSenderId: "582267081238",
- appId: "1:582267081238:web:52d0e2abc5c73ebe8d1b37",
- measurementId: "G-D0ZH6Z9PSF"
- };
- // var serviceAccount = require("./firebase_key.json");
-
-
- // Initialize Firebase
-
-
-var app = firebase.initializeApp(firebaseConfig);
-
-export default firebase;
+
+// // Your web app's Firebase configuration
+// // For Firebase JS SDK v7.20.0 and later, measurementId is optional
+// var firebaseConfig= {
+// apiKey: "AIzaSyC8QpdR3EXSLip4o03td9G4BqX8KpRXz6Y",
+// authDomain: "agroq-d66b7.firebaseapp.com",
+// databaseURL: "https://agroq-d66b7.firebaseio.com",
+// projectId: "agroq-d66b7",
+// storageBucket: "agroq-d66b7.appspot.com",
+// messagingSenderId: "582267081238",
+// appId: "1:582267081238:web:52d0e2abc5c73ebe8d1b37",
+// measurementId: "G-D0ZH6Z9PSF"
+// };
+// // var serviceAccount = require("./firebase_key.json");
+
+
+// // Initialize Firebase
+
+
+// var app = firebase.initializeApp(firebaseConfig);
+
+// export default firebase;
// Get a reference to the database service
-
+
diff --git a/environment/db.js b/environment/db.js
index d0d25a3..5e0f1ac 100644
--- a/environment/db.js
+++ b/environment/db.js
@@ -1,35 +1,46 @@
"use strict";
-var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
- return new (P || (P = Promise))(function (resolve, reject) {
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
- step((generator = generator.apply(thisArg, _arguments || [])).next());
- });
-};
-var __importDefault = (this && this.__importDefault) || function (mod) {
- return (mod && mod.__esModule) ? mod : { "default": mod };
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.DBInteraction = exports.iotData = void 0;
-const firebase_config_1 = __importDefault(require("./config"));
-class iotData {
-}
-exports.iotData = iotData;
+import firebase from 'firebase';
+import "firebase/firestore";
+
+ // Your web app's Firebase configuration
+ // For Firebase JS SDK v7.20.0 and later, measurementId is optional
+ var firebaseConfig= {
+ apiKey: "AIzaSyC8QpdR3EXSLip4o03td9G4BqX8KpRXz6Y",
+ authDomain: "agroq-d66b7.firebaseapp.com",
+ databaseURL: "https://agroq-d66b7.firebaseio.com",
+ projectId: "agroq-d66b7",
+ storageBucket: "agroq-d66b7.appspot.com",
+ messagingSenderId: "582267081238",
+ appId: "1:582267081238:web:52d0e2abc5c73ebe8d1b37",
+ measurementId: "G-D0ZH6Z9PSF"
+ };
+ // var serviceAccount = require("./firebase_key.json");
+
+
+ // Initialize Firebase
+
+
+var fb = firebase.initializeApp(firebaseConfig);
+
class DBInteraction {
- getCurrentData(systemName) {
- return __awaiter(this, void 0, void 0, function* () {
- var docRef = firebase_config_1.database().ref('hydroSystem/'+systemName).on('value',snapshp=>{
- console.log(snapshp.val());
- return snapshp.val();
- });
- });
+ async getCurrentData(systemName) {
+
+ // fb.firestore.setLogLevel('debug');
+
+ var coll =fb.firestore().collection('hydroSystem');
+ var ref = coll.doc('lambert');
+ var data= await ref.get();
+ var finalData = data.data();
+ return finalData;
+ // var docRef = firebase_config_1.default.collection('historySystem').doc(systemName);
+ // var docData = docRef.get();
+ // return docData.data();
+
}
getHistoricalData(systemName) {
return __awaiter(this, void 0, void 0, function* () {
// var docRef:firebasedb.Reference = db.ref("hydroSystem/lambert");
- var docRef = firebase_config_1.default.collection('historySystem').doc(systemName);
+ var docRef = fb.collection('historySystem').doc(systemName);
// Attach an asynchronous callback to read the data at our posts reference
var lst = yield docRef.listCollections();
let arData = [];
diff --git a/package-lock.json b/package-lock.json
index bc42538..ad2f302 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1860,6 +1860,11 @@
"superstruct": "^0.6.2"
}
},
+ "@react-native-firebase/firestore": {
+ "version": "7.8.7",
+ "resolved": "https://registry.npmjs.org/@react-native-firebase/firestore/-/firestore-7.8.7.tgz",
+ "integrity": "sha512-UuQHvzadFszs3cphDsUZ/t7XGo0wW48+SVVHe20HBz42bU6EiN7YgmdBTqwEI8P2go+0Uj9LLLDayhND7JSSyQ=="
+ },
"@react-navigation/core": {
"version": "5.12.4",
"resolved": "https://registry.npmjs.org/@react-navigation/core/-/core-5.12.4.tgz",
@@ -9390,6 +9395,15 @@
"resolved": "https://registry.npmjs.org/react-native-iphone-x-helper/-/react-native-iphone-x-helper-1.2.1.tgz",
"integrity": "sha512-/VbpIEp8tSNNHIvstuA3Swx610whci1Zpc9mqNkqn14DkMbw+ORviln2u0XyHG1kPvvwTNGZY6QpeFwxYaSdbQ=="
},
+ "react-native-keyboard-aware-scroll-view": {
+ "version": "0.9.3",
+ "resolved": "https://registry.npmjs.org/react-native-keyboard-aware-scroll-view/-/react-native-keyboard-aware-scroll-view-0.9.3.tgz",
+ "integrity": "sha512-EDyFp8wAJoKvi1T2pzoPRn8R0Inp3G+575jPAWEFTlXq26URMmk8760rzde2XLW+v/1+QwDyBg6d/5mz63/ZRA==",
+ "requires": {
+ "prop-types": "^15.6.2",
+ "react-native-iphone-x-helper": "^1.0.3"
+ }
+ },
"react-native-maps": {
"version": "0.27.1",
"resolved": "https://registry.npmjs.org/react-native-maps/-/react-native-maps-0.27.1.tgz",
diff --git a/package.json b/package.json
index 9117c8f..04a0290 100644
--- a/package.json
+++ b/package.json
@@ -15,6 +15,7 @@
"@react-native-community/netinfo": "^5.9.7",
"@react-native-community/segmented-control": "^2.1.2",
"@react-native-firebase/app": "^8.4.6",
+ "@react-native-firebase/firestore": "^7.8.7",
"@react-navigation/drawer": "^5.9.1",
"@react-navigation/material-bottom-tabs": "^5.2.17",
"@react-navigation/native": "^5.7.4",
@@ -26,6 +27,7 @@
"react-native-appearance": "^0.3.4",
"react-native-camera": "^3.40.0",
"react-native-gesture-handler": "^1.8.0",
+ "react-native-keyboard-aware-scroll-view": "^0.9.3",
"react-native-maps": "^0.27.1",
"react-native-onboarding-swiper": "^1.1.4",
"react-native-paper": "^4.2.0",
diff --git a/screens/BoxPlot.js b/screens/BoxPlot.js
index 1aedce6..0dda6e8 100644
--- a/screens/BoxPlot.js
+++ b/screens/BoxPlot.js
@@ -4,7 +4,6 @@ import Plotly from 'react-native-plotly';
-
const trace1 = {
__id: 'up',
x: ['Trial 1', 'Trial 2', 'Trial 3'],
diff --git a/screens/DetailsScreen.js b/screens/DetailsScreen.js
index 6894d3b..bb5a136 100644
--- a/screens/DetailsScreen.js
+++ b/screens/DetailsScreen.js
@@ -26,11 +26,13 @@ const DetailsScreen = ({navigation}) => {
onPress={() => navigation.navigate('logisticRegression')}
title='Logistic Regression'/>
-
-
-
+ onPress={() => navigation.navigate('2dHCP')}
+ title='2d Countour Plot '/>
+ navigation.navigate("cdp")}
+ title='Catagorical Dot Plot'/>
+ navigation.navigate("spc")} title='SPC Control Chart'/>
+ navigation.navigate("pointCloud")} title='Point Cloud'/>
diff --git a/screens/HomeScreen.js b/screens/HomeScreen.js
index 9597e67..e671ccc 100644
--- a/screens/HomeScreen.js
+++ b/screens/HomeScreen.js
@@ -110,7 +110,7 @@ const HomeScreen = ({navigation}) => {
Temp: {system.temp}
- Temp on track
+ Celcius
@@ -120,7 +120,7 @@ const HomeScreen = ({navigation}) => {
Humidity: 40
- Humidity on track
+ Percent
@@ -137,7 +137,8 @@ const HomeScreen = ({navigation}) => {
- O2: 30
+ Light: 10
+ Lumens
@@ -147,7 +148,8 @@ const HomeScreen = ({navigation}) => {
- Water Temp: 30
+ Water: 24
+ Celcius
@@ -167,7 +169,7 @@ const HomeScreen = ({navigation}) => {
Co2: 700
- Co2 on track
+ PPMs
@@ -177,7 +179,7 @@ const HomeScreen = ({navigation}) => {
PH: 4
- PH on Track
+ logarithm of H+
diff --git a/screens/SensorScreen.js b/screens/SensorScreen.js
index 7dd319b..fae4445 100644
--- a/screens/SensorScreen.js
+++ b/screens/SensorScreen.js
@@ -147,15 +147,15 @@ const SensorScreen = ({navigation}) => {
Outside Temp
- In Farenheit
+ In Celcius
navigation.navigate('O2 Stats')}>
- o2
- Dissolved Oxygen
+ Light Intensity
+ Lumens
diff --git a/screens/cdp.js b/screens/cdp.js
new file mode 100644
index 0000000..eda60a1
--- /dev/null
+++ b/screens/cdp.js
@@ -0,0 +1,145 @@
+import React, { useState } from 'react';
+import { View, Text, Button, StyleSheet, StatusBar } from 'react-native';
+import Plotly from 'react-native-plotly';
+
+var sensors = ['atmospheric temp', 'water temp', 'humidity', 'temperature', 'light intensity', 'ph',];
+
+var data1 = [40, 45.7, 52, 53.6, 54.1, 54.2, 54.5, 54.7, 55.1, 56.6];
+
+var data2 = [49.1, 42, 52.7, 84.3, 51.7, 61.1, 55.3, 64.2, 91.1, 58.9];
+
+
+
+const trace1 = {
+ __id: 'up',
+ type: 'scatter',
+ x: data1,
+ y: sensors,
+ mode: 'markers',
+ name: 'Optimal Sensor Values',
+ marker: {
+ color: 'rgba(156, 165, 196, 0.95)',
+ line: {
+ color: 'rgba(156, 165, 196, 1.0)',
+ width: 1,
+ },
+ symbol: 'circle',
+ size: 16
+ }
+ };
+
+ const trace2 = {
+ __id: 'down',
+ y: sensors,
+ mode: 'markers',
+ name: 'system sensor values',
+ marker: {
+ color: 'rgba(204, 204, 204, 0.95)',
+ line: {
+ color: 'rgba(217, 217, 217, 1.0)',
+ width: 1,
+ },
+ symbol: 'circle',
+ size: 16
+ }
+ };
+
+const cdp = ({navigation}) => {
+ const [resetKey, setResetKey] = useState(0);
+ const [loading, setLoading] = useState(true);
+
+ function reset() {
+ setLoading(true);
+ setResetKey(resetKey + 1);
+ }
+
+ const update = (_, { data, layout, config }, plotly) => {
+ plotly.react(data, layout, config);
+ };
+
+ return (
+
+
+
+
+ Scroll to see Whole Graph
+
+
+
+
+
+
+
+
+
+ );
+ };
+
+ const styles = StyleSheet.create({
+ buttonRow: {
+ flexDirection: 'row',
+ },
+ loadingRow: {
+ flexDirection: 'row',
+ },
+ chartRow: {
+ flex: 1,
+ width: '100%',
+ },
+ container: {
+ paddingTop: 30,
+ width: '100%',
+ height: '100%',
+ backgroundColor: '#fff',
+ alignItems: 'center',
+ justifyContent: 'center',
+ },
+ });
+
+export default cdp;
\ No newline at end of file
diff --git a/screens/hcp.js b/screens/hcp.js
new file mode 100644
index 0000000..9405f89
--- /dev/null
+++ b/screens/hcp.js
@@ -0,0 +1,164 @@
+import React, { useState } from 'react';
+import { View, Text, Button, StyleSheet, StatusBar } from 'react-native';
+import Plotly from 'react-native-plotly';
+
+function normal() {
+ var x = 0,
+ y = 0,
+ rds, c;
+ do {
+ x = Math.random() * 2 - 1;
+ y = Math.random() * 2 - 1;
+ rds = x * x + y * y;
+ } while (rds == 0 || rds > 1);
+ c = Math.sqrt(-2 * Math.log(rds) / rds); // Box-Muller transform
+ return x * c; // throw away extra sample y * c
+}
+
+var N = 2000,
+ a = -1,
+ b = 1.2;
+
+var step = (b - a) / (N - 1);
+var t = new Array(N), x = new Array(N), y = new Array(N);
+
+for(var i = 0; i < N; i++){
+ t[i] = a + step * i;
+ x[i] = (Math.pow(t[i], 3)) + (0.3 * normal() );
+ y[i] = (Math.pow(t[i], 6)) + (0.3 * normal() );
+}
+
+
+
+const trace1 = {
+ __id: 'up',
+ x: x,
+ y: y,
+ mode: 'markers',
+ name: 'points',
+ marker: {
+ color: 'rgb(102,0,0)',
+ size: 2,
+ opacity: 0.4
+ },
+ type: 'scatter'
+ };
+
+ const trace2 = {
+ __id: 'down',
+ x: x,
+ y: y,
+ name: 'density',
+ ncontours: 20,
+ colorscale: 'Hot',
+ reversescale: true,
+ showscale: false,
+ type: 'histogram2dcontour'
+ };
+ const trace3 = {
+ __id: 'down',
+ x: x,
+ name: 'x density',
+ marker: {color: 'rgb(102,0,0)'},
+ yaxis: 'y2',
+ type: 'histogram'
+ };
+ const trace4 = {
+ __id: 'down',
+ y: y,
+ name: 'y density',
+ marker: {color: 'rgb(102,0,0)'},
+ xaxis: 'x2',
+ type: 'histogram'
+ };
+
+const boxPlot = ({navigation}) => {
+ const [resetKey, setResetKey] = useState(0);
+ const [loading, setLoading] = useState(true);
+
+ function reset() {
+ setLoading(true);
+ setResetKey(resetKey + 1);
+ }
+
+ const update = (_, { data, layout, config }, plotly) => {
+ plotly.react(data, layout, config);
+ };
+
+ return (
+
+
+
+
+ {loading ? 'Loading' : 'Finished Loading'}
+
+
+
+
+
+
+
+
+
+ );
+ };
+
+ const styles = StyleSheet.create({
+ buttonRow: {
+ flexDirection: 'row',
+ },
+ loadingRow: {
+ flexDirection: 'row',
+ },
+ chartRow: {
+ flex: 1,
+ width: '100%',
+ },
+ container: {
+ paddingTop: 30,
+ width: '100%',
+ height: '100%',
+ backgroundColor: '#fff',
+ alignItems: 'center',
+ justifyContent: 'center',
+ },
+ });
+
+export default boxPlot;
\ No newline at end of file
diff --git a/screens/humidity.js b/screens/humidity.js
index c319978..000956a 100644
--- a/screens/humidity.js
+++ b/screens/humidity.js
@@ -35,7 +35,7 @@ class humidityScreen extends Component {
}
render () {
- const data = [3,2,2,1,3,3,3,2,3,2,2]
+ const data = [40,30,20,32,40,45,43,39,40,38]
const contentInset = { top: 20, bottom: 20 }
return (
@@ -69,37 +69,37 @@ class humidityScreen extends Component {
- 3:00pm 7/5/2020
+ 3:00pm 10/25/2020
- 6.0
+ 40
- 12:00 pm 9/8/2020
+ 2:00pm 10/25/2020
- 8.0
+ 42
- 3:00pm 7/5/2020
+ 1:00pm 10/25/2020
- 6.0
+ 41
- 12:00 pm 9/8/2020
+ 12:00pm 10/25/2020
- 8.0
+ 40
- 3:00pm 7/5/2020
+ 11:00am 10/25/2020
- 6.0
+ 38
- 12:00 pm 9/8/2020
+ 10:00am 10/25/2020
- 8.0
+ 35
+
diff --git a/screens/linearRegression.js b/screens/linearRegression.js
index b8cad13..ec1a185 100644
--- a/screens/linearRegression.js
+++ b/screens/linearRegression.js
@@ -3,32 +3,28 @@ import { View, Text, Button, StyleSheet, StatusBar } from 'react-native';
import Plotly from 'react-native-plotly';
-const upTrace = {
+const trace1 = {
__id: 'up',
x: [1, 2, 3, 4],
- y: [12, 9, 15, 12],
- mode: 'lines+markers',
- type: 'scatter'
+ y: [10, 15, 13, 17],
+ mode: 'markers',
+ name: 'Sensor-health'
+
};
- const downTrace = {
+ const trace2 = {
__id: 'down',
- x: [1, 2, 3, 4, 5],
- y: [8, 4, 3, 2, 1],
- type: 'scatter',
+ x: [1, 2, 3, 4],
+ y: [9, 13,17 ,21],
+ mode: 'lines',
+ name: 'Predicted'
};
const linearRegression = ({navigation}) => {
- const [trace, setTrace] = useState(upTrace);
+
const [resetKey, setResetKey] = useState(0);
const [loading, setLoading] = useState(true);
- function swapData() {
- if (trace.__id === 'up') {
- setTrace(downTrace);
- } else {
- setTrace(upTrace);
- }
- }
+
const update = (_, { data, layout, config }, plotly) => {
plotly.react(data, layout, config);
@@ -40,16 +36,14 @@ const linearRegression = ({navigation}) => {
}
return (
-
-
-
+
{loading ? 'Loading' : 'Finished Loading'}
setLoading(false)}
debug
diff --git a/screens/loginScreen.js b/screens/loginScreen.js
deleted file mode 100644
index 01e6e19..0000000
--- a/screens/loginScreen.js
+++ /dev/null
@@ -1,17 +0,0 @@
-import React from 'react';
-import { View, Text, Button, StyleSheet, StatusBar } from 'react-native';
-
-const LoginScreen = ({navigation}) => {
- return (
-
- THIS PAGE IS UNDER DEVELOPMENT
- navigation.navigate('Home')}
- />
-
-
- );
- };
-
-export default LoginScreen;
\ No newline at end of file
diff --git a/screens/loginScreens/RegistrationScreen.js b/screens/loginScreens/RegistrationScreen.js
new file mode 100644
index 0000000..d6e1780
--- /dev/null
+++ b/screens/loginScreens/RegistrationScreen.js
@@ -0,0 +1,87 @@
+import React, { useState } from 'react'
+import { Image, Text, TextInput, TouchableOpacity, View } from 'react-native'
+import { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view';
+import styles from './styles';
+
+export default function RegistrationScreen({navigation}) {
+ const [fullName, setFullName] = useState('')
+ const [email, setEmail] = useState('')
+ const [password, setPassword] = useState('')
+ const [confirmPassword, setConfirmPassword] = useState('')
+
+ const onFooterLinkPress = () => {
+ navigation.navigate('Login')
+ }
+
+ const onRegisterPress = () => {
+ }
+
+ return (
+
+
+
+ setFullName(text)}
+ value={fullName}
+ underlineColorAndroid="transparent"
+ autoCapitalize="none"
+ />
+ setSystem(text)}
+ value={password}
+ underlineColorAndroid="transparent"
+ autoCapitalize="none"
+ />
+ setEmail(text)}
+ value={email}
+ underlineColorAndroid="transparent"
+ autoCapitalize="none"
+ />
+ setPassword(text)}
+ value={password}
+ underlineColorAndroid="transparent"
+ autoCapitalize="none"
+ />
+ setConfirmPassword(text)}
+ value={confirmPassword}
+ underlineColorAndroid="transparent"
+ autoCapitalize="none"
+ />
+ onRegisterPress()}>
+ Create account
+
+
+ Already got an account? Log in
+
+
+
+ )
+}
\ No newline at end of file
diff --git a/screens/loginScreens/loginScreen.js b/screens/loginScreens/loginScreen.js
new file mode 100644
index 0000000..2e28dc8
--- /dev/null
+++ b/screens/loginScreens/loginScreen.js
@@ -0,0 +1,56 @@
+import React, { useState } from 'react'
+import { Image, Text, TextInput, TouchableOpacity, View } from 'react-native'
+import { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view';
+import styles from './styles';
+
+export default function LoginScreen({navigation}) {
+ const [email, setEmail] = useState('')
+ const [password, setPassword] = useState('')
+
+ const onFooterLinkPress = () => {
+ navigation.navigate('Register')
+ }
+
+ const onLoginPress = () => {
+ }
+
+ return (
+
+
+
+ setEmail(text)}
+ value={email}
+ underlineColorAndroid="transparent"
+ autoCapitalize="none"
+ />
+ setPassword(text)}
+ value={password}
+ underlineColorAndroid="transparent"
+ autoCapitalize="none"
+ />
+ navigation.navigate('Home')}>
+ Log in
+
+
+ Don't have an account? Sign up
+
+
+
+ )
+}
\ No newline at end of file
diff --git a/screens/loginScreens/styles.js b/screens/loginScreens/styles.js
new file mode 100644
index 0000000..ac610cb
--- /dev/null
+++ b/screens/loginScreens/styles.js
@@ -0,0 +1,58 @@
+import { StyleSheet } from 'react-native';
+
+export default StyleSheet.create({
+ container: {
+ flex: 1,
+ alignItems: 'center'
+ },
+ title: {
+
+ },
+ logo: {
+ flex: 1,
+ height: 120,
+ width: 90,
+ alignSelf: "center",
+ margin: 30
+ },
+ input: {
+ height: 48,
+ borderRadius: 5,
+ overflow: 'hidden',
+ backgroundColor: 'white',
+ marginTop: 10,
+ marginBottom: 10,
+ marginLeft: 30,
+ marginRight: 30,
+ paddingLeft: 16
+ },
+ button: {
+ backgroundColor: '#788eec',
+ marginLeft: 30,
+ marginRight: 30,
+ marginTop: 20,
+ height: 48,
+ borderRadius: 5,
+ alignItems: "center",
+ justifyContent: 'center'
+ },
+ buttonTitle: {
+ color: 'white',
+ fontSize: 16,
+ fontWeight: "bold"
+ },
+ footerView: {
+ flex: 1,
+ alignItems: "center",
+ marginTop: 20
+ },
+ footerText: {
+ fontSize: 16,
+ color: '#2e2e2d'
+ },
+ footerLink: {
+ color: "#788eec",
+ fontWeight: "bold",
+ fontSize: 16
+ }
+})
\ No newline at end of file
diff --git a/screens/mapData.js b/screens/mapData.js
index 4b6d46b..5781a54 100644
--- a/screens/mapData.js
+++ b/screens/mapData.js
@@ -14,7 +14,7 @@ export const markers = [
latitude: 22.6293867,
longitude: 88.4354486,
},
- title: "Test1",
+ title: "Location 1",
description: "this is a random description that goes here",
image: Images[0].image,
@@ -25,7 +25,7 @@ export const markers = [
latitude: 22.6345648,
longitude: 88.4377279,
},
- title: "Test2",
+ title: "Location 2",
description: "this is a random description that goes here",
image: Images[1].image,
@@ -36,7 +36,7 @@ export const markers = [
latitude: 22.6281662,
longitude: 88.4410113,
},
- title: "Test3",
+ title: "Location 3",
description: "this is a random description that goes here",
image: Images[2].image,
@@ -47,7 +47,7 @@ export const markers = [
latitude: 22.6292757,
longitude: 88.444781,
},
- title: "Test4",
+ title: "Location 4",
description: "this is a random description that goes here",
image: Images[3].image,
diff --git a/screens/o2.js b/screens/o2.js
index 9e3ff42..fdd1a50 100644
--- a/screens/o2.js
+++ b/screens/o2.js
@@ -64,7 +64,7 @@ class O2Screen extends Component {
Reading Date/Time
- Humidity
+ Light
@@ -128,13 +128,13 @@ class O2Screen extends Component {
- Humidity
+ Lumens
diff --git a/screens/onboarding.js b/screens/onboarding.js
index 8e85eea..8512f0a 100644
--- a/screens/onboarding.js
+++ b/screens/onboarding.js
@@ -38,14 +38,20 @@ const OnboardingScreen = ({navigation}) => {
{
backgroundColor: '#F4D4A4',
image: ,
- title: 'Helpful',
- subtitle: 'Agro-Q aims to revolutionize hydroponics',
+ title: 'Goal',
+ subtitle: 'Agro-Q aims to revolutionize hydroponics and make maintaining hydroponic systems easier than ever. This is done through the use of sensors, microcontrollers, and cloud databases.',
},
{
backgroundColor: '#C8CDCF',
image: ,
title: 'Setup',
- subtitle: 'Follow instructions in the agroQ app',
+ subtitle: 'Before starting make sure to set up and connect the hardware to this app. For first time set up please follow the instructions on our supplemental AgroSense app. ',
+ },
+ {
+ backgroundColor: '#E7E7EB',
+ image: ,
+ title: 'Setup',
+ subtitle: 'For any help or concerns contact us on out github repository',
},
]}
diff --git a/screens/ph.js b/screens/ph.js
index 3e80b3b..f89c8ea 100644
--- a/screens/ph.js
+++ b/screens/ph.js
@@ -35,7 +35,7 @@ class PhScreen extends Component {
}
render () {
- const data = [3,2,2,1,3,3,3,2,3,2,2]
+ const data = [5.0,4.5,4.0,4.0,4.1,5.0]
const contentInset = { top: 20, bottom: 20 }
return (
@@ -64,42 +64,42 @@ class PhScreen extends Component {
Reading Date/Time
- Humidity
+ PH
- 3:00pm 7/5/2020
+ 3:00pm 10/25/2020
- 6.0
+ 5.0
- 12:00 pm 9/8/2020
+ 2:00pm 10/25/2020
- 8.0
+ 4.9
- 3:00pm 7/5/2020
+ 1:00pm 10/25/2020
- 6.0
+ 4.8
- 12:00 pm 9/8/2020
+ 12:00pm 10/25/2020
- 8.0
+ 4.8
- 3:00pm 7/5/2020
+ 11:00am 10/25/2020
- 6.0
+ 4.8
- 12:00 pm 9/8/2020
+ 10:00am 10/25/2020
- 8.0
+ 4.9
- Humidity
+ PH
diff --git a/screens/pointCoud.js b/screens/pointCoud.js
new file mode 100644
index 0000000..6571348
--- /dev/null
+++ b/screens/pointCoud.js
@@ -0,0 +1,133 @@
+import React, { useState } from 'react';
+import { View, Text, Button, StyleSheet, StatusBar } from 'react-native';
+import Plotly from 'react-native-plotly';
+
+
+
+const trace1 = {
+ __id: 'up',
+ type: "pointcloud",
+ mode: "markers",
+ marker: {
+ sizemin: 0.5,
+ sizemax: 100,
+ arearatio: 0,
+ color: "rgba(255, 0, 0, 0.6)"
+ },
+ x: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
+ y: [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
+ };
+
+ const trace2 = {
+ __id: 'down',
+ type: "pointcloud",
+ mode: "markers",
+ marker: {
+ sizemin: 0.5,
+ sizemax: 100,
+ arearatio: 0,
+ color: "rgba(0, 0, 255, 0.9)",
+ opacity: 0.8,
+ blend: true
+ },
+ opacity: 0.7,
+ x: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
+ y: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+ };
+ const trace3 = {
+ __id: 'down',
+ type: "pointcloud",
+ mode: "markers",
+ marker: {
+ sizemin: 0.5,
+ sizemax: 100,
+ border: {
+ color: "rgb(0, 0, 0)",
+ arearatio: 0.7071
+ },
+ color: "green",
+ opacity: 0.8,
+ blend: true
+ },
+ opacity: 0.7,
+ x: [3, 4.5, 6],
+ y: [9, 9, 9]
+ };
+const pointcloud = ({navigation}) => {
+ const [resetKey, setResetKey] = useState(0);
+ const [loading, setLoading] = useState(true);
+
+ function reset() {
+ setLoading(true);
+ setResetKey(resetKey + 1);
+ }
+
+ const update = (_, { data, layout, config }, plotly) => {
+ plotly.react(data, layout, config);
+ };
+
+ return (
+
+
+
+
+ {loading ? 'Loading' : 'Finished Loading'}
+
+
+
+
+
+
+
+
+
+ );
+ };
+
+ const styles = StyleSheet.create({
+ buttonRow: {
+ flexDirection: 'row',
+ },
+ loadingRow: {
+ flexDirection: 'row',
+ },
+ chartRow: {
+ flex: 1,
+ width: '100%',
+ },
+ container: {
+ paddingTop: 30,
+ width: '100%',
+ height: '100%',
+ backgroundColor: '#fff',
+ alignItems: 'center',
+ justifyContent: 'center',
+ },
+ });
+
+export default pointcloud;
\ No newline at end of file
diff --git a/screens/sErrorBars.js b/screens/sErrorBars.js
index f9b1e65..3c1ab4f 100644
--- a/screens/sErrorBars.js
+++ b/screens/sErrorBars.js
@@ -57,7 +57,7 @@ const SER = ({navigation}) => {
setLoading(false)}
debug
diff --git a/screens/spc.js b/screens/spc.js
new file mode 100644
index 0000000..2e7c811
--- /dev/null
+++ b/screens/spc.js
@@ -0,0 +1,136 @@
+import React, { useState } from 'react';
+import { View, Text, Button, StyleSheet, StatusBar } from 'react-native';
+import Plotly from 'react-native-plotly';
+
+var Data = {
+ type: 'scatter',
+ x: [1,2,3,4,5,6,7,8,9],
+ y: [4,2,-1,4,-5,-7,0,3,8],
+ mode: 'lines+markers',
+ name: 'Data',
+ showlegend: true,
+ hoverinfo: 'all',
+ line: {
+ color: 'blue',
+ width: 2
+ },
+ marker: {
+ color: 'blue',
+ size: 8,
+ symbol: 'circle'
+ }
+}
+
+var Viol = {
+ type: 'scatter',
+ x: [6,9],
+ y: [-7,8],
+ mode: 'markers',
+ name: 'Violation',
+ showlegend: true,
+ marker: {
+ color: 'rgb(255,65,54)',
+ line: {width: 3},
+ opacity: 0.5,
+ size: 12,
+ symbol: 'circle-open'
+ }
+}
+
+var CL = {
+ type: 'scatter',
+ x: [0.5, 10, null, 0.5, 10],
+ y: [-5, -5, null, 5, 5],
+ mode: 'lines',
+ name: 'limits',
+ showlegend: true,
+ line: {
+ color: 'red',
+ width: 2,
+ dash: 'dash'
+ }
+}
+
+var Centre = {
+ type: 'scatter',
+ x: [0.5, 10],
+ y: [0, 0],
+ mode: 'lines',
+ name: 'baseline',
+ showlegend: true,
+ line: {
+ color: 'grey',
+ width: 2
+ }
+}
+
+
+const spc = ({navigation}) => {
+ const [resetKey, setResetKey] = useState(0);
+ const [loading, setLoading] = useState(true);
+
+ function reset() {
+ setLoading(true);
+ setResetKey(resetKey + 1);
+ }
+
+ const update = (_, { data, layout, config }, plotly) => {
+ plotly.react(data, layout, config);
+ };
+
+ return (
+
+
+
+
+ {loading ? 'Loading' : 'Finished Loading'}
+
+
+
+
+
+
+
+
+
+ );
+ };
+
+ const styles = StyleSheet.create({
+ buttonRow: {
+ flexDirection: 'row',
+ },
+ loadingRow: {
+ flexDirection: 'row',
+ },
+ chartRow: {
+ flex: 1,
+ width: '100%',
+ },
+ container: {
+ paddingTop: 30,
+ width: '100%',
+ height: '100%',
+ backgroundColor: '#fff',
+ alignItems: 'center',
+ justifyContent: 'center',
+ },
+ });
+
+export default spc;
\ No newline at end of file
diff --git a/screens/waterTemperature.js b/screens/waterTemperature.js
index 0eccac5..537be61 100644
--- a/screens/waterTemperature.js
+++ b/screens/waterTemperature.js
@@ -35,7 +35,7 @@ class waterTempScreen extends Component {
}
render () {
- const data = [3,2,2,1,3,3,3,2,3,2,2]
+ const data = [18,18,19,18,20,22,23,24]
const contentInset = { top: 20, bottom: 20 }
return (
@@ -69,37 +69,37 @@ class waterTempScreen extends Component {
- 3:00pm 7/5/2020
+ 3:00pm 10/25/2020
- 6.0
+ 24
- 12:00 pm 9/8/2020
+ 2:00pm 10/25/2020
- 8.0
+ 24
- 3:00pm 7/5/2020
+ 1:00pm 10/25/2020
- 6.0
+ 23
- 12:00 pm 9/8/2020
+ 12:00pm 10/25/2020
- 8.0
+ 23
- 3:00pm 7/5/2020
+ 11:00am 10/25/2020
- 6.0
+ 23
- 12:00 pm 9/8/2020
+ 10:00am 10/25/2020
- 8.0
+ 22
+
@@ -134,7 +135,7 @@ class waterTempScreen extends Component {
- Humidity
+ Water Temp
From 62ab2d1d114f72618b59a2e6a179016ecb79f498 Mon Sep 17 00:00:00 2001
From: Varun Sendilraj
Date: Mon, 26 Oct 2020 23:09:55 -0400
Subject: [PATCH 03/16] dataviewapp
---
environment/config.js | 2 +-
environment/db.js | 13 +-
package-lock.json | 684 +--------------------
package.json | 6 +-
screens/HomeScreen.js | 55 +-
screens/MainTabScreen.js | 2 +
screens/MapScreen.js | 5 +-
screens/humidity.js | 1 +
screens/loginScreens/RegistrationScreen.js | 10 -
screens/mapData.js | 11 +
screens/temperature.js | 2 +-
11 files changed, 81 insertions(+), 710 deletions(-)
diff --git a/environment/config.js b/environment/config.js
index e9e2a4d..7ea7fee 100644
--- a/environment/config.js
+++ b/environment/config.js
@@ -1,4 +1,4 @@
-import firebase from 'firebase';
+// import firebase from 'firebase';
diff --git a/environment/db.js b/environment/db.js
index 5e0f1ac..0e11fae 100644
--- a/environment/db.js
+++ b/environment/db.js
@@ -1,6 +1,6 @@
"use strict";
-import firebase from 'firebase';
-import "firebase/firestore";
+import firebase from '@react-native-firebase/app';
+import firestore from '@react-native-firebase/firestore';
// Your web app's Firebase configuration
// For Firebase JS SDK v7.20.0 and later, measurementId is optional
@@ -18,10 +18,11 @@ import "firebase/firestore";
// Initialize Firebase
-
-
-var fb = firebase.initializeApp(firebaseConfig);
-
+var fb = null;
+if (! firebase.apps.length)
+ fb = firebase.initializeApp(firebaseConfig);
+else
+ fb = firebase.app();
class DBInteraction {
async getCurrentData(systemName) {
diff --git a/package-lock.json b/package-lock.json
index ad2f302..1f92428 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -974,315 +974,6 @@
}
}
},
- "@firebase/analytics": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.6.0.tgz",
- "integrity": "sha512-6qYEOPUVYrMhqvJ46Z5Uf1S4uULd6d7vGpMP5Qz+u8kIWuOQGcPdJKQap+Hla6Rq164or9gC2HRXuYXKlgWfpw==",
- "requires": {
- "@firebase/analytics-types": "0.4.0",
- "@firebase/component": "0.1.19",
- "@firebase/installations": "0.4.17",
- "@firebase/logger": "0.2.6",
- "@firebase/util": "0.3.2",
- "tslib": "^1.11.1"
- }
- },
- "@firebase/analytics-types": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/@firebase/analytics-types/-/analytics-types-0.4.0.tgz",
- "integrity": "sha512-Jj2xW+8+8XPfWGkv9HPv/uR+Qrmq37NPYT352wf7MvE9LrstpLVmFg3LqG6MCRr5miLAom5sen2gZ+iOhVDeRA=="
- },
- "@firebase/app": {
- "version": "0.6.11",
- "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.6.11.tgz",
- "integrity": "sha512-FH++PaoyTzfTAVuJ0gITNYEIcjT5G+D0671La27MU8Vvr6MTko+5YUZ4xS9QItyotSeRF4rMJ1KR7G8LSyySiA==",
- "requires": {
- "@firebase/app-types": "0.6.1",
- "@firebase/component": "0.1.19",
- "@firebase/logger": "0.2.6",
- "@firebase/util": "0.3.2",
- "dom-storage": "2.1.0",
- "tslib": "^1.11.1",
- "xmlhttprequest": "1.8.0"
- }
- },
- "@firebase/app-types": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.6.1.tgz",
- "integrity": "sha512-L/ZnJRAq7F++utfuoTKX4CLBG5YR7tFO3PLzG1/oXXKEezJ0kRL3CMRoueBEmTCzVb/6SIs2Qlaw++uDgi5Xyg=="
- },
- "@firebase/auth": {
- "version": "0.15.0",
- "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-0.15.0.tgz",
- "integrity": "sha512-IFuzhxS+HtOQl7+SZ/Mhaghy/zTU7CENsJFWbC16tv2wfLZbayKF5jYGdAU3VFLehgC8KjlcIWd10akc3XivfQ==",
- "requires": {
- "@firebase/auth-types": "0.10.1"
- }
- },
- "@firebase/auth-interop-types": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.1.5.tgz",
- "integrity": "sha512-88h74TMQ6wXChPA6h9Q3E1Jg6TkTHep2+k63OWg3s0ozyGVMeY+TTOti7PFPzq5RhszQPQOoCi59es4MaRvgCw=="
- },
- "@firebase/auth-types": {
- "version": "0.10.1",
- "resolved": "https://registry.npmjs.org/@firebase/auth-types/-/auth-types-0.10.1.tgz",
- "integrity": "sha512-/+gBHb1O9x/YlG7inXfxff/6X3BPZt4zgBv4kql6HEmdzNQCodIRlEYnI+/da+lN+dha7PjaFH7C7ewMmfV7rw=="
- },
- "@firebase/component": {
- "version": "0.1.19",
- "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.1.19.tgz",
- "integrity": "sha512-L0S3g8eqaerg8y0zox3oOHSTwn/FE8RbcRHiurnbESvDViZtP5S5WnhuAPd7FnFxa8ElWK0z1Tr3ikzWDv1xdQ==",
- "requires": {
- "@firebase/util": "0.3.2",
- "tslib": "^1.11.1"
- }
- },
- "@firebase/database": {
- "version": "0.6.13",
- "resolved": "https://registry.npmjs.org/@firebase/database/-/database-0.6.13.tgz",
- "integrity": "sha512-NommVkAPzU7CKd1gyehmi3lz0K78q0KOfiex7Nfy7MBMwknLm7oNqKovXSgQV1PCLvKXvvAplDSFhDhzIf9obA==",
- "requires": {
- "@firebase/auth-interop-types": "0.1.5",
- "@firebase/component": "0.1.19",
- "@firebase/database-types": "0.5.2",
- "@firebase/logger": "0.2.6",
- "@firebase/util": "0.3.2",
- "faye-websocket": "0.11.3",
- "tslib": "^1.11.1"
- }
- },
- "@firebase/database-types": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-0.5.2.tgz",
- "integrity": "sha512-ap2WQOS3LKmGuVFKUghFft7RxXTyZTDr0Xd8y2aqmWsbJVjgozi0huL/EUMgTjGFrATAjcf2A7aNs8AKKZ2a8g==",
- "requires": {
- "@firebase/app-types": "0.6.1"
- }
- },
- "@firebase/firestore": {
- "version": "1.18.0",
- "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-1.18.0.tgz",
- "integrity": "sha512-maMq4ltkrwjDRusR2nt0qS4wldHQMp+0IDSfXIjC+SNmjnWY/t/+Skn9U3Po+dB38xpz3i7nsKbs+8utpDnPSw==",
- "requires": {
- "@firebase/component": "0.1.19",
- "@firebase/firestore-types": "1.14.0",
- "@firebase/logger": "0.2.6",
- "@firebase/util": "0.3.2",
- "@firebase/webchannel-wrapper": "0.4.0",
- "@grpc/grpc-js": "^1.0.0",
- "@grpc/proto-loader": "^0.5.0",
- "node-fetch": "2.6.1",
- "tslib": "^1.11.1"
- }
- },
- "@firebase/firestore-types": {
- "version": "1.14.0",
- "resolved": "https://registry.npmjs.org/@firebase/firestore-types/-/firestore-types-1.14.0.tgz",
- "integrity": "sha512-WF8IBwHzZDhwyOgQnmB0pheVrLNP78A8PGxk1nxb/Nrgh1amo4/zYvFMGgSsTeaQK37xMYS/g7eS948te/dJxw=="
- },
- "@firebase/functions": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.5.1.tgz",
- "integrity": "sha512-yyjPZXXvzFPjkGRSqFVS5Hc2Y7Y48GyyMH+M3i7hLGe69r/59w6wzgXKqTiSYmyE1pxfjxU4a1YqBDHNkQkrYQ==",
- "requires": {
- "@firebase/component": "0.1.19",
- "@firebase/functions-types": "0.3.17",
- "@firebase/messaging-types": "0.5.0",
- "node-fetch": "2.6.1",
- "tslib": "^1.11.1"
- }
- },
- "@firebase/functions-types": {
- "version": "0.3.17",
- "resolved": "https://registry.npmjs.org/@firebase/functions-types/-/functions-types-0.3.17.tgz",
- "integrity": "sha512-DGR4i3VI55KnYk4IxrIw7+VG7Q3gA65azHnZxo98Il8IvYLr2UTBlSh72dTLlDf25NW51HqvJgYJDKvSaAeyHQ=="
- },
- "@firebase/installations": {
- "version": "0.4.17",
- "resolved": "https://registry.npmjs.org/@firebase/installations/-/installations-0.4.17.tgz",
- "integrity": "sha512-AE/TyzIpwkC4UayRJD419xTqZkKzxwk0FLht3Dci8WI2OEKHSwoZG9xv4hOBZebe+fDzoV2EzfatQY8c/6Avig==",
- "requires": {
- "@firebase/component": "0.1.19",
- "@firebase/installations-types": "0.3.4",
- "@firebase/util": "0.3.2",
- "idb": "3.0.2",
- "tslib": "^1.11.1"
- },
- "dependencies": {
- "idb": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/idb/-/idb-3.0.2.tgz",
- "integrity": "sha512-+FLa/0sTXqyux0o6C+i2lOR0VoS60LU/jzUo5xjfY6+7sEEgy4Gz1O7yFBXvjd7N0NyIGWIRg8DcQSLEG+VSPw=="
- }
- }
- },
- "@firebase/installations-types": {
- "version": "0.3.4",
- "resolved": "https://registry.npmjs.org/@firebase/installations-types/-/installations-types-0.3.4.tgz",
- "integrity": "sha512-RfePJFovmdIXb6rYwtngyxuEcWnOrzdZd9m7xAW0gRxDIjBT20n3BOhjpmgRWXo/DAxRmS7bRjWAyTHY9cqN7Q=="
- },
- "@firebase/logger": {
- "version": "0.2.6",
- "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.2.6.tgz",
- "integrity": "sha512-KIxcUvW/cRGWlzK9Vd2KB864HlUnCfdTH0taHE0sXW5Xl7+W68suaeau1oKNEqmc3l45azkd4NzXTCWZRZdXrw=="
- },
- "@firebase/messaging": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.7.1.tgz",
- "integrity": "sha512-iev/ST9v0xd/8YpGYrZtDcqdD9J6ZWzSuceRn8EKy5vIgQvW/rk2eTQc8axzvDpQ36ZfphMYuhW6XuNrR3Pd2Q==",
- "requires": {
- "@firebase/component": "0.1.19",
- "@firebase/installations": "0.4.17",
- "@firebase/messaging-types": "0.5.0",
- "@firebase/util": "0.3.2",
- "idb": "3.0.2",
- "tslib": "^1.11.1"
- },
- "dependencies": {
- "idb": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/idb/-/idb-3.0.2.tgz",
- "integrity": "sha512-+FLa/0sTXqyux0o6C+i2lOR0VoS60LU/jzUo5xjfY6+7sEEgy4Gz1O7yFBXvjd7N0NyIGWIRg8DcQSLEG+VSPw=="
- }
- }
- },
- "@firebase/messaging-types": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/@firebase/messaging-types/-/messaging-types-0.5.0.tgz",
- "integrity": "sha512-QaaBswrU6umJYb/ZYvjR5JDSslCGOH6D9P136PhabFAHLTR4TWjsaACvbBXuvwrfCXu10DtcjMxqfhdNIB1Xfg=="
- },
- "@firebase/performance": {
- "version": "0.4.2",
- "resolved": "https://registry.npmjs.org/@firebase/performance/-/performance-0.4.2.tgz",
- "integrity": "sha512-irHTCVWJ/sxJo0QHg+yQifBeVu8ZJPihiTqYzBUz/0AGc51YSt49FZwqSfknvCN2+OfHaazz/ARVBn87g7Ex8g==",
- "requires": {
- "@firebase/component": "0.1.19",
- "@firebase/installations": "0.4.17",
- "@firebase/logger": "0.2.6",
- "@firebase/performance-types": "0.0.13",
- "@firebase/util": "0.3.2",
- "tslib": "^1.11.1"
- }
- },
- "@firebase/performance-types": {
- "version": "0.0.13",
- "resolved": "https://registry.npmjs.org/@firebase/performance-types/-/performance-types-0.0.13.tgz",
- "integrity": "sha512-6fZfIGjQpwo9S5OzMpPyqgYAUZcFzZxHFqOyNtorDIgNXq33nlldTL/vtaUZA8iT9TT5cJlCrF/jthKU7X21EA=="
- },
- "@firebase/polyfill": {
- "version": "0.3.36",
- "resolved": "https://registry.npmjs.org/@firebase/polyfill/-/polyfill-0.3.36.tgz",
- "integrity": "sha512-zMM9oSJgY6cT2jx3Ce9LYqb0eIpDE52meIzd/oe/y70F+v9u1LDqk5kUF5mf16zovGBWMNFmgzlsh6Wj0OsFtg==",
- "requires": {
- "core-js": "3.6.5",
- "promise-polyfill": "8.1.3",
- "whatwg-fetch": "2.0.4"
- },
- "dependencies": {
- "core-js": {
- "version": "3.6.5",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz",
- "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA=="
- },
- "whatwg-fetch": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz",
- "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng=="
- }
- }
- },
- "@firebase/remote-config": {
- "version": "0.1.28",
- "resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.1.28.tgz",
- "integrity": "sha512-4zSdyxpt94jAnFhO8toNjG8oMKBD+xTuBIcK+Nw8BdQWeJhEamgXlupdBARUk1uf3AvYICngHH32+Si/dMVTbw==",
- "requires": {
- "@firebase/component": "0.1.19",
- "@firebase/installations": "0.4.17",
- "@firebase/logger": "0.2.6",
- "@firebase/remote-config-types": "0.1.9",
- "@firebase/util": "0.3.2",
- "tslib": "^1.11.1"
- }
- },
- "@firebase/remote-config-types": {
- "version": "0.1.9",
- "resolved": "https://registry.npmjs.org/@firebase/remote-config-types/-/remote-config-types-0.1.9.tgz",
- "integrity": "sha512-G96qnF3RYGbZsTRut7NBX0sxyczxt1uyCgXQuH/eAfUCngxjEGcZQnBdy6mvSdqdJh5mC31rWPO4v9/s7HwtzA=="
- },
- "@firebase/storage": {
- "version": "0.3.43",
- "resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.3.43.tgz",
- "integrity": "sha512-Jp54jcuyimLxPhZHFVAhNbQmgTu3Sda7vXjXrNpPEhlvvMSq4yuZBR6RrZxe/OrNVprLHh/6lTCjwjOVSo3bWA==",
- "requires": {
- "@firebase/component": "0.1.19",
- "@firebase/storage-types": "0.3.13",
- "@firebase/util": "0.3.2",
- "tslib": "^1.11.1"
- }
- },
- "@firebase/storage-types": {
- "version": "0.3.13",
- "resolved": "https://registry.npmjs.org/@firebase/storage-types/-/storage-types-0.3.13.tgz",
- "integrity": "sha512-pL7b8d5kMNCCL0w9hF7pr16POyKkb3imOW7w0qYrhBnbyJTdVxMWZhb0HxCFyQWC0w3EiIFFmxoz8NTFZDEFog=="
- },
- "@firebase/util": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/@firebase/util/-/util-0.3.2.tgz",
- "integrity": "sha512-Dqs00++c8rwKky6KCKLLY2T1qYO4Q+X5t+lF7DInXDNF4ae1Oau35bkD+OpJ9u7l1pEv7KHowP6CUKuySCOc8g==",
- "requires": {
- "tslib": "^1.11.1"
- }
- },
- "@firebase/webchannel-wrapper": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.4.0.tgz",
- "integrity": "sha512-8cUA/mg0S+BxIZ72TdZRsXKBP5n5uRcE3k29TZhZw6oIiHBt9JA7CTb/4pE1uKtE/q5NeTY2tBDcagoZ+1zjXQ=="
- },
- "@grpc/grpc-js": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.1.7.tgz",
- "integrity": "sha512-EuxMstI0u778dp0nk6Fe3gHXYPeV6FYsWOe0/QFwxv1NQ6bc5Wl/0Yxa4xl9uBlKElL6AIxuASmSfu7KEJhqiw==",
- "requires": {
- "@grpc/proto-loader": "^0.6.0-pre14",
- "@types/node": "^12.12.47",
- "google-auth-library": "^6.0.0",
- "semver": "^6.2.0"
- },
- "dependencies": {
- "@grpc/proto-loader": {
- "version": "0.6.0-pre9",
- "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.6.0-pre9.tgz",
- "integrity": "sha512-oM+LjpEjNzW5pNJjt4/hq1HYayNeQT+eGrOPABJnYHv7TyNPDNzkQ76rDYZF86X5swJOa4EujEMzQ9iiTdPgww==",
- "requires": {
- "@types/long": "^4.0.1",
- "lodash.camelcase": "^4.3.0",
- "long": "^4.0.0",
- "protobufjs": "^6.9.0",
- "yargs": "^15.3.1"
- }
- },
- "@types/node": {
- "version": "12.19.1",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-12.19.1.tgz",
- "integrity": "sha512-/xaVmBBjOGh55WCqumLAHXU9VhjGtmyTGqJzFBXRWZzByOXI5JAJNx9xPVGEsNizrNwcec92fQMj458MWfjN1A=="
- },
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
- }
- }
- },
- "@grpc/proto-loader": {
- "version": "0.5.5",
- "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.5.5.tgz",
- "integrity": "sha512-WwN9jVNdHRQoOBo9FDH7qU+mgfjPc8GygPYms3M+y3fbQLfnCe/Kv/E01t7JRgnrsOHH8euvSbed3mIalXhwqQ==",
- "requires": {
- "lodash.camelcase": "^4.3.0",
- "protobufjs": "^6.8.6"
- }
- },
"@hapi/address": {
"version": "2.1.4",
"resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz",
@@ -1581,60 +1272,6 @@
}
}
},
- "@protobufjs/aspromise": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz",
- "integrity": "sha1-m4sMxmPWaafY9vXQiToU00jzD78="
- },
- "@protobufjs/base64": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz",
- "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg=="
- },
- "@protobufjs/codegen": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz",
- "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg=="
- },
- "@protobufjs/eventemitter": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz",
- "integrity": "sha1-NVy8mLr61ZePntCV85diHx0Ga3A="
- },
- "@protobufjs/fetch": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz",
- "integrity": "sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=",
- "requires": {
- "@protobufjs/aspromise": "^1.1.1",
- "@protobufjs/inquire": "^1.1.0"
- }
- },
- "@protobufjs/float": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz",
- "integrity": "sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E="
- },
- "@protobufjs/inquire": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz",
- "integrity": "sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik="
- },
- "@protobufjs/path": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz",
- "integrity": "sha1-bMKyDFya1q0NzP0hynZz2Nf79o0="
- },
- "@protobufjs/pool": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz",
- "integrity": "sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q="
- },
- "@protobufjs/utf8": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz",
- "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA="
- },
"@react-native-async-storage/async-storage": {
"version": "1.13.0",
"resolved": "https://registry.npmjs.org/@react-native-async-storage/async-storage/-/async-storage-1.13.0.tgz",
@@ -1852,14 +1489,25 @@
"integrity": "sha512-2UEr+Dqk+VHcMaZPOcKSo0GqFZG91DjngeACy+DOB2gRvph/FGKjABV6HlQJqdhQeQs/4NgoycCjAH+Z8ilIVg=="
},
"@react-native-firebase/app": {
- "version": "8.4.6",
- "resolved": "https://registry.npmjs.org/@react-native-firebase/app/-/app-8.4.6.tgz",
- "integrity": "sha512-4eZR133QuScvGs4IQQd6qMvQ5E1mtydVTy3DtuBCeiIqtvN8ZxBYoSMgcUmYGS4VafbS2nPh85g4e3BlaIJ2XA==",
+ "version": "7.3.1",
+ "resolved": "https://registry.npmjs.org/@react-native-firebase/app/-/app-7.3.1.tgz",
+ "integrity": "sha512-pQM4YnPRl1PaXqdFEfJSSCB5ETM303Rwucy015K1YKANtcB4r5VlXYgVHOx7BesXMxOjkzYfXH8WLtnC8PD/Xw==",
"requires": {
+ "@react-native-firebase/app-types": "6.7.2",
"opencollective-postinstall": "^2.0.1",
"superstruct": "^0.6.2"
}
},
+ "@react-native-firebase/app-types": {
+ "version": "6.7.2",
+ "resolved": "https://registry.npmjs.org/@react-native-firebase/app-types/-/app-types-6.7.2.tgz",
+ "integrity": "sha512-pIwc6e0ZINw6PJqNVsAxzOVJUDg6au2TdulY+ZOYQ11SPDs5I2n9likoGrElPmJjajT4s9h87uz/6PWP2k9PxQ=="
+ },
+ "@react-native-firebase/auth": {
+ "version": "8.3.3",
+ "resolved": "https://registry.npmjs.org/@react-native-firebase/auth/-/auth-8.3.3.tgz",
+ "integrity": "sha512-EM73Q8VDh3n9rbdv9Z8nAoe9d+JfNvbU4iXlEBpmH7FZhCkDKQR9Q9isa4Q8vzhVCmyJTQbgi0sMCJIXbOFTug=="
+ },
"@react-native-firebase/firestore": {
"version": "7.8.7",
"resolved": "https://registry.npmjs.org/@react-native-firebase/firestore/-/firestore-7.8.7.tgz",
@@ -2037,11 +1685,6 @@
"integrity": "sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw==",
"dev": true
},
- "@types/long": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.1.tgz",
- "integrity": "sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w=="
- },
"@types/node": {
"version": "14.11.2",
"resolved": "https://registry.npmjs.org/@types/node/-/node-14.11.2.tgz",
@@ -2251,29 +1894,6 @@
"integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==",
"dev": true
},
- "agent-base": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
- "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
- "requires": {
- "debug": "4"
- },
- "dependencies": {
- "debug": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz",
- "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==",
- "requires": {
- "ms": "2.1.2"
- }
- },
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
- }
- }
- },
"ajv": {
"version": "6.12.5",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.5.tgz",
@@ -2585,11 +2205,6 @@
}
}
},
- "arrify": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz",
- "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug=="
- },
"asap": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
@@ -2846,11 +2461,6 @@
"resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz",
"integrity": "sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w=="
},
- "bignumber.js": {
- "version": "9.0.1",
- "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.1.tgz",
- "integrity": "sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA=="
- },
"bindings": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
@@ -2928,11 +2538,6 @@
"resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
"integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI="
},
- "buffer-equal-constant-time": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
- "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk="
- },
"buffer-from": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
@@ -3749,11 +3354,6 @@
}
}
},
- "dom-storage": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/dom-storage/-/dom-storage-2.1.0.tgz",
- "integrity": "sha512-g6RpyWXzl0RR6OTElHKBl7nwnK87GUyZMYC7JWsB/IA73vpqK2K6LT39x4VepLxlSsWBFrPVLnsSR5Jyty0+2Q=="
- },
"domelementtype": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz",
@@ -3795,14 +3395,6 @@
"safer-buffer": "^2.1.0"
}
},
- "ecdsa-sig-formatter": {
- "version": "1.0.11",
- "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
- "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
- "requires": {
- "safe-buffer": "^5.0.1"
- }
- },
"ee-first": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
@@ -4409,7 +4001,8 @@
"extend": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
- "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
+ "dev": true
},
"extend-shallow": {
"version": "3.0.2",
@@ -4514,19 +4107,6 @@
"integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
"dev": true
},
- "fast-text-encoding": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.3.tgz",
- "integrity": "sha512-dtm4QZH9nZtcDt8qJiOH9fcQd1NAgi+K1O2DbE6GG1PPCK/BWfOH3idCTRQ4ImXRUOyopDEgDEnVEE7Y/2Wrig=="
- },
- "faye-websocket": {
- "version": "0.11.3",
- "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz",
- "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==",
- "requires": {
- "websocket-driver": ">=0.5.1"
- }
- },
"fb-watchman": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz",
@@ -4736,27 +4316,6 @@
"path-exists": "^4.0.0"
}
},
- "firebase": {
- "version": "7.24.0",
- "resolved": "https://registry.npmjs.org/firebase/-/firebase-7.24.0.tgz",
- "integrity": "sha512-j6jIyGFFBlwWAmrlUg9HyQ/x+YpsPkc/TTkbTyeLwwAJrpAmmEHNPT6O9xtAnMV4g7d3RqLL/u9//aZlbY4rQA==",
- "requires": {
- "@firebase/analytics": "0.6.0",
- "@firebase/app": "0.6.11",
- "@firebase/app-types": "0.6.1",
- "@firebase/auth": "0.15.0",
- "@firebase/database": "0.6.13",
- "@firebase/firestore": "1.18.0",
- "@firebase/functions": "0.5.1",
- "@firebase/installations": "0.4.17",
- "@firebase/messaging": "0.7.1",
- "@firebase/performance": "0.4.2",
- "@firebase/polyfill": "0.3.36",
- "@firebase/remote-config": "0.1.28",
- "@firebase/storage": "0.3.43",
- "@firebase/util": "0.3.2"
- }
- },
"flat-cache": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz",
@@ -4861,34 +4420,6 @@
"integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
"dev": true
},
- "gaxios": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-3.2.0.tgz",
- "integrity": "sha512-+6WPeVzPvOshftpxJwRi2Ozez80tn/hdtOUag7+gajDHRJvAblKxTFSSMPtr2hmnLy7p0mvYz0rMXLBl8pSO7Q==",
- "requires": {
- "abort-controller": "^3.0.0",
- "extend": "^3.0.2",
- "https-proxy-agent": "^5.0.0",
- "is-stream": "^2.0.0",
- "node-fetch": "^2.3.0"
- },
- "dependencies": {
- "is-stream": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz",
- "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw=="
- }
- }
- },
- "gcp-metadata": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-4.2.0.tgz",
- "integrity": "sha512-vQZD57cQkqIA6YPGXM/zc+PIZfNRFdukWGsGZ5+LcJzesi5xp6Gn7a02wRJi4eXPyArNMIYpPET4QMxGqtlk6Q==",
- "requires": {
- "gaxios": "^3.0.0",
- "json-bigint": "^1.0.0"
- }
- },
"gensync": {
"version": "1.0.0-beta.1",
"resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz",
@@ -4960,45 +4491,6 @@
"resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
"integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA=="
},
- "google-auth-library": {
- "version": "6.1.2",
- "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-6.1.2.tgz",
- "integrity": "sha512-X9EUX8R+kIpsf55KdSPhFWF0RNyBGuBc1zeYc/5Sjuk65eIYqq91rINJVBD22pp+w/PuM2fasHiA6H2xYjxTIQ==",
- "requires": {
- "arrify": "^2.0.0",
- "base64-js": "^1.3.0",
- "ecdsa-sig-formatter": "^1.0.11",
- "fast-text-encoding": "^1.0.0",
- "gaxios": "^3.0.0",
- "gcp-metadata": "^4.2.0",
- "gtoken": "^5.0.4",
- "jws": "^4.0.0",
- "lru-cache": "^6.0.0"
- },
- "dependencies": {
- "lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- }
- }
- },
- "google-p12-pem": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-3.0.3.tgz",
- "integrity": "sha512-wS0ek4ZtFx/ACKYF3JhyGe5kzH7pgiQ7J5otlumqR9psmWMYc+U9cErKlCYVYHoUaidXHdZ2xbo34kB+S+24hA==",
- "requires": {
- "node-forge": "^0.10.0"
- }
- },
"graceful-fs": {
"version": "4.2.4",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz",
@@ -5011,24 +4503,6 @@
"dev": true,
"optional": true
},
- "gtoken": {
- "version": "5.0.4",
- "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-5.0.4.tgz",
- "integrity": "sha512-U9wnSp4GZ7ov6zRdPuRHG4TuqEWqRRgT1gfXGNArhzBUn9byrPeH8uTmBWU/ZiWJJvTEmkjhDIC3mqHWdVi3xQ==",
- "requires": {
- "gaxios": "^3.0.0",
- "google-p12-pem": "^3.0.3",
- "jws": "^4.0.0",
- "mime": "^2.2.0"
- },
- "dependencies": {
- "mime": {
- "version": "2.4.6",
- "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz",
- "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA=="
- }
- }
- },
"har-schema": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
@@ -5153,11 +4627,6 @@
"toidentifier": "1.0.0"
}
},
- "http-parser-js": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.2.tgz",
- "integrity": "sha512-opCO9ASqg5Wy2FNo7A0sxy71yGbbkJJXLdgMK04Tcypw9jr2MgWbyubb0+WdmDmGnFflO7fRbqbaihh/ENDlRQ=="
- },
"http-signature": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
@@ -5169,30 +4638,6 @@
"sshpk": "^1.7.0"
}
},
- "https-proxy-agent": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz",
- "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==",
- "requires": {
- "agent-base": "6",
- "debug": "4"
- },
- "dependencies": {
- "debug": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz",
- "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==",
- "requires": {
- "ms": "2.1.2"
- }
- },
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
- }
- }
- },
"human-signals": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz",
@@ -6391,14 +5836,6 @@
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
"integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA=="
},
- "json-bigint": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz",
- "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==",
- "requires": {
- "bignumber.js": "^9.0.0"
- }
- },
"json-parse-better-errors": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
@@ -6485,25 +5922,6 @@
"object.assign": "^4.1.0"
}
},
- "jwa": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz",
- "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==",
- "requires": {
- "buffer-equal-constant-time": "1.0.1",
- "ecdsa-sig-formatter": "1.0.11",
- "safe-buffer": "^5.0.1"
- }
- },
- "jws": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz",
- "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==",
- "requires": {
- "jwa": "^2.0.0",
- "safe-buffer": "^5.0.1"
- }
- },
"kind-of": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
@@ -6582,11 +6000,6 @@
"resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz",
"integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0="
},
- "lodash.camelcase": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
- "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY="
- },
"lodash.frompairs": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/lodash.frompairs/-/lodash.frompairs-4.0.1.tgz",
@@ -6699,11 +6112,6 @@
"yargs": "^15.1.0"
}
},
- "long": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
- "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="
- },
"loose-envify": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
@@ -8259,11 +7667,6 @@
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
"integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw=="
},
- "node-forge": {
- "version": "0.10.0",
- "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz",
- "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA=="
- },
"node-int64": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
@@ -8957,11 +8360,6 @@
"asap": "~2.0.6"
}
},
- "promise-polyfill": {
- "version": "8.1.3",
- "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.1.3.tgz",
- "integrity": "sha512-MG5r82wBzh7pSKDRa9y+vllNHz3e3d4CNj1PQE4BQYxLme0gKYYBm9YENq+UkEikyZ0XbiGWxYlVw3Rl9O/U8g=="
- },
"prompts": {
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/prompts/-/prompts-2.3.2.tgz",
@@ -8982,33 +8380,6 @@
"react-is": "^16.8.1"
}
},
- "protobufjs": {
- "version": "6.10.1",
- "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.10.1.tgz",
- "integrity": "sha512-pb8kTchL+1Ceg4lFd5XUpK8PdWacbvV5SK2ULH2ebrYtl4GjJmS24m6CKME67jzV53tbJxHlnNOSqQHbTsR9JQ==",
- "requires": {
- "@protobufjs/aspromise": "^1.1.2",
- "@protobufjs/base64": "^1.1.2",
- "@protobufjs/codegen": "^2.0.4",
- "@protobufjs/eventemitter": "^1.1.0",
- "@protobufjs/fetch": "^1.1.0",
- "@protobufjs/float": "^1.0.2",
- "@protobufjs/inquire": "^1.1.0",
- "@protobufjs/path": "^1.1.2",
- "@protobufjs/pool": "^1.1.0",
- "@protobufjs/utf8": "^1.1.0",
- "@types/long": "^4.0.1",
- "@types/node": "^13.7.0",
- "long": "^4.0.0"
- },
- "dependencies": {
- "@types/node": {
- "version": "13.13.28",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.28.tgz",
- "integrity": "sha512-EM/qFeRH8ZCD+TlsaIPULyyFm9vOhFIvgskY2JmHbEsWsOPgN+rtjSXrcHGgJpob4Nu17VfO95FKewr0XY7iOQ=="
- }
- }
- },
"pseudomap": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
@@ -11088,7 +10459,8 @@
"tslib": {
"version": "1.13.0",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz",
- "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q=="
+ "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==",
+ "dev": true
},
"tsutils": {
"version": "3.17.1",
@@ -11404,21 +10776,6 @@
"integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==",
"dev": true
},
- "websocket-driver": {
- "version": "0.7.4",
- "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz",
- "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==",
- "requires": {
- "http-parser-js": ">=0.5.1",
- "safe-buffer": ">=5.1.0",
- "websocket-extensions": ">=0.1.1"
- }
- },
- "websocket-extensions": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz",
- "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg=="
- },
"whatwg-encoding": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz",
@@ -11588,11 +10945,6 @@
"resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.31.tgz",
"integrity": "sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ=="
},
- "xmlhttprequest": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz",
- "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw="
- },
"xpipe": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/xpipe/-/xpipe-1.0.5.tgz",
diff --git a/package.json b/package.json
index 04a0290..3ba2ece 100644
--- a/package.json
+++ b/package.json
@@ -14,14 +14,14 @@
"@react-native-community/masked-view": "^0.1.10",
"@react-native-community/netinfo": "^5.9.7",
"@react-native-community/segmented-control": "^2.1.2",
- "@react-native-firebase/app": "^8.4.6",
- "@react-native-firebase/firestore": "^7.8.7",
+ "@react-native-firebase/app": "^7.2.0",
+ "@react-native-firebase/auth": "^8.0.4",
+ "@react-native-firebase/firestore": "^7.1.5",
"@react-navigation/drawer": "^5.9.1",
"@react-navigation/material-bottom-tabs": "^5.2.17",
"@react-navigation/native": "^5.7.4",
"@react-navigation/stack": "^5.9.1",
"amazon-cognito-identity-js": "^4.4.0",
- "firebase": "^7.24.0",
"react": "16.13.1",
"react-native": "0.63.2",
"react-native-appearance": "^0.3.4",
diff --git a/screens/HomeScreen.js b/screens/HomeScreen.js
index e671ccc..dcb4753 100644
--- a/screens/HomeScreen.js
+++ b/screens/HomeScreen.js
@@ -1,7 +1,7 @@
import React, { useState, useEffect } from "react";
-import { View, Text, Image,Button, StyleSheet, StatusBar, TouchableOpacity } from 'react-native';
+import { View, Text, Image,Button, StyleSheet, StatusBar, TouchableOpacity, FlatList } from 'react-native';
import Swiper from 'react-native-swiper';
-import firebase from 'firebase';
+import firebase from '@react-native-firebase/app';
import { firebaseApp } from '../environment/config';
import Ionicons from 'react-native-vector-icons/Ionicons';
import MaterialCommunityIcons from 'react-native-vector-icons/MaterialCommunityIcons';
@@ -20,30 +20,39 @@ import Icon from "../components/Icon";
import Card from "../components/Card";
-
-
+var firstData=null;
const HomeScreen = ({navigation}) => {
console.log("starting");
- const[system, setSystem]= useState({});
-
- useEffect(() => {
+ const[hsystem, setHsystem]= useState({temp:100});
+
+ useEffect(() => {
console.log("useeffect");
+
const fetch= async()=>{
console.log("fetch start");
const xDB = new DBInteraction();
- var data =await xDB.getCurrentData('lambert');
- console.log(data);
- setSystem(data);
-
+ var finalData =await xDB.getCurrentData('lambert');
+ console.log(finalData);
+ setHsystem(finalData);
+ // firstData = finalData
+
}
+ if ( firstData ==null)
+ fetch();
- fetch();
-
- });
-
+ },
+ []);
+
+ console.log(hsystem.temp);
+
+
return (
+
+
+
+
@@ -107,8 +116,11 @@ const HomeScreen = ({navigation}) => {
+
- Temp: {system.temp}
+
+ Temp:{hsystem.Temp}
+
Celcius
@@ -119,7 +131,8 @@ const HomeScreen = ({navigation}) => {
- Humidity: 40
+ Humidity: {hsystem.humidity}
+
Percent
@@ -137,7 +150,7 @@ const HomeScreen = ({navigation}) => {
- Light: 10
+ Light: {hsystem.light}
Lumens
@@ -148,7 +161,7 @@ const HomeScreen = ({navigation}) => {
- Water: 24
+ Water: {hsystem.waterTemp}
Celcius
@@ -168,7 +181,7 @@ const HomeScreen = ({navigation}) => {
- Co2: 700
+ Co2: {hsystem.co2}
PPMs
@@ -178,7 +191,7 @@ const HomeScreen = ({navigation}) => {
- PH: 4
+ PH: {hsystem.Ph}
logarithm of H+
diff --git a/screens/MainTabScreen.js b/screens/MainTabScreen.js
index 328515b..1283693 100644
--- a/screens/MainTabScreen.js
+++ b/screens/MainTabScreen.js
@@ -26,7 +26,9 @@ const DetailsStack = createStackNavigator();
const SensorStack = createStackNavigator();
const ProfileStack = createStackNavigator();
const Tab = createMaterialBottomTabNavigator();
+
const MainTabScreen = () => (
+
{
+
const initialMapState = {
markers,
categories: [
@@ -54,8 +55,8 @@ const MapScreen = () => {
},
],
region: {
- latitude: 22.62938671242907,
- longitude: 88.4354486029795,
+ latitude: 34.105793,
+ longitude:-84.137916,
latitudeDelta: 0.04864195044303443,
longitudeDelta: 0.040142817690068,
},
diff --git a/screens/humidity.js b/screens/humidity.js
index 000956a..ea90823 100644
--- a/screens/humidity.js
+++ b/screens/humidity.js
@@ -19,6 +19,7 @@ import * as theme from '../constants/theme';
import SegmentedControlTab from "react-native-segmented-control-tab";
class humidityScreen extends Component {
+
constructor() {
super();
diff --git a/screens/loginScreens/RegistrationScreen.js b/screens/loginScreens/RegistrationScreen.js
index d6e1780..2c08de9 100644
--- a/screens/loginScreens/RegistrationScreen.js
+++ b/screens/loginScreens/RegistrationScreen.js
@@ -34,16 +34,6 @@ export default function RegistrationScreen({navigation}) {
underlineColorAndroid="transparent"
autoCapitalize="none"
/>
- setSystem(text)}
- value={password}
- underlineColorAndroid="transparent"
- autoCapitalize="none"
- />
3:00pm 7/5/2020
- 6.0
+
From 1af2fc632186a970f7bf0b261faa574a203181c5 Mon Sep 17 00:00:00 2001
From: Varun Sendilraj
Date: Tue, 27 Oct 2020 01:40:28 -0400
Subject: [PATCH 04/16] Firebase Authentication
---
App.js | 33 +++-
package.json | 4 +-
screens/DrawerContent.js | 9 +-
screens/loginScreens/loginScreen.js | 28 +++-
yarn.lock | 240 ++++++++++++++++++++++++++--
5 files changed, 292 insertions(+), 22 deletions(-)
diff --git a/App.js b/App.js
index 197388e..89f2711 100644
--- a/App.js
+++ b/App.js
@@ -6,7 +6,6 @@
* @flow strict-local
*/
import 'react-native-gesture-handler';
-import React, { useState, useEffect } from 'react';
import { NavigationContainer, DarkTheme} from '@react-navigation/native';
//import { createStackNavigator } from '@react-navigation/stack';
import { createDrawerNavigator } from '@react-navigation/drawer';
@@ -27,7 +26,12 @@ import hcp from './screens/hcp';
import cdp from './screens/cdp';
import spc from './screens/spc';
import pointCloud from './screens/pointCoud';
-import rs from './screens/loginScreens/RegistrationScreen';
+import React, { useState, useEffect } from 'react';
+import auth from '@react-native-firebase/auth';
+import { Image, Text, TextInput, TouchableOpacity, View } from 'react-native';
+import styles from './screens/loginScreens/styles';
+
+
//
@@ -43,16 +47,37 @@ const Drawer = createDrawerNavigator()
const App = () => {
+ const [initializing, setInitializing] = useState(true);
+ const [user, setUser] = useState();
+
+ // Handle user state changes
+ function onAuthStateChanged(user) {
+ setUser(user);
+ if (initializing) setInitializing(false);
+ }
+
+ useEffect(() => {
+ const subscriber = auth().onAuthStateChanged(onAuthStateChanged);
+ return subscriber; // logout on unmount
+ }, []);
+
+ if (initializing) return null;
+
+ if (!user) {
+
+ return (
+
+ );
+ }
-
return(
}>
-
+ {/* */}
diff --git a/package.json b/package.json
index 3ba2ece..17734e6 100644
--- a/package.json
+++ b/package.json
@@ -14,8 +14,8 @@
"@react-native-community/masked-view": "^0.1.10",
"@react-native-community/netinfo": "^5.9.7",
"@react-native-community/segmented-control": "^2.1.2",
- "@react-native-firebase/app": "^7.2.0",
- "@react-native-firebase/auth": "^8.0.4",
+ "@react-native-firebase/app": "^8.4.6",
+ "@react-native-firebase/auth": "^9.3.1",
"@react-native-firebase/firestore": "^7.1.5",
"@react-navigation/drawer": "^5.9.1",
"@react-navigation/material-bottom-tabs": "^5.2.17",
diff --git a/screens/DrawerContent.js b/screens/DrawerContent.js
index 941c84d..af67c2d 100644
--- a/screens/DrawerContent.js
+++ b/screens/DrawerContent.js
@@ -1,5 +1,6 @@
import React from 'react';
import {View, StyleSheet} from 'react-native';
+import auth from '@react-native-firebase/auth';
import {
@@ -22,6 +23,12 @@ import Icon from 'react-native-vector-icons/MaterialCommunityIcons';
export function DrawerContent(props) {
+ const logoff = () => {
+ auth()
+ .signOut()
+ .then(() => console.log('User signed out!'));
+
+ };
return(
@@ -141,7 +148,7 @@ export function DrawerContent(props) {
/>
)}
label="Sign Out"
- // onPress={}
+ onPress={() => logoff()}
/>
diff --git a/screens/loginScreens/loginScreen.js b/screens/loginScreens/loginScreen.js
index 2e28dc8..f12f050 100644
--- a/screens/loginScreens/loginScreen.js
+++ b/screens/loginScreens/loginScreen.js
@@ -2,16 +2,37 @@ import React, { useState } from 'react'
import { Image, Text, TextInput, TouchableOpacity, View } from 'react-native'
import { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view';
import styles from './styles';
+import auth from '@react-native-firebase/auth';
+import {firebase} from "../../environment/db";
export default function LoginScreen({navigation}) {
const [email, setEmail] = useState('')
const [password, setPassword] = useState('')
+ /* register user ---> future implementation
const onFooterLinkPress = () => {
- navigation.navigate('Register')
+ navigation.navigate('Home')
}
+*/
const onLoginPress = () => {
+ auth()
+ .signInWithEmailAndPassword(email,password )
+ .then(() => {
+ console.log('User account created & signed in!');
+ })
+ .catch(error => {
+ if (error.code === 'auth/email-already-in-use') {
+ console.log('That email address is already in use!');
+ }
+
+ if (error.code === 'auth/invalid-email') {
+ console.log('That email address is invalid!');
+ }
+
+ console.error(error);
+ });
+
}
return (
@@ -44,12 +65,15 @@ export default function LoginScreen({navigation}) {
/>
navigation.navigate('Home')}>
+ onPress={() => onLoginPress()}>
Log in
+ {/* create new user --> future implementation
Don't have an account? Sign up
+ */}
+
)
diff --git a/yarn.lock b/yarn.lock
index 87c64f5..a934060 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -672,7 +672,7 @@
pirates "^4.0.0"
source-map-support "^0.5.16"
-"@babel/runtime@^7.0.0", "@babel/runtime@^7.11.2", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4":
+"@babel/runtime@^7.0.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4":
version "7.11.2"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.11.2.tgz#f549c13c754cc40b87644b9fa9f09a6a95fe0736"
integrity sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw==
@@ -1052,6 +1052,13 @@
"@types/yargs" "^15.0.0"
chalk "^4.0.0"
+"@react-native-async-storage/async-storage@^1.13.0":
+ version "1.13.1"
+ resolved "https://registry.yarnpkg.com/@react-native-async-storage/async-storage/-/async-storage-1.13.1.tgz#c24200b33946f253e1d198d730548385a8904ecc"
+ integrity sha512-yNTjYah8LuCZDqD+kbPdgyfht1uW2uEf5OKlaAthcmKz9wOf68ccO7PFXyLXlFIEZDWkRcEk4Cu4MSsQYI9pBQ==
+ dependencies:
+ deep-assign "^3.0.0"
+
"@react-native-community/cli-debugger-ui@^4.9.0":
version "4.9.0"
resolved "https://registry.yarnpkg.com/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-4.9.0.tgz#4177764ba69243c97aa26829d59d9501acb2bd71"
@@ -1200,11 +1207,34 @@
resolved "https://registry.yarnpkg.com/@react-native-community/masked-view/-/masked-view-0.1.10.tgz#5dda643e19e587793bc2034dd9bf7398ad43d401"
integrity sha512-rk4sWFsmtOw8oyx8SD3KSvawwaK7gRBSEIy2TAwURyGt+3TizssXP1r8nx3zY+R7v2vYYHXZ+k2/GULAT/bcaQ==
+"@react-native-community/netinfo@^5.9.7":
+ version "5.9.7"
+ resolved "https://registry.yarnpkg.com/@react-native-community/netinfo/-/netinfo-5.9.7.tgz#769c6b306ea6bbaa1c4a3fffdd183d0cfc30ed7e"
+ integrity sha512-NAkkT68oF+M9o6El2xeUqZK7magPjG/tAcEbvCbqyhlh3yElKWnI1e1vpbVvFXzTefy67FwYFWOJqBN6U7Mnkg==
+
"@react-native-community/segmented-control@^2.1.2":
version "2.1.2"
resolved "https://registry.yarnpkg.com/@react-native-community/segmented-control/-/segmented-control-2.1.2.tgz#13dd38a2f1972f7c9061f74b9e8e9fd35cbfa6a8"
integrity sha512-2UEr+Dqk+VHcMaZPOcKSo0GqFZG91DjngeACy+DOB2gRvph/FGKjABV6HlQJqdhQeQs/4NgoycCjAH+Z8ilIVg==
+"@react-native-firebase/app@^8.4.6":
+ version "8.4.6"
+ resolved "https://registry.yarnpkg.com/@react-native-firebase/app/-/app-8.4.6.tgz#05b4a48f2cd452acc88dd7b816a4ca934140927f"
+ integrity sha512-4eZR133QuScvGs4IQQd6qMvQ5E1mtydVTy3DtuBCeiIqtvN8ZxBYoSMgcUmYGS4VafbS2nPh85g4e3BlaIJ2XA==
+ dependencies:
+ opencollective-postinstall "^2.0.1"
+ superstruct "^0.6.2"
+
+"@react-native-firebase/auth@^9.3.1":
+ version "9.3.1"
+ resolved "https://registry.yarnpkg.com/@react-native-firebase/auth/-/auth-9.3.1.tgz#269d4755cb398e049b5014bf35adcc631a87d6d6"
+ integrity sha512-TtCEwyO5+ZRvmlKMLz54qFshIWaDT9U162CjQX0mzybmogYKRM9UoB+mFnZLh7rKZQQgvVzzMfF+h2DUgN+9xQ==
+
+"@react-native-firebase/firestore@^7.1.5":
+ version "7.8.7"
+ resolved "https://registry.yarnpkg.com/@react-native-firebase/firestore/-/firestore-7.8.7.tgz#2bc4227b51dc8b788e4538168f7ec60670401e92"
+ integrity sha512-UuQHvzadFszs3cphDsUZ/t7XGo0wW48+SVVHe20HBz42bU6EiN7YgmdBTqwEI8P2go+0Uj9LLLDayhND7JSSyQ==
+
"@react-navigation/core@^5.12.4":
version "5.12.4"
resolved "https://registry.yarnpkg.com/@react-navigation/core/-/core-5.12.4.tgz#1bd0c81d098895c8ffe49f8624fae60c9abc5684"
@@ -1511,6 +1541,16 @@ ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4:
json-schema-traverse "^0.4.1"
uri-js "^4.2.2"
+amazon-cognito-identity-js@^4.4.0:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/amazon-cognito-identity-js/-/amazon-cognito-identity-js-4.5.0.tgz#5130b10ffa6e51fc9d0b6e58cc1896102fc43de7"
+ integrity sha512-87oHB//rmVd1BFZC6UVXrRuA06ewfbe3nCy8HYNT7zABKYkKNdyYSHf1tllQV3seJB7HEJ2bxf2qd951Wzgu4A==
+ dependencies:
+ buffer "4.9.1"
+ crypto-js "^3.3.0"
+ isomorphic-unfetch "^3.0.0"
+ js-cookie "^2.2.1"
+
anser@^1.4.9:
version "1.4.10"
resolved "https://registry.yarnpkg.com/anser/-/anser-1.4.10.tgz#befa3eddf282684bd03b63dcda3927aef8c2e35b"
@@ -1890,7 +1930,7 @@ balanced-match@^1.0.0:
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
-base64-js@^1.1.2, base64-js@^1.2.3:
+base64-js@^1.0.2, base64-js@^1.1.2, base64-js@^1.2.3:
version "1.3.1"
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1"
integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==
@@ -1999,6 +2039,15 @@ buffer-from@^1.0.0:
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
+buffer@4.9.1:
+ version "4.9.1"
+ resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298"
+ integrity sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=
+ dependencies:
+ base64-js "^1.0.2"
+ ieee754 "^1.1.4"
+ isarray "^1.0.0"
+
bytes@3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
@@ -2155,6 +2204,16 @@ cliui@^6.0.0:
strip-ansi "^6.0.0"
wrap-ansi "^6.2.0"
+clone-deep@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-2.0.2.tgz#00db3a1e173656730d1188c3d6aced6d7ea97713"
+ integrity sha512-SZegPTKjCgpQH63E+eN6mVEEPdQBOUzjyJm5Pora4lrwWRFS8I0QAxV/KD6vV/i0WuijHZWQC1fMsPEdxfdVCQ==
+ dependencies:
+ for-own "^1.0.0"
+ is-plain-object "^2.0.4"
+ kind-of "^6.0.0"
+ shallow-clone "^1.0.0"
+
clone@^1.0.2:
version "1.0.4"
resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e"
@@ -2342,6 +2401,14 @@ cosmiconfig@^5.0.5, cosmiconfig@^5.1.0:
js-yaml "^3.13.1"
parse-json "^4.0.0"
+create-react-class@^15.6.2:
+ version "15.7.0"
+ resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.7.0.tgz#7499d7ca2e69bb51d13faf59bd04f0c65a1d6c1e"
+ integrity sha512-QZv4sFWG9S5RUvkTYWbflxeZX+JG7Cz0Tn33rQBJ+WFQTqTfUTjMjiv9tnfXazjsO5r0KhPs+AqCjyrQX6h2ng==
+ dependencies:
+ loose-envify "^1.3.1"
+ object-assign "^4.1.1"
+
cross-spawn@^5.1.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449"
@@ -2371,6 +2438,11 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.2:
shebang-command "^2.0.0"
which "^2.0.1"
+crypto-js@^3.3.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-3.3.0.tgz#846dd1cce2f68aacfa156c8578f926a609b7976b"
+ integrity sha512-DIT51nX0dCfKltpRiXV+/TVZq+Qq2NgF4644+K7Ttnla7zEzqc+kjJyiB96BHNyUTBxyjzRcZYpUdZa+QAqi6Q==
+
css-color-keywords@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05"
@@ -2546,6 +2618,13 @@ decode-uri-component@^0.2.0:
resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=
+deep-assign@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/deep-assign/-/deep-assign-3.0.0.tgz#c8e4c4d401cba25550a2f0f486a2e75bc5f219a2"
+ integrity sha512-YX2i9XjJ7h5q/aQ/IM9PEwEnDqETAIYbggmdDB3HLTlSgo1CxPsj6pvhPG68rq6SVE0+p+6Ywsm5fTYNrYtBWw==
+ dependencies:
+ is-obj "^1.0.0"
+
deep-is@^0.1.3, deep-is@~0.1.3:
version "0.1.3"
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
@@ -2802,16 +2881,16 @@ escape-html@~1.0.3:
resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=
+escape-string-regexp@2.0.0, escape-string-regexp@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344"
+ integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==
+
escape-string-regexp@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
-escape-string-regexp@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344"
- integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==
-
escape-string-regexp@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
@@ -3321,11 +3400,23 @@ flatted@^2.0.0:
resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138"
integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==
-for-in@^1.0.2:
+for-in@^0.1.3:
+ version "0.1.8"
+ resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1"
+ integrity sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=
+
+for-in@^1.0.1, for-in@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=
+for-own@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b"
+ integrity sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=
+ dependencies:
+ for-in "^1.0.1"
+
forever-agent@~0.6.1:
version "0.6.1"
resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
@@ -3631,6 +3722,11 @@ iconv-lite@^0.6.2:
dependencies:
safer-buffer ">= 2.1.2 < 3.0.0"
+ieee754@^1.1.4:
+ version "1.1.13"
+ resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84"
+ integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==
+
ignore@^4.0.6:
version "4.0.6"
resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc"
@@ -3717,7 +3813,7 @@ internal-slot@^1.0.2:
has "^1.0.3"
side-channel "^1.0.2"
-invariant@^2.2.4:
+invariant@2.2.4, invariant@^2.2.4:
version "2.2.4"
resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6"
integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==
@@ -3878,6 +3974,11 @@ is-number@^7.0.0:
resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
+is-obj@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
+ integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8=
+
is-plain-object@^2.0.3, is-plain-object@^2.0.4:
version "2.0.4"
resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
@@ -3941,7 +4042,7 @@ is-wsl@^2.2.0:
dependencies:
is-docker "^2.0.0"
-isarray@1.0.0, isarray@~1.0.0:
+isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
@@ -3971,6 +4072,14 @@ isomorphic-fetch@^2.1.1:
node-fetch "^1.0.1"
whatwg-fetch ">=0.10.0"
+isomorphic-unfetch@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz#87341d5f4f7b63843d468438128cb087b7c3e98f"
+ integrity sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==
+ dependencies:
+ node-fetch "^2.6.1"
+ unfetch "^4.2.0"
+
isstream@~0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
@@ -4480,6 +4589,11 @@ jetifier@^1.6.2:
resolved "https://registry.yarnpkg.com/jetifier/-/jetifier-1.6.6.tgz#fec8bff76121444c12dc38d2dad6767c421dab68"
integrity sha512-JNAkmPeB/GS2tCRqUzRPsTOHpGDah7xP18vGJfIjZC+W2sxEHbxgJxetIjIqhjQ3yYbYNEELkM/spKLtwoOSUQ==
+js-cookie@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-2.2.1.tgz#69e106dc5d5806894562902aa5baec3744e9b2b8"
+ integrity sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==
+
"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
@@ -4650,7 +4764,7 @@ kind-of@^5.0.0:
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d"
integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==
-kind-of@^6.0.0, kind-of@^6.0.2:
+kind-of@^6.0.0, kind-of@^6.0.1, kind-of@^6.0.2:
version "6.0.3"
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
@@ -4784,7 +4898,7 @@ logkitty@^0.7.1:
dayjs "^1.8.15"
yargs "^15.1.0"
-loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0:
+loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.3.1, loose-envify@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
@@ -5308,6 +5422,14 @@ mixin-deep@^1.2.0:
for-in "^1.0.2"
is-extendable "^1.0.1"
+mixin-object@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/mixin-object/-/mixin-object-2.0.1.tgz#4fb949441dab182540f1fe035ba60e1947a5e57e"
+ integrity sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=
+ dependencies:
+ for-in "^0.1.3"
+ is-extendable "^0.1.1"
+
mkdirp@^0.5.1:
version "0.5.5"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
@@ -5385,7 +5507,7 @@ node-fetch@^1.0.1:
encoding "^0.1.11"
is-stream "^1.0.1"
-node-fetch@^2.2.0, node-fetch@^2.6.0:
+node-fetch@^2.2.0, node-fetch@^2.6.0, node-fetch@^2.6.1:
version "2.6.1"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052"
integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==
@@ -5602,6 +5724,11 @@ open@^6.2.0:
dependencies:
is-wsl "^1.1.0"
+opencollective-postinstall@^2.0.1:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz#7a0fff978f6dbfa4d006238fbac98ed4198c3259"
+ integrity sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==
+
optionator@^0.8.1:
version "0.8.3"
resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495"
@@ -5982,6 +6109,13 @@ react-native-appearance@^0.3.4:
invariant "^2.2.4"
use-subscription "^1.0.0"
+react-native-camera@^3.40.0:
+ version "3.40.0"
+ resolved "https://registry.yarnpkg.com/react-native-camera/-/react-native-camera-3.40.0.tgz#69845991e46b0892cc2b50322d49b18f292c3202"
+ integrity sha512-Ur0hZqZcl3SntTVMB9GxuiLYpQxqwgzhQVb+7EGae4WjfDzQEwlGF0bJ7UpZyeUTb1oZmsiSib58xUckn11XMw==
+ dependencies:
+ prop-types "^15.6.2"
+
react-native-gesture-handler@^1.8.0:
version "1.8.0"
resolved "https://registry.yarnpkg.com/react-native-gesture-handler/-/react-native-gesture-handler-1.8.0.tgz#18f61f51da50320f938957b0ee79bc58f47449dc"
@@ -5992,16 +6126,36 @@ react-native-gesture-handler@^1.8.0:
invariant "^2.2.4"
prop-types "^15.7.2"
+react-native-iphone-x-helper@^1.0.3:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/react-native-iphone-x-helper/-/react-native-iphone-x-helper-1.3.0.tgz#84fd13e6b89cc3aa4daa80ec514bf15cb724d86d"
+ integrity sha512-+/bcZWFeZt0xSS/+3CHM5K7qPL4vDO/3ARLIowzFpUPGZiPsv9+NET+XNqqseRYwFJwYMmtX+Q4TZKxAVy09ew==
+
react-native-iphone-x-helper@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/react-native-iphone-x-helper/-/react-native-iphone-x-helper-1.2.1.tgz#645e2ffbbb49e80844bb4cbbe34a126fda1e6772"
integrity sha512-/VbpIEp8tSNNHIvstuA3Swx610whci1Zpc9mqNkqn14DkMbw+ORviln2u0XyHG1kPvvwTNGZY6QpeFwxYaSdbQ==
+react-native-keyboard-aware-scroll-view@^0.9.3:
+ version "0.9.3"
+ resolved "https://registry.yarnpkg.com/react-native-keyboard-aware-scroll-view/-/react-native-keyboard-aware-scroll-view-0.9.3.tgz#65ab4cab1a987b486d97924602756fa88b7fbfcc"
+ integrity sha512-EDyFp8wAJoKvi1T2pzoPRn8R0Inp3G+575jPAWEFTlXq26URMmk8760rzde2XLW+v/1+QwDyBg6d/5mz63/ZRA==
+ dependencies:
+ prop-types "^15.6.2"
+ react-native-iphone-x-helper "^1.0.3"
+
react-native-maps@^0.27.1:
version "0.27.1"
resolved "https://registry.yarnpkg.com/react-native-maps/-/react-native-maps-0.27.1.tgz#2f10cd417bb2fd938c9e015b1c9b6d9b1a44b97f"
integrity sha512-HygBkZBecTnIVRYrSiLRAvu4OmXOYso/A7c6Cy73HkOh9CgGV8Ap5eBea24tvmFGptjj5Hg8AJ94/YbmWK1Okw==
+react-native-onboarding-swiper@^1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/react-native-onboarding-swiper/-/react-native-onboarding-swiper-1.1.4.tgz#cb2d97c769542228d3904a9da13e02359ed6e3f5"
+ integrity sha512-dG2J6giQpt5kKlU+Xe68E9xy+OkmC9Yf5XD7S1mJQ5VvwySfCIXnPojai0PEQ9NmbbH06k9lqN5Ik1PGYnIdVA==
+ dependencies:
+ tinycolor2 "^1.4.1"
+
react-native-paper@^4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/react-native-paper/-/react-native-paper-4.2.0.tgz#534c0f9dbeecfd73d20f1f7b1ef3df32aa2ca4b0"
@@ -6011,6 +6165,11 @@ react-native-paper@^4.2.0:
color "^3.1.2"
react-native-safe-area-view "^0.14.9"
+react-native-plotly@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/react-native-plotly/-/react-native-plotly-4.0.0.tgz#57050a6eb379375526a465da6f55cd99ef9a18d4"
+ integrity sha512-P0FdQ1JwqhxhbRAh36eBas5e8qpPfKOWpsG99ekePXBrkPSvm5i9UcRopKW5AkFifs0GstDOJsOxfKpsVj4Whw==
+
react-native-reanimated@^1.13.0:
version "1.13.1"
resolved "https://registry.yarnpkg.com/react-native-reanimated/-/react-native-reanimated-1.13.1.tgz#c370c32cc4d447ae896cb029bb9c6a2f7608c5b4"
@@ -6035,6 +6194,19 @@ react-native-screens@^2.11.0:
resolved "https://registry.yarnpkg.com/react-native-screens/-/react-native-screens-2.11.0.tgz#34b30b07c2d04aa100cba984b944b303bfa43ea6"
integrity sha512-vJzJE3zI1XUtqthrX3Dh2TBQWB+xFyaGhF52KBq9FjJUN5ws4xpLZJxBWa1KbGV3DilmcSZ4jmZR5LGordwE7w==
+react-native-segmented-control-tab@^3.4.1:
+ version "3.4.1"
+ resolved "https://registry.yarnpkg.com/react-native-segmented-control-tab/-/react-native-segmented-control-tab-3.4.1.tgz#b6e54b8975ce8092315c9b0a1ab58b834d8ccf8e"
+ integrity sha512-BNPdlE9Unr0Xabewn8W+FhBMLjssXy9Ey7S7AY0hXlrKrEKFdC9z0yT+eEWd5dLam4T6T4IuGL8b7ZF4uGyWNw==
+
+react-native-settings-list@^1.8.0:
+ version "1.8.0"
+ resolved "https://registry.yarnpkg.com/react-native-settings-list/-/react-native-settings-list-1.8.0.tgz#89089546e84e6fdf3b9e421fe870f0c2626868da"
+ integrity sha1-iQiVRuhOb987nkIf6HDwwmJoaNo=
+ dependencies:
+ create-react-class "^15.6.2"
+ prop-types "^15.5.10"
+
react-native-svg-charts@^5.4.0:
version "5.4.0"
resolved "https://registry.yarnpkg.com/react-native-svg-charts/-/react-native-svg-charts-5.4.0.tgz#3817a4714c276b7024e60ae5c9f13191614aecc8"
@@ -6061,6 +6233,13 @@ react-native-swiper@^1.6.0:
dependencies:
prop-types "^15.5.10"
+react-native-tableview@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/react-native-tableview/-/react-native-tableview-3.0.0.tgz#de55c837d3a25a821f8d043007d184e87096ec90"
+ integrity sha512-EnCNq5uKLEFsg3n7ykEvbo++sW/zUtg4cfJKYOf45s2pZoSAWvBqAjyx4G7uqhaoCLcjjDr8JiHlY62oaU7eUA==
+ dependencies:
+ prop-types "^15.6.2"
+
react-native-vector-icons@^7.1.0:
version "7.1.0"
resolved "https://registry.yarnpkg.com/react-native-vector-icons/-/react-native-vector-icons-7.1.0.tgz#145487d617b2a81d395d2cf64e6e065fcab3a454"
@@ -6075,6 +6254,14 @@ react-native-vector-icons@^7.1.0:
prop-types "^15.7.2"
yargs "^15.0.2"
+react-native-webview@^10.9.3:
+ version "10.10.0"
+ resolved "https://registry.yarnpkg.com/react-native-webview/-/react-native-webview-10.10.0.tgz#285703c35eac1eac5b4446df2cba8a146d3c8548"
+ integrity sha512-T0AnZ0LVhaFBqZpl5attDDYo83zqdFRsFVINbrgHaIm6w5r0d/QK/dJRgXRNyFhn1fSONhe0ejdcnCYCT73B6g==
+ dependencies:
+ escape-string-regexp "2.0.0"
+ invariant "2.2.4"
+
react-native@0.63.2:
version "0.63.2"
resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.63.2.tgz#eaebf3430577b37fbd66ef228a86b3408259ef8e"
@@ -6557,6 +6744,15 @@ setprototypeof@1.1.1:
resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683"
integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==
+shallow-clone@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-1.0.0.tgz#4480cd06e882ef68b2ad88a3ea54832e2c48b571"
+ integrity sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA==
+ dependencies:
+ is-extendable "^0.1.1"
+ kind-of "^5.0.0"
+ mixin-object "^2.0.1"
+
shallowequal@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8"
@@ -6969,6 +7165,14 @@ sudo-prompt@^9.0.0:
resolved "https://registry.yarnpkg.com/sudo-prompt/-/sudo-prompt-9.2.1.tgz#77efb84309c9ca489527a4e749f287e6bdd52afd"
integrity sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==
+superstruct@^0.6.2:
+ version "0.6.2"
+ resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-0.6.2.tgz#c5eb034806a17ff98d036674169ef85e4c7f6a1c"
+ integrity sha512-lvA97MFAJng3rfjcafT/zGTSWm6Tbpk++DP6It4Qg7oNaeM+2tdJMuVgGje21/bIpBEs6iQql1PJH6dKTjl4Ig==
+ dependencies:
+ clone-deep "^2.0.1"
+ kind-of "^6.0.1"
+
supports-color@^5.3.0, supports-color@^5.5.0:
version "5.5.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
@@ -7081,6 +7285,11 @@ time-stamp@^1.0.0:
resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3"
integrity sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=
+tinycolor2@^1.4.1:
+ version "1.4.2"
+ resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.4.2.tgz#3f6a4d1071ad07676d7fa472e1fac40a719d8803"
+ integrity sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA==
+
tmp@^0.0.33:
version "0.0.33"
resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"
@@ -7252,6 +7461,11 @@ ultron@1.0.x:
resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa"
integrity sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=
+unfetch@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/unfetch/-/unfetch-4.2.0.tgz#7e21b0ef7d363d8d9af0fb929a5555f6ef97a3be"
+ integrity sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==
+
unicode-canonical-property-names-ecmascript@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818"
From e9e971d5094329c7719a69fdf17985950c8b1e81 Mon Sep 17 00:00:00 2001
From: Varun Sendilraj
Date: Tue, 27 Oct 2020 22:36:15 -0400
Subject: [PATCH 05/16] final upgrades
---
README.md | 151 +++++++++++++++++++++++++++++++-----
android/app/build.gradle | 15 ++++
android/gradle.properties | 6 ++
screens/BoxPlot.js | 10 +--
screens/DetailsScreen.js | 7 +-
screens/HomeScreen.js | 139 ++++++++++++++++++++++++++++-----
screens/MainTabScreen.js | 2 +-
screens/MapScreen.js | 11 ++-
screens/SensorScreen.js | 84 +++++++++++++++++---
screens/cdp.js | 2 +-
screens/co2.js | 51 ++++++++----
screens/humidity.js | 51 ++++++++----
screens/mapData.js | 34 ++++----
screens/o2.js | 49 ++++++++----
screens/ph.js | 59 +++++++++-----
screens/sErrorBars.js | 6 +-
screens/spc.js | 2 +-
screens/temperature.js | 52 +++++++++----
screens/waterTemperature.js | 52 +++++++++----
19 files changed, 599 insertions(+), 184 deletions(-)
diff --git a/README.md b/README.md
index 1cc87d9..1141038 100644
--- a/README.md
+++ b/README.md
@@ -27,11 +27,11 @@
## Table of Contents
-* [Background](#Backround)
+
* [Overview](#Overview)
* [Screens](#Screens)
* [DataFlow](#DataFLow)
-* [Hardware](#Hardware)
+* [Setup and Run](#SetupandRun)
* [Contanct](#Contact)
@@ -39,27 +39,17 @@
-## Backround
+
-Why this app was made
-
-Goals of app:
-* Goals of the app
-
-* 2nd goal of the app
-* 3rd goal of the app
-
-
-
## Overview
-The Agro-Q mobile app has a wide variety of features that allow users to maintain their hydroponics system. Users can view the sensor data, such as pH, water temperature, CO2, atmospheric temperature, and light intensity, via the app, and create models for predicting plant growth. The app periodically takes a picture of the plants in the system to monitor plant health by using an algorithm that corresponds plant color to certain levels of growth. The Agro-Q app allows collaboration among the user by sharing their specific hydroponics setups.
+The Agro-Q mobile app has a wide variety of features that allow users to maintain their hydroponics system. Users can view sensor data of pH, water temperature, CO2, atmospheric temperature, and light intensity, via the app, and analyze the plant growth. The Agro-Q app allows collaboration among the user by sharing their specific hydroponics setups through the google maps in the app.
@@ -69,11 +59,64 @@ The Agro-Q mobile app has a wide variety of features that allow users to maintai
#screenshots
+
Screens Descriptions:
+
+
+
+
+
+
+
+* Here is the description of the first screen
+
+
+
+
+
+
* Here is the description of the first screen
+
+
+
+
+
+
+
* Here is the description of the first screen
+
+
+
+
+
+
* Here is the description of the first screen
+
+
+
+
+
+
+
+
+* Here is the description of the first screen
+
+
+
+
+
+
+
+
* Here is the description of the first screen
+
+
+
+
+
+
+
+
* Here is the description of the first screen
@@ -84,16 +127,78 @@ Screens Descriptions:
Once the data is collected from the sensors, the data is sent to the Raspberry Pi using a serial connection. Using the Raspberry Pi’s internet connection, the data is then sent to the Firebase Cloud Server to be stored in a non-sql database. The data is then read from the database and displayed in the Agro-Q app for users to monitor their hydroponics system.
-#diagram of Dataflow
-#code for rasberi pi webserver
+
+
+
+
-## Hardware Setup
-The Sensor System contains seven sensors that work in conjunction to help monitor plant health and system’s conditions. The first Sensor is the DHT11 Temperature and Humidity sensor, which will be placed outside the system to maximize plant growth using automated responses. The second Sensor will be the CO2 Sensor. This sensor will track the amount of CO2 in the atmosphere in 5-10 min intervals as CO2 vital for plant photosynthesis . The 3rd sensor group, Photoresistors, will determine the amount of light the plants will be exposed to then preventing the growth of algae. The water temperature probe is used to measure the water temperature within the system for optimal plant growth. If the pH levels are outside of the optimum range, the plants will lose the ability to absorb essential elements required for steady growth, so pH is also measured using the pH sensor to determine if the pH of the water is outside of the bounds of what the plant can handle. Dissolved oxygen sensors will be used to measure the nutrient solutions content since O2 levels can influence the bacteria’s ability to regulate nutrient uptake and fight pathogens. Finally, the atmospheric o2 Sensor will be vital in making sure that the plants are getting the necessary amount of oxygen to stay healthy.
+
+
+## Installation
+
+Download the project files to your computer
+
+### Mac - Android or iOS
+1. Open Terminal and navigate to the project folder
+1. To run the app on the iOS Simulator, Xcode must be installed with a valid signing profile. Enter the following command in the terminal:
+```
+npx react-native run-ios
+```
+
+Run the app on the iOS Simulator by opening the .xcworkspace file and clicking the play button at the top of the screen. To run on a physical iOS device, plug the device into the Mac and choose the device from the dropdown menu at the top of the screen.
+
+
+To run on an Android simulator, simply use the following command or open Android Studio and run the app manually.
+```
+npx react-native run-android
+```
+
+### Windows - Android
+1. To run the app on the Android simulator, open a command prompt window and navigate to the project folder
+2. Run the following command:
+```
+npx react-native run-android
+```
+To run on a physical Android device, plug in the device into the computer and use Android Studio to manually run the app onto the device.
+
+
+Note to user:
+- app currently optimized for android
+- Data uploads to the app between 5sec -1min
+- Sometimes data may not update properly so restart the app and run again
+
+Login info for test account: (create user will be created in future version)
+- Username : lamberttest@gamil.com
+- Password : lambert123
+
+
+## Testing
+Download the 'test' folder in the judging form
+
+### Mac - Android or iOS
+1. Open Terminal and navigate to the project folder
+1. To run the server, enter the following command in the terminal:
+```
+npm install
+```
+To start the server run the following command in the terminal:
+```
+npm start
+```
+
+To update the data values type the values in the following link
+```
+http://localhost:3000/sendData/temp,Ph,light,co2,waterTemp,humidity
+
+```
+
+
+
@@ -101,7 +206,7 @@ The Sensor System contains seven sensors that work in conjunction to help monito
## Contact
-Lambert Highschool -(https://twitter.com/your_username)
+Lambert Highschool
@@ -109,3 +214,11 @@ Lambert Highschool -(https://twitter.com/your_username)
[firebase]: https://camo.githubusercontent.com/2d891f78cbe8e96dbff64e86fa29ab801c2ebe90/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f436c6f75642d46697265626173652d6635626132333f6c6f676f3d4669726562617365
[firebase-url]:https://rnfirebase.io/
+[app1]: https://2020.igem.org/wiki/images/5/58/T--Lambert_GA--Agro1.png
+[app2]: https://2020.igem.org/wiki/images/a/a2/T--Lambert_GA--home.png
+[app3]: https://2020.igem.org/wiki/images/e/e0/T--Lambert_GA--Agro3.png
+[app4]: https://2020.igem.org/wiki/images/3/3e/T--Lambert_GA--Agro5.png
+[app5]: https://2020.igem.org/wiki/images/1/15/T--Lambert_GA--Agro6.png
+[app6]:https://2020.igem.org/wiki/images/2/22/T--Lambert_GA--ScanAPp.png
+[app7]: https://2020.igem.org/wiki/images/e/e0/T--Lambert_GA--Agro7.png
+[app8]:https://2020.igem.org/wiki/images/7/7e/T--Lambert_GA--Agro9.png
diff --git a/android/app/build.gradle b/android/app/build.gradle
index 954fac6..72a6221 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -130,6 +130,7 @@ android {
targetCompatibility JavaVersion.VERSION_1_8
}
+
defaultConfig {
applicationId "com.agroq"
minSdkVersion rootProject.ext.minSdkVersion
@@ -139,6 +140,19 @@ android {
multiDexEnabled true
missingDimensionStrategy 'react-native-camera', 'general'
}
+ signingConfigs
+ {
+ release
+ {
+ if (project.hasProperty('MYAPP_RELEASE_STORE_FILE'))
+ {
+ storeFile file(MYAPP_RELEASE_STORE_FILE)
+ storePassword MYAPP_RELEASE_STORE_PASSWORD
+ keyAlias MYAPP_RELEASE_KEY_ALIAS
+ keyPassword MYAPP_RELEASE_KEY_PASSWORD
+ }
+ }
+ }
splits {
abi {
reset()
@@ -165,6 +179,7 @@ android {
signingConfig signingConfigs.debug
minifyEnabled enableProguardInReleaseBuilds
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
+ signingConfig signingConfigs.release
}
}
diff --git a/android/gradle.properties b/android/gradle.properties
index 04ca0ef..76549bc 100644
--- a/android/gradle.properties
+++ b/android/gradle.properties
@@ -26,3 +26,9 @@ android.enableJetifier=true
# Version of flipper SDK to use with React Native
FLIPPER_VERSION=0.37.0
+
+
+MYAPP_RELEASE_STORE_FILE=demo.keystore
+MYAPP_RELEASE_KEY_ALIAS=Agro-Q
+MYAPP_RELEASE_STORE_PASSWORD=varun123
+MYAPP_RELEASE_KEY_PASSWORD=varun123
\ No newline at end of file
diff --git a/screens/BoxPlot.js b/screens/BoxPlot.js
index 0dda6e8..ef375b0 100644
--- a/screens/BoxPlot.js
+++ b/screens/BoxPlot.js
@@ -6,8 +6,8 @@ import Plotly from 'react-native-plotly';
const trace1 = {
__id: 'up',
- x: ['Trial 1', 'Trial 2', 'Trial 3'],
- y: [3, 6, 4],
+ x: ['ph', 'temp', 'humidity'],
+ y: [global.ph, global.temp, global.humidity],
name: 'Control',
error_y: {
type: 'data',
@@ -19,12 +19,12 @@ const trace1 = {
const trace2 = {
__id: 'down',
- x: ['Trial 1', 'Trial 2', 'Trial 3'],
- y: [4, 7, 3],
+ x: ['avg ph', 'avg temp', 'avg humidity'],
+ y: [5, 20, 60 ],
name: 'Experimental',
error_y: {
type: 'data',
- array: [0.5, 1, 2],
+ array: [0.5, 10, 5],
visible: true
},
type: 'bar'
diff --git a/screens/DetailsScreen.js b/screens/DetailsScreen.js
index bb5a136..065215b 100644
--- a/screens/DetailsScreen.js
+++ b/screens/DetailsScreen.js
@@ -21,18 +21,15 @@ const DetailsScreen = ({navigation}) => {
title='Symmetric Error Bars'/>
navigation.navigate('BoxPlot')}
- title='Box Plot'/>
+ title='Bar Plot'/>
navigation.navigate('logisticRegression')}
title='Logistic Regression'/>
- navigation.navigate('2dHCP')}
- title='2d Countour Plot '/>
navigation.navigate("cdp")}
title='Catagorical Dot Plot'/>
navigation.navigate("spc")} title='SPC Control Chart'/>
- navigation.navigate("pointCloud")} title='Point Cloud'/>
+
diff --git a/screens/HomeScreen.js b/screens/HomeScreen.js
index dcb4753..6465a34 100644
--- a/screens/HomeScreen.js
+++ b/screens/HomeScreen.js
@@ -23,8 +23,90 @@ import Card from "../components/Card";
var firstData=null;
const HomeScreen = ({navigation}) => {
console.log("starting");
- const[hsystem, setHsystem]= useState({temp:100});
+ const[hsystem, setHsystem]= useState({});
+
+ var stylerco2;
+ var iconUsedco2;
+ var stylertemp;
+ var iconUsedtemp;
+
+ var systemHealth = 0;
+
+ var stylerhumidity;
+ var iconUsedhumidity;
+
+ var stylerph;
+ var iconUsedph;
+
+ var stylerwaterTemp;
+ var iconUsedwaterTemp;
+
+ var stylersyshealth ;
+ var iconUsedsyshealth ;
+ const checkValidity= ()=>{
+
+ console.log('this temp: '+ global.temp)
+ if (global.temp > 18 && global.temp < 26){
+ stylertemp = styles.categoryIcon2;
+ iconUsedtemp = "checkmark";
+ }else {
+ stylertemp = styles.categoryIcon3;
+ iconUsedtemp = "alert-outline";
+
+ }
+ if (global.humidity > 60 && global.humidity < 70){
+ stylerhumidity = styles.categoryIcon2;
+ iconUsedhumidity = "checkmark";
+ }else {
+ stylerhumidity = styles.categoryIcon3;
+ iconUsedhumidity = "alert-outline";
+ systemHealth=systemHealth+1;
+
+ }
+ if (global.ph > 60 && global.ph < 70){
+ stylerph = styles.categoryIcon2;
+ iconUsedph = "checkmark";
+ }else {
+ stylerph = styles.categoryIcon3;
+ iconUsedph = "alert-outline";
+ systemHealth=systemHealth+1;
+
+ }
+ if (global.co2 > 400 && global.co2 < 1500){
+ stylerco2 = styles.categoryIcon2;
+ iconUsedco2 = "checkmark";
+ }else {
+ stylerco2 = styles.categoryIcon3;
+ iconUsedco2 = "alert-outline";
+ systemHealth=systemHealth+1;
+
+ }
+ if (global.waterTemp > 18 && global.waterTemp < 26){
+ stylerwaterTemp = styles.categoryIcon2;
+ iconUsedwaterTemp = "checkmark";
+ }else {
+ stylerwaterTemp = styles.categoryIcon3;
+ iconUsedwaterTemp = "alert-outline";
+ systemHealth=systemHealth+1;
+
+ }
+
+ if (systemHealth > 2) {
+ stylersyshealth = styles.categoryIcon3;
+ iconUsedsyshealth = "alert-outline";
+
+ } else{
+ stylersyshealth = styles.categoryIcon;
+ iconUsedsyshealth = "happy";
+
+ }
+
+
+ };
+
+
+
useEffect(() => {
console.log("useeffect");
@@ -33,19 +115,38 @@ const HomeScreen = ({navigation}) => {
const xDB = new DBInteraction();
var finalData =await xDB.getCurrentData('lambert');
console.log(finalData);
+
setHsystem(finalData);
+ console.log("the temp" + finalData.Temp);
+ //Initializing variabbles for app use
+ global.temp = finalData.Temp;
+ global.co2=finalData.co2;
+ global.ph=finalData.Ph;
+ global.humidity=finalData.humidity;
+ global.longitude=finalData.longitude;
+ global.latitude=finalData.latitude;
+ global.light=finalData.light;
+ global.location= finalData.location;
+ global.time=finalData.time;
+ global.waterTemp=finalData.waterTemp;
+ checkValidity();
+
+ console.log("ph"+global.ph);
+
+
+
// firstData = finalData
}
- if ( firstData ==null)
+ if ( firstData ==null)
fetch();
},
[]);
- console.log(hsystem.temp);
+
return (
@@ -89,8 +190,8 @@ const HomeScreen = ({navigation}) => {
style={styles.categoryBtn}>
System Health:
-
-
+
+
@@ -114,9 +215,9 @@ const HomeScreen = ({navigation}) => {
-
-
-
+
+
+
Temp:{hsystem.Temp}
@@ -128,8 +229,8 @@ const HomeScreen = ({navigation}) => {
-
-
+
+
Humidity: {hsystem.humidity}
@@ -147,19 +248,19 @@ const HomeScreen = ({navigation}) => {
-
-
+
+
Light: {hsystem.light}
Lumens
-
+
-
-
+
+
Water: {hsystem.waterTemp}
Celcius
@@ -178,8 +279,8 @@ const HomeScreen = ({navigation}) => {
-
-
+
+
Co2: {hsystem.co2}
PPMs
@@ -188,8 +289,8 @@ const HomeScreen = ({navigation}) => {
-
-
+
+
PH: {hsystem.Ph}
logarithm of H+
diff --git a/screens/MainTabScreen.js b/screens/MainTabScreen.js
index 1283693..c2bf671 100644
--- a/screens/MainTabScreen.js
+++ b/screens/MainTabScreen.js
@@ -220,7 +220,7 @@ const HomeStackScreen = ({navigation}) => (
/>
diff --git a/screens/MapScreen.js b/screens/MapScreen.js
index 21663bd..e59611d 100644
--- a/screens/MapScreen.js
+++ b/screens/MapScreen.js
@@ -1,4 +1,4 @@
-import React, { useEffect } from 'react';
+import React, { useState, useEffect } from "react";
import {
StyleSheet,
Text,
@@ -27,9 +27,8 @@ const CARD_HEIGHT = 220;
const CARD_WIDTH = width * 0.8;
const SPACING_FOR_CARD_INSET = width * 0.1 - 10;
-
+var firstData=null;
const MapScreen = () => {
-
const initialMapState = {
markers,
categories: [
@@ -57,8 +56,8 @@ const MapScreen = () => {
region: {
latitude: 34.105793,
longitude:-84.137916,
- latitudeDelta: 0.04864195044303443,
- longitudeDelta: 0.040142817690068,
+ latitudeDelta: 0.0922,
+ longitudeDelta: 0.0421,
},
};
@@ -68,7 +67,7 @@ const MapScreen = () => {
let mapAnimation = new Animated.Value(0);
useEffect(() => {
mapAnimation.addListener(({ value }) => {
- let index = Math.floor(value / CARD_WIDTH + 0.3); // animate 30% away from landing on the next item
+ let index = Math.floor(value / CARD_WIDTH + 0.3);
if (index >= state.markers.length) {
index = state.markers.length - 1;
}
diff --git a/screens/SensorScreen.js b/screens/SensorScreen.js
index fae4445..afe67b0 100644
--- a/screens/SensorScreen.js
+++ b/screens/SensorScreen.js
@@ -1,4 +1,4 @@
-import React from 'react';
+import React, { useState, useEffect } from "react";
import { View, Text, Button, StyleSheet, StatusBar,SafeAreaView,ScrollView, TouchableOpacity, Image } from 'react-native';
@@ -7,16 +7,75 @@ import Icon from "../components/Icon";
import Card from "../components/Card";
import Label from "../components/Label";
import Ionicons from 'react-native-vector-icons/Ionicons';
+import { DBInteraction } from '../environment/db';
import { LineChart, YAxis, Grid } from 'react-native-svg-charts'
import * as theme from '../constants/theme';
+import react from 'react';
+
+
+var firstData=null;
const SensorScreen = ({navigation}) => {
- const data = [3,2,2,1,3,3,3,2,3,2,2]
+ console.log("starting");
+ const[hsystem, setHsystem]= useState({});
+
+ useEffect(() => {
+ console.log("useeffect");
+
+ const fetch= async()=>{
+ console.log("fetch start");
+ const xDB = new DBInteraction();
+ var finalData =await xDB.getCurrentData('lambert');
+ console.log(finalData);
+ setHsystem(finalData);
+ // firstData = finalData
+
+
+ }
+ if ( firstData ==null)
+ fetch();
+
+ },
+ []);
+ //caclulation for system health
+ ///////////////////////////////////
+ /*
+ global.systemHealth;
+ if (hsystem.temp >20 ) {
+ x = 3;
+ }
+ if (x > 50) {
+
+ }
+ if (x > 50) {
+
+ }
+ if (x > 50) {
+
+ }
+ if (x > 50) {
+
+ }
+ if (x > 50) {
+
+ }
+ */
+//////////////////////////////////////////
+ const data = [3,2,2,1,3,3,3,2,3,2,2];
+ const phtest = [];
+
+ phtest.push(hsystem.ph);
+ console.log(hsystem.ph);
+
+ console.log("pushed: " + phtest);
+
+
const contentInset = { top: 20, bottom: 20 }
+
return (
@@ -43,7 +102,7 @@ const SensorScreen = ({navigation}) => {
- Health
+ Health
@@ -102,10 +161,13 @@ const SensorScreen = ({navigation}) => {
paddingRight: Platform.OS === 'android' ? 20 : 0
}}
>
-
+
navigation.navigate('PH Stats')}>
+ onPress={() => navigation.navigate('PH Stats', {
+ ph : hsystem.ph,})}>
+
+
PH
@@ -114,7 +176,7 @@ const SensorScreen = ({navigation}) => {
navigation.navigate('Humidity Stats')}
+ onPress={() => navigation.navigate('Humidity Stats', {humidity : hsystem.humidity})}
>
@@ -124,7 +186,7 @@ const SensorScreen = ({navigation}) => {
navigation.navigate('Co2 Stats')}
+ onPress={() => navigation.navigate('Co2 Stats',{co2:hsystem.co2})}
>
@@ -135,7 +197,7 @@ const SensorScreen = ({navigation}) => {
navigation.navigate('Water Temp Stats')}>
+ onPress={() => navigation.navigate('Water Temp Stats', {waterTemp : hsystem.waterTemp})}>
Water Temp
@@ -143,7 +205,7 @@ const SensorScreen = ({navigation}) => {
navigation.navigate('Atmospheric Temperature Stats')}>
+ onPress={() => navigation.navigate('Atmospheric Temperature Stats', {temp : hsystem.Temp})}>
Outside Temp
@@ -151,11 +213,11 @@ const SensorScreen = ({navigation}) => {
navigation.navigate('O2 Stats')}>
+ onPress={() => navigation.navigate('O2 Stats' , {light : hsystem.light})}>
Light Intensity
- Lumens
+ Lumens
diff --git a/screens/cdp.js b/screens/cdp.js
index eda60a1..aaf1d05 100644
--- a/screens/cdp.js
+++ b/screens/cdp.js
@@ -4,7 +4,7 @@ import Plotly from 'react-native-plotly';
var sensors = ['atmospheric temp', 'water temp', 'humidity', 'temperature', 'light intensity', 'ph',];
-var data1 = [40, 45.7, 52, 53.6, 54.1, 54.2, 54.5, 54.7, 55.1, 56.6];
+var data1 = [global.temp, global.waterTemp, global.humidity, global.temp, global.light, global.ph];
var data2 = [49.1, 42, 52.7, 84.3, 51.7, 61.1, 55.3, 64.2, 91.1, 58.9];
diff --git a/screens/co2.js b/screens/co2.js
index 07ed183..be123c5 100644
--- a/screens/co2.js
+++ b/screens/co2.js
@@ -35,7 +35,26 @@ class Co2Screen extends Component {
}
render () {
- const data = [3,2,2,1,3,3,3,2,3,2,2]
+ const co2History = [1522,1493,1486];
+ const co2historyLatest = [];
+ var i;
+
+ for (i = 0; i < 5; i++) {
+ var x = Math.random(-10,10);
+ x = x*10;
+ console.log(x);
+ x = global.co2 + x;
+ x = Math.round(x);
+ co2historyLatest.push(x);
+ console.log(x);
+ console.log(co2historyLatest);
+
+
+ }
+ var time = global.time.toString();
+ var Time = 'FirestoreTimestamp';
+ var latestco2 = global.co2;
+ global.co2data = [latestco2,co2historyLatest[5],co2historyLatest[4],co2historyLatest[3],co2historyLatest[2],co2historyLatest[1],co2History[1],co2History[0]];
const contentInset = { top: 20, bottom: 20 }
return (
@@ -69,37 +88,37 @@ class Co2Screen extends Component {
- 3:00pm 7/5/2020
+ {time}
- 6.0
+ {global.co2}
- 12:00 pm 9/8/2020
+ {Time}
- 8.0
+ {co2historyLatest[0]}
- 3:00pm 7/5/2020
+ {Time}
- 6.0
+ {co2historyLatest[1]}
- 12:00 pm 9/8/2020
+ {Time}
- 8.0
+ {co2History[2]}
- 3:00pm 7/5/2020
+ {Time}
- 6.0
+ {co2History[1]}
- 12:00 pm 9/8/2020
+ {Time}
- 8.0
+ {co2History[0]}
- Humidity
+ Co2
Chart
diff --git a/screens/humidity.js b/screens/humidity.js
index ea90823..6b7cec4 100644
--- a/screens/humidity.js
+++ b/screens/humidity.js
@@ -36,7 +36,27 @@ class humidityScreen extends Component {
}
render () {
- const data = [40,30,20,32,40,45,43,39,40,38]
+ const humidityHistory = [60,62,63];
+ const humidityhistoryLatest = [];
+ var i;
+
+ for (i = 0; i < 5; i++) {
+ var x = Math.random(-5,5);
+ x = x*100;
+ console.log(x);
+ x = global.humidity + x;
+ x = Math.round(x);
+ humidityhistoryLatest.push(x);
+ console.log(x);
+ console.log(humidityhistoryLatest);
+
+
+ }
+ var time = global.time.toString();
+ var Time = 'FirestoreTimestamp';
+ var latesthumidity = global.humidity;
+ global.humiditydata = [latesthumidity,humidityhistoryLatest[5],humidityhistoryLatest[4],humidityhistoryLatest[3],humidityhistoryLatest[2],humidityhistoryLatest[1],humidityHistory[1],humidityHistory[0]];
+
const contentInset = { top: 20, bottom: 20 }
return (
@@ -70,37 +90,38 @@ class humidityScreen extends Component {
- 3:00pm 10/25/2020
+ {time}
- 40
+ {global.humidity}
- 2:00pm 10/25/2020
+ {Time}
- 42
+ {humidityhistoryLatest[1]}
- 1:00pm 10/25/2020
+ {Time}
- 41
+ {humidityhistoryLatest[0]}
+
- 12:00pm 10/25/2020
+ {Time}
- 40
+ {humidityHistory[2]}
- 11:00am 10/25/2020
+ {Time}
- 38
+ {humidityHistory[1]}
- 10:00am 10/25/2020
+ {Time}
- 35
+ {humidityHistory[0]}
Chart
diff --git a/screens/mapData.js b/screens/mapData.js
index 92c3833..e685191 100644
--- a/screens/mapData.js
+++ b/screens/mapData.js
@@ -11,10 +11,10 @@ const Images = [
-var firstData=null;
-
+
+
export const markers = [
@@ -22,44 +22,44 @@ export const markers = [
{
coordinate: {
- latitude: 22.6293867,
- longitude: 88.4354486,
+ latitude: 34.105793,
+ longitude: -84.137916,
},
- title: "Location 1",
- description: "this is a random description that goes here",
+ title: "Lambert Highschool",
+ description: "Hydroponics System of Lambert iGEM",
image: Images[0].image,
},
{
coordinate: {
- latitude: 22.6345648,
- longitude: 88.4377279,
+ latitude: 34.102680,
+ longitude: -84.135540,
},
- title: "Location 2",
- description: "this is a random description that goes here",
+ title: "Test Location 2",
+ description: "Test Location to show proof of concept. Real locations will be added with the realse of the app on the app store",
image: Images[1].image,
},
{
coordinate: {
- latitude: 22.6281662,
- longitude: 88.4410113,
+ latitude: 34.148479,
+ longitude: -84.171593,
},
- title: "Location 3",
- description: "this is a random description that goes here",
+ title: "Test Location 3",
+ description: "Test Location to show proof of concept. Real locations will be added with the realse of the app on the app store",
image: Images[2].image,
},
{
coordinate: {
- latitude: 22.6292757,
- longitude: 88.444781,
+ latitude: 34.072950,
+ longitude: -84.124130,
},
title: "Location 4",
- description: "this is a random description that goes here",
+ description: "Test Location to show proof of concept. Real locations will be added with the realse of the app on the app store",
image: Images[3].image,
diff --git a/screens/o2.js b/screens/o2.js
index fdd1a50..a50542f 100644
--- a/screens/o2.js
+++ b/screens/o2.js
@@ -35,7 +35,26 @@ class O2Screen extends Component {
}
render () {
- const data = [3,2,2,1,3,3,3,2,3,2,2]
+ const lightHistory = [520,525,525];
+ const lighthistoryLatest = [];
+ var i;
+
+ for (i = 0; i < 5; i++) {
+ var x = Math.random(-20,20);
+ x = x*100;
+ console.log(x);
+ x = global.light + x;
+ x = Math.round(x);
+ lighthistoryLatest.push(x);
+ console.log(x);
+ console.log(lighthistoryLatest);
+
+
+ }
+ var time = global.time.toString();
+ var Time = 'FirestoreTimestamp';
+ var latestlight = global.light;
+ global.lightdata = [latestlight,lighthistoryLatest[5],lighthistoryLatest[4],lighthistoryLatest[3],lighthistoryLatest[2],lighthistoryLatest[1],lightHistory[1],lightHistory[0]];
const contentInset = { top: 20, bottom: 20 }
return (
@@ -69,37 +88,37 @@ class O2Screen extends Component {
- 3:00pm 7/5/2020
+ {time}
- 6.0
+ {global.light}
- 12:00 pm 9/8/2020
+ {Time}
- 8.0
+ {lighthistoryLatest[2]}
- 3:00pm 7/5/2020
+ {Time}
- 6.0
+ {lighthistoryLatest[1]}
- 12:00 pm 9/8/2020
+ {Time}
- 8.0
+ {lightHistory[2]}
- 3:00pm 7/5/2020
+ {Time}
- 6.0
+ {lightHistory[1]}
- 12:00 pm 9/8/2020
+ {Time}
- 8.0
+ {lightHistory[0]}
Chart
diff --git a/screens/ph.js b/screens/ph.js
index f89c8ea..be45915 100644
--- a/screens/ph.js
+++ b/screens/ph.js
@@ -31,14 +31,37 @@ class PhScreen extends Component {
this.setState({
...this.state,
selectedIndex: index
+
});
}
+
render () {
- const data = [5.0,4.5,4.0,4.0,4.1,5.0]
+ //const data = [global.ph,4.5,4.0,4.0,4.1,5.0]
const contentInset = { top: 20, bottom: 20 }
+ const phHistory = [5.0,4.8,5.0];
+ const phhistoryLatest = [];
+ var i;
+
+ for (i = 0; i < 5; i++) {
+ var x = Math.random(-.2,.2);
+ x = global.ph + x;
+ x = Math.max(Math.round(x * 10) / 10);
+ phhistoryLatest.push(x);
+ console.log(x);
+ console.log(phhistoryLatest);
+
+
+ }
+ var time = global.time.toString();
+ var Time = 'FirestoreTimestamp';
+ var latestPH = global.ph;
+ global.phdata = [latestPH,phhistoryLatest[5],phhistoryLatest[4],phhistoryLatest[3],phhistoryLatest[2],phhistoryLatest[1],phHistory[1],phHistory[0]];
+
return (
+
+
-
+
Reading Date/Time
- PH
+ ph
- 3:00pm 10/25/2020
-
- 5.0
+ {time}
+ {/*latest data */ }
+ {global.ph}
- 2:00pm 10/25/2020
+ {Time}
- 4.9
+ {phhistoryLatest[0]}
- 1:00pm 10/25/2020
+ {Time}
- 4.8
+ {phhistoryLatest[1]}
- 12:00pm 10/25/2020
+ {Time}
- 4.8
+ {phHistory[2]}
- 11:00am 10/25/2020
+ {Time}
- 4.8
+ {phHistory[1]}
- 10:00am 10/25/2020
+ {Time}
- 4.9
+ {phHistory[0]}
Chart
diff --git a/screens/sErrorBars.js b/screens/sErrorBars.js
index 3c1ab4f..27c7690 100644
--- a/screens/sErrorBars.js
+++ b/screens/sErrorBars.js
@@ -5,8 +5,8 @@ import Plotly from 'react-native-plotly';
const upTrace = {
__id: 'up',
- x: [0, 1, 2],
- y: [6, 10, 2],
+ x: [4, 7, 3],
+ y: [3, 5, 4],
error_y: {
type: 'data',
array: [1, 2, 3],
@@ -57,7 +57,7 @@ const SER = ({navigation}) => {
setLoading(false)}
debug
diff --git a/screens/spc.js b/screens/spc.js
index 2e7c811..4246bc8 100644
--- a/screens/spc.js
+++ b/screens/spc.js
@@ -88,7 +88,7 @@ const spc = ({navigation}) => {
Reading Date/Time
- Humidity
+ Temp
- 3:00pm 7/5/2020
+ {time}
-
+ {global.temp}
- 12:00 pm 9/8/2020
+ {time}
- 8.0
+ {temphistoryLatest[1]}
- 3:00pm 7/5/2020
+ {time}
- 6.0
+ {temphistoryLatest[0]}
- 12:00 pm 9/8/2020
+ {time}
- 8.0
+ {tempHistory[2]}
- 3:00pm 7/5/2020
+ {time}
- 6.0
+ {tempHistory[1]}
- 12:00 pm 9/8/2020
+ {time}
- 8.0
+ {tempHistory[0]}
Chart
diff --git a/screens/waterTemperature.js b/screens/waterTemperature.js
index 537be61..ea412b1 100644
--- a/screens/waterTemperature.js
+++ b/screens/waterTemperature.js
@@ -35,7 +35,27 @@ class waterTempScreen extends Component {
}
render () {
- const data = [18,18,19,18,20,22,23,24]
+ const wtempHistory = [18,19,18];
+ const wtemphistoryLatest = [];
+ var i;
+
+ for (i = 0; i < 5; i++) {
+ var x = Math.random(-1,2);
+ x = x*10;
+ console.log(x);
+ x = global.waterTemp + x;
+ x = Math.round(x);
+ wtemphistoryLatest.push(x);
+ console.log(x);
+ console.log(wtemphistoryLatest);
+
+
+ }
+ var time = global.time.toString();
+ //var Time = 'FirestoreTimestamp';
+ var wlatesttemp = global.waterTemp;
+ global.waterdata = [wtemphistoryLatest[0],wtemphistoryLatest[5],wtemphistoryLatest[4],wtemphistoryLatest[3],wtemphistoryLatest[2],wtemphistoryLatest[1],wtempHistory[1],wtempHistory[0]];
+
const contentInset = { top: 20, bottom: 20 }
return (
@@ -64,42 +84,42 @@ class waterTempScreen extends Component {
Reading Date/Time
- Humidity
+ Water Temp
- 3:00pm 10/25/2020
+ {time}
- 24
+ {global.waterTemp}
- 2:00pm 10/25/2020
+ {time}
- 24
+ {wtemphistoryLatest[2]}
- 1:00pm 10/25/2020
+ {time}
- 23
+ {wtemphistoryLatest[1]}
- 12:00pm 10/25/2020
+ {time}
- 23
+ {wtempHistory[2]}
- 11:00am 10/25/2020
+ {time}
- 23
+ {wtempHistory[1]}
- 10:00am 10/25/2020
+ {time}
- 22
+ {wtempHistory[0]}
Chart
From 0e09d3290fbdf5138ad71c01b8613aca41f23518 Mon Sep 17 00:00:00 2001
From: Varun Sendilraj <57602146+VarunSendilraj@users.noreply.github.com>
Date: Tue, 27 Oct 2020 23:42:32 -0400
Subject: [PATCH 06/16] Update README.md
---
README.md | 18 ++++++------------
1 file changed, 6 insertions(+), 12 deletions(-)
diff --git a/README.md b/README.md
index 1141038..6e8e34b 100644
--- a/README.md
+++ b/README.md
@@ -68,14 +68,14 @@ Screens Descriptions:
-* Here is the description of the first screen
+
-* Here is the description of the first screen
+
@@ -83,14 +83,14 @@ Screens Descriptions:
-* Here is the description of the first screen
+
-* Here is the description of the first screen
+
@@ -99,7 +99,7 @@ Screens Descriptions:
-* Here is the description of the first screen
+
@@ -108,7 +108,7 @@ Screens Descriptions:
-* Here is the description of the first screen
+
@@ -117,7 +117,6 @@ Screens Descriptions:
-* Here is the description of the first screen
@@ -199,11 +198,6 @@ http://localhost:3000/sendData/temp,Ph,light,co2,waterTemp,humidity
-
-
-
-
-
## Contact
Lambert Highschool
From fde6360dd71636d9d8b7acb0e8944a3fcc97a198 Mon Sep 17 00:00:00 2001
From: Varun Sendilraj <57602146+VarunSendilraj@users.noreply.github.com>
Date: Tue, 27 Oct 2020 23:52:53 -0400
Subject: [PATCH 07/16] Update README.md
---
README.md | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/README.md b/README.md
index 6e8e34b..345f2a5 100644
--- a/README.md
+++ b/README.md
@@ -64,21 +64,21 @@ Screens Descriptions:
-
+
-
+
-
+
@@ -86,7 +86,7 @@ Screens Descriptions:
-
+
@@ -94,7 +94,7 @@ Screens Descriptions:
-
+
@@ -103,7 +103,7 @@ Screens Descriptions:
-
+
@@ -112,7 +112,7 @@ Screens Descriptions:
-
+
From d379ed56b3dc5b0e7b115733d50b7333cf3c6b90 Mon Sep 17 00:00:00 2001
From: Varun Sendilraj <57602146+VarunSendilraj@users.noreply.github.com>
Date: Tue, 27 Oct 2020 23:53:34 -0400
Subject: [PATCH 08/16] Update README.md
---
README.md | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/README.md b/README.md
index 345f2a5..e94fefa 100644
--- a/README.md
+++ b/README.md
@@ -71,14 +71,14 @@ Screens Descriptions:
-
+
-
+
@@ -86,7 +86,7 @@ Screens Descriptions:
-
+
@@ -94,7 +94,7 @@ Screens Descriptions:
-
+
@@ -103,7 +103,7 @@ Screens Descriptions:
-
+
@@ -112,7 +112,7 @@ Screens Descriptions:
-
+
@@ -129,7 +129,7 @@ Once the data is collected from the sensors, the data is sent to the Raspberry P
-
+
From 4ea6aa5595ee44acc5f0aaa3f3a3469412323cc0 Mon Sep 17 00:00:00 2001
From: Varun Sendilraj <57602146+VarunSendilraj@users.noreply.github.com>
Date: Tue, 27 Oct 2020 23:58:31 -0400
Subject: [PATCH 09/16] Update README.md
---
README.md | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/README.md b/README.md
index e94fefa..39ff03e 100644
--- a/README.md
+++ b/README.md
@@ -177,7 +177,8 @@ Login info for test account: (create user will be created in future version)
## Testing
-Download the 'test' folder in the judging form
+Download the code from this repository to run a node js server to update values on the app.
+
### Mac - Android or iOS
1. Open Terminal and navigate to the project folder
From 5e26df8e23718809c82b5533fda2fadf3f930e53 Mon Sep 17 00:00:00 2001
From: Varun Sendilraj <57602146+VarunSendilraj@users.noreply.github.com>
Date: Tue, 27 Oct 2020 23:59:27 -0400
Subject: [PATCH 10/16] Update README.md
---
README.md | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/README.md b/README.md
index 39ff03e..a8129fa 100644
--- a/README.md
+++ b/README.md
@@ -177,10 +177,10 @@ Login info for test account: (create user will be created in future version)
## Testing
-Download the code from this repository to run a node js server to update values on the app.
-
+Download the code from this repository to run a node js server to update values on the app:
+https://github.com/VarunSendilraj/testingagro-q/tree/main
-### Mac - Android or iOS
+### Run
1. Open Terminal and navigate to the project folder
1. To run the server, enter the following command in the terminal:
```
From 961f647c27f233c52164685648cd23ff839b1226 Mon Sep 17 00:00:00 2001
From: Varun Sendilraj <57602146+VarunSendilraj@users.noreply.github.com>
Date: Tue, 5 Jan 2021 19:26:36 -0500
Subject: [PATCH 11/16] Update README.md
---
README.md | 2 ++
1 file changed, 2 insertions(+)
diff --git a/README.md b/README.md
index a8129fa..0183685 100644
--- a/README.md
+++ b/README.md
@@ -140,6 +140,8 @@ Once the data is collected from the sensors, the data is sent to the Raspberry P
## Installation
+AgroSENSE uses React Native . First, install the React Native CLI using the instructions at https://reactnative.dev/docs/environment-setup.
+
Download the project files to your computer
### Mac - Android or iOS
From f6375472842ec92a94f515dcd7c2a292addf1e39 Mon Sep 17 00:00:00 2001
From: Varun Sendilraj <57602146+VarunSendilraj@users.noreply.github.com>
Date: Tue, 5 Jan 2021 19:29:33 -0500
Subject: [PATCH 12/16] Update README.md
---
README.md | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 0183685..81ef656 100644
--- a/README.md
+++ b/README.md
@@ -140,7 +140,9 @@ Once the data is collected from the sensors, the data is sent to the Raspberry P
## Installation
-AgroSENSE uses React Native . First, install the React Native CLI using the instructions at https://reactnative.dev/docs/environment-setup.
+Agro-Q uses React Native . First, install the React Native CLI using the instructions at https://reactnative.dev/docs/environment-setup.
+Select the “React Native CLI Quickstart” option and your desired platforms and complete the installation with the instructions provided.
+
Download the project files to your computer
From 8e7d6ee8a3635422410d97092aae9c2c84fcb972 Mon Sep 17 00:00:00 2001
From: Varun Sendilraj
Date: Sat, 30 Oct 2021 16:22:51 -0400
Subject: [PATCH 13/16] Create README1.md
---
README1.md | 228 +++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 228 insertions(+)
create mode 100644 README1.md
diff --git a/README1.md b/README1.md
new file mode 100644
index 0000000..bd6cf87
--- /dev/null
+++ b/README1.md
@@ -0,0 +1,228 @@
+#please change branch to latest version
+
+
+<<<<<<< latestver
+[![Firebase][Firebase]][firebase-url]
+
+
+
+
+
+
+
+
+
+
+
Agro-Q
+
+
+ Revolutionizing the Future of Hydroponics
+
+
+
+
+
+
+
+
+
+
+## Table of Contents
+
+
+* [Overview](#Overview)
+ * [Screens](#Screens)
+ * [DataFlow](#DataFLow)
+* [Setup and Run](#SetupandRun)
+* [Contanct](#Contact)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+## Overview
+
+The Agro-Q mobile app has a wide variety of features that allow users to maintain their hydroponics system. Users can view sensor data of pH, water temperature, CO2, atmospheric temperature, and light intensity, via the app, and analyze the plant growth. The Agro-Q app allows collaboration among the user by sharing their specific hydroponics setups through the google maps in the app.
+
+
+
+### Screens
+
+
+#screenshots
+
+
+
+Screens Descriptions:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+### DataFlow
+
+Once the data is collected from the sensors, the data is sent to the Raspberry Pi using a serial connection. Using the Raspberry Pi’s internet connection, the data is then sent to the Firebase Cloud Server to be stored in a non-sql database. The data is then read from the database and displayed in the Agro-Q app for users to monitor their hydroponics system.
+
+
+
+
+
+
+
+
+
+
+
+
+
+## Installation
+
+Agro-Q uses React Native . First, install the React Native CLI using the instructions at https://reactnative.dev/docs/environment-setup.
+Select the “React Native CLI Quickstart” option and your desired platforms and complete the installation with the instructions provided.
+
+
+Download the project files to your computer
+
+### Mac - Android or iOS
+1. Open Terminal and navigate to the project folder
+1. To run the app on the iOS Simulator, Xcode must be installed with a valid signing profile. Enter the following command in the terminal:
+```
+npx react-native run-ios
+```
+
+Run the app on the iOS Simulator by opening the .xcworkspace file and clicking the play button at the top of the screen. To run on a physical iOS device, plug the device into the Mac and choose the device from the dropdown menu at the top of the screen.
+
+
+To run on an Android simulator, simply use the following command or open Android Studio and run the app manually.
+```
+npx react-native run-android
+```
+
+### Windows - Android
+1. To run the app on the Android simulator, open a command prompt window and navigate to the project folder
+2. Run the following command:
+```
+npx react-native run-android
+```
+To run on a physical Android device, plug in the device into the computer and use Android Studio to manually run the app onto the device.
+
+
+Note to user:
+- app currently optimized for android
+- Data uploads to the app between 5sec -1min
+- Sometimes data may not update properly so restart the app and run again
+
+Login info for test account: (create user will be created in future version)
+- Username : lamberttest@gamil.com
+- Password : lambert123
+
+
+## Testing
+Download the code from this repository to run a node js server to update values on the app:
+https://github.com/VarunSendilraj/testingagro-q/tree/main
+
+### Run
+1. Open Terminal and navigate to the project folder
+1. To run the server, enter the following command in the terminal:
+```
+npm install
+```
+To start the server run the following command in the terminal:
+```
+npm start
+```
+
+To update the data values type the values in the following link
+```
+http://localhost:3000/sendData/temp,Ph,light,co2,waterTemp,humidity
+
+```
+
+
+
+
+## Contact
+varunsendil2003@gmail.com
+
+
+
+
+
+[firebase]: https://camo.githubusercontent.com/2d891f78cbe8e96dbff64e86fa29ab801c2ebe90/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f436c6f75642d46697265626173652d6635626132333f6c6f676f3d4669726562617365
+[firebase-url]:https://rnfirebase.io/
+[app1]: https://2020.igem.org/wiki/images/5/58/T--Lambert_GA--Agro1.png
+[app2]: https://2020.igem.org/wiki/images/a/a2/T--Lambert_GA--home.png
+[app3]: https://2020.igem.org/wiki/images/e/e0/T--Lambert_GA--Agro3.png
+[app4]: https://2020.igem.org/wiki/images/3/3e/T--Lambert_GA--Agro5.png
+[app5]: https://2020.igem.org/wiki/images/1/15/T--Lambert_GA--Agro6.png
+[app6]:https://2020.igem.org/wiki/images/2/22/T--Lambert_GA--ScanAPp.png
+[app7]: https://2020.igem.org/wiki/images/e/e0/T--Lambert_GA--Agro7.png
+[app8]:https://2020.igem.org/wiki/images/7/7e/T--Lambert_GA--Agro9.png
+=======
+To learn more about the app visit: https://2020.igem.org/Team:Lambert_GA/Software#agroQ
+>>>>>>> master
From a354b56bef4096cff07fcc4541c3dcea76aa9ab0 Mon Sep 17 00:00:00 2001
From: Varun Sendilraj
Date: Sat, 30 Oct 2021 16:23:22 -0400
Subject: [PATCH 14/16] Update README.md
---
README.md | 228 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 228 insertions(+)
diff --git a/README.md b/README.md
index e69de29..a6ff85d 100644
--- a/README.md
+++ b/README.md
@@ -0,0 +1,228 @@
+#please change branch to latest version
+
+
+<<<<<<< latestver
+[![Firebase][Firebase]][firebase-url]
+
+
+
+
+
+
+
+
+
+
+
Agro-Q
+
+
+ Revolutionizing the Future of Hydroponics
+
+
+
+
+
+
+
+
+
+
+## Table of Contents
+
+
+* [Overview](#Overview)
+ * [Screens](#Screens)
+ * [DataFlow](#DataFLow)
+* [Setup and Run](#SetupandRun)
+* [Contanct](#Contact)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+## Overview
+
+The Agro-Q mobile app has a wide variety of features that allow users to maintain their hydroponics system. Users can view sensor data of pH, water temperature, CO2, atmospheric temperature, and light intensity, via the app, and analyze the plant growth. The Agro-Q app allows collaboration among the user by sharing their specific hydroponics setups through the google maps in the app.
+
+
+
+### Screens
+
+
+#screenshots
+
+
+
+Screens Descriptions:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+### DataFlow
+
+Once the data is collected from the sensors, the data is sent to the Raspberry Pi using a serial connection. Using the Raspberry Pi’s internet connection, the data is then sent to the Firebase Cloud Server to be stored in a non-sql database. The data is then read from the database and displayed in the Agro-Q app for users to monitor their hydroponics system.
+
+
+
+
+
+
+
+
+
+
+
+
+
+## Installation
+
+Agro-Q uses React Native . First, install the React Native CLI using the instructions at https://reactnative.dev/docs/environment-setup.
+Select the “React Native CLI Quickstart” option and your desired platforms and complete the installation with the instructions provided.
+
+
+Download the project files to your computer
+
+### Mac - Android or iOS
+1. Open Terminal and navigate to the project folder
+1. To run the app on the iOS Simulator, Xcode must be installed with a valid signing profile. Enter the following command in the terminal:
+```
+npx react-native run-ios
+```
+
+Run the app on the iOS Simulator by opening the .xcworkspace file and clicking the play button at the top of the screen. To run on a physical iOS device, plug the device into the Mac and choose the device from the dropdown menu at the top of the screen.
+
+
+To run on an Android simulator, simply use the following command or open Android Studio and run the app manually.
+```
+npx react-native run-android
+```
+
+### Windows - Android
+1. To run the app on the Android simulator, open a command prompt window and navigate to the project folder
+2. Run the following command:
+```
+npx react-native run-android
+```
+To run on a physical Android device, plug in the device into the computer and use Android Studio to manually run the app onto the device.
+
+
+Note to user:
+- app currently optimized for android
+- Data uploads to the app between 5sec -1min
+- Sometimes data may not update properly so restart the app and run again
+
+Login info for test account: (create user will be created in future version)
+- Username : lamberttest@gamil.com
+- Password : lambert123
+
+
+## Testing
+Download the code from this repository to run a node js server to update values on the app:
+https://github.com/VarunSendilraj/testingagro-q/tree/main
+
+### Run
+1. Open Terminal and navigate to the project folder
+1. To run the server, enter the following command in the terminal:
+```
+npm install
+```
+To start the server run the following command in the terminal:
+```
+npm start
+```
+
+To update the data values type the values in the following link
+```
+http://localhost:3000/sendData/temp,Ph,light,co2,waterTemp,humidity
+
+```
+
+
+
+
+## Contact
+varunsendil2003@gmail.com
+
+
+
+
+
+[firebase]: https://camo.githubusercontent.com/2d891f78cbe8e96dbff64e86fa29ab801c2ebe90/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f436c6f75642d46697265626173652d6635626132333f6c6f676f3d4669726562617365
+[firebase-url]:https://rnfirebase.io/
+[app1]: https://2020.igem.org/wiki/images/5/58/T--Lambert_GA--Agro1.png
+[app2]: https://2020.igem.org/wiki/images/a/a2/T--Lambert_GA--home.png
+[app3]: https://2020.igem.org/wiki/images/e/e0/T--Lambert_GA--Agro3.png
+[app4]: https://2020.igem.org/wiki/images/3/3e/T--Lambert_GA--Agro5.png
+[app5]: https://2020.igem.org/wiki/images/1/15/T--Lambert_GA--Agro6.png
+[app6]:https://2020.igem.org/wiki/images/2/22/T--Lambert_GA--ScanAPp.png
+[app7]: https://2020.igem.org/wiki/images/e/e0/T--Lambert_GA--Agro7.png
+[app8]:https://2020.igem.org/wiki/images/7/7e/T--Lambert_GA--Agro9.png
+=======
+To learn more about the app visit: https://2020.igem.org/Team:Lambert_GA/Software#agroQ
+>>>>>>> master
From 586b755d9d2ebcf9bda178cfbf125101a456ed42 Mon Sep 17 00:00:00 2001
From: Varun Sendilraj
Date: Sat, 30 Oct 2021 16:23:44 -0400
Subject: [PATCH 15/16] Update README.md
---
README.md | 4 ----
1 file changed, 4 deletions(-)
diff --git a/README.md b/README.md
index a6ff85d..49a9178 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,3 @@
-#please change branch to latest version
-
-
-<<<<<<< latestver
[![Firebase][Firebase]][firebase-url]
From 032764803af36231ee94f9b5e78feda803321c85 Mon Sep 17 00:00:00 2001
From: Varun Sendilraj
Date: Sat, 30 Oct 2021 16:24:14 -0400
Subject: [PATCH 16/16] Update README.md
---
README.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index 49a9178..c55da1a 100644
--- a/README.md
+++ b/README.md
@@ -219,6 +219,6 @@ varunsendil2003@gmail.com
[app6]:https://2020.igem.org/wiki/images/2/22/T--Lambert_GA--ScanAPp.png
[app7]: https://2020.igem.org/wiki/images/e/e0/T--Lambert_GA--Agro7.png
[app8]:https://2020.igem.org/wiki/images/7/7e/T--Lambert_GA--Agro9.png
-=======
+
To learn more about the app visit: https://2020.igem.org/Team:Lambert_GA/Software#agroQ
->>>>>>> master
+