Commit b18719b5 authored by Ben Anderson's avatar Ben Anderson

Merged current version of dev for deployment

parents a0234bbd 19d97ad5
...@@ -14,7 +14,7 @@ spec: ...@@ -14,7 +14,7 @@ spec:
spec: spec:
containers: containers:
- name: afp-inventory-ui-container - name: afp-inventory-ui-container
image: nexus.mynisum.com/afp-inventory-ui:11 image: nexus.mynisum.com/afp-inventory-ui:12
imagePullPolicy: Always imagePullPolicy: Always
ports: ports:
- containerPort: 8081 - containerPort: 8081
......
This diff is collapsed.
...@@ -4,35 +4,31 @@ import Main from "./component/Main"; ...@@ -4,35 +4,31 @@ import Main from "./component/Main";
import AuthRoute from "./component/AuthRoute"; import AuthRoute from "./component/AuthRoute";
import { Switch } from "react-router"; import { Switch } from "react-router";
import Login from "./component/Login"; import Login from "./component/Login";
import 'semantic-ui-css/semantic.min.css' import "semantic-ui-css/semantic.min.css";
import React, { useState, createContext, useEffect } from 'react'; import React, { useState, createContext, useEffect } from "react";
export const AuthContext = createContext(); export const AuthContext = createContext();
function App() { function App() {
const[isLoggedIn, setIsLoggedIn] = useState(false); const [isLoggedIn, setIsLoggedIn] = useState(false);
const[user, setUser] = useState(null); const [user, setUser] = useState(null);
console.log(user);
const state = { const state = {
user, user,
setUser, setUser,
isLoggedIn, isLoggedIn,
setIsLoggedIn setIsLoggedIn,
} };
useEffect(()=>{
localStorage.setItem("loggedIn", isLoggedIn)
}, [isLoggedIn]) useEffect(() => {
localStorage.setItem("loggedIn", isLoggedIn);
}, [isLoggedIn]);
return ( return (
<AuthContext.Provider value={state}> <AuthContext.Provider value={state}>
<div> <div>
<Switch> <Switch>
<AuthRoute path="/login"> <AuthRoute exact path="/login">
<Login /> <Login />
</AuthRoute> </AuthRoute>
<AuthRoute> <AuthRoute>
......
...@@ -12,16 +12,13 @@ export default function AuthRoute({ children, ...rest }) { ...@@ -12,16 +12,13 @@ export default function AuthRoute({ children, ...rest }) {
render={({ location }) => { render={({ location }) => {
if (isLoggedIn) { if (isLoggedIn) {
if (location.pathname === "/login") { if (location.pathname === "/login") {
// return <Redirect to="/" />; return <Redirect to="/products" />;
return children; } else return children;
} else { } else {
return children; if (location.pathname !== "/login") {
return <Redirect to="/login" />;
} else return children;
} }
} else if (location.pathname !== "/login") {
// return <Redirect to="/login" />;
return children;
}
return children;
}} }}
/> />
); );
......
...@@ -4,14 +4,14 @@ import Search from "./Search"; ...@@ -4,14 +4,14 @@ import Search from "./Search";
import ".././styles/Header.css" import ".././styles/Header.css"
import LogoutButton from "./session/LogoutButton"; import LogoutButton from "./session/LogoutButton";
const Header = ({login, setLogin}) => { const Header = ({ login, setLogin }) => {
const [show, setShow] = useState(false); const [show, setShow] = useState(false);
return ( return (
<nav className="navbar navbar-expand-lg navbar-dark"> <nav className="navbar navbar-expand-lg navbar-dark">
<div className="container-fluid"> <div id="parent" className="container-fluid">
<Link className="navbar-brand" to="/"> <Link className="navbar-brand" to="/">
Ascend <img id="logo" src="../../../logo.jpeg" alt="Nisum Logo"></img>
</Link> </Link>
<button <button
className="navbar-toggler" className="navbar-toggler"
...@@ -30,7 +30,7 @@ const Header = ({login, setLogin}) => { ...@@ -30,7 +30,7 @@ const Header = ({login, setLogin}) => {
id="navbarSupportedContent" id="navbarSupportedContent"
> >
<ul className="navbar-nav me-auto mb-2 mb-lg-0"> <ul className="navbar-nav me-auto mb-2 mb-lg-0">
<li className="nav-item" style={{color: "red"}}> <li className="nav-item">
<Link className="nav-link" to="/products"> <Link className="nav-link" to="/products">
Products Products
</Link> </Link>
...@@ -41,13 +41,11 @@ const Header = ({login, setLogin}) => { ...@@ -41,13 +41,11 @@ const Header = ({login, setLogin}) => {
</Link> </Link>
</li> </li>
</ul> </ul>
<div id="page-title" className="nav-item mx-auto"> <h1>Inventory, Promotions, Pricing</h1>
</div>
<LogoutButton/> <LogoutButton />
</div> </div>
</div> </div>
<h1 id="page-title">Inventory, Promotions, Pricing</h1>
</nav> </nav>
); );
}; };
......
...@@ -15,7 +15,7 @@ export default function Main() { ...@@ -15,7 +15,7 @@ export default function Main() {
<AuthRoute exact path="/products/new"> <AuthRoute exact path="/products/new">
<ProductForm method="POST" /> <ProductForm method="POST" />
</AuthRoute> </AuthRoute>
<AuthRoute exact path="/products/edit/:productId"> <AuthRoute exact path="/products/:productId/update">
<ProductForm method="PUT" /> <ProductForm method="PUT" />
</AuthRoute> </AuthRoute>
<AuthRoute <AuthRoute
......
...@@ -21,7 +21,7 @@ export default function ProductForm(props) { ...@@ -21,7 +21,7 @@ export default function ProductForm(props) {
const { productId } = useParams("productId"); const { productId } = useParams("productId");
useEffect(() => { useEffect(() => {
fetch(`${Config.inventoryUrl}${productId}/`).then((res) => { fetch(`${Config.inventoryUrl}/${productId}/`).then((res) => {
if (res.ok) { if (res.ok) {
console.log(res); console.log(res);
res.json().then((data) => { res.json().then((data) => {
......
...@@ -10,7 +10,7 @@ export default function ProductIndex() { ...@@ -10,7 +10,7 @@ export default function ProductIndex() {
const [categories, setCategories] = useState([]); const [categories, setCategories] = useState([]);
const [activeCategory, setActiveCategory] = useState(""); const [activeCategory, setActiveCategory] = useState("");
console.log(displayProducts); // console.log(displayProducts);
const fetchProducts = async () => { const fetchProducts = async () => {
const res = await fetch(`${Config.inventoryUrl}`); const res = await fetch(`${Config.inventoryUrl}`);
if (res.ok) { if (res.ok) {
......
import React, { useState } from "react"; import React, { useState } from "react";
import "./../styles/ProductRow.css"; import "./../styles/ProductRow.css";
import { Modal, Button, Alert } from "react-bootstrap"; import { Modal, Button, Alert } from "react-bootstrap";
import { useHistory } from "react-router";
export default function ProductRow({ product, handleDelete }) { export default function ProductRow({ product, handleDelete }) {
const [show, setShow] = useState(false); const [show, setShow] = useState(false);
const [showConfirm, setShowConfirm] = useState(false); const [showConfirm, setShowConfirm] = useState(false);
const history = useHistory();
const handleClose = () => { const handleClose = () => {
setShow(false); setShow(false);
...@@ -60,7 +62,10 @@ export default function ProductRow({ product, handleDelete }) { ...@@ -60,7 +62,10 @@ export default function ProductRow({ product, handleDelete }) {
> >
Delete product Delete product
</Button> </Button>
<Button variant="primary" href={`/products/edit/${product.sku}`}> <Button
variant="primary"
onClick={() => history.push(`/products/${product.sku}/update`)}
>
Edit Product Edit Product
</Button> </Button>
......
...@@ -10,13 +10,14 @@ const clientId = ...@@ -10,13 +10,14 @@ const clientId =
function LoginButton({}){ function LoginButton({}){
const { isLoggedIn, setIsLoggedIn } = useContext(AuthContext); const { isLoggedIn, setIsLoggedIn,setUser } = useContext(AuthContext);
const onSuccessLogin = (res) =>{ const onSuccessLogin = (res) =>{
setIsLoggedIn(true); setIsLoggedIn(true);
const { tokenId, profileObj } = res; const { tokenId, profileObj } = res;
setUser(profileObj);
}; };
const onFailure = (res) =>{ const onFailure = (res) =>{
setIsLoggedIn(false); setIsLoggedIn(false);
}; };
...@@ -34,6 +35,7 @@ function LoginButton({}){ ...@@ -34,6 +35,7 @@ function LoginButton({}){
onSuccess= {onSuccessLogin} onSuccess= {onSuccessLogin}
onFailure= {onFailure} onFailure= {onFailure}
cookiePolicy={'single_host_origin'} cookiePolicy={'single_host_origin'}
isSignedIn={true}
/> />
</div> </div>
</div> </div>
......
...@@ -3,3 +3,4 @@ ...@@ -3,3 +3,4 @@
justify-content: center; justify-content: center;
} }
import React, { useContext } from "react"; import React, {useContext} from 'react';
import { GoogleLogout } from "react-google-login"; import {GoogleLogout} from 'react-google-login';
import { AuthContext } from "../../App"; import {AuthContext} from "../../App";
import { Dropdown } from 'react-bootstrap';
import "./LogoutDropDown.css";
const google_ClientID = process.env.REACT_APP_GOOGLE_CLIENT_ID; const google_ClientID = process.env.REACT_APP_GOOGLE_CLIENT_ID;
const clientId = `925243198137-7066age7c8m7sfuufcheruoa43ng55ts.apps.googleusercontent.com`; const clientId = `925243198137-7066age7c8m7sfuufcheruoa43ng55ts.apps.googleusercontent.com`;
function LogoutButton() { function LogoutButton() {
const { isLoggedIn, setIsLoggedIn } = useContext(AuthContext); const { isLoggedIn, setIsLoggedIn, user , setUser } = useContext(AuthContext);
const onSuccessLogout = (res) => { const onSuccessLogout= (res) =>{
setIsLoggedIn(false); setIsLoggedIn(false);
}; }
return ( return(
<div> <div>
<GoogleLogout <Dropdown>
clientId={clientId} <Dropdown.Toggle className="dropdown">
{user != null ?
<p><img className="profile-pic" src={user.imageUrl}/>
{user.name}</p>
: <p>User</p>
}
</Dropdown.Toggle>
<Dropdown.Menu>
<Dropdown.Item>Profile</Dropdown.Item>
<Dropdown.Item><GoogleLogout
render={props => (<div onClick={props.onClick}>Logout</div>)}
clientId= {clientId}
buttonText="Logout" buttonText="Logout"
onLogoutSuccess={onSuccessLogout} onLogoutSuccess={onSuccessLogout}
/> isSignedIn={false}
/></Dropdown.Item>
</Dropdown.Menu>
</Dropdown>
</div> </div>
); );
} }
......
.profile-pic{
position: relative;
width: 28px;
height: 28px;
overflow: hidden;
border-radius: 50%;
padding: 2px;
}
.dropdown{
color:#EBEBEB;
background-color: transparent;
border-color: transparent;
}
.dropdown:hover{
color:#CCCDCF;
background-color: transparent;
border-color: transparent;
}
.dropdown-toggle:after {
display: none;
}
class Config { class Config {
static inventoryUrl = "http://13.64.175.185:8080/api/products"; static inventoryUrl = "http://13.64.175.185:8080/api/products";
static promotionsUrl = "http://40.118.215.99:8082/api/promos"; static promotionsUrl = "http://168.62.203.53:8082/api/promos";
static sessionUrl = "http://localhost:8080/api/sessions"; static sessionUrl = "http://localhost:8080/api/sessions";
} }
......
...@@ -9,5 +9,4 @@ const emptyProduct = { ...@@ -9,5 +9,4 @@ const emptyProduct = {
productDesciption: "", productDesciption: "",
productImageUrl: "", productImageUrl: "",
}; };
export default emptyProduct; export default emptyProduct;
\ No newline at end of file
...@@ -14,8 +14,9 @@ ReactDOM.render( ...@@ -14,8 +14,9 @@ ReactDOM.render(
<BrowserRouter> <BrowserRouter>
<App /> <App />
</BrowserRouter> </BrowserRouter>
</React.StrictMode>, </React.StrictMode>,
document.getElementById("root") document.getElementById('root')
); );
// If you want to start measuring performance in your app, pass a function // If you want to start measuring performance in your app, pass a function
......
.navbar { .navbar {
background-color: #00567D; background-color: #00567D;
position: relative;
} }
#page-title{ #page-title{
position: absolute;
display: flex;
justify-content: center;
align-items: center;
margin-top: auto;
margin-bottom: auto;
left: 0;
right: 0;
color: #EBEBEB; color: #EBEBEB;
pointer-events: none;
}
#logo{
width: 100px;
height: 50px;
}
.nav-link{
color: #EBEBEB !important;
}
.nav-link:hover{
color: #CCCDCF !important;
} }
\ No newline at end of file
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment