Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Admin page cleanup #380

Merged
merged 4 commits into from
Nov 13, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 0 additions & 3 deletions frontend/src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,7 @@ import Header from './components/Header'
import Elections from './components/Elections'
import Login from './components/Login'
import CreateElectionTemplates from './components/ElectionForm/CreateElectionTemplates'
// import AddElection from './components/ElectionForm/AddElection'
import Election from './components/Election/Election'
import DuplicateElection from './components/ElectionForm/DuplicateElection'
import Sandbox from './components/Sandbox'
import DebugPage from './components/DebugPage'
import LandingPage from './components/LandingPage'
Expand Down Expand Up @@ -58,7 +56,6 @@ const App = () => {
<Route path='/Debug' element={<DebugPage authSession={authSession} />} />
<Route path='/CreateElection' element={<CreateElectionTemplates authSession={authSession} />} />
<Route path='/Election/:id/*' element={<Election authSession={authSession} />} />
<Route path='/DuplicateElection/:id' element={<DuplicateElection authSession={authSession} />} />
<Route path='/Sandbox' element={<Sandbox />} />
</Routes>
</Box>
Expand Down
2 changes: 1 addition & 1 deletion frontend/src/components/Election/Admin/Admin.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ const Admin = ({ authSession, election, permissions, fetchElection }) => {
return (
<Container>
<Routes>
<Route path='/' element={<AdminHome />} />
<Route path='/' element={<AdminHome authSession={authSession}/>} />
<Route path='/voters' element={<ViewElectionRolls election={election} permissions={permissions} />} />
<Route path='/roles' element={<EditRoles election={election} permissions={permissions} fetchElection={fetchElection} />} />
<Route path='/ballots' element={<ViewBallots election={election} permissions={permissions} />} />
Expand Down
453 changes: 212 additions & 241 deletions frontend/src/components/Election/Admin/AdminHome.tsx

Large diffs are not rendered by default.

4 changes: 0 additions & 4 deletions frontend/src/components/Election/Sidebar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -35,15 +35,11 @@ export default function Sidebar({ electionData }) {
<ListItem text='Admin Home' link={`/Election/${id}/admin`} />
{electionData.election.state === 'draft' &&
<>

{process.env.REACT_APP_FF_METHOD_ELECTION_ROLES === 'true' &&
<PermissionHandler permissions={electionData.voterAuth.permissions} requiredPermission={'canEditElectionRoles'}>
<ListItem text='Edit Election Roles' link={`/Election/${id}/admin/roles`} />
</PermissionHandler>
}
<PermissionHandler permissions={electionData.voterAuth.permissions} requiredPermission={'canEditElection'}>
<ListItem text='Edit Election' link={`/Election/${id}/edit`} />
</PermissionHandler>
</>}
<PermissionHandler permissions={electionData.voterAuth.permissions} requiredPermission={'canViewElectionRoll'}>
<ListItem text='Voters' link={`/Election/${id}/admin/voters`} />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ export default function ElectionDetailsInlineForm() {
<Box sx={{}}>
<IconButton
aria-label="edit"
disabled={election.state!=='draft'}
onClick={handleOpen}>
<EditIcon />
</IconButton>
Expand Down
56 changes: 0 additions & 56 deletions frontend/src/components/ElectionForm/DuplicateElection.tsx

This file was deleted.

3 changes: 2 additions & 1 deletion frontend/src/components/ElectionForm/Races/AddRace.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@ export default function AddRace() {
variant="contained"
fullWidth={false}
sx={{ borderRadius: 28, backgroundColor: 'brand.green' }}
onClick={handleOpen}>
onClick={handleOpen}
disabled={election.state!=='draft'}>
Add
</StyledButton>
<RaceDialog onSaveRace={onAdd} open={open} handleClose={handleClose} >
Expand Down
8 changes: 6 additions & 2 deletions frontend/src/components/ElectionForm/Races/Race.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,15 @@ import { Box, Paper } from "@mui/material"
import IconButton from '@mui/material/IconButton'
import DeleteIcon from '@mui/icons-material/Delete';
import EditIcon from '@mui/icons-material/Edit';
import VisibilityIcon from '@mui/icons-material/Visibility';
import RaceDialog from './RaceDialog';
import { useEditRace } from './useEditRace';
import RaceForm from './RaceForm';
import useElection from '../../ElectionContextProvider';

export default function Race({ race, race_index }) {

const { election } = useElection()
const { editedRace, errors, setErrors, applyRaceUpdate, onSaveRace, onDeleteRace } = useEditRace(race, race_index)

const [open, setOpen] = useState(false);
Expand All @@ -36,15 +39,16 @@ export default function Race({ race, race_index }) {
<IconButton
aria-label="edit"
onClick={handleOpen}>
<EditIcon />
{election.state==='draft' ? <EditIcon /> : <VisibilityIcon /> }
</IconButton>
</Box>
<Box sx={{ flexShrink: 1, p: 1 }}>

<IconButton
aria-label="delete"
color="error"
onClick={onDeleteRace}>
onClick={onDeleteRace}
disabled={election.state!=='draft'}>
<DeleteIcon />
</IconButton>
</Box>
Expand Down
5 changes: 4 additions & 1 deletion frontend/src/components/ElectionForm/Races/RaceDialog.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,12 @@ import React from 'react'

import { Dialog, DialogActions, DialogContent, DialogTitle } from "@mui/material"
import { StyledButton } from '../../styles';
import useElection from '../../ElectionContextProvider';


export default function RaceDialog({ onSaveRace, open, handleClose, children }) {

const { election } = useElection()
const handleSave = () => {
onSaveRace()
}
Expand Down Expand Up @@ -39,7 +41,8 @@ export default function RaceDialog({ onSaveRace, open, handleClose, children })
type='button'
variant="contained"
fullWidth={false}
onClick={() => handleSave()}>
onClick={() => handleSave()}
disabled={election.state!=='draft'}>
Save
</StyledButton>
</DialogActions>
Expand Down
2 changes: 1 addition & 1 deletion frontend/src/components/ElectionForm/Races/Races.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import Race from './Race';
import AddRace from './AddRace';

export default function Races() {
const { election, refreshElection, permissions, updateElection } = useElection()
const { election } = useElection()

return (
<Stack spacing={2}>
Expand Down