diff options
Diffstat (limited to 'src/settings/PreferencesPage.jsx')
-rw-r--r-- | src/settings/PreferencesPage.jsx | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/src/settings/PreferencesPage.jsx b/src/settings/PreferencesPage.jsx index 2d6df62f..3b7fcaed 100644 --- a/src/settings/PreferencesPage.jsx +++ b/src/settings/PreferencesPage.jsx @@ -18,7 +18,7 @@ import useMapStyles from '../map/core/useMapStyles'; import useMapOverlays from '../map/overlay/useMapOverlays'; import { useCatch } from '../reactHelper'; import { sessionActions } from '../store'; -import { useRestriction } from '../common/util/permissions'; +import { useAdministrator, useRestriction } from '../common/util/permissions'; import useSettingsStyles from './common/useSettingsStyles'; const deviceFields = [ @@ -35,6 +35,7 @@ const PreferencesPage = () => { const navigate = useNavigate(); const t = useTranslation(); + const admin = useAdministrator(); const readonly = useRestriction('readonly'); const user = useSelector((state) => state.session.user); @@ -86,6 +87,13 @@ const PreferencesPage = () => { } }); + const handleReboot = useCatch(async () => { + const response = await fetch('/api/server/reboot', { method: 'POST' }); + if (!response.ok) { + throw Error(await response.text()); + } + }); + return ( <PageLayout menu={<SettingsMenu />} breadcrumbs={['settingsTitle', 'sharedPreferences']}> <Container maxWidth="xs" className={classes.container}> @@ -149,7 +157,7 @@ const PreferencesPage = () => { freeSolo options={Object.keys(positionAttributes)} getOptionLabel={(option) => (positionAttributes[option]?.name || option)} - value={attributes.positionItems?.split(',') || ['speed', 'address', 'totalDistance', 'course']} + value={attributes.positionItems?.split(',') || ['fixTime', 'address', 'speed', 'totalDistance']} onChange={(_, option) => { setAttributes({ ...attributes, positionItems: option.join(',') }); }} @@ -345,6 +353,22 @@ const PreferencesPage = () => { label={t('settingsConnection')} disabled /> + <Button + variant="outlined" + color="primary" + onClick={() => navigate('/emulator')} + > + {t('sharedEmulator')} + </Button> + {admin && ( + <Button + variant="outlined" + color="error" + onClick={handleReboot} + > + {t('serverReboot')} + </Button> + )} </AccordionDetails> </Accordion> <div className={classes.buttons}> |