Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/main'
Browse files Browse the repository at this point in the history
  • Loading branch information
lucca93 committed Oct 29, 2023
2 parents e0b90f3 + bcdeb27 commit 312a17a
Show file tree
Hide file tree
Showing 12 changed files with 81 additions and 46 deletions.
6 changes: 5 additions & 1 deletion README.md
Expand Up @@ -4,9 +4,13 @@


# LunchHeroes
Lunch Heros Basel Hack Event Repo

Lunch Heros Basel Hack Event Repo

# Presentation Slides

[LunchHero Presentation](https://www.canva.com/design/DAFyifsFr18/oOybsSYmFfqYSdd0SuqZMA/edit?utm_content=DAFyifsFr18&utm_campaign=designshare&utm_medium=link2&utm_source=sharebutton)

# Figma Mockup

[Figma Mockup] (https://www.figma.com/file/gjotWvh3EWwIkEOtJcM88B/Untitled?type=design&node-id=0%3A1&mode=design&t=BT1mFm6CNMV2inDX-1)
6 changes: 3 additions & 3 deletions backend/main.py
@@ -1,8 +1,8 @@

import lunchheros


from fastapi.encoders import jsonable_encoder
from src.lunchheros.db.dbFetcher import get_encoded_data
from src.lunchheros.db.dbFetcher import filter_data, get_encoded_data
from src.routes.users.userFunctions import getAllQueryListData, getAllUsers, getUserWithId
from fastapi import FastAPI
from supabase_client import supabase_client
Expand Down Expand Up @@ -30,6 +30,6 @@ def load_current_user(userId: str):
userData = getUserWithId(userId)
queryList = getAllQueryListData()

test = lunchheros.match.match(userData)
test = filter_data(queryList)

return { "currentUser" : userData, "query": queryList}
8 changes: 3 additions & 5 deletions backend/src/lunchheros/db/dbFetcher.py
@@ -1,13 +1,12 @@
from lunchheros import match
import numpy as np
import pandas as pd
import json
import os




async def get_encoded_data(time_slot: int, location: str, data):
async def filter_data(data):
print("get_encoded_data")
return match(data)
# Transform data
#print(f"Data {time_slot} {location} {data}")
#df = pd.DataFrame(data)
Expand All @@ -19,7 +18,6 @@ async def get_encoded_data(time_slot: int, location: str, data):

#return one_hot_encoded_df


def parse_user_id_tolist(test_data):
data = json.loads(test_data)

Expand Down
2 changes: 1 addition & 1 deletion backend/src/lunchheros/match/__init__.py
@@ -1,5 +1,5 @@
"""Subpackage related to matching between users into groups."""

from lunchheros.match import matching
from lunchheros.match._randomize import matching

__all__ = ["matching"]
2 changes: 1 addition & 1 deletion backend/src/lunchheros/match/_randomize.py
Expand Up @@ -39,7 +39,7 @@ def _randomize_groups(group_size: int, users: list[str]) -> list[list]:
return groups


def match(userids):
def matching(userids):

# convert userids to list
userids = parse_user_id_tolist(userids)
Expand Down
13 changes: 11 additions & 2 deletions backend/tests/match/test_randomize.py
@@ -1,4 +1,4 @@
from lunchheros.match._randomize import _randomize_groups
from lunchheros.match._randomize import _randomize_groups, matching

import json
import numpy as np
Expand Down Expand Up @@ -37,4 +37,13 @@ def test_randomize_with_real():
group_size = 4
# randomize groups
groups = _randomize_groups(group_size, numpy_array.tolist())
print(groups)
print(groups)


def test_matching():

grouping = matching(test_data)

print(grouping)
return grouping

53 changes: 34 additions & 19 deletions frontend/src/App.js
@@ -1,4 +1,5 @@
import React, { useState } from 'react';

import React, { useState, useEffect } from 'react';
// import logo from './logo.svg';
import './App.css';
import Login from './Components/Login';
Expand All @@ -7,14 +8,15 @@ import Navigation from './Components/Navigation';
import Profile from './Components/Profile';
import Status from './Components/Status';
import {useSelector} from 'react-redux'; // import useSelector from react-redux
import { Route, Navigate, Routes } from 'react-router-dom'; // import Route and Navigate from react-router-dom
import { Route, Navigate, Routes, useNavigate } from 'react-router-dom'; // import Route and Navigate from react-router-dom
import Scheduling from './Components/Scheduling';
import{ supabase } from './supabaseclient';



function App() {

const user = useSelector(state => state.session.user);
console.log("LOGIN USER", user?.user?.id);
console.log("LOGIN", user);

// const [isLoaded, setIsLoaded] = useState(false);
// useEffect(() => {
// dispatch(authenticate()).then(() => setIsLoaded(true));
Expand Down Expand Up @@ -43,9 +45,17 @@ function App() {
setTimeSlot(slot);
}

const user = useSelector(state => state.session.user);
console.log("LOGIN USER", user?.user?.id);
console.log("LOGIN", user);


const RedirectToHome = () => {
const navigate = useNavigate();

useEffect(() => {
navigate('/home');
}, [navigate]);

return null; // This component does not render anything to the DOM
}

const Wrapper = () => {
return (
Expand All @@ -56,17 +66,6 @@ function App() {
onGroupSizeChange={handleGroupSizeChange} // Changed from props.onGroupSizeChange
onTimeSlotChange={handleTimeSlotChange}
/>
<Profile
name={props.name}
email={props.email}
location={props.location}
department={props.department}
groupSize={groupSize}
timeSlot={timeSlot}
interests={props.interests}
onGroupSizeChange={handleGroupSizeChange} // Changed from props.onGroupSizeChange
onTimeSlotChange={handleTimeSlotChange} // Changed from props.onTimeSlotChange
/>
<Status isScheduled={props.isScheduled} />
<Status isScheduled={!props.isScheduled} />
</div>
Expand All @@ -81,7 +80,23 @@ function App() {
{user ? (
//routes that will be available ONLY when user is logged in
//add additional routes here
<>
<Route path="/" element={<RedirectToHome />} />
<Route element={<Wrapper />} path="/home" />
<Route element={
<Profile
name={props.name}
email={props.email}
location={props.location}
department={props.department}
groupSize={groupSize}
timeSlot={timeSlot}
interests={props.interests}
onGroupSizeChange={handleGroupSizeChange} // Changed from props.onGroupSizeChange
onTimeSlotChange={handleTimeSlotChange} // Changed from props.onTimeSlotChange
/>
} path="/profile" />
</>
) : (
// <Route element={<Profile />} path="/home" />
//will redirect to '/' from any url if no user is logged in
Expand Down
2 changes: 1 addition & 1 deletion frontend/src/Components/Navigation.js
Expand Up @@ -40,7 +40,7 @@ function Navigation({ isLoaded }) {
<>
<div className="nav-div-user-logged-in">
<div className="nav-icon-user-logged-in">
<Link exact to="/">
<Link exact to="/home">
<img className="responsive-logo" alt="Here the Basel Hack Logo is displayed" src="/Logo.svg" />
<img className="responsive-logo" alt="Here the Basel Hack Logo is displayed" src="/burger_wink.svg" />
</Link>
Expand Down
14 changes: 10 additions & 4 deletions frontend/src/Components/ProfileButton.js
@@ -1,11 +1,14 @@
import React, { useState, useEffect, useRef } from "react";
import { useDispatch } from "react-redux";

import { logout } from "../store/session";
import { useNavigate } from "react-router-dom";
import "../SCSS/navigation.css";
function ProfileButton({ user }) {
const [showMenu, setShowMenu] = useState(false);
const ulRef = useRef();
const navigate= useNavigate()
const navigate= useNavigate();
const dispatch = useDispatch();
const openMenu = () => {
if (showMenu) return;
setShowMenu(true);
Expand All @@ -22,8 +25,11 @@ function ProfileButton({ user }) {
}, [showMenu]);
const handleLogout = (e) => {
e.preventDefault();
logout();
navigate("/");
dispatch(logout())
.then(() => {
navigate("/");
closeMenu();
})
};
const navUserProfile = (e) => {
e.preventDefault();
Expand Down Expand Up @@ -54,4 +60,4 @@ function ProfileButton({ user }) {
</>
);
}
export default ProfileButton;
export default ProfileButton;
3 changes: 2 additions & 1 deletion frontend/src/SCSS/scheduling.css
Expand Up @@ -176,9 +176,10 @@ input[type='range'] {
border: 1px solid #007CAA;
/* Change border color when hovered or focused */
}

.randomize-button {
height: 100px !important;
width: 250px !important;
font-size: 25px;
margin-top: 25px;
}
}
12 changes: 4 additions & 8 deletions frontend/src/store/session.js
Expand Up @@ -5,7 +5,7 @@ const SET_USER = "session/SET_USER";
const REMOVE_USER = "session/REMOVE_USER";


const setUser = (user) => ({
export const setUser = (user) => ({
type: SET_USER,
payload: user,
});
Expand Down Expand Up @@ -44,7 +44,7 @@ export const login = (email, password) => async (dispatch) => {

if (response.data.user) {
const data = response.data
console.log('DATA', data)
localStorage.setItem('user', data.user)
dispatch(setUser(data));
return data;
} else if (response.error) {
Expand All @@ -57,13 +57,9 @@ export const login = (email, password) => async (dispatch) => {
};

export const logout = () => async (dispatch) => {
const response = await fetch("/api/auth/logout", {
headers: {
"Content-Type": "application/json",
},
});
const response = await supabase.auth.signOut()

if (response.ok) {
if (!response.error) {
dispatch(removeUser());
}
};
Expand Down
6 changes: 6 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 312a17a

Please sign in to comment.