diff --git a/src/website/package-lock.json b/src/website/package-lock.json index 47bd58f4a..6af887e3f 100644 --- a/src/website/package-lock.json +++ b/src/website/package-lock.json @@ -5,9 +5,10 @@ "packages": { "": { "dependencies": { - "@emotion/react": "^11.11.1", + "@emotion/react": "^11.11.4", "@emotion/styled": "^11.11.0", - "@mui/material": "^5.14.12", + "@mui/icons-material": "^5.15.10", + "@mui/material": "^5.15.12", "@react-google-maps/api": "^2.19.2", "@reduxjs/toolkit": "^1.9.5", "dotenv": "^16.3.1", @@ -682,9 +683,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.2.tgz", - "integrity": "sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.9.tgz", + "integrity": "sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -834,13 +835,14 @@ "license": "MIT" }, "node_modules/@emotion/react": { - "version": "11.11.1", - "license": "MIT", + "version": "11.11.4", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.11.4.tgz", + "integrity": "sha512-t8AjMlF0gHpvvxk5mAtCqR4vmxiGHCeJBaQO6gncUSdklELOgtwjerNY2yuJNfwnc6vi16U/+uMF+afIawJ9iw==", "dependencies": { "@babel/runtime": "^7.18.3", "@emotion/babel-plugin": "^11.11.0", "@emotion/cache": "^11.11.0", - "@emotion/serialize": "^1.1.2", + "@emotion/serialize": "^1.1.3", "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", "@emotion/utils": "^1.2.1", "@emotion/weak-memoize": "^0.3.1", @@ -856,8 +858,9 @@ } }, "node_modules/@emotion/serialize": { - "version": "1.1.2", - "license": "MIT", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.3.tgz", + "integrity": "sha512-iD4D6QVZFDhcbH0RAG1uVu1CwVLMWUkCvAqqlewO/rxf8+87yIBAlt4+AxMiiKPLs5hFc0owNk/sLLAOROw3cA==", "dependencies": { "@emotion/hash": "^0.9.1", "@emotion/memoize": "^0.8.1", @@ -872,7 +875,8 @@ }, "node_modules/@emotion/styled": { "version": "11.11.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.11.0.tgz", + "integrity": "sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng==", "dependencies": { "@babel/runtime": "^7.18.3", "@emotion/babel-plugin": "^11.11.0", @@ -990,28 +994,28 @@ } }, "node_modules/@floating-ui/core": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.0.tgz", - "integrity": "sha512-kK1h4m36DQ0UHGj5Ah4db7R0rHemTqqO0QLvUqi1/mUUp3LuAWbWxdxSIf/XsnH9VS6rRVPLJCncjRzUvyCLXg==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.0.tgz", + "integrity": "sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==", "dependencies": { - "@floating-ui/utils": "^0.1.3" + "@floating-ui/utils": "^0.2.1" } }, "node_modules/@floating-ui/dom": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.3.tgz", - "integrity": "sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==", + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.3.tgz", + "integrity": "sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw==", "dependencies": { - "@floating-ui/core": "^1.4.2", - "@floating-ui/utils": "^0.1.3" + "@floating-ui/core": "^1.0.0", + "@floating-ui/utils": "^0.2.0" } }, "node_modules/@floating-ui/react-dom": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.2.tgz", - "integrity": "sha512-5qhlDvjaLmAst/rKb3VdlCinwTF4EYMiVxuuc/HVUjs46W0zgtbMmAZ1UTsDrRTxRmUEzl92mOtWbeeXL26lSQ==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.8.tgz", + "integrity": "sha512-HOdqOt3R3OGeTKidaLvJKcgg75S6tibQ3Tif4eyd91QnIJWr0NLvoXFpJA/j8HqkFSL68GDca9AuyWEHlhyClw==", "dependencies": { - "@floating-ui/dom": "^1.5.1" + "@floating-ui/dom": "^1.6.1" }, "peerDependencies": { "react": ">=16.8.0", @@ -1019,9 +1023,9 @@ } }, "node_modules/@floating-ui/utils": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.6.tgz", - "integrity": "sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==" + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.1.tgz", + "integrity": "sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==" }, "node_modules/@googlemaps/js-api-loader": { "version": "1.16.2", @@ -1104,16 +1108,16 @@ } }, "node_modules/@mui/base": { - "version": "5.0.0-beta.19", - "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.19.tgz", - "integrity": "sha512-maNBgAscddyPNzFZQUJDF/puxM27Li+NqSBsr/lAP8TLns2VvWS2SoL3OKFOIoRnAMKGY/Ic6Aot6gCYeQnssA==", - "dependencies": { - "@babel/runtime": "^7.23.1", - "@floating-ui/react-dom": "^2.0.2", - "@mui/types": "^7.2.6", - "@mui/utils": "^5.14.13", + "version": "5.0.0-beta.38", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.38.tgz", + "integrity": "sha512-AsjD6Y1X5A1qndxz8xCcR8LDqv31aiwlgWMPxFAX/kCKiIGKlK65yMeVZ62iQr/6LBz+9hSKLiD1i4TZdAHKcQ==", + "dependencies": { + "@babel/runtime": "^7.23.9", + "@floating-ui/react-dom": "^2.0.8", + "@mui/types": "^7.2.13", + "@mui/utils": "^5.15.12", "@popperjs/core": "^2.11.8", - "clsx": "^2.0.0", + "clsx": "^2.1.0", "prop-types": "^15.8.1" }, "engines": { @@ -1121,7 +1125,7 @@ }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/mui" + "url": "https://opencollective.com/mui-org" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0", @@ -1135,28 +1139,53 @@ } }, "node_modules/@mui/core-downloads-tracker": { - "version": "5.14.13", - "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.14.13.tgz", - "integrity": "sha512-3ZUbzcH4yloLKlV6Y+S0Edn2wef9t+EGHSfEkwVCn8E0ULdshifEFgfEroKRegQifDIwcKS/ofccxuZ8njTAYg==", + "version": "5.15.12", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.15.12.tgz", + "integrity": "sha512-brRO+tMFLpGyjEYHrX97bzqeF6jZmKpqqe1rY0LyIHAwP6xRVzh++zSecOQorDOCaZJg4XkGT9xfD+RWOWxZBA==", "funding": { "type": "opencollective", - "url": "https://opencollective.com/mui" + "url": "https://opencollective.com/mui-org" + } + }, + "node_modules/@mui/icons-material": { + "version": "5.15.10", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.15.10.tgz", + "integrity": "sha512-9cF8oUHZKo9oQ7EQ3pxPELaZuZVmphskU4OI6NiJNDVN7zcuvrEsuWjYo1Zh4fLiC39Nrvm30h/B51rcUjvSGA==", + "dependencies": { + "@babel/runtime": "^7.23.9" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@mui/material": "^5.0.0", + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, "node_modules/@mui/material": { - "version": "5.14.13", - "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.14.13.tgz", - "integrity": "sha512-iPEFwhoVG789UVsXX4gqd1eJUlcLW1oceqwJYQN8Z4MpcAKfL9Lv3fda65AwG7pQ5lf+d7IbHzm4m48SWZxI2g==", - "dependencies": { - "@babel/runtime": "^7.23.1", - "@mui/base": "5.0.0-beta.19", - "@mui/core-downloads-tracker": "^5.14.13", - "@mui/system": "^5.14.13", - "@mui/types": "^7.2.6", - "@mui/utils": "^5.14.13", - "@types/react-transition-group": "^4.4.7", - "clsx": "^2.0.0", - "csstype": "^3.1.2", + "version": "5.15.12", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.15.12.tgz", + "integrity": "sha512-vXJGg6KNKucsvbW6l7w9zafnpOp0CWc0Wx4mDykuABTpQ5QQBnZxP7+oB4yAS1hDZQ1WobbeIl0CjxK4EEahkA==", + "dependencies": { + "@babel/runtime": "^7.23.9", + "@mui/base": "5.0.0-beta.38", + "@mui/core-downloads-tracker": "^5.15.12", + "@mui/system": "^5.15.12", + "@mui/types": "^7.2.13", + "@mui/utils": "^5.15.12", + "@types/react-transition-group": "^4.4.10", + "clsx": "^2.1.0", + "csstype": "^3.1.3", "prop-types": "^15.8.1", "react-is": "^18.2.0", "react-transition-group": "^4.4.5" @@ -1166,7 +1195,7 @@ }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/mui" + "url": "https://opencollective.com/mui-org" }, "peerDependencies": { "@emotion/react": "^11.5.0", @@ -1193,12 +1222,12 @@ "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" }, "node_modules/@mui/private-theming": { - "version": "5.14.13", - "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.14.13.tgz", - "integrity": "sha512-5EFqk4tqiSwPguj4NW/6bUf4u1qoUWXy9lrKfNh9H6oAohM+Ijv/7qSxFjnxPGBctj469/Sc5aKAR35ILBKZLQ==", + "version": "5.15.12", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.15.12.tgz", + "integrity": "sha512-cqoSo9sgA5HE+8vZClbLrq9EkyOnYysooepi5eKaKvJ41lReT2c5wOZAeDDM1+xknrMDos+0mT2zr3sZmUiRRA==", "dependencies": { - "@babel/runtime": "^7.23.1", - "@mui/utils": "^5.14.13", + "@babel/runtime": "^7.23.9", + "@mui/utils": "^5.15.12", "prop-types": "^15.8.1" }, "engines": { @@ -1206,7 +1235,7 @@ }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/mui" + "url": "https://opencollective.com/mui-org" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0", @@ -1219,13 +1248,13 @@ } }, "node_modules/@mui/styled-engine": { - "version": "5.14.13", - "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.14.13.tgz", - "integrity": "sha512-1ff/egFQl26hiwcUtCMKAkp4Sgqpm3qIewmXq+GN27fb44lDIACquehMFBuadOjceOFmbIXbayzbA46ZyqFYzA==", + "version": "5.15.11", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.15.11.tgz", + "integrity": "sha512-So21AhAngqo07ces4S/JpX5UaMU2RHXpEA6hNzI6IQjd/1usMPxpgK8wkGgTe3JKmC2KDmH8cvoycq5H3Ii7/w==", "dependencies": { - "@babel/runtime": "^7.23.1", + "@babel/runtime": "^7.23.9", "@emotion/cache": "^11.11.0", - "csstype": "^3.1.2", + "csstype": "^3.1.3", "prop-types": "^15.8.1" }, "engines": { @@ -1233,7 +1262,7 @@ }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/mui" + "url": "https://opencollective.com/mui-org" }, "peerDependencies": { "@emotion/react": "^11.4.1", @@ -1250,17 +1279,17 @@ } }, "node_modules/@mui/system": { - "version": "5.14.13", - "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.14.13.tgz", - "integrity": "sha512-+5+Dx50lG4csbx2sGjrKLozXQJeCpJ4dIBZolyFLkZ+XphD1keQWouLUvJkPQ3MSglLLKuD37pp52YjMncZMEQ==", - "dependencies": { - "@babel/runtime": "^7.23.1", - "@mui/private-theming": "^5.14.13", - "@mui/styled-engine": "^5.14.13", - "@mui/types": "^7.2.6", - "@mui/utils": "^5.14.13", - "clsx": "^2.0.0", - "csstype": "^3.1.2", + "version": "5.15.12", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.15.12.tgz", + "integrity": "sha512-/pq+GO6yN3X7r3hAwFTrzkAh7K1bTF5r8IzS79B9eyKJg7v6B/t4/zZYMR6OT9qEPtwf6rYN2Utg1e6Z7F1OgQ==", + "dependencies": { + "@babel/runtime": "^7.23.9", + "@mui/private-theming": "^5.15.12", + "@mui/styled-engine": "^5.15.11", + "@mui/types": "^7.2.13", + "@mui/utils": "^5.15.12", + "clsx": "^2.1.0", + "csstype": "^3.1.3", "prop-types": "^15.8.1" }, "engines": { @@ -1268,7 +1297,7 @@ }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/mui" + "url": "https://opencollective.com/mui-org" }, "peerDependencies": { "@emotion/react": "^11.5.0", @@ -1289,9 +1318,9 @@ } }, "node_modules/@mui/types": { - "version": "7.2.6", - "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.6.tgz", - "integrity": "sha512-7sjLQrUmBwufm/M7jw/quNiPK/oor2+pGUQP2CULRcFCArYTq78oJ3D5esTaL0UMkXKJvDqXn6Ike69yAOBQng==", + "version": "7.2.13", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.13.tgz", + "integrity": "sha512-qP9OgacN62s+l8rdDhSFRe05HWtLLJ5TGclC9I1+tQngbssu0m2dmFZs+Px53AcOs9fD7TbYd4gc9AXzVqO/+g==", "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0" }, @@ -1302,12 +1331,12 @@ } }, "node_modules/@mui/utils": { - "version": "5.14.13", - "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.14.13.tgz", - "integrity": "sha512-2AFpyXWw7uDCIqRu7eU2i/EplZtks5LAMzQvIhC79sPV9IhOZU2qwOWVnPtdctRXiQJOAaXulg+A37pfhEueQw==", + "version": "5.15.12", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.15.12.tgz", + "integrity": "sha512-8SDGCnO2DY9Yy+5bGzu00NZowSDtuyHP4H8gunhHGQoIlhlY2Z3w64wBzAOLpYw/ZhJNzksDTnS/i8qdJvxuow==", "dependencies": { - "@babel/runtime": "^7.23.1", - "@types/prop-types": "^15.7.7", + "@babel/runtime": "^7.23.9", + "@types/prop-types": "^15.7.11", "prop-types": "^15.8.1", "react-is": "^18.2.0" }, @@ -1316,7 +1345,7 @@ }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/mui" + "url": "https://opencollective.com/mui-org" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0", @@ -2278,9 +2307,9 @@ "license": "MIT" }, "node_modules/@types/prop-types": { - "version": "15.7.8", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.8.tgz", - "integrity": "sha512-kMpQpfZKSCBqltAJwskgePRaYRFukDkm1oItcAbC3gNELR20XIBcN9VRgg4+m8DKsTfkWeA4m4Imp4DDuWy7FQ==" + "version": "15.7.11", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz", + "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==" }, "node_modules/@types/qs": { "version": "6.9.7", @@ -2303,9 +2332,9 @@ } }, "node_modules/@types/react-transition-group": { - "version": "4.4.7", - "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.7.tgz", - "integrity": "sha512-ICCyBl5mvyqYp8Qeq9B5G/fyBSRC0zx3XM3sCC6KkcMsNeAHqXBKkmat4GqdJET5jtYUpZXrxI5flve5qhi2Eg==", + "version": "4.4.10", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.10.tgz", + "integrity": "sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q==", "dependencies": { "@types/react": "*" } @@ -3230,9 +3259,9 @@ "license": "MIT" }, "node_modules/clsx": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", - "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.0.tgz", + "integrity": "sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==", "engines": { "node": ">=6" } @@ -3355,9 +3384,9 @@ } }, "node_modules/csstype": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", - "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" }, "node_modules/d3-array": { "version": "3.2.4", diff --git a/src/website/package.json b/src/website/package.json index d92309816..7075399bc 100644 --- a/src/website/package.json +++ b/src/website/package.json @@ -8,9 +8,10 @@ "format": "prettier --write ." }, "dependencies": { - "@emotion/react": "^11.11.1", + "@emotion/react": "^11.11.4", "@emotion/styled": "^11.11.0", - "@mui/material": "^5.14.12", + "@mui/icons-material": "^5.15.10", + "@mui/material": "^5.15.12", "@react-google-maps/api": "^2.19.2", "@reduxjs/toolkit": "^1.9.5", "dotenv": "^16.3.1", diff --git a/src/website/pages/Polaris/index.tsx b/src/website/pages/Polaris/index.tsx new file mode 100644 index 000000000..0d2303788 --- /dev/null +++ b/src/website/pages/Polaris/index.tsx @@ -0,0 +1,6 @@ +import React from 'react'; +import PolarisContainer from '@/views/PolarisContainer'; + +export default function DataSets() { + return ; +} diff --git a/src/website/pages/index.tsx b/src/website/pages/index.tsx index 8b29c9bdc..ccba2b428 100644 --- a/src/website/pages/index.tsx +++ b/src/website/pages/index.tsx @@ -1,5 +1,6 @@ import dynamic from 'next/dynamic'; import { CircularProgress } from '@mui/material'; +import DashboardContainer from '@/views/DashboardContainer'; import Header from '@/views/components/Header/Header'; import styles from './style.module.css'; @@ -21,10 +22,6 @@ const MapsContainer = dynamic(() => import('@/views/MapsContainer'), { ssr: false, }); -const DashboardContainer = dynamic(() => import('@/views/DashboardContainer'), { - ssr: false, -}); - export default function Home() { return ( <> diff --git a/src/website/public/BoatIconFinal.png b/src/website/public/BoatIconFinal.png deleted file mode 100644 index f4f912dbf..000000000 Binary files a/src/website/public/BoatIconFinal.png and /dev/null differ diff --git a/src/website/public/NSEWCompass.png b/src/website/public/NSEWCompass.png deleted file mode 100644 index 59a8312e3..000000000 Binary files a/src/website/public/NSEWCompass.png and /dev/null differ diff --git a/src/website/public/NSEWCompassBackdrop.png b/src/website/public/NSEWCompassBackdrop.png deleted file mode 100644 index 0ef342a07..000000000 Binary files a/src/website/public/NSEWCompassBackdrop.png and /dev/null differ diff --git a/src/website/public/Polaris.png b/src/website/public/Polaris.png new file mode 100644 index 000000000..37aa5f21b Binary files /dev/null and b/src/website/public/Polaris.png differ diff --git a/src/website/views/DashboardContainer.tsx b/src/website/views/DashboardContainer.tsx index 84532e735..7abe3a498 100644 --- a/src/website/views/DashboardContainer.tsx +++ b/src/website/views/DashboardContainer.tsx @@ -1,17 +1,15 @@ import React from 'react'; import { connect } from 'react-redux'; import UPlotLineChartComponent from './components/LineChart/UPlotLineChart'; -import { GPSState } from '@/stores/GPS/GPSTypes'; -import { BatteriesState } from '@/stores/Batteries/BatteriesTypes'; -import { WindSensorsState } from '@/stores/WindSensors/WindSensorsTypes'; +import { GPS } from '@/stores/GPS/GPSTypes'; +import { Batteries } from '@/stores/Batteries/BatteriesTypes'; +import { WindSensors } from '@/stores/WindSensors/WindSensorsTypes'; import UPlotMultiLineChartComponent from './components/LineChart/UPlotMultiLineChart'; -import SingleValueChart from './components/SingleValueChart/SingleValueChart'; -import { Grid } from '@mui/material'; export interface DashboardContainerProps { - gps: GPSState; - batteries: BatteriesState; - windSensors: WindSensorsState; + gps: GPS[]; + batteries: Batteries[]; + windSensors: WindSensors[]; } class DashboardContainer extends React.PureComponent { @@ -23,11 +21,6 @@ class DashboardContainer extends React.PureComponent { gps.data.map((data) => data.speed), ]; - const gpsDistanceData = [ - gps.data.map((data) => data.latitude), - gps.data.map((data) => data.longitude) - ]; - const batteriesVoltageData = [ batteries.data.map((data) => this._parseISOString(data.timestamp)), batteries.data.map((data) => data.batteries[0].voltage), @@ -46,29 +39,8 @@ class DashboardContainer extends React.PureComponent { windSensors.data.map((data) => data.windSensors[1].speed), ]; - const totalTripDistance = this._computeTotalTripDistance(gpsDistanceData[0], gpsDistanceData[1]) - return (
- {/* - - - - - - - - - - - - - */} { _parseISOString(s: string) { return Math.floor(Date.parse(s) / 1000); // Converts to seconds } - - _haversineDistance(lat1: number, long1: number, lat2: number, long2: number) { - - function toRadians(angle: number): number{ - return angle * Math.PI / 180 - } - - const EARTH_RADIUS = 6571 // in km - - let delta_lat = lat2-lat1 - let delta_lat_rad = toRadians(delta_lat) - let delta_long = long2-long1 - let delta_long_rad = toRadians(delta_long) - - let a = (Math.sin(delta_lat_rad/2) * Math.sin(delta_lat_rad/2)) - + (Math.cos(toRadians(lat1)) * Math.cos(toRadians(lat2)) - * Math.sin(delta_long_rad/2) - * Math.sin(delta_long_rad/2)) - let c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); - - let distance = EARTH_RADIUS * c; - - return distance - } - - _computeTotalTripDistance(latitude: number[], longitude: number[]) { - if(latitude.length != longitude.length){ - return -1; - } - - let totalDistance = 0; - - for(let i = 1; i < latitude.length; i++){ - totalDistance += this._haversineDistance(latitude[i-1], longitude[i-1], latitude[i], longitude[i]); - } - - return Number(totalDistance.toFixed(2)); - } } const mapStateToProps = (state: any) => ({ diff --git a/src/website/views/MapsContainer.tsx b/src/website/views/MapsContainer.tsx index d1d88006b..9cfb561de 100644 --- a/src/website/views/MapsContainer.tsx +++ b/src/website/views/MapsContainer.tsx @@ -5,9 +5,6 @@ import { GlobalPathState } from '@/stores/GlobalPath/GlobalPathTypes'; import { AISShipsState } from '@/stores/AISShips/AISShipsTypes'; import { WayPoint, LocalPathState } from '@/stores/LocalPath/LocalPathTypes'; import Maps, { convertToLatLng } from './components/Maps/Maps'; -import SingleValueLine from './components/SingleValueLine/SingleValueLine'; -import styles from './components/SingleValueLine/singlevalueline.module.css' -import BoatCompass from './components/BoatCompass/BoatCompass'; export interface MapsContainerProps { gps: GPSState; @@ -18,77 +15,22 @@ export interface MapsContainerProps { class MapsContainer extends React.PureComponent { render() { - const { gps } = this.props; - - const gpsDistanceData = [ - gps.data.map((data) => data.latitude), - gps.data.map((data) => data.longitude) - ]; - - const totalTripDistance = this._computeTotalTripDistance(gpsDistanceData[0], gpsDistanceData[1]) - return ( -
-
- -
-
- -
- - convertToLatLng(gpsPoint), - )} - globalPath={this.props.globalPath.data.waypoints.map( - (waypoint: WayPoint) => convertToLatLng(waypoint), - )} - aisShips={this.props.aisShips.data.ships} - localPath={this.props.localPath.data.waypoints.map( - (waypoint: WayPoint) => convertToLatLng(waypoint), - )} - /> -
+ + convertToLatLng(gpsPoint), + )} + globalPath={this.props.globalPath.data.waypoints.map( + (waypoint: WayPoint) => convertToLatLng(waypoint), + )} + aisShips={this.props.aisShips.data.ships} + localPath={this.props.localPath.data.waypoints.map( + (waypoint: WayPoint) => convertToLatLng(waypoint), + )} + /> ); } - - _haversineDistance(lat1: number, long1: number, lat2: number, long2: number) { - - function toRadians(angle: number): number{ - return angle * Math.PI / 180 - } - - const EARTH_RADIUS = 6571 // in km - - let delta_lat = lat2-lat1 - let delta_lat_rad = toRadians(delta_lat) - let delta_long = long2-long1 - let delta_long_rad = toRadians(delta_long) - - let a = (Math.sin(delta_lat_rad/2) * Math.sin(delta_lat_rad/2)) - + (Math.cos(toRadians(lat1)) * Math.cos(toRadians(lat2)) - * Math.sin(delta_long_rad/2) - * Math.sin(delta_long_rad/2)) - let c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); - - let distance = EARTH_RADIUS * c; - - return distance - } - - _computeTotalTripDistance(latitude: number[], longitude: number[]) { - if(latitude.length != longitude.length){ - return -1; - } - - let totalDistance = 0; - - for(let i = 1; i < latitude.length; i++){ - totalDistance += this._haversineDistance(latitude[i-1], longitude[i-1], latitude[i], longitude[i]); - } - - return Number(totalDistance.toFixed(2)); - } } const mapStateToProps = (state: any) => ({ diff --git a/src/website/views/PolarisContainer.tsx b/src/website/views/PolarisContainer.tsx new file mode 100644 index 000000000..3ebd0e3c3 --- /dev/null +++ b/src/website/views/PolarisContainer.tsx @@ -0,0 +1,101 @@ +import React from 'react'; +import { connect } from 'react-redux'; +import CustomAccordion from './components/DropDown/DropDown'; +import Grid from '@mui/material/Grid'; +import { styled } from '@mui/material/styles'; + +const Container = styled('div')(({ theme }) => ({ + flexGrow: 1, + padding: theme.spacing(2), + backgroundColor: '#ecf0f1', +})); + +const TopHeader = styled('div')(({ theme }) => ({ + backgroundColor: '#2c3e50', + color: 'white', + padding: theme.spacing(13), + display: 'flex', + justifyContent: 'flex-start', +})); + +const Title = styled('span')(({ theme }) => ({ + marginLeft: '700px', + fontWeight: 'bold', + fontSize: '3.5em', +})); + +const DataSetHeader = styled('div')(({ theme }) => ({ + marginTop: theme.spacing(2.5), + marginBottom: theme.spacing(0), + display: 'flex', + justifyContent: 'center', + alignItems: 'center', + fontSize: '2em', + fontWeight: 'bold', + color: 'white', + backgroundColor: '#2c3e50', + width: '100%', + padding: `${theme.spacing(50)}px 0`, + })); + +class PolarisContainer extends React.Component { + render() { + const voyageInfo = { + image: "./Polaris.png", + header: "Polaris", + desc: "Long description here...", + }; + + return ( + + {/* Center the grid items */} + + + {voyageInfo.header} + + + + + {voyageInfo.header} + + + +

{voyageInfo.desc}

+
+ + Downloadable Data Sets + + + + Insert Data sets here + + + + + Insert Data sets here + + + + + Insert Data sets here + + + + + Insert Data sets here + + +
+
+ ); + } +} + +export default connect()(PolarisContainer); diff --git a/src/website/views/components/BoatCompass/BoatCompass.tsx b/src/website/views/components/BoatCompass/BoatCompass.tsx deleted file mode 100644 index 0c864681a..000000000 --- a/src/website/views/components/BoatCompass/BoatCompass.tsx +++ /dev/null @@ -1,62 +0,0 @@ -import React from "react"; -import Image from "next/image"; -import { Grid, Paper, Typography } from "@mui/material"; -import SingleValueLine from "../SingleValueLine/SingleValueLine"; -import styles from "./boatcompass.module.css" - -interface BoatCompassProps { - angle: number; -} - -class BoatCompass extends React.Component { - render() { - const { angle } = this.props; - - return ( - - - - {`${this._rotateBoat(angle).toFixed()}°`} - - - Boat Icon - Compass Background - - ); - } - - _rotateBoat(boatAngle: number) { - return (boatAngle < 0) ? boatAngle + 360 : boatAngle; - } - - _rotateBoatString(boatAngle: number) { - return `rotate(${this._rotateBoat(boatAngle)}deg)`; - } -} - -export default BoatCompass; diff --git a/src/website/views/components/BoatCompass/boatcompass.module.css b/src/website/views/components/BoatCompass/boatcompass.module.css deleted file mode 100644 index 2aaa86b21..000000000 --- a/src/website/views/components/BoatCompass/boatcompass.module.css +++ /dev/null @@ -1,13 +0,0 @@ -.bottom { - position: absolute; -} - -.middle { - position: absolute; - z-index: 1; -} - -.top { - position: relative; - z-index: 1000000000; -} diff --git a/src/website/views/components/DropDown/DropDown.tsx b/src/website/views/components/DropDown/DropDown.tsx new file mode 100644 index 000000000..3fc240419 --- /dev/null +++ b/src/website/views/components/DropDown/DropDown.tsx @@ -0,0 +1,43 @@ +import React from 'react'; +import { Accordion, AccordionSummary, AccordionDetails } from '@mui/material'; +import ExpandMoreIcon from '@mui/icons-material/ExpandMore'; + +function CustomAccordion({ title, children }) { + return ( + + } + aria-controls="panel1-content" + id="panel1-header" + sx={{ + backgroundColor: '#3498db', + color: 'white', + '& .MuiAccordionSummary-expandIconWrapper.Mui-expanded': { + transform: 'rotate(180deg)', + }, + '&.Mui-expanded': { + minHeight: 48, + backgroundColor: '#2980b9', + }, + '&:hover': { + backgroundColor: '#2980b9', + }, + }} + > + {title} + + + {children} + + + ); +} + +export default CustomAccordion; diff --git a/src/website/views/components/LineChart/UPlotLineChart.tsx b/src/website/views/components/LineChart/UPlotLineChart.tsx index 7364d0552..9cd60f5db 100644 --- a/src/website/views/components/LineChart/UPlotLineChart.tsx +++ b/src/website/views/components/LineChart/UPlotLineChart.tsx @@ -14,9 +14,6 @@ export interface IUPlotLineChartState { options: uPlot.Options; } -const fmtDate = uPlot.fmtDate("{YYYY}-{MM}-{DD} {h}:{mm}:{ss}{aa}"); -const localTz = new Intl.DateTimeFormat().resolvedOptions().timeZone; -const tzDate = ts => uPlot.tzDate(new Date(ts * 1e3), localTz); export default class UPlotLineChartComponent extends React.Component< IUPlotLineChartProps, IUPlotLineChartState @@ -27,36 +24,21 @@ export default class UPlotLineChartComponent extends React.Component< width: 0, height: 250, scales: { - x: {}, + x: { + time: true, + }, y: {}, }, axes: [{}], series: [ - { - show: true, - spanGaps: false, - label: "Time", - value: (self, rawValue, xValuesIndex, currentVal) => { - if (currentVal == null) { - let xValues = self.data[xValuesIndex]; - let xValue = fmtDate(tzDate(xValues[xValues.length - 1])); - return `${xValue}`; - } - return fmtDate(tzDate(rawValue)); - }, - stroke: 'red', - width: 1, - band: true, - }, + {}, { show: true, spanGaps: false, label: this.props.label, - value: (self, rawValue, yValuesIndex, currentVal) => { - if (currentVal == null) { - let yValues = self.data[yValuesIndex]; - let yValue = (yValues[yValues.length - 1])?.toFixed(2); - return `${yValue} ${this.props.unit}`; + value: (self, rawValue) => { + if (!rawValue) { + return `-- ${this.props.unit}`; } return rawValue?.toFixed(2) + ` ${this.props.unit}`; }, diff --git a/src/website/views/components/LineChart/UPlotMultiLineChart.tsx b/src/website/views/components/LineChart/UPlotMultiLineChart.tsx index f666147d4..37140595f 100644 --- a/src/website/views/components/LineChart/UPlotMultiLineChart.tsx +++ b/src/website/views/components/LineChart/UPlotMultiLineChart.tsx @@ -15,9 +15,6 @@ export interface IUPlotMultiLineChartState { options: uPlot.Options; } -const fmtDate = uPlot.fmtDate("{YYYY}-{MM}-{DD} {h}:{mm}:{ss}{aa}"); -const localTz = new Intl.DateTimeFormat().resolvedOptions().timeZone; -const tzDate = ts => uPlot.tzDate(new Date(ts * 1e3), localTz); export default class UPlotMultiLineChartComponent extends React.Component< IUPlotMultiLineChartProps, IUPlotMultiLineChartState @@ -28,36 +25,21 @@ export default class UPlotMultiLineChartComponent extends React.Component< width: 0, height: 250, scales: { - x: {}, + x: { + time: true, + }, y: {}, }, axes: [{}], series: [ - { - show: true, - spanGaps: false, - label: "Time", - value: (self, rawValue, xValuesIndex, currentVal) => { - if (currentVal == null) { - let xValues = self.data[xValuesIndex]; - let xValue = fmtDate(tzDate(xValues[xValues.length - 1])); - return `${xValue}`; - } - return fmtDate(tzDate(rawValue)); - }, - stroke: 'red', - width: 1, - band: true, - }, + {}, { show: true, spanGaps: false, label: this.props.labelOne, - value: (self, rawValue, yValuesIndex, currentVal) => { - if (currentVal == null) { - let yValues = self.data[yValuesIndex] - let yValue = (yValues[yValues.length - 1])?.toFixed(2) - return `${yValue} ${this.props.unit}` + value: (self, rawValue) => { + if (!rawValue) { + return `-- ${this.props.unit}`; } return rawValue?.toFixed(2) + ` ${this.props.unit}`; }, @@ -69,11 +51,9 @@ export default class UPlotMultiLineChartComponent extends React.Component< show: true, spanGaps: false, label: this.props.labelTwo, - value: (self, rawValue, yValuesIndex, currentVal) => { - if (currentVal == null) { - let yValues = self.data[yValuesIndex] - let yValue = (yValues[yValues.length - 1])?.toFixed(2) - return `${yValue} ${this.props.unit}` + value: (self, rawValue) => { + if (!rawValue) { + return `-- ${this.props.unit}`; } return rawValue?.toFixed(2) + ` ${this.props.unit}`; }, diff --git a/src/website/views/components/SingleValueChart/SingleValueChart.tsx b/src/website/views/components/SingleValueChart/SingleValueChart.tsx deleted file mode 100644 index 83f1803b5..000000000 --- a/src/website/views/components/SingleValueChart/SingleValueChart.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import React from 'react'; -import { Typography } from '@mui/material'; -import Card from '@mui/material/Card'; -import CardContent from '@mui/material/CardContent'; -import styles from './singlevaluechart.module.css' - - -interface SingleValueChartProps { - title: string; - data: number | string | undefined; - unit: string; -} - -class SingleValueChart extends React.Component { - render() { - const { title, data, unit } = this.props; - - return ( - - - - {`${title}`} - - - {(data) ? `${data} ${unit}` : `-- ${unit}`} - - - - ); - } -} - -export default SingleValueChart; diff --git a/src/website/views/components/SingleValueChart/singlevaluechart.module.css b/src/website/views/components/SingleValueChart/singlevaluechart.module.css deleted file mode 100644 index a88cd0719..000000000 --- a/src/website/views/components/SingleValueChart/singlevaluechart.module.css +++ /dev/null @@ -1,5 +0,0 @@ -.card{ - display: block; - width: 15vw; - height: 13vh; -} diff --git a/src/website/views/components/SingleValueLine/SingleValueLine.tsx b/src/website/views/components/SingleValueLine/SingleValueLine.tsx deleted file mode 100644 index 85c825c5b..000000000 --- a/src/website/views/components/SingleValueLine/SingleValueLine.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import React from 'react'; -import { Grid, Paper, Typography } from '@mui/material'; - - -interface SingleValueLineProps { - title: string; - data: number | string | undefined; - unit: string; -} - -class SingleValueLine extends React.Component { - render() { - const { title, data, unit } = this.props; - - return ( - - - - - {(data) ? `${title}: ${data} ${unit}` : `-- ${unit}`} - - - - - ); - } -} - -export default SingleValueLine; diff --git a/src/website/views/components/SingleValueLine/singlevalueline.module.css b/src/website/views/components/SingleValueLine/singlevalueline.module.css deleted file mode 100644 index 99b7ad42c..000000000 --- a/src/website/views/components/SingleValueLine/singlevalueline.module.css +++ /dev/null @@ -1,17 +0,0 @@ -.parent { - position: relative; -} - -.topRight { - position: absolute; - z-index: 10000000000; - top: 0.6vh; - right: 0.3vw; -} - -.bottomRight { - position: absolute; - z-index: 10000000000; - bottom: 3.1vh; - right: 0.5vw; -} diff --git a/src/website/views/components/VoyagePageTemplate/VoyagePageTemplate.tsx b/src/website/views/components/VoyagePageTemplate/VoyagePageTemplate.tsx new file mode 100644 index 000000000..d3ad68bba --- /dev/null +++ b/src/website/views/components/VoyagePageTemplate/VoyagePageTemplate.tsx @@ -0,0 +1,79 @@ +import React from 'react'; +function VoyagePageTemplate({ image, header, desc }) { + const containerStyle = { + display: 'flex', + flexDirection: 'column', + backgroundColor: '#3498db', + color: 'white', + fontFamily: 'Verdana, Geneva, sans-serif', + width: '100%', + height: '100%', + boxSizing: 'border-box', + position: 'relative', + }; + + const headerStyle = { + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + padding: '20px', + width: 'auto', + backgroundColor: '#2c3e50', + minHeight: '300px', + position: 'relative' + }; + + const imageStyle = { + width: '40%', + height: '200%', + position: 'absolute', + top: '20%', + left: '25%', + transform: 'translateX(-50%)', + }; + + const headerTextStyle = { + fontSize: '2.5em', + fontWeight: 'bold', + margin: 1, + zIndex: 1, + position: 'relative', + right: '-10%' + }; + + const descBoxStyle = { + display: 'flex', + justifyContent: 'center', + alignItems: 'center', + padding: '20px', + backgroundColor: '#ecf0f1', + color: '#2c3e50', + fontSize: '1em', + width: '65%', + boxSizing: 'border-box', + marginTop: '20px', + marginLeft: 'auto', + marginRight: 'auto', + }; + + const descStyle = { + textAlign: 'center', + width: '100%', + fontSize: '0.9em', + wordBreak: 'break-word', + }; + return ( + +
+
+ Voyage +

{header}

+
+
+

{desc}

+
+
+ ); +} + +export default VoyagePageTemplate;