From a8557cf2e6159d4c83f7c1bcaf73513f2bcad76b Mon Sep 17 00:00:00 2001 From: "corey@blaishome.online" Date: Wed, 19 Mar 2025 23:25:07 -0400 Subject: [PATCH] added league history page --- asc/src/App.js | 39 +++------------- asc/src/App.old.js | 75 ++++++++++++++++++++++++++++++ asc/src/components/ScoreTracker.js | 14 +++++- 3 files changed, 94 insertions(+), 34 deletions(-) create mode 100644 asc/src/App.old.js diff --git a/asc/src/App.js b/asc/src/App.js index 7c65503..06f09b4 100644 --- a/asc/src/App.js +++ b/asc/src/App.js @@ -6,52 +6,27 @@ import { BrowserRouter, Routes, Route } from 'react-router-dom'; import { ScoreProvider } from './context/ScoreContext'; import GameSetup from './components/GameSetup'; import ScoreTracker from './components/ScoreTracker'; +import History from './components/History'; // Ensure this is imported const App = () => { - // Theme state const [mode, setMode] = useState(() => { - try { - const savedMode = localStorage.getItem('themeMode'); - return savedMode || 'light'; - } catch (e) { - return 'light'; - } + const savedMode = localStorage.getItem('themeMode') || 'light'; + return savedMode; }); - // Save theme preference to localStorage - useEffect(() => { - localStorage.setItem('themeMode', mode); - }, [mode]); - const theme = useMemo( - () => - createTheme({ - palette: { - mode, - }, - }), + () => createTheme({ palette: { mode } }), [mode], ); - const toggleTheme = () => { - setMode((prevMode) => (prevMode === 'light' ? 'dark' : 'light')); - }; + const toggleTheme = () => setMode(prevMode => (prevMode === 'light' ? 'dark' : 'light')); return ( - - {/* Theme Toggle Button */} + { {mode === 'dark' ? : } - {/* Routes for navigation */} } /> } /> + } /> {/* Add History route */} diff --git a/asc/src/App.old.js b/asc/src/App.old.js new file mode 100644 index 0000000..7c65503 --- /dev/null +++ b/asc/src/App.old.js @@ -0,0 +1,75 @@ +import React, { useState, useMemo, useEffect } from 'react'; +import { CssBaseline, Container, IconButton } from '@mui/material'; +import { ThemeProvider, createTheme } from '@mui/material/styles'; +import { Brightness7, Brightness4 } from '@mui/icons-material'; +import { BrowserRouter, Routes, Route } from 'react-router-dom'; +import { ScoreProvider } from './context/ScoreContext'; +import GameSetup from './components/GameSetup'; +import ScoreTracker from './components/ScoreTracker'; + +const App = () => { + // Theme state + const [mode, setMode] = useState(() => { + try { + const savedMode = localStorage.getItem('themeMode'); + return savedMode || 'light'; + } catch (e) { + return 'light'; + } + }); + + // Save theme preference to localStorage + useEffect(() => { + localStorage.setItem('themeMode', mode); + }, [mode]); + + const theme = useMemo( + () => + createTheme({ + palette: { + mode, + }, + }), + [mode], + ); + + const toggleTheme = () => { + setMode((prevMode) => (prevMode === 'light' ? 'dark' : 'light')); + }; + + return ( + + + + + + {/* Theme Toggle Button */} + + {mode === 'dark' ? : } + + + {/* Routes for navigation */} + + } /> + } /> + + + + + + ); +}; + +export default App; diff --git a/asc/src/components/ScoreTracker.js b/asc/src/components/ScoreTracker.js index 44fae43..cc5bede 100644 --- a/asc/src/components/ScoreTracker.js +++ b/asc/src/components/ScoreTracker.js @@ -17,7 +17,6 @@ import { TableHead, TableRow, Divider, - ButtonGroup, LinearProgress } from '@mui/material'; import { Remove } from '@mui/icons-material'; @@ -33,7 +32,18 @@ const ScoreTracker = () => { const [scoreDistribution, setScoreDistribution] = useState({}); // Local state to track total arrows const [totalArrows, setTotalArrows] = useState(0); - + +// Navigate to History page after last round + useEffect(() => { + if (state.currentGame && state.currentGame.ends) { + const maxRounds = state.currentGame.gameType === '450' ? 16 : 12; + if (state.currentGame.ends.length >= maxRounds) { + navigate('/history'); + } + } + }, [state.currentGame, navigate]); + + // Check if we have an active game, if not redirect to setup useEffect(() => { if (!state.currentGame || !state.currentGame.gameType) {