aboutsummaryrefslogtreecommitdiff
path: root/src/settings/PreferencesPage.jsx
diff options
context:
space:
mode:
Diffstat (limited to 'src/settings/PreferencesPage.jsx')
-rw-r--r--src/settings/PreferencesPage.jsx28
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}>