From 9ec850abfefe28f9f6ce111debe5484828ed1e19 Mon Sep 17 00:00:00 2001 From: Tanner Collin Date: Tue, 30 May 2023 21:10:05 +0000 Subject: [PATCH] Make shelf buttons clickable and add to Home --- webclient/src/Home.js | 28 ++++++++++++++++++++++++++-- webclient/src/Members.js | 10 ++++++++-- webclient/src/Storage.js | 10 +++++----- webclient/src/light.css | 1 + 4 files changed, 40 insertions(+), 9 deletions(-) diff --git a/webclient/src/Home.js b/webclient/src/Home.js index 77ceeb9..f36afd0 100644 --- a/webclient/src/Home.js +++ b/webclient/src/Home.js @@ -1,9 +1,9 @@ import React, { useState, useEffect, useReducer } from 'react'; -import { Link } from 'react-router-dom'; +import { Link, useParams, useHistory } from 'react-router-dom'; import moment from 'moment-timezone'; import QRCode from 'react-qr-code'; import './light.css'; -import { Container, Divider, Grid, Header, Icon, Image, Message, Popup, Segment, Table } from 'semantic-ui-react'; +import { Button, Container, Divider, Grid, Header, Icon, Image, Message, Popup, Segment, Table } from 'semantic-ui-react'; import { statusColor, BasicTable, siteUrl, staticUrl, requester, isAdmin } from './utils.js'; import { LoginForm, SignupForm } from './LoginSignup.js'; import { AccountForm } from './Account.js'; @@ -13,6 +13,7 @@ import { PayPalSubscribeDeal } from './PayPal.js'; function MemberInfo(props) { const user = props.user; const member = user.member; + const history = useHistory(); const lastTrans = user.transactions?.slice(0,3); const lastTrain = user.training?.sort((a, b) => a.session.datetime < b.session.datetime ? 1 : -1).slice(0,3); @@ -20,6 +21,11 @@ function MemberInfo(props) { const unpaidTraining = user.training?.filter(x => x.attendance_status === 'Waiting for payment'); + const handleStorageButton = (e, id) => { + e.preventDefault(); + history.push('/storage/' + id); + }; + return (
{member.protocoin < 0 && @@ -57,6 +63,24 @@ function MemberInfo(props) { Protocoin: ₱ {member.protocoin.toFixed(2)} [buy] + + Shelf: + + {user.storage.length ? + user.storage.map((x, i) => + + ) + : + 'None' + } + + Expiry: {member.expire_date ? moment(member.expire_date).format('ll') : 'Unknown'} diff --git a/webclient/src/Members.js b/webclient/src/Members.js index a8fc10b..b594012 100644 --- a/webclient/src/Members.js +++ b/webclient/src/Members.js @@ -1,5 +1,5 @@ import React, { useState, useEffect, useReducer } from 'react'; -import { Link, useParams } from 'react-router-dom'; +import { Link, useParams, useHistory } from 'react-router-dom'; import './light.css'; import { Button, Container, Dropdown, Grid, Header, Icon, Image, Input, Item, Segment, Table } from 'semantic-ui-react'; import { statusColor, isAdmin, isInstructor, BasicTable, staticUrl, requester } from './utils.js'; @@ -99,6 +99,7 @@ export function Members(props) { const [search, setSearch] = useState(searchCache); const [controller, setController] = useState(false); const { token, user } = props; + const history = useHistory(); const makeRequest = ({loadPage, q, sort_key}) => { let pageNum = 0; @@ -165,6 +166,11 @@ export function Members(props) { doSearch(q); }; + const handleStorageButton = (e, id) => { + e.preventDefault(); + history.push('/storage/' + id); + }; + useEffect(() => { if (!responseCache) { doSort('recently_vetted'); @@ -243,7 +249,7 @@ export function Members(props) { x.member.storage.map((x, i) =>