aboutsummaryrefslogtreecommitdiff
path: root/modern/src/settings/MaintenancePage.jsx
diff options
context:
space:
mode:
Diffstat (limited to 'modern/src/settings/MaintenancePage.jsx')
-rw-r--r--modern/src/settings/MaintenancePage.jsx174
1 files changed, 0 insertions, 174 deletions
diff --git a/modern/src/settings/MaintenancePage.jsx b/modern/src/settings/MaintenancePage.jsx
deleted file mode 100644
index 491a0d3b..00000000
--- a/modern/src/settings/MaintenancePage.jsx
+++ /dev/null
@@ -1,174 +0,0 @@
-import React, { useEffect, useState } from 'react';
-import dayjs from 'dayjs';
-import {
- Accordion,
- AccordionSummary,
- AccordionDetails,
- Typography,
- TextField,
- FormControl,
- InputLabel,
- MenuItem,
- Select,
-} from '@mui/material';
-import ExpandMoreIcon from '@mui/icons-material/ExpandMore';
-import { prefixString } from '../common/util/stringUtils';
-import EditItemView from './components/EditItemView';
-import EditAttributesAccordion from './components/EditAttributesAccordion';
-import { useAttributePreference } from '../common/util/preferences';
-import {
- speedFromKnots, speedToKnots, distanceFromMeters, distanceToMeters,
-} from '../common/util/converter';
-import { useTranslation } from '../common/components/LocalizationProvider';
-import usePositionAttributes from '../common/attributes/usePositionAttributes';
-import SettingsMenu from './components/SettingsMenu';
-import useSettingsStyles from './common/useSettingsStyles';
-
-const MaintenancePage = () => {
- const classes = useSettingsStyles();
- const t = useTranslation();
-
- const positionAttributes = usePositionAttributes(t);
-
- const [item, setItem] = useState();
- const [labels, setLabels] = useState({ start: '', period: '' });
-
- const speedUnit = useAttributePreference('speedUnit', 'kn');
- const distanceUnit = useAttributePreference('distanceUnit', 'km');
-
- const convertToList = (attributes) => {
- const otherList = [];
- Object.keys(attributes).forEach((key) => {
- const value = attributes[key];
- if (value.type === 'number' || key.endsWith('Time')) {
- otherList.push({ key, name: value.name, type: value.type });
- }
- });
- return otherList;
- };
-
- useEffect(() => {
- const attribute = positionAttributes[item?.type];
- if (item?.type?.endsWith('Time')) {
- setLabels({ ...labels, start: null, period: t('sharedDays') });
- } else if (attribute && attribute.dataType) {
- switch (attribute.dataType) {
- case 'distance':
- setLabels({ ...labels, start: t(prefixString('shared', distanceUnit)), period: t(prefixString('shared', distanceUnit)) });
- break;
- case 'speed':
- setLabels({ ...labels, start: t(prefixString('shared', speedUnit)), period: t(prefixString('shared', speedUnit)) });
- break;
- default:
- setLabels({ ...labels, start: null, period: null });
- break;
- }
- } else {
- setLabels({ ...labels, start: null, period: null });
- }
- }, [item?.type]);
-
- const rawToValue = (start, value) => {
- const attribute = positionAttributes[item.type];
- if (item.type?.endsWith('Time')) {
- if (start) {
- return dayjs(value).locale('en').format('YYYY-MM-DD');
- }
- return value / 86400000;
- }
- if (attribute && attribute.dataType) {
- switch (attribute.dataType) {
- case 'speed':
- return speedFromKnots(value, speedUnit);
- case 'distance':
- return distanceFromMeters(value, distanceUnit);
- default:
- return value;
- }
- }
- return value;
- };
-
- const valueToRaw = (start, value) => {
- const attribute = positionAttributes[item.type];
- if (item.type?.endsWith('Time')) {
- if (start) {
- return dayjs(value, 'YYYY-MM-DD').valueOf();
- }
- return value * 86400000;
- } if (attribute && attribute.dataType) {
- switch (attribute.dataType) {
- case 'speed':
- return speedToKnots(value, speedUnit);
- case 'distance':
- return distanceToMeters(value, distanceUnit);
- default:
- return value;
- }
- }
- return value;
- };
-
- const validate = () => item && item.name && item.type && item.start && item.period;
-
- return (
- <EditItemView
- endpoint="maintenance"
- item={item}
- setItem={setItem}
- validate={validate}
- menu={<SettingsMenu />}
- breadcrumbs={['settingsTitle', 'sharedMaintenance']}
- >
- {item && (
- <>
- <Accordion defaultExpanded>
- <AccordionSummary expandIcon={<ExpandMoreIcon />}>
- <Typography variant="subtitle1">
- {t('sharedRequired')}
- </Typography>
- </AccordionSummary>
- <AccordionDetails className={classes.details}>
- <TextField
- value={item.name || ''}
- onChange={(e) => setItem({ ...item, name: e.target.value })}
- label={t('sharedName')}
- />
- <FormControl>
- <InputLabel>{t('sharedType')}</InputLabel>
- <Select
- label={t('sharedType')}
- value={item.type || ''}
- onChange={(e) => setItem({ ...item, type: e.target.value, start: 0, period: 0 })}
- >
- {convertToList(positionAttributes).map(({ key, name }) => (
- <MenuItem key={key} value={key}>{name}</MenuItem>
- ))}
- </Select>
- </FormControl>
- <TextField
- type={item.type?.endsWith('Time') ? 'date' : 'number'}
- value={rawToValue(true, item.start) || ''}
- onChange={(e) => setItem({ ...item, start: valueToRaw(true, e.target.value) })}
- label={labels.start ? `${t('maintenanceStart')} (${labels.start})` : t('maintenanceStart')}
- />
- <TextField
- type="number"
- value={rawToValue(false, item.period) || ''}
- onChange={(e) => setItem({ ...item, period: valueToRaw(false, e.target.value) })}
- label={labels.period ? `${t('maintenancePeriod')} (${labels.period})` : t('maintenancePeriod')}
- />
- </AccordionDetails>
- </Accordion>
- <EditAttributesAccordion
- attributes={item.attributes}
- setAttributes={(attributes) => setItem({ ...item, attributes })}
- definitions={{}}
- />
- </>
- )}
- </EditItemView>
- );
-};
-
-export default MaintenancePage;