diff --git a/src/pages/Competition/External/GroupifierPrinting.tsx b/src/pages/Competition/External/GroupifierPrinting.tsx index ff5bcdd..6d795dd 100644 --- a/src/pages/Competition/External/GroupifierPrinting.tsx +++ b/src/pages/Competition/External/GroupifierPrinting.tsx @@ -3,12 +3,15 @@ import { useDispatch } from 'react-redux'; import { Container, FormControl, + FormLabel, + Grid, InputLabel, Link, MenuItem, Select, SelectChangeEvent, Stack, + Switch, } from '@mui/material'; import { useAppSelector } from '../../../store'; import { updateGlobalExtension } from '../../../store/actions'; @@ -17,6 +20,10 @@ type ScorecardSize = 'a4' | 'a6' | 'letter'; interface IGroupifierPrintingConfig { scorecardPaperSize: ScorecardSize; + printStations?: boolean; + printScrambleCheckerForTopRankedCompetitors?: boolean; + printScrambleCheckerForFinalRounds?: boolean; + printScrambleCheckerForBlankScorecards?: boolean; } export const GroupifierPrintingConfig = () => { @@ -27,15 +34,15 @@ export const GroupifierPrintingConfig = () => { )?.data as IGroupifierPrintingConfig | undefined; const scorecardPaperSize = groupifierConfig?.scorecardPaperSize; - const updateScorecardPaperSize = useCallback( - (event: SelectChangeEvent) => { + const updateExtension = useCallback( + (updates: Partial) => { dispatch( updateGlobalExtension({ id: 'groupifier.CompetitionConfig', specUrl: 'https://groupifier.jonatanklosko.com/wcif-extensions/CompetitionConfig.json', data: { ...groupifierConfig, - scorecardPaperSize: event.target.value as ScorecardSize, + ...updates, }, }) ); @@ -43,6 +50,41 @@ export const GroupifierPrintingConfig = () => { [dispatch, groupifierConfig] ); + const updateScorecardPaperSize = useCallback( + (event: SelectChangeEvent) => { + updateExtension({ scorecardPaperSize: event.target.value as ScorecardSize }); + }, + [updateExtension] + ); + + const updatePrintStations = useCallback( + (event: React.ChangeEvent) => { + updateExtension({ printStations: event.target.checked }); + }, + [updateExtension] + ); + + const updatePrintScrambleCheckerForTopRankedCompetitors = useCallback( + (event: React.ChangeEvent) => { + updateExtension({ printScrambleCheckerForTopRankedCompetitors: event.target.checked }); + }, + [updateExtension] + ); + + const updatePrintScrambleCheckerForFinalRounds = useCallback( + (event: React.ChangeEvent) => { + updateExtension({ printScrambleCheckerForFinalRounds: event.target.checked }); + }, + [updateExtension] + ); + + const updatePrintScrambleCheckerForBlankScorecards = useCallback( + (event: React.ChangeEvent) => { + updateExtension({ printScrambleCheckerForBlankScorecards: event.target.checked }); + }, + [updateExtension] + ); + return ( @@ -70,6 +112,44 @@ export const GroupifierPrintingConfig = () => { Letter + + + Print Stations + + + + + + Print Scramble Checker for Top Ranked Competitors + + + + + + Print Scramble Checker for Final Rounds + + + + + + Print Scramble Checker for Blank Scorecards + + + + + );