added league history page

This commit is contained in:
corey@blaishome.online
2025-03-19 23:25:07 -04:00
parent 8ec08910af
commit a8557cf2e6
3 changed files with 94 additions and 34 deletions

View File

@@ -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 (
<ThemeProvider theme={theme}>
<ScoreProvider>
<BrowserRouter>
<CssBaseline />
<Container
maxWidth="lg"
sx={{
minHeight: '100vh',
bgcolor: 'background.default',
color: 'text.primary',
pb: 4
}}
>
{/* Theme Toggle Button */}
<Container maxWidth="lg" sx={{ minHeight: '100vh', pb: 4 }}>
<IconButton
onClick={toggleTheme}
color="inherit"
@@ -60,10 +35,10 @@ const App = () => {
{mode === 'dark' ? <Brightness7 /> : <Brightness4 />}
</IconButton>
{/* Routes for navigation */}
<Routes>
<Route path="/" element={<GameSetup />} />
<Route path="/score" element={<ScoreTracker />} />
<Route path="/history" element={<History />} /> {/* Add History route */}
</Routes>
</Container>
</BrowserRouter>

75
asc/src/App.old.js Normal file
View File

@@ -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 (
<ThemeProvider theme={theme}>
<ScoreProvider>
<BrowserRouter>
<CssBaseline />
<Container
maxWidth="lg"
sx={{
minHeight: '100vh',
bgcolor: 'background.default',
color: 'text.primary',
pb: 4
}}
>
{/* Theme Toggle Button */}
<IconButton
onClick={toggleTheme}
color="inherit"
sx={{ position: 'absolute', top: 16, right: 16 }}
>
{mode === 'dark' ? <Brightness7 /> : <Brightness4 />}
</IconButton>
{/* Routes for navigation */}
<Routes>
<Route path="/" element={<GameSetup />} />
<Route path="/score" element={<ScoreTracker />} />
</Routes>
</Container>
</BrowserRouter>
</ScoreProvider>
</ThemeProvider>
);
};
export default App;

View File

@@ -17,7 +17,6 @@ import {
TableHead,
TableRow,
Divider,
ButtonGroup,
LinearProgress
} from '@mui/material';
import { Remove } from '@mui/icons-material';
@@ -34,6 +33,17 @@ const ScoreTracker = () => {
// 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) {