diff --git a/jam-ui/package-lock.json b/jam-ui/package-lock.json index 77c271e73..3eb2365d2 100644 --- a/jam-ui/package-lock.json +++ b/jam-ui/package-lock.json @@ -1882,6 +1882,11 @@ "@babel/types": "^7.3.0" } }, + "@types/cookie": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.3.3.tgz", + "integrity": "sha512-LKVP3cgXBT9RYj+t+9FDKwS5tdI+rPBXaNSkma7hvqy35lc7mAokC2zsqWJH0LaqIt3B962nuYI77hsJoT1gow==" + }, "@types/eslint-visitor-keys": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", @@ -5831,9 +5836,9 @@ "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=" }, "dns-packet": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", - "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", + "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", "requires": { "ip": "^1.1.0", "safe-buffer": "^5.0.1" @@ -5920,11 +5925,18 @@ } }, "domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.0.tgz", + "integrity": "sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA==", "requires": { - "domelementtype": "1" + "domelementtype": "^2.2.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==" + } } }, "domutils": { @@ -6168,9 +6180,9 @@ } }, "ws": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.5.tgz", - "integrity": "sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g==", + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", "dev": true } } @@ -6210,9 +6222,9 @@ "dev": true }, "ws": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.5.tgz", - "integrity": "sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g==", + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", "dev": true } } @@ -9033,22 +9045,40 @@ } }, "htmlparser2": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", "requires": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" }, "dependencies": { - "entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" + "dom-serializer": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", + "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==" + }, + "domutils": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.7.0.tgz", + "integrity": "sha512-8eaHa17IwJUPAiB+SoTYBo5mCdeMgdcAoXJ59m6DT1vw+5iLS3gNoqYaRowaBKtGVrOF1Jz4yDTgYKLK2kvfJg==", + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } } } }, @@ -13031,9 +13061,9 @@ "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" }, "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "requires": { "chalk": "^2.4.2", "source-map": "^0.6.1", @@ -14357,6 +14387,16 @@ "prop-types": "^15.7.2" } }, + "react-cookie": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/react-cookie/-/react-cookie-4.0.3.tgz", + "integrity": "sha512-cmi6IpdVgTSvjqssqIEvo779Gfqc4uPGHRrKMEdHcqkmGtPmxolGfsyKj95bhdLEKqMdbX8MLBCwezlnhkHK0g==", + "requires": { + "@types/hoist-non-react-statics": "^3.0.1", + "hoist-non-react-statics": "^3.0.0", + "universal-cookie": "^4.0.0" + } + }, "react-countup": { "version": "4.3.3", "resolved": "https://registry.npmjs.org/react-countup/-/react-countup-4.3.3.tgz", @@ -14655,9 +14695,9 @@ } }, "react-hook-form": { - "version": "4.10.2", - "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-4.10.2.tgz", - "integrity": "sha512-Ule/KqHBwUvuubqGC4WDvOARS6VjlULSS+WHspgQ5FhFKR4ytHDc4AMpjVfnv+Wbz2TEbMp9/ZHmuZsUksPCiA==" + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.11.1.tgz", + "integrity": "sha512-lBt428oU03dNUF5qZy5xqEdANaH3L/ilKWQS2t8wD6zF7FypOv46kEkZmg+oHf3n2xgeGYJgbMIGtYExsfKJ8A==" }, "react-image-lightbox": { "version": "5.1.1", @@ -15405,15 +15445,15 @@ "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" }, "renderkid": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.5.tgz", - "integrity": "sha512-ccqoLg+HLOHq1vdfYNm4TBeaCDIi1FLt3wGojTDSvdewUv65oTmI3cnT2E4hRjl1gzKZIPK+KZrXzlUYKnR+vQ==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.7.tgz", + "integrity": "sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ==", "requires": { - "css-select": "^2.0.2", - "dom-converter": "^0.2", - "htmlparser2": "^3.10.1", - "lodash": "^4.17.20", - "strip-ansi": "^3.0.0" + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^3.0.1" }, "dependencies": { "ansi-regex": { @@ -15421,6 +15461,56 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" }, + "css-select": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz", + "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==", + "requires": { + "boolbase": "^1.0.0", + "css-what": "^5.0.0", + "domhandler": "^4.2.0", + "domutils": "^2.6.0", + "nth-check": "^2.0.0" + } + }, + "css-what": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.0.1.tgz", + "integrity": "sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg==" + }, + "dom-serializer": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", + "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==" + }, + "domutils": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.7.0.tgz", + "integrity": "sha512-8eaHa17IwJUPAiB+SoTYBo5mCdeMgdcAoXJ59m6DT1vw+5iLS3gNoqYaRowaBKtGVrOF1Jz4yDTgYKLK2kvfJg==", + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "nth-check": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.0.tgz", + "integrity": "sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q==", + "requires": { + "boolbase": "^1.0.0" + } + }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", @@ -16724,9 +16814,9 @@ } }, "ssri": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-7.1.0.tgz", - "integrity": "sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-7.1.1.tgz", + "integrity": "sha512-w+daCzXN89PseTL99MkA+fxJEcU3wfaE/ah0i0lnOlpG1CYLJ2ZjzEry68YBKfLs4JfoTShrTEsJkAZuNZ/stw==", "requires": { "figgy-pudding": "^3.5.1", "minipass": "^3.1.1" @@ -17916,6 +18006,15 @@ "through2-filter": "^3.0.0" } }, + "universal-cookie": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/universal-cookie/-/universal-cookie-4.0.4.tgz", + "integrity": "sha512-lbRVHoOMtItjWbM7TwDLdl8wug7izB0tq3/YVKhT/ahB4VDvWMyvnADfnJI8y6fSvsjh51Ix7lTGC6Tn4rMPhw==", + "requires": { + "@types/cookie": "^0.3.3", + "cookie": "^0.4.0" + } + }, "universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", diff --git a/jam-ui/package.json b/jam-ui/package.json index 7dfec9472..3bd863d50 100644 --- a/jam-ui/package.json +++ b/jam-ui/package.json @@ -43,13 +43,14 @@ "react-bootstrap-table-next": "^3.3.5", "react-bootstrap-table2-paginator": "^2.1.2", "react-chartjs-2": "^2.10.0", + "react-cookie": "^4.0.3", "react-countup": "^4.3.3", "react-datetime": "^2.16.3", "react-dom": "^16.13.1", "react-dropzone": "^10.2.2", "react-es6-progressbar.js": "^1.1.0", "react-flatpickr": "^3.10.6", - "react-hook-form": "^4.10.2", + "react-hook-form": "^7.11.1", "react-image-lightbox": "^5.1.1", "react-image-video-lightbox": "^2.0.1", "react-leaflet": "^2.7.0", @@ -72,7 +73,7 @@ "uuid": "^3.4.0" }, "scripts": { - "start": "react-scripts start", + "start": "HOST=beta.jamkazam.local react-scripts start", "build": "react-scripts build", "eject": "react-scripts eject", "scss": "gulp", diff --git a/jam-ui/public/index.html b/jam-ui/public/index.html index 2b4255c89..d4c079ee6 100644 --- a/jam-ui/public/index.html +++ b/jam-ui/public/index.html @@ -12,7 +12,7 @@ href="https://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700|Poppins:100,200,300,400,500,600,700,800,900&display=swap" /> - Falcon React | ReactJS Dashboard & WebApp Template + JamKazam diff --git a/jam-ui/src/App.js b/jam-ui/src/App.js index 96fca6da8..74c430962 100644 --- a/jam-ui/src/App.js +++ b/jam-ui/src/App.js @@ -7,7 +7,8 @@ import 'react-datetime/css/react-datetime.css'; import 'react-image-lightbox/style.css'; const App = () => { - return ( + + return ( diff --git a/jam-ui/src/Main.js b/jam-ui/src/Main.js index 0fc8c7e55..7e8e06792 100644 --- a/jam-ui/src/Main.js +++ b/jam-ui/src/Main.js @@ -1,6 +1,7 @@ import React, { useState, useEffect } from 'react'; import PropTypes from 'prop-types'; import AppContext from './context/Context'; +import { AuthProvider } from "./context/AuthContext"; import { settings } from './config'; import toggleStylesheet from './helpers/toggleStylesheet'; import { getItemFromStore, setItemToStore, themeColors } from './helpers/utils'; @@ -18,7 +19,7 @@ const Main = props => { const [currency, setCurrency] = useState(settings.currency); const [showBurgerMenu, setShowBurgerMenu] = useState(settings.showBurgerMenu); const [isLoaded, setIsLoaded] = useState(false); - const [isOpenSidePanel, setIsOpenSidePanel] = useState(false); + const [isOpenSidePanel, setIsOpenSidePanel] = useState(true); const [navbarCollapsed, setNavbarCollapsed] = useState(false); const [navbarStyle, setNavbarStyle] = useState(getItemFromStore('navbarStyle', settings.navbarStyle)); @@ -114,7 +115,11 @@ const Main = props => { ); } - return {props.children}; + return + + {props.children} + + ; }; Main.propTypes = { children: PropTypes.node }; diff --git a/jam-ui/src/assets/img/icons/question_icon.svg b/jam-ui/src/assets/img/icons/question_icon.svg new file mode 100644 index 000000000..238eebefe --- /dev/null +++ b/jam-ui/src/assets/img/icons/question_icon.svg @@ -0,0 +1,8 @@ + + + + + \ No newline at end of file diff --git a/jam-ui/src/assets/img/logos/JK_Logo_2c.png b/jam-ui/src/assets/img/logos/JK_Logo_2c.png new file mode 100644 index 000000000..a35daa14b Binary files /dev/null and b/jam-ui/src/assets/img/logos/JK_Logo_2c.png differ diff --git a/jam-ui/src/assets/img/logos/JK_Logo_blue-2021.png b/jam-ui/src/assets/img/logos/JK_Logo_blue-2021.png new file mode 100644 index 000000000..d30e220cf Binary files /dev/null and b/jam-ui/src/assets/img/logos/JK_Logo_blue-2021.png differ diff --git a/jam-ui/src/assets/scss/_user.scss b/jam-ui/src/assets/scss/_user.scss index 150d9a3f9..4d41abaea 100644 --- a/jam-ui/src/assets/scss/_user.scss +++ b/jam-ui/src/assets/scss/_user.scss @@ -3,3 +3,5 @@ // user.scss // // Place your own theme CSS or SCSS rules below this line, these rules will override any Bootstrap and theme variables. + +@import './custom/user.css'; \ No newline at end of file diff --git a/jam-ui/src/assets/scss/custom/user.css b/jam-ui/src/assets/scss/custom/user.css new file mode 100644 index 000000000..03ee0c8f1 --- /dev/null +++ b/jam-ui/src/assets/scss/custom/user.css @@ -0,0 +1,66 @@ + +/*# sourceMappingURL=user.min.css.map */ +:root { + --jk-good: #198754; + --jk-fair: #e0a500; + --jk-high: #990000; +} + +.nav-active .nav-link-text{ + color: --falcon-blue; +} +.nav-link-icon { + display: inline-block; + text-align: center; +} + +.navbar-vertical { + z-index: 1031; +} + +.latency-good { + background-color: var(--jk-good); + color: white; + min-width: 50px; +} +.latency-fair { + background-color: var(--jk-fair); + color: white; + min-width: 50px; +} + +.latency-high { + background-color: var(--jk-high); + color: white; + min-width: 50px; +} + +.swiper-button-prev:after, +.swiper-button-next:after { + font-size: 25px !important; +} + +/* Hover dropdown */ + +.hover_drop_down.btn-group ul.dropdown-menu{margin-top:42px;}/*To avoid unwanted close*/ +.hover_drop_down:hover ul.dropdown-menu{ + display: block; +} + +.hover_drop_down.btn-group ul.dropdown-menu a { + display: block; + width: 100%; +} + +.hover_drop_down.btn-group ul.dropdown-menu a:hover { + text-decoration: none; +} + +.alert-top-fixed { + position: fixed; + width: 75%; + left: 50%; + transform: translateX(-50%); + top: 0; + z-index: 2000; +} \ No newline at end of file diff --git a/jam-ui/src/components/auth/LoginForm.js b/jam-ui/src/components/auth/LoginForm.js index 01eb99d04..ad2e2f6f1 100644 --- a/jam-ui/src/components/auth/LoginForm.js +++ b/jam-ui/src/components/auth/LoginForm.js @@ -1,11 +1,13 @@ import React, { useState, useEffect } from 'react'; import PropTypes from 'prop-types'; -import { Link } from 'react-router-dom'; +import { Link, useHistory } from 'react-router-dom'; import { toast } from 'react-toastify'; import { Button, Form, Row, Col, FormGroup, Input, CustomInput, Label } from 'reactstrap'; import Divider from '../common/Divider'; import SocialAuthButtons from './SocialAuthButtons'; import withRedirect from '../../hoc/withRedirect'; +import { useAuth } from '../../context/AuthContext'; +import { signin } from '../../services/authService'; const LoginForm = ({ setRedirect, hasLabel, layout }) => { // State @@ -14,11 +16,24 @@ const LoginForm = ({ setRedirect, hasLabel, layout }) => { const [remember, setRemember] = useState(true); const [isDisabled, setIsDisabled] = useState(true); + const history = useHistory(); + const { setCurrentUser} = useAuth(); + // Handler - const handleSubmit = e => { + const handleSubmit = async e => { e.preventDefault(); - toast.success(`Logged in as ${email}`); - setRedirect(true); + const credentials = {email, password} + const user = await signin(credentials) + console.log("handleSubmit", user); + if(user){ + setCurrentUser(user) + localStorage.setItem('user', user) + toast.success(`Signed in as ${email}`); + setRedirect(true); + }else{ + toast.error("Incorrect email or password"); + } + }; useEffect(() => { diff --git a/jam-ui/src/components/auth/LogoutContent.js b/jam-ui/src/components/auth/LogoutContent.js index b679bc70c..b277c4cd7 100644 --- a/jam-ui/src/components/auth/LogoutContent.js +++ b/jam-ui/src/components/auth/LogoutContent.js @@ -1,20 +1,29 @@ import React, { Fragment } from 'react'; import PropTypes from 'prop-types'; import { Button } from 'reactstrap'; -import { Link } from 'react-router-dom'; +//import { Link } from 'react-router-dom'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import rocket from '../../assets/img/illustrations/rocket.png'; const LogoutContent = ({ layout, titleTag: TitleTag }) => { + const goToLogin = () => { + window.location.href = `${process.env.REACT_APP_LEGACY_BASE_URL}/signin` + } return ( shield See you again!

- Thanks for using Falcon. You are
+ Thanks for using JamKazam. You are
now successfully signed out. + {process.env.REACT_APP_LEGACY_BASE_URL}

- */} + + diff --git a/jam-ui/src/components/auth/basic/AuthBasicRoutes.js b/jam-ui/src/components/auth/basic/AuthBasicRoutes.js index a6ac557f6..b1459c937 100644 --- a/jam-ui/src/components/auth/basic/AuthBasicRoutes.js +++ b/jam-ui/src/components/auth/basic/AuthBasicRoutes.js @@ -1,23 +1,25 @@ import React from 'react'; import PropTypes from 'prop-types'; import { Redirect, Route, Switch, withRouter } from 'react-router-dom'; -import Login from './Login'; +//import Login from './Login'; +import Start from './Start'; import Logout from './Logout'; -import Registration from './Registration'; -import ForgetPassword from './ForgetPassword'; -import PasswordReset from './PasswordReset'; -import ConfirmMail from './ConfirmMail'; -import LockScreen from './LockScreen'; +// import Registration from './Registration'; +// import ForgetPassword from './ForgetPassword'; +// import PasswordReset from './PasswordReset'; +// import ConfirmMail from './ConfirmMail'; +// import LockScreen from './LockScreen'; const AuthBasicRoutes = ({ match: { url } }) => ( - + {/* */} + - + {/* - + */} {/*Redirect*/} diff --git a/jam-ui/src/components/auth/basic/Start.js b/jam-ui/src/components/auth/basic/Start.js new file mode 100644 index 000000000..22418a2b2 --- /dev/null +++ b/jam-ui/src/components/auth/basic/Start.js @@ -0,0 +1,28 @@ +import React from 'react'; +import { Row, Col, Button } from "reactstrap"; +import { Fragment } from 'react'; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; + +const Start = () => { + const goToLogin = () => { + window.open(`${process.env.REACT_APP_LEGACY_BASE_URL}/signin`, '_blank') + } + return( + + + +
Start
+ + +

To begin please login to your JamKazam account and reload this page

+ + +
+
+ ) +} + +export default Start; \ No newline at end of file diff --git a/jam-ui/src/components/common/JKTooltip.js b/jam-ui/src/components/common/JKTooltip.js new file mode 100644 index 000000000..72c533388 --- /dev/null +++ b/jam-ui/src/components/common/JKTooltip.js @@ -0,0 +1,25 @@ +import React, { useState, useRef } from 'react'; +import { Tooltip } from 'reactstrap'; + +const JKTooltip = props => { + const [tooltipOpen, setTooltipOpen] = useState(false); + const iconRef = useRef(); + const toggle = () => setTooltipOpen(!tooltipOpen); + + return ( + + + + {props.title} + + + ); +}; + +export default JKTooltip; diff --git a/jam-ui/src/components/dashboard/Dashboard.js b/jam-ui/src/components/dashboard/Dashboard.js index 8737675e1..6cc4001ef 100644 --- a/jam-ui/src/components/dashboard/Dashboard.js +++ b/jam-ui/src/components/dashboard/Dashboard.js @@ -13,10 +13,12 @@ import DashBoardDepositStatus from './DashboardDepositStatus'; const PurchasesTable = loadable(() => import('./PurchasesTable')); const ActiveUsersMap = loadable(() => import('./ActiveUsersMap')); + const Dashboard = () => { // State const [isSelected, setIsSelected] = useState(false); + useEffect(() => { toast( diff --git a/jam-ui/src/components/dashboard/JkDashboard.js b/jam-ui/src/components/dashboard/JkDashboard.js new file mode 100644 index 000000000..fa0adb4b2 --- /dev/null +++ b/jam-ui/src/components/dashboard/JkDashboard.js @@ -0,0 +1,10 @@ +import React from "react"; + +const JKDashboard = () => { + + return( +

Dashboard

+ ) +} + +export default JKDashboard; \ No newline at end of file diff --git a/jam-ui/src/components/navbar/JKCurrentUserAvatar.js b/jam-ui/src/components/navbar/JKCurrentUserAvatar.js new file mode 100644 index 000000000..6e536c1f4 --- /dev/null +++ b/jam-ui/src/components/navbar/JKCurrentUserAvatar.js @@ -0,0 +1,16 @@ +import React, {useEffect} from "react"; +import { useAuth } from '../../context/AuthContext'; +import avatar from "../../assets/img/team/avatar.png"; + +const JKCurrentUserAvatar = () => { + const { currentUser } = useAuth(); + + if(currentUser && currentUser.photo_url) { + return ( ); + }else { + return ( ); + } + +} + +export default JKCurrentUserAvatar; \ No newline at end of file diff --git a/jam-ui/src/components/navbar/JKNavbarTopProfile.js b/jam-ui/src/components/navbar/JKNavbarTopProfile.js new file mode 100644 index 000000000..683eeb4f0 --- /dev/null +++ b/jam-ui/src/components/navbar/JKNavbarTopProfile.js @@ -0,0 +1,55 @@ +import React, { useEffect, useState } from 'react'; +import { useAuth } from '../../context/AuthContext'; +import { getCurrentUser } from '../../helpers/rest'; +import { Dropdown, DropdownToggle, DropdownMenu, DropdownItem } from 'reactstrap'; +import { Link } from 'react-router-dom'; +import JKCurrentUserAvatar from './JKCurrentUserAvatar' + +const JKNavbarTopCurrentUser = () => { + const { currentUser, setCurrentUser } = useAuth(); + const [dropdownOpen, setDropdownOpen] = useState(false); + + const toggle = () => setDropdownOpen(prevState => !prevState); + + const fetchCurrentUser = () => { + getCurrentUser() + .then(resp => { + if (resp.ok) { + return resp.json(); + } + }) + .then(data => { + console.log('CURRENT_USER', data); + setCurrentUser(data); + }) + .catch(error => console.log(error)); + }; + + const handleLogout = () => {}; + + useEffect(() => { + fetchCurrentUser(); + }, []); + + return ( +
+ {currentUser && + + + + {currentUser.name} + + + + My Profile + + Logout + + + } + +
+ ); +}; + +export default JKNavbarTopCurrentUser; diff --git a/jam-ui/src/components/navbar/Logo.js b/jam-ui/src/components/navbar/Logo.js index 7bd279bfc..dcfb6d03d 100644 --- a/jam-ui/src/components/navbar/Logo.js +++ b/jam-ui/src/components/navbar/Logo.js @@ -2,7 +2,7 @@ import React from 'react'; import PropTypes from 'prop-types'; import classNames from 'classnames'; import { Link } from 'react-router-dom'; -import logo from '../../assets/img/illustrations/falcon.png'; +import logo from '../../assets/img/logos/JK_Logo_blue-2021.png'; const Logo = ({ at, width, className, ...rest }) => { return ( @@ -17,7 +17,7 @@ const Logo = ({ at, width, className, ...rest }) => { >
{ }, className )} + style={{ overflow: "visible" }} > - Logo - falcon + + Logo +
); diff --git a/jam-ui/src/components/navbar/NavbarTop.js b/jam-ui/src/components/navbar/NavbarTop.js index 8c0edeea2..072e62523 100644 --- a/jam-ui/src/components/navbar/NavbarTop.js +++ b/jam-ui/src/components/navbar/NavbarTop.js @@ -46,7 +46,7 @@ const NavbarTop = () => {