Commit ee17f19c authored by Christopher Cottier's avatar Christopher Cottier

Merge branch 'add-banner-to-navbar' into 'Dev'

Add banner to navbar

See merge request !29
parents 52a0f02e 707f4a71
...@@ -18,8 +18,8 @@ public class CartController { ...@@ -18,8 +18,8 @@ public class CartController {
@Autowired @Autowired
private CartService cartService; private CartService cartService;
@Autowired // @Autowired
private CartRepository cartRepository; // private CartRepository cartRepository;
@GetMapping("/api/carts") @GetMapping("/api/carts")
public ResponseEntity<Flux<CartDTO>>getAllUserCarts(){ public ResponseEntity<Flux<CartDTO>>getAllUserCarts(){
......
# UNCOMMENT FOR PRODUCTION DEPLOYMENT
#spring.data.mongodb.uri=${MONGOCONNECTION}
# UNCOMMENT FOR LOCAL TESTING
spring.data.mongodb.uri=mongodb+srv://ecom:ecom@e-commerce-db-cluster.va815.mongodb.net/e-commerce-db?retryWrites=true&w=majority spring.data.mongodb.uri=mongodb+srv://ecom:ecom@e-commerce-db-cluster.va815.mongodb.net/e-commerce-db?retryWrites=true&w=majority
spring.data.mongodb.database=e-commerce-db spring.data.mongodb.database=e-commerce-db
security.enable-csrf=false security.enable-csrf=false
server.port=8080 server.port=8080
products.apiUrl=http://localhost:8083
promos.apiUrl=http://localhost:8082 products.apiUrl=http://13.64.175.185:8080
orders.apiUrl=http://localhost:8084 promos.apiUrl=http://40.118.215.99:8082
\ No newline at end of file orders.apiUrl=http://138.91.251.222:8086
#products.apiUrl=http://localhost:8083
#promos.apiUrl=http://localhost:8082
#orders.apiUrl=http://localhost:8084
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
/node_modules /node_modules
/.pnp /.pnp
.pnp.js .pnp.js
package-lock.json
# testing # testing
/coverage /coverage
......
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -31,7 +31,7 @@ ...@@ -31,7 +31,7 @@
cursor: default; cursor: default;
position: absolute; position: absolute;
left: 50%; left: 50%;
margin-left: -50px; margin-left: -56px;
} }
.ms-auto navbar-nav { .ms-auto navbar-nav {
...@@ -116,4 +116,9 @@ ...@@ -116,4 +116,9 @@
.dropdown-item a { .dropdown-item a {
color: rgba(0, 0, 0, 0.74); color: rgba(0, 0, 0, 0.74);
text-decoration: none; text-decoration: none;
}
.company-banner {
height: 50;
width: 100px;
} }
\ No newline at end of file
...@@ -9,31 +9,25 @@ import { AiOutlineShoppingCart } from 'react-icons/ai' ...@@ -9,31 +9,25 @@ import { AiOutlineShoppingCart } from 'react-icons/ai'
import AnimateOnChange from 'react-animate-on-change' import AnimateOnChange from 'react-animate-on-change'
import { GoogleLogout } from 'react-google-login'; import { GoogleLogout } from 'react-google-login';
import './header.css'; import './header.css';
const clientId = `${process.env.REACT_APP_GOOGLE_CLIENT_ID}.apps.googleusercontent.com`; const clientId = `${process.env.REACT_APP_GOOGLE_CLIENT_ID}.apps.googleusercontent.com`;
export default class Header extends Component { export default class Header extends Component {
constructor(props) { constructor(props) {
super(props) super(props)
this.state = { this.state = {
isLoggedIn: true isLoggedIn: true
} }
this.logOutSuccess = this.logOutSuccess.bind(this); this.logOutSuccess = this.logOutSuccess.bind(this);
this.toggleLoggedIn = this.toggleLoggedIn.bind(this); this.toggleLoggedIn = this.toggleLoggedIn.bind(this);
} }
toggleLoggedIn() { toggleLoggedIn() {
const prevState = this.state.isLoggedIn; const prevState = this.state.isLoggedIn;
this.setState({ isLoggedIn: !prevState }) this.setState({ isLoggedIn: !prevState })
} }
logOutSuccess = (response) => { logOutSuccess = (response) => {
this.props.logOut() this.props.logOut()
this.props.clearCart() this.props.clearCart()
this.toggleLoggedIn() this.toggleLoggedIn()
} }
render() { render() {
let userName let userName
if (!!this.props.user?.currentUser){ if (!!this.props.user?.currentUser){
...@@ -41,12 +35,11 @@ export default class Header extends Component { ...@@ -41,12 +35,11 @@ export default class Header extends Component {
} else{ } else{
userName = "Guest" userName = "Guest"
} }
return ( return (
<div> <div>
<Navbar id="header-nav" collapseOnSelect expand="sm" bg="light"> <Navbar id="header-nav" collapseOnSelect expand="sm" bg="light">
<LinkContainer to="/product-market" > <LinkContainer to="/product-market" >
<Navbar.Brand>Ascend</Navbar.Brand> <NavLink to="/product-market"><img alt="" src="./company-banner.jpeg" className="company-banner" /></NavLink>
</LinkContainer> </LinkContainer>
<div id="ecom-title">Ecommerce</div> <div id="ecom-title">Ecommerce</div>
<Navbar.Toggle aria-controls="responsive-navbar-nav" /> <Navbar.Toggle aria-controls="responsive-navbar-nav" />
...@@ -102,5 +95,4 @@ export default class Header extends Component { ...@@ -102,5 +95,4 @@ export default class Header extends Component {
</div> </div>
) )
} }
} }
\ No newline at end of file
...@@ -86,6 +86,7 @@ export default function Checkout() { ...@@ -86,6 +86,7 @@ export default function Checkout() {
} }
else { ; } else { ; }
}, [submitButtonActive]) }, [submitButtonActive])
let handleSubmit = () => { let handleSubmit = () => {
console.log("Submitting Order!") console.log("Submitting Order!")
let orderInfo = { let orderInfo = {
...@@ -108,7 +109,7 @@ export default function Checkout() { ...@@ -108,7 +109,7 @@ export default function Checkout() {
"cartItems": cart "cartItems": cart
} }
} }
console.log(orderInfo)
dispatch(dispatchOrderInfo(orderInfo)) dispatch(dispatchOrderInfo(orderInfo))
} }
......
...@@ -38,7 +38,8 @@ export default class Session extends Component { ...@@ -38,7 +38,8 @@ export default class Session extends Component {
} }
loginFailed = (response) => { loginFailed = (response) => {
console.log('Login failed: res:', response); // console.log('Login failed: res:', response);
return response
} }
render() { render() {
......
...@@ -5,7 +5,9 @@ import { useSelector, useDispatch } from 'react-redux' ...@@ -5,7 +5,9 @@ import { useSelector, useDispatch } from 'react-redux'
import { Link, Redirect } from 'react-router-dom' import { Link, Redirect } from 'react-router-dom'
import { updateUserCart} from './../../actions/cart_actions' import { updateUserCart} from './../../actions/cart_actions'
import { calcTotalPrice, calcNumItems, storeCartItemsInProcessing } from './../../actions/cart_processing_actions' import { calcTotalPrice, calcNumItems, storeCartItemsInProcessing } from './../../actions/cart_processing_actions'
export default function ShoppingCart() { export default function ShoppingCart() {
const dispatch = useDispatch() const dispatch = useDispatch()
const userSession = useSelector(state => state.user.currentUser) const userSession = useSelector(state => state.user.currentUser)
const allProducts = useSelector(state => state.market.products) const allProducts = useSelector(state => state.market.products)
...@@ -97,4 +99,4 @@ export default function ShoppingCart() { ...@@ -97,4 +99,4 @@ export default function ShoppingCart() {
</div> </div>
) )
} }
\ No newline at end of file
class Config { class Config {
// static baseApiUrl = "http://13.93.237.130:8084"; //env file
static baseApiUrl = "http://localhost:8080"; //env file static baseApiUrl = "http://localhost:8080"; //env file
static orderHistoryApiUrlMethod = (userId) => `${this.baseApiUrl}/api/orders/byUser/${userId}`; static orderHistoryApiUrlMethod = (userId) => `${this.baseApiUrl}/api/orders/byUser/${userId}`;
......
...@@ -129,6 +129,8 @@ ...@@ -129,6 +129,8 @@
#prod-name { #prod-name {
font-size: 20px; font-size: 20px;
max-height: 35px;
overflow: hidden;
} }
#prod-price { #prod-price {
...@@ -313,7 +315,6 @@ ...@@ -313,7 +315,6 @@
#prod-details-img { #prod-details-img {
width: 100%; width: 100%;
height: 65%;
} }
#no-image-display { #no-image-display {
...@@ -342,6 +343,7 @@ ...@@ -342,6 +343,7 @@
#product-details-left { #product-details-left {
width: 65%; width: 65%;
overflow: scroll;
} }
#product-details-condenser { #product-details-condenser {
...@@ -359,8 +361,7 @@ ...@@ -359,8 +361,7 @@
left: 3px; left: 3px;
bottom: 89px; bottom: 89px;
height: 48px; height: 48px;
padding: 12px; padding: 12px 10px;
padding: 3px 10px;
border-radius: 5px; border-radius: 5px;
cursor: default; cursor: default;
background-color: rgb(248, 76, 76); background-color: rgb(248, 76, 76);
......
import React, { Component } from 'react'
import Nav from 'react-bootstrap/Nav'
import Navbar from 'react-bootstrap/Navbar'
import NavDropdown from 'react-bootstrap/NavDropdown'
import {NavLink} from 'react-router-dom'
import Session from '../session/session-container'
import {LinkContainer} from 'react-router-bootstrap'
import { AiOutlineShoppingCart } from 'react-icons/ai'
import AnimateOnChange from 'react-animate-on-change'
import { GoogleLogout } from 'react-google-login';
import './header.css';
const clientId = `${process.env.REACT_APP_GOOGLE_CLIENT_ID}.apps.googleusercontent.com`;
export default class Header extends Component {
constructor(props) {
super(props)
this.state = {
isLoggedIn: true
}
this.logOutSuccess = this.logOutSuccess.bind(this);
this.toggleLoggedIn = this.toggleLoggedIn.bind(this);
}
toggleLoggedIn() {
const prevState = this.state.isLoggedIn;
this.setState({ isLoggedIn: !prevState })
}
logOutSuccess = (response) => {
this.props.logOut()
this.props.clearCart()
this.toggleLoggedIn()
}
render() {
let userName
if (!!this.props.user?.currentUser){
userName = this.props.user.currentUser.firstName
} else{
userName = "Guest"
}
return (
<div>
<Navbar id="header-nav" collapseOnSelect expand="sm" bg="light">
<LinkContainer to="/product-market" >
<Navbar.Brand>Ascend</Navbar.Brand>
</LinkContainer>
<div id="ecom-title">Ecommerce</div>
<Navbar.Toggle aria-controls="responsive-navbar-nav" />
<Navbar.Collapse id="responsive-navbar-nav">
<Nav className="ms-auto">
{!this.props.user?.currentUser ?
<Navbar.Text className="nav-bar-text-default" id="white-color">Hello Guest</Navbar.Text> :
<NavDropdown
className="nav-bar-text"
title={
<div>
<img id="user-image" src={ this.props.image } />
Hello {userName}
</div>
}
id="collasible-nav-dropdown"
>
<NavDropdown.Item ><NavLink to="/orders">Order History</NavLink></NavDropdown.Item>
<NavDropdown.Item>
<GoogleLogout
clientId={clientId}
buttonText="Logout"
onLogoutSuccess={this.logOutSuccess}
render={props => (<div onClick={props.onClick}>Logout</div>)}
>
</GoogleLogout>
</NavDropdown.Item>
</NavDropdown>
}
{
this.state.isLoggedIn ?
<Session className="nav-bar-text" toggleLoggedIn={ this.toggleLoggedIn } />
:
""
}
<LinkContainer to="/cart" >
<Nav.Link to="/cart" className="cart-link" id={this.props.user?.currentUser ? "" : "disabled-cart-link"} disabled={ !this.props.user?.currentUser }>
<AiOutlineShoppingCart fill="#EBEBEB" size={30} />
</Nav.Link>
</LinkContainer>
<AnimateOnChange
baseClassName="items-in-cart"
animationClassName="items-in-cart-animation"
animate={ this.props.diff != 0 }
>
<LinkContainer to="/cart" >
<Nav.Link to="/cart" className={ this.props.cartLength > 0 ? "items-in-cart" : "no-show" }>{ this.props.cartLength }</Nav.Link>
</LinkContainer>
</AnimateOnChange>
</Nav>
</Navbar.Collapse>
</Navbar>
</div>
)
}
}
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